If you want to know what current device language is for iOS, you can use NSLocale.preferredLanguages.first. This will give you the most preferred language user setup in system. Which is also the system language. This will gives you a string identifier. Here is a list of string identifier for iOS.

If you want to know if user system is French, using string comparison has a problem. Because there can be multiple result being French. Fro example: fr_CA, fr_FR. etc. So I use preferredLanguage?.starts(with: “fr”) to see if it is French.

Complete code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DeviceLocaleType {
case en
case fr
case other
}

static func deviceLocale() -> DeviceLocaleType {
let preferredLanguage = NSLocale.preferredLanguages.first
if preferredLanguage?.starts(with: "en") ?? false {
return .en
} else if preferredLanguage?.starts(with: "fr") ?? false {
return .fr
} else {
return .other
}
}