Why are you using this 3-letter code for Translations?
======================================================

Sine the Release 0.3.2 elisa is based on a gnu gettext compatible python
implementation for the translations. It is the translation system fluendo is
also using for Flumotion [1]. This system is internally using the python
gettext implementation. For the maximal possibilities we've decided to use
the 3-letter-language codes as specified in ISO-639-3 [2]. This document is
meant to explain you, why we did this decision.


Why 3-letter and not the 2-letter one?
--------------------------------------

There are a lot of different ways of language coding out there. There is the
simple 2-letter-code, like described in ISO-639-1, there is also the
lang_territory code, which is often used on posix system for the LANG
enviroment variable. Then there is also the 3-letter extension for the
2-letter code (as described in ISO-639-2) and there are other out there.

We know them. We took a look at them. And we've decided to the young
ISO-639 part 3 for one simple reason: it is the biggest one. This standart
as the only one of all you might can think of has about 6900 entries. The
idea of this ISO was to have a code for nearly every language on earth. Not
only the makro-languages (like german or english) but also any kind of
dialects and 'sublanguages' (a language depending or enhancing another one).
For example this ISO contains a code for prussian, an very old german dialect
which is a lot mixed with polish elements. I think you think of other dialects
or absolute different languages near where you live.


But why not the lang_territory one?
-----------------------------------

For a lot of cases the lang_territory one is very clear and good to use. For
example to decide between UK and USA english or the austria and the german
german. But what about languages without a strict territory? Prussia is not
existing anymore and does not have any border, the same for bavarian for
example.


I don't get it. Why do you want to have prussian translations?
--------------------------------------------------------------

The prussian translation is only one example. There are also a lot of more new
language codes. For example the veneto, a special dialect of the italan
language. The reason, why we want to have that is really easy. This program is
not only for some administrators, who speak one of the common languages (for
the most it is not even important if the UK or the USA english is used), this
program is made for all the people out there. Let me give you a nice example:

In our usecases and as well in our translations, we are always thinking about
'my grandmother'. A person that is not able to play a dvd with her 1 year old
dvd player. One of the biggest problems she has with this player is that he
speaking another language than she does. She speaks german, polish and
prussian but asked me one day, what the player means, when he is 'loading'. In
that case it would be enough to have a german translation for her, but she
would absolutly love the system, if it would speak to her in prussian, what
she had spoken before the 2nd world war in her childhood. That is an absolut
killer feature.

At this time, we don't have a prussian translation yet, but the system we
wanted to use should be able so that the community would at least be able to
make that translation(s).


But it is impossible to ship 6900 languages!
--------------------------------------------

Yes, you're right. 

I thought some time, if would leave it to this or should explain, how we
solved this problem. I think it is better to explain the solution.
Elisa is plugin based. For the not that common language, we thought about a
translation-only plugin. Again the prussian example: we wouldn't ship the
translations directly in elisa. But there could be a translation-plugin for
it. 

But because not all translation-plugin are going to have a translation for
each other plugin, we made a fall-back-system. The idea is, that there some
language, 'my grandmother' is able to speak, but english (the ulitmate
fallback) is not one of them. So for 'my granny' I would set the
language-option of elisa to ['prg', 'deu', 'pol']. If none of them is found,
the fallback is again english.


Where can I find the code for my language?
------------------------------------------

Even if the standart is quiet young, it is very good supported. Just take a
look at this: http://www.sil.org/iso639-3/codes.asp


My dialect is not listed!
-------------------------

I'm sorry, but if your code is not listed, the standart is already missing it.
But before to complain about that the bad ISO please think about that: the
ISO-639-3 is made for written dialects only. It does not contain dialects that
only speak the same word in a different way. I mean think about it: that kind
of dialect is not needed for elisa ;) .




References
----------

[1] http://www.flumotion.net/

[2] http://en.wikipedia.org/wiki/ISO_639-3
