The Internationalization and Localization Group

This group specializes in the Internationalization and Localization components

The Internationalization Libraries Group

The internationalization group is a set of developers interested in the design, implementation, and maintanence of the Java internationalization libraries.

Introduction

Internationalization (abreviated "i18n") is the process of designing software so that it can be adapted (localized) to various languages and regions easily, cost-effectively, and in particular without engineering changes to the software. Localization is performed by simply adding locale-specific components, such as translated text, data describing locale-specific behavior, fonts and input methods.

Source Structure

Source for the internationalization libraries is found throughout the JDK workspace. Typically, directories under src/share/classes/java contain the classes and interfaces of the public APIs. Often the implementations of these APIs reside in the corresponding src/share/classes/sun directories. Source that is platform dependent (e.g., input methods) may also reside under the src/[solaris|windows] directories.

Here are some of the locations of the core internationalization libraries.

Building and Rebuilding

After building the whole JDK tree, output class files will be generated under the corresponding directories under build/classes directory. Some of the locale data will be incorporated in the build/lib/ext/localedata.jar file. To rebuild the internationalization library sources, you may want to run gnumake in the following directories:

Documentation

Community

The Localization Group

The localization group is comprised of developers and translators interested in localizing JRE and JDK into various languages.

Activities include contributing translation or linguistic review, validating and providing locale data, providing other locale-specific features into Java, or maintaining/bug fixing existing localization bugs.

Introduction

Until Java 6, user interface provided in both JRE and JDK have been localized into following languages.

Language JRE JDK
Chinese (Simplified) O O
Chinese (Traditional) O
English O O
French O
German O
Italian O
Japanese O O
Korean O
Spanish O
Swedish O

JRE includes user interface elements such as Swing dialogs, runtime messages, and tools messages. JDK includes user interface elements for additional tools such as compiler, JConsole, javadoc, demos, etc.

Source Files

Localization resource files are distributed throughout the JDK workspace. They are usually located in the resources directories for each component.

Below are some of the locations of the localizable resource files.

rt.jar (jre)
j2se/src/share/classes/sun/awt/resources/awt.properties
j2se/src/share/classes/sun/print/resources/serviceui.properties
j2se/src/share/classes/com/sun/swing/internal/plaf/metal/resources/metal.properties
j2se/src/share/classes/com/sun/swing/internal/plaf/basic/resources/basic.properties
j2se/src/share/classes/com/sun/java/swing/plaf/motif/resources/motif.properties
j2se/src/share/classes/com/sun/java/swing/plaf/windows/resources/windows.properties
j2se/src/share/classes/com/sun/java/swing/plaf/gtk/resources/gtk.properties
j2se/src/share/classes/com/sun/accessibility/internal/resources/accessibility.properties
j2se/src/share/classes/sun/security/util/AuthResources.java
j2se/src/share/classes/sun/security/util/Resources.java
j2se/src/share/classes/sun/tools/jar/resources/jar.properties (also in tools.jar)
j2se/src/share/classes/sun/applet/resources/MsgAppletViewer.java (also in tools.jar)
j2se/src/share/classes/sun/util/logging/resources/logging.properties
j2se/src/share/classes/sun/misc/resources/Messages.java
j2se/src/share/classes/com/sun/org/apache/xalan/internal/res/XSLTErrorResources.java
j2se/src/share/classes/com/sun/org/apache/xml/internal/res/XMLErrorResources.java
j2se/src/share/classes/com/sun/org/apache/xml/internal/utils/res/XResources_en.java
j2se/src/share/classes/com/sun/org/apache/xpath/internal/res/XPATHErrorResources.java
j2se/src/share/classes/sun/management/resources/agent.properties

compiled into windows native code
j2se/src/windows/classes/sun/awt/windows/awtLocalization.properties

localedata.jar (jre)
j2se/src/share/classes/sun/util/resources/LocaleNames.properties
j2se/src/share/classes/sun/util/resources/TimeZoneNames.java
j2se/src/share/classes/sun/util/resources/CalendarData.properties
j2se/src/share/classes/sun/util/resources/CurrencyNames.properties
j2se/src/share/classes/sun/text/resources/CollationData.java
j2se/src/share/classes/sun/text/resources/FormatData.java

indicim.jar (jre)
j2se/src/share/classes/com/sun/inputmethods/internal/indicim/resources/DisplayNames.properties

thaiim.jar (jre)
j2se/src/share/classes/com/sun/inputmethods/internal/thaiim/resources/DisplayNames.properties

resources.jar (jre)
j2se/src/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb.properties
j2se/src/share/classes/com/sun/rowset/RowSetResourceBundle.properties
j2se/src/share/classes/sun/rmi/registry/resources/rmiregistry.properties
j2se/src/share/classes/sun/rmi/server/resources/rmid.properties

jconsole.jar (sdk)
j2se/src/share/classes/sun/tools/jconsole/resources/JConsoleResources.java

tools.jar (sdk)
j2se/src/share/classes/sun/tools/jar/resources/jar.properties
j2se/src/share/classes/sun/tools/javac/resources/javac.properties
j2se/src/share/classes/com/sun/tools/javac/resources/javac.properties
j2se/src/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii.java
j2se/src/share/classes/sun/tools/serialver/serialver.properties
j2se/src/share/classes/sun/security/tools/JarSignerResources.java
j2se/src/share/classes/sun/rmi/rmic/resources/rmic.properties
j2se/src/share/classes/sun/applet/resources/MsgAppletViewer.java
j2se/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets.properties
j2se/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties
j2se/src/share/classes/com/sun/tools/example/debug/tty/TTYResources.java
j2se/src/share/classes/com/sun/tools/javac/resources/compiler.properties
j2se/src/share/classes/com/sun/tools/javadoc/resources/javadoc.properties
j2se/src/share/classes/com/sun/tools/apt/resources/apt.properties
j2se/src/share/classes/com/sun/tools/javah/resources/l10n.properties
j2se/src/share/classes/com/sun/tools/corba/se/idl/toJavaPortable/toJavaPortable.prp
j2se/src/share/classes/com/sun/tools/corba/se/idl/idl.prp
j2se/src/share/classes/com/sun/tools/jdi/resources/jdi.properties

demos (sdk)
j2se/src/share/demo/jfc/CodePointIM/resources/codepoint.properties
j2se/src/share/demo/jfc/CodePointIM/README.html
j2se/src/share/demo/jfc/Font2DTest/resources/TextResources.properties
j2se/src/share/demo/jfc/Notepad/resources/Notepad.properties
j2se/src/share/demo/jfc/Stylepad/resources/Stylepad.properties
j2se/src/share/demo/jfc/SwingSet2/resources/swingset.properties

doc (sdk)
j2se/src/share/doc/jdk/README.html

Update makefile

To include the localized resource file in JRE and JDK bundle, corresponding makefiles need to be updated.

Include locale in JRE
update make/common/Defs.gmk in j2se workspace, which means update j2se/make/common/Defs.gmk

in following two lines, add the locale you are going to localize.

J2RE_LOCALES = de es fr it ja ko sv zh_CN zh_TW zh_HK
PLUGIN_LOCALES = de es fr it ja ko sv zh_CN zh_TW zh_HK

For example, if you are going to localize JRE into thai, then
J2RE_LOCALES = de es fr it ja ko sv th zh_CN zh_TW zh_HK
PLUGIN_LOCALES = de es fr it ja ko sv th zh_CN zh_TW zh_HK

update make/common/Defs.gmk in deploy workspace.
In follwoing line, add the locale you are goingto localize
PLUGIN_LOCALES = de es fr it ja ko sv zh_CN zh_TW zh_HK

Include locale in JDK
update make/common/Defs.gmk in j2se workspace
in following line, add the locale you are going to localize.

J2SDK_LOCALES = ja zh_CN

Notes: It's not mentioned how to include locale in install ws, to localize the installshield of JRE and JDK in windows. It's related with many changes, and will be described later.

Building and Rebuilding

After building the whole JDK tree, the localization related resource files can be found in various jar files such as rt.jar, localdata.jar, tools.jar, jconsole.jar, resources.jar, indicim.jar, thaiim.jar, etc.

Additional Localization Projects

You may also be interested in participating in the following localization projects:

Community