Internationalization(i18n) Localization(L10n)


i18n - Internationatioanlization
l10n - Localization

Making your Software ready for Locanguage specifica Translation is called Internationalization(i18n)

Translating the Strings/Messages to particular Language(German,Italian,Japanese) is called Localization(l10n)

i18n Check-List

1.Isolating Hard Coded Messages (ex: Error Messages, Log Messages …) from the Source Code.

C++
Windows : ResourceDll
UNIX : Message Catalogue

Java : Resource Bundle (Property Files)

.NET : ResourceManager(System.Resources.ResourceManager) , Satelite Assemblies

2. Format DATE, TIME, NUMBERS & CURRENCIES accordingly

3. String Comparisons:

Normal String Functions (ex: strcmp () in C++) do Binary Comparisons of Strings. As UNICODE needs 2 Bytes Binary Comparison does not work. We need to use Collator Functions

C++ : strcoll ()
Java : Collator Class

4. Converting Non-Unicode Text to Unicode text

C++
Windows : MultiByteToWideChar (), WideCharToMultiByte ()
UNIX : Mbstowcs (), Wcstombs ()

Java : GetBytes ()

What is the difference between Stateful and Stateless encoding?

In stateful encoding, the data stream has special sign (i.e. escape sequence or shift-in shift-out). For example, ISO-2022-JP is a stateful encoding.

In ISO-2022-JP data stream, if we have Kanji character in the stream, it must at least 2 ‘ESC’ character. So you have to seek the stream from the beginning of it.

ISO-2022-JP is used for e-mail message in Japanese environment. All most of your development, I think you don’t need to consider about it.


Links:

Java Code Internationalization checklist - http://java.sun.com/docs/books/tutorial/i18n/intro/checklist.html

.NET Localization - http://www.ondotnet.com/pub/a/dotnet/2002/09/30/manager.html

How To Create Localized Resource DLLs for MFC Application -http://support.microsoft.com/kb/198846

UTF-8, UTF-16, UTF-32 & BOM - http://unicode.org/faq/utf_bom.html