Confused about "upstream" in translations

Asked by Thomas Friedrichsmeier

So I've read, but I still don't get it:

My project "rkward" is developed in SVN at Sourceforge. The SVN trunk is imported into bazaar on launchpad as lp:rkward . From this, translations are imported to . There is also a ubuntu package of RKWard, but that is linked to the "stable" branch, and is not set up for translations on launchpad: .

Now, I would assume that my SVN branch / or the bzr import of that are considered the "upstream" source of translations. However, for translations which have been updated on launchpad, but not yet in the rkward source repository, launchpad claims there are no differences to "upstream". E.g. for the Spanish translation: .

So then, what is "upstream" in this case? And can I somehow tell launchpad to consider my SVN-import as "upstream" (or to give me stats on what differs between translations in lp:rkward, and launchpad)?

Question information

English Edit question
Launchpad itself Edit question
Данило Шеган Edit question
Solved by:
Данило Шеган
Last query:
Last reply:
Revision history for this message
Данило Шеган (danilo) said :

"Upstream" is what the upstream decides it is. Since you are the maintainer, you can decide that.

For Launchpad, "upstream" is whatever is in your Launchpad project translations (as opposed to what might be in Ubuntu package translations). As such, when you import translations and let people modify them directly in LP, they are all "upstream". You can't have LP treat lp:rkward translations as "parent" translations for translations done in LP project. Internally, I believe we do store the information what was contributed by Launchpad users and what is coming from your source code, but we don't show that anywhere yet. The distinction is there mostly for Ubuntu (i.e. Ubuntu translations can differ from the upstream translations).

Launchpad is designed to allow projects to be translated in Launchpad, thereby making Launchpad the "upstream" (the main source of translations). OTOH, you can also set up an import of translations from upstream source code repository (wherever that may be), but if you generally get translations committed directly (i.e. outside LP), then it's usually a bad idea to have it translatable in LP as well.

Reasons are that there may be duplication of work (i.e. when someone translates in LP, that's directly visible; if someone downloads a PO file and wants to commit it after they are done to the upstream SCM, somebody else will not know that and may start translating in LP, thus wasting their time), and inconsistency troubles (i.e. a translator working directly upstream might have different opinions on how stuff should be translated than the translator working in Launchpad; Launchpad has a relatively fine-grained permissions system, but problems may arise because Launchpad can't control what gets into the SCM directly; this may annoy either upstream or LP translator, or both).

Launchpad itself won't stop you from doing both, because there may be legitimate reasons. However, my suggestion would be to make Launchpad the central translation point, and only import the POT file (translation template) from your upstream branch.

(Btw, Ubuntu package is not translatable in LP because it's part of Universe; that's the Ubuntu policy which they are looking to change: i.e. at the moment, they directly include upstream translations coming from source tarballs)

Revision history for this message
Thomas Friedrichsmeier (tfry) said :


Thanks for your insightful answer. Let me add some comments:

1) I do see your points about coordination issues when translations are available at several places. And I do intend to encourage my existing translators to use Launchpad, exclusively (though for now, I have just started evaluating this solution). However, the problem is absolutely *not* specific to my setup, but pretty much inherent. Keep in mind that
  a. Translations need to be distributed with the sources, eventually. So, naturally, there will always be several places, where you obtain .po's, potentially in different versions, even if there is only one place where you can submit them.
  b. Translators may have good reason to work on their translation offline, at least some of the time.
Yes, the problem gets a lot worse, if you add synchronization delays. But it is absolutely inherent, if several people work on the same translation.

2) I think you'd have a hard time to convince "up-upstream" projects to keep their translations on, exclusively, rather than at least *storing* them in their version control system. But this quite simply means, projects will want to synchronize their translations, at least in one direction. For that, giving some better indication of what differs with respect to the "up-upstream" repository would seem very helpful to me.

Anyway, I have submitted two wishlist items with respect to this:


Revision history for this message
Best Данило Шеган (danilo) said :

Oh, you are absolutely right about points 1a and 1b: it's just that Launchpad model doesn't represent the real world as complicated as it really is. I'll think some more how we can clarify this and will comment on your bug 787533 later.

As for 2, the idea is to allow people to import translations into Launchpad without allowing them to be modified in Launchpad. That's what we'd call an "import project", rather than a "hosted project". Even only part of it (like translations) can be "only imported", while it's hosted otherwise.

As for storing translations in their version control system, that's absolutely supported. But then what you are looking for is a feature to know what has been synced upstream and what hasn't. That's a very tricky problem in itself. More on that in bug 787535. :)

Revision history for this message
Thomas Friedrichsmeier (tfry) said :

Thanks Данило Шеган, that solved my question.