识别可用的语言环境

您可以使用有效的语言和国家/地区代码的任意组合创建一个Locale,但这并不意味着您可以使用它。请记住,一个Locale对象只是一个标识符。您将Locale对象传递给其他对象,然后其他对象将完成实际工作。这些其他对象(我们称为对语言环境敏感的对象)不知道如何处理所有可能的Locale定义。

若要找出对语言环境敏感的类可以识别的Locale定义类型,请调用getAvailableLocales方法。例如,要找出DateFormat类支持哪些Locale定义,您可以编写如下例程:

import java.util.*;
import java.text.*;

public class Available {
    static public void main(String[] args) {
        Locale list[] = DateFormat.getAvailableLocales();
        for (Locale aLocale : list) {
            System.out.println(aLocale.toString());
        }
    }
}

请注意,由toString返回的String包含语言和国家/地区代码,并用下划线分隔:

ar_EG
be_BY
bg_BG
ca_ES
cs_CZ
da_DK
de_DE
...

如果要向final用户显示Locale名称的列表,则应向他们显示比toString返回的语言和国家/地区代码更容易理解的内容。相反,您可以调用Locale.getDisplayName方法,该方法检索Locale对象的本地化String。例如,在前面的代码中用getDisplayName替换toString时,程序将打印以下行:

Arabic (Egypt)
Belarussian (Belarus)
Bulgarian (Bulgaria)
Catalan (Spain)
Czech (Czech Republic)
Danish (Denmark)
German (Germany)
...

您可能会看到不同的语言环境列表,具体取决于 Java 平台的实现。