Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Context: The missing ingredient in multilingual software translation

187 views

Published on

Take a look at how automated end-to-end tests can be involved to support and speed up the software translation process. Mirjana’s quest at Selenium Conf 2018 in Chicago is to show you with examples how to feel the content and, in the same time, also feel the context of that content.

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. This presentation contains an efficient automated way of delivering the necessary artifacts to translation experts. These artefacts contain text keys, text values and also the context where they are used.

https://www.seleniumconf.us/talks#mirjana-andovska

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Context: The missing ingredient in multilingual software translation

  1. 1. Mirjana Andovska 2018-10-18 Context: The Missing Ingredient in Software Translation
  2. 2. Start trek – “Discovery” – “Into the forest I go” Daglas Adams “Hitchhiker’s Guide to Galaxy” Start trek – “Metamorphosis” ezgif.com
  3. 3. link to article
  4. 4. link to article
  5. 5. 2017 Market Share of Online Languages link to article
  6. 6. undefined initial translated verified trema plugin
  7. 7. 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
  8. 8. <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
  9. 9. <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
  10. 10. <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
  11. 11. <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
  12. 12. <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
  13. 13. <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
  14. 14. <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
  15. 15. <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
  16. 16. “Experience” the content by using the application ezgif.comStart trek – “Next Generation” - “Evolution”
  17. 17. Is clicking the application enough? Star Trek - “Hero Worship” IT IS NOT ENOUGH
  18. 18. Experience the Content bestanimations.com
  19. 19. Experience the Content with Screenshots AdminUI-002-UsersList_en_firefox_05-2.png
  20. 20. SE-010-SuccessfulEnrollment_en_firefox_01-1.png
  21. 21. SE-010-SuccessfulEnrollment_it_firefox_03-1.png
  22. 22. SE-010-SuccessfulEnrollment_it_firefox_03-1.png
  23. 23. Are Screenshots Enough? Star Trek - “Hero Worship” THEY ARE NOT ENOUGH
  24. 24. SE-010-SuccessfulEnrollment_en_firefox_09-1.png
  25. 25. SE-009-UnknownMobile_de_firefox_08-1.png
  26. 26. Experience the Context bestanimations.com
  27. 27. Experience the Contex(n)t textValues textKeys
  28. 28. SE-009-UnknownMobile_de_firefox_08-1.png
  29. 29. SE-009-UnknownMobile_de_firefox_08-1.png
  30. 30. 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
  31. 31. SE-004-EmptyPassword_en_firefox_04-1.png
  32. 32. 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
  33. 33. 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
  34. 34. 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
  35. 35. 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
  36. 36. 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
  37. 37. ${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
  38. 38. Build the application to show text keys gfycat ..
  39. 39. progress.bar.start.view=View progress.bar.start.edit=Edit progress.bar.start.reset=Reset progress.bar.start.add=Add texts_de.property file
  40. 40. progress.bar.start.view= progress.bar.start.edit= progress.bar.start.reset= progress.bar.start.add= texts_de.property file
  41. 41. <?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
  42. 42. <?xml version="1.0" encoding="UTF-8"?> <trema masterLang="de"> </trema> trema file
  43. 43. <?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
  44. 44. <?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
  45. 45. Build the tests to give information gfycat
  46. 46. Coverage Locators Verify vs Assert Build the tests to give information
  47. 47. Experience the Contex(n)t textValues textKeys gfycat
  48. 48. 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
  49. 49. see the content, “experience” it, it is not context free gfycat @mirjando

×