阿拉伯语数据翻转问题

635 阅读1分钟

 最近做阿拉伯语国际化, 需要将数据翻转,如 -999.99%, 翻转成 %999.99-这样的效果.

1.一开始采用 在span标签上加dir="ltr"强制不转, 内容用js处理翻转, 如

界面上有些地方能如期翻转, 有些不能, 如

2.后来采用直接在标签内部拼接成这种, 很遗憾有些地方能正常翻转, 有些还是不能翻转

3.后来想到这应该和编码有关系, 控制文本展示的顺序. 问了ChatGPT 这的确和unicode的编码有关系. 原理, 大家可以自行看这篇文章.

用编码包裹后, 阿拉伯语页面上数据如期翻转, 完美解决.

编码:

U+202A:   LEFT-TO-RIGHT EMBEDDING (LRE)
U+202B:   RIGHT-TO-LEFT EMBEDDING (RLE)
U+202D:   LEFT-TO-RIGHT OVERRIDE (LRO)
U+202E:   RIGHT-TO-LEFT OVERRIDE (RLO)
U+202C:   POP DIRECTIONAL FORMATTING (PDF)

显式控制字符需要成对使用,前四个字符 LER RLE LRO RLO 为开始字符,最后一个 PDF 为结束字符。

  • LRE & RLE : 接下来的文字片段内的方向变为 从左至右 / 从右至左。效果类似基础方向,将一段文本中的基础方向变更。

  • LRO & RLO : 顾名思义 override,接下来的所有 Unicode 字符的方向性将被覆盖为 从左至右强字符 / 从右至左强字符。

具体效果, 大家自行尝试,才会明了

unicode-bidi 属性也可以处理翻转问题