Последовательность локалей - PullRequest
0 голосов
/ 10 октября 2018

Какова последовательность, в которой используются локали?У меня есть 3 файла свойств:

Dolphins.properties

name=The Dolphin
age=0

Dolphins_en.properties

name=Dolly
age=4

Dolphins_fr.properties

name=Dolly

Мой кодis:

5: Locale fr = new Locale("fr");

6: Locale.setDefault(new Locale("en", "US"));

7: Resource Bundle b = ResourceBundle.getBundle("Dolphins", fr);

8: b.getString("name");

9: b.getString("age");

Код устанавливает Locale по умолчанию равным Dolphins_en, тогда почему он использует Dolphins.properties?Что мне не хватает или недоразумение?

Заранее спасибо.

1 Ответ

0 голосов
/ 10 октября 2018

Язык по умолчанию используется при выборе цепочки комплектов.Это означает, что он будет использоваться, если вы не укажете его: ResourceBundle.getBundle("Dolphins") или когда вы укажете локаль, в которой нет комплекта: ResourceBundle.getBundle("Dolphins", new Locale("cs")).

Но когда комплект выбран, тогда по умолчаниюlocale больше не используется для выбора значения.Это означает, что когда ключ age отсутствует в Dolphins_fr.properties , он будет использовать значение из пакета по умолчанию Dolphins.properties .

Примечание: И если ключ отсутствует даже в Dolphins.properties , он выдаст MissingResourceException.

Обновление: Я чувствовал, что видел тот же код в прошлом и, наконец, получил его.Вы можете посмотреть в Jeanne Boyarsky - OCP Study Guide или здесь https://coderanch.com/t/685833/certification/OCP-Chapter-Jeanne-Boyarsky,, где точно такой же код и причины лучше объяснены на английском.

...