1

Web ページをスキャンして数値に書式を適用するスクリプトがあります。たとえば、50000 より大きい数値が見つかった場合、赤い背景が適用されます。

このスクリプトは、小数点としてドットを使用する言語では問題なく動作します (たとえば、英語の12,345.67は 12345.67 と解釈されます)。ただし、コンマを小数点として使用する言語では失敗します (フランス語の1,234は、1.234 ではなく 1234 と解釈されます)。

私の質問: Web ページのロケールを検出し、それに応じて数値を解釈する方法はありますか?

4

3 に答える 3

0

Web ページでの数値の書式設定は、クライアント システムの設定に基づいているのではなく、ページの作成者によって行われます。これは、意図した、または予想される視聴者の言語に基づいている可能性があります。

ブラウザは、システム設定に基づいて、ページ内のテキストの数字を再フォーマットしません。運が良ければlang、コンテンツの言語を示す属性があるかもしれませんが、それが信頼できず、広く実装されるとは思えません。

ページ内のすべての数字を収集し、次のようなものに基づいて区切り記号を推測できる場合があります。

  1. いずれかの数字が一致する/^[+-]?0?\.\d/場合、小数点区切り記号はピリオドで、千単位区切り記号はカンマです
  2. いずれかの数字が一致する/^[+-]?0?,\d/場合、小数点区切り記号はカンマで、千単位区切り記号はピリオドです
  3. いずれかの数字が一致する/\.\d\d\d\./場合、千の区切りはピリオドで、小数点の区切りはカンマです
  4. いずれかの数字が一致する/,\d\d\d,/場合、千単位の区切りはコンマで、小数点の区切りはピリオドです

等々。

于 2013-02-08T02:14:38.323 に答える
0

JavaScript を使用して、ロケールが小数点記号としてコンマまたはドットを使用しているかどうかを判断できます。

function getDecimalSeparator() {
  return (0.1).toLocaleString().substring(1, 2)
}

getDecimalSeparator(); // "." on a US locale machine.
getDecimalSeparator(); // "," on a FR locale machine.
于 2013-02-07T23:41:35.130 に答える
0

htmllangプロパティを取得することはできますが、その属性が欠落している Web ページはまだ多くあります。

于 2013-02-07T22:45:15.013 に答える