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

Posted

技术标签:

【中文标题】如何使用 Swift 在 iOS 上获取 ISO 639-2 国家代码【英文标题】:How to Get the ISO 639-2 country Code on iOS using Swift 【发布时间】:2019-01-03 07:25:23 【问题描述】:

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

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

但我需要三位数代码 (FRA),请有人建议我获取 ISO

639-2 代码

我也检查了 Apple 文档,但我不知道如何获取确切的代码

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

谢谢。

【问题讨论】:

【参考方案1】:

https://github.com/almerlucke/NSLocale-ISO639_2 提供了一个 Objective C 解决方案。

使用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]
    


【讨论】:

你能检查我的截图表 B-1 语言指示符,苹果提供了一些关于 ISO639_2 的信息,是否有任何特定的方法或关键字可用于获取代码? @NandhaKumar 没有。我没有找到。根据其他人的工作,没有其他人发现过。如果您想要获取 ISO 639-2 代码的方法,则需要找到一些第三方代码,或者创建自己的实现。【参考方案2】:

不,你不能直接获取 ISO 代码,Locale 不直接提供代码,你有另一种方式提取代码

https://github.com/lukes/ISO-3166-Countries-with-Regional-Codes/blob/master/all/all.json

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

因此您可以根据您的语言环境代码获取 ISO(alpha-3) 代码。

【讨论】:

@NandhaKumar 适合你吗?那么请接受答案 @NandhaKumar 所以你需要这个答案吗?

以上是关于如何使用 Swift 在 iOS 上获取 ISO 639-2 国家代码的主要内容,如果未能解决你的问题,请参考以下文章

iOS:Swift - 如何在触摸地图上添加精确定位并获取该位置的详细地址?

从 api 获取所有数据以及如何在 swift ios 中仅在单元格上附加标题

如何在 IOS 中获取 ISO 语言代码?

如何在iOS swift中获取点击点(坐标)

如何在 Swift iOS 中仅在最后一个屏幕上获取导航栏?

如何在 IOS/SWIFT/OBJ-C/CORDOVa 上获取手指 ID(哪个手指用于触摸 ID)或唯一触摸 ID