我正在尝试在WordPress网站中显示Twitter feed。我的客户用英语和阿拉伯语(有时甚至是两种语言的组合)发推文。我需要检测语言并将“ 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;
}
});
有人可以帮助我解决我的问题吗?
非常感谢,
菲尔
更新
我设法获得了部分解决方案:
jQuery(document).ready(function($) {
var arabic = /[\u0600-\u06FF]/;
$('p').each(function() {
if (arabic.test($(this).text())) {
$(this).addClass( "rtl" ).attr('style','text-align:right;direction:rtl');
}
else {
$(this).addClass( "ltr" ).attr('style','text-align:left;direction:ltr');
}
});
});
我事先表示歉意-我是这个方面的初学者。
我在这里做了一个jsfiddle:
http://jsfiddle.net/philnicholl/4xn6jftw
如果文本全是阿拉伯语或全部是英语,但在英语推文中使用单个阿拉伯语单词会使事情搞砸,则此方法有效。
Bizarely,当我将此脚本添加到现实世界的WordPress测试中时,它产生了与我想要的结果完全相反的结果,如阿拉伯文段落和推文中的LTR类和样式以及英文文本均指定为RTL。
反转if else会得到正确的结果。
任何帮助将不胜感激。
再次感谢您。
菲尔
答案 0 :(得分: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');
});
答案 1 :(得分:0)
您可以使用正则表达式来确定是否仅包含阿拉伯字母
$('p').each(function() {
if(isRTL($(this).text()))
$(this).addClass('rtl');
});
function isRTL(str) {
return /^[\u0600-\u06FF]/.test(str);
}
p.rtl {
direction: rtl;
}
p.ltr {
direction: ltr;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>Hello World</p>
<p>مرحبا بالعالم</p>
<p>Hello World مرحبا بالعالم</p>