2015-05-09 11 views
7

Ich habe eine Datenbank auf dem Server, die alle Sprachen Schlüsselwörter enthält, die ich in meinen Anwendungen verwenden, und diese Sprachen können jederzeit geändert werden.So erhalten Sie detaillierte Sprache des Geräts in Swift

In der Sprache Tabelle der Datenbank gibt es column für Language(id , key, value, lang).

In der Android-Anwendung lese ich die Sprache von Gerät und es gibt zum Beispiel en-GB oder en-US zurück.

Aber in der iOS-Anwendung kann ich nicht die Sprache wie im obigen Beispiel erhalten, es gibt immer nur die Sprache zurück (en , es, fr).

So kann ich nicht in die Datenbank abfragen, um die Sprache angegebenen Schlüsselwörter auf der iOS-Anwendung zu erhalten. Da die Sprachen in der Datenbank en-GB, en-US-Stil sind.

var langId: String? = NSLocale.preferredLanguages().first as? String 

Wie kann ich die Sprache mit mehr Details erhalten?

Antwort

13

Beginnen Sie mit der currentLocale() und stellen Sie Fragen dazu. Zum Beispiel:

let lang = NSLocale.currentLocale().localeIdentifier 

Oder auf einer feineren Ebene der Granularität:

let langId = NSLocale.currentLocale().objectForKey(NSLocaleLanguageCode) as! String 
let countryId = NSLocale.currentLocale().objectForKey(NSLocaleCountryCode) as! String 
let language = "\(langId)-\(countryId)" // en-US on my machine 
+0

Wenn jemand in Frankreich verwenden, um ein iPhone mit der englischen Sprache, Ihr Code kehrt en-FR? oder en-US? –

+0

Gebietsschema ist eine Systemeinstellung. Es hat nichts damit zu tun, wo sich das Telefon physisch befindet. Nichts am Handy ändert sich magisch, nur weil man eine Grenze überquert! Wenn Sie wissen möchten, wo sich das Telefon befindet, verwenden Sie Standortdienste. – matt

0

verwenden nur diese Codezeile lösen kann:

let Kennung = Locale.current.identifier

Verwandte Themen