Javascript 为什么用于数字格式化的JS国际化API与德国标准相矛盾?

Javascript 为什么用于数字格式化的JS国际化API与德国标准相矛盾?,javascript,localization,intl,Javascript,Localization,Intl,今天我开始了解ECMAScript国际化API,因为我正在研究一种合理的数字格式化方法。 因此,我打电话测试德语 Intl.NumberFormat("de").format(10000.23) 在Firefox和Chrome的控制台上,它为我提供了“10.000,23” 但是,根据DIN 5008标准(以及官方语言参考“Duden”),德语中不鼓励使用这种形式的数字格式,该标准规定,应使用细空格(\u2009)作为千位分隔符 谁定义了在德国本地化中使用这个千位分隔符?Unicode联盟还是浏

今天我开始了解ECMAScript国际化API,因为我正在研究一种合理的数字格式化方法。 因此,我打电话测试德语

Intl.NumberFormat("de").format(10000.23)
在Firefox和Chrome的控制台上,它为我提供了“10.000,23”

但是,根据DIN 5008标准(以及官方语言参考“Duden”),德语中不鼓励使用这种形式的数字格式,该标准规定,应使用细空格(\u2009)作为千位分隔符

谁定义了在德国本地化中使用这个千位分隔符?Unicode联盟还是浏览器供应商


(是的,我知道一些项目和人员可能使用dot作为德国本地化方法)

该定义源自

我在那里提交了文件。

部分原因是“安全总比遗憾好”。DIN 5008第6.4节:“金额的分隔符应为期间”(我的解释),程序如何知道这一点?。在HTML和大多数编程语言中,带有空格的排版也是一个问题。可以很容易地用空格替换句点,但反过来更复杂


因此,这不是一个错误,这是故意的。

的确,第6.4节出于“安全原因”建议偏离货币的数字格式标准,但我会再次发现,当DIN实际定义了另一个默认值时,我很难在CLDR中将其作为默认值。我宁愿假设在这种情况下,该计划有责任区别对待货币。此外,我不认为“空格是硬的”在本地化上下文中也是一个很好的理由,因为在CLDR中的其他地方(例如瑞典),千分隔符被定义为一个空格字符。好吧,如果已经在其他地方对空格进行了定义,那么,这当然使该论点没有意义。顺便说一句:空格本身并不难处理,只是更难处理,因为空格(ASCII 0x20)是一个非常常见的标记分隔符。瑞典版本似乎也错了:那里的空格必须是非中断空格(例如:\u00a0或在德语中为\u202f)。或者这已经改变了?很抱歉不精确:实际上\u2009(细空格),不应该使用ASCII 0x20字符。我相应地更正了上面的帖子。\u2009太窄了(.2em或更小),我已经学会了(但那是很久以前的事了)使用四分之一(.25em),所以\u202f更合适。并且\u202f包含一个\u2009没有包含的不中断。