这是我第一次使用ICU API,并且很难找到我认为非常简单的内容:以本地语言(而不是英语)获得给定的语言环境/语言名称
例子:
fr -> Français
en -> English
pt_BR -> Português Brasileiro, or "Português (Brasil)"
es_ES -> Español Iberico, or "Español (España)"
Run Code Online (Sandbox Code Playgroud)
作为参考,babel我可以使用任何语言获得给定的语言环境名称,native是默认语言:
>>> import babel
>>> locale = babel.Locale.parse('pt_BR')
>>> locale.get_display_name()
português (Brasil)
>>> locale.get_display_name('fr')
portugais (Brésil)
>>> locale.get_display_name('en')
Portuguese (Brazil)
Run Code Online (Sandbox Code Playgroud)
那么,如何在ICU中做同样的事情?由于我使用的是PyICU,因此最欢迎使用python中的示例,但是Java / C / C ++也很好,因为我的问题是API而不是语言。
谢谢!
我刚刚发现:最好的方法是getDisplayName(),但是,我必须传递...一个 Locale 实例,而不是传递字符串作为参数!
完整的代码如下:
>>> import icu
>>> locale = icu.Locale("pt_BR")
>>> print icu.getDisplayName()
u'portuguese (Brazil)'
>>> print icu.getDisplayName(locale)
u'portugu\xeas (Brasil)'
Run Code Online (Sandbox Code Playgroud)
因此,与 babel 不同,Locale 方法默认返回用户当前语言环境中的名称。我必须传递实例本身才能获取母语名称。因此,如果您想要使用您的语言(在我的例子中是英语)名称,那么这很容易,但如果我想要法语名称,例如,我将必须创建一个新的“fr_FR”的 Locale 实例。奇怪的 API,但仍然......