数字:任何确定语言环境的方法?

时间:2013-02-07 22:42:06

标签: javascript html locale number-formatting

我有一个扫描网页的脚本,将格式应用于数字。例如,如果它找到大于50000的数字,则应用红色背景。

该脚本在使用点作为小数分隔符的语言中工作正常(例如英语 12,345.67 将被解释为12345.67),但在使用逗号作为小数点分隔符的语言中失败(法语 1,234 将被解释为1234而不是1.234。

我的问题:有没有办法检测网页区域设置,并相应地解释数字?

3 个答案:

答案 0 :(得分:0)

您可以获取html lang属性,但仍有许多网页缺少该属性

答案 1 :(得分:0)

您可以使用JavaScript来确定区域设置是否使用逗号或点作为小数分隔符:

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

getDecimalSeparator(); // "." on a US locale machine.
getDecimalSeparator(); // "," on a FR locale machine.

答案 2 :(得分:0)

网页中数字值的格式不是基于客户端系统的设置,而是基于页面的作者,可能基于预期或预期受众的语言。

浏览器不会根据系统设置重新格式化页面中的文本中的数字。运气好的话,可能会有lang属性表示内容的语言,但我认为这不会是可靠的,甚至不会广泛实施。

可以收集页面中的所有数字,并根据以下内容猜测分隔符:

  1. 如果任何数字与/^[+-]?0?\.\d/匹配,则小数点分隔符为句点,千位分隔符为逗号
  2. 如果任何数字与/^[+-]?0?,\d/匹配,则小数点分隔符为逗号,千位分隔符为句点
  3. 如果任何数字与/\.\d\d\d\./匹配,则千位分隔符为句点,小数点分隔符为逗号
  4. 如果任何数字与/,\d\d\d,/匹配,则千位分隔符为逗号,小数点分隔符为句点
  5. 等等。