文档

Java™ 教程-Java Tutorials 中文版
识别可用的语言环境
Trail: Internationalization
Lesson: Setting the Locale

识别可用的语言环境

你可以使用有效语言和国家/地区代码的任意组合创建 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。例如,当前面的代码中的 toStringgetDisplayName 替换时,程序将打印以下行:

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

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


Previous page: BCP 47 Extensions
Next page: Language Tag Filtering and Lookup