2009-10-08 8 views

Répondre

2

Je ne pense pas que gettext reconnaîtra une variable car elle analyse le code source. Si vous voulez inclure des variables dans une chaîne, il est préférable d'utiliser

sprintf() 

Par exemple

echo sprintf(_("There are %d results!"), $numResults); 

En gettext, le traducteur verra

There are %d results! 

donc par conséquent il peut facilement être traduit tant qu'il/elle sait que% d est une variable. Lorsque le script est exécuté, gettext remplace d'abord la traduction, puis sprintf insère la variable $ numResults. Bonne chance! Je viens de finir d'internationaliser mon site.

+1

Dans ce cas précis, il devrait être 'sprintf (ngettext (" Il y a% d result! "," Il y a% d resultats! ", $ NumResults), $ numResults)'. –

+0

Je ne sais pas si la question portait sur la substitution (ce qui est hors de question), mais plutôt que d'avoir une chaîne entière récupérée de l'autre source de données (par exemple, base de données). Et, btw, gettext ne scanne pas vraiment la source, 'xgettext' le fait et vous n'êtes pas obligé d'utiliser' xgettext' du tout. –

+0

Lukáš Lalinský, à droite, c'est comme ça que vous savez le slavophone ;-) Nous nous intéressons aux formes plurielles. –

5

N'hésitez pas à. Mais vous devez vous assurer que le contenu possible de la variable le transforme en fichiers .po/.mo. (l'un des moyens de s'assurer qu'il est de créer un fichier fictif n'a jamais été traité sauf par xgettext, contenant _("translate me"); expressions).