python – 如何用母语获取语言名称?

这是我第一次使用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)"

作为参考,在babel我可以用任何语言获得给定的语言环境名称,本机是默认语言:

>>> 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)

那么,如何在ICU中做同样的事情呢? python中的例子是最受欢迎的,因为我使用的是PyICU,但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)'

因此,与babel不同,Locale方法默认返回用户当前语言环境中的名称.我必须传递实例本身才能用母语获取名称.所以如果你想要用你的语言(在我的例子中,英语),你很容易,但是如果我想要法语,例如,我将不得不创建一个新的’fr_FR’的Locale实例.奇怪的API,但仍然……

上一篇:十年探索,云上明灯,re:Invent再启掀产业风暴


下一篇:CloudFront-转发到其他域名