Comment obtenir le code de langue actuel avec Swift?

Je veux obtenir le code de langue de l’appareil (en, es …) dans mon application écrite avec Swift. Comment peut-on obtenir ça?

J’essaie ça:

var preferredLanguages : NSLocale! let pre = preferredLanguages.displayNameForKey(NSLocaleIdentifier, value: preferredLanguages) 

Mais cela retourne nul.

Merci!

Dans Swift 3

 let langStr = Locale.current.languageCode 

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 dans Swift 3 )

Renverra la langue du périphérique :

 let locale = NSLocale.current.languageCode 

Retournera la langue de l’ application :

 let pre = Locale.preferredLanguages[0] 

Pour utiliser la langue courante dans votre application (différente des langues préférées)

 NSLocale.currentLocale().objectForKey(NSLocaleLanguageCode)! 

Dans Swift 3:

 NSLocale.current.languageCode 

Dans Swift 4:

 Locale.current.languageCode 

swift 3

 let prefferedLanguage = Locale.preferredLanguages[0] as Ssortingng print (prefferedLanguage) //en-US let arr = prefferedLanguage.components(separatedBy: "-") let deviceLanguage = arr.first print (deviceLanguage) //en 

vous pouvez utiliser le code ci-dessous, il fonctionne bien avec swift 3

 var preferredLanguage : Ssortingng = Bundle.main.preferredLocalizations.first! 

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:

  1. créer un enum pour faciliter le traitement des langues dans le tableau

     enum Language: Ssortingng { case none = "" case en = "English" case fr = "French" case it = "Italian" } // add as many languages you want 
  2. créer un couple d’ extension à Locale

     extension Locale { static var enLocale: Locale { return Locale(identifier: "en-EN") } // to use in **currentLanguage** to get the localizedSsortingng in English static var currentLanguage: Language? { guard let code = preferredLanguages.first?.components(separatedBy: "-").last else { print("could not detect language code") return nil } guard let rawValue = enLocale.localizedSsortingng(forLanguageCode: code) else { print("could not localize language code") return nil } guard let language = Language(rawValue: rawValue) else { print("could not init language from raw value") return nil } print("language: \(code)-\(rawValue)") return language } } 
  3. Lorsque vous avez besoin, vous pouvez simplement utiliser l’extension

     if let currentLanguage = Locale.currentLanguage { print(currentLanguage.rawValue) // Your code here. }