FeatureHighlights/SoftwareTranslation

Not logged in - Log In / Register

Revision 3 as of 2007-03-26 12:03:08

Clear message

Translating your software

Launchpad has unique infrastructure to support the translation of free software into many languages. It enables translation communities to form and be organised (leveraging the [:ReviewersGuide/TeamManagement:Team Management] capabilities described earlier) and allows you to keep track of the translations of multiple versions of your software into multiple languages.

This translation infrastructure is all web-based, so new translators can join very easily, without any special tools or having to be able to commit to the codebase of the project. If you have more advanced translators on your team, however, they can still use specialised tools to work on the standard translation files that Rosetta produces, and they can upload those directly to Launchpad, avoiding the web interface entirely.

Ubuntu uses Launchpad to manage the translation of several hundred packages into many different languages, for each successive release. In particular, once a release has been made, Ubuntu translators can continue to improve translations, which are delivered to users in the form of updated language packs every few weeks.

Keeping track of progress

Each piece of software that can be translated results in one or more "translation templates". You can see the extent to which a particular template has been translated very easily. For example, here is the status of the Gnome Terminal translation in Ubuntu's 6.06 LTS release:

And part of that page, at the time of writing looked like this:

attachment:translationstatus.png

You can immediately tell which languages are well-translated (green) and which are not. The purple bars represent new translations, added to this system since the package itself was built. It's also possible to see when last someone added to the translation of this template in any particular language, and who that person was.

Contributing translations

It's very easy for people to contribute new translations. Each translation is presented as a web form, with the English and current translation as well as suggestions based on other known translations prominently displayed. Here's an example of the form to translate a single message in an application (Gnome Terminal again):

Notice that the translator has included the relevant HTML display markup. The translation is substituted in the interface for the English string in its entirety. Some more sophisticated translations can contain multiple lines of text, and placeholders for values that come from the application itself. And of course translations sometimes need to deal with plurals - the difference between "there are 9 cars on the lot" and "there is 1 car on the lot". It takes time and skill to become a very good translator. For this reason, it is possible to have a core group of translators who are trusted who can modify any translation, and have everyone else only able to make suggestions - until they are trusted enough to be part of the core team.

Separating translations for different versions

It is often the case that you want translators to be able to work on a stable version of the project code, and at the same time get a head start on the development version. Launchpad supports this explicitly. Each Series (we described those earlier - major versions of a project, such as 1.1.x, 1.2.x and trunk) can have its own set of translation files. When a translation is added to one, it is immediately suggested to the other if the English string is unchanged. In that way, you can have some translators focused on expanding the translation coverage of your stable release while others work on the cutting edge.

For example, here you can see the work being done to translate WengoPhone. By default, the "trunk" is shown because the WengoPhone developers have identified that as the most important series to be translated at the time of writing. But it is also possible to translate WengoPhone 2.1:

And here's a snapshot of the relevant part of the page, at the time of writing:

attachment:seriestranslations.png

Translation teams