speedup for the translation function

This commit is contained in:
Ralf Becker 2004-03-23 16:34:23 +00:00
parent 503b1d123c
commit b4f8235976

View File

@ -30,7 +30,7 @@
class setup_translation class setup_translation
{ {
var $langarray; var $langarray = array();
/*! /*!
@function setup_lang @function setup_lang
@ -55,20 +55,13 @@
{ {
$fn = '.' . SEP . 'lang' . SEP . 'phpgw_en.lang'; $fn = '.' . SEP . 'lang' . SEP . 'phpgw_en.lang';
} }
if (file_exists($fn)) if (file_exists($fn))
{ {
$fp = fopen($fn,'r'); $fp = fopen($fn,'r');
while ($data = fgets($fp,8000)) while ($data = fgets($fp,8000))
{ {
list($message_id,$app_name,$null,$content) = explode("\t",$data); list($message_id,$app_name,$null,$content) = explode("\t",substr($data,0,-1));
if ($app_name == 'setup' || $app_name == 'common' || $app_name == 'all') $this->langarray[strtolower(trim($message_id))] = $content;
{
$this->langarray[] = array(
'message_id' => $message_id,
'content' => trim($content)
);
}
} }
fclose($fp); fclose($fp);
} }
@ -81,33 +74,19 @@
@param $vars vars sent to lang function, passed to us @param $vars vars sent to lang function, passed to us
*/ */
function translate($key, $vars=False) function translate($key, $vars=False)
{
if (!$vars)
{
$vars = array();
}
$ret = $key;
@reset($this->langarray);
while(list($null,$data) = @each($this->langarray))
{
$lang[strtolower($data['message_id'])] = $data['content'];
}
if (isset($lang[strtolower ($key)]) && $lang[strtolower ($key)])
{
$ret = $lang[strtolower ($key)];
}
else
{ {
$ret = $key.'*'; $ret = $key.'*';
} $key = strtolower(trim($key));
$ndx = 1; if (isset($this->langarray[$key]))
while( list($key,$val) = each( $vars ) )
{ {
$ret = preg_replace( "/%$ndx/", $val, $ret ); $ret = $this->langarray[$key];
++$ndx; }
if (is_array($vars))
{
foreach($vars as $n => $var)
{
$ret = preg_replace( '/%'.($n+1).'/', $var, $ret );
}
} }
return $ret; return $ret;
} }