Translations made easy

Why Offlate?

I am a free software enthusiast. A lot of good software are available for any need you could have. I would like to share that with my family, friends, colleagues… but they do not all speak English, which is the language most of these software are available in. A lot of good software are also written in the language of their programmers, and without a good translation, will never make it to the rest of the world. Thanksfully, more and more programmers are aware of the language issue and take this need into account in their software.


As a programmer myself, I know it is hard to take this need into account. There are many different ways to internationalize your software, and they are all a bit broken in different ways. In general, the approach is to analyze the software, automatically extract any string that can be shown to the user and put them in one or more files. Then translators take these files, produce even more files for their language and have them merged into the original software project. Finally, at runtime, the software will decide which language to use and what files to read to get translated strings.

Depending on the method or library used to do the internationalization of the software, the files will have different formats. For instance, android applications use a strings.xml file to record every string in the application. Qt applications use another xml file with a very different format. Gettext uses its own format, and uses .po files. Many websites use either yaml or json files with not so standard ways of formating or reading them.

As a translator for a big project, you will probably encounter more than one format. If you translate more than one project, you will even more likely encounter many of these formats. Some like gettext format have great tools, others are very hard to work with. This is where the idea of a unified editor for every possible format came to mind.


Many programmers do not see a need for a dedicated platform for translators: they could simply send a patch on a mailing list, a pull request on github like we all do, no?

For a programmer, it is very natural to think that these are very simple, since they are part of their daily routine. However, a translator is not a programmer and does not have the same needs: they need to coordinate with others, harmonize between projects, and they don't always have a technical background.

To answer these needs, online collaborative platforms have emerged. They propose some ways to give feedback, to communicate between translators, or simplify the translation process for developpers and translators alike. Some of them are run by not-for-profit organisations, like pontoon by mozilla or the translation project by the FSF. Others are run by companies that do not always respect the core values of free software, and want to make profit.

An issue with these platforms is that they all have a different interface, they all have a different workflow. You need to create an account on each of them and in the end, you spend more time switching context or remembering which platform you need to go to for which project, than you spend on actually doing something useful. This is where the idea of an offline platform came to mind. But not simply a new platform: a platform to regroup all existing platform (translation and programming platforms alike) under this unified interface.

Offlate was born.