Подтвердить что ты не робот

IOS: как получить текущий язык приложения

Приложение, над которым я работаю, поддерживает 3 языка: английский, французский и немецкий.

Как я могу получить текущий язык приложения (не язык устройства)?

Проблема в том, что я должен получить текущий язык приложения, чтобы отправить его с запросом на сервер, и ответ должен быть на правильном языке. Язык устройства бесполезен, потому что если пользователь переключит язык os на итальянский, приложение работает на английском языке, и мне нужно отправить английский язык на сервер.

Спасибо

4b9b3361

Ответ 1

Что я всегда делаю:

Добавьте строковую запись в файлы Localizable.strings. Я всегда использую ключ "lang"="de"; (или "lang"="en" и т.д.).

Затем вы можете использовать его в своем NSURLRequest, добавив язык над NSLocalizedString(@"lang", @"")

С помощью этого метода у вас есть абсолютный контроль над тем, что будет отправлено вам на бэкэнд.

Ответ 2

Принятый ответ является обходным путем.

Что касается языковых предпочтений в самом устройстве, у вас есть

[NSLocale preferredLanguages]

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

Интерфейс Cocoa Touch учитывает этот список предпочтительных языков при загрузке ресурсов локализации приложения и фильтрации его в соответствии с переводами, которые вы предоставляете в комплекте.

Этот отфильтрованный и упорядоченный список локализованных языков можно получить с помощью

[[NSBundle mainBundle] preferredLocalizations]

Запросы вашего сервера должны соответствовать первому значению в этом массиве или у вас будет несоответствие языка между данными приложения и сервера.

Ответ 3

Вы можете использовать метод preferredLocalizations класса NSBundle:

NSString *currentLocalization = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];

Ответ 4

Язык приложения изменится, когда пользователь изменит язык устройства, и вы можете получить его из NSUserDefaults (я покажу вам, как вы хотите), если не будет возможности изменить язык внутри приложения, тогда вы может легко сохранить текущий используемый язык и отправить его на сервер, когда захотите.