【发布时间】:2011-11-05 15:08:47
【问题描述】:
在 java 或 java 库中是否有任何语言代码的常量,如 "en" 或 "de"? (或者使用字符串可以吗?)
我知道类似
Locale.COUNTRY-NAME.getLanguage()
会工作,但我正在寻找更精简的东西,比如
Locale.LANGUAGE-NAME
【问题讨论】:
标签: java internationalization locale constants
在 java 或 java 库中是否有任何语言代码的常量,如 "en" 或 "de"? (或者使用字符串可以吗?)
我知道类似
Locale.COUNTRY-NAME.getLanguage()
会工作,但我正在寻找更精简的东西,比如
Locale.LANGUAGE-NAME
【问题讨论】:
标签: java internationalization locale constants
2 字母语言代码由 ISO 639-1 标准定义。 java.util.Locale 类不包含所有这些,而仅包含 VM 支持的区域设置(根据 Locale.getAvailableLocales())。
在 Java 中访问所有 ISO 639-1 语言代码的最简单方法是依赖 International Components for Unicode 项目 (ICU4J) — IBM 广泛、广泛使用和积极开发的 i18n 库。您可以从 ULocale 类中获取所有语言的列表:com.ibm.icu.util.ULocale.getISOLanguages()。
【讨论】:
恐怕并非所有语言都有常量。
您确实有几个预定义的语言环境,例如Locale.UKLocale.US 等。每个语言环境都有一个语言代码,可以通过getLanguage() 方法获得。
要获取底层 JVM 支持的所有语言代码,请使用 getISOLanguages()
for(String lang : Locale.getISOLanguages()) {
System.out.println(lang);
}
更多详情:http://download.oracle.com/javase/1.4.2/docs/api/java/util/Locale.html
【讨论】:
是的.. 使用Locale.COUNTRY-NAME
【讨论】:
Locale local = Locale.ENGLISH; local.getLanguage();