Tutorials : Avoid the Lesser Known Pitfalls of Localizing Java Applications :

Java Platform API Behavior

Be prepared for bugs specific to localized versions of the J2SE platform. Well, "bugs" isn't really the right word—just be prepared to modify your software, because J2SE API behavior depends on the current locale.


Figure 2. Japanese Text Layout: The last character of the label gets replaced with "..." even though there is enough space for it.

For an example, on a Japanese Windows PC, the JLabel rendering code may sometimes reduce the end of the label string to "..." even if there is enough space to display the entire string. The problem resolves easily, by playing with layout managers. But it requires changes in the code.

Another well known example is the uppercase "i" problem in Turkish Java, explained in detail in this JDJ article. In the Turkish alphabet, there are two letters for "i," dotless and dotted. In J2SE 1.4, the dotted "i" in lowercase becomes the dotted "I" in uppercase.

Even if you are not going to create localized versions of your English software, try running it with non-English locales set as default and watch out for surprises. For instance, JavaHelp displays localized tooltips according to the default locale. This can be switched off, but you wouldn't know about the problem if you didn't run the application in a non-English environment.

The Turkish "i" problem: If the default locale on your PC is Turkish:

"windows".toUpperCase().equals("WINDOWS") == false
Click here to learn more. .

Pre-localized APIs

Even if you are not going to create localized versions of your English software, try running it with non-English locales set as default and watch out for surprises. For instance, JavaHelp displays localized tooltips according to the default locale. This can be switched off, but you wouldn't know about the problem if you didn't run the application in a non-English environment.


Figure 3. The Localized Tooltip in JavaHelp

Was It All Worth It?

Localization of Java desktop applications requires solving a series of small problems originating from different aspects of the J2SE API. These problems are somewhat unexpected, but easy to solve.

Does all this work pay off? Well, like anything else, it depends on your situation. My company had only a handful of sales of the English version to Japan, whereas in 2004 Japanese customers have accounted for about 10% of our net sales. It took dozens of person-years to create the product, so its internationalization was a minor effort. However, it would have required much less resources if we thought about it before coding.

Having said that, the work can be quite fun. Have you ever tried to set up a Japanese Linux box? If not, try to guess in what language it prints all error messages...

More Resources

Home / Articles / Avoid the Lesser Known Pitfalls of Localizing Java Applications / 1 / 2 / 3

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.