iOS: как получить текущие языковые настройки устройства?

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

Я хочу получить фактический язык, а не настройки страны. Например, если язык английский, мне все равно, США, Великобритания, Австралия и т. Д.

Я знаком с объектом NSLocale , но, похоже, он имеет отношение к параметр Формат региона , а не параметр Язык (см. снимок экрана ниже), поэтому, когда я пытаюсь извлечь язык из него, используя [locale displayNameForKey: NSLocaleIdentifier value: [locale localeIdentifier] Я получаю такие вещи, как английский (США) вместо английский ; Кроме того, я думаю, что мне нужны данные Language , а не Формат региона (я прав?).

Может ли кто-нибудь указать мне, как получить языковые настройки ?

enter image description here

22
задан Paul Peelen 10 June 2012 в 18:29
поделиться

3 ответа

Получение языка и региона в Swift:

    LF.log("language", NSLocale.preferredLanguages())
    LF.log("locale", NSBundle.mainBundle().preferredLocalizations)

В моем случае я получаю:

language: '(
    "zh-Hans"
)'
locale: '(
    en
)'
3
ответ дан 29 November 2019 в 03:41
поделиться

Найдите решение в вспомогательном документе XCode, в нем написано:

Получение текущего языка

Чтобы получить язык, который приложение использует из основного пакета приложения, используйте метод предпочитаемое расположение в класс NSBundle:

NSString *languageID = [[NSBundle mainBundle] preferredLocalizations].firstObject;

1
ответ дан 29 November 2019 в 03:41
поделиться

Используйте приведенный ниже код для извлечения локализованного языка без проблем с en-india, en-us и т. Д.

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

В и после ios9 этот код необходимо принять в качестве кратера

0
ответ дан 29 November 2019 в 03:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: