Chcę uzyskać kod języka urządzenia (en, es ...) w mojej aplikacji napisanej w Swift. Jak to osiągnąć?
Próbuję tego:
var preferredLanguages : NSLocale!
let pre = preferredLanguages.displayNameForKey(NSLocaleIdentifier, value: preferredLanguages)
Ale to zwraca zero.
Ważne jest, aby różnica między językiem App i języka locale urządzenie (Poniższy kod jest Swift 3 )
Zwróci Device język:
Zwróci App język:
źródło
Locale.current.languageCode: de Locale.current.identifier: de_DE Locale.preferredLanguages[0]: de
Gdy język programowania mojej aplikacji to EN i uruchamiam na urządzeniu skonfigurowanym w języku FR, dla którego nie zlokalizowałem app wynik:Locale.current.languageCode: en Locale.current.identifier: en_FR Locale.preferredLanguages[0]: fr
Swift 4 i 5:
źródło
Locale(identifier: Locale.current.identifier)
;Locale.autoupdatingCurrent.languageCode
jest również dostępnyW Swift 3:
źródło
Aby uzyskać aktualny język używany w Twojej aplikacji (inny niż preferowany język)
źródło
Swift 3 i 4 oraz 4,2 i 5
Locale.current.languageCode
nie kompiluje się regularnie. Ponieważ nie zaimplementowałeś lokalizacji dla swojego projektu.Masz dwa możliwe rozwiązania
1)
String(Locale.preferredLanguages[0].prefix(2))
Zwraca poprawnie język telefonu.Jeśli chcesz uzyskać typ
en-En
, możesz użyćLocale.preferredLanguages[0]
2) Wybierz
Project(MyApp)
->Project (not Target)
-> naciśnij przycisk +Localizations
, a następnie dodaj żądany język.źródło
szybki 3
źródło
let langStr = Locale.preferredLanguages.first!
to właśnie zrobiłem przeglądając ten post. To działa, a ja porównuję z moimi językamilangStr.lowercased().contains("es")
na przykład dla wszystkich odmian języka hiszpańskiego.możesz użyć poniższego kodu, działa dobrze ze swift 3
źródło
Chcę śledzić język wybrany przez użytkownika w aplikacji Ustawienia za każdym razem, gdy użytkownik uruchamia moją aplikację - to nie jest jeszcze zlokalizowane (moja aplikacja jest tylko w języku angielskim). Przyjąłem tę logikę:
utwórz wyliczenie, aby ułatwić obsługę języków w tablicy
utwórz kilka rozszerzeń do Locale
Kiedy potrzebujesz, możesz po prostu użyć rozszerzenia
źródło
W Swift możesz uzyskać lokalizację za pomocą.
źródło
Locale.current.languageCode
zwraca mi zły kod, więc używam tych rozszerzeń:źródło
Oto, czego używam w Swift 5 Xcode 11:
Wewnątrz zmiennych klasy:
To pojawia się jako ciąg. Zwraca 2 znaki, tj. „En”, „es”, „de” ...
Na tej podstawie mogę łatwo określić, jaki język wyświetlić:
Jeśli chcesz uzyskać pełne informacje o języku, usuń? .Prefex (2)
źródło