语言代码到友好名称

Aud*_*234 6 macos localization swift

我有一个语言代码,例如“en_US”,并且我正在尝试从中获取一个友好的名称,例如“English”。

这就是我现在正在做的事情:

Locale.current.localizedString(forLanguageCode: code)
Run Code Online (Sandbox Code Playgroud)

它可以工作,但对于中文等语言,它并不能完全达到我想要的效果。

zh-Hans应返回“简体中文”,并zh-Hant应返回“繁体中文”。

然而,他们都只是返回“Chinese”。您如何让他们返回正确的值?

ahe*_*eze 4

您可以使用 NSLocaledisplayName(forKey:value:)来代替。

let code = "en_US"
if let identifier = (Locale.current as NSLocale).displayName(forKey: .identifier, value: code) {
    print(identifier) /// English (United States)
}
Run Code Online (Sandbox Code Playgroud)
let code = "zh_Hans"
if let identifier = (Locale.current as NSLocale).displayName(forKey: .identifier, value: code) {
    print(identifier) /// Chinese, Simplified
}
Run Code Online (Sandbox Code Playgroud)