我们希望在我们的应用程序中显示文本,有时同时包含 rtl 和 ltr。我能够确定文本的语言,并且可以根据语言切换 dir=ltr 或 dir=rtl。
当同一个句子既有英语又有阿拉伯语文本时,就会出现问题,在这种情况下,我的语言检测检测到阿拉伯语(因为主要语言)并且选择了 dir=rtl。我怎样才能显示这些混合句子
问候, 罗希特
该dir
属性设置方向中性文本的方向性。它不影响拉丁或阿拉伯字母的正常文本;他们遵循其固有的强方向性。好吧,至少他们应该这样做。浏览器有错误,如果您知道应该设置哪个方向,设置dir
可能会有所帮助。此外,设置设置整体布局方向;例如,如果您有阿拉伯文本,其中包含一些英文文本(在最简单的情况下,示意性地,Ar1 后跟 En 后跟 Ar2),您应该设置正确(在示例中,首先是 Ar1,在右边,然后En 到它的左边,然后是 Ar2 最后,即最左边)。dir
dir=rtl
但是,当涉及到像括号这样的方向不明确的字符时,就会出现问题,例如,当阿拉伯文本中的英文文本具有“Hello world (42).”时。在带有 的块内dir=rtl
,它被渲染为“(Hello world (42 .”)</p>
为了解决这个问题,您还需要识别英语片段,并将其包装在您为其设置嵌入方向性的元素中:
<style>
.ltr { unicode-bidi: embed; direction: ltr; }
</style>
[...]
<p dir=rtl>
مرحبا العالم. <span class=ltr>Hello world (42).</span> وكان هذا الاختبار.</p>