Java

Supported Locales

The set of supported locales varies between different implementations of the Java 2 platform as well as between different areas of functionality.

This page documents locale support in Sun's Java 2 Software Development Kit, Standard Edition, v. 1.4 (J2SDK), and Java 2 Runtime Environment, Standard Edition, v. 1.4 (J2RE) in the following areas:

  1. Enabled Locales for java.util and java.text Functionality
  2. Enabled Writing Systems for Java Foundation Classes
    1. Overview
    2. Text Input
    3. Text Rendering
    4. Component Orientation
    5. Drag and Drop
  3. User Interface Translation


1. Enabled Locales for java.util and java.text Functionality

The support for locale-sensitive behavior in the java.util and java.text packages is almost entirely platform independent, so all locales are supported in the same way and simultaneously, independent of the host operating system and its localization. The only platform dependent functionality is the setting of the initial default locale and the initial default time zone based on the host operating system's locale and time zone.

Sun's Java 2 Software Development Kit, Standard Edition, v. 1.4 and the international version of the Java 2 Runtime Environment, Standard Edition, v. 1.4 support all locales shown below. The US-only version of the Java 2 Runtime Environment, Standard Edition, v. 1.4 supports only the English/United States locale.

Locales whose IDs end with "_EURO" are variant locales that use the Euro currency symbol. The corresponding locales without the "_EURO" extension use the old currencies until December 31, 2001, and the Euro starting from January 1, 2002.

Fully Supported Locales

Language

Country

Locale ID

Arabic

Saudi Arabia

ar_SA

Chinese (Simplified)

China

zh_CN

Chinese (Traditional)

Taiwan

zh_TW

Dutch

Netherlands

nl_NL

Dutch

Netherlands

nl_NL_EURO

English

Australia

en_AU

English

Canada

en_CA

English

United Kingdom

en_GB

English

United States

en_US

French

Canada

fr_CA

French

France

fr_FR

French

France

fr_FR_EURO

German

Germany

de_DE

German

Germany

de_DE_EURO

Hebrew

Israel

iw_IL

Hindi

India

hi_IN

Italian

Italy

it_IT

Italian

Italy

it_IT_EURO

Japanese

Japan

ja_JP

Korean

South Korea

ko_KR

Portuguese

Brazil

pt_BR

Spanish

Spain

es_ES

Spanish

Spain

es_ES_EURO

Swedish

Sweden

sv_SE

Thai

Thailand

th_TH

Also Provided, but not Tested

Language

Country

Locale ID

Albanian

Albania

sq_AL

Arabic

Algeria

ar_DZ

Arabic

Bahrain

ar_BH

Arabic

Egypt

ar_EG

Arabic

Iraq

ar_IQ

Arabic

Jordan

ar_JO

Arabic

Kuwait

ar_KW

Arabic

Lebanon

ar_LB

Arabic

Libya

ar_LY

Arabic

Morocco

ar_MA

Arabic

Oman

ar_OM

Arabic

Qatar

ar_QA

Arabic

Sudan

ar_SD

Arabic

Syria

ar_SY

Arabic

Tunisia

ar_TN

Arabic

United Arab Emirates

ar_AE

Arabic

Yemen

ar_YE

Bulgarian

Bulgaria

bg_BG

Belorussian

Belorussia

be_BY

Catalan

Spain

ca_ES

Catalan

Spain

ca_ES_EURO

Chinese

Hong Kong

zh_HK

Croatian

Croatia

hr_HR

Czech

Czech Republic

cs_CZ

Danish

Denmark

da_DK

Dutch

Belgium

nl_BE

Dutch

Belgium

nl_BE_EURO

English

India

en_IN

English

Ireland

en_IE

English

Ireland

en_IE_EURO

English

New Zealand

en_NZ

English

South Africa

en_ZA

Estonian

Estonia

et_EE

Finnish

Finland

fi_FI

Finnish

Finland

fi_FI_EURO

French

Belgium

fr_BE

French

Belgium

fr_BE_EURO

French

Luxembourg

fr_LU

French

Luxembourg

fr_LU_EURO

French

Switzerland

fr_CH

German

Austria

de_AT

German

Austria

de_AT_EURO

German

Luxembourg

de_LU

German

Luxembourg

de_LU_EURO

German

Switzerland

de_CH

Greek

Greece

el_GR

Greek

Greece

el_GR_EURO

Hungarian

Hungary

hu_HU

Icelandic

Iceland

is_IS

Italian

Switzerland

it_CH

Latvian

Latvia

lv_LV

Lithuanian

Lithuania

lt_LT

Macedonian

Macedonia

mk_MK

Norwegian (Bokmål)

Norway

no_NO

Norwegian (Nynorsk)

Norway

no_NO_NY

Polish

Poland

pl_PL

Portuguese

Portugal

pt_PT

Portuguese

Portugal

pt_PT_EURO

Romanian

Romania

ro_RO

Russian

Russia

ru_RU

Serbian (Cyrillic)

Yugoslavia

sr_YU

Serbo-Croatian

Yugoslavia

sh_YU

Slovak

Slovakia

sk_SK

Slovenian

Slovenia

sl_SI

Spanish

Argentina

es_AR

Spanish

Bolivia

es_BO

Spanish

Chile

es_CL

Spanish

Colombia

es_CO

Spanish

Costa Rica

es_CR

Spanish

Dominican Republic

es_DO

Spanish

Ecuador

es_EC

Spanish

El Salvador

es_SV

Spanish

Guatemala

es_GT

Spanish

Honduras

es_HN

Spanish

Mexico

es_MX

Spanish

Nicaragua

es_NI

Spanish

Panama

es_PA

Spanish

Paraguay

es_PY

Spanish

Peru

es_PE

Spanish

Puerto Rico

es_PR

Spanish

Uruguay

es_UY

Spanish

Venezuela

es_VE

Turkish

Turkey

tr_TR

Ukrainian

Ukraine

uk_UA


2. Enabled Writing Systems for Java Foundation Classes

2.1 Overview

For the Java Foundation Classes (AWT, Swing, 2D, input method framework, drag and drop), locales can generally be characterized by just the writing system; there are no country or language specific distinctions. Writing system support in the JFC depends to some extent on the host operating system, and full support for simultaneous use of multiple languages is not always possible.

We consider a writing system supported by JFC if all functionality provided by JFC works adequately for this writing system in the following situations:

Sun's Java 2 Software Development Kit, Standard Edition, v. 1.4 and the international version of the Java 2 Runtime Environment, Standard Edition, v. 1.4 support all writing systems shown below. The US-only version of the Java 2 Runtime Environment, Standard Edition, v. 1.4 supports only the Western European subset of the Latin writing system. Peered AWT components are only supported for a subset of the writing systems - see the last column.

Details on various areas of functionality are provided in the sections below.

Fully Supported Writing Systems

Writing System

Languages

Windows Code Page

Solaris Encodings

Linux Encodings

Peered AWT Components

Arabic

Arabic

1256

8859-6

unsupported

unsupported

Chinese (Simplified)

Chinese

936

gb2312, UTF-8, GBK, gb18030

GBK, gb2312

supported

Chinese (Traditional)

Chinese

950

cns11643, UTF-8, BIG5HK

unsupported

supported

Devanagari

Hindi

(1)

UTF-8

unsupported

unsupported

Hebrew

Hebrew

1255

8859-8

unsupported

unsupported

Japanese

Japanese

932

eucJP(2), UTF-8, PCK

eucJP(2)

supported

Korean

Korean

949

5601, UTF-8

unsupported

supported

Latin - Western European subset

English, French, German, Italian, Spanish, Swedish, etc.

1252

8859-1, 8859-15

8859-1

supported

Thai

Thai

874

TIS620.2533, UTF-8

unsupported

unsupported

(1) Requires input method implemented in the Java programming language as well as Lucida fonts.
(2) eucJP on Solaris supports the JIS character sets X 0201, X 0208, and X 0212; eucJP on Linux only X 0201 and X 0208.

 

Also Provided, but not Tested

Writing System

Languages

Windows Code Page

Solaris Encodings

Linux Encodings

Peered AWT Components

Chinese (Traditional)

Chinese

(see above)

BIG5 (additional)

unsupported

supported

Cyrillic

Belorussian, Russian etc.

1251

8859-5

unsupported

supported

Greek

Greek

1253

8859-7

unsupported

supported

Latin - Baltic subset

Latvian, Lithuanian

1257

8859-4, 8859-13

unsupported

supported

Latin - Central European subset

Czech, Hungarian, Polish, etc.

1250

8859-2

unsupported

supported

Latin - Turkic subset

Turkish etc.

1254

8859-9

unsupported

supported

2.2 Text Input

Support for text input consists of two parts: interpretation of keyboard layouts, and text composition using input methods. For interpretation of keyboard layouts, the Java 2 platform relies entirely on the host operating system. For text composition using input methods, Java 2 platform supports native input methods using the host operating system's input method manager as well as input methods developed in the Java programming language.

Locale support in input methods implemented in the Java programming language depends solely on the set of installed input methods, not on the host operating system and its localization. However, support for the use of input methods implemented in the Java programming language with peered components is implementation dependent - see below.

Support for keyboard layouts and and native input methods varies between platforms.

Windows

On Windows 95, 98, ME, and NT, the J2RE supports use of any keyboard layout or IMM-based input method that can be installed into a particular localized version of the host operating system.

On Windows 2000, the J2RE supports use of any keyboard layout using a non-Unicode code page and of any IMM-based input method.

Global IME is not supported.

Input methods implemented in the Java programming language are supported in all components on all versions of Windows.

Solaris and Linux

The J2RE supports use of any keyboard layout or input method that can be used with a particular Solaris locale.

Input methods implemented in the Java programming language are supported in lightweight components (such as Swing text components), but not in peered components (such as AWT text components).

2.3 Text Rendering

Applications have two options for selecting fonts:

Text Rendering in Lightweight Components

When using logical font names, text in at least the writing system of the host locale and the Western European subset of the Latin writing system is supported.

When using physical fonts, we need to distinguish between simple and complex writing systems. Simple writing systems have a one-to-one mapping from characters to glyphs, and glyphs are placed on the baseline continuously from left to right. Complex writing systems may use different glyphs for the same character based on context, may for ligatures, may be written from right to left, and may reorder glyphs during line layout, or may have other rules for placing glyphs (in particular for combining marks).

The 2D text rendering system supports any combination of simple writing systems and the complex writing systems listed in the table above. Within these limitations, the range of supported writing systems is determined by the font. A single TrueType font might provide glyphs covering the entire Unicode character set and a Unicode based character-to-glyph mapping. Given such a font, 2D can support all simple writing systems as well as the complex writing systems shown in the table above. Other complex writing systems are not supported.

Text Rendering in Peered Components

When using logical font names, text in the writing system of the host operating system's locale is supported.

Physical fonts are not supported in peered components.

Text Rendering in Printing

There are three separate printing APIs:

Text rendering using the AWT and 2D printing API works to the same extent as text rendering on the screen. Text rendering using the pluggable services printing API depends on the printing service used; these services are not provided by the J2RE.

2.4 Component Orientation

The component orientation property is respected only by Swing components and layout managers, not by peered AWT components. It is independent of the host operating system. The following classes support component orientation:

java.awt.BorderLayout
java.awt.FlowLayout
java.awt.GridBagLayout
javax.swing.BorderFactory
javax.swing.BoxLayout
javax.swing.JApplet
javax.swing.JButton
javax.swing.JCheckBox
javax.swing.JCheckBoxMenuItem
javax.swing.JColorChooser
javax.swing.JComboBox
javax.swing.JDesktopPane
javax.swing.JDialog
javax.swing.JEditorPane
javax.swing.JFileChooser

javax.swing.JFrame
javax.swing.JInternalFrame
javax.swing.JLabel
javax.swing.JLayeredPane
javax.swing.JListBox
javax.swing.JMenu
javax.swing.JMenuBar
javax.swing.JMenuItem
javax.swing.JOptionPane
javax.swing.JPanel
javax.swing.JPasswordField
javax.swing.JPopupMenu
javax.swing.JProgressBar
javax.swing.JRadioButton

javax.swing.JRadioButtonMenuItem
javax.swing.JRootPane
javax.swing.JScrollPane
javax.swing.JSlider
javax.swing.JTabbedPane
javax.swing.JTextArea
javax.swing.JTextField
javax.swing.JTextPane
javax.swing.JToggleButton
javax.swing.JToolBar
javax.swing.JToolTip
javax.swing.JTree
javax.swing.ProgressMonitor
javax.swing.border.Border

2.5 Drag and Drop

On Windows 95, 98, and ME, text in the writing system of the host operating system's localization can be transferred between applications.

On Windows NT and 2000, arbitrary Unicode text can be transferred between applications.

On Solaris and Linux, text in the character encoding of the host operating system's locale can be transferred between applications.

Applications that need to transfer arbitrary Unicode text independent of the host operating system, can do so using serialization: Create a Transferable which supports only one flavor: DataFlavor.stringFlavor. This flavor represents the serialized representation of a String. Make sure that the target supports stringFlavor as well. When the transfer occurs, the AWT will serialize out the String on one end and deserialize on the other. This is much slower than a native platform text transfer, but it will succeed where native transfers may not.


3. User Interface Translation

Java 2 Runtime Environment

The user interface elements provided by the Java 2 Runtime Environment, Standard Edition, v. 1.4, include Swing dialogs, messages written by the runtime environment to the standard output and standard error streams, as well as messages produced by the tools provided with the J2RE. These user interface elements are localized into the following languages:

Language

Locale ID

Chinese (Simplified)

zh_CN

Chinese (Traditional)

zh_TW

English

en

French

fr

German

de

Italian

it

Japanese

ja

Korean

ko

Spanish

es

Swedish

sv

Java 2 Software Development Kit

The user interface elements provided by the Java 2 Software Development Kit, Standard Edition, v. 1.4, include messages produced by the tools that are only part of the J2SDK in addition to the elements provided by the J2RE. The additional user interface elements are localized into the following languages:

Language

Locale ID

English

en

Japanese

ja


Copyright © 2002 Sun Microsystems, Inc. All Rights Reserved.

Please send comments to: java-intl@java.sun.com

Sun
Java Software