Java 更改android数字区域设置
我成功地将多个区域设置添加到我的应用程序中,并找到了如何在它们之间切换的方法,但问题是在切换区域设置后,除了数字以外,其他一切都正常工作 例如,如果我切换到波斯语数字将保持123,这是错误的,应该切换到١٣Java 更改android数字区域设置,java,android,locale,Java,Android,Locale,我成功地将多个区域设置添加到我的应用程序中,并找到了如何在它们之间切换的方法,但问题是在切换区域设置后,除了数字以外,其他一切都正常工作 例如,如果我切换到波斯语数字将保持123,这是错误的,应该切换到١٣ 我不能使用String.format(number),因为我的大多数数字都包含在字符串中。这里有人能帮我吗?如果您想翻译数字,您不能将其绑定为字符串,必须将其设置为float或int <string name="numberRes">%d</string
我不能使用
String.format(number)
,因为我的大多数数字都包含在字符串中。这里有人能帮我吗?如果您想翻译数字,您不能将其绑定为字符串,必须将其设置为float或int
<string name="numberRes">%d</string>
textview.setText(String.format(R.string.numberRes,numberValue))
如果字符串的数字格式错误,请小心数字格式异常我找到的最佳解决方案是在波斯语/阿拉伯语地区强制使用数字字体! 您必须创建多个
font.xml
文件,并将其放入res/font
中,然后使用基于区域设置的主题
将相关字体分配给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
正如我所说,我的大多数数字都是来自服务器或用户输入电话号码/生日之类的字符串。然后我建议检查区域设置,如果是波斯语,则使用正则表达式提取/替换它们。类似于
string.replace('1','?')。replace('2','?'))
等
font/font-en.xml
font/font-ar.xml
font/font-fa.xml
values-en/themes.xml
values-ar/themes.xml
values-fa/themes.xml