更改 android 号码区域设置

Changing android number locale

我成功地在我的应用程序中添加了多个区域设置并想出了如何在它们之间切换,但问题是在我切换区域设置后一切正常,除了数字

例如,如果我切换到波斯语数字将保持 123,这是错误的,应该切换到 ١٢٣.

我不能使用 String.format(number) 因为我的大部分数字都包含在字符串中。有人可以帮我吗?

如果你也想翻译数字你不能将它绑定为字符串,你必须将它设置为浮点数或整数

<string name="numberRes">%d</string>
textview.setText(String.format(R.string.numberRes,numberValue))

numberValue 必须是整数,如果是浮点数,请将 %d 替换为 %f

如果字符串格式的所有数字都使用

    textview.setText(String.format(R.string.numberRes,Integer.valueOf(numberValue)))

如果您的字符串的数字格式错误,请注意 NumberFormatException

我找到的最佳解决方案是一种在 Persian/Arabic 语言环境中强制使用数字字体的怪异方法! 您必须创建多个 font.xml 文件并将它们放入 res/font,然后使用基于语言环境的 themes 将相关字体分配给 android:fontFamily。 这是结果:

font/font-en.xml
font/font-ar.xml
font/font-fa.xml
values-en/themes.xml
values-ar/themes.xml
values-fa/themes.xml