使用应用语言而非 phone 区域设置语言的国家代码检索国家名称

Retrieve country name using country code in app language not phone locale language

我正在使用 Localize_Swift 库。我使用它更改应用程序语言。现在我正在使用国家代码检索国家名称。

class Country: NSObject {

   class func locale(for countryCode : String) -> String {
    
       let identifier = NSLocale(localeIdentifier: countryCode)
       let countryName = identifier.displayName(forKey: NSLocale.Key.countryCode, value: countryCode)
    
       return countryName?.uppercased() ?? ""
   
   }
}

该功能是 return 以 phone 区域设置语言而不是应用程序语言输入国家/地区名称。有没有办法让它 return 在其区域设置语言名称中成为国家/地区名称。

Example: Germany -> Deutschland

Example: Austria -> Österreich

或者有任何变通建议?

您只需在初始化区域设置时指定语言:

struct Country {
    static func locale(for regionCode: String, language: String = "en") -> String? {
        Locale(identifier: language + "_" + regionCode)
            .localizedString(forRegionCode: regionCode)
   }
}

Country.locale(for: "DE")                  // "Germany"
Country.locale(for: "DE", language: "de")  // "Deutschland"

如果您想自动select基于country/region代码的语言:

struct Country {
    static func locale(for regionCode: String) -> String? {
        let languageCode = Locale(identifier: regionCode).languageCode ?? "en"
        return Locale(identifier: languageCode + "_" + regionCode)
            .localizedString(forRegionCode: regionCode)
   }
}

Country.locale(for: "DE")   // "Deutschland"