Si tu utilise du modèle objet (et que tu fais pas de la vrai vrai localisation, juste en,fr,nl), pourquoi ne par faire un peu plus simple ?
define('LANG_DEFAULT', 'fr');
A ta classe tu ajoute :
public $locale = array();
public $lang = LANG_DEFAULT;
Au constructeur tu ajoute une fonction qui récupère le meilleur choix de langue en fonction des langues du navigateurs.
Et une fonction getText($text) comme ça :
//Generate md5 of text
$md5 = md5($text);
//Check if result is already on cache
if (!empty($this->locale[$md5]))
//Return cache value
return $this->locale[$md5];
//The request
$req = 'SELECT `tranlated` '.
'FROM `machin_locale` '.
'WHERE `lang` = \''.$this->lang.'\' '.
'AND `key` = \''.$this->db->escape($text).'\' '.
'LIMIT 0,1;';
//Get the result
$res = $this->db->getOne($req);
//Check if error happen
if (PEAR::isError($res))
{
//Trigger the notice (don't translate that message, else you will get infinite loop!)
trigger_error($res->getMessage(), E_USER_NOTICE);
//Return
return;
}
//Check if $res is empty
if (empty($res))
{
//Trigger the notice (don't translate that message, else you will get infinite loop!)
trigger_error('Localized text in lang: '.$this->lang.' for: \''.$text.'\' is not avaible', E_USER_NOTICE);
//Return not localized text
return $text;
}
//Else
else
{
//Store in cache
$this->locale[$md5] = $res;
//Return localized text
return $res;
}
Bon après je suis sans ressources, alors pour un don de quelques euros je te passe la classe complète et l'explication qui va avec de pourquoi j'ai laissé tomber le système de traduction gettext.
[^] # Re: Oups
Posté par Raphaël G. (site web personnel) . En réponse au message Gettext change de langue. Évalué à 3.
define('LANG_DEFAULT', 'fr');
A ta classe tu ajoute :
public $locale = array();
public $lang = LANG_DEFAULT;
Au constructeur tu ajoute une fonction qui récupère le meilleur choix de langue en fonction des langues du navigateurs.
Et une fonction getText($text) comme ça :
//Generate md5 of text
$md5 = md5($text);
//Check if result is already on cache
if (!empty($this->locale[$md5]))
//Return cache value
return $this->locale[$md5];
//The request
$req = 'SELECT `tranlated` '.
'FROM `machin_locale` '.
'WHERE `lang` = \''.$this->lang.'\' '.
'AND `key` = \''.$this->db->escape($text).'\' '.
'LIMIT 0,1;';
//Get the result
$res = $this->db->getOne($req);
//Check if error happen
if (PEAR::isError($res))
{
//Trigger the notice (don't translate that message, else you will get infinite loop!)
trigger_error($res->getMessage(), E_USER_NOTICE);
//Return
return;
}
//Check if $res is empty
if (empty($res))
{
//Trigger the notice (don't translate that message, else you will get infinite loop!)
trigger_error('Localized text in lang: '.$this->lang.' for: \''.$text.'\' is not avaible', E_USER_NOTICE);
//Return not localized text
return $text;
}
//Else
else
{
//Store in cache
$this->locale[$md5] = $res;
//Return localized text
return $res;
}
Bon après je suis sans ressources, alors pour un don de quelques euros je te passe la classe complète et l'explication qui va avec de pourquoi j'ai laissé tomber le système de traduction gettext.