Мой вопрос:
Как мое iPhone-приложение может сказать iOS, что пользователь выбрал язык в настройках приложений, который отличается от языка, заданного в общих настройках?
Другая формулировка того же вопроса:
Как я могу сообщить системе, что NSLocalizedString (@"text", @"comment");
не должен иметь доступ к системному выбранному языку, но язык, выбранный в приложении?
фон, пример:
Пожалуйста, примите эту ситуацию в качестве примера: Сын немецких иммигрантов живет на северо-востоке Франции рядом с Люксембургом и Германией. Его родной язык - французский, поэтому он установил язык интерфейса пользователя своего iPhone на французский (Настройки → Общие → Международный → Язык → Français). Но из-за его культурного фона и потому, что регион, где он живет, двуязычен, он также очень хорошо говорит по-немецки. Но он не говорит по-английски десять слов. На iPhone (и iPad также) у него нет шансов выбрать второй язык, поэтому телефон знает только, что он пьет французский. Он не знает навыков пользователей на других языках.
Теперь приходит мое приложение: я разработал его на английском и немецком языках (немецкий - это мой родной язык, а английский - стандартный язык в ИТ). Я разработал его в соответствии со всеми правилами и рекомендациями для многоязычных iOS-приложений. "Первый" язык (язык по умолчанию) моего приложения - английский.
Это означает:
Если кто-то выбрал английский или немецкий в своих настройках, пользовательский интерфейс приложений автоматически будет использовать выбранный язык. Пользователь даже не заметит, что есть другие доступные языки.
Но если он вообще выбирает какой-либо другой язык (например, китайский, польский или французский) в общих настройках, он получит язык по умолчанию для приложений, который, в моем случае, является английским. Но для моего франко-немецкого друга это не лучший выбор. Он хотел бы использовать существующую немецкую версию, но, похоже, нет способа разрешить пользователю выбирать эту версию.
Добавление перевода на французский язык решит проблему для нашего франко-немецкого друга, но не для людей, говорящих на двух других языках (например, итальянском и немецком), и я не могу поддерживать свое приложение со всеми языками, на которых говорят на этой планете. Установка языка по умолчанию на немецкий язык также не является оптимальной, потому что это вызовет ту же проблему для людей, говорящих на французском (родной язык) и английском (как на втором языке).
Поэтому я думаю, что у моего приложения должна быть возможность вручную выбрать язык, отличный от предварительно выбранного языка. Добавление выбора языка в панель настроек приложений не является проблемой. Но как я могу сказать системе, что NSLocalizedString (@"text", @"comment");
не должен иметь доступ к системному выбранному языку, но язык, выбранный в приложении?