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

Arabic numbers with ar-ae and ar-sa locale 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 的阿拉伯语语言环境,有没有办法看到 "normal" 位数字?

现在我所做的是使用自定义字体,并在自定义字体的文件中将 Hindu-Arabic 数字的数字替换为 "western-Arabic" 数字的对应字符。

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

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

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

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

您应该信任您正在使用的语言环境。如果您专门针对 ar_SA,那么您应该让它按照适合该国家/地区的方式呈现内容。如果您只想要阿拉伯语但想要西方阿拉伯数字,那么请尝试来自西方阿拉伯国家之一的语言环境,例如 ar_MA。