如何使用i18n定义每公斤货币(欧元/千克)的数字格式?
问题原因
vue-i18n的数字格式化底层依赖浏览器原生Intl.NumberFormat API,该API不存在currency-per-unit这个合法的style属性值,所以你的原有配置无法生效。
正确配置方案
这里提供两种常用实现方式,可根据你的业务场景选择:
方案1:自定义pattern(灵活性高,适合固定单位显示、低版本浏览器兼容场景)
直接指定货币类型,通过pattern自定义拼接/kg后缀:
EuroPerKg: { style: 'currency', currency: 'EUR', maximumFractionDigits: 2, // 欧元默认保留2位小数,可按需调整 pattern: '{0}/kg' }
调用后输出示例:€2.45/kg
方案2:使用原生复合单位(适配多语言场景,自动适配不同语言的语序规则)
直接用Intl支持的euro-per-kilogram复合单位即可:
EuroPerKg: { style: 'unit', unit: 'euro-per-kilogram', unitDisplay: 'narrow', // 可选值:narrow(输出€/kg) / short(输出EUR/kg) / long(输出欧元/千克) maximumFractionDigits: 2 }
调用后输出示例(unitDisplay设为narrow):€3.1/kg
提示:如果你的项目需要兼容不支持复合单位的低版本浏览器,优先选择方案1。
内容的提问来源于stack exchange,提问作者Sofian Madi
相关产品推荐
相关产品推荐

