Je veux obtenir le code de langue de l'appareil (en, es ...) dans mon application écrit avec Swift. Comment pouvez-vous obtenir cela?
J'essaye ceci:
var preferredLanguages : NSLocale!
let pre = preferredLanguages.displayNameForKey(NSLocaleIdentifier, value: preferredLanguages)
Mais cela renvoie nul.
Il est important de faire la différence entre la langue de l' application et la langue locale de l' appareil (le code ci-dessous est en Swift 3 )
Renvoie la langue de l' appareil :
Renvoie la langue de l' application :
la source
Locale.current.languageCode: de Locale.current.identifier: de_DE Locale.preferredLanguages[0]: de
Lorsque mon langage de développement d'application est EN et que je l'exécute sur un appareil configuré FR, pour lequel je n'ai pas localisé le app le résultat est:Locale.current.languageCode: en Locale.current.identifier: en_FR Locale.preferredLanguages[0]: fr
Swift 4 et 5:
la source
Locale(identifier: Locale.current.identifier)
;Locale.autoupdatingCurrent.languageCode
est également disponibleDans Swift 3:
la source
Pour obtenir la langue actuelle utilisée dans votre application (différente des langues préférées)
la source
Swift 3 et 4 et 4.2 et 5
Locale.current.languageCode
ne compile pas régulièrement. Parce que vous n'avez pas implémenté la localisation pour votre projet.Vous avez deux solutions possibles
1)
String(Locale.preferredLanguages[0].prefix(2))
Il renvoie correctement la langue du téléphone.Si vous souhaitez obtenir le type
en-En
, vous pouvez utiliserLocale.preferredLanguages[0]
2) Sélectionnez
Project(MyApp)
->Project (not Target)
-> appuyez sur le bouton + dansLocalizations
, puis ajoutez la langue souhaitée.la source
rapide 3
la source
let langStr = Locale.preferredLanguages.first!
c'est ce que j'ai fait en examinant ce post. Cela fonctionne, et je compare avec mes langues aveclangStr.lowercased().contains("es")
pour toutes les variantes de la langue espagnole par exemple.vous pouvez utiliser le code ci-dessous, cela fonctionne bien avec swift 3
la source
Je souhaite suivre la langue choisie par l'utilisateur dans l'application Paramètres à chaque fois que l'utilisateur lance mon application - qui n'est pas encore localisée (mon application est en anglais uniquement). J'ai adopté cette logique:
créer une énumération pour faciliter la gestion des langues dans un tableau
créer une ou deux extensions de Locale
Lorsque vous en avez besoin, vous pouvez simplement utiliser l'extension
la source
Dans Swift, vous pouvez obtenir les paramètres régionaux en utilisant.
la source
Locale.current.languageCode
me renvoie un code erroné, j'utilise donc ces extensions:la source
C'est ce que j'utilise dans Swift 5 Xcode 11:
À l'intérieur des variables de classe:
Cela vient comme une chaîne. Il renvoie 2 caractères, c'est à dire "en", "es", "de" ...
À partir de là, je peux facilement déterminer la langue à afficher:
Si vous voulez des informations complètes sur la langue, supprimez? .Prefex (2)
la source