如何获取语言环境的完整显示名称

时间:2019-09-02 14:50:56

标签: ios swift

我想在视图中显示“繁体中文”,“简体中文”。

我使用Locale.displayname来获取显示名称,我的参数是“ zh-Hant”和“ zh-Hans”,该值将返回“中文(繁体)”和“中文(简体)”。

这是我的代码的一部分:

let loacleName = locale.displayName(forKey: NSLocale.Key.identifier, value: "zh-Hant")

有人知道如何从iOS功能中获取“繁体中文”,“简体中文”吗?

1 个答案:

答案 0 :(得分:2)

这是使用本机Locale的解决方案。对于标识符zh-Hantzh-Hans,它会使用正则表达式删除不需要的字符(请注意,这些字符不是不是括号和空格字符),并交换了两对。

extension Locale {
    var localizedFullDisplayName : String? {
        if self.identifier.hasPrefix("zh-Han") {
            guard let trimmed = self.localizedString(forIdentifier: self.identifier)?.replacingOccurrences(of: "[()]", with: "", options: .regularExpression) else { return nil }
            return String(trimmed.suffix(2) + trimmed.prefix(2))
        } else {
            return self.localizedString(forIdentifier: locale.identifier)
        }
    }
}

let locale = Locale(identifier: "zh-Hans")
locale.localizedFullDisplayName