Android中的ar-ae和ar-sa语言环境的阿拉伯数字

时间:2017-01-19 10:33:35

标签: android locale arabic

正如我在以下问题中提出的那样:

Arabic number in Arabic text in Android

如果我使用阿拉伯语语言环境ar-ae或ar-sa,则使用印度语 - 阿拉伯语数字显示数字。 我需要显示英文中的数字:“1234567890”。

我曾经使用设置数字扩展名

的技巧
Locale.Builder builder = new Locale.Builder();
builder.setLocale(savedLocale).setExtension(Locale.UNICODE_LOCALE_EXTENSION, "nu-latn");
Locale locale = builder.build();

问题在于,在您执行此操作后,资源查找会被破坏,而使用Nougat它就不再起作用了。

有没有办法看到“正常”数字,即使使用阿拉伯语区域设置ae和sa?

3 个答案:

答案 0 :(得分:2)

一种解决方法是替换数字字符的字体。您可以保留文本的原始字体。

我建议通过扩展TypeFaceSpan以干净的方式做到这一点。 看一下这个question

如果您需要一些代码,请告诉我,我会更新此答案。

答案 1 :(得分:1)

目前我所做的是使用自定义字体,并在自定义字体的文件中替换带有印度语 - 阿拉伯数字的数字,以及“西阿拉伯”数字的对应字符。

请检查 how to remove characters from a font file?

答案 2 :(得分:1)

您应该信任您正在使用的区域设置。如果你是专门针对ar_SA那么你应该让它按照它对国家的方式呈现。如果你只想要阿拉伯语,但想要西方的阿拉伯语数字,那么可以尝试一下阿拉伯西部国家的语言环境,例如ar_MA。