When you develop a piece of software or a website up to a certain point, there comes a time when you try to reach an international audience.

No doubt your first move will be to provide an English version of your software or website.

However, you will soon realize this is not enough. Of course, many people do understand English to some extent; but you have to realize how painful it can be for them. Maybe you don’t even realize how easily you can understand English compared to the average. Of course, if you are yourself a native English speaker, you need to try and imagine that every software you use comes in French or German by default! How would you feel about that? :P

Furthermore, you may have spent some time on making your software or website accessible. Users can now change the font size and enhance contrast if they have trouble reading those lines of funky rendered text… That’s fine… but what’s the use if their problem is not with the formatting but with the language!?

And you’d better believe that there are more people in the world having trouble with reading English, than there are having trouble with small text. Of course, quite a few have trouble with both… but you should realize that for the most part, when regarding an international audience, the absolute first step in making your work accessible is having it translated to different languages!

While you’re at it, be aware that there’s a little involved here, than just raw translation: you’ll also need to manage the differents ways people represent dates or numbers in different countries. For example, in the US, 01/02/03 would mean January 2nd, 2003 , while in France the same date would be read as February 1st, 2003. (Actually, the correct formatting for January 2nd in France would be 02.01.03). This can get tricky when your application is parsing a date provided by the user!

Translating the text messages + the date/number/etc. formats to a specific language/country is called localization. This is often abbreviated as l10n (there are 10 letters betwen the L and the N in LocalizatioN).

Now, imagine yourself localizing your application… err… how many languages could you handle? Probably no more than 1, 2, 3… 5 at most? You’ll definitely need help from other people… who will ideally translate from English to their mother tongue.

Now imagine those guys browsing through your source code and replacing English texts with localized texts. It seems reasonable to think that a non programmer can do it as long as you do the compiling in the end. But what if the program has to parse dates? The non programmer translator won’t change the cource code for this!

Even worse: what happens when you come up with new releases of your software or your website? You ask your translators to start all over again? How many versions do you think you can release before they get absolutely bored? :(

This is why you need to prepare your software or your website for localization (l10n). What you do is prepare your application for displaying differents languages and handling differents formats in a way to minimize the effort for the localizers. This preparation work is called internationalization, often abbreviated as i18n (as you probably have guessed, there are 18 letters between the I and the N ;) ).

The best i18n/l10n tools will manage things in a way that localizers only have to translate what has changed from each release to the next one. I’ll come back to this topic later…


Comments from long ago:

Comment from: Anubis

Actually, iso-8601 provide a way to display international date like this :

YYYY-MM-DD or YYYYMMDD :)

More Info

2003-08-17 22-44

Comment from: François PLANQUE

ISO dates are cool for writing SQL queries for example… they are also cool for international geeks to communicate without ambiguity… as the English language can be :b

However, they are not appropriate for user interfaces, because they just don’t feel natural to the majority.

2003-08-17 22-52

Comment from: fplanque: /dev/blog

Introducing gettext and .PO filesAs I said recently, i18n and l10n are best carried out using the right tools…

I’ve looked around somewhat and it turns out there seems to be an absolute reference in the area: the GNU gettext framework.

This framework actually comprehends seve…

2003-08-19 17-57

Comment from: fplanque: /dev/blog

Internationalizing web applications using gettext in PHPAs I have said before, gettext is a very interesting framework for i18n and i10n.

Now the question is, how do I apply this to web applications? Actually, I’m going to restrict my discussion here to PHP since this is what I’m working with right now…

2003-08-20 13-59

Comment from: asd

I wanted to create something like this

2005-12-02 04-26