我需要一种根据用户的语言环境自动格式化日期和数字对象的方法。
目前,我已经使用
在我的Windows机器上使用英语(美国)语言环境时,IE9返回15,000.00,Firefox返回15,000,Chrome返回15000。
在Chrome中,看起来
1、使用MicrosoftAjax.js库
2、使用像Globalize这样的库。虽然他们提供了格式化能力,但它们不能自动检测用户的语言环境。
因此,总结一下:如何自动格式化数字和日期,以便尊重用户浏览网页时的地区设置,并且能够在主要浏览器(IE、Firefox、Chrome)中正常工作?
目前,我已经使用
toLocaleString()
函数进行日期格式化。对于数字,toLocaleString()
也是可用的,但正如我在准备好的jsFiddle中所看到的,结果在不同浏览器中有很大的差异。在我的Windows机器上使用英语(美国)语言环境时,IE9返回15,000.00,Firefox返回15,000,Chrome返回15000。
在Chrome中,看起来
toLocaleString()
根本不适用于数字。除了这种方法,我还尝试过:1、使用MicrosoftAjax.js库
localeFormat()
函数,但无论我在我的PC上设置了哪个区域设置(通过使用“区域和语言”对话框),日期和数字仍然都以美国格式进行格式化。2、使用像Globalize这样的库。虽然他们提供了格式化能力,但它们不能自动检测用户的语言环境。
因此,总结一下:如何自动格式化数字和日期,以便尊重用户浏览网页时的地区设置,并且能够在主要浏览器(IE、Firefox、Chrome)中正常工作?
Accept-Language
头中检测区域设置。使用该信息,您的服务器可以根据区域设置发送JavaScript。编辑:似乎您还可以从navigator.language
获取它,但是如果某个库无法使用它,则我不知道它有多受支持。 - EsailijaAccept-Language
是错误的且完全无用的。例如,我的系统设置为使用英语(因为翻译后的操作系统是无法使用的),但我使用挪威或 ISO 日期格式(因为英国和美国的日期格式不实用,而我不在英国或美国)。我认为这不是一个边缘案例,而是代表了世界各地广泛用户的情况。 - Florian Winter