More localization tips
Jeudi 7 mai 2009If you are a developer about to write an application, stop and read 10 localization tips. It will save you time and money down the road. If your program is already all coded, take a look at the tips as well; maybe you can correct some mistakes before embarking into the actual localization process.
When you are ready, it is best to conquer foreign markets one language at a time. You can iron out the localization bugs with the first translation and proceed to other languages with a solid base.
What follows will seem like extra work, but in the end, it will save time and resources and keep you in control until you send your app’s strings to the translator. So before the actual act of translation takes place you will want to take some time to go through “pseudo-translation”.
What is pseudo-translation? It is the pre-translation of strings into a fake but legible idiom that mimics a variety of languages.
For example, if you are aiming for the European markets, you alter the text using accented version of the English letters like this: “Chéçk bõx ïf yôu ñeed èxtrå mêmørÿ“, which obviously stand for “Check box if you need extra memory”. If you want to conquer Asia, choose Arabic and Chinese signs that look like English letters. When you run the pseudo-localized version of your application, you will still understand the messages. Ok, so… what’s the point of all this, right?
Going through the trouble of pseudo-translation will uncover many problems before they show up in all versions of your software. Once you have dealt with the main localization bugs, the remaining problems will be a lot quicker to solve and will most likely be language specific.
What problems will pseudo-translation expose?
1. It will detect problems with encoding across all languages. Instead of seeing “Chéçk bõx ïf yôu ñeed èxtrå mêmørÿ”, you will see something like “Chk bx f yu eed xtr mmr”, or a variation thereof. You will know right away that your encoding is wrong, and still be able to see where these strings are coming from.
2. It will detect problems with string length/height. If you followed tip #2a (previous blog entry), you will have allowed extra room on buttons, text fields, labels, etc. But to make sure they are big enough, your pseudo-translation should include begin and end tags that will easily show any real estate problems. Adding underscores to each end of the pseudo-translation string (_Chéçk bõx ïf yôu ñeed èxtrå mêmørÿ_) will immediately show clipped strings. If you know the actual maximum string length, it is always a good idea to mention it to your translators.
Moreover, depending on languages and captions, add extra characters (”%”, for example) within the pseudo string to account for expansion: “_%%Chéçk bõx ïf yôu ñeed èxtrå mêmørÿ%%_”. How much should you add? It depends on the language. Here is a very approximate guide for translating English into:
French: Spanish: Italian: German: |
20% 25% 15% 20% |
Chinese: Japonese: Arabic: |
Varies Up to 60% 25% |
As a general rule, the shorter the word or sentence the higher the expansion coefficient. For example “low memory” will translate into “mémoire insuffisante” in French: a 100% expansion! For German, it can go up to 400% for single words.
Be careful with font size too. Roman font sizes do not necessarily correspond to Chinese, Arabic or Cyrillic font sizes. Choose replacement letters that have descenders or ascenders, include capital letters as well to see if there is sufficient room in the vertical.
3. It will detect hard coded strings. If you extracted all of your strings, pseudo-translated them and put them back into the resource files, you will see which strings were left behind, hidden in code, as they will appear in plain English.
One final advantage of pseudo-translation is that it can be done automatically with a script that does string replacement. And if no resource is available to carry this out in-house, some localizers will be able to do it, regardless of language.
Of course, taking that extra translating step will seem to create more work - and it does, for that first localized software version - but once it’s done, adding more languages will be less time-consuming, which will make up for that extra step.
Julie