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

标签 ios swift

我想在 View 中显示“繁体中文”、“简体中文”。

我使用Locale.displayname获取displayname,我的参数是“zh-Hant”和“zh-Hans”,返回值会返回“中文(繁体)”和“中文(简体)”。

这是我的部分代码:

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

有谁知道如何从 iOS 函数中获取“繁体中文”、“简体中文”?

最佳答案

这是一个使用原生 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

关于ios - 如何获取语言环境的完整显示名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57758990/

相关文章:

ios - 在自定义应用程序中使用 Touch ID - 只有 5 个用户?

ios - 如何在没有云功能的情况下将请求从 iOS (Swift) 发送到 Dialogflow V2 API?

ios - UITableView 部分标题未显示

swift - 解析 PFSubclassing 不适用于 Swift

ios - InputToolbar 发送按钮不起作用

ios - 如何在 iOS 的众多 CALayer 上高效绘制阴影?

ios - 如何从 SecCertificateRef 和 PrivateKey 获取 SecIdentityRef?

iphone - 了解 Cocoa Touch 中的 MVC 设计模式

ios - 在 Swift 的分段控件中选择任何分段时如何创建和突出显示红色细线(向下)

ios - 带有层角半径和阴影的 UILabel