It took me ages to understand the fundamentals of internationalization,
(man-) language interoperability etc. In fact, only after working on
MFC software over a year I encountered a problem so fundamentally
accute I couldn't for the life of me figure it out, and it took a
bitchslap from my friend Ilya (Konstantinov) to make me halt and figure
the problem out properly.
Internationalization is hard. Perhaps its hardest aspect is
support for the various languages; each language has its own character
set, and although most widely-used languages derive from the basic
latin alphabet there are still subtle differences. German makes
extensive use of accented characters (é and ü for example); Czech makes
use of the relatively unknown caron (č) and that's just the tip of the
iceberg. Imagine the thoroughly different requirements of Arabic and
Hebrew: complex script languages that are not only written
right-to-left, but employ a completely seperate alphabet with different
requirements. For example, did you know there are two ways to write
several letters in the Hebrew alphabet, depending on their location
(middle or end of a word), but those versions of the same letter have
the same semanthics? Or maybe you've run into the latin letter Eth (Ð),
which to my knowledge only exists today in Icelandic?
Finally, to the point: if you've ever received an e-mail with
question marks instead of words, entered a website in your native
language but got gibberish instead or perhaps (for the more astute)
wondered how it is possible to display text from so many different
languages on one document (web site...), you're not alone. Most
programmers are completely unaware of these fundamental issues, and
cause massive headaches to users and fellow programmers alike. I've
come across an article Joel Spolsky wrote
back in 2003 with an absurdly long name; no matter: finally someone
(certainly with more credability than myself) has taken it upon himself
to write a thorough introduction to the subject for people - developers
in particular, but the technically savvy among you might also be
entertained - who do not realize its importance. Please, please please go and read it before you go on with your daily lives.