javascript - 检测数字格式文化设置

标签 javascript localization globalization

我有一个需要输入数字的网页,这部分很简单,只需结合使用 parseFloat、isNaN 和(用于向用户显示值)toFixed。问题是 Javascript 似乎完全不了解这里的文化。一些文化使用小数点逗号而不是小数点,但 Javascript 对此非常重视。

支持小数逗号并不太麻烦,我可以在解析用户输入之前将逗号替换为小数点,我可以在向用户显示结果之前执行相反的操作。我的问题是,有没有办法让 Javascript 知道用户的文化设置?我只关心小数点分隔符,所以现在我对千位分隔符或货币等其他复杂功能不感兴趣。

是否有可靠的(客户端)方法来检测访问者是否使用小数逗号而不是小数点?

更新

以防万一其他人想要它(或者如果任何人可以看到一个缺陷 - 除了不能在 Chrome 中工作,如前所述 - 或者更好的方法),我最终这样做了:

var useComma = (0.1).toLocaleString().indexOf(",") > 0;

现在如果用户将逗号设置为他们的小数点分隔符,useComma 将为真

最佳答案

我认为尝试检测用户的语言环境实际上可能没有多大帮助。如果您的 Web 应用程序是英文语言,用户实际上可能会使用英文格式(例如 1.3),即使在他们自己的文化中它的格式会有所不同(1,3 表示 fr-FR 或 es-ES)!谁会责怪他们?

您可以尝试变聪明并使用 Alex K 提出的解决方案,和/或考虑 accept-language header 、与您的本地化匹配的语言环境(如果有)甚至 GeoIP最好的猜测。但是为了减少混淆,您可能希望在您希望用户输入数字或日期或其他区域设置敏感数据时给用户提示......在字段旁边显示默认值或示例,使用与您相同的区域设置格式化将用于解析用户输入。

如果您认为灵 active 能给您带来更好的用户体验,您可以使用回退技术并尝试您最期望的格式。

关于javascript - 检测数字格式文化设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9739508/

相关文章:

mysql - 处理数据库中的本地化文本

asp.net-mvc - 验证日期格式不起作用

c#-4.0 - CultureNotFoundException : Culture is not supported after upgrading to . 净 4

javascript - 使用 JavaScript 生成数字序列的所有组合

JavaScript/jQuery 加载器数学问题

javascript - 为什么我的 ng-model 变量在 Controller 中未定义?

javascript - 如何在 AngularJS 中为数组元素创建链接

c#-4.0 - Windows Azure 云本地化最佳实践

string - 在Haskell中按语言环境对字符串进行排序和比较?

c# - VkKeyScan 返回相同的代码,不带重音字母和非重音字母的修饰符