I used this code for getting which country iPhone belong to:
NSLocale *locale = [NSLocale currentLocale]; NSString *countryCode = [locale objectForKey: NSLocaleCountryCode]; NSString *country = [locale displayNameForKey: NSLocaleCountryCode value: countryCode];
and I want to get the country name always in English, but if the iPhone is in any other language it returns the country name in that language...
Query an english locale for the displayName
like this:
NSLocale *locale = [NSLocale currentLocale]; NSString *countryCode = [locale objectForKey: NSLocaleCountryCode]; NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; NSString *country = [usLocale displayNameForKey: NSLocaleCountryCode value: countryCode];
Here is a bit a code for getting some informations about the available NSLocale-Objects in SWIFT, Just put the code into the Playground:
func printInEnglish() { // get all available Identifiers let allLocaleIdentifiers : Array<String> = NSLocale.availableLocaleIdentifiers as Array<String> // init an english NSLocale to get the english name of all NSLocale-Objects let englishLocale : NSLocale = NSLocale.init(localeIdentifier : "en_US") // enumerate all available Identifiers for anyLocaleID in allLocaleIdentifiers { // get the english name var theEnglishName : String? = englishLocale.displayName(forKey: NSLocale.Key.identifier, value: anyLocaleID) if theEnglishName == nil {theEnglishName = "no english name available"} // create a NSLocale-Object let anyLocale : NSLocale = NSLocale.init(localeIdentifier : anyLocaleID) // ask for CurrencyCode, CurrencySymbol and CountryCode, ... of the created NSLocale-Object var theCurrencyCode : String? = anyLocale.object(forKey: NSLocale.Key.currencyCode) as? String if theCurrencyCode == nil {theCurrencyCode = "no Currency Code available"} var theCurrencySymbol : String? = anyLocale.object(forKey: NSLocale.Key.currencySymbol) as? String if theCurrencySymbol == nil {theCurrencySymbol = "no currency symbol available"} var theCountryCode : String? = anyLocale.object(forKey: NSLocale.Key.countryCode) as? String if theCountryCode == nil {theCountryCode = "no country code available"} var theLanguageCode : String? = anyLocale.object(forKey: NSLocale.Key.languageCode) as? String if theLanguageCode == nil {theLanguageCode = "no language code available"} // print the result -> see the result in LoggingArea of xCode print("Identifier : \(anyLocaleID)\nName : \(theEnglishName!)\nCurrencyCode : \(theCurrencyCode!)\nSymbol : \(theCurrencySymbol!)\nLanguageCode : \(theLanguageCode!)\nCountryCode : \(theCountryCode!)\n----------------------------") } } printInEnglish()
You get this kind of information (example):
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With