2010-01-01 5 views
6

J'ai appris un peu de gettext mais je ne peux pas saisir ces deux fonctions. Je me demandais si je pouvais utiliser plusieurs traductions dans une application écrite en PHP. Pour une instance, j'ai 1) la traduction du système 2) des traductions d'extensions 3) des traductions de thèmes pour les diviser en différents fichiers. Ma question est, si je charge la traduction du système, puis charger la traduction du thème sera le premier "non défini"?Qu'est-ce que bindtextdomain, textdomain dans gettext?

J'apprécierais tous les liens liés à gettext et php.

Merci

Répondre

23

Vous pouvez facilement basculer entre les domaines de texte quand vous le souhaitez. par exemple:

Étant donné

./locale/en/LC_MESSAGES/template.po 

avec le contenu

msgid "foo" 
msgstr "foobar" 

et

./locale/en/LC_MESSAGES/messages.po 

avec le contenu

msgid "Basic test" 
msgstr "A basic test" 

Vous pouvez utiliser quelque chose comme le code PHP ci-dessous pour passer d'un textdomain à l'autre, puis l'arrière:

<?php 
setlocale(LC_ALL, 'en_US.UTF-8'); 
bindtextdomain ("messages", "./locale"); 
bindtextdomain ("template", "./locale"); 

textdomain ("messages"); 
echo gettext("Basic test"), "\n"; 

textdomain ("template"); 
echo _("foo"), "\n"; 

textdomain ("messages"); 
echo gettext("Basic test"), "\n"; 
+0

Merci Je pense que je suis une très belle vue de gettext – allenskd