42 votes

Gettext Est une bonne idée pour l'ID de message pour être le texte anglais?

Nous sommes en train de préparer pour la traduction de notre site web PHP en diverses langues, et la gettext soutien en PHP ressemble à la manière d'aller.

Tous les tutoriels je vois recommandons l'utilisation du texte anglais comme ID de message, c'est à dire

gettext("Bonjour!")

Mais est-ce vraiment une bonne idée? Disons que quelqu'un dans le marketing veut changer le texte "Salut à tous, y'all!". Alors ne le faites pas, vous devez mettre à jour tous les fichiers de langue parce que cette chaîne, qui est en fait l'ID de message -- a changé?

Est-il préférable d'avoir une sorte de générique ID, comme "bonjour.message", et une traduction en anglais de fichier?

44voto

dcstraw Points 1684

Wow, je suis surpris que personne n'est à préconiser en utilisant l'anglais comme une clé. J'ai utilisé ce style dans un couple de projets logiciels, et à mon avis cela a fonctionné assez bien. La lisibilité du code est grand, et si vous modifiez une chaîne en anglais, il devient évident que le message doit être considéré pour re-traduction (ce qui est une bonne chose).

Dans le cas que vous êtes seulement la correction d'orthographe ou de faire quelque autre changement qui certainement n'a pas besoin de traduction, c'est une simple question de mettre à jour l'Id de la chaîne dans les fichiers de ressources.

Cela dit, je suis actuellement en train d'évaluer si ou de ne pas effectuer cette manière de faire de l'I18N l'avant pour un nouveau projet, il est donc bon d'entendre quelques réflexions sur pourquoi il ne pourrait pas être une bonne idée.

20voto

markus Points 22871

Je suis en total désaccord avec Richard Harrisons réponse au sujet de laquelle il déclare qu'il est "le seul moyen". Cher demandeur, ne pas faire confiance à une réponse que les états c'est la seule façon, parce que le "seul moyen" n'existe pas.

Voici une autre façon, qui à mon humble avis a quelques avantages sur Richards approche:

  • Commencez avec l'utilisation de la proto-version de la chaîne en anglais comme à l'Origine.
  • Ne pas afficher ces proto-chaînes de caractères, mais de créer un fichier de traduction pour l'anglais néanmoins
  • Copiez le proto-chaînes à la traduction pour le début

Avantages:

  • un code lisible
  • texte dans votre code est très proche sinon identique à ce que votre vue s'affiche
  • si vous souhaitez modifier le texte anglais, on ne change pas le proto-chaîne, mais la traduction
  • si vous voulez traduire deux fois la même chose, il suffit d'écrire un peu différente de la proto-chaîne ou simplement d'ajouter la version pour ceci et cela " et vous avez encore parfaitement lisible le code

19voto

Christopher Nadeau Points 2246

J'ai utiliser des IDs significatifs tels que "welcome_back_1" qui serait "welcome back, %1" etc. J'ai toujours de l'anglais comme langue de "base" donc, dans le pire des cas, si une langue n'est pas un ID de message, je tombe sur l'anglais.

Je n'aime pas l'utilisation réelle des expressions anglaises que l'ID du message est parce que si les anglais changements ne sorte de l'ID. Cela pourrait ne pas vous affecter beaucoup si vous utilisez des outils automatisés, mais ça me dérange. Je n'aime pas utiliser de simples codes (comme msg3975) parce qu'ils n'ont pas de sens, donc, la lecture du code est plus difficile, sauf si vous la litière des commentaires partout.

12voto

Douglas Leeder Points 29986

La raison de l'Id étant l'anglais est ainsi que l'ID est retournée si la traduction échoue pour quelque raison que ce soit - la traduction dans le langage courant et le jeton n'est pas disponible, ou d'autres erreurs. Qui suppose bien sûr que le développeur est écrit le texte anglais original, pas une partie de la documentation personne.

Aussi, si le texte anglais, les modifications, puis probablement d'autres traductions ont besoin d'être mis à jour?

Dans la pratique, nous utilisons aussi Pure Id plutôt que de puis un texte en anglais, mais elle signifie que nous avons à faire beaucoup de travail supplémentaire par défaut en anglais.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X