В моем приложении есть некоторые функции, которые должны быть основаны на языковых настройках устройства, на котором оно работает.
Я хочу получить фактический язык, а не настройки страны. Например, если язык английский, мне все равно, США, Великобритания, Австралия и т. Д.
Я знаком с объектом NSLocale
, но, похоже, он имеет отношение к параметр Формат региона
, а не параметр Язык (см. снимок экрана ниже), поэтому, когда я пытаюсь извлечь язык из него, используя [locale displayNameForKey: NSLocaleIdentifier value: [locale localeIdentifier]
Я получаю такие вещи, как английский (США)
вместо английский
; Кроме того, я думаю, что мне нужны данные Language , а не Формат региона (я прав?).
Может ли кто-нибудь указать мне, как получить языковые настройки ?
Получение языка и региона в Swift
:
LF.log("language", NSLocale.preferredLanguages())
LF.log("locale", NSBundle.mainBundle().preferredLocalizations)
В моем случае я получаю:
language: '(
"zh-Hans"
)'
locale: '(
en
)'
Найдите решение в вспомогательном документе XCode, в нем написано:
Получение текущего языка
Чтобы получить язык, который приложение использует из основного пакета приложения, используйте метод предпочитаемое расположение в класс NSBundle:
NSString *languageID = [[NSBundle mainBundle] preferredLocalizations].firstObject;
Используйте приведенный ниже код для извлечения локализованного языка без проблем с en-india, en-us и т. Д.
NSString *Ph = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0];
В и после ios9 этот код необходимо принять в качестве кратера