Mam trzy pliki zasobów na ścieżce klasy:Jak uzyskać domyślnego ResourceBundle niezależnie od aktualnego domyślnego Locale
labels.properties:
language = Default
labels_en.properties:
language = English
labels_fr .properties:
language = French
Czy istnieje sposób uzyskania obiektu ResourceBundle
, który zawsze ładuje labels.properties
NIE MA, jaki jest mój domyślny Locale
?
ResourceBundle.getBundle("labels")
zwraca wartość odpowiadającą bieżącym domyślnym ustawieniom regionalnym (zgodnie z oczekiwaniami).
Jedyny sposób, w jaki mogę znaleźć to ustawienie domyślnych ustawień regionalnych dla nieistniejących ustawień regionalnych, ale może to spowodować uszkodzenie innych modułów.
Dziękujemy!
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"));
Być może trzeba zadzwonić 'ResourceBundle.clearCache()' przed próbą: 'ResourceBundle .getBundle ("etykiety", nowe ustawienia regionalne ("nieistniejące")). getString ("language"));.. (Od [to pytanie] (http://stackoverflow.com/questions/10981521/dynamically-change-resourcebundle-locale-in-java?rq=1)). –
@Duncan Dziękuję za komentarz. To jednak nie zadziałało. Jeśli 'new locale (" nie-nie-istnieje ")' (powinienem był nazwać to "nie-istnieje" ...) nie zostanie znaleziony, 'ResourceBundle' spróbuje załadować go za pomocą' Locale.getDefault() ' zamiast tego nie jest to domyślna wersja pakietu. –