2014-10-17 59 views
4

我使用java.util.ResourceBundle類和屬性文件本地化web應用程序。如何忽略系統默認的語言環境來檢索resourceBundle

我有兩個語言環境,fr_FR目錄和EN_US,我想用EN_US作爲默認,所以我寫了以下文件:

  • messages_fr_FR.properties與fr_FR時的消息
  • messages.properties與EN_US消息

我的問題是,在使用默認屬性文件之前,ResourceBundle.getBundle(BUNDLE_NAME, locale)方法會回落Locale.getDefault(),這意味着如果JVM語言環境設置爲fr_FR,則爲 ResourceBundle.getBundle("name", new Locale("en", "US"))返回fr_FR包。

我可以重命名messages.properties文件,但這可能會返回一個MissingResourceException與其他所需的和默認的語言環境。

如何忽略系統區域設置,不重複屬性文件或調用Locale.setDefault

回答

10

你可以做,通過使用自定義ResourceBundle.Control,無論是通過重載getFallbackLocale明確,或通過使用:

ResourceBundle.getBundle("name", new Locale("en", "US"), ResourceBundle.Control.getNoFallbackControl(ResourceBundle.Control.FORMAT_PROPERTIES)) 
相關問題