author | Sylvain Thénault <sylvain.thenault@logilab.fr> |
Tue, 22 Sep 2009 18:59:00 +0200 | |
branch | stable |
changeset 3372 | 26b89dfe4170 |
parent 1898 | 39b37f90a8a4 |
permissions | -rw-r--r-- |
20
dfddcbef6684
Add links between sections.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
0
diff
changeset
|
1 |
.. -*- coding: utf-8 -*- |
dfddcbef6684
Add links between sections.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
0
diff
changeset
|
2 |
|
dfddcbef6684
Add links between sections.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
0
diff
changeset
|
3 |
.. _Internationalisation: |
dfddcbef6684
Add links between sections.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
0
diff
changeset
|
4 |
|
dfddcbef6684
Add links between sections.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents:
0
diff
changeset
|
5 |
|
0 | 6 |
Internationalisation |
7 |
==================== |
|
8 |
||
42 | 9 |
Le système d'internationalisation de l'interface web de CubicWeb est basé sur le |
0 | 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 |
||
1898
39b37f90a8a4
[cw-ctl] rename i18n commands (see #342889)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
93
diff
changeset
|
42 |
* `i18ncubicweb`, met à jour les catalogues de messages *de la librairie |
0 | 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 |
||
1898
39b37f90a8a4
[cw-ctl] rename i18n commands (see #342889)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
93
diff
changeset
|
46 |
* `i18ncube`, met à jour les catalogues de messages *du composant* (ou de tous |
0 | 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 |
||
1898
39b37f90a8a4
[cw-ctl] rename i18n commands (see #342889)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
93
diff
changeset
|
52 |
* `i18ninstance`, recompile les catalogues de messages *d'une instance* (ou de |
0 | 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 |
||
1898
39b37f90a8a4
[cw-ctl] rename i18n commands (see #342889)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
93
diff
changeset
|
66 |
1. `cubicweb-ctl i18ncube <composant>` |
0 | 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"` |
|
1898
39b37f90a8a4
[cw-ctl] rename i18n commands (see #342889)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
93
diff
changeset
|
70 |
4. `cubicweb-ctl i18ninstance <monapplication>` |
0 | 71 |