Почему NSBundle возвращает только первую локализацию в пакете, которая соответствует языковым настройкам пользователя, а не всем? - PullRequest
3 голосов
/ 09 июня 2011

С учетом каталогов локализации, возвращаемых - [NSBundle localizations]

(en, es, it, nl)

и языковых предпочтений, установленных пользователем каквозвращено - [NSLocale предпочитаемый язык]

(ru, es, nl, ja, fr, de, it, pt-PT, sv, nb, fi, zh-Hans, zh-Hant, ko)

Я ожидаю, что все четыре доступные локализации будут возвращены в предпочтительном языковом порядке с помощью - [NSBundle предпочитаемыйLocalizationsFromArray:] (или -preferredLocalizations или -preferredLocalizationsFromArray: forPreferences:).

Вместо, -preferredLocalizationsFromArray: возвращает только «en» в качестве жизнеспособного источника локализованных ресурсов.

Почему?

Ответы [ 2 ]

1 голос
/ 10 июня 2011

В документации для preferredLocalizationsFromArray: написано

Возвращает одну или более локализаций из указанного списка, которые объект пакета будет использовать для поиска ресурсов для текущего пользователя.

Я думаю, это один , а не или более .

Возможно, вам следует сообщить об ошибке об этом.

0 голосов
/ 24 марта 2017

Это поведение остается тем же в iOS 10. Похоже, что возвращенный массив будет содержать более одной записи, только если эти записи считаются совместимыми.

Например, если ваш пакет поддерживает «pt» и«pt-BR», и пользователь выбрал «pt-BR» в качестве предпочитаемого языка, тогда [[NSBundle mainBundle] preferredLocalizations] вернет ("pt-BR","pt"), потому что допустимо вернуться к содержимому «pt», если содержимое «pt-BR»отсутствует.

...