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。
正如我在以下问题中所问的那样:
如果我使用阿拉伯语区域设置 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。