首页 > 解决方案 > How to get full display name for locale

问题描述

I want to show "繁體中文", "简体中文" in a view.

I use Locale.displayname to get displayname and my parameter is "zh-Hant" and "zh-Hans", the value will return "中文(繁體)"and "中文(简体)".

Here is parts of my code:

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

Is anyone know how can I get "繁體中文", "简体中文" from iOS function?

标签: iosswift

解决方案


这是使用 native 的解决方案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

推荐阅读