Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
你可以使用有效语言和国家/地区代码的任意组合创建 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 ...
如果要向终端用户显示 Locale 名称列表,你应该向他们展示比 toString 返回的语言和国家/地区代码更容易理解的内容。相反,你可以调用 Locale.getDisplayName 方法,该方法获取 Locale 对象的本地化 String。例如,当前面的代码中的 toString 被 getDisplayName 替换时,程序将打印以下行:
Arabic (Egypt) Belarussian (Belarus) Bulgarian (Bulgaria) Catalan (Spain) Czech (Czech Republic) Danish (Denmark) German (Germany) ...
你可能会看到不同的语言环境列表,具体取决于 Java 平台实现。