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

如何使用Swift在iOS上获取ISO 639-2国家代码,ios,iphone,swift,swift3,swift2,Ios,Iphone,Swift,Swift3,Swift2,目前我使用了以下代码,但它只返回两位数的代码 if let countryCode = (Locale.current as NSLocale).object(forKey: .countryCode) as? String { print("Code => \(countryCode)") //FR } 但我需要三位数的代码(FRA),请任何人建议我获得ISO认证 639-2代码 我也检查了苹果的文档,但我不知道如何得到确切的代码 谢谢。不,您不能直接获

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

    if let countryCode = (Locale.current as NSLocale).object(forKey: .countryCode) as? String {
      print("Code => \(countryCode)") //FR
    }
但我需要三位数的代码(FRA),请任何人建议我获得ISO认证

639-2代码

我也检查了苹果的文档,但我不知道如何得到确切的代码


谢谢。

不,您不能直接获取ISO代码,Locale不直接提供代码,您可以用另一种方式提取代码

从上面的URL下载json,它将为您提供所有国家的详细信息,还包含ISO代码和alpha-2代码


因此,您可以根据您的区域设置代码获得ISO(alpha-3)代码。

提供了一个Objective C解决方案

这将不难创建自己的加载使用


@NandhaKumar为你工作?然后回答please@NandhaKumar那么你需要这个答案吗?你能检查我的屏幕截图表B-1语言指示符吗?苹果提供了一些关于ISO639_2的信息,有没有任何特定的方法或关键字可用于获取代码?@NandhaKumar No.我没有找到。根据其他人的工作,没有其他人发现的。如果您想要获得ISO 639-2代码的方法,则需要找到一些第三方代码,或者创建自己的实现。
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]
    }

}