Значение по умолчанию для определенного языка - это не то, к чему вы должны стремиться. Предположим, что японский пользователь, живущий во Франции и свободно говорящий по-французски, настроил свой телефон на японский. Ваше приложение будет по умолчанию на немецком языке, несмотря на то, что оно имеет французский перевод; Я думаю, это не то, что вы хотите, и, конечно, это не то, что хочет пользователь.
По этой причине я предлагаю соблюдать приоритеты языка, установленные пользователем.
Поскольку вы не хотите поддерживать английский язык, но разработали приложение на английском языке, самое простое, что вы можете сделать, это просто избавиться от en.lproj
сразу после компиляции. Это оставит приложение только с теми языками, которые вы планируете поддерживать, и iPhone выберет язык, наиболее подходящий для пользователя, как установлено по умолчанию iPhone.
Существует довольно простое решение для удаления определенной локализации :
Позвольте XCode собрать приложение со всеми существующими локализациями и непосредственно перед тем, как пойдет процесс подписания кода, удалите папку en.lproj
и все локализованные файлы для этого языка исчезнут. Вы можете легко сделать это, добавив к цели этап сборки Run Script, содержащий одну строку кода (это Bash Script):
rm -r "${TARGET_BUILD_DIR}/${PRODUCT_NAME}.app/en.lproj"
Подписание кода всегда начинается после завершения всех фаз сборки, поэтому просто поместите эту фазу сборки в конце ваших текущих фаз.
Обратите внимание , что это увеличивает время сборки, потому что Xcode воссоздает все английские файлы, поэтому вы можете отключить этот шаг во время тестирования.
Надеюсь, это жизнеспособное решение для вас.
Относительно "приложение должно использовать немецкий язык в случае, если соответствующей локализации не существует" :
Вопрос в том, что является соответствующей локализацией ? Если третий вариант пользователя - французский (после 2 неподдерживаемых языков), это решение заставит приложение переключиться на французский, который является подходящей локализацией. Более подходящим, чем установка пятого выбора пользователя, немецкого языка, вручную.
Что происходит, когда приложение запускается, просто: ОС опускает список языков пользователей, как установлено в Предпочтениях, до тех пор, пока не найдет соответствующую локализацию и не использует этот язык. Причина, по которой во многих приложениях по умолчанию используется английский, а не немецкий, заключается в том, что английский язык присутствует в большинстве списков пользовательских языков выше немецкого. В системе нет языкового предпочтения. Если вы удалите перевод на английский язык, будут доступны только те языки, которые вы хотите поддерживать, и из этих языков будет выбран тот, что выше в списке пользователей.