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

如何将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代码提供什么支持?我对获取如上例所示的显示名称特别感兴趣.

解决方法:

Android不支持.通常,我认为您不会在ICU之外找到这种支持.

因此,您有两个选择:ICU4J或ICU4C.

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

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

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

上一篇:python时间戳,获取当前时间,时间格式转换,求出前几天或后几天的时间


下一篇:记账本开发记录——第九天(2020.1.27)