【问题标题】:Are there constants for language codes in java or in a java library?java或java库中是否有语言代码的常量?
【发布时间】:2011-11-05 15:08:47
【问题描述】:

在 java 或 java 库中是否有任何语言代码的常量,如 "en""de"? (或者使用字符串可以吗?)

我知道类似

Locale.COUNTRY-NAME.getLanguage()

会工作,但我正在寻找更精简的东西,比如

Locale.LANGUAGE-NAME

【问题讨论】:

    标签: java internationalization locale constants


    【解决方案1】:

    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()

    【讨论】:

    • 它是 ISO 639-1,而不是 639-2。否则,+1。
    【解决方案2】:

    恐怕并非所有语言都有常量。 您确实有几个预定义的语言环境,例如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

    【讨论】:

      【解决方案3】:

      是的.. 使用Locale.COUNTRY-NAME

      【讨论】:

      • 不是一回事。 Martin 正在寻找 language 代码,而不是 country 代码。它们不一定以 1:1 的比例相互映射。
      • 你可以像这样使用语言环境来获取语言Locale local = Locale.ENGLISH; local.getLanguage();
      猜你喜欢
      • 2019-05-15
      • 2010-12-11
      • 2012-10-06
      • 2018-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      相关资源
      最近更新 更多