We live in a truly global world.
All over the globe, people are logging on and logging in from their respective countries. It makes sense that people want to use the web to reach out to a global audience.
So much so that the W3C project recently released its internationalization checker, so you can check how well your site “internationalizes.” But what is internationalization, how does it relate to localization and why do you need to know them?
i18n and L10n
Well, let’s start with the basics. Internationalization (also known in various circles as i18n -- the 18 denoting the number of missing letters from the middle of the word) is designing a site, a piece of software or an application that can be adapted for many different cultures. It is a process that is generally only performed once during the creation process. In a sense it’s sort of a one-size-fits-all solution that paves a neat path towards...
...Localization (often abbreviated to L10n... the same rules apply), which is the actual adaptation of your design, interface, software, etc. for a particular area or culture. This includes translating the text into other languages, making sure pictures are culturally acceptable and removing references that may not be relevant. Where internationalization is a process that is done only once, localization is performed each time you want to target a particular culture/language set.
To internationalize, you need to be one step ahead. What features might you want to implement in the future? Even if you haven’t even thought about breaking into China or India yet, these are both up-and-coming countries with languages that are non-Latin script. Unicode is pretty much essential these days and can support all manner of scripts, languages and characters for when the time comes.
And this also involves the ways in which languages are read. Some scripts, like Hebrew or Farsi are read from right to left, which will affect all of your text, text entry controls and scroll bars. You can add markup in your DTD which will support bidirectional text (and thankfully Unicode automatically supports it too).
To this end, separating specific elements from your source code that you may need to localize later is certainly a must. By isolating these localizable elements, you can ensure that when you change these, the rest of the code remains untouched. Examples here might involve date and time formats or name and address inputs.