2015-05-09 9 views
7

Mam bazę danych na serwerze, która zawiera wszystkie słowa kluczowe, których używam w swoich aplikacjach i te języki można zmienić w dowolnym momencie.Jak uzyskać szczegółowe informacje o urządzeniu w wersji szybkiej

W tabeli językowej bazy danych znajduje się column dla Language(id , key, value, lang).

W aplikacji na Androida odczytuję język z urządzenia i zwraca na przykład en-GB lub en-US.

Ale w aplikacji na iOS nie mogę uzyskać języka podobnego do powyższego przykładu, zawsze zwraca tylko język (en , es, fr).

Nie mogę więc przesyłać zapytań do bazy danych, aby uzyskać słowa kluczowe z określonymi językami w aplikacji na iOS. Ponieważ języki w bazie danych to en-GB, en-US style.

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

Jak mogę uzyskać język z większą ilością szczegółów?

Odpowiedz

13

Zacznij od currentLocale() i zadawaj pytania na ten temat. Na przykład:

let lang = NSLocale.currentLocale().localeIdentifier 

Lub na poziomie drobniejszej ziarnistości:

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

Jeśli ktoś we Francji korzystanie z telefonu iPhone z języka angielskiego, Twój kod będzie powraca en-FR? lub en-US? –

+0

Ustawienia regionalne to ustawienie systemowe. Nie ma to nic wspólnego z fizycznym umiejscowieniem telefonu. Nic o magicznej zmianie telefonu po prostu dlatego, że przekraczasz granicę! Jeśli chcesz się dowiedzieć, gdzie znajduje się telefon, skorzystaj z usług lokalizacyjnych. – matt

0

prostu użyć tej linii kodu można rozwiązać:

identyfikatorów let = Locale.current.identifier

Powiązane problemy