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