我想在我的应用程序中支持希伯来语资源(默认为英语)。
我在“res/values-iw/strings.xml”下分配了希伯来语资源并在模拟器中对其进行了测试。结果很好 - 将模拟器语言切换为希伯来语后,我在我的应用程序中看到了希伯来语字符串。

问题是在将设备语言设置为希伯来语后,它没有出现在我的设备(三星 Galaxy S2)中。我一直看到英文字符串。

任何想法如何解决它?

谢谢!

最佳答案

尝试从 res/values-iw/在 res/values-he/中添加资源的重复副本,如果需要,对于 res/xml-he/等也是如此。

三星 Galaxy S2 的操作系统处理希伯来语语言环境和资源的方式似乎与其他 Android 设备不同。 Android 对希伯来语使用语言代码“iw”以实现旧版兼容性,而三星显然将其更改为使用语言代码“he”,根据 ISO 639-1 可以说是正确的,但不兼容。有关更多背景信息,请参阅 Android issue 3639

结果是 res/*-iw/中的资源没有加载到受影响的三星设备上,解决方法是在 res/*-he/中添加一个副本。

要确认,请尝试以下操作:

Locale loc = new Locale("iw");
Log.i(TAG, "locale language: " + loc.getLanguage());
Log.i(TAG, "display language: " + loc.getDisplayLanguage());

这应该在普通 Android 设备上打印“iw”,在 Galaxy S2 上打印“he”,“עברית”作为两者的显示语言。由于没有受影响的设备,我无法自己测试。

请参阅 Hacker's Keyboard issue 122,它也受到相同问题的影响。

关于Android 模拟器正确显示希伯来语资源,但设备不显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8699650/

10-11 01:26