如何使用 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 中仅在单元格上附加标题