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 平台实现。