Internationalizing XWiki Enterprise

Feb 17 2009

I've been spending the last couple weeks completing the internationalization XWiki Enterprise, our flagship product. This is an oft-requested feature from our customers and users and I took the opportunity to work on it in order to have it ready for our upcoming XWiki Enterprise 1.8 release.

Getting internationalization right is important because it allows your users to experience the software in their native language. It's easier for them to interact with the features when they are described in the language they're used to, meaning that overall you've made people happier than before.

XWiki Enterprise has long offered an interface available in more than 10 different languages. However, a number of interface items had remained hardcoded and hard to translate up to today. I've tackled the admittedly boring task of updating the source code of every page, replacing hardcoded messages with internationalization keys. I'm approximately 80% done as of right now and taking the opportunity to blog about it to freshen my thoughts prior to the final run.

What does it mean in practice? Internationalization is about replacing hardcoded text messages with specific keys. The keys are then listed in a specific file (one per language) and their translation is printed in front of them. Here's an example:

1) Original wiki page

1.1 Nice day

I am having such a nice day, this country trip is gonna be great!

2a) Internationalized wiki page

1.1 $msg.get("nice.day")

$msg.get("nice.day.description")

2b) English language resource file

nice.day=Nice day
nice.day.description=I am having such a nice day, this country trip is gonna be great!

2c) French language resource file

nice.day=Petit patapon
nice.day.description=Le petit patapon est un fripon

Fluent french speakers will have noticed the discrepancy between both language resource files. That's one of the potential issues associated with internationalization. However the benefits of having a fully translated app usually outweight the issues associated with keeping all languages files synchronized.

What's more, Ludovic, our founder, coded an online application that lets users contribute missing translations in the language of their choice. The application can be accessed here. Come and contribute to making XWiki the most internationalized wiki!