在Javascript中连接Bidi字符串

时间:2014-09-27 11:42:52

标签: javascript date direction bidi

我正在使用JQuery Calendars为应用程序生成日期字符串。如果我将语言设置为英语,我会得到一个这样的日期字符串:

  

星期五•2014年10月10日

JQ Calendars不处理时间,所以我自己格式化字符串的时间部分:

  

[•UTC-04:00:00:00]

(括号内是为了清晰起见;它们不是最终字符串的一部分。)接下来,我只是将这两个字符串加在一起,然后得到:

  

星期五•2014年10月10日[•UTC-04:00:00:00]

这正是我想要的。但是,当我将语言设置为希伯来语时,我的结果是:

  

שישי•2014年10月

     

[•UTC-04:00:00:00]

     

שישי•2014年10月[UTC 12:00 - 04:00]

注意RTL希伯来语月份和年份之间的时间段奇数插入。

我尝试在方向码(U + 202A,U + 202C等)中包裹两个字符串的部分而没有成功。看起来日期字符串已经是RTL和LTR的混合了,但是我搜索过它并且找不到任何方向字符,尽管我可能会躲避这种搜索。

有关如何解决此问题的任何想法?无论好坏,我希望时间字符串“跟随”日期字符串而不会出现奇怪的中断,即使这在技术上可能不正确。我知道Javascript的toLocaleString()功能,但它还没有很好的支持,所以我想使用上面的方法至少作为后备。

1 个答案:

答案 0 :(得分:2)

我解决了这个问题。事实证明,希伯来语并不是严格的RTL;即使单词和句子呈现为RTL,字符串的数字部分也会呈现为LTR。因此,上面显示的结果是“正确的”,因为我将时间字符串附加到日期字符串的“结尾” - 这直接发生在2014年最终数字的右侧。

使用空格和项目符号作为格式的一部分生成日期字符串,通过JQ日历,“重置”格式,以便字符串的结尾位于年份的左侧。显式嵌入时间字符串,前面带有'U + 202A',在日期字符串后面整个时间字符串,而不插入结果。最后,我结束了

  

الجمعة•10تشرينالأول2014•12:00 am UTC-04:00

虽然不是严格的RTL,但我的目的很合适。