如何扩展可用的Java语言环境列表

时间:2011-01-17 17:48:53

标签: java locale

我正在寻找一种方法来向Java 1.6中提供的Locales添加更多Locales。但我想创建的语言环境没有ISO-3166国家/地区代码,也没有ISO-639语言代码。有什么办法可以做到这一点吗?我想添加的语言环境只在语言名称上有所不同,但是一个族群越小,他们对自己的身份就越挑剔; - )

所以我考虑扩展现有的Locale,比如

UserDefinedLocale extends Locale { 
   UserDefinedLocale (Locale parentLocale) {...}
}

但是java.util.Locale是final,这使得特别难以破解...

那么,Java Locales列表是否详尽无遗?我是第一个错过更多Locales的人吗?

2 个答案:

答案 0 :(得分:5)

阅读java.util Locale的javadoc。

它说: “使用此类中的构造函数创建一个Locale对象:”

它还说: “因为Locale对象只是区域的标识符,所以在构造Locale时不会执行有效性检查”

它还说: “Locale是一种识别你想要获得的对象类型(NumberFormat)的机制。语言环境只是一种识别对象的机制,而不是对象本身的容器”

最后,getAvailableLocales()方法的javadoc说: “返回的数组表示Java运行时环境和安装的LocaleServiceProvider实现支持的语言环境的联合”

因此,您只需创建一个不在标准列表中的语言代码,并将其用作您的语言环境的标识符。

答案 1 :(得分:2)

请参阅this answer

  

...您可以通过SPI插入对其他语言环境的支持(描述为here)。例如,要为新语言环境提供日期格式化程序,可以通过实施DateFormatProvider服务来实现。您可以通过修改现有实现来完成此操作 - 我将查看ICU4J库,看看它是否提供了您想要的支持。

相关问题