Created attachment 944441 [details]
Screenshot of error
Description of problem:
I've seen throughout translations in Zanata that "(Someone offline)" has uploaded bogus translations, eg. English strings in Italian targets.
The client must know who uploaded it, and must report this when pushing translations. Otherwise, this is an open invitation for anonymous abuse such as pushing garbage or inappropriate content.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Go to https://translate.zanata.org/zanata/webtrans/Application.seam?project=zanata-server&iteration=master&localeId=it&locale=en#view:doc;doc:zanata-war/src/main/resources/messages;search:Login
- Note the numerous false translations
2. Click History on any of these bad translations
(Someone offline) created a Translated revision
John Citizen created a Translated revision
Apparently the reasoning is that "John Citizen might not have translated them, he only pushed them". This is flawed, as
- He may have actually translated them, and
- He is responsible for the document being uploaded, so he is responsible for the content.
More so, if someone can push a "Translated" revision, this will potentially end up in target content with inappropriate content with no recorded submitter.
Notes from developer meeting:
Decided to implement a simple fix:
- change the label from showing "(someone offline)" to show the username of the user in the modified-by column in the database. This should happen when the translated-by column is null, which indicates that the translation must have been uploaded.
- this only affects the UI for text flow target history.
- this does not include any change to contributor statistics.
Discussed why uploaded translations do not contribute to "translated" statistic for the uploading user. The key point is that maintainers and translators can upload files that were translated by other users (such as in a separate project or importing from a different translation management system). The file formats we use do not include enough information to accurately infer which user translated each string.
Also discussed possible changes that may be implemented as separate enhancements:
- add a statistics category to translator statistics showing uploaded translations.
- change representation of the origin of a translation to a column for the type of origin (e.g. translated in editor, uploaded, TM merge, copytrans, machine translation), a timestamp, the user, and a nullable column to link to the copied translation for TM merge and copytrans.
After investigation, the column "last modified by" IS null when pushed from client (when translation file i.e. po don't have a translator entry which has a Zanata recognized email). Therefore the requirement will change to following:
- old data remains the same with just label change: "(someone offline)" becomes "Anonymous" with special styling to differentiate with real user calling himself "Anonymous"
- new coming data after this bug will have last modified by field set to the uploader. Translated by field will remain null.
Verified at 1bdb99277804f6135355d2459f8ee5a22d081021