当前位置 : 主页 > 网络推广 > seo >

如何忽略系统默认的Locale来检索resourceBundle

来源:互联网 收集:自由互联 发布时间:2021-06-16
我正在使用 java.util.ResourceBundle类和属性文件本地化Web应用程序. 我有两个语言环境,fr_FR和en_US,我想使用en_US作为默认值,所以我写了以下文件: messages_fr_FR.properties with fr_FR messages 带有e
我正在使用 java.util.ResourceBundle类和属性文件本地化Web应用程序.

我有两个语言环境,fr_FR和en_US,我想使用en_US作为默认值,所以我写了以下文件:

> messages_fr_FR.properties with fr_FR messages
>带有en_US消息的messages.properties

我的问题是ResourceBundle.getBundle(BUNDLE_NAME, locale)方法在使用默认属性文件之前回退Locale.getDefault(),这意味着如果JVM Locale设置为fr_FR,
ResourceBundle.getBundle(“name”,新的Locale(“en”,“US”))返回fr_FR包.

我可以重命名messages.properties文件,但是这可能会返回一个带有其他所需和默认语言环境的MissingResourceException.

如何在不复制属性文件或调用Locale.setDefault的情况下忽略系统区域设置?

您可以通过使用自定义ResourceBundle.Control来执行此操作,方法是通过重载getFallbackLocale,或者使用:

ResourceBundle.getBundle("name", new Locale("en", "US"), ResourceBundle.Control.getNoFallbackControl(ResourceBundle.Control.FORMAT_PROPERTIES))
网友评论