In my company all our strings are stored in *.properties files. Our build tools build a "test languange" copy of the properties files, which replace a string like this:
Click here
with something like this:
[~~~~~~~ Çļïčк н∑ѓё ~~~~ タヌクウ ~~~~]
Now, when we set the language to "test" in our config files, these properties files are used. (And of course we don't ship the test language files).
This allows us to:
- Make sure that Unicode characters are displayed correctly, including Japanese/Chinese/Korean.
- Make sure that the layout scales appropriately for languages with longer words (German in particular has longer words on average than English).
- Spot any hard-coded strings (as they will be in plain-English).
As for the actual translation, this is done by professional translators, not developers.