只有当一个区域设置被认为是完整的时

时间:2013-06-08 11:57:10

标签: java locale currency

示例:在类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());

2 个答案:

答案 0 :(得分:2)

您可以使用仅代表没有国家/地区的语言的区域设置,这完全有效。

但是你不能从一种语言中获得货币,因为货币与国家有关,而与语言有关。意大利的国家确实有货币,意大利语没有...

答案 1 :(得分:1)

javadoc for Currency#getInstance解释说:

  

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

如果您查看Locale#forLanguageTag javadoc

  

返回指定的IETF BCP 47语言标记字符串的区域设置。

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