Gettext : Différence entre versions

De OviWiki
Aller à : navigation, rechercher
(liens utiles)
 
(14 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
La fonction bab_locale() permet d'initialiser la locale avec les paramètres de l'utilisateur ovidentia
+
{{Incomplet}}
 +
 
 +
== Zend Framework ==
 +
 
 +
Le module LibZendFramework proposé dans le CVS d'Ovidentia permet de traduire en utilisant gettext implémenté en PHP
  
  
Ligne 5 : Ligne 9 :
  
 
* [http://fr.php.net/gettext gettext]
 
* [http://fr.php.net/gettext gettext]
* [http://www.poedit.org/ poedit]
+
* [http://drupalfr.org/document/traduire_avec_poedit_comment_bien_faire aide poedit pour drupal]
* [http://drupalfr.org/document/traduire_avec_poedit_comment_bien_faire]
+
 
 +
La fonction bab_locale() permet d'initialiser la locale avec les paramètres de l'utilisateur ovidentia
  
 
== Fonction de traduction ==
 
== Fonction de traduction ==
Ligne 27 : Ligne 32 :
  
  
Les fichiers de tradution .po et .mo doivent être placés dans fr/LC_MESSAGES/  
+
textdomain(textdomain(NULL)) permet d'effacer le cache de gettext. Dans certains cas, si le cache n'est pas effacé, il est nécessaire de redémarrer apache lors d'une modification de fichier .mo
le fichier .po doit être nommé avec le nom du domaine de traduction par exemple pour l'addon "forms" dans le noyau d'ovidentia :
+
 
 +
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 traduction .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
 
lang/addons/forms/fr/LC_MESSAGES/forms.po
Ligne 38 : Ligne 47 :
 
== Traduction avec POedit ==
 
== Traduction avec POedit ==
  
il faut redémarrer apache après modification du fichier MO
+
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 :
+
Dans les fichiers sources, certains commentaires peuvent être ajoutés pour aider le traducteur, par exemple :
  
 
<pre>
 
<pre>
Ligne 54 : Ligne 63 :
 
<pre>
 
<pre>
 
xgettext --add-comments=TRANSLATORS: --force-po -o %o %C %K %F
 
xgettext --add-comments=TRANSLATORS: --force-po -o %o %C %K %F
 +
</pre>
 +
 +
 +
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 :
 +
<pre>
 +
nplurals=2; plural=(n > 1);
 
</pre>
 
</pre>

Version actuelle en date du 2 mars 2009 à 19:43

Information.png Cet article est incomplet. Son contenu est donc à considérer avec précaution.

Voir la liste des articles incomplets


Zend Framework

Le module LibZendFramework proposé dans le CVS d'Ovidentia permet de traduire en utilisant gettext implémenté en PHP


liens utiles

La fonction bab_locale() permet d'initialiser la locale avec les paramètres de l'utilisateur ovidentia

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écessaire 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 traduction .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);