In web-design as elsewhere, i18n is quite a pain: one has to actually think what one wants before going off and doing something.
For my web dictionary and its associated websites, there is one obvious requirement: the text on every page should be viewable in various languages.
There are interesting links on the net on how to approach this systematically: I have found the following particularly useful:
- the comments in W3C's q&a blog article Content Negotiation: why it is useful, and how to make it work
- the EURESCOM report Multi-lingual web sites: Best practice guidelines and architectures
When looking for a standard encoding of languages as strings, the three letter languages codes (ISO639-2) are quite enough (ISO-639-1 are the two-letter ones). Of course, despite the thing being a standard, there is some fun to be had with e.g. deu == ger.
Apart from deciding, which languages to support, there is also a user interface question, and for my website, I consider this the most important. In times of Google, content can also be found if your website has a lousy user interface, but since I am looking for something that is fun to use interactively, usability takes priority.
That is why I need to ask myself: how would one select between languages? I think the best is to go with a hybrid approach:
- have URIs of the shape domain/language-code/path and rewrite them to domain/path.language-code.extension (the dispatching described in the comments to the W3C article).
- additionally have a footer with links (view page in language1, ..., languageN)
Pages should not be very long, so that the footer is visible. For added fun, I can later go into having facebook's wall-to-wall (two pages displayed side-by-side) layout to see the same page in two different languages, for translation and language-learning.