Great article. One thing to bear in mind with translating your apps is that it's a complex field, and you want to do it right the first time around.
For an example of possible pain, you can't simply pass a string such as Welcome, Thomas, you have {number_of_messages} messages to your translator and expect all to be OK. I speak a bit of Polish, and in this instance, the word messages will take one of three forms, depending on whether it's 1 message, the number of messages ends in 2, 3 or 4 (but isn't 12, 13 or 14), and another form for everything else.
Gettext has most of the features needed, when translating software, like plurals, comments by developers and translators and fuzzy strings. There are projects that even use it for documentation purposes, like fedora.
One thing to consider is that the users will expect support in that language as well. This may be much less of an issue for a game or mobile app, but much more for a SaaS offering for example.
For an example of possible pain, you can't simply pass a string such as Welcome, Thomas, you have {number_of_messages} messages to your translator and expect all to be OK. I speak a bit of Polish, and in this instance, the word messages will take one of three forms, depending on whether it's 1 message, the number of messages ends in 2, 3 or 4 (but isn't 12, 13 or 14), and another form for everything else.
The gettext library is works really well for handling pain points like these, and the "About" section in its manual gives some common examples like the above: http://www.gnu.org/software/gettext/manual/gettext.html#gett...