12

Comment voulez-vous internationaliser une application Web App Google App Engine en utilisant BABEL? Je cherche ici toutes les étapes:GAE webapp application internationalisation avec Babel

  1. Marquage des chaînes à traduire.
  2. Les extraire.
  3. Traslating
  4. Configuration de votre application pour charger la bonne langue demandée par le navigateur

Répondre

11

1) utiliser _() (ou gettext()) dans votre code et modèles. Les chaînes traduites définies dans les globals de module ou les définitions de classe doivent utiliser une forme de gettext() paresseuse, car i18n ne sera pas disponible lors de l'importation des modules.

2) Extraire toutes les traductions en utilisant pybabel. Ici, nous passons deux répertoires à analyser: le répertoire des modèles et le répertoire de l'application. Cela créera un fichier messages.pot dans le répertoire/locale avec toutes les chaînes trouvées dans ces répertoires. babel.cfg est la configuration d'extraction qui varie en fonction du moteur de modèle que vous utilisez:

$ pybabel extract -F ./babel.cfg -o ./locale/messages.pot ./templates/ ./app/ 

3) Initialiser un répertoire pour chaque langue. Ceci est fait seulement une fois. Ici, nous initialisons trois traductions, en_US, es_ES et pt_BR, et utiliser le fichier messages.pot créé à l'étape 2:

$ pybabel init -l en_US -d ./locale -i ./locale/messages.pot 
$ pybabel init -l es_ES -d ./locale -i ./locale/messages.pot 
$ pybabel init -l pt_BR -d ./locale -i ./locale/messages.pot 

traduisons les messages. Ils seront dans des fichiers .mo dans chaque répertoire de traduction. Après toutes les langues sont traduites, les compiler:

$ pybabel compile -f -d ./locale 

Plus tard, si de nouvelles traductions sont ajoutées, répétez les étapes 2 et mettre à jour les utiliser le nouveau fichier .pot:

$ pybabel update -l pt_BR -d ./locale/ -i ./locale/messages.pot 

traduit ensuite les nouvelles chaînes et compilez les traductions à nouveau.

4) La stratégie ici peut varier. Pour chaque requête, vous devez définir les traductions correctes à utiliser et probablement vouloir mettre en cache les traductions chargées à réutiliser dans les demandes suivantes.

+1

Merci moraes, l'étape 4 me échappe toujours. J'espère que certains posteront une bonne solution pour cela. – fccoelho

+1

Quelqu'un a une suggestion simple pour le point 4 de cette réponse? – fccoelho

+0

numéro 4 est un lien brisé ..:/ – Lipis