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