Page MenuHomeWildfire Games

Terms dialog language selection dropdown
ClosedPublic

Authored by elexis on Sep 23 2018, 3:10 AM.

Details

Summary

There is a problem: Wildfire Games can only control english strings, translations may be incomplete or erroneous. But everyone must be able to read the terms, because
(1) they constitute a contract and
(2) GDPR Article 12 transparency

transparent, intelligible and easily accessible form, using clear and plain language, in particular for any information addressed specifically to a child

So displaying english strings is wrong because many people don't speak english,
displaying translated strings can be wrong because the translations may not be done in time or erroneous.

This patch implements a dropdown so that the user can chose between the current language and the original english string.

Test Plan

The patch does not prevent the user from accepting terms and conditions that actually aren't our terms and conditions.
It seems the translations would have to be verified somehow.
Since I don't see an feasible way to achieve this, the dropdown is the best I could come up with albeit not fixing the issue.

There was also the idea to display the translation but enable the Accept button only if the English choice is selected. But then why would the translation be displayed if it had no relevance?

On the git branch there is a variant with a messageBox asking if the user really wants to accept the translated version which may be erroneous and that
the errors shall not affect Wildfire Games. That however has the disadvantage of opening a confirmation box within a confirmation box, which seems too much.

Another idea is to add a text to the document stating that the english strings are the decisive ones in case there is a divergence.
Also notice that not only the document may be mistranslated (for example Accept may be translated to Decline).

-> What can be done to improve this problem rather than to change the problem?

Diff Detail

Repository
rP 0 A.D. Public Repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

elexis created this revision.Sep 23 2018, 3:10 AM
Vulcan added a subscriber: Vulcan.Sep 23 2018, 4:46 AM

Successful build - Chance fights ever on the side of the prudent.

Linter detected issues:
Executing section Default...
Executing section Source...
Executing section JS...
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 2.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/mod/gui/termsdialog/termsdialog.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/mod/gui/termsdialog/termsdialog.js
|  56|  56| {
|  57|  57| 	Engine.GetGUIObjectByName("mainText").caption =
|  58|  58| 		Engine.FileExists(g_TermsFile) ?
|  59|    |-		(Engine.GetGUIObjectByName("language").selected == 1 ? Engine.TranslateLines(Engine.ReadFile(g_TermsFile)) : Engine.ReadFile(g_TermsFile)) :
|    |  59|+			(Engine.GetGUIObjectByName("language").selected == 1 ? Engine.TranslateLines(Engine.ReadFile(g_TermsFile)) : Engine.ReadFile(g_TermsFile)) :
|  60|  60| 		g_TermsFile;
|  61|  61| }
|  62|  62| 
|    | [NORMAL] ESLintBear (indent):
|    | Expected indentation of 3 tabs but found 2.
|----|    | /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/mod/gui/termsdialog/termsdialog.js
|    |++++| /mnt/data/jenkins-phabricator/workspace/differential/binaries/data/mods/mod/gui/termsdialog/termsdialog.js
|  57|  57| 	Engine.GetGUIObjectByName("mainText").caption =
|  58|  58| 		Engine.FileExists(g_TermsFile) ?
|  59|  59| 		(Engine.GetGUIObjectByName("language").selected == 1 ? Engine.TranslateLines(Engine.ReadFile(g_TermsFile)) : Engine.ReadFile(g_TermsFile)) :
|  60|    |-		g_TermsFile;
|    |  60|+			g_TermsFile;
|  61|  61| }
|  62|  62| 
|  63|  63| function closeTerms(accepted)

Link to build: https://jenkins.wildfiregames.com/job/differential/737/display/redirect

asterix accepted this revision.Sep 26 2018, 6:41 PM
asterix added a reviewer: bb.
asterix added a subscriber: asterix.

This is definitely what is needed and it is not just GDPR but some other countries in the world have harsh policies on this subject e.g. in my country it will fall into a gray area (law) where judges look at it negatively when some agreements are not translated.

This revision is now accepted and ready to land.Sep 26 2018, 6:41 PM
smiley added a subscriber: smiley.Sep 27 2018, 2:33 PM

Another idea is to add a text to the document stating that the english strings are the decisive ones in case there is a divergence.
Also notice that not only the document may be mistranslated (for example Accept may be translated to Decline).

if the user really wants to accept the translated version which may be erroneous and that the errors shall not affect Wildfire Games

That ^ plus the fact that WFG is not liable for *any* mistranslation would suffice, no?

This is definitely what is needed and it is not just GDPR but some other countries in the world have harsh policies on this subject e.g. in my country it will fall into a gray area (law) where judges look at it negatively when some agreements are not translated.

This doesn't implement translations however.

In D1643#65097, @smiley wrote:

Another idea is to add a text to the document stating that the english strings are the decisive ones in case there is a divergence.
Also notice that not only the document may be mistranslated (for example Accept may be translated to Decline).
if the user really wants to accept the translated version which may be erroneous and that the errors shall not affect Wildfire Games

That ^ plus the fact that WFG is not liable for *any* mistranslation would suffice, no?

Originally I had implemented a msgbox asking the user for confirmation when the language isn't english. But a confirmation dialog within a confirmation dialog sounds wrong.
So there should either be a separate notice below the terms document, or the hint should be in the terms document itself.
Catch: The translation hinting the reader that the translation might be invalid might also be invalid (the translation of the hint defeating the purpose of the string without our control).
So I hadn't added a solution to this patch yet and it is postponed to the document+string changes diff.

Either the user is confronted with english strings which he may not be able to comprehend, or he is presented with strings that might be mistranslated.
So it seems the problem handled in the context of this diff is not solvable with a diff and only solvable by confirming that translations are accurate.

(Which means the patch is giving the reader two possibly problematic choices instead of one.
I will commit the patch regardless because some bilingual readers might use it and why not....but it doesn't solve the underlying issue.
(Tested the patch with many languages and the long-strings language (the latter seems to use en-US), also set auto-width for the caption, so that there can't be any string size issues.)
)

Some sources about fun with translations:

The EU has 24 official languages. Add Norway and Iceland (EEA-countries) to the mix, and one ends up with 26 different language versions of every European directive or regulation. And all those languages are "official" versions of European law, which apply equally!

https://iapp.org/news/a/gdpr-lost-in-translation/

The worst thing one could do is to literally translate the words used in the local language into general English instead of using the official English wording. The Babylonian confusion that may be the result of such approach is best illustrated by the Dutch and Italian versions of the GDPR. In the Dutch version the term “controller” is translated into “responsible [party] for the processing.” But in Italian, the phrase “responsible [party] for the processing” refers to the processor.

If we do a websearch for "legal document translation" that results in tons of services of people who are specialized on translation GDPR documents. So it seems that's what an international company would do.

Given that the documents are quite long and there wont be much time to translate and review strings, the problem will be beyond principle.

elexis added inline comments.Sep 29 2018, 11:26 PM
binaries/data/mods/mod/gui/termsdialog/termsdialog.js
42 ↗(On Diff #6908)

(locale.js has the same calls)

51 ↗(On Diff #6908)

This would have meant to be languages_list_data instead of languages_list if the line wouldn't be unused and unneeded to begin with.

This revision was automatically updated to reflect the committed changes.

I guess the real problem could be solved by treating legal docs differently. Can do it professionally or WFG could confirm it. But this is neither feasible nor a realistic goal.