~openerp-community/openobject-doc/ksa-openobject-doc-6.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
.. i18n: .. _translating_software:
.. i18n: 
.. i18n: OpenERP Translations
.. i18n: --------------------
..

.. _translating_software:

OpenERP Translations
--------------------

.. i18n: Within the OpenERP source code, all translatable terms are written in international
.. i18n: English (language code ``en_US``). The Administrator of an OpenERP instance can
.. i18n: install additional languages among the official translations. As a result the corresponding
.. i18n: translations of all installed modules will be loaded in the database, and used to
.. i18n: replace the default English terms in the application interface when a user changes her
.. i18n: preferred language.
..

Within the OpenERP source code, all translatable terms are written in international
English (language code ``en_US``). The Administrator of an OpenERP instance can
install additional languages among the official translations. As a result the corresponding
translations of all installed modules will be loaded in the database, and used to
replace the default English terms in the application interface when a user changes her
preferred language.

.. i18n: Regardless of what follows, if you are considering working on the OpenERP translations,
.. i18n: please read the general `Launchpad Translations Guidelines <https://help.launchpad.net/Translations/Guide>`_ 
.. i18n: before writing your first translation, as it includes very important advice for new translators.
..

Regardless of what follows, if you are considering working on the OpenERP translations,
please read the general `Launchpad Translations Guidelines <https://help.launchpad.net/Translations/Guide>`_ 
before writing your first translation, as it includes very important advice for new translators.

.. i18n: There are 2 ways for contributors to add or modify translations in their languages:
..

There are 2 ways for contributors to add or modify translations in their languages:

.. i18n:     #. Work on Launchpad, OpenERP's community platform, using `the dedicate Translation 
.. i18n:        interface on Launchpad <http://translations.launchpad.net>`_, formerly known as Rosetta.
.. i18n:        This guarantees to work on the latest translation, and is automatically synchronized
.. i18n:        with the .po files of the source code. See :ref:`translations_rosetta` for more
.. i18n:        details.
.. i18n: 
.. i18n:     #. Work directly on the PO files, considering them as regular source code files, and thus
.. i18n:        sending a merge proposal of the .po patch to OpenERP, just like for a regular patch.
.. i18n:        This is explained in more details in :ref:`translations_code` section.
..

    #. Work on Launchpad, OpenERP's community platform, using `the dedicate Translation 
       interface on Launchpad <http://translations.launchpad.net>`_, formerly known as Rosetta.
       This guarantees to work on the latest translation, and is automatically synchronized
       with the .po files of the source code. See :ref:`translations_rosetta` for more
       details.

    #. Work directly on the PO files, considering them as regular source code files, and thus
       sending a merge proposal of the .po patch to OpenERP, just like for a regular patch.
       This is explained in more details in :ref:`translations_code` section.

.. i18n: The first solution is greatly recommended when you are working on official OpenERP translations,
.. i18n: but sometimes the second solution is more efficient when you are translating new community modules.
.. i18n: These two solutions also have different access rights requirements, as explained below.
..

The first solution is greatly recommended when you are working on official OpenERP translations,
but sometimes the second solution is more efficient when you are translating new community modules.
These two solutions also have different access rights requirements, as explained below.

.. i18n: .. topic:: Can I do batch translations locally and then upload the ``.po`` files in batch in Launchpad?
.. i18n: 
.. i18n:     You can certainly translate locally, however Launchpad does not allow uploading back ``.po`` files directly,
.. i18n:     as you are normally supposed to work directly using their translation interface.
.. i18n:     You will need to work on translations using the alternative method, based on the ``.po`` files directly, as
.. i18n:     explained in :ref:`translations_code`. We really recommand working with Launchpad instead, due to the numerous
.. i18n:     advantages, detailed in :ref:`translations_rosetta`.
..

.. topic:: Can I do batch translations locally and then upload the ``.po`` files in batch in Launchpad?

    You can certainly translate locally, however Launchpad does not allow uploading back ``.po`` files directly,
    as you are normally supposed to work directly using their translation interface.
    You will need to work on translations using the alternative method, based on the ``.po`` files directly, as
    explained in :ref:`translations_code`. We really recommand working with Launchpad instead, due to the numerous
    advantages, detailed in :ref:`translations_rosetta`.

.. i18n: .. _translations_rosetta:
.. i18n: 
.. i18n: Translating with Launchpad
.. i18n: ++++++++++++++++++++++++++
..

.. _translations_rosetta:

Translating with Launchpad
++++++++++++++++++++++++++

.. i18n: Launchpad provides a web-based translation interface, which can be
.. i18n: used to translate. Its main features are:
..

Launchpad provides a web-based translation interface, which can be
used to translate. Its main features are:

.. i18n:     * Being web-based, it is accessible everywhere for anyone and does not require
.. i18n:       any developer skill
.. i18n:     * It provides all the contextual information that a translator needs, and mentions
.. i18n:       the place where the term comes from inside the software, a critical information
.. i18n:       for proper translations.
.. i18n:     * Making use of the thousands of other open source project hosted on Launchpad,
.. i18n:       it is able to suggest similar translations from all other projects, speeding
.. i18n:       up the translator's work.
.. i18n:     * It provides reviewing features, and allows marking the terms that one thinks
.. i18n:       should be reviewed by other translators, easing collaboration further.
.. i18n:     * It comes with a specific access right system, and Launchpad Teams can be assigned
.. i18n:       to specific languages, making them responsible for the quality of the translations.
.. i18n:     * It is automatically synchronized with the source code files containing the
.. i18n:       translations, effectively replacing completely the need for manually updating
.. i18n:       them as explained in :ref:`translations_code`.
..

    * Being web-based, it is accessible everywhere for anyone and does not require
      any developer skill
    * It provides all the contextual information that a translator needs, and mentions
      the place where the term comes from inside the software, a critical information
      for proper translations.
    * Making use of the thousands of other open source project hosted on Launchpad,
      it is able to suggest similar translations from all other projects, speeding
      up the translator's work.
    * It provides reviewing features, and allows marking the terms that one thinks
      should be reviewed by other translators, easing collaboration further.
    * It comes with a specific access right system, and Launchpad Teams can be assigned
      to specific languages, making them responsible for the quality of the translations.
    * It is automatically synchronized with the source code files containing the
      translations, effectively replacing completely the need for manually updating
      them as explained in :ref:`translations_code`.

.. i18n: After registering on Launchpad, you can access the translations for any OpenERP project
.. i18n: by clicking on the *Translations* or *Help Translate* links on the homepage of the project.
.. i18n: You may also find the list of all (official and community-driven) translatable OpenERP-related
.. i18n: Launchpad projects: https://translations.launchpad.net/openobject.
..

After registering on Launchpad, you can access the translations for any OpenERP project
by clicking on the *Translations* or *Help Translate* links on the homepage of the project.
You may also find the list of all (official and community-driven) translatable OpenERP-related
Launchpad projects: https://translations.launchpad.net/openobject.

.. i18n: Some quick links to the main OpenERP projects' translations:
..

Some quick links to the main OpenERP projects' translations:

.. i18n:     * https://translations.launchpad.net/openobject-server
.. i18n:     * https://translations.launchpad.net/openobject-addons
.. i18n:     * https://translations.launchpad.net/openobject-client
.. i18n:     * https://translations.launchpad.net/openobject-client-web
.. i18n:     * https://translations.launchpad.net/openobject-client-kde
..

    * https://translations.launchpad.net/openobject-server
    * https://translations.launchpad.net/openobject-addons
    * https://translations.launchpad.net/openobject-client
    * https://translations.launchpad.net/openobject-client-web
    * https://translations.launchpad.net/openobject-client-kde

.. i18n: Please also have a look at the `Launchpad Translations Documentation <https://help.launchpad.net/Translations/>`_
.. i18n: and `FAQ <https://answers.launchpad.net/rosetta/+faqs>`_.
..

Please also have a look at the `Launchpad Translations Documentation <https://help.launchpad.net/Translations/>`_
and `FAQ <https://answers.launchpad.net/rosetta/+faqs>`_.

.. i18n: Permissions for Translations on Launchpad
.. i18n: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
..

Permissions for Translations on Launchpad
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. i18n: OpenERP uses `structured permissions <https://help.launchpad.net/Translations/YourProject/PermissionPolicies>`_ 
.. i18n: for the Launchpad translations, which means three things:
..

OpenERP uses `structured permissions <https://help.launchpad.net/Translations/YourProject/PermissionPolicies>`_ 
for the Launchpad translations, which means three things:

.. i18n:     * Anyone is always free to suggest translations for OpenERP modules, clients and server.
.. i18n:     * If no translation team is assigned to a language, anyone can review or even accept a 
.. i18n:       given translation.
.. i18n:     * If a translation team is assigned to a language, only members of that team are allowed
.. i18n:       to review and accept the translations in this language, but anyone can still suggest
.. i18n:       translations.
..

    * Anyone is always free to suggest translations for OpenERP modules, clients and server.
    * If no translation team is assigned to a language, anyone can review or even accept a 
      given translation.
    * If a translation team is assigned to a language, only members of that team are allowed
      to review and accept the translations in this language, but anyone can still suggest
      translations.

.. i18n: See also Launchpad's Translations documentation for more details:
..

See also Launchpad's Translations documentation for more details:

.. i18n:     * https://help.launchpad.net/Translations
.. i18n:     * https://help.launchpad.net/Translations/StartingToTranslate
.. i18n:     * https://answers.launchpad.net/rosetta/+faqs
..

    * https://help.launchpad.net/Translations
    * https://help.launchpad.net/Translations/StartingToTranslate
    * https://answers.launchpad.net/rosetta/+faqs

.. i18n: Requesting the creation of assignation of a translation team
.. i18n: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. i18n: If your language does not yet have an assigned translation you are free to create one
.. i18n: yourself, and request its assignation to that language. If the team already exists,
.. i18n: please contact its members to join their effort.
..

Requesting the creation of assignation of a translation team
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If your language does not yet have an assigned translation you are free to create one
yourself, and request its assignation to that language. If the team already exists,
please contact its members to join their effort.

.. i18n: If you decide to `create a new team <https://launchpad.net/people/+newteam>`_ (anyone can do that),
.. i18n: please name it *openerp-i18n-XXX* where *XXX* is your language, for example *openerp-i18n-dutch*.
.. i18n: Please be sure to put a complete description for the team, explaining its purpose, how to join
.. i18n: (if you want to make it moderated or restricted, etc.) The description can be in your language,
.. i18n: and you could look at the description of existing translation teams if you need examples.
.. i18n: Please also have a look at the
.. i18n: `Launchpad recommendations for running a Localization team <https://help.launchpad.net/Translations/Guide#Running a localization team>`_.
..

If you decide to `create a new team <https://launchpad.net/people/+newteam>`_ (anyone can do that),
please name it *openerp-i18n-XXX* where *XXX* is your language, for example *openerp-i18n-dutch*.
Please be sure to put a complete description for the team, explaining its purpose, how to join
(if you want to make it moderated or restricted, etc.) The description can be in your language,
and you could look at the description of existing translation teams if you need examples.
Please also have a look at the
`Launchpad recommendations for running a Localization team <https://help.launchpad.net/Translations/Guide#Running a localization team>`_.

.. i18n: When this is done, send a message through Launchpad to https://launchpad.net/~odo, requesting
.. i18n: the assignation of your new team.
..

When this is done, send a message through Launchpad to https://launchpad.net/~odo, requesting
the assignation of your new team.

.. i18n: After this point, anyone will still be free to propose and view translations for your language, but one will
.. i18n: need to be a member of your new team to be able to validate/accept them.
..

After this point, anyone will still be free to propose and view translations for your language, but one will
need to be a member of your new team to be able to validate/accept them.

.. i18n: Reviewing translations on Launchpad
.. i18n: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. i18n: When a translation team is assigned, it is in charge of reviewing every
.. i18n: translation made by the contributors before they can be used in the official
.. i18n: packages and branches.
..

Reviewing translations on Launchpad
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When a translation team is assigned, it is in charge of reviewing every
translation made by the contributors before they can be used in the official
packages and branches.

.. i18n: If you are a member of a translation team, please make sure that new
.. i18n: suggestions are reviewed as soon as possible.
.. i18n: There are few things more disappointing than contributing and having your work
.. i18n: ignored! Fortunately Launchpad makes it pretty easy for you to keep up.
..

If you are a member of a translation team, please make sure that new
suggestions are reviewed as soon as possible.
There are few things more disappointing than contributing and having your work
ignored! Fortunately Launchpad makes it pretty easy for you to keep up.

.. i18n: You can see how many strings need review on the project's translation page for
.. i18n: your language.
.. i18n: Just click on the number in the column "Need review" will directly open a page
.. i18n: with all the contributions waiting to be reviewed:
..

You can see how many strings need review on the project's translation page for
your language.
Just click on the number in the column "Need review" will directly open a page
with all the contributions waiting to be reviewed:

.. i18n: .. image:: img/translation-lp-template-list.png
.. i18n:    :width: 100%
..

.. image:: img/translation-lp-template-list.png
   :width: 100%

.. i18n: One of the neat features of Launchpad is that it can keep several suggestions
.. i18n: for translating the same string. Launchpad will also suggest translations made in
.. i18n: completely different projects if it can.
.. i18n: As a reviewer, you are free to either choose the translation you find best, or
.. i18n: to make a new translation yourself.
..

One of the neat features of Launchpad is that it can keep several suggestions
for translating the same string. Launchpad will also suggest translations made in
completely different projects if it can.
As a reviewer, you are free to either choose the translation you find best, or
to make a new translation yourself.

.. i18n: When  none of the suggestions are good enough, you can also discard them by
.. i18n: checking "Dismiss all suggestions above.". They will be removed from the review
.. i18n: process and fall into oblivion - use wisely.
..

When  none of the suggestions are good enough, you can also discard them by
checking "Dismiss all suggestions above.". They will be removed from the review
process and fall into oblivion - use wisely.

.. i18n: .. image:: img/translation-lp-review.png
.. i18n:    :width: 100%
..

.. image:: img/translation-lp-review.png
   :width: 100%

.. i18n: .. topic:: Requesting review for your own translations
.. i18n: 
.. i18n:     While you are in charge of reviewing other's translation, you may also
.. i18n:     wish to new translations of your own, and have others review them.
.. i18n:     To this end, launchpad will present you with an additional checkbox
.. i18n:     labeled "Someone should review this translation". If you check this box,
.. i18n:     your contribution will be considered as a suggestion rather than a
.. i18n:     reviewed translation.
.. i18n:     
.. i18n:     If you are making lots of translations that to want others to review, 
.. i18n:     just leave the "Reviewer mode" to enter the "Translator mode". Launchpad
.. i18n:     will then check the box automatically for you.
.. i18n: 
.. i18n:     .. image:: img/translation-lp-translator-mode.png
.. i18n:        :width: 100%
..

.. topic:: Requesting review for your own translations

    While you are in charge of reviewing other's translation, you may also
    wish to new translations of your own, and have others review them.
    To this end, launchpad will present you with an additional checkbox
    labeled "Someone should review this translation". If you check this box,
    your contribution will be considered as a suggestion rather than a
    reviewed translation.
    
    If you are making lots of translations that to want others to review, 
    just leave the "Reviewer mode" to enter the "Translator mode". Launchpad
    will then check the box automatically for you.

    .. image:: img/translation-lp-translator-mode.png
       :width: 100%

.. i18n: .. topic:: Why am I credited for translations when I only reviewed someone else's contribution?
.. i18n: 
.. i18n:     When reviewing translations, you must be careful to select the suggestion
.. i18n:     and not copy/paste it into the "New translation" box, otherwise Launchpad
.. i18n:     may consider the contribution is yours.
.. i18n:     
.. i18n:     Also, if you change even a tiny bit from the translation (like correcting
.. i18n:     a small type), it will be considered a new suggestion and credited to you.
..

.. topic:: Why am I credited for translations when I only reviewed someone else's contribution?

    When reviewing translations, you must be careful to select the suggestion
    and not copy/paste it into the "New translation" box, otherwise Launchpad
    may consider the contribution is yours.
    
    Also, if you change even a tiny bit from the translation (like correcting
    a small type), it will be considered a new suggestion and credited to you.

.. i18n: .. _translations_code:
.. i18n: 
.. i18n: Translating in the source code
.. i18n: ++++++++++++++++++++++++++++++
..

.. _translations_code:

Translating in the source code
++++++++++++++++++++++++++++++

.. i18n: As an alternative to Launchpad, translations may also be done in directly in the
.. i18n: source code, considering the translation files as regular source code files.
.. i18n: The result of a translator's work is essentially a regular *patch*, which may
.. i18n: only be published according to the specific permissions allowed on each project
.. i18n: code. To the contrary, when using Launchpad any validated translation is directly
.. i18n: committed by Launchpad in the official branches, without any further delay.
..

As an alternative to Launchpad, translations may also be done in directly in the
source code, considering the translation files as regular source code files.
The result of a translator's work is essentially a regular *patch*, which may
only be published according to the specific permissions allowed on each project
code. To the contrary, when using Launchpad any validated translation is directly
committed by Launchpad in the official branches, without any further delay.

.. i18n: As no-one outside of OpenERP's Quality Team is allowed to directly commit
.. i18n: patches on the official branches, this means that a translation patch for
.. i18n: the official OpenERP project would need to be submitted using a regular merge proposal,
.. i18n: as described in :ref:`merge_proposals`.
..

As no-one outside of OpenERP's Quality Team is allowed to directly commit
patches on the official branches, this means that a translation patch for
the official OpenERP project would need to be submitted using a regular merge proposal,
as described in :ref:`merge_proposals`.

.. i18n: If you still want to use this technique, perhaps because you want to update
.. i18n: all your translations in one batch (which is not possible with Launchpad yet),
.. i18n: you will first need to understand the :ref:`translation_files_structure`.
..

If you still want to use this technique, perhaps because you want to update
all your translations in one batch (which is not possible with Launchpad yet),
you will first need to understand the :ref:`translation_files_structure`.

.. i18n: The you can start editing the ``.po`` files directly using a PO editor such
.. i18n: as `POEdit <http://www.poedit.net>`_, or instead update the translations directly
.. i18n: within OpenERP, and replace the existing ``.po`` by exporting updated ones using
.. i18n: OpenERP's translation export wizard.
..

The you can start editing the ``.po`` files directly using a PO editor such
as `POEdit <http://www.poedit.net>`_, or instead update the translations directly
within OpenERP, and replace the existing ``.po`` by exporting updated ones using
OpenERP's translation export wizard.

.. i18n: We recommend you follow these steps to ensure the best result with this technique:
..

We recommend you follow these steps to ensure the best result with this technique:

.. i18n:     #. read everything about the :ref:`translation_files_structure`
.. i18n:     #. grab the latest source code and create a new OpenERP database to start with,
.. i18n:        to make sure you have all the latest translation terms
.. i18n:     #. translate locally using OpenERP's interface or any other way you like
.. i18n:     #. if translating in OpenERP, re-export all `.po` files of your language for all modules
.. i18n:        over the current ones in the source using OpenERP's export wizard
.. i18n:     #. at that point you basically have a version of the code where your languages's
.. i18n:        ``.po`` files are patched. You then need to commit and push these changes into
.. i18n:        a public branch on LP and make a merge proposal so OpenERP's quality team can merge
.. i18n:        the updated .po files into the official branches. Follow the regular procedure
.. i18n:        as explained in :ref:`merge_proposals`.
..

    #. read everything about the :ref:`translation_files_structure`
    #. grab the latest source code and create a new OpenERP database to start with,
       to make sure you have all the latest translation terms
    #. translate locally using OpenERP's interface or any other way you like
    #. if translating in OpenERP, re-export all `.po` files of your language for all modules
       over the current ones in the source using OpenERP's export wizard
    #. at that point you basically have a version of the code where your languages's
       ``.po`` files are patched. You then need to commit and push these changes into
       a public branch on LP and make a merge proposal so OpenERP's quality team can merge
       the updated .po files into the official branches. Follow the regular procedure
       as explained in :ref:`merge_proposals`.

.. i18n: .. _translation_files_structure:
.. i18n: 
.. i18n: Translation files structure
.. i18n: +++++++++++++++++++++++++++
..

.. _translation_files_structure:

Translation files structure
+++++++++++++++++++++++++++

.. i18n: .. versionchanged:: 5.0 and 6.0
..

.. versionchanged:: 5.0 and 6.0

.. i18n: As of version 5.0, OpenERP uses exclusively the GetText Portable Object (a.k.a. ``*.po`` [#f_po]_)
.. i18n: standard format for storing translations. Numerous tools and libraries are available on most
.. i18n: platforms and programming languages to deal with this widespread format.
..

As of version 5.0, OpenERP uses exclusively the GetText Portable Object (a.k.a. ``*.po`` [#f_po]_)
standard format for storing translations. Numerous tools and libraries are available on most
platforms and programming languages to deal with this widespread format.

.. i18n: The translations are organized in several translations *domains*, where each domain is a
.. i18n: topic-specific area of OpenERP. Each *domain* has a separate list of translatable terms,
.. i18n: described in what is called a *PO Template* file, usually called ``domain.pot`` and found
.. i18n: in a ``i18n`` [#i18n]_ subdirectory specific to that domain. Each OpenERP client (GTK/Native
.. i18n: and Web) represent a separate domain, and each OpenERP module is also a separate domain.
..

The translations are organized in several translations *domains*, where each domain is a
topic-specific area of OpenERP. Each *domain* has a separate list of translatable terms,
described in what is called a *PO Template* file, usually called ``domain.pot`` and found
in a ``i18n`` [#i18n]_ subdirectory specific to that domain. Each OpenERP client (GTK/Native
and Web) represent a separate domain, and each OpenERP module is also a separate domain.

.. i18n: A domain template file does not contain any translation, but only lists the available terms
.. i18n: to be translated. Translations are regular ``.po`` files that should be located in the same
.. i18n: subdirectory as their domain template, and respect the following naming convention.
..

A domain template file does not contain any translation, but only lists the available terms
to be translated. Translations are regular ``.po`` files that should be located in the same
subdirectory as their domain template, and respect the following naming convention.

.. i18n: .. warning::
.. i18n: 
.. i18n:     Domain templates files must be named ``domain.pot`` and located in a ``po`` or ``i18n``
.. i18n:     subdirectory.
.. i18n: 
.. i18n:     For *OpenERP 5.0*, translation files must be named ``lc_CC.po`` after the corresponding
.. i18n:     country and language code from ISO 3166 [#iso3166]_ and ISO 639-1 [#iso639_1]_.
.. i18n:     For example a translation in French from France would be ``fr_FR.po`` while one for
.. i18n:     Brazilian Portuguese would be ``pt_BR.po``.
.. i18n: 
.. i18n:     For *OpenERP 6.0*, translation files must be named ``lc_CC.po`` after the corresponding
.. i18n:     country and language code from ISO 3166 [#iso3166]_ and ISO 639-1 [#iso639_1]_, except for
.. i18n:     the canonical combinations, such as French from France or Portuguese from Portugal, which
.. i18n:     must only have the language code.
.. i18n:     For example a translation in French from France would be ``fr.po`` and one for regular
.. i18n:     Portuguese would be ``pt.po``, but one for Brazilian Portuguese would be ``pt_BR.po``.
.. i18n: 
.. i18n:     If you were looking for the domain template and Belgian Dutch translation of the
.. i18n:     ``account`` module, you would look for the following files in the addons project::
.. i18n:     
.. i18n:         account
.. i18n:          i18n
.. i18n:            account.pot
.. i18n:            nl_BE.po
..

.. warning::

    Domain templates files must be named ``domain.pot`` and located in a ``po`` or ``i18n``
    subdirectory.

    For *OpenERP 5.0*, translation files must be named ``lc_CC.po`` after the corresponding
    country and language code from ISO 3166 [#iso3166]_ and ISO 639-1 [#iso639_1]_.
    For example a translation in French from France would be ``fr_FR.po`` while one for
    Brazilian Portuguese would be ``pt_BR.po``.

    For *OpenERP 6.0*, translation files must be named ``lc_CC.po`` after the corresponding
    country and language code from ISO 3166 [#iso3166]_ and ISO 639-1 [#iso639_1]_, except for
    the canonical combinations, such as French from France or Portuguese from Portugal, which
    must only have the language code.
    For example a translation in French from France would be ``fr.po`` and one for regular
    Portuguese would be ``pt.po``, but one for Brazilian Portuguese would be ``pt_BR.po``.

    If you were looking for the domain template and Belgian Dutch translation of the
    ``account`` module, you would look for the following files in the addons project::
    
        account
         i18n
           account.pot
           nl_BE.po

.. i18n: .. [#f_po] http://www.gnu.org/software/autoconf/manual/gettext/PO-Files.html#PO-Files
.. i18n: .. [#iso3166] http://www.iso.org/iso/country_codes/iso_3166_code_lists.htm
.. i18n: .. [#iso639_1] http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
.. i18n: .. [#i18n] *i18n* is a common shortcut for *Internationalization*, as there are 18 letters
.. i18n:            between the first i and last n in this word.
..

.. [#f_po] http://www.gnu.org/software/autoconf/manual/gettext/PO-Files.html#PO-Files
.. [#iso3166] http://www.iso.org/iso/country_codes/iso_3166_code_lists.htm
.. [#iso639_1] http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
.. [#i18n] *i18n* is a common shortcut for *Internationalization*, as there are 18 letters
           between the first i and last n in this word.