Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何扩展可用Java语言环境列表_Java_Locale - Fatal编程技术网

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

如何扩展可用Java语言环境列表,java,locale,Java,Locale,我正在寻找一种向Java1.6中可用的语言环境添加更多语言环境的方法。但是我想要创建的地区没有ISO-3166国家代码,也没有ISO-639语言代码。有什么办法可以做到这一点吗?我想添加的地区只在语言名称上有所不同,但民族越小,他们对自己的身份就越挑剔;-) 所以我考虑扩展一个现有的区域设置,比如 UserDefinedLocale extends Locale { UserDefinedLocale (Locale parentLocale) {...} } 但是java.util.

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

所以我考虑扩展一个现有的区域设置,比如

UserDefinedLocale extends Locale { 
   UserDefinedLocale (Locale parentLocale) {...}
}
但是java.util.Locale是最终的,这使得破解周围的东西特别困难

那么,是否认为Java语言环境列表是详尽无遗的呢?我是第一个错过更多地区的人吗?

请参见:

…您可以通过SPI(如上所述)插入对其他地区的支持。例如,要为新区域设置提供日期格式化程序,可以通过实现服务来实现。您可以通过装饰一个现有的实现来实现这一点——我会查看库,看看它是否提供了您想要的支持

请阅读javadoc以了解更多信息

它说: “使用此类中的构造函数创建区域设置对象:”

它还说: 由于区域设置对象只是区域的标识符,因此在构造区域设置时不会执行有效性检查

它还说: 区域设置是标识您想要获取的对象类型(NumberFormat)的机制。区域设置只是标识对象的机制,而不是对象本身的容器

最后,getAvailableCales()方法的javadoc说: “返回的数组表示Java运行时环境和已安装的LocaleServiceProvider实现支持的区域设置的联合”


因此,您只需发明一种不在标准列表中的语言代码,并将其用作您所在地区的标识符。

谢谢。不幸的是,我的应用程序无法选择操纵每个用户的JRE:“因为地区敏感服务SPI基于标准Java扩展机制,所以可以将它们打包为JAR文件(在清单文件中有一些技巧,可以在这里找到),并将其放在扩展目录中。”“所以你只需要发明一种不在标准列表中的语言代码,并将其用作你所在地区的标识符。”-你是否错过了你所引用的关于安装
LocaleServiceProvider
?我同意这是一种快捷方式。但由于OP没有明确解释他所说的“扩展可用地区列表”的意思“,我怀疑他想要的只是需要他实例化一个新的。使用ResourceBundle只需要一个新的区域设置。数字和日期格式可以重用其他语言的规则。然后,他只需使用新的国家代码或变体代码。