Как я могу просмотреть арабские / персидские цифры на странице HTML со строгим типом документа? - PullRequest
12 голосов
/ 12 апреля 2011

У меня есть HTML-страница справа налево.Когда я не использую какой-либо тип документа, мои номера указаны на арабском / персидском языке, но когда я использую строгий режим, они переключаются на английский.

После добавления типа документа:

After adding doctype

также я добавил эти метатеги на свою страницу:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="fa" />

Так как я могу просматривать арабский язык?числа на странице со строгим типом документа (в IE, потому что Firefox все равно не показывает арабские цифры)?

Ответы [ 9 ]

8 голосов
/ 03 апреля 2012

Вот небольшой код JavaScript, который преобразует строку 1234 в строку to

   var map =
    [
    "&\#1632;","&\#1633;","&\#1634;","&\#1635;","&\#1636;",
    "&\#1637;","&\#1638;","&\#1639;","&\#1640;","&\#1641;"
    ];

    function getArabicNumbers(str)
    {
        var newStr = "";

        str = String(str);

        for(i=0; i<str.length; i++)
        {
            newStr += map[parseInt(str.charAt(i))];
        }

        return newStr;
    }
3 голосов
/ 13 апреля 2011

Предполагается, что вы хотите XHTML 1.0 Strict документ:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fa" lang="fa" dir="rtl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Title here</title>
  </head>

  <body>
    <p>Text here</p>
  </body>
</html>

Вот эквивалент HTML 4.01 Строгий документ:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fa" dir="rtl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Title here</title>
  </head>

  <body>
    <p>Text here</p>
  </body>
</html>

Вот эквивалентная страница HTML5, только для сравнения.

<!DOCTYPE html>
<html lang="fa" dir="rtl">
  <head>
    <meta charset="UTF-8" />
    <title>Title here</title>
  </head>

  <body>
    <p>Text here</p>
  </body>
</html>
2 голосов
/ 02 февраля 2018

Вы можете преобразовать английские цифры в персидские, используя этот код JavaScript в вашем шаблоне:

    <script type="text/javascript">
    var replaceDigits = function() {
        var map = ["&\#1776;","&\#1777;","&\#1778;","&\#1779;","&\#1780;","&\#1781;","&\#1782;","&\#1783;","&\#1784;","&\#1785;"]
        document.body.innerHTML = document.body.innerHTML.replace(/\d(?=[^<>]*(<|$))/g, function($0) { return map[$0]});
    }
    window.onload = replaceDigits;
    </script>
2 голосов
/ 18 ноября 2015

Просмотр арабских / персидских чисел на странице HTML очень прост.

Я решил ту же проблему, изменив имя шрифта,

В моем случае я хочу отображать один и тот же символ всем пользователям

Вы можете выбрать шрифт, содержащий цифры арабского языка-хнди и импортировать его с помощью css (@ font-face), а затем просто использовать его,

Это прекрасно работает для всех основных браузеров (IE .. Firefox .. Chrome)

посмотрите на этот результат

вот полный код страницы:

<html>
<head>

</head>
<body>
<style type="text/css">

@font-face {
    font-family: ArabicTwo_Bold;
    src: url( ArabicTwo_Bold.eot);
}

@font-face {
    font-family: ArabicTwo_Bold;
    src: url( ArabicTwo_Bold.ttf);
}


div , input {
 font-family: ArabicTwo_Bold;
}
</style>


<input type='text' value='هذا نص هندي 123456 ' />
<div> هذا نص هندي 123456  </div>
</body>
</html>
2 голосов
/ 20 июня 2012

Firefox по умолчанию отображает номер латиницы для изменения этого параметра, перейдите в адресную строку Firefox и введите about: config, эта страница является расширенной настройкой Firefox, найдите эту строку «bidi.numeral» и дважды щелкните по ней, если установлено значение «1»Firefox для рендеринга текста взглянуть на контекст.если текст персидский, отобразить номер на персидский.если установлено значение «4», то всегда переводить цифру в персидский

1 голос
/ 25 декабря 2014
var map_format_arabic = ["&\#1632;","&\#1633;","&\#1634;","&\#1635;","&\#1636;", "&\#1637;","&\#1638;","&\#1639;","&\#1640;","&\#1641;"];

$.each( $('.format_arabic'), function () {
    var n=$(this).text().replace(/\d(?=[^<>]*(<|$))/g, function($0) { return map_format_arabic[$0]});
    $(this).html(n);
});
1 голос
/ 12 апреля 2011

Это работает для меня, независимо от направления текста (в Chrome, Safari, Firefox и Opera):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Final//EN">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css">
            body { direction: rtl; }
        </style>
    </head>

    <body>
        ۴۲
    </body>
</html>

(пропущено content-language, поскольку здесь нет необходимости.)

0 голосов
/ 17 февраля 2015

попробуй, надеюсь тебе поможет;)

между и

<script language="JavaScript" type="text/javascript">


var replaceDigits = function() {
var map =
[
"&\#1632;","&\#1633;","&\#1634;","&\#1635;","&\#1636;",
"&\#1637;","&\#1638;","&\#1639;","&\#1640;","&\#1641;"
]

document.body.innerHTML =
document.body.innerHTML.replace(
/\d(?=[^<>]*(<|$))/g,
function($0) { return map[$0] }
);
}

</script>

затем в конце тега body вставьте это:

<script type="text/javascript">
window.onload = replaceDigits
</script>
0 голосов
/ 02 октября 2013

Если вы используете персидские шрифты, такие как 'BNazanin', и напишите:

http-equiv="Content-Type" content="text/html; charset=UTF-8"
и http-equiv="Content-Language" content="fa" в метатегах.

Затем вы можете увидеть цифры на персидском языке.

и если вы используете lang='En' в некоторых тегах на своей HTML-странице, числа в этом теге будут отображаться на английском языке.

...