【问题标题】:Is a Locale considered complete only if一个区域设置是否被认为是完整的
【发布时间】:2013-06-08 11:57:10
【问题描述】:

示例:在类Currency 中有一个静态方法getInstance(Locale locale)。 但是,如果我写类似:

Currency currency = Currency.getInstance(Locale.forLanguageTag("it"));

它给出了一个例外(IllegalArgument..)

另一方面:

Currency currency = Currency.getInstance(Locale.forLanguageTag("it-IT"));

编译没有问题。

我们可以有把握地说,没有国家代码,语言环境就不完整吗?

请注意,在某些情况下,指定唯一的语言是构造 Locale 的有效选项:

Locale localize = Locale.forLanguageTag("it");
    System.out.println(localize.getDisplayName());

【问题讨论】:

    标签: java locale currency


    【解决方案1】:

    您可以拥有一个仅代表一种语言而没有国家/地区的语言环境,这是完全有效的。

    但是您无法从一种语言中获取货币,因为货币与国家有关,而不是与语言有关。意大利这个国家有货币,意大利语没有……

    【讨论】:

      【解决方案2】:

      javadoc for Currency#getInstance 解释:

      返回给定语言环境所在国家/地区的 Currency 实例。语言环境的语言和变体组件被忽略

      如果你检查Locale#forLanguageTag javadoc:

      返回指定 IETF BCP 47 语言标签字符串的语言环境。

      如果最后你引用how those tags work,你会看到“it”是意大利语,“it_IT”是Italian_Italy。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-05
        • 2018-06-19
        • 1970-01-01
        • 2012-11-01
        • 1970-01-01
        相关资源
        最近更新 更多