2015-03-22 15 views
6

Zadanie: Mam dwa UIImageViews, i chcę, aby obecny ImageView1, jeśli językiem systemowym jest ukraiński, a jeśli nie jest ukraiński (angielski/polski itp.), Chcę przedstawić ImageView2.Sprawdź język w aplikacji iOS

Próbowałem:

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

ale kod ten daje tylko listę dostępnych języków. Wypróbowałem także:

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

ale jak mogę porównać tę zmienną z językiem angielskim lub ukraińskim?

+0

Czy zalogować wynik 'NSLocale.preferredLanguages ​​() first'? Co ci to dało. – Wain

+0

To daje mi Opcjonalne (en) –

Odpowiedz

18

Swift 3 Można wziąć kod języka jak ten

let preferredLanguage = NSLocale.preferredLanguages[0] 

A potem trzeba porównać go z kodem ciąg

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

można znaleźć kody here

Przykład sprawdzenia, czy francuski ...

/// 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

idealne, zapomniałem rzucić moją zmienną, dziękuję –

+0

Należy pamiętać, że rozpakowujesz opcjonalnie używając 'as String', i może to być rozsądne używać tego w' if niech budowa. Tylko moje dwa centy. I czy naprawdę chcesz po prostu przyjrzeć się pierwszym/[0] preferowanym językom, a nie całej tablicy? – holroy

+0

Myślę, że pytanie dotyczyło jednego języka. Najprawdopodobniej nie potrzebujesz wielu języków. Jeśli tak, możesz po prostu wziąć całą tablicę i pracować z każdą z wartości. Ponadto, chciałbym wierzyć, że w macierzy jest zawsze jeden język, ale ponieważ byłby to założenie, zaktualizowałem swoją odpowiedź. – Jonauz

1

można użyć poniższy kod współpracuje z szybkimi 3

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

Swift 4 Jeśli masz więcej języków na kolejce (preferredLanguage będzie zwrotów: "UK-USA", na przykład) ale chcesz tego najpierw.
Można zrobić to tak:.

let preferredLanguage = NSLocale.preferredLanguages[0] 
if preferredLanguage.starts(with: "uk"){ 
print("this is Ukrainian") 
} else{ 
print("this is not Ukrainian") 
} 
Powiązane problemy