右から左に書くHTMLページがあります。 Doctypeを使用しない場合、番号はアラビア語/ペルシア語ですが、strictモードを使用すると、英語になります。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Final//EN">
Doctypeを追加する前に:
Doctypeを追加した後:
また、これらのメタタグを自分のページに追加しました。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="fa" />
では、厳密なDoctypeを持つページでアラビア数字を表示するにはどうすればよいですか(Firefoxはアラビア数字を表示しないためIE))?
これは、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;
}
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>
この設定を変更するには、Firefoxのデフォルトのレンダリング番号をラテン語に変更します。Firefoxのアドレスバーに移動し、about:configと入力します。このページはFirefoxの詳細設定です。この行「bidi.numeral」を見つけて、値を「1」に設定した場合はダブルクリックします。テキストはコンテキストを見てください。テキストがペルシア語の場合、ペルシア語へのレンダリング番号。値を「4」に設定すると、alwaseは数字をペルシア語にレンダリングします
テンプレートで次の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>
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
は省略しました。)
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);
});
'BNazanin'のようなペルシア語フォントを使用して次のように書く場合:
http-equiv="Content-Type" content="text/html; charset=UTF-8"
メタタグのとhttp-equiv="Content-Language" content="fa"
。
その後、ペルシア語で数字を見ることができます。
また、HTMLページの一部のタグでlang='En'
を使用すると、そのタグの番号が英語で表示されます。
これを試してみてください、希望はあなたを助けます;)
との間
<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>
HTML全体ではなく、一部の英語からアラビア数字を置き換える必要がある場合は、必要な数をこの関数に渡します。
function toArabicNumeral(en) {
return ("" + en).replace(/[0-9]/g, function(t) {
return "٠١٢٣٤٥٦٧٨٩".substr(+t, 1);
});
}