This chapter provides information and guidance on troubleshooting issues that might be found in the area of internationalization support. For detailed information, visit the Java Internationalization site.
Before troubleshooting, make sure that you understand the difference between internationalization and localization:
Internationalization is the process of designing software so that it can be adapted (localized) to various languages and regions easily, in a cost-effective way, and without changes to the software. This process generally involves isolating the parts of a program that are dependent on language and culture. For example, the text of error messages are kept separate from program source code because the messages must be translated during localization.
Localization is the process of adapting a program for use in a specific locale. A locale is a geographic or political region that shares the same language and customs. Localization includes the translation of text such as user interface labels, error messages, and online help. It also includes the culture-specific formatting of data items such as monetary values, times, dates, and numbers.
The user interface libraries in the Java SE platform enable the development of rich interactive applications. The internationalization aspects include text input, text display, and user interface layout. The following descriptions show the relationship between internationalization and the functionality provided by the AWT, Java 2D, and Swing APIs:
Text input is the process of entering new text into a document, whether by typing on a keyboard or through front-end software such as input methods, handwriting recognition, or speech input.
Text display is a multistep process that includes selecting a font, arranging text into paragraphs and lines, selecting glyphs for characters or character sequences, and rendering these glyphs. Some writing systems require bidirectional text layout or complex character-to-glyph mappings. Text display is handled by the Java 2D graphics system and the Swing toolkit for lightweight user interface components and by AWT for peered user interface components.
User interface layout needs to accommodate text expansion or shrinkage caused by localization, and match the direction of the user's writing system.
The Java Internationalization FAQ document answers general questions, as well as specific questions such as the following:
Why doesn't my application display any Chinese, Japanese, or Korean characters even though I have fonts for these languages installed?
Why can I see some characters in Swing components, but not in peered AWT components?
Why can't my application display all Unicode characters even though I have a Unicode font installed?
Why does the response character encoding in my JSP-based application change after I set it?