如何在从左到右(LTR)的阿拉伯文本中插入<br>标签

3

我有这个阿拉伯文本样例:

<span class="message4" id="message4" data-gwd-tl-locked="" data-gwd-tl-hidden="">نص العنوان الرئيسي هنا <br> على سطرين</span>

我成功地复制并粘贴了一个换行符。实际上,我将它粘贴在两个其他单词之间,但它向右移动了。

对于发生的情况,我一无所知,很抱歉。在阿拉伯语文本中插入换行符是否可能?为什么当我将其粘贴到某个位置时,它就像一只野鸡一样改变位置。

我应该让我的容器重新排列文本,并跳过阿拉伯语的换行符吗?

提前致谢

Thomas


1
我不明白你的问题。你提供的例子对我来说是有效的。 - D. Pardal
是的,但是,嗯。我把 <br> 标签粘贴到左边的一些单词上。当它被粘贴时,它会自动将一些单词向右移动?虽然我不懂阿拉伯语,但这是否是预期行为呢? - Thomas Thorstensson
这看起来不错;你用的是哪个编辑器,具体怎么输入的?我怀疑你的编辑器在处理双向文本规则时出了问题,这非常棘手。你想在哪两个单词之间断开? - Rob Napier
问题在于双向 (bidi) 规则的工作方式。字符 <> 是方向中立的,因此编辑器可能希望将它们视为 RTL(因为前面的字符是 RTL)。在某些情况下,我发现需要在十六进制编辑器中打开数据才能绝对确定字符顺序。如果你不会阅读至少一点阿拉伯语,这将特别困难(我几乎不会阅读阿拉伯语,但足以解决这个问题)。 - Rob Napier
1
感谢@RobNapier,由于时间限制和我正在使用示例文本,我现在将跳过换行并使用重新排版!但仍需要找到解决方案,因为当我从Google翻译中粘贴一些阿拉伯语时,文本会反转在VSCode中。我会进行研究! - Thomas Thorstensson
显示剩余2条评论
2个回答

2

您的代码在双向文本中表现如预期。您只需适应阅读习惯,了解阿拉伯语的阅读方式:无论您通过键入或插入创建阿拉伯字符串,该字符串的起始位置与英语相比位于其“另一端”。要查看此流程,请使用右箭头跳过混合文本开头的字符。在由空格分隔的单向从右到左英文(En)文本中,您将拥有:

Start(En)End Start(En)End Start(En)End Start(En)End...

在英语和阿拉伯语字符串的双向LTR/RTL文本中,您将会有以下内容:

Start(En)End End(Ar)Start Start(En)End End(Ar)Start...

话虽如此,打整个多语言字符串比在这里插入一块块容易得多。当您输入时,您会同步了解语言/显示流程,因此不会对“鸡跳”感到惊讶。

此外,VSCode和大多数这样的编辑器并非针对RTL语言而设计。要最好地处理双向编码中的阿拉伯语,请使用Jupyter笔记本。


1
当我在Jupyter中输入此内容时,我看到了与在VSCode中看到的相同的行为。为了查看我认为正在讨论的症状,请键入“نص العنوان الرئيسي هنا على سطرين”,然后在“هنا”和“على”之间插入<br>。(老实说,我甚至不确定这是否合格作为错误。我不确定它应该做什么。) - Rob Napier
这种行为对于RTL和LTR交互是正常和预期的。让我们记住,在LTR文本结束后,以下RTL文本总是从其自己的右端开始。但是,我仍然建议在阿拉伯语方面使用Jupyter而不是其他编辑器,因为它具有更多样化的输出和标记能力。我已经尝试过大多数其他编辑器,但它们在阿拉伯语方面都存在很多错误 - 即使Jupyter在阿拉伯语方面也并非完全没有错误。我向开发人员报告了此错误: - Muhamed Al Khalil
我会更新我的答案,以指示预期的行为。 - Muhamed Al Khalil

0

我在VSCode中尝试了一下,我看到了你所看到的问题,但这似乎主要是VSCode中的错误。例如,当您选择阿拉伯文本的部分并在选择时重新格式化文本时,VSCode可能会变得非常混乱。(我几乎可以想象代码中可能导致此问题的错误,我假设通过将突出显示的文本与非突出显示的文本分开布局而不是将其全部布局然后突出显示其中的一部分。)

如果可以的话,我建议将LTR和RTL文本放在不同的行上:

<span class="message4" id="message4" data-gwd-tl-locked="" data-gwd-tl-hidden="">
نص العنوان الرئيسي هنا 
<br/>
على سطرين
</span>

这种格式更容易处理双向文本算法,并且使“نص العنوان الرئيسي هنا”和一个换行,然后是“على سطرين”更清晰。当您将它们放在单行上时,至少对我来说,短语的顺序不太明显。这是拉丁文中间有阿拉伯文,还是阿拉伯文中间有拉丁文?添加换行符使其更清晰。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接