【问题标题】:How to get Local country from the language?如何从语言中获取本地国家?
【发布时间】:2013-09-05 11:00:38
【问题描述】:

如何从Locale-language找到country?

例如;如果我将本地 language 设置为 en,那么我希望将 US 作为国家/地区。

Locale locale = new Locale("en");
locale.getCountry() // returns null

问题是我只有国家代码,例如:fr,de,en,现在我只想从这些代码中找到正确的国家语言环境。

【问题讨论】:

    标签: java localization internationalization


    【解决方案1】:

    en 是英文。 en_US 是美国英语。 en_GB 我认为是英国英语。大概使用 en_US 会做你想做的事。此处列出了所有受支持的语言环境:http://www.oracle.com/technetwork/java/javase/locales-137662.html

    您无法从“en”中获取国家/地区,因为您可以看到,多个国家/地区可能共享一种语言。你会选择哪一个?

    【讨论】:

    • tnx,问题是我只有国家代码,例如:fr,de,en,现在我只想从这些代码中找到正确的国家语言环境。顺便说一句,它也不适用于 en_US。
    • @stsd 啊,我弄错了格式。如果您阅读 javadoc,您会看到 Locale 有一个两参数构造函数。这些不是国家代码。它们是语言代码。正如我所说,每种语言都可以在多个国家使用。
    【解决方案2】:

    一种选择是获取所有可用的语言环境:

    Locale[] locales = Locale.getAvailableLocales();
    

    然后将它们插入HashMap 并将language 定义为key。现在可以通过语言键搜索国家/地区了。

    【讨论】:

      【解决方案3】:

      Apache Commons Lang 有一个方法: LocaleUtils#countriesByLanguage(String)

      您可以在每个返回的Locales 上调用 getCountry() 来获取国家代码。正如 Eric 已经指出的那样,对于许多语言来说,有几个国家。

      【讨论】:

        猜你喜欢
        • 2010-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多