一尘不染

使用浏览器时,如何知道操作系统使用哪个小数点分隔符?

html

我正在开发一个Web应用程序。

我需要正确显示一些十进制数据,以便可以将其复制并粘贴到GUI不受我控制的某个应用程序中。

GUI应用程序是对语言环境敏感的,并且仅接受系统中设置的正确的十进制分隔符。

我可以从中猜测小数点分隔符,Accept-Language并且在95%的情况下猜测是正确的,但有时会失败。

有什么方法可以在服务器端(最好是我可以收集统计信息)或在客户端吗?

更新:

任务的重点是自动执行。

实际上,该Web应用程序是旧版GUI的一种在线界面,有助于正确填写表格。

使用它的用户种类大多不知道什么是小数点分隔符。

Accept-Language解决方案已实现并可以运行,但我想对其进行改进。

更新2:

我需要检索一个非常具体的设置:中设置的小数点分隔符Control Panel / Regional and Language Options / Regional Options / Customize

我处理四种操作系统:

  1. 俄语Windows,逗号为DS(80%)。
  2. 英文Windows以句点作为DS(15%)。
  3. 带有DS期间的俄语Windows,可以使英文应用程序写得不好(4%)。
  4. 英文Windows,以逗号作为DS,以使书写较差的俄语应用程序正常工作(1%)。

所有100%的客户都在俄罗斯,而旧版应用程序处理的是俄罗斯政府发行的表格,因此,要求一个国家将获得100%的俄罗斯联邦,而GeoIP将获得80%的俄罗斯联邦和20%的其他国家(不正确)答案。


阅读 362

收藏
2020-05-10

共1个答案

一尘不染

这是一个简单的JavaScript函数,它将返回此信息。在Firefox,IE6和IE7中进行了测试。在每次更改控制面板/区域和语言选项/区域选项/自定义下的设置之间,我不得不关闭并重新启动浏览器。但是,它不仅提取了逗号和句点,而且还提取了一些奇怪的习俗,例如字母“
a”。

function whatDecimalSeparator() {
    var n = 1.1;
    n = n.toLocaleString().substring(1, 2);
    return n;
}



function whatDecimalSeparator() {

    var n = 1.1;

    n = n.toLocaleString().substring(1, 2);

    return n;

}



console.log('You use "' + whatDecimalSeparator() + '" as Decimal seprator');

这有帮助吗?

2020-05-10