NSLocale and country name

后端 未结 2 1143
天命终不由人
天命终不由人 2020-12-07 18:34

I used this code for getting which country iPhone belong to:

NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLoc         


        
相关标签:
2条回答
  • 2020-12-07 19:27

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

    0 讨论(0)
  • 2020-12-07 19:34

    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];
    
    0 讨论(0)
提交回复
热议问题