如何将IETF BCP 47语言代码转换为显示字符串?

时间:2011-12-01 06:01:53

标签: java android locale

如何将IETF BCP 47语言代码[例如zh-cmn-Hant-HK]转换为显示字符串[例如Android(Java)中的“普通话,繁体(香港特别行政区)”是什么?

一些背景知识。我正在处理文本API的演讲。我正在调用sendOrderedBroadcast,传递一个BroadcastReceiver,它通过RecognizerIntent.EXTRA_SUPPORTED_LANGUAGES接收支持的语言列表。 EXTRA_SUPPORTED_LANGUAGES是作为IETF BCP 47代码而不是Java语言环境代码提供的: http://developer.android.com/reference/android/speech/RecognizerIntent.html

Android为使用IETF BCP 47代码提供了哪些支持?我对获取显示名称特别感兴趣,如上例所示。

1 个答案:

答案 0 :(得分:3)

Android中不支持。总的来说,我认为你不会在ICU之外找到这样的支持。

所以你有两个选择:ICU4J或ICU4C。

对于ICU4J,您应携带自己的副本,因为它不存在。

ICU4C出现在Android上(Dalvik的所有国际化功能都在其上实现)。您可以使用NDK(本机开发工具包)从C / C ++模块调用ICU4C,并使用JNI从Java访问本机模块。 但是,虽然ICU4C默认存在,但Android不会暴露它,并且强烈建议不要使用它。更不用说ICU4C数据文件可能会被大量删除,因此拼写bcp 47代码所需的信息可能不存在。

最安全的是你自己的ICU4J副本。您可以将其与应用程序一起部署,也可以将该信息作为Web服务公开,供应用程序使用。