SlideServe
Menu
Préférences
© SlideServe · v2026

The Theory and Practice of Pseudo-Translation

roza avatar
26 diapositives · 598 Views · Oct 09, 2014

The Theory and Practice of Pseudo-Translation. About this Presentation. Addison Phillips Internationalization Architect, Yahoo! Introduce Pseudo-Translation, its uses and several methods of implementation. “ key ” , “ ðìsplàÿ stríñg ” “ dialogTitle ” , “ Ðîálòg Tïtlè ”

The Theory and Practice of Pseudo-Translation - slide 1
01 / 26The Theory and Practice of Pseudo-Translation
1 / 17

Télécharger la présentation

The Theory and Practice of Pseudo-Translation
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. The Theory and Practice of Pseudo-Translation Internationalization and Unicode Conference #30

  2. About this Presentation • Addison Phillips • Internationalization Architect, Yahoo! • Introduce Pseudo-Translation, its uses and several methods of implementation.

  3. “key”, “ðìsplàÿ stríñg” “dialogTitle”, “Ðîálòg Tïtlè” “aMessage”, “Thìß ís â Mésßãgê. What’s Pseudo-Translation? • Convert text (typically English ASCII text) to non-random non-ASCII. • Typically to test a product for “localizability” before actual translations are ready. “key”, “display string” “dialogTitle”, “Dialog Title” “aMessage”, “This is a message.”

  4. What is it good for? • Testing localizability • makes hard-coded strings visible • makes problems with resources and resource formats visible • makes layout problems emanating from length/height/font changes visible • “Does anybody really do that any more?”

  5. Testing Software • It’s also good for functional QA • generate data in non-ASCII encodings • generate non-ASCII data • generate test cases from ASCII

  6. Your Mission… Pseudo-translate text to support localizability and other test purposes using general purpose code. • Easy to deploy and customize • Support functional, encoding, and localizability testing

  7. Anatomy of a Pseudo-Translation DNT Identifier Source String MSG012=“Translate me.” “@@@Tràñslátè mé.###” Pre-pend Translated String Post-pend

  8. More Anatomy Identifier Inclusion Boundary Marking “[MSG012]Traanslaatee Me’e]” Vowel/Letter Doubling Inclusion

  9. Interesting Boundary-Marking Patterns [This is a concatenated ][string][.] [This is a message-formatted [string].]

  10. Types of Pseudo-Translation • Algorithmic Translation • Maps code points using “ASCII Math” • Mapped Translation • Maps code points using a table • Random Translation • Maps code points at random • Simulated Encoding • Generate encoding-based test string • Auto-magic Translation • See graphic • More?

  11. Algorithmic • The most common example: ‘zenkaku’ ASCII • abcd => abcd • U+0061 U+0062 U+0063 U+0064 • U+FF41 U+FF42 U+FF43 U+FF44 • Add “0xFEE0” to ASCII! • Produces strings that are visibly “ASCII” but structurally multi-byte (in SJIS or UTF-8 for example) • Produces characters that are kind of chubby, tests Asian font support, and stresses layout/spacing

  12. Mapped • Convert characters using a mapping table • e -> é • Produces strings that are non-ASCII and exercise casing, sorting, encoding, display, and other capabilities of the software, but are still recognizably English • Often used with vowel doubling or pre/post-fixing to simulate text swell.

  13. Mapping Rotation • Single character->character mappings produce predictable results. Same string pseudo-translates the same way every time. • “Character rotation” replaces one character with different characters so that the same string is rarely the same twice. • Exercises assumptions in the code about strings having to match.

  14. Rotation Frequency • Using variable length replacement lists helps ensure pseudo-strings aren’t the same • Do more than just the vowels. Do consonants too!

  15. Random • Replace one character with a random character • Exercises a larger range of Unicode or the target encoding. • But… produces strings that are never legible.

  16. Simulated Encoding • QA projects frequently require globs of text that exercise a particular character encoding. • You could download some from the Web… but how to you know if the encoding is correct through-and-through? How can you exercise the full range of the encoding, including rare characters? • Replace an ASCII text buffer with a similarly sized and structured text in a given encoding (or using a given character repertoire).

  17. Auto-Magical • Use a machine translation Web service or tool to make text in a given language. • Babelfish, for example • Produces texts that are (usually, mostly, sorta) in the target language.

  18. Funkadelic

  19. An Approach to Pseudo-Translation • I used Java for this. • Three main components: • Expose text for translation • Perform translations • Manage translation process • Probably: could have used ICU Transliterator classes for this… but probably wouldn’t have learned as much…

  20. Expose Text • ITextProvider • An interface: exposes only the translatable bits of text. (Not every character in your properties/JSON/XLIFF/message catalog should be pseudo-translated). • Implementers extend this interface for their specific file format or input source. • So I don’t have to provide a parser for every format. • Provides for “segmentation” of text into “translation units”

  21. Manage Translation • TranslatorProvider • Implemented as a “Service Provider Interface” (SPI) • Loads the various translation classes, including those developed by users separate from the pseudo-translation library • Provides a consistent interface to the translation process • … and I don’t have to provide every possible “Translator” class

  22. Translate Stuff • Translator • an abstract class that defines the translation process. • AbstractPseudoTranslator • a convenience class that adds specific features unique to pseudo-translation, such as pre- and postpending strings.

  23. Why SPIs? • Provide users with the ability to create their own classes and integrate without a re-compile. • Who do I mean by “users”? • Mostly QA folks. Integration of Pseudo-translation with automated test harnesses.

  24. Summary • And a couple of Live Demos, since I don’t learn quickly… http://images.search.yahoo.com/search/images?p=live+demos&ei=UTF-8&fr=sfp&x=wrt

  25. PseudoTranslator Demo

  26. Q&A Presentation available (soon) at: http://www.inter-locale.com Internationalization and Unicode Conference #30