Ich möchte den Sprachcode des Geräts (en, es ...) in meiner mit Swift geschriebenen App erhalten. Wie kann man das bekommen?
Ich versuche das:
var preferredLanguages : NSLocale!
let pre = preferredLanguages.displayNameForKey(NSLocaleIdentifier, value: preferredLanguages)
Aber das gibt nichts zurück.
Es ist wichtig, den Unterschied zwischen der App-Sprache und der Sprache des Gerätegebietsschemas zu machen (Der folgende Code befindet sich in Swift 3 ).
Gibt die Gerätesprache zurück :
Gibt die App- Sprache zurück:
quelle
Locale.current.languageCode: de Locale.current.identifier: de_DE Locale.preferredLanguages[0]: de
Wenn meine App-Entwicklungssprache EN ist und ich auf einem FR-konfigurierten Gerät ausgeführt habe, für das ich das nicht lokalisiert habe App das Ergebnis ist:Locale.current.languageCode: en Locale.current.identifier: en_FR Locale.preferredLanguages[0]: fr
Swift 4 & 5:
quelle
Locale(identifier: Locale.current.identifier)
;Locale.autoupdatingCurrent.languageCode
ist auch verfügbarIn Swift 3:
quelle
Um die aktuelle Sprache in Ihrer App zu verwenden (anders als die bevorzugten Sprachen)
quelle
Swift 3 & 4 & 4.2 & 5
Locale.current.languageCode
kompiliert nicht regelmäßig. Weil Sie keine Lokalisierung für Ihr Projekt implementiert haben.Sie haben zwei mögliche Lösungen
1)
String(Locale.preferredLanguages[0].prefix(2))
Das Telefon wird ordnungsgemäß zurückgegeben.Wenn Sie den Typ erhalten möchten
en-En
, können Sie verwendenLocale.preferredLanguages[0]
2) Wählen Sie
Project(MyApp)
->Project (not Target)
-> drücken Sie die Taste +Localizations
und fügen Sie die gewünschte Sprache hinzu.quelle
schnell 3
quelle
let langStr = Locale.preferredLanguages.first!
Dies ist, was ich getan habe, um diesen Beitrag zu überprüfen. Es funktioniert und ich vergleiche meine SprachenlangStr.lowercased().contains("es")
zum Beispiel mit allen spanischen Sprachvarianten.Sie können den folgenden Code verwenden, es funktioniert gut mit Swift 3
quelle
Ich möchte die vom Benutzer in der Einstellungen-App ausgewählte Sprache jedes Mal verfolgen, wenn der Benutzer meine App startet - das ist noch nicht lokalisiert (meine App ist nur in Englisch). Ich habe diese Logik übernommen:
Erstellen Sie eine Aufzählung , um den Umgang mit den Sprachen im Array zu vereinfachen
Erstellen Sie einige Erweiterungen für das Gebietsschema
Bei Bedarf können Sie einfach die Erweiterung verwenden
quelle
In Swift können Sie das Gebietsschema mit abrufen.
quelle
Locale.current.languageCode
Gibt mir falschen Code zurück, daher verwende ich diese Erweiterungen:quelle
Folgendes verwende ich in Swift 5 Xcode 11:
Innerhalb der Klassenvariablen:
Dies kommt als Zeichenfolge. Es werden 2 Zeichen zurückgegeben, dh "en", "es", "de" ...
Daraus kann ich leicht bestimmen, welche Sprache angezeigt werden soll:
Wenn Sie die vollständigen Informationen der Sprache wünschen, entfernen Sie? .Prefex (2)
quelle