Android模拟器正确显示希伯来语资源,但设备没有

时间:2012-01-02 10:17:32

标签: android

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

问题是在将设备语言设置为希伯来语后,它并未显示在我的设备(Samsung Galaxy S2)中。我一直在看英文字符串。

任何想法如何解决?

谢谢!

2 个答案:

答案 0 :(得分:4)

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

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

效果是 res / * - iw / 中的资源未在受影响的Samsung设备上加载,解决方法是在 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

答案 1 :(得分:1)

仿真器Android版本与三星Galaxy S2版本相同吗?

尝试找出在设备上转换为希伯来语后获得的语言环境语言和国家/地区。也许它不是新的。

String lang = Locale.getLocale().getDisplayLanguage();
String country = Locale.getLocale().getDisplayCountry();