Cannot upload translation .po file using the obvious "Upload translations" option


This is a major UX flaw that needs to be addressed.

The user will upload their source file, download the offline.po to hand out or translate themselves, then attempt to upload the translated .po files via the clearly labelled menu option "Upload translations".

The problem is that this option expects a file type that is the same as the source. That is, if the user uploads a .txt, the upload expects a translated txt. This is sub-optimal, simply because there is absolutely no way the system can tell if the paragraph being translated is the same as the one uploaded, other than order. Sure, this is great for structured multilingual files (e.g. Qt .ts), but for little else.

Fix: if the user uploads a .po, treat it as though it is a translation set for the document that it was initiated from.

1. Upload a source file (not POT) to a project version
2. Select a language, click the V (chevron) on the file
3. Select Download translated (Offline po)
4. Alter the downloaded file msgstr
5. Select the same language and press V (chevron) on the same file
6. Select Upload translations
7. Select the altered file, press Upload

error (eg.): Could not find TextFlow for TextFlowTarget ba0ffbe99a9961fe98f89bad8d264ffa with contents: [retest file]


Fedora 22, Firefox, Zanata 3.9.0 on branch origin/ZNTA-1060-fix-npe (fetch merged) at 22c1800c8aaddf57b913b9603b5fda879d20b2df


Damian Jansen
May 28, 2018, 12:00 AM

Tested with pot, json and idml. Looks to be in working order with PR 849, targeting release.

Casey Link
April 10, 2018, 2:40 PM

Is there no movement on this bug? It seems to be quite a massive oversight.

Our team, translating IDML files, has to manually copy/paste the text for every translation because of this issue.

Sean Flanigan
May 9, 2016, 5:16 AM

It looks like offlinepo support is missing for 'file' projects, both when uploading POs via web and via command line. Both cases should be fairly easy to fix, because offlinepo is just like PO format except msgctxt is used directly as resId, instead of hashing (msgid+msgctxt) to make resId.

In the case of web upload, we'll need some logic to decide when to upload a PO file as ordinary Gettext, and when to treat as offline PO (eg if the source file extension is .txt, it must be offline PO).

Ready for Release


Damian Jansen


Damian Jansen



Tested Version/s





Fix versions

Affects versions