Мы разрабатываем приложение для футбола (Soccer). Приложение поддерживает только английский sh, но футбол имеет другое значение во всем мире. Т.е. в США / Австралии / Японии / Новой Зеландии футбол используют вместо футбола. Мы хотим определить отображаемое имя на основе языка, выбранного на устройстве.
Мы хотим добиться, чтобы отображаемое имя в США / Австралии / Японии / Новой Зеландии было «Футбол», а в остальном мире - «Футбол».
Реализация
Мы подумали, прочитав эту документацию от Apple, что у нас может быть запасной языковой механизм. Итак, мы реализовали следующее.
Мы создали файл с именем InfoPlist.strings
, который поддерживает следующее:
en-GB
en-US
en-AU
en-NZ
ja
Файлы InfoPlist.strings построены следующим образом:
en- GB
CFBundleDisplayName = "Football";
CFBundleName = "Football";
en- [US / AU / NZ] / ja
CFBundleDisplayName = "Soccer";
CFBundleName = "Soccer";
Структура проекта

Помимо этого, мы указали CFBundleDevelopmentRegion
в Info.plist как en-GB
/ United Kingdom
.
Мы также пытались добавить следующее в Info.plist, но безуспешно:
<key>CFBundleDisplayName</key>
<string>$(PRODUCT_NAME)</string>
<key>LSHasLocalizedDisplayName</key>
<true/>
Когда вы выбираете один из поддерживаемых языков в качестве предпочтительного языка на устройстве, он работает нормально. Но когда вы выбираете неподдерживаемый язык (например, немецкий), он возвращается к локализации en-US
. Можете ли вы помочь нам понять это?
Теоретически ОС ищет предпочтительный язык (в данном случае немецкий) и обнаруживает, что он не поддерживается. После этого, если он поддерживает базовый язык (без диалекта), он будет использовать его. В этом случае он также недоступен. Затем он переходит на последний шаг:
Если ни один из предпочтительных языков пользователя не поддерживается вашим приложением, iOS выбирает язык, соответствующий региону разработки вашего приложения (CFBundleDevelopmentRegion
).
В нашем случае CFBundleDevelopmentRegion
определено как en-GB
/ United Kingdom
.
Мы ожидаем увидеть «Football» в качестве отображаемого имени, но мы видим «Soccer» (en-US
локализация). Мы не понимаем.
Надеюсь, вы поможете нам - заранее спасибо :)