MohamedG's Log



It’s an economic need to develop international software as you need to reach as many customers as possible all over the world. Let’s tackle a simple scenario, imagine that you will develop an application that has a bilingual UI: English and Arabic. It’s very easy to develop everything in English, but what about Arabic? When you designed the UI, did you count for the length of the Arabic text? Did you forget to use resource files? If you fail to deliver the application in all supported languages, you will need to rewrite so much code, not to mention the hassle of explaining this wasted time to your team leader!

You’ll need to test the application’s UI in different languages before you ship it, and for that you need to hire a translator to translate each and every word into Arabic. What about the tests that you run during the development? Can you afford to pay the translator for text that might change in the next build? It’s always an option that you buy a tool that generates inaccurate translation, but this might not be always available, especially for a complex language like Arabic with so many grammar rules. Another option is to use pseudo-localization. It means that you will use pseudo-translated text as if it were the real translation. The pseudo-localized text should mimic the behavior of the target locale, and it should cover scenarios like bidirectional (BiDi) text. For instance, in Arabic, the flow of words is from right to left (RTL), but when a number is written, it’s written from left to right (LTR). Hence, you can have RTL text, followed by a number, then some other RTL text afterwards. The produced text will be gibberish for the tester, even if she knows the language, because it’s not the real translation, that’s why the tester might like to add the original text or the resource ID within the pseudo-localized code in order to recognize it. In order to be on the safe side, the pseudo-localized text should be longer than the original, to test whether it can fit in the UI or not. It may also be surrounded by markers, like brackets, to make sure that the text fits without cuts. Producing pseudo-localized resource files is an easy task and extremely economical at the same time. However, it’s insufficient. You need to keep in mind other requirements needed for developing international software during design and development phases. This is just a sanity test; you will need to tackle more issues like mirroring, resource files, etc.

For more info, please read: Globalization Step-by-Step and Testing for World-Readiness