最近做阿拉伯语国际化, 需要将数据翻转,如 -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 字符的方向性将被覆盖为 从左至右强字符 / 从右至左强字符。
具体效果, 大家自行尝试,才会明了