par
dimalta5 » 23 avr. 2008, 23:22
Il s'agit de créer des fonctions d'internationalisation qui soient aussi simples à écrire que celle de gettext _() mais aussi facile à installer qu'une librairie php. Pour l'instant je suis arrivé à quelque chose qui marche assez bien:
Code : Tout sélectionner
function l($t){
global $L;return $L[$t];
}
function include_translation($path){
$path=substr($path,LANG_ROOT_PATH_SIZE);//On supprime le debut du chemin car il change d'un serveur à l'autre
$path=explode('/',$path);
$file=array_pop($path);
if(count($path))
$path='/D'.implode('/D',$path);
else
$path='';
return LANG_DIR.$path.'/F'.$file.'/'.LANG.'.php';
}
Chaque fichier à un fichier relatif contenant sa traduction dans une langue donnée, il suffit d'ajouter:
au début d'un fichier à traduire et de mettre les phrases entre l("...") ce qui laisse le code très lisible.
ensuite avant d'uploader sur le serveur en production je remplace avec un script chaque clef textuelle par une clef numérique pour que ce soit rapide.
Je n'ai que ce problème de clefs qui sont parfois écrasées (rarement mais c'est possible) à régler avant de passer à l'ajout des fonctionnalités de gestion de pluriels et optimiser tout ça pour que ce soit parfait

Il s'agit de créer des fonctions d'internationalisation qui soient aussi simples à écrire que celle de gettext _() mais aussi facile à installer qu'une librairie php. Pour l'instant je suis arrivé à quelque chose qui marche assez bien:
[code]function l($t){
global $L;return $L[$t];
}
function include_translation($path){
$path=substr($path,LANG_ROOT_PATH_SIZE);//On supprime le debut du chemin car il change d'un serveur à l'autre
$path=explode('/',$path);
$file=array_pop($path);
if(count($path))
$path='/D'.implode('/D',$path);
else
$path='';
return LANG_DIR.$path.'/F'.$file.'/'.LANG.'.php';
}[/code]
Chaque fichier à un fichier relatif contenant sa traduction dans une langue donnée, il suffit d'ajouter:
[code]include include_translation(__FILE__);[/code] au début d'un fichier à traduire et de mettre les phrases entre l("...") ce qui laisse le code très lisible.
ensuite avant d'uploader sur le serveur en production je remplace avec un script chaque clef textuelle par une clef numérique pour que ce soit rapide.
Je n'ai que ce problème de clefs qui sont parfois écrasées (rarement mais c'est possible) à régler avant de passer à l'ajout des fonctionnalités de gestion de pluriels et optimiser tout ça pour que ce soit parfait :D