![](/img/trans.png)
[英]How to ignore the system default Locale to retrieve resourceBundle
[英]How to get the default ResourceBundle regardless of current default Locale
我在類路徑中有三個資源文件:
標簽.屬性:
language = Default
label_en.properties:
language = English
標簽_fr.properties:
language = French
有沒有辦法獲得始終加載labels.properties
的ResourceBundle
對象,無論我的默認Locale
是什么?
ResourceBundle.getBundle("labels")
返回對應於當前默認語言環境的那個(如預期的那樣)。
我能找到的唯一方法是將默認語言環境設置為不存在的語言環境,但這可能會破壞其他模塊。
謝謝!
Locale.setDefault( Locale.ENGLISH);
Assert.assertEquals( "English", ResourceBundle.getBundle( "labels").getString( "language"));
Locale.setDefault( Locale.FRENCH);
Assert.assertEquals( "French", ResourceBundle.getBundle( "labels").getString( "language"));
Assert.assertEquals( "French", ResourceBundle.getBundle( "labels", new Locale( "do-not-exist")).getString( "language"));
Locale.setDefault( new Locale( "do-not-exist"));
Assert.assertEquals( "Default", ResourceBundle.getBundle( "labels").getString( "language"));
您可以傳入一個ResourceBundle.Control ,無論請求的區域設置如何,它始終只搜索根 ResourceBundle:
ResourceBundle rootOnly = ResourceBundle.getBundle("labels",
new ResourceBundle.Control() {
@Override
public List<Locale> getCandidateLocales(String name,
Locale locale) {
return Collections.singletonList(Locale.ROOT);
}
});
另一種方法是設置應用程序的默認語言環境,例如
Locale.setDefault(Locale.US);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.