我正在使用 java.util.ResourceBundle类和属性文件本地化Web应用程序. 我有两个语言环境,fr_FR和en_US,我想使用en_US作为默认值,所以我写了以下文件: messages_fr_FR.properties with fr_FR messages 带有e
我有两个语言环境,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))