2015-03-22 3 views
6

Задача: у меня есть два UIImageViews, и я хочу представить ImageView1, если системный язык является украинским, а если он не украинский (английский/польский и т. Д.), Я хочу представить ImageView2.Проверить язык в приложении iOS

Я пробовал:

println(NSUserDefaults.standardUserDefaults().objectForKey("AppleLanguages")) 

но этот код дает только список доступных языков. Я также пробовал

var language: AnyObject? = NSLocale.preferredLanguages().first 

но как я могу сравнить эту переменную с английским или украинским языком?

+0

ли вы войти результат 'NSLocale.preferredLanguages ​​() first'? Что это тебе дало. – Wain

+0

Это дает мне необязательный (ru) –

ответ

18

Swift 3 Вы можете взять код языка как этот

let preferredLanguage = NSLocale.preferredLanguages[0] 

И тогда вам нужно сравнить его с кодом строки

if preferredLanguage == "en" { 
    print("this is English") 
} else if preferredLanguage == "uk" { 
    print("this is Ukrainian") 
} 

Вы можете найти коды here

Пример проверки французского ...

/// Is Device use french language 
/// Consider, "fr-CA", "fr-FR", "fr-CH" et cetera 
/// 
/// - Returns: Bool 
static func isFrench() -> Bool { 
    return NSLocale.preferredLanguages[0].range(of:"fr") != nil 
} 
+0

совершенный, я забыл указать свою переменную, спасибо –

+0

Помните, что вы разворачиваете необязательный параметр с помощью 'as String', и, возможно, было бы разумно использовать его в' if let' сооружение. Только мои два цента. И вы действительно просто хотите посмотреть на первый/[0] предпочтительных языков, а не на весь массив? – holroy

+0

Я думаю, что вопрос задавался в отношении одного языка. Скорее всего, вам не нужны несколько языков. Если вы это сделаете, вы можете просто взять весь массив и работать с каждым из значений. Кроме того, я хотел бы верить, что в массиве всегда есть один язык, но поскольку это будет предположение, я обновляю свой ответ. – Jonauz

1

вы можете использовать следующий код он прекрасно работает с быстрыми 3

if Bundle.main.preferredLocalizations.first == "en" { 
     print("this is english") 
    }else{ 
     print("this not english") 
    } 
0

Swift 4 Если у вас есть несколько языков на очереди (preferredLanguage волевых возвращается: "ик-США", например) но сначала вы хотите.
Вы можете сделать это следующим образом:.

let preferredLanguage = NSLocale.preferredLanguages[0] 
if preferredLanguage.starts(with: "uk"){ 
print("this is Ukrainian") 
} else{ 
print("this is not Ukrainian") 
} 
Смежные вопросы