Я хочу получить код языка устройства (en, es ...) в моем приложении, написанном на Swift. Как это получить?
Я пробую это:
var preferredLanguages : NSLocale!
let pre = preferredLanguages.displayNameForKey(NSLocaleIdentifier, value: preferredLanguages)
Но это возвращает ноль.
Важно различать язык приложения и язык локали устройства (код ниже в Swift 3 ).
Возвратим устройства языка:
Возвратит App язык:
источник
Locale.current.languageCode: de Locale.current.identifier: de_DE Locale.preferredLanguages[0]: de
Когда язык разработки моего приложения - EN, и я работаю на устройстве с настройкой FR, для которого я не локализовал приложение результат:Locale.current.languageCode: en Locale.current.identifier: en_FR Locale.preferredLanguages[0]: fr
Swift 4 и 5:
источник
Locale(identifier: Locale.current.identifier)
;Locale.autoupdatingCurrent.languageCode
также доступноВ Swift 3:
источник
Чтобы получить текущий язык, используемый в вашем приложении (отличный от предпочтительных языков)
источник
Swift 3 и 4, 4.2 и 5
Locale.current.languageCode
не компилируется регулярно. Потому что вы не реализовали локализацию своего проекта.У вас есть два возможных решения
1)
String(Locale.preferredLanguages[0].prefix(2))
Он правильно возвращает язык телефона.Если вы хотите получить тип
en-En
, вы можете использоватьLocale.preferredLanguages[0]
2) Выберите
Project(MyApp)
->Project (not Target)
-> нажмите кнопку +Localizations
, затем добавьте нужный язык.источник
быстрый 3
источник
let langStr = Locale.preferredLanguages.first!
это то, что я сделал, просматривая этот пост. Это работает, и я сравниваю со своими языками, например,langStr.lowercased().contains("es")
все варианты испанского языка.вы можете использовать приведенный ниже код, он отлично работает с Swift 3
источник
Я хочу отслеживать язык, выбранный пользователем в приложении «Настройки», каждый раз, когда пользователь запускает мое приложение - оно еще не локализовано (мое приложение только на английском языке). Я принял такую логику:
создать перечисление, чтобы упростить обработку языков в массиве
создать пару расширений для Locale
При необходимости вы можете просто использовать расширение
источник
В Swift вы можете получить локаль, используя.
источник
Locale.current.languageCode
возвращает мне неправильный код, поэтому я использую эти расширения:источник
Вот что я использую в Swift 5 Xcode 11:
Внутри переменных класса:
Это идет в виде строки. Он возвращает 2 символа, то есть «en», «es», «de» ...
Отсюда я могу легко определить, на каком языке отображать:
Если вам нужна полная информация о языке, удалите? .Prefex (2)
источник