阿拉伯语言中的字符顺序处理
大约 2 分钟
在阿拉伯语中,字符顺序是从右往左的,而且如果在其中插入非数字的字符,会导致语序错误...
替换字符后错误的语序
在上面的示例中,我们可以看到将 0
替换为 五
的输出结果导致语句顺序错误了,而在游戏看到的结果也是错误的
怎么解决?
经过我的尝试,发现使用 Unicode 字符 \u202b
和 \u202c
包裹非阿拉伯语的字符即可正常替换
为什么可以这样做?
在 wiki 百科中,介绍了 U+202B
是从右到左嵌入,那么和我们的目标一致,而 U+202C
解释比较含糊,实际的作用是 终止嵌入或覆盖控制
,也就是在嵌入非阿拉伯语字符结束后,我们需要使用 U+202C
来表示嵌入字符结束了,才能正常展示出来
阿拉伯语中的数字开头导致的语序错误
通常,你拿到的翻译结果中,需要数字开头展示的字符串在结果中往往会跑到左边(阿拉伯语从右边开头),如下
怎么解决?
我们只需要将开头的数字也使用 \u202b
和 \u202c
包围即可