This page documents locale support in Oracle's Java SE Development Kit 7 (JDK) and Java SE Runtime Environment 7 (JRE).
The JRE and JDK Installers are localized to the languages specified in the User Interface Translation table. The installers will use the use the system's default locale setting to determine which of the supported languages to use at the time of installation. If the system's default locale is not supported by the installer, the installer will be displayed in English.
The complete international version of the JRE is installed.
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.
Oracle's Java SE Development Kit 7 and the Java SE Runtime Environment 7 support all locales shown below.
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 | Saudi Arabia | ar_SA |
Arabic | Sudan | ar_SD |
Arabic | Syria | ar_SY |
Arabic | Tunisia | ar_TN |
Arabic | United Arab Emirates | ar_AE |
Arabic | Yemen | ar_YE |
Belarusian | Belarus | be_BY |
Bulgarian | Bulgaria | bg_BG |
Catalan | Spain | ca_ES |
Chinese (Simplified) | China | zh_CN |
Chinese (Simplified) | Singapore | zh_SG(*) |
Chinese (Traditional) | Hong Kong | zh_HK |
Chinese (Traditional) | Taiwan | zh_TW |
Croatian | Croatia | hr_HR |
Czech | Czech Republic | cs_CZ |
Danish | Denmark | da_DK |
Dutch | Belgium | nl_BE |
Dutch | Netherlands | nl_NL |
English | Australia | en_AU |
English | Canada | en_CA |
English | India | en_IN |
English | Ireland | en_IE |
English | Malta | en_MT(*) |
English | New Zealand | en_NZ |
English | Philippines | en_PH(*) |
English | Singapore | en_SG(*) |
English | South Africa | en_ZA |
English | United Kingdom | en_GB |
English | United States | en_US |
Estonian | Estonia | et_EE |
Finnish | Finland | fi_FI |
French | Belgium | fr_BE |
French | Canada | fr_CA |
French | France | fr_FR |
French | Luxembourg | fr_LU |
French | Switzerland | fr_CH |
German | Austria | de_AT |
German | Germany | de_DE |
German | Luxembourg | de_LU |
German | Switzerland | de_CH |
Greek | Cyprus | el_CY(*) |
Greek | Greece | el_GR |
Hebrew | Israel | iw_IL |
Hindi | India | hi_IN |
Hungarian | Hungary | hu_HU |
Icelandic | Iceland | is_IS |
Indonesian | Indonesia | in_ID(*) |
Irish | Ireland | ga_IE(*) |
Italian | Italy | it_IT |
Italian | Switzerland | it_CH |
Japanese (Gregorian calendar) | Japan | ja_JP |
Japanese (Imperial calendar) | Japan | ja_JP_JP |
Korean | South Korea | ko_KR |
Latvian | Latvia | lv_LV |
Lithuanian | Lithuania | lt_LT |
Macedonian | Macedonia | mk_MK |
Malay | Malaysia | ms_MY(*) |
Maltese | Malta | mt_MT(*) |
Norwegian (Bokmål) | Norway | no_NO |
Norwegian (Nynorsk) | Norway | no_NO_NY |
Polish | Poland | pl_PL |
Portuguese | Brazil | pt_BR(*) |
Portuguese | Portugal | pt_PT(*) |
Romanian | Romania | ro_RO |
Russian | Russia | ru_RU |
Serbian (Cyrillic) | Bosnia and Herzegovina | sr_BA(*) |
Serbian (Cyrillic) | Montenegro | sr_ME(*) |
Serbian (Cyrillic) | Serbia | sr_RS(*) |
Serbian (Latin) | Bosnia and Herzegovina | sr_Latn_BA(**) |
Serbian (Latin) | Montenegro | sr_Latn_ME(**) |
Serbian (Latin) | Serbia | sr_Latn_RS(**) |
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 | Spain | es_ES |
Spanish | United States | es_US(*) |
Spanish | Uruguay | es_UY |
Spanish | Venezuela | es_VE |
Swedish | Sweden | sv_SE |
Thai (Western digits) | Thailand | th_TH |
Thai (Thai digits) | Thailand | th_TH_TH |
Turkish | Turkey | tr_TR |
Ukrainian | Ukraine | uk_UA |
Vietnamese | Vietnam | vi_VN |
(*) Data for these locales are derived from the Unicode Consortium's Common Locale Data Repository release 1.4.1 on an "AS-IS" basis.
(**) Data for these locales are derived from the Unicode Consortium's Common Locale Data Repository release 1.9 on an "AS-IS" basis.
(***) Arabic, Hebrew, Hindi and Thai locales are not currently supported in JavaFX
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:
Oracle's Java SE Development Kit 7 and the Java SE Runtime Environment 7 support all writing systems shown below. 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.
Writing System | Languages | Windows Encodings | Solaris Encodings | Linux Encodings | Peered AWT Components |
---|---|---|---|---|---|
Arabic | Arabic | 1256 | 8859-6, UTF-8 |
UTF-8 | unsupported |
Chinese (Simplified) | Chinese | 936, GB18030 |
gb2312, UTF-8, GBK, gb18030 |
GB18030, UTF-8 |
supported |
Chinese (Traditional) | Chinese | 950, HKSCS |
cns11643, UTF-8, BIG5, BIG5HK |
UTF-8 | supported |
Cyrillic | Belarusian, Russian etc. | 1251 | 8859-5, KOI8-R, ANSI1251, UTF-8 |
UTF-8 | supported |
Devanagari | Hindi | UTF-8 | UTF-8 | unsupported | unsupported |
Greek | Greek | 1253 | 8859-7 | unsupported | supported |
Hebrew | Hebrew | 1255 | 8859-8 | UTF-8 | unsupported |
Japanese | Japanese | 932 | eucJP(1), UTF-8, PCK |
UTF-8 | supported |
Korean | Korean | 949 | 5601, UTF-8 |
UTF-8 | supported |
Latin - Baltic subset | Latvian, Lithuanian | 1257 | 8859-13 | unsupported | supported |
Latin - Central European subset | Czech, Hungarian, Polish, etc. | 1250 | 8859-2, UTF-8 |
unsupported | supported |
Latin - Maltese subset | Maltese | UTF-8 | UTF-8 | unsupported | supported |
Latin - Turkic subset | Turkish etc. | 1254 | 8859-9, UTF-8 |
unsupported | supported |
Latin - Western European subset | English, French, German, Italian, Spanish, Swedish, etc. | 1252 | 8859-1, 8859-15, UTF-8 |
ISO-8859-1, UTF-8 |
supported |
Thai | Thai | 874 | TIS620.2533, UTF-8 |
unsupported | unsupported |
(1) eucJP on Solaris supports the JIS character sets X 0201, X 0208, and X 0212.
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 SE relies entirely on the host operating system. For text composition using input methods, Java SE 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.
On Windows XP, 2003, Vista, and 7, the JRE supports use of any keyboard layout or IMM-based input method.
Input methods implemented in the Java programming language are supported in all components on all versions of Windows.
The JRE supports use of any keyboard layout or input method that can be used with a particular Solaris or Linux 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).
Applications have two options for selecting fonts:
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 form 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.
When using logical font names, text in at least the writing system of the host operating system's locale is supported.
Physical fonts are not supported in peered components.
There are three 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; the services provided by the JRE work to the same extent as text rendering on the screen.
On Windows XP, 2003, Vista, and 7, text using the entire Unicode character set 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 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.
The user interface elements provided by the Java SE Runtime Environment 7, 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 JRE. These languages are also supported in JavaFX. 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 |
Portuguese (Brazilian) | pt_BR |
Spanish | es |
Swedish | sv |
The user interface elements provided by the Java SE Development Kit 7, include messages produced by the tools that are only part of the JDK in addition to the elements provided by the JRE. These languages are also supported in JavaFX. The additional user interface elements are localized into the following languages:
Language | Locale ID |
---|---|
Chinese (Simplified) | zh_CN |
English | en |
Japanese | ja |