2010-06-20 6 views
0

J'ai l'intention de localiser mon application Django et j'ai commencé à lire sur la localisation sur le site Django. Cela a mis quelques questions dans mon esprit:Quelques questions sur la localisation Django

  1. Il semble que lorsque vous exécutez la commande 'makemessages django-admin.py de, il scanne les fichiers pour les chaînes intégrées et génère un fichier de message qui contient les traductions. Ces traductions sont mappées aux chaînes du fichier. Par exemple, si j'ai une chaîne en HTML qui indique "Veuillez entrer le nom du destinataire", Django considèrera que c'est l'identifiant du message. Que se passerait-il si je changeais quelque chose dans la chaîne? Disons que j'ai ajouté l'apostrophe manquante au mot "destinataire". Est-ce que cela casserait la traduction? En ce qui concerne le scénario ci-dessus, est-il préférable d'utiliser des phrases complètes dans la source (qui pourrait changer) ou serais-je mieux d'utiliser un mot comme "RECIPIENT_NAME" qui est moins susceptible de changer et plus facile à carte pour? La commande 'django-admin.py makemessages' scanne-t-elle également les sources Python?

Merci.

Répondre

2
  1. Très probablement, dans certains cas, des chaînes «similaires» peuvent être détectées et votre traduction sera marquée avec flou. Mais cela dépend du type de chaîne, je ne sais pas ce que ferait l'ajout d'une apostrophe. Lisez le GNU gettext docs pour plus d'informations à ce sujet. Cependant, une solution facile pour votre problème serait: ne pas corriger la faute de frappe dans l'original, mais faire une traduction comme l'anglais vers l'anglais où la chaîne traduite est la bonne :). Personnellement, je ne recommanderais pas cette approche, mais si vous avez peur de casser des dizaines de fichiers de traduction, cela peut être envisagé.

  2. Non, ça ne l'est pas, ça jette tout sens de contexte. Cela peut sembler plus clair pour les sites où seulement quelques chaînes de traduction sont nécessaires et vous connaissez le contexte exact par cœur. Mais dès que vous avez des centaines de chaînes dans le fichier de traduction, des noms courts comme ça ne diront rien, vous devrez toujours chercher le contexte exact. Pire encore, il se peut que vous utilisiez le même «nom court» pour quelque chose qui doit être traduit différemment, ce qui finira par vous donner des noms abrégés plus étranges pour gérer les deux cas. Enfin, si vous utilisez par défaut une langue normale, vous n'avez plus besoin de traduire cette langue explicitement.

  3. Oui, il existe, il existe plusieurs fonctions pour marquer des chaînes en python pour la traduction, un aperçu peut être trouvé here.