This is my first time using ICU API, and I’m having a very hard time trying to find out something that I assumed to be very simple: to get a given locale/language name in the native language (instead of in English)
Examples:
fr -> Français
en -> English
pt_BR -> Português Brasileiro, or "Português (Brasil)"
es_ES -> Español Iberico, or "Español (España)"
As a reference, in babel I can get a given locale name in any language, native being the default:
>>> 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)
So, how to do the same in ICU? Examples in python are most welcome, since I’m using PyICU, but Java/C/C++ is fine too, since my problem is with the API, and not the language.
Thanks!
I’ve just found out: the best method is
getDisplayName(), but, instead of passing an string as argument, I must pass… a Locale instance!The complete code goes like:
So, unlike babel, Locale methods by default return names in the user’s current locale. I must pass the instance itself to get name in native language. So it’s easy if you want names in your language (in my case, English), but if I wanted in French, for example, I would have to create a new Locale instance of ‘fr_FR’. Weird API, but still…