Direct translations imports for Ubuntu
The last few months we’ve been doing a lot of work to enable direct import of translations from different upstream VCS systems. For now, we’ve focused on getting one very important case right first (GNOME), and then we’ll extend it to supporting other upstreams as well.
How are we going to do it? First off, we’ve split it all into two separate stages:
- get upstream translations into Launchpad
- push upstream translations from Launchpad into Ubuntu
For some upstreams, getting them into Launchpad is trivial: they might already be hosted in Launchpad. For majority of them, however, it means pulling from different VCS systems. Thanks to Launchpad Code and Bazaar teams, getting the code in the form of bazaar branch is not that big a deal. However, when pulling translations from a VCS instead of getting them from tarballs means one slight complication. Translation templates (POT files) won’t be there, and we’ll have to regenerate them.
Regenerating templates differs from project to project. And doing it should be considered an unsafe operation. So, in the first step we are only going to support intltool-based modules, and generation of templates will happen inside a sandboxed environment. This will enable us to import upstream translations directly into read-only Launchpad projects: this is marked with green-coloured arrows on the diagram.
After that is done, we’ll start pushing all these translations directly into Ubuntu (blue-coloured arrows), minimizing the time it takes for translations to get from upstream translators to Ubuntu users.
I’ve written a more thorough explanation in my personal blog, so check it out.
Parts of this will be rolled out this cycle, but more will come in the coming months.
Tags: gnome, import, translation, upstream
April 28th, 2010 at 1:14 pm
Sounds good!!
April 30th, 2010 at 9:09 pm
This is, IMHO, a big step forward! It brings automatic, daily updates from (Gnome) upstream into LP/Ubuntu for 1) translation and 2) integration into language packs/ubuntu.
(Note that the integration prefers the upstream translations to Ubuntu ones, unless a particular translation has been specifically changed in LP.)
I’d like to observe something that may not be immediately obvious to people who are not already intimately familiar with how translations, LP, and Ubuntu work: translations and source packages are separate.
That is, if you look at the main horizontal arrow in the vertical center of the diagram (which represents upstream (GNOME, in this case) development), you will see arrows going /upwards/ to “Ubuntu packages” and /downwards/ to Ubuntu language packs.
This demonstrates that translations in LP/Ubuntu are separate from the source packages. That is, when a source package is uploaded to LP/Ubuntu, its translations are integrated into the LP translation database, where translators can work on them through the LP UI. They are extracted from this database and packaged into /language packs/ and delivered and installed. They are /not/ pushed back into source packages – There is no need.
Naturally, this achievement makes one think of another challenge: facilitating re-use of translation work /done/ in LP/Ubuntu in upstreams.