В документе, который вы связали, описывается способ поиска пакета ресурсов, а не способ разрешения отдельного ключа ресурса.
Это соответствует документированному поведению по умолчанию ,который говорит
Если язык, сценарий, страна и вариант указанного языкового стандарта - все пустые строки, то базовое имя является единственным именем пакета кандидата.В противном случае список кандидатов на локали генерируется из значений атрибутов указанной локали (язык, сценарий, страна и вариант) и добавляется к базовому имени.
, который описывает, как отдельный Locale
приводит к последовательности имен кандидатов.В вашем случае это будет просто [ Animal_Fr ]
.Затем он говорит:
Это продолжается до тех пор, пока не будет создан экземпляр пакета ресурсов или не будет исчерпан список имен пакетов кандидатов.Если соответствующий пакет ресурсов не найден, вызывается метод getFallbackLocale
элемента управления по умолчанию, который возвращает текущую локаль по умолчанию.Новая последовательность имен кандидатов в локали генерируется с использованием этой локали и снова выполняется поиск, как указано выше.
Таким образом, если Animal_Fr
не существует, он возвращается к локали по умолчанию, пытаясь с помощьюпоследовательность-кандидат [ Animals_en_US, Animals_en ]
.
Но поскольку Animal_Fr
существует и может быть создан, этот поиск не будет продолжен.Скорее, для поиска конкретного ключа ресурса цепочка становится релевантной, что задокументировано как:
После того, как найден пакет результирующего ресурса, создается его родительская цепочка .Если у результирующего пакета уже есть родительский элемент (возможно, потому что он был возвращен из кэша), цепочка завершена.
В противном случае getBundle
проверяет остаток списка локалей-кандидатов, который использовался во время сгенерированного проходарезультирующий пакет ресурсов.[…] Когда дело доходит до конца списка кандидатов, оно пытается использовать простое имя пакета.С каждым из возможных имен пакетов он пытается создать экземпляр пакета ресурсов […].
Каждый раз, когда это удается, он вызывает метод setParent
ранее созданного пакета ресурсов с новым пакетом ресурсов.,Это продолжается до тех пор, пока список имен не будет исчерпан или текущий пакет уже будет иметь ненулевой родительский элемент.
Таким образом, связанный документ прав относительно общего поведения getBundle
, которое является результатомдвухступенчатый процесс, описанный в документации.Но когда дело доходит до родительской цепочки, которая имеет отношение к поведению getString
, будет использоваться только список кандидатов текущей фазы поиска.
Итак, в зависимости от того, какойфактические пакеты действительно существуют, в вашем примере настройки может быть
Animals_fr ‣ Animals
или
Animals_en_US ‣ Animals_en ‣ Animals
.