Add a test to put lang file into session cache
This commit is contained in:
parent
d32bcc22c3
commit
d8be80eb26
@ -154,11 +154,11 @@ class Translate {
|
|||||||
*/
|
*/
|
||||||
function Load($domain,$alt=0)
|
function Load($domain,$alt=0)
|
||||||
{
|
{
|
||||||
if (isset($this->tab_loaded[$domain]) && $this->tab_loaded[$domain]) { return; } // Le fichier de ce domaine est deja chargé
|
if (! empty($this->tab_loaded[$domain])) { return; } // Le fichier de ce domaine est deja chargé
|
||||||
|
|
||||||
// Repertoire de traduction
|
// Repertoire de traduction
|
||||||
$scandir = $this->dir."/".$this->defaultlang;
|
$scandir = $this->dir."/".$this->defaultlang;
|
||||||
$file_lang = $scandir . "/$domain.lang";
|
$file_lang = $scandir . "/".$domain.".lang";
|
||||||
$filelangexists=is_file($file_lang);
|
$filelangexists=is_file($file_lang);
|
||||||
|
|
||||||
if ($alt || ! $filelangexists)
|
if ($alt || ! $filelangexists)
|
||||||
@ -176,9 +176,25 @@ class Translate {
|
|||||||
|
|
||||||
if ($filelangexists)
|
if ($filelangexists)
|
||||||
{
|
{
|
||||||
//dolibarr_syslog("Translate::load open file ".$file_lang);
|
//dolibarr_syslog("Translate::Load read file ".$file_lang);
|
||||||
if($fp = @fopen($file_lang,"rt"))
|
|
||||||
|
// Enable cache of lang file in session (faster but need more memory)
|
||||||
|
// Speed gain: 40ms - Memory overusage: 200ko (Size of session cache file)
|
||||||
|
$enablelangcacheinsession=false;
|
||||||
|
|
||||||
|
if ($enablelangcacheinsession && isset($_SESSION['lang_'.$domain]))
|
||||||
{
|
{
|
||||||
|
foreach($_SESSION['lang_'.$domain] as $key => $value)
|
||||||
|
{
|
||||||
|
$this->tab_translate[$key]=$value;
|
||||||
|
$this->tab_loaded[$domain]=1; // Marque ce fichier comme chargé
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($fp = @fopen($file_lang,"rt"))
|
||||||
|
{
|
||||||
|
if ($enablelangcacheinsession) $tabtranslatedomain=array(); // To save lang in session
|
||||||
$finded = 0;
|
$finded = 0;
|
||||||
while (($ligne = fgets($fp,4096)) && ($finded == 0))
|
while (($ligne = fgets($fp,4096)) && ($finded == 0))
|
||||||
{
|
{
|
||||||
@ -187,9 +203,10 @@ class Translate {
|
|||||||
$tab=split('=',$ligne,2);
|
$tab=split('=',$ligne,2);
|
||||||
$key=trim($tab[0]); $value='';
|
$key=trim($tab[0]); $value='';
|
||||||
//print "Domain=$domain, found a string for $tab[0] with value $tab[1]<br>";
|
//print "Domain=$domain, found a string for $tab[0] with value $tab[1]<br>";
|
||||||
if (! $this->getTransFromTab($key))
|
//if (! $this->getTransFromTab($key))
|
||||||
|
if (! $this->tab_translate[$key] && isset($tab[1]))
|
||||||
{
|
{
|
||||||
if (isset($tab[1])) $value=trim(ereg_replace('\\\n',"\n",$tab[1]));
|
$value=trim(ereg_replace('\\\n',"\n",$tab[1]));
|
||||||
|
|
||||||
if (eregi('^CHARSET$',$key))
|
if (eregi('^CHARSET$',$key))
|
||||||
{
|
{
|
||||||
@ -203,7 +220,9 @@ class Translate {
|
|||||||
if ($this->charset_inputfile == 'UTF-8') $value=utf8_decode($value);
|
if ($this->charset_inputfile == 'UTF-8') $value=utf8_decode($value);
|
||||||
//if ($this->charset_inputfile == 'ISO-8859-1') $value=$value;
|
//if ($this->charset_inputfile == 'ISO-8859-1') $value=$value;
|
||||||
|
|
||||||
$this->setTransFromTab($key,$value);
|
//$this->setTransFromTab($key,$value);
|
||||||
|
$this->tab_translate[$key]=$value;
|
||||||
|
if ($enablelangcacheinsession) $tabtranslatedomain[$key]=$value; // To save lang in session
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -213,11 +232,15 @@ class Translate {
|
|||||||
// Pour les langues aux fichiers parfois incomplets, on charge la langue alternative
|
// Pour les langues aux fichiers parfois incomplets, on charge la langue alternative
|
||||||
if (! $alt && $this->defaultlang != "fr_FR" && $this->defaultlang != "en_US")
|
if (! $alt && $this->defaultlang != "fr_FR" && $this->defaultlang != "en_US")
|
||||||
{
|
{
|
||||||
dolibarr_syslog("translate::load loading alternate translation file");
|
dolibarr_syslog("Translate::Load loading alternate translation file");
|
||||||
$this->load($domain,1);
|
$this->load($domain,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->tab_loaded[$domain]=1; // Marque ce fichier comme chargé
|
$this->tab_loaded[$domain]=1; // Marque ce fichier comme chargé
|
||||||
|
|
||||||
|
// To save lang in session
|
||||||
|
if ($enablelangcacheinsession && sizeof($tabtranslatedomain)) $_SESSION['lang_'.$domain]=$tabtranslatedomain;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user