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