On the Internet, there are almost no barriers against international commerce. Except for language. Unfortunately, most software is still written in English. This text shows how to write software that is truly multi-lingual, using Java's very sophisticated internationalization facilities. English-only software is already obsolete. This text explores Java Unicode and provides concrete examples for using its features to create multi-lingual user interfaces, to correctly format currency, dates and times, and to ensure font support for different languages.
David Czarnecki is a Computer Scientist in the Information Laboratory at the GE Corporate Research and Development Center in Niskayuna, NY. He is involved with various e-commerce initiatives and projects, and in recent months has become increasingly involved in providing expertise on how to properly internationalize software. David holds both B.S and M.S. degrees in Computer Science. Andy Deitsch is a software engineer who manages an e-business group at GE's Corporate Research and Development Center. Andy was fortunate enough to be involved in the beta release of Java in 1995 and has been programming in the language ever since. The inspiration for this book came from his efforts to use Java effectively to build internationalized applications and his frustrations in not finding any books related to this important topic.
Preface. 1. Introduction to Internationalization What Are Software Internationalization, Localization, and Globalization? Why Choose Java for International Applications? What is a Locale? A Simple Application. 2. Writing Systems Ancient Writing Systems Far East Writing Systems Bidirectional Scripts Greek, Latin, and Cyrillic Indic Scripts Thai Script Punctuation. 3. Locales Defining a Locale Working with the Locale Class Querying for Locale Information Checking Available Locales. 4. Isolating Locale-Specific Data with Resource Bundles Why Use Resource Bundles? The ResourceBundle Class How Resource Bundles Are Discovered and Named Property Resource Bundles List Resource Bundles Resource Bundle Caveats Deploying Resource Bundles with Applets Design Considerations for Resource Bundles. 5. Formatting Messages Date and Time Formats Number Formats Message Formats. 6. Character Sets and Unicode What Are Character Sets? What Are Encoding Methods? What Is Unicode? Unicode Encoding Methods Code Set Conversion. 7. Searching, Sorting, and Text Boundary Detection Collation Issues Sorting in Java Tailoring Collation Improving Performance Searching Detecting Text Boundaries. 8. Fonts and Text Rendering Characters, Glyphs, and Fonts Java's Font-Related Classes Components for Rendering Complex Text TrueType Font Support in Java Working with the font.properties File Adding New Fonts to Your System. 9. Internationalized Graphical User Interfaces General Issues Component Orientation Internationalization and Localization Caveats for Various Components Using a Layout Manager Copying, Cutting, and Pasting International Text A Simple Example. 10. Input Methods What Are Input Methods? What Is the Java Input Method Framework? Selecting Input Methods Using the Input Method Engine SPI Developing a Simple Input Method How to Package and Install Input Methods Developing a More Complex Input Method. 11. Internationalized Web Applications Applets Servlets JavaServer Pages 12. Future Enhancements to the Internationalization Support in Java Unicode 3.0 Support Enhanced Complex Text Character Converter Framework Improving the Input Method Framework A. Language and Country Codes. B. Character Encodings Supported by Java C. Unicode Character Blocks D. Programmer's Quick Reference E. Internationalization Enhancements Across Versions of the JDK Glossary Bibliography Index