2009-06-05 12 views
0

Nous avons une application multilingue (PHP) et utilisons gettext pour i18n. Il y a quelques classes dans le backend/model qui retournent des messages ou des formats de message pour printf(). Nous utilisons xgettext pour extraire les chaînes que nous voulons traduire.Où traduire les chaînes de message - dans la vue ou dans le modèle?

Nous appliquons la fonction g_txt T_() dans le frontend/view - cela semble être là où il appartient. Jusqu'à présent, nous avons gardé le backend propre des appels T_(), de cette façon nous pouvons également tester les messages.

Ainsi, dans le frontend, nous avons quelque chose comme

echo T_($mymodel->getMessage()); 

ou

printf(T_($mymodel->getMessageFormat()), $mymodel->getValue()); 

Cela rend impossible d'appliquer xgettext pour extraire les chaînes, à moins que nous mettons un peu T factice _ ("mon message% s pour traduire ") appelle dans la classe MyModel.

donc cela nous amène à la question plus générale:

appliquez-vous la traduction dans les classes de back-end, resp. Où appliquez-vous la traduction et comment gérez-vous les chaînes que vous devez traduire?

(je suis au courant Question: poedit workaround for dynamic gettext.)

Répondre

0

La traduction est pour moi tout à fait une question Voir, sauf pour des raisons commerciales clairement définies, comme d'avoir à stocker les messages affichés comme indiqué. Ce dernier pourrait, par exemple, se produire si vous voulez stocker une facture envoyée comme livrée au client.

1

Mes classes dorsales génèrent généralement des chaînes en anglais avec des paramètres omis. Exemple

["Good job %s you have %i points", "Paul", 10] 

Ensuite, la clé pour la traduction est la chaîne anglaise (puisque je n'aime pas vraiment les codes de message).

+0

C'est à peu près la façon dont nous le faisons. Comment faites-vous le suivi des chaînes comme "Bon travail% s vous avez% i points" à traduire? – GrGr

+0

Souvent, nous entourons le texte par Texte afin qu'il facilite le grepping, puis effectuez un remplacement global sur et au niveau de l'API de traduction. –