Pro Yearly is on sale from $80 to $50! »

CodeFest 2019. Mirjana Andovska (Netcetera) — Context: The missing ingredient in multilingual software translation

16b6c87229eaf58768d25ed7b2bbbf52?s=47 CodeFest
April 05, 2019

CodeFest 2019. Mirjana Andovska (Netcetera) — Context: The missing ingredient in multilingual software translation

An important phase in multilingual software systems is text translation. Since same text may be used in different contexts, it is difficult to determine whether the translation is proper in the context of the environment in which the text is used. Sharing only text keys and values with translators usually is not enough. Simple screenshots showing only the text content, also didn’t help in situations where text keys were re-used on multiple places, or when there are highly generic templates. Thus, I would like to present how we can use the automated end-to-end tests to deliver the necessary artifacts to the translation experts. These artifacts contain text keys, text values and also the context where they are used.



April 05, 2019


  1. Mirjana Andovska 2019-03-30 Context:
 The Missing Ingredient in Software Translation

  2. Start trek – “Discovery” – “Into the forest I go”

    Daglas Adams
 “Hitchhiker’s Guide to Galaxy” Start trek – “Metamorphosis” M2 @mirjando
  3. M3 @mirjando

  4. Two Worlds: Languages IRL and Online M4 @mirjando

  5. undefine d initial translate d verified trema plugin M5 @mirjando

  6. 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 more “unverified” labels (ru, de) Update: State=<<translated>> Verify “Additional” translation. State=<<verified>> Import verified translations Developer Translator Validator trema plugin M6 @mirjando
  7. <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 M7 @mirjando
  8. <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 Ansicht Ausblick anschauen ansehen anzeigen M8 trema core plugin @mirjando
  9. “Experience” the content by using the application Start trek –

    “Next Generation” - “Evolution” M9 @mirjando
  10. Is clicking the application enough? IT IS NOT ENOUGH M10

    Star Trek - “Hero Worship” @mirjando
  11. M11 @mirjando

  12. Experience the Content M12 @mirjando

  13. Experience the Content with Screenshots AdminUI-002-UsersList_en_firefox_05-2.png M13 @mirjando

  14. SE-010-SuccessfulEnrollment_en_firefox_01-1.png M14 @mirjando

  15. SE-010-SuccessfulEnrollment_ru_firefox_03-1.png M15 @mirjando

  16. SE-010-SuccessfulEnrollment_ru_firefox_03-1.png M16 @mirjando

  17. Are Screenshots Enough? Star Trek - “Hero Worship” THEY ARE

    NOT ENOUGH M17 @mirjando
  18. SE-010-SuccessfulEnrollment_en_firefox_09-1.png M18 @mirjando

  19. SE-009-UnknownMobile_de_firefox_08-1.png M19 @mirjando

  20. Experience the Context M20 @mirjando

  21. Experience the Contex(n)t textValues textKeys M21 @mirjando

  22. SE-009-UnknownMobile_de_firefox_08-1.png M22 @mirjando

  23. 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 M23 @mirjando
  24. ${header.finish.title} ${se.finish.desc} ${} DE | FR | IT | EN

    Congratulations You have successfully registered for the mobile application. You can see an example here: DE | FR | IT | EN SE-011-SuccessfulRegistration_en_firefox_20-1.png M24 @mirjando
  25. Build the application to show text keys .. M25 @mirjando

  26. file M26 @mirjando

  27. file M27 @mirjando

  28. <?xml version="1.0" encoding="UTF-8"?> <trema masterLang="de"> <text key=""> <context>header</context> <value lang="de"

    status=“translated">View</value> <value lang="en" status=“verified">View</value> </text> </trema> trema file M28 @mirjando
  29. <?xml version="1.0" encoding="UTF-8"?> <trema masterLang="de"> </trema> trema file M29 @mirjando

  30. <?xml version="1.0" encoding="UTF-8"?> <resources> <string name="">View</value> <string name="">Edit</value> <string name="">Reset</value>

    <string name="">Add</value> </resources> android strings.xml file M30 @mirjando
  31. <?xml version="1.0" encoding="UTF-8"?> <resources> <string name=""> </value> <string name=""> </value> <string name=""> </value> <string name=""> </value> </resources> M31 android strings.xml file @mirjando
  32. M32 @mirjando

  33. M33 Build the tests to give information @mirjando

  34. Coverage Locators Verify vs Assert Build the tests to give

    information M34 @mirjando
  35. Experience the Contex(n)t textValues textKeys Context accelerates translation Show text

    “keys” during testing Clear workflow for all involved parties Unique screenshots from tests M35 @mirjando
  36. see the content, “experience” it, it is not context free