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
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).
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.