Advice on tools and best practises for multi language web apps?

Kate Hiscox

April 13th, 2014

I would appreciate any advice on tools/services that others have used when it comes to translating your web or mobile app and offering different languages? There are quite a few sites out there that offer translation etc. and I would love to hear of anyone's first hand experience with this.



April 13th, 2014

@Kate Hiscox:

Are you looking for services that help with the translating or info on how to manage this on the backend of your apps?

I can only answer the latter since I have direct experience with that. When I worked for Ai Squared, i18n was especially important for us as the software we were building was intended to be used by folks globally and our clients also required this. TBH, I don't quite remember where the translations came from, but the way we worked with them was similar to how people do this in Rails and many other tools/frameworks/libraries. Basically, we stored the translations as hashes, where each key would be a unique slug to some string value (they could also be nested). During the initial load of our app, we would load all translations into our main locale hash as the values of their respective locales (the keys). This proved to be a very simple and straightforward model to work with and we just had to make sure we never directly hardcoded any string that would be directly displayed to a user, and instead grab the string based on the selected locale. In fact, we built a minimal code analysis tool to try to help us with this, since it was easy to forget not to hardcode things. It wasn't always 100% on point, but it helped. AFAIK, this is quite a standard (or at least common) model nowadays, but I thought I'd describe it in case you weren't aware of it.

- Jonathan

Dimitry Rotstein Founder at Miranor

April 14th, 2014

My experience is a first hand one, but from a different side. A friend of mine wanted to translate his app to Russian (text and audio), looked for all kinds of translation services but couldn't find anything, or at least nothing good. Then he remembered that I'm fluent in Russian, so he called me and asked for help. I translated the text myself (took me an hour or so) and found someone to voice the audio, all for a pretty symbolic price. If you're interested in the technical side, the voice recording was done with a program that comes with Windows, and I edited the result with the free "Audacity" program.

Joseph Moniz Software Engineer

April 14th, 2014

Hi Kate,

I'm a developer who has personally set up the i18n infrastructure at two separate companies now, so i can speak on the technical implementation and infrastructure side of the house.

In the past i've had the most success implementing GNU's gettext ( ). It's an open source C project that has bindings to multiple languages (PHP, Perl, Python, Ruby, Etc).

All your developers have to do is annotate every string that requires translation with the appropriate gettext function of your implementation of choice (IE: in php they have to wrap each string in _("string here") ).

There are certain practices your developers should follow when wrapping these strings. For example, they should wrap entire pieces of copy in a single wrapper and avoid fragmenting them into multiple wrapped calls. This will result in translators providing the most appropriate translations as they have the full context of what they're supposed to be translating. If a developer must inject some dynamic content into the middle of a huge corpus of translatable text they should use the parameterized string method in the language of their choice and pass the result of that to their gettext() wrapper.

Gettext has a suite of tools which your developers can use to scan their source files for strings that need to be translated and generate industry standard MO and PO files. Non developer business users can also extract these strings that need to be translated via tools such as POEdit ( ).

The best part about MO and PO files are that they are an industry standard. Most 3rd party translators are familiar with the tools to work with them and a good majority even prefer this format. The other upside is that the tools such as POEdit are so simple to use that if you have an in house business user willing to do the translations for you it's easier enough for them to pick up the GUI tool and start translating for you with minimal friction.

- Joseph Moniz

"Wake up early, Stay up late, Change the world"

Kate Hiscox

April 14th, 2014

Thanks all! ᐧ

Panos Kougiouris Founder at NeatSchool

April 14th, 2014

Hi Kate, this is a service I highly recommend. I know the CEO personally contact me if you reach a point you need any more help. Best, Panos