Я пытаюсь отобразить канал Twitter на сайте WordPress. Мой клиент пишет в Твиттере на английском и арабском, а иногда и на двух языках. Мне нужно определить язык и добавить класс 'rtl' к арабским твитам, а также к тем твитам, где контент преимущественно на арабском языке. Я использую плагин, который удаляет метаданные Twitter iso_language_code.
При попытке сделать это на предыдущем сайте разработки несколько лет назад, я помню, как успешно использовал вариант решения Tristan, найденный здесь:
Как определить, что текст, набранный в текстовой области, имеет вид RTL
К сожалению, он, похоже, больше не работает.
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
Это работает, если текст полностью арабский или весь английский, но одно слово арабского языка в английском твитевсе испортит.
Странно, когда я добавил этот скрипт в реальный тест WordPress, он дал совершенно противоположный результат от того, что я хотел, так как в арабских абзацах и твитах были заданы класс LTR и стилизация иТекст на английском языке предоставлен RTL.
Изменение оператора if else дает правильный результат.
Любая помощь будет принята с благодарностью.
Еще раз спасибо.
Фил