我正在寻找一种方法来将更多的地区添加到Java1.6中可用的地区中。但是我要创建的区域设置没有ISO-3166国家代码,也没有ISO-639语言代码。不管怎样,有没有办法做到这一点?我想添加的地区只是语言名称的不同,但种族越小,他们对自己的身份就越挑剔;-)
所以我考虑扩展一个现有的语言环境,比如
UserDefinedLocale extends Locale {
UserDefinedLocale (Locale parentLocale) {...}
}但java.util.Locale是最终版本,这使得破解某些东西变得特别困难……
那么,Java Locales列表是详尽无遗的吗?我是第一个错过更多地区的人吗?
发布于 2011-01-18 02:00:09
阅读java.util Locale的javadoc。
它说:“使用这个类中的构造函数创建一个Locale对象:”
它还说:“因为语言环境对象只是一个区域的标识符,所以在构造语言环境时不会执行有效性检查。”
它还说:“语言环境是一种识别你想要获取的对象类型(NumberFormat)的机制。语言环境只是一种识别对象的机制,而不是对象本身的容器。”
最后,getAvailableLocales()方法的javadoc表示:“返回的数组表示Java运行时环境和已安装的LocaleServiceProvider实现所支持的语言环境的联合。”
因此,您只需创建一个不在标准列表中的语言代码,并将其用作您的区域设置的标识符。
发布于 2011-01-18 01:53:55
请参阅this answer
...You可以通过SPI(描述的here)插入对其他语言环境的支持。例如,要为新的区域设置提供日期格式化程序,可以通过实现
DateFormatProvider服务来实现。您可以通过修饰现有的实现来完成此操作--我将查看一下ICU4J库,看看它是否提供了您想要的支持。
https://stackoverflow.com/questions/4716147
复制相似问题