Ho tre file di risorse nel percorso di classe:Come ottenere il ResourceBundle predefinita a prescindere dalla corrente Locale di default
labels.properties:
language = Default
labels_en.properties:
language = English
labels_fr .properties:
language = French
C'è un modo per ottenere un oggetto ResourceBundle
che carica sempre labels.properties
NO MATTER cosa è il mio default Locale
?
ResourceBundle.getBundle("labels")
restituisce quello corrispondente alla locale predefinita corrente (come previsto).
L'unico modo che riesco a trovare è impostare le impostazioni internazionali predefinite su una locale non esistente, ma ciò potrebbe danneggiare altri moduli.
Grazie!
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"));
Potrebbe essere necessario chiamare 'ResourceBundle.clearCache()' prima di tentare: 'ResourceBundle .getBundle ("labels", nuova Locale ("do-not-exist")). getString ("language")); '. (Da [questa domanda] (http://stackoverflow.com/questions/10981521/dynamically-change-resourcebundle-locale-in-java?rq=1)). –
@Duncan Grazie per il tuo commento. Non ha funzionato, però. Se 'new Locale (" do-not-exist ")' (avrei dovuto chiamarlo "does-not-exist" ...) non è stato trovato, 'ResourceBundle' prova a caricarne uno con' Locale.getDefault() ' invece, non la versione predefinita del pacchetto. –