Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a Way to localize an Application on Various Platforms

We are developing an Application which runs on various plattforms (Windows, Windows RT, MacOSX, iOS, Android).

The Problem is how to manage the different localizations on the different Platforms in an Easy Way. The Language Files on the different platforms have various formats (some are xml based, others are simple key-value pairs and others are totally crazy formats like on MacOS)

I'm sure, we aren't the first company with this problem, but I wasn't able to find an easy to use solution o achive the possibility to have one "datasource" where the strings are collected in different languages (the best would be an User Interface for the translators) and then can export it to the different formats for the different platforms.

Does anybody has a solution for this problem?

Greetings Alexander

like image 298
Alexander Kiefer Avatar asked Jan 24 '13 13:01

Alexander Kiefer


2 Answers

I recommend using GNU Gettext toolchain for management and at runtime use either

  • some alternate implementation for runtime reading like Boost.Locale,
  • own implementation (the .mo format is pretty trivial) or
  • use Translate Toolkit to convert the message catalogs to some other format of your liking.

You can't use the libintl component of GNU Gettext, because it is licensed under LGPL and terms of both Apple AppStore and Windows Live Store are incompatible with that license. But it is really trivial to reimplement the bit you need at runtime.

The Translate Toolkit actually reimplements all or most of GNU Gettext and supports many additional localization formats, but the Gettext .po format has most free tools for it (e.g. poedit for local editing and Weblate for online editing) so I recommend sticking with it anyway. And read the GNU Gettext manual, it describes the intended process and rationale behind it well.

I have quite good experience with the toolchain. The Translate Toolkit is easy to script when you need some special processing like extracting translatable strings from your custom resource files and Weblate is easy to use for your translators, especially when you rely on business partners and testers in various countries for most translations like we do.

Translate Toolkit also supports extracting translatable strings from HTML, so the same process can be used for translating your web site.

like image 100
Jan Hudec Avatar answered Oct 01 '22 12:10

Jan Hudec


I did a project for iPhone and Android which had many translations and I think I have exactly the solution you're looking for.

The way I solved it was to put all translation texts in an Excel spreadsheet and use a VBA macro to generate the .string and .xml translation files from there. You can download my example Excel sheet plus VBA macro here:

http://members.home.nl/bas.de.reuver/files/multilanguage.zip

Just recently I've also added preliminary Visual Studio .resx output, although that's untested.

edit: btw also my javascript xcode/eclipse converter might be of use..

like image 22
BdR Avatar answered Oct 01 '22 12:10

BdR