JDK Tutorials - Herong's Tutorial Examples - Version 5.11, by Dr. Herong Yang

java.util.Locale - Localization and Internationalization

This section provides a tutorial example on how to use java.util.Locale class to verify the default locale and list all supported locales. A locale is an identification of a combination of human language and country.

Internationalization: A process that tailors information for the user based on his/her specific geographical, political, or cultural preference. For example, each time when I insert my Fleet Bank client card into a Fleet Bank ATM machine, it will greet me and display instructions in Chinese. This process of check my language preference setting and tailoring the display information my preferred language is called internationalization.

The Locale class, java.util.Locale, is class presenting a specific geographical, political, or cultural region, where information is displayed in a way different than other regions. For example, French speaking areas in Canada is a locale, and English speaking areas in Canada is another locale.

Major methods offered on Locale class:

  • getDefault(): Returns the default locale of the JVM.
  • getLanguage(): Returns the language code of this locale. Language codes are the lower-case two-letter codes as defined by ISO-639.
  • getCountry(): Returns the country code of this locale. Country codes are the upper-case two-letter codes as defined by ISO-3166.
  • Locale(l,c): Constructs a new locale with a given language and a given country.

The following program shows some interesting features of the Locale class:

/**
 * LocaleTest.java
 * Copyright (c) 2002 by Dr. Herong Yang
 */
import java.util.*;
class LocaleTest {
   public static void main(String[] a) {
      // get the default locale
      Locale l = Locale.getDefault();
      System.out.println("   Language, Country, Variant, Name");
      System.out.println("");
      System.out.println("Default locale: ");
      System.out.println("   "+l.getLanguage()+", "+l.getCountry()+", "
         +", "+l.getVariant()+", "+l.getDisplayName());
      // get a predefined locale
      l = Locale.CANADA_FRENCH;
      System.out.println("A predefined locale - Locale.CANADA_FRENCH:"); 
      System.out.println("   "+l.getLanguage()+", "+l.getCountry()+", "
         +", "+l.getVariant()+", "+l.getDisplayName());
      // define a new locale
      l = new Locale("en", "CN");
      System.out.println("User defined locale -Locale(\"en\",\"CN\"):");
      System.out.println("   "+l.getLanguage()+", "+l.getCountry()+", "
         +", "+l.getVariant()+", "+l.getDisplayName());
      // define another new locale
      l = new Locale("ll", "CC");
      System.out.println("User defined locale -Locale(\"ll\",\"CC\"):");
      System.out.println("   "+l.getLanguage()+", "+l.getCountry()+", "
         +", "+l.getVariant()+", "+l.getDisplayName());
      // get the supported locales
      Locale[] s = Locale.getAvailableLocales();
      System.out.println("Supported locales: ");
      for (int i=0; i<s.length; i++) {
         System.out.println("   "+s[i].getLanguage()+", "
            +s[i].getCountry()+", "+s[i].getVariant()+", "
            +s[i].getDisplayName());
      }
   }
}

Output:

   Language, Country, Variant, Name

Default locale:
   en, US, , , English (United States)
A predefined locale - Locale.CANADA_FRENCH:
   fr, CA, , , French (Canada)
User defined locale - Locale("en","CN"):
   en, CN, , , English (China)
User defined locale - Locale("ll","CC"):
   ll, CC, , , ll (CC)   
Supported locales:
   ar, , , Arabic
   ar, AE, , Arabic (United Arab Emirates)
   ar, BH, , Arabic (Bahrain)
   ar, DZ, , Arabic (Algeria)
   ar, EG, , Arabic (Egypt)
   ar, IQ, , Arabic (Iraq)
   ar, JO, , Arabic (Jordan)
   ar, KW, , Arabic (Kuwait)
   ar, LB, , Arabic (Lebanon)
   ar, LY, , Arabic (Libya)
   ar, MA, , Arabic (Morocco)
   ar, OM, , Arabic (Oman)
   ar, QA, , Arabic (Qatar)
   ar, SA, , Arabic (Saudi Arabia)
   ar, SD, , Arabic (Sudan)
   ar, SY, , Arabic (Syria)
   ar, TN, , Arabic (Tunisia)
   ar, YE, , Arabic (Yemen)
   be, , , Byelorussian
   be, BY, , Byelorussian (Belarus)
   bg, , , Bulgarian
   bg, BG, , Bulgarian (Bulgaria)
   ca, , , Catalan
   ca, ES, , Catalan (Spain)
   cs, , , Czech
   cs, CZ, , Czech (Czech Republic)
   da, , , Danish
   da, DK, , Danish (Denmark)
   de, , , German
   de, AT, , German (Austria)
   de, CH, , German (Switzerland)
   de, DE, , German (Germany)
   de, LU, , German (Luxembourg)
   el, , , Greek
   el, GR, , Greek (Greece)
   en, AU, , English (Australia)
   en, CA, , English (Canada)
   en, GB, , English (United Kingdom)
   en, IE, , English (Ireland)
   en, IN, , English (India)
   en, NZ, , English (New Zealand)
   en, ZA, , English (South Africa)
   es, , , Spanish
   es, AR, , Spanish (Argentina)
   es, BO, , Spanish (Bolivia)
   es, CL, , Spanish (Chile)
   es, CO, , Spanish (Colombia)
   es, CR, , Spanish (Costa Rica)
   es, DO, , Spanish (Dominican Republic)
   es, EC, , Spanish (Ecuador)
   es, ES, , Spanish (Spain)
   es, GT, , Spanish (Guatemala)
   es, HN, , Spanish (Honduras)
   es, MX, , Spanish (Mexico)
   es, NI, , Spanish (Nicaragua)
   es, PA, , Spanish (Panama)
   es, PE, , Spanish (Peru)
   es, PR, , Spanish (Puerto Rico)
   es, PY, , Spanish (Paraguay)
   es, SV, , Spanish (El Salvador)
   es, UY, , Spanish (Uruguay)
   es, VE, , Spanish (Venezuela)
   et, , , Estonian
   et, EE, , Estonian (Estonia)
   fi, , , Finnish
   fi, FI, , Finnish (Finland)
   fr, , , French
   fr, BE, , French (Belgium)
   fr, CA, , French (Canada)
   fr, CH, , French (Switzerland)
   fr, FR, , French (France)
   fr, LU, , French (Luxembourg)
   hi, IN, , Hindi (India)
   hr, , , Croatian
   hr, HR, , Croatian (Croatia)
   hu, , , Hungarian
   hu, HU, , Hungarian (Hungary)
   is, , , Icelandic
   is, IS, , Icelandic (Iceland)
   it, , , Italian
   it, CH, , Italian (Switzerland)
   it, IT, , Italian (Italy)
   iw, , , Hebrew
   iw, IL, , Hebrew (Israel)
   ja, , , Japanese
   ja, JP, , Japanese (Japan)
   ko, , , Korean
   ko, KR, , Korean (South Korea)
   lt, , , Lithuanian
   lt, LT, , Lithuanian (Lithuania)
   lv, , , Latvian (Lettish)
   lv, LV, , Latvian (Lettish) (Latvia)
   mk, , , Macedonian
   mk, MK, , Macedonian (Macedonia)
   nl, , , Dutch
   nl, BE, , Dutch (Belgium)
   nl, NL, , Dutch (Netherlands)
   no, , , Norwegian
   no, NO, , Norwegian (Norway)
   no, NO, NY, Norwegian (Norway,Nynorsk)
   pl, , , Polish
   pl, PL, , Polish (Poland)
   pt, , , Portuguese
   pt, BR, , Portuguese (Brazil)
   pt, PT, , Portuguese (Portugal)
   ro, , , Romanian
   ro, RO, , Romanian (Romania)
   ru, , , Russian
   ru, RU, , Russian (Russia)
   sh, , , Serbo-Croatian
   sh, YU, , Serbo-Croatian (Yugoslavia)
   sk, , , Slovak
   sk, SK, , Slovak (Slovakia)
   sl, , , Slovenian
   sl, SI, , Slovenian (Slovenia)
   sq, , , Albanian
   sq, AL, , Albanian (Albania)
   sr, , , Serbian
   sr, YU, , Serbian (Yugoslavia)
   sv, , , Swedish
   sv, SE, , Swedish (Sweden)
   th, , , Thai
   th, TH, , Thai (Thailand)
   th, TH, TH, Thai (Thailand,TH)
   tr, , , Turkish
   tr, TR, , Turkish (Turkey)
   uk, , , Ukrainian
   uk, UA, , Ukrainian (Ukraine)
   zh, , , Chinese
   zh, CN, , Chinese (China)
   zh, HK, , Chinese (Hong Kong)
   zh, TW, , Chinese (Taiwan)
   en, , , English
   en, US, , English (United States)

Sorry about the length of the output. But it might be useful as a reference source.

The output shows that I can make up a new locale with any combination of language and country, like "en, CN, , , English (China)", or "ll, CC, , , ll (CC)".

Table of Contents

 About This JDK Tutorial Book

 Downloading and Installing JDK 1.7.0 on Windows

 Downloading and Installing JDK 1.6.2 on Windows

 Downloading and Installing JDK 1.5.0 on Windows

 Downloading and Installing JDK 1.4.1 on Windows

 Downloading and Installing JDK 1.3.1 on Windows

 Date, Time and Calendar Classes

 Date and Time Object and String Conversion

 Number Object and Numeric String Conversion

Locales, Localization Methods and Resource Bundles

java.util.Locale - Localization and Internationalization

 Locale Sensitive Operations

 java.util.ResourceBundle - Resource Bundle Abstract Class

 java.util.ListResourceBundle - Resource Bundles as Lists

 java.util.PropertyResourceBundle - Resource Bundles as Properties Files

 java.util.ResourceBundle.getBundle() - Retrieving Resource Bundles

 Calling and Importing Classes Defined in Unnamed Packages

 HashSet, Vector, HashMap and Collection Classes

 Character Set Encoding Classes and Methods

 Character Set Encoding Maps

 Encoding Conversion Programs for Encoded Text Files

 Socket Network Communication

 Datagram Network Communication

 DOM (Document Object Model) - API for XML Files

 SAX (Simple API for XML)

 DTD (Document Type Definition) - XML Validation

 XSD (XML Schema Definition) - XML Validation

 XSL (Extensible Stylesheet Language)

 Message Digest Algorithm Implementations in JDK

 Private key and Public Key Pair Generation

 PKCS#8/X.509 Private/Public Encoding Standards

 Digital Signature Algorithm and Sample Program

 "keytool" Commands and "keystore" Files

 KeyStore and Certificate Classes

 Secret Key Generation and Management

 Cipher - Secret Key Encryption and Decryption

 The SSL (Secure Socket Layer) Protocol

 SSL Socket Communication Testing Programs

 SSL Client Authentication

 HTTPS (Hypertext Transfer Protocol Secure)

 References

 PDF Printing Version

java.util.Locale - Localization and Internationalization - Updated in 2014, by Dr. Herong Yang