Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSLocale and country name

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...

like image 899
yosifz8 Avatar asked May 30 '11 14:05

yosifz8


2 Answers

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]; 
like image 80
Matthias Bauch Avatar answered Sep 25 '22 13:09

Matthias Bauch


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):

You get this kind of information (example):

like image 41
LukeSideWalker Avatar answered Sep 23 '22 13:09

LukeSideWalker