Dan*_*own 3 android internationalization
这发生在我们在印度尼西亚拥有的所有设备上。
国家/地区代码正确,显示语言和 ISO3 似乎也正确:
Locale.getDefault().getISO3Country() // "IDN"
Locale.getDefault().getDisplayCountry() // "Indonesia"
Locale.getDefault().getCountry() // "ID"
Locale.getDefault().getISO3Language() // "ind"
Locale.getDefault().getDisplayLanguage() // "Bahasa Indonesia"
Run Code Online (Sandbox Code Playgroud)
但是正常的语言代码是错误的,应该是“id”而不是“in”。然后android也生成了错误的language_COUNTRY标识符,应该是“id_ID”而不是“in_ID”:
Locale.getDefault().getLanguage() // "in"
Locale.getDefault().toString() // "in_ID"
Run Code Online (Sandbox Code Playgroud)
这是一个已知问题吗?我们对于它可以做些什么呢?
氰化物建议只覆盖语言环境,但是那些真正需要使用“in”而不是“id”的设备呢,那对他们来说是错误的呢?
好吧,找出它发生的原因,请参阅Android 区域设置构造函数参考:
ISO 639 不是一个稳定的标准;它定义的一些语言代码(特别是“iw”、“ji”和“in”)已经改变。此构造函数接受旧代码(“iw”、“ji”和“in”)和新代码(“he”、“yi”和“id”),但 Locale 上的所有其他 API 将仅返回旧代码。
因此,我们无能为力,在应用程序内部使用“in”表示字符串等,并在与后端服务器等外部实体交谈时将其转换为“id”(或将 in 视为 id)。
| 归档时间: |
|
| 查看次数: |
1875 次 |
| 最近记录: |