java生成bcp_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服务公开以供您的应用程序使用.

标签:locale,java,android

来源: https://codeday.me/bug/20191202/2085297.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值