【问题标题】:How to allow german user to enter numbers in german format in React JavaScript如何允许德语用户在 React JavaScript 中输入德语格式的数字
【发布时间】:2023-07-26 04:16:01
【问题描述】:

我们正在开发应支持德语和英语用户的应用程序。

我们可以做些什么来让德国用户输入德语格式的数字(作为小数点和. 作为千位分隔符),并且当他从输入框中跳出时,我们应该能够将输入文本转换为 JavaScript 数字, 现在,当我们使用 Number() 函数时,它会为我们提供 Number("12,23") 的 NaN

我们可以使用新的Intl.NumberFormat() 将英文文本转换为德文格式数字,反之亦然。

【问题讨论】:

  • 123,456 现在是十万还是百分之零几?
  • 您可能需要存储解析器理解的值并对其进行变异以用于显示目的。
  • 您必须自己转换它。 JavaScript 不提供这种方法。
  • @derek 我知道。然而,如果不询问客户他的位置,可能很难区分这两种写作方式
  • 我认为你必须研究你的 react 应用程序的本地化,为你的应用程序定义一个语言环境。如果您希望它根据用户机器或浏览器上的当前语言工作,那么它已经在这样工作,如果您想动态更改应用程序的语言,您应该考虑本地化

标签: javascript reactjs react-intl


【解决方案1】:

你可以使用 numeric.js 语言环境http://numeraljs.com/#locales

// load a locale
numeral.register('locale', 'de', {
    delimiters: {
        thousands: '.',
        decimal: ','
    },
    abbreviations: {
        thousand: 'k',
        million: 'm',
        billion: 'b',
        trillion: 't'
    },
    ordinal : function (number) {
        return number === 1 ? 'er' : 'ème'; //this is taken from french example, don't know in german
    },
    currency: {
        symbol: '€' //same as above
    }
});

// switch between locales
numeral.locale('de');

console.log(numeral('123,45').value());
console.log(numeral('6.123,45').value());
console.log(numeral('123,45m').value());
<script src="//cdnjs.cloudflare.com/ajax/libs/numeral.js/2.0.6/numeral.min.js"></script>

【讨论】:

    最近更新 更多