goa/doc/devmanual_fr/chap_i18n.txt
author Sylvain Thénault <sylvain.thenault@logilab.fr>
Thu, 21 Jan 2010 11:08:41 +0100 (2010-01-21)
changeset 4314 e12ee4a009bc
parent 1898 39b37f90a8a4
permissions -rw-r--r--
merge
Internationalisation
====================

Le syst�me d'internationalisation de l'interface web d'cubicweb est bas� sur le
syst�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 � la
fonction `_` *OU* par la m�thode �quivalent de la requ�te dans le code python ou
dans les expressions python de template TAL. 

Dans les templates cubicweb-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�ma
de 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 la
m�thode `_` de l'objet requ�te, sans quoi vous r�cup�rerez l'identifiant de
message au lieu de sa traduction dans la langue propre � la requ�te.1


Gestion des catalogues de traduction
------------------------------------
Une fois l'application rendu internationalisable cot� code, reste � g�rer les
catalogues de traductions. cubicweb-ctl int�gre pour cela les commandes suivantes : 

* `i18ncubicweb`, met � jour les catalogues de messages *de la librairie
  cubicweb*. 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/cubicweb.mo" de l'application o� `lang` est
  l'identifiant de la langue sur 2 lettres ('en' ou 'fr' par exemple)


Le cas classique
````````````````
Vous avez ajout� et/ou modifi� des messages d'un composant utilis� par votre
application (en ajoutant une nouvelle vue ou en ayant modifi� le sch�ma par
exemple) :

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>`