如何使用jQuery和XRegExp检测文本语言以正确显示混合的RTL和LTR文本

问题描述 投票:0回答:1

我正在尝试在WordPress网站中显示Twitter供稿。我的客户用英语和阿拉伯语(有时甚至是两种语言的组合)发推文。我需要检测语言并将“ rtl”类添加到阿拉伯语推文以及那些内容主要是阿拉伯语的推文中。我正在使用一个插件,该插件剥离Twitter iso_language_code元数据。

几年前在以前的开发站点上尝试时,我记得成功地使用了Tristan解决方案的一种变体:

How to detect that text typed in text-area is RTL

不幸的是,它似乎不再起作用。

Tristan的jsfiddle也不再起作用。

我正在使用此资源:

http://cdnjs.cloudflare.com/ajax/libs/xregexp/2.0.0/xregexp-min.js

和此脚本:

    jQuery(document).ready(function($) {
        $('p').each(function() {
        if(isRTL($(this).text()))
            $(this).addClass('rtl');
    });

    function isRTL(str) {
        var isArabic = XRegExp('[\\p{Arabic}]');
        var isLatin = XRegExp('[\\p{Latin}]');
        var partLatin = 0;
        var partArabic = 0;
        var rtlIndex = 0;
        var isRTL = false;

        for(i=0;i<str.length;i++){
            if(isLatin.test(str[i]))
                partLatin++;
            if(isArabic.test(str[i]))
                partArabic++;
        }
        rtlIndex = partArabic/(partLatin + partArabic);
        if(rtlIndex > .5) {
            isRTL = true;
        }

        return isRTL;
    }

    });

有人可以帮助我解决我的问题吗?

非常感谢,

菲尔

javascript jquery regex arabic xregexp
1个回答
0
投票

我建议另一种解决方案,如果您使用的是wordpress,则可以在header.php的头部或footer.php文件的末尾分配变量

您可以通过检查wordpress函数is_rtl()分配新变量

示例:header.php或footer.php中标签之间的Js代码>

  <?php if ( is_rtl() ) :?>
    var is_rtl = true
  <php else:?>
    var is_rtl = false;
  <?php endif;?>

然后在您的js文件中使用它进行检查

jQuery(document).ready(function($) {
    $('p').each(function() {
    if(is_rtl)
      $(this).addClass('rtl');
});
© www.soinside.com 2019 - 2024. All rights reserved.