| # 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.3.1 (J2SDK), and Java 2 Runtime Environment, Standard Edition, v. 1.3.1 (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.3.1 and the international version of the Java 2 Runtime Environment, Standard Edition, v. 1.3.1 support all locales shown below. The US-only version of the Java 2 Runtime Environment, Standard Edition, v. 1.3.1 supports only the English/United States locale.

Locales whose IDs end with "_EURO" are variant locales that use the Euro currency symbol.

#### Fully Supported Locales

Language | Country | Locale ID
Arabic | Saudi Arabia | ar_SA
Chinese (Simplified) | China | zh_CN
Chinese (Traditional) | Taiwan | zh_TW
English | United States | en_US
French | France | fr_FR
French | France | fr_FR_EURO
German | Germany | de_DE
German | Germany | de_DE_EURO
Hebrew | Israel | iw_IL
Italian | Italy | it_IT
Italian | Italy | it_IT_EURO
Japanese | Japan | ja_JP
Korean | South Korea | ko_KR
Spanish | Spain | es_ES
Spanish | Spain | es_ES_EURO
Swedish | Sweden | sv_SE

#### 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
Dutch | Netherlands | nl_NL
Dutch | Netherlands | nl_NL_EURO
English | Australia | en_AU
English | Canada | en_CA
English | Ireland | en_IE
English | Ireland | en_IE_EURO
English | New Zealand | en_NZ
English | South Africa | en_ZA
English | United Kingdom | en_GB
Estonian | Estonia | et_EE
Finnish | Finland | fi_FI
Finnish | Finland | fi_FI_EURO
French | Belgium | fr_BE
French | Belgium | fr_BE_EURO
French | Canada | fr_CA
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
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 | Brazil | pt_BR
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:

- On Windows 95, 98, ME, and NT 4.0, when running on a Windows system localized for a language using that writing system.
- On Windows 2000, when running on a Windows system with both the user locale and the system locale set to a language using that writing system.
- On Solaris and Linux, when running on a host operating system with the locale set to one using that writing system and one of the encodings shown for that writing system in the table below.

Sun's Java 2 Software Development Kit, Standard Edition, v. 1.3.1 and the international version of the Java 2 Runtime Environment, Standard Edition, v. 1.3.1 support all writing systems shown below. The US-only version of the Java 2 Runtime Environment, Standard Edition, v. 1.3.1 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 | GBK, gb2312 | supported
Chinese (Traditional) | Chinese | 950 | cns11643, UTF-8 | unsupported | supported
Hebrew | Hebrew | 1255 | 8859-8 | unsupported | unsupported
Japanese | Japanese | 932 | eucJP(1), UTF-8, PCK | eucJP(1) | 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

(1) 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 | unsupported
Greek | Greek | 1253 | 8859-7 | unsupported | unsupported
Latin - Baltic subset | Latvian, Lithuanian | 1257 | 8859-4, 8859-13 | unsupported | unsupported
Latin - Central European subset | Czech, Hungarian, Polish, etc. | 1250 | 8859-2 | unsupported | unsupported
Latin - Turkic subset | Turkish etc. | 1254 | 8859-9 | unsupported | unsupported

### 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:

- Using the virtual font names Serif, SansSerif, Dialog, DialogInput, Monospaced.
- Using the name of a real font.

#### Text Rendering in Lightweight Components

When using virtual 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 real font names, 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 virtual font names, text in the writing system of the host operating system's locale is supported.

When using real font names, text in the writing system of the host operating system's locale is supported to the extent that the font provides glyphs for this writing system.

#### Text Rendering in Printing

There are two separate printing APIs:

- The 2D printing API, using the java.awt.print.PrinterJob.getPrinterJob method.
- The AWT printing API, using the java.awt.Toolkit.getPrintJob method.

Text rendering using the 2D printing API works to the same extent as text rendering on the screen. Text rendering using the AWT printing API on Windows works to the same extent as text rendering on the screen. Text rendering using the AWT printing API on Solaris and Linux works only for the Western European subset of the Latin writing system and for Japanese.

### 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 javax.swing.BorderFactory javax.swing.JApplet javax.swing.JButton javax.swing.JCheckBox javax.swing.JCheckBoxMenuItem javax.swing.JDesktopPane javax.swing.JDialog javax.swing.JEditorPane 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.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.3.1, 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.3.1, 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 © 1996-2000 Sun Microsystems, Inc. All Rights Reserved. Please send comments to: java-intl@java.sun.com | Java Software