我们想要在我们的应用程序中显示文本,它有时包含rtl和ltr的混合。我能够确定文本的语言,并可以根据语言切换dir=ltr或dir=rtl。
当同一句子同时包含英语和阿拉伯语文本时,就会出现问题,在这种情况下,我的语言检测会检测到阿拉伯语(从主要语言开始),并且选择了dir=rtl。如何显示这些混合句子?
问候你,罗希特
发布于 2012-06-13 04:06:10
dir属性设置方向中性文本的方向性。它不影响拉丁语或阿拉伯语字母中的普通文本;它们遵循其固有的强方向性。好吧,至少他们应该这么做。浏览器有bug,如果您知道应该设置哪个方向,那么设置dir可能会有所帮助。此外,设置dir将设置整体布局方向;例如,如果您有阿拉伯文本,其中包含一些英文文本(在最简单的情况下,原理上是Ar1后跟En,然后是Ar2 ),您应该设置dir=rtl以使布局正确(在本例中,首先是Ar1,在右边,然后是En,最后是Ar2,即最左边)。
但是当涉及像括号这样的方向不明确的字符时,例如当阿拉伯文本中的英文文本具有“Hello world (42).”时,问题就出现了。在带有dir=rtl的块中,这将呈现为“(Hello world (42 .
要处理此问题,您还需要识别英语片段,并将其包装在为其设置了嵌入方向性的元素中:
<style>
.ltr { unicode-bidi: embed; direction: ltr; }
</style>
[...]
<p dir=rtl>
مرحبا العالم. <span class=ltr>Hello world (42).</span> وكان هذا الاختبار.</p>https://stackoverflow.com/questions/11003460
复制相似问题