Setting the Locale |
You can create aLocale
with any combination of valid language and country codes, but that doesn't mean that you can use it. Remember, aLocale
object is only an identifier. You pass theLocale
object to other objects, which then do the real work. These other objects, which we call locale-sensitive, do not know how to deal with all possibleLocale
definitions.To find out which types of
Locale
definitions a locale-sensitive class recognizes, you invoke thegetAvailableLocales
method. For example, to find out whichLocale
definitions are supported by theDateFormat
class, you could write a routine such as the following:import java.util.*; import java.text.*; public class Available { static public void main(String[] args) { Locale list[] = DateFormat.getAvailableLocales(); for (int i = 0; i < list.length; i++) { System.out.println(list[i].toString()); } } }The output of the previous program follows. Note that the
String
returned bytoString
contains the language and country codes, delimited by an underscore:ar_EG be_BY bg_BG ca_ES cs_CZ da_DK de_DE . . .If you want to display a list of
Locale
names to end users, you should show them something easier to understand than the language and country codes returned bygetString
. Instead you can invoke theLocale.getDisplayName
method, which retrieves a localizedString
of aLocale
object. For example, whentoString
is replaced bygetDisplayName
in the preceding code, the program prints the following lines:Arabic (Egypt) Byelorussian (Belarus) Bulgarian (Bulgaria) Catalan (Spain) Czech (Czech Republic) Danish (Denmark) German (Germany) . . .
Setting the Locale |