swift2 如何在iOS上使用Swift获取ISO 639-2国家代码

col17t5w  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(191)

目前我使用了下面的代码,但是它只会返回两位数的代码

if let countryCode = (Locale.current as NSLocale).object(forKey: .countryCode) as? String {
      print("Code => \(countryCode)") //FR
    }

但我需要三位数的代码(法国),请任何人建议我得到的ISO
639-2代码
我也检查了苹果的文档,但我不知道如何得到确切的代码

https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPInternational/LanguageandLocaleIDs/LanguageandLocaleIDs.html#//apple_ref/doc/uid/10000171i-CH15

  • 谢谢-谢谢
lp0sw83n

lp0sw83n1#

物镜C解决方案在https://github.com/almerlucke/NSLocale-ISO639_2提供。
使用https://github.com/almerlucke/NSLocale-ISO639_2/blob/master/Resources/iso639_2.bundle/iso639_1_to_iso639_2.plist创建您自己的负载并不难

public extension Locale {

    private static let allIso639_2LanguageIdentifiers: [String: String] = {
        guard let path = Bundle.main.path(forResource: "iso639_1_to_iso639_2", ofType: "plist") else { return [:] }
        guard let result = NSDictionary(contentsOfFile: path) as? [String: String] else { return [:] }

        return result
    }()

    public var iso639_2LanguageCode: String? {
        guard let languageCode = languageCode else { return nil }
        return Locale.allIso639_2LanguageIdentifiers[languageCode]
    }

}
tzdcorbm

tzdcorbm2#

不,您无法直接获取ISO代码,Locale不直接提供代码,您必须通过其他方式提取代码
https://github.com/lukes/ISO-3166-Countries-with-Regional-Codes/blob/master/all/all.json
从上面的网址下载json,它将为您提供一个所有国家的详细信息,还包含ISO代码与alpha-2代码。
因此,您可以根据您的区域设置代码获得ISO(alpha-3)代码。

相关问题