.. -*- coding: utf-8 -*-.. _internationalization:Internationalization====================The internationalization Le système d'internationalisation de l'interface web d'erudi est basé sur lesystème `GNU gettext`_... _`GNU gettext`: http://www.gnu.org/software/gettext/Messages à internationaliser----------------------------Marquage des messages à internaliser````````````````````````````````````Les chaines de caractères à internationaliser sont marqués par l'appel à lafonction `_` *OU* par la méthode équivalent de la requête dans le code python oudans les expressions python de template TAL. Dans les templates erudi-tal, il est également possible d'insérer une chaine àtraduire via les balises `i18n:content` et `i18n:replace`.De plus des messages correspondant aux entités/relations utilisés par le schémade l'application seront automatiquement ajoutés.Renvoi d'un message internationalisé lors de la construction d'une page```````````````````````````````````````````````````````````````````````La fonction *built-in* `_` ne doit servir qu'**à marquer les messages àtraduire**, non pas à récupérer une traduction. Il faut pour cela utiliser laméthode `_` de l'objet requête, sans quoi vous récupérerez l'identifiant demessage au lieu de sa traduction dans la langue propre à la requête.1Gestion des catalogues de traduction------------------------------------Une fois l'application rendu internationalisable coté code, reste à gérer lescatalogues de traductions. erudi-ctl intègre pour cela les commandes suivantes : * `i18ncubicweb`, met à jour les catalogues de messages *de la librairie erudi*. Sauf si vous développez sur le framework (et non votre propre application), vous ne devriez pas avoir à utiliser cette commande* `i18ncube`, met à jour les catalogues de messages *du composant* (ou de tous les composants). A la suite de cette commande, vous devez mettre à jour les fichiers de traduction *.po* dans le sous-répertoire "i18n" de votre template. Évidemment les traductions précédentes toujours utilisées ont été conservées.* `i18ninstance`, recompile les catalogues de messages *d'une instance* (ou de toutes les instances) après mise à jour des catalogues de son composant. Cela est effectué automatiquement lors d'une création ou d'une mise à jour. Les catalogues de messages compilés se trouvent dans le répertoire "i18n/<lang>/LC_MESSAGES/erudi.mo" de l'application où `lang` est l'identifiant de la langue ('en' ou 'fr' par exemple).Le cas classique````````````````Vous avez ajouté et/ou modifié des messages d'un composant utilisé par votreapplication (en ajoutant une nouvelle vue ou en ayant modifié le schéma parexemple) :1. `cubicweb-ctl i18ncube <composant>`2. éditer les fichiers <composant>/xxx.po dans pour y rajouter les traductions manquantes (`msgstr` vide) 3. `hg ci -m "updated i18n catalogs"`4. `cubicweb-ctl i18ninstance <monapplication>`