goa/doc/devmanual_fr/chap_i18n.txt
changeset 0 b97547f5f1fa
child 1898 39b37f90a8a4
equal deleted inserted replaced
-1:000000000000 0:b97547f5f1fa
       
     1 Internationalisation
       
     2 ====================
       
     3 
       
     4 Le système d'internationalisation de l'interface web d'cubicweb est basé sur le
       
     5 système `GNU gettext`_.
       
     6 
       
     7 .. _`GNU gettext`: http://www.gnu.org/software/gettext/
       
     8 
       
     9 Messages à internationaliser
       
    10 ----------------------------
       
    11 
       
    12 Marquage des messages à internaliser
       
    13 ````````````````````````````````````
       
    14 Les chaines de caractères à internationaliser sont marqués par l'appel à la
       
    15 fonction `_` *OU* par la méthode équivalent de la requête dans le code python ou
       
    16 dans les expressions python de template TAL. 
       
    17 
       
    18 Dans les templates cubicweb-tal, il est également possible d'insérer une chaine à
       
    19 traduire via les balises `i18n:content` et  `i18n:replace`.
       
    20 
       
    21 De plus des messages correspondant aux entités/relations utilisés par le schéma
       
    22 de l'application seront automatiquement ajoutés.
       
    23 
       
    24 Renvoi d'un message internationalisé lors de la construction d'une page
       
    25 ```````````````````````````````````````````````````````````````````````
       
    26 La fonction *built-in* `_` ne doit servir qu'**à marquer les messages à
       
    27 traduire**, non pas à récupérer une traduction. Il faut pour cela utiliser la
       
    28 méthode `_` de l'objet requête, sans quoi vous récupérerez l'identifiant de
       
    29 message au lieu de sa traduction dans la langue propre à la requête.1
       
    30 
       
    31 
       
    32 Gestion des catalogues de traduction
       
    33 ------------------------------------
       
    34 Une fois l'application rendu internationalisable coté code, reste à gérer les
       
    35 catalogues de traductions. cubicweb-ctl intègre pour cela les commandes suivantes : 
       
    36 
       
    37 * `i18nlibupdate`, met à jour les catalogues de messages *de la librairie
       
    38   cubicweb*. Sauf si vous développez sur le framework (et non votre propre
       
    39   application), vous ne devriez pas avoir à utiliser cette commande
       
    40 
       
    41 * `i18nupdate`, met à jour les catalogues de messages *du composant* (ou de tous
       
    42   les composants). A la suite de cette commande, vous devez mettre à jour les
       
    43   fichiers de traduction *.po* dans le sous-répertoire "i18n" de votre
       
    44   template. Évidemment les traductions précédentes toujours utilisées ont été
       
    45   conservées.
       
    46 
       
    47 * `i18ncompile`, recompile les catalogues de messages *d'une instance* (ou de
       
    48   toutes les instances) après mise à jour des catalogues de son composant. Cela
       
    49   est effectué automatiquement lors d'une création ou d'une mise à jour. Les
       
    50   catalogues de messages compilés se trouvent dans le répertoire
       
    51   "i18n/<lang>/LC_MESSAGES/cubicweb.mo" de l'application où `lang` est
       
    52   l'identifiant de la langue sur 2 lettres ('en' ou 'fr' par exemple)
       
    53 
       
    54 
       
    55 Le cas classique
       
    56 ````````````````
       
    57 Vous avez ajouté et/ou modifié des messages d'un composant utilisé par votre
       
    58 application (en ajoutant une nouvelle vue ou en ayant modifié le schéma par
       
    59 exemple) :
       
    60 
       
    61 1. `cubicweb-ctl i18nupdate <composant>`
       
    62 2. éditer les fichiers <composant>/xxx.po dans pour y rajouter les traductions
       
    63    manquantes (`msgstr` vide) 
       
    64 3. `hg ci -m "updated i18n catalogs"`
       
    65 4. `cubicweb-ctl i18n compile <monapplication>`
       
    66