| Preface | p. ix |
| Introduction to Internationalization | p. 1 |
| What Are Software Internationalization, Localization, and Globalization? | p. 1 |
| Why Choose Java for International Applications? | p. 10 |
| What is a Locale? | p. 12 |
| A Simple Application | p. 13 |
| Writing Systems | p. 17 |
| Ancient Writing Systems | p. 17 |
| Far East Writing Systems | p. 22 |
| Bidirectional Scripts | p. 31 |
| Greek, Latin, and Cyrillic | p. 36 |
| Indic Scripts | p. 43 |
| Thai Script | p. 44 |
| Punctuation | p. 46 |
| Locales | p. 49 |
| Defining a Locale | p. 49 |
| Working with the Locale Class | p. 50 |
| Querying for Locale Information | p. 56 |
| Checking Available Locales | p. 61 |
| Isolating Locale-Specific Data with Resource Bundles | p. 63 |
| Why Use Resource Bundles? | p. 63 |
| The ResourceBundle Class | p. 64 |
| How Resource Bundles Are Discovered and Named | p. 67 |
| Property Resource Bundles | p. 74 |
| List Resource Bundles | p. 75 |
| Resource Bundle Caveats | p. 82 |
| Deploying Resource Bundles with Applets | p. 88 |
| Design Considerations for Resource Bundles | p. 90 |
| Formatting Messages | p. 93 |
| Date and Time Formats | p. 93 |
| Number Formats | p. 116 |
| Message Formats | p. 128 |
| Character Sets and Unicode | p. 139 |
| What Are Character Sets? | p. 139 |
| What Are Encoding Methods? | p. 143 |
| What Is Unicode? | p. 145 |
| Unicode Encoding Methods | p. 161 |
| Code Set Conversion | p. 162 |
| Searching, Sorting, and Text Boundary Detection | p. 171 |
| Collation Issues | p. 171 |
| Sorting in Java | p. 174 |
| Tailoring Collation | p. 181 |
| Improving Performance | p. 187 |
| Searching | p. 189 |
| Detecting Text Boundaries | p. 193 |
| Fonts and Text Rendering | p. 199 |
| Characters, Glyphs, and Fonts | p. 200 |
| Java's Font-Related Classes | p. 203 |
| Components for Rendering Complex Text | p. 207 |
| True Type Font Support in Java | p. 216 |
| Working with the font.properties File | p. 219 |
| Adding New Fonts to Your System | p. 229 |
| Internationalized Graphical User Interfaces | p. 233 |
| General Issues | p. 233 |
| Component Orientation | p. 243 |
| Internationalization and Localization Caveats for Various Components | p. 249 |
| Using a Layout Manager | p. 260 |
| Copying, Cutting, and Pasting International Text | p. 262 |
| A Simple Example | p. 268 |
| Input Methods | p. 281 |
| What Are Input Methods? | p. 281 |
| What Is the Java Input Method Framework? | p. 283 |
| Selecting Input Methods | p. 285 |
| Using the Input Method Engine SPI | p. 285 |
| Developing a Simple Input Method | p. 290 |
| How to Package and Install Input Methods | p. 296 |
| Developing a More Complex Input Method | p. 298 |
| Internationalized Web Applications | p. 317 |
| Applets | p. 318 |
| Servlets | p. 321 |
| JavaServer Pages | p. 334 |
| Future Enhancements to the Internationalization Support in Java | p. 351 |
| Unicode 3.0 Support | p. 351 |
| Enhanced Complex Text | p. 354 |
| Character Converter Framework | p. 355 |
| Improving the Input Method Framework | p. 356 |
| Language and Country Codes | p. 357 |
| Character Encodings Supported by Java | p. 367 |
| Unicode Character Blocks | p. 373 |
| Programmer's Quick Reference | p. 377 |
| Internationalization Enhancements Across Versions of the JDK | p. 415 |
| Glossary | p. 421 |
| Bibliography | p. 427 |
| Index | p. 433 |
| Table of Contents provided by Syndetics. All Rights Reserved. |