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