Mirjana Andovska
2018-10-18
Context:
The Missing Ingredient in
Software Translation
Start trek – “Discovery” – “Into the forest I go”
Daglas Adams
“Hitchhiker’s Guide to Galaxy”
Start trek – “Metamorphosis”
ezgif.com
link to article
link to article
2017 Market Share of Online Languages
link to article
undefined
initial
translated
verified
trema plugin
New text. State=<<initial>>1
2
3
4
5
8
6
7
9
Update: State=<<translated>>
Generate “Base” labels
Verify “Base” translation. State=<<verified>>
Import verified translations
Generate additional “unverified” labels (de, fr, it)
Update: State=<<translated>>
Verify “Additional” translation. State=<<verified>>
Import verified translations
Developer Translator Validator
trema plugin
<text key="dcf.users.table.view">
<context>users table view</context>
<value lang="de" status="initial">View</value>
<value lang="en" status="verified">View</value>
</text>
trema core plugin
<text key="dcf.users.table.view">
<context>users table view</context>
<value lang="de" status="translated"> View </value>
<value lang="en" status="verified">View</value>
</text>
trema core plugin
initial
<text key="dcf.users.table.view">
<context>users table view</context>
<value lang="de" status="translated"> View </value>
<value lang="en" status="verified">View</value>
</text>
Sichtweise
trema core plugin
<text key="dcf.users.table.view">
<context>users table view</context>
<value lang="de" status="translated"> View </value>
<value lang="en" status="verified">View</value>
</text>
SichtweiseAnsicht
trema core plugin
<text key="dcf.users.table.view">
<context>users table view</context>
<value lang="de" status="translated"> View </value>
<value lang="en" status="verified">View</value>
</text>
SichtweiseAnsichtAusblick
trema core plugin
<text key="dcf.users.table.view">
<context>users table view</context>
<value lang="de" status="translated"> View </value>
<value lang="en" status="verified">View</value>
</text>
SichtweiseAnsichtAusblickanschauen
trema core plugin
<text key="dcf.users.table.view">
<context>users table view</context>
<value lang="de" status="translated"> View </value>
<value lang="en" status="verified">View</value>
</text>
SichtweiseAnsichtAusblickanschauenansehen
trema core plugin
<text key="dcf.users.table.view">
<context>users table view</context>
<value lang="de" status="translated"> View </value>
<value lang="en" status="verified">View</value>
</text>
SichtweiseAnsichtAusblickanschauenansehenanzeigen
trema core plugin
“Experience” the content by using the application
ezgif.comStart trek – “Next Generation” - “Evolution”
Is clicking the application enough?
Star Trek - “Hero Worship”
IT IS NOT ENOUGH
Experience the Content
bestanimations.com
Experience the Content with Screenshots
AdminUI-002-UsersList_en_firefox_05-2.png
SE-010-SuccessfulEnrollment_en_firefox_01-1.png
SE-010-SuccessfulEnrollment_it_firefox_03-1.png
SE-010-SuccessfulEnrollment_it_firefox_03-1.png
Are Screenshots Enough?
Star Trek - “Hero Worship”
THEY ARE NOT ENOUGH
SE-010-SuccessfulEnrollment_en_firefox_09-1.png
SE-009-UnknownMobile_de_firefox_08-1.png
Experience the Context
bestanimations.com
Experience the Contex(n)t
textValues textKeys
SE-009-UnknownMobile_de_firefox_08-1.png
SE-009-UnknownMobile_de_firefox_08-1.png
Die Festlegung Ihrer E-Mail-Adresse ist Pflicht. Bitte tragen
Sie Ihre E-Mail-Adresse in das Feld ein.
Die Festlegung Ihres Passwortes ist Pflicht. Bitte tragen
Sie Ihres Passwort in das Felder ein.
Die Festlegung Ihrer Telefonnummer ist Pflicht. Bitte
tragen Sie Ihre Telefonnummer in das Feld ein.
Die Festlegung Ihrer ${field} ist Pflicht. Bitte tragen Sie Ihre
${field} in das Feld ein.${field} ist ein obligatorishes Feld.
SE-004-EmptyPassword_en_firefox_04-1.png
SE-004-EmptyPassword_en_firefox_04-1.png
Die Festlegung Ihrer E-Mail-Adresse ist Pflicht. Bitte tragen
Sie Ihre E-Mail-Adresse in das Feld ein.
SE-004-EmptyPassword_en_firefox_04-1.png
Die Festlegung Ihrer E-Mail-Adresse ist Pflicht. Bitte tragen
Sie Ihre E-Mail-Adresse in das Feld ein.
Die Festlegung Ihres Passwortes ist Pflicht. Bitte tragen
Sie Ihres Passwort in das Felder ein.
SE-004-EmptyPassword_en_firefox_04-1.png
Die Festlegung Ihrer E-Mail-Adresse ist Pflicht. Bitte tragen
Sie Ihre E-Mail-Adresse in das Feld ein.
Die Festlegung Ihres Passwortes ist Pflicht. Bitte tragen
Sie Ihres Passwort in das Felder ein.
Die Festlegung Ihrer Telefonnummer ist Pflicht. Bitte
tragen Sie Ihre Telefonnummer in das Feld ein.
SE-004-EmptyPassword_en_firefox_04-1.png
Die Festlegung Ihrer E-Mail-Adresse ist Pflicht. Bitte tragen
Sie Ihre E-Mail-Adresse in das Feld ein.
Die Festlegung Ihres Passwortes ist Pflicht. Bitte tragen
Sie Ihres Passwort in das Felder ein.
Die Festlegung Ihrer Telefonnummer ist Pflicht. Bitte
tragen Sie Ihre Telefonnummer in das Feld ein.
Die Festlegung Ihrer ${field} ist Pflicht. Bitte tragen Sie Ihre
${field} in das Feld ein.
SE-004-EmptyPassword_en_firefox_04-1.png
Die Festlegung Ihrer E-Mail-Adresse ist Pflicht. Bitte tragen
Sie Ihre E-Mail-Adresse in das Feld ein.
Die Festlegung Ihres Passwortes ist Pflicht. Bitte tragen
Sie Ihres Passwort in das Felder ein.
Die Festlegung Ihrer Telefonnummer ist Pflicht. Bitte
tragen Sie Ihre Telefonnummer in das Feld ein.
Die Festlegung Ihrer ${field} ist Pflicht. Bitte tragen Sie Ihre
${field} in das Feld ein.${field} ist ein obligatorishes Feld.
SE-004-EmptyPassword_en_firefox_04-1.png
${header.finish.title}
${se.finish.desc}
${se.link.home}
DE | FR | IT | EN
Congratulations
You have successfully registered for the
mobile application.
You can see an example here:
www.seleniumconf.usa/mobileapp
DE | FR | IT | EN
SE-011-SuccessfulRegistration_en_firefox_20-1.png
Build the application to show text keys
gfycat
..
progress.bar.start.view=View
progress.bar.start.edit=Edit
progress.bar.start.reset=Reset
progress.bar.start.add=Add
texts_de.property file
progress.bar.start.view=
progress.bar.start.edit=
progress.bar.start.reset=
progress.bar.start.add=
texts_de.property file
<?xml version="1.0" encoding="UTF-8"?>
<trema masterLang="de">
<text key="progress.bar.start">
<context>header</context>
<value lang="de" status=“translated">View</value>
<value lang="en" status=“verified">View</value>
</text>
</trema>
trema file
<?xml version="1.0" encoding="UTF-8"?>
<trema masterLang="de">
</trema>
trema file
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="progress.bar.start.view">View</value>
<string name="progress.bar.start.edit">Edit</value>
<string name="progress.bar.start.reset">Reset</value>
<string name="progress.bar.start.add">Add</value>
</resources>
android strings.xml file
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="progress.bar.start.view"> progress.bar.start.view </value>
<string name="progress.bar.start.edit"> progress.bar.start.edit </value>
<string name="progress.bar.start.reset"> progress.bar.start.reset </value>
<string name="progress.bar.start.add"> progress.bar.start.add </value>
</resources>
android strings.xml file
Build the tests to give information
gfycat
Coverage
Locators
Verify vs Assert
Build the tests to give information
Experience the Contex(n)t
textValues textKeys
gfycat
Experience the Contex(n)t
textValues textKeys
gfycat
Context accelerates translation
Show text “keys” during testing
Clear workflow for all involved parties
Unique screenshots from tests
see the content,
“experience” it,
it is not context free
gfycat
@mirjando

Context: The missing ingredient in multilingual software translation