42 |
|
|
43 |
/** |
/** |
44 |
* \brief Constructeur de la classe |
* \brief Constructeur de la classe |
45 |
* \param dir repertoire racine des fichiers de traduction |
* \param dir Repertoire racine des fichiers de traduction |
46 |
* \param defaultlang langue par defaut à utiliser |
* \param defaultlang Langue par defaut à utiliser |
47 |
*/ |
*/ |
48 |
|
function Translate($dir = "", $defaultlang = "") |
49 |
function Translate($dir = "", $defaultlang = "") { |
{ |
50 |
$this->dir=$dir; |
$this->dir=$dir; |
51 |
$this->defaultlang=$defaultlang; |
if ($defaultlang == 'auto') |
52 |
|
{ |
53 |
|
$listlang=split('[,;]',$_SERVER["HTTP_ACCEPT_LANGUAGE"]); |
54 |
|
$defaultlang=ereg_replace('-','_',$listlang[0]); |
55 |
|
} |
56 |
|
if (strlen($defaultlang) <= 3) $defaultlang=$defaultlang."_".$defaultlang; |
57 |
|
$this->defaultlang=strtolower($defaultlang); |
58 |
} |
} |
59 |
|
|
60 |
/** |
/** |
61 |
* \brief Charge en mémoire le tableau de traduction pour un domaine particulier |
* \brief Charge en mémoire le tableau de traduction pour un domaine particulier |
62 |
* Si le domaine est deja chargé, la fonction ne fait rien |
* Si le domaine est deja chargé, la fonction ne fait rien |
63 |
* \param domain Nom du domain (fichier lang) à charger |
* \param domain Nom du domain (fichier lang) à charger |
64 |
* \param alt Charge le fichier alternatif meme si fichier dans la langue est trouvé |
* \param alt Utilise le fichier alternatif meme si fichier dans la langue est trouvée |
65 |
*/ |
*/ |
|
|
|
66 |
function Load($domain,$alt=0) |
function Load($domain,$alt=0) |
67 |
{ |
{ |
68 |
if (isset($this->tab_loaded[$domain]) && $this->tab_loaded[$domain]) { return; } // Le fichier de ce domaine est deja chargé |
if (isset($this->tab_loaded[$domain]) && $this->tab_loaded[$domain]) { return; } // Le fichier de ce domaine est deja chargé |
70 |
// Repertoire de traduction |
// Repertoire de traduction |
71 |
$scandir = $this->dir."/".$this->defaultlang; |
$scandir = $this->dir."/".$this->defaultlang; |
72 |
$file_lang = $scandir . "/$domain.lang"; |
$file_lang = $scandir . "/$domain.lang"; |
73 |
|
$filelangexists=is_file($file_lang); |
74 |
|
|
75 |
if ($alt || ! is_file($file_lang)) { |
if ($alt || ! $filelangexists) |
76 |
|
{ |
77 |
// Repertoire de la langue alternative |
// Repertoire de la langue alternative |
78 |
if ($this->defaultlang != "en_US") $scandiralt = $this->dir."/en_US"; |
if ($this->defaultlang != "en_US") $scandiralt = $this->dir."/en_US"; |
79 |
else $scandiralt = $this->dir."/fr_FR"; |
else $scandiralt = $this->dir."/fr_FR"; |
80 |
$file_lang = $scandiralt . "/$domain.lang"; |
$file_lang = $scandiralt . "/$domain.lang"; |
81 |
|
$filelangexists=is_file($file_lang); |
82 |
$alt=1; |
$alt=1; |
83 |
} |
} |
84 |
|
|
85 |
$i = 0; |
if ($filelangexists) |
86 |
if(is_file($file_lang)) { |
{ |
87 |
if($fp = @fopen($file_lang,"rt")){ |
if($fp = @fopen($file_lang,"rt")) |
88 |
|
{ |
89 |
$finded = 0; |
$finded = 0; |
90 |
while (($ligne = fgets($fp,4096)) && ($finded == 0)){ |
while (($ligne = fgets($fp,4096)) && ($finded == 0)) |
91 |
if ($ligne[0] != "\n" && $ligne[0] != " " && $ligne[0] != "#") { |
{ |
92 |
|
if ($ligne[0] != "\n" && $ligne[0] != " " && $ligne[0] != "#") |
93 |
|
{ |
94 |
$tab=split('=',$ligne,2); |
$tab=split('=',$ligne,2); |
95 |
//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>"; |
96 |
if (! isset($this->tab_translate[$tab[0]])) $this->tab_translate[$tab[0]]=trim($tab[1]); |
if (! isset($this->tab_translate[$tab[0]])) $this->tab_translate[$tab[0]]=trim(isset($tab[1])?$tab[1]:''); |
97 |
} |
} |
98 |
} |
} |
99 |
fclose($fp); |
fclose($fp); |
100 |
|
|
101 |
// Pour les langues aux fichiers parfois incomplets, on charge la langue alternative |
// Pour les langues aux fichiers parfois incomplets, on charge la langue alternative |
102 |
if (! $alt && $this->defaultlang != "fr_FR" && $this->defaultlang != "en_US") { |
if (! $alt && $this->defaultlang != "fr_FR" && $this->defaultlang != "en_US") |
103 |
|
{ |
104 |
dolibarr_syslog("translate::load loading alternate translation file"); |
dolibarr_syslog("translate::load loading alternate translation file"); |
105 |
$this->load($domain,1); |
$this->load($domain,1); |
106 |
} |
} |
107 |
|
|
108 |
$this->tab_loaded[$domain]=1; // Marque ce fichier comme chargé |
$this->tab_loaded[$domain]=1; // Marque ce fichier comme chargé |
109 |
} |
} |
|
|
|
110 |
} |
} |
|
|
|
111 |
} |
} |
112 |
|
|
113 |
/** |
/** |
114 |
* \brief Retourne la liste des domaines chargées en memoire |
* \brief Retourne la liste des domaines chargées en memoire |
115 |
* \return array Tableau des domaines chargées |
* \return array Tableau des domaines chargées |
116 |
*/ |
*/ |
117 |
|
function list_domainloaded() |
118 |
function list_domainloaded() { |
{ |
119 |
return join(",",array_keys($this->tab_loaded)); |
return join(",",array_keys($this->tab_loaded)); |
120 |
} |
} |
121 |
|
|
130 |
* \param param3 chaine de param1 |
* \param param3 chaine de param1 |
131 |
* \return string chaine traduite |
* \return string chaine traduite |
132 |
*/ |
*/ |
133 |
|
function trans($str, $param1='', $param2='', $param3='') |
134 |
function trans($str, $param1='', $param2='', $param3='') { |
{ |
135 |
return $this->transnoentities($str,htmlentities($param1),htmlentities($param2),htmlentities($param3)); |
return $this->transnoentities($str,htmlentities($param1),htmlentities($param2),htmlentities($param3)); |
136 |
} |
} |
137 |
|
|