raw output

How to drive your translators insane

By jacobo, on 2005-6-14 at 14:42, under Translation

Translators are these people who spend multiple hours reading strings that are output by your program, and converting them into strings in another language, for those users who don’t speak English.

As a software developer, you have the opportunity to spice up your translators’ jobs, and make their labours more challenging. I assure you that your name will constantly be in their minds and their mouths. Also, your family will be the target of their affection. To achieve this, you only have to follow this simple piece of advice:

Make intensive use of abbreviations.
This will not only help you to save keystrokes, this will make your translators think twice about what they write. Most European languages use more characters per word than English (this is true of Spanish, and even truer of French), so if the translators do not resort to use abbreviations too, they will end up with a three-line long translation to a five-word English sentence.
Use slang, verb nouns and use command and function names as real words.
Translators will eventually learn the beauty of sentences like “Could not grok results of statting file %s”. Shame on them if their language does not allow these useful constructions, or if colloquial language would be inappropriate. This will teach them to stick to English or loosen up.
Your translators love tight length limits.
Oh, yes, they do. Oh, the joy of translating a table with fixed column widths and headers such as “Layout” which translate to “Disposición”. Of course, the “Layout” column is only 6 characters wide. But now that I think of this, they can use “Esquema”, which is shorter… but one character too long! Extra joy if you combine tight length limits with abbreviations.
Make your translators taste code every once in a while.
When translators stumble upon a sentence like “Modify hostname” they are happy, because now they have a reason to open a real source code file with their editor and look for the sentence to learn what it means. Is it a button the user must press to edit a host name? Is it the name of a step in a setup wizard? Is it the computer asking if it should modify the host name by itself? Only a look at the code will tell.
Build sentences dynamically.
It’s really neat, this code that allows you to have just a “New %s” string and a “Delete %s” string instead of separate “New mail”, “New appointment”, “New file”, “Delete mail”, “Delete appointment”, “Delete file”. Plus, translators will appreciate that they will have to translate less strings. Sometimes they’ll complain because “New” will translate differently in “New mail” and in “New appointment”, but if they cannot fix it themselves, they are not so good after all. Heck, it’s their work, not yours! Plus, everyone knows that all languages use the singular form for 1 element and the plural form for everything else. The “%d file%s created” string is very clever too, why should some Russian who says that his language has three different plural forms and wacky rules for choosing among them spoil it for you and force you to use gettext_plural?

Well, these were only a few rules of thumb, but if they follow them faithfully, I can guarantee you many nights of ringing ears or tickling nose or whatever it is in your culture. Good luck!

(Update: sorry for the previous “” brokenness. And “blank” was meant to be “target”. Beware of false friends!)


There is 1 comment for this post.

  1. Comment by Dafydd Harries, on 2005-6-15 at 11:46 | permalink

    Spot on!

    Another favourite is when you can’t tell whether a sentence is imperative or not. E.g. “finish the installation” might be a command from the user, or it might not be.

    And you should never use qualifiers like “a” or “the” if you can avoid it, and make the translator guess if you’re talking about one thing out of many or the only thing.

Sorry, the comment form is closed at this time.