Gettext : Différence entre versions
(→Fonction de traduction) |
(→Fonction de traduction) |
||
| Ligne 26 : | Ligne 26 : | ||
| − | textdomain(textdomain(NULL)) permet d'effacer le cache de gettext | + | textdomain(textdomain(NULL)) permet d'effacer le cache de gettext. Dans certains cas, si le cache n'est pas effacé, il est nécéssaire de redémarrer apache lors d'une modification de fichier .mo |
textdomain(textdomain(NULL)) est appelé dans la fonction bab_locale() il n'est pas nécessaire d'utiliser textdomain dans les modules. | textdomain(textdomain(NULL)) est appelé dans la fonction bab_locale() il n'est pas nécessaire d'utiliser textdomain dans les modules. | ||
| Ligne 32 : | Ligne 32 : | ||
Les fichiers de tradution .po et .mo doivent être placés dans fr/LC_MESSAGES/ | Les fichiers de tradution .po et .mo doivent être placés dans fr/LC_MESSAGES/ | ||
| − | le fichier .po doit être nommé avec le nom du domaine de traduction par exemple pour l'addon "forms" dans le noyau d'ovidentia : | + | le fichier .po doit être nommé avec le nom du domaine de traduction, par exemple pour l'addon "forms" dans le noyau d'ovidentia : |
lang/addons/forms/fr/LC_MESSAGES/forms.po | lang/addons/forms/fr/LC_MESSAGES/forms.po | ||
Version du 8 janvier 2008 à 14:18
La fonction bab_locale() permet d'initialiser la locale avec les paramètres de l'utilisateur ovidentia
liens utiles
Fonction de traduction
exemple d'une fonction de traduction pour un module :
bab_locale();
bindtextdomain($GLOBALS['babAddonFolder'], './'.$GLOBALS['babInstallPath'].'lang/addons/'.$GLOBALS['babAddonFolder']);
if (function_exists('bind_textdomain_codeset')) {
bind_textdomain_codeset($GLOBALS['babAddonFolder'], 'iso-8859-1');
}
function nwd_translate($str) {
return dgettext($GLOBALS['babAddonFolder'],$str);
}
textdomain(textdomain(NULL)) permet d'effacer le cache de gettext. Dans certains cas, si le cache n'est pas effacé, il est nécéssaire de redémarrer apache lors d'une modification de fichier .mo
textdomain(textdomain(NULL)) est appelé dans la fonction bab_locale() il n'est pas nécessaire d'utiliser textdomain dans les modules.
Les fichiers de tradution .po et .mo doivent être placés dans fr/LC_MESSAGES/
le fichier .po doit être nommé avec le nom du domaine de traduction, par exemple pour l'addon "forms" dans le noyau d'ovidentia :
lang/addons/forms/fr/LC_MESSAGES/forms.po
et dans l'archive :
langfiles/fr/LC_MESSAGES/forms.po
Traduction avec POedit
il faut redémarrer apache après modification du fichier MO
Dans les fichiers sources, certains commentaires peuvent être ajoutés pour aider le traducteur par exemple :
//TRANSLATORS: This text is used as a contextual menu item to add an article in a topic, keep it short
bab_translate('Add article');
Il est nécessaire de modifier la configuration de POedit afin qu'il reconnaisse le mot clef "TRANSLATORS:" dans la ligne qui précède la fonction de traduction. Il faut modifier la commande xgettext dans Fichier/Préférences/Analyseurs/Php/Commande de l'analyseur.
xgettext --add-comments=TRANSLATORS: --force-po -o %o %C %K %F
pour les formes plurielles il faut indiquer une formule dans la configuration du fichier PO (dans catalogue/configuration/formes plurielles), pour la traduction en français :
nplurals=2; plural=(n > 1);