Internationalisation

Differences between revisions 2 and 35 (spanning 33 versions)
Revision 2 as of 2009-06-16 09:54:35
Size: 8073
Editor: i59F7194C
Comment:
Revision 35 as of 2009-12-05 16:45:29
Size: 2674
Editor: 212
Comment: Moved Packaging and Coding content to subpages
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
= Translations in Ubuntu (from a developer perspective) = = Ubuntu Internationalization Guide =
Line 6: Line 6:
This page tries to outline
 * how Ubuntu deals with translations (and i18n in general)
 * which tools are interesting for developers to make sure that translations and i18n work fine
This document tries to outline:
 * How Ubuntu deals with translations (and i18n in general) from a developer's perspective
 * Which tools are interesting for developers to make sure that translations and i18n work fine
Line 10: Line 10:
<<Anchor(LanguagePacks)>>
== Language Packs ==
=== General ===
Packages in `main` and `restricted` don't contain translations (*.mo) files themselves, they are stripped during the build on the Launchpad buildds and put into `language-pack-*` packages instead. This is done in an attempt to bundle the translations you're interested in and cut down the occupied space.
== General information ==
Line 15: Line 12:
Comparing the contents of a package built by Launchpad Soyuz and a locally built one:
{{{
daniel@bert:~$ debdiff --nocontrol gcalctool_5.27.2-0ubuntu1_amd64.deb /var/cache/pbuilder/result/gcalctool_5.27.2-0ubuntu1_amd64.deb
[The following lists of changes regard files as different if they have
different names, permissions or owners.]
 * [[TranslationLifecycle|Overview of the translations lifecycle]]
 * [[/Glossary|Glossary of i18n-related terms]]
Line 21: Line 15:
Files in second .deb but not in first
-------------------------------------
-rw-r--r-- root/root /usr/share/locale/af/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/am/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/ar/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/as/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/ast/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/az/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/be/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/be@latin/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/bg/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/bn/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/bn_IN/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/bs/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/ca/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/ca@valencia/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/cs/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/cy/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/da/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/de/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/dz/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/el/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/en_CA/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/en_GB/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/en_US/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/es/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/et/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/eu/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/fa/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/fi/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/fr/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/ga/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/gl/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/gu/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/he/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/hi/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/hr/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/hu/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/id/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/it/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/ja/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/ka/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/kn/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/ko/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/ku/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/lt/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/lv/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/mai/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/mg/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/mk/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/ml/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/mn/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/mr/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/ms/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/nb/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/ne/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/nl/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/nn/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/oc/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/or/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/pa/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/pl/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/pt/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/pt_BR/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/ro/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/ru/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/rw/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/si/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/sk/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/sl/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/sq/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/sr/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/sr@latin/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/sv/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/ta/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/te/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/th/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/tk/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/tr/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/uk/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/vi/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/xh/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/zh_CN/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/zh_HK/LC_MESSAGES/gcalctool.mo
-rw-r--r-- root/root /usr/share/locale/zh_TW/LC_MESSAGES/gcalctool.mo
daniel@bert:~$
}}}
== Packaging ==

 * [[/Packaging|Internationalization of packages]]

== Coding ==

 * [[/Coding|Internationalizarion of source code]]

== Translation process ==

TODO
 * String freeze
 * Translation
 * Translation deadline
 * Language pack updates

== Launchpad ==
=== The import queue ===

All translation templates (.pot files) and translations (.po) end up in the Launchpad Translations import queue before being imported into Launchpad.

Some of the Ubuntu import queues:

 * [[https://translations.launchpad.net/ubuntu/hardy/+imports?field.filter_extension=pot&field.filter_status=NEEDS_REVIEW|Hardy]]
 * [[https://translations.launchpad.net/ubuntu/intrepid/+imports?field.filter_extension=pot&field.filter_status=NEEDS_REVIEW|Intrepid]]
 * [[https://translations.launchpad.net/ubuntu/jaunty/+imports?field.filter_extension=pot&field.filter_status=NEEDS_REVIEW|Jaunty]]
 * [[https://translations.launchpad.net/ubuntu/karmic/+imports?field.filter_extension=pot&field.filter_status=NEEDS_REVIEW|Karmic]]

Templates generally get approved automatically, but sometimes there is some manual work involved in approving them. The [[https://launchpad.net/~ubuntu-translation-coordinator|Ubuntu Translations Coordinators Team]] manages the import queue. We've got a [[ubuntu-translation-coordinator@lists.launchpad.net|mailing list]] where issues can be discussed and we welcome the help of any community members experienced with translations.

=== If your project is hosted in Launchpad ===
Line 110: Line 48:
=== Translations Templates ===
For `pkgstriptranslations` (in the `pkgbinarymangler` package) to do the job right, please make sure that your package in `main` or `restricted` builds a .pot during the build. It does not necessarily need to be shipped in the source or in the binary package. Generating it during the build is good enough. This can be achieved by running the following in `debian/rules`:
{{{
cd po; intltool-update -p}}}
''If there's more than one `./po/` directory (or it has a different name), please make sure to adjust it.''
== Recipes ==
Line 116: Line 50:
== General Advice ==
Line 118: Line 51:

 * For GNOME packages:
Line 122: Line 57:
Note: ''this is only worth trying if the package uses intltool for i18n (i.e. look for intltool.m4 in the top-level source directory)''

 * For GNU packages:

 * For KDE packages:
Line 123: Line 64:
Line 127: Line 67:
CategoryTranslations

Ubuntu Internationalization Guide

This document tries to outline:

  • How Ubuntu deals with translations (and i18n in general) from a developer's perspective
  • Which tools are interesting for developers to make sure that translations and i18n work fine

General information

Packaging

Coding

Translation process

TODO

  • String freeze
  • Translation
  • Translation deadline
  • Language pack updates

Launchpad

The import queue

All translation templates (.pot files) and translations (.po) end up in the Launchpad Translations import queue before being imported into Launchpad.

Some of the Ubuntu import queues:

Templates generally get approved automatically, but sometimes there is some manual work involved in approving them. The Ubuntu Translations Coordinators Team manages the import queue. We've got a mailing list where issues can be discussed and we welcome the help of any community members experienced with translations.

If your project is hosted in Launchpad

Recipes

If you want to make sure that your packages translations are set up correctly, try running:

  • For GNOME packages:

cd po; intltool-update -m

and be sure to either fix the issues or report them upstream.

Note: this is only worth trying if the package uses intltool for i18n (i.e. look for intltool.m4 in the top-level source directory)

  • For GNU packages:
  • For KDE packages:

Sometimes empty .po files caused packages to build from source.


CategoryUbuntuDevelopment CategoryTranslations

UbuntuDevelopment/Internationalisation (last edited 2010-08-18 14:21:17 by 140)