搜索全站
multilingual 2 分钟阅读

多语言货币符号与千分位:格式化输出的本地化

货币显示本地化:符号位置(€100 vs 100€)、千分位/小数点(1,000.00 vs 1.000,00)、小数位差异,给出按 locale 格式化金额的实现。

U
UFO_PF 2019-08-07 · 阅读 2 分钟
多语 MULTILINGUAL
阅读提示
本文约 746 字,预计阅读 2 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:德国显示 $1,000.00 怪怪的

货币格式地域强:欧元多写后置 “1.000,00 €”(德)或 “€1,000.00″(爱尔兰);小数点逗号互逆。多语言金额必须按 locale 格式化。

原理分析:格式差异

Intl.NumberFormat(locale,{style:'currency',currency:'EUR'}) 自动按地区排符号位置、千分位与小数点。务必传正确 locale(de-DE、en-IE),而非仅货币码。

保姆级实操

JS:

new Intl.NumberFormat('de-DE',{style:'currency',currency:'EUR'}).format(1234.5); // 1.234,50 €
new Intl.NumberFormat('en-IE',{style:'currency',currency:'EUR'}).format(1234.5); // €1,234.50

PHP 可用 NumberFormatter(intl 扩展):

$f = new NumberFormatter('de_DE', NumberFormatter::CURRENCY);
echo $f->formatCurrency(1234.5, 'EUR');

常见坑

  1. 只换符号不换分隔,格式错。
  2. locale 传错,爱尔兰当德国。
  3. 案例:某站德文金额用美式,改 Intl de-DE 后本地。
  4. 硬编码 € 前置,德式后置违和。
  5. 小数位不一致,财务歧义。

总结

判断标准:金额按 locale 格式化(符号/分隔/小数)。行动清单:用 Intl → 传对 locale → 验各语 → 测试边界值。详见多语言日期数字单位格式。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。