web-dev-qa-db-ja.com

厳密なDoctypeを持つHTMLページでアラビア語/ペルシア語の数値を表示するにはどうすればよいですか?

右から左に書くHTMLページがあります。 Doctypeを使用しない場合、番号はアラビア語/ペルシア語ですが、strictモードを使用すると、英語になります。

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

Doctypeを追加する前に:

Before adding doctype

Doctypeを追加した後:

After adding doctype

また、これらのメタタグを自分のページに追加しました。

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

では、厳密なDoctypeを持つページでアラビア数字を表示するにはどうすればよいですか(Firefoxはアラビア数字を表示しないためIE))?

15
Mahdi

これは、1234文字列を١٢٣٤文字列に変換する小さなJavaScriptコードです。

   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;
    }
8
Ashkan Ghodrat

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.01Strictドキュメントです。

<!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>
3
kevinji

この設定を変更するには、Firefoxのデフォルトのレンダリング番号をラテン語に変更します。Firefoxのアドレスバーに移動し、about:configと入力します。このページはFirefoxの詳細設定です。この行「bidi.numeral」を見つけて、値を「1」に設定した場合はダブルクリックします。テキストはコンテキストを見てください。テキストがペルシア語の場合、ペルシア語へのレンダリング番号。値を「4」に設定すると、alwaseは数字をペルシア語にレンダリングします

2
khani_mahdi

テンプレートで次の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
Anaramer

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>

これは、テキストの方向に関係なく(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は省略しました。)

1
Konrad Rudolph
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
raed

'BNazanin'のようなペルシア語フォントを使用して次のように書く場合:

http-equiv="Content-Type" content="text/html; charset=UTF-8"
メタタグのとhttp-equiv="Content-Language" content="fa"

その後、ペルシア語で数字を見ることができます。

また、HTMLページの一部のタグでlang='En'を使用すると、そのタグの番号が英語で表示されます。

0
helper

これを試してみてください、希望はあなたを助けます;)

との間

<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
Ali Gh

HTML全体ではなく、一部の英語からアラビア数字を置き換える必要がある場合は、必要な数をこの関数に渡します。

function toArabicNumeral(en) {
    return ("" + en).replace(/[0-9]/g, function(t) {
        return "٠١٢٣٤٥٦٧٨٩".substr(+t, 1);
    });
}
0
Amr Ragaey