越南语日期、数字与货币格式:CLDR 实用指南
💡 越南语日期采用日月年顺序(dd/MM/yyyy),千位分隔符为句点(.),小数分隔符为逗号(,),与英语完全相反。越南盾(VND,₫)无分位单位,金额始终为整数。正确配置
vi-VNCLDR 区域设置不到一小时即可完成,可有效防止因格式错误导致越南用户在结账时产生误解,从而避免转化率损失。
要点
- 日期格式:dd/MM/yyyy(日优先):11/10/2026 = 10月11日,而非11月10日。
- 数字:句点 = 千位分隔符,逗号 = 小数点:1.250.000,75,而非 1,250,000.75。
- 越南盾:始终为整数,格式化为 1.250.000 ₫,不带小数位。
- 无语法复数:对越南语中所有数量使用 CLDR 的
other类别。 - 使用
Intl.NumberFormat('vi-VN')和Intl.DateTimeFormat('vi-VN'),不要硬编码美式分隔符。
越南语使用什么日期格式?
越南语日期采用小端顺序:先日,再月,再年。Unicode CLDR 中 vi 区域的短格式为 dd/MM/y。这与美国的中端格式(M/d/y)不同,与欧洲大陆大多数国家一致。使用四位年份可避免世纪间的歧义。
越南语书面日期的完整形式为:ngày [日] tháng [月] năm [年]。例如,2026年10月11日写作 ngày 11 tháng 10 năm 2026。一周中的工作日从周一开始编号:Thứ Hai(周一)至 Thứ Bảy(周六),周日称为 Chủ Nhật。CLDR 将周一定义为越南的每周第一天。
越南官方和技术场景使用24小时制:13:45,而非 1:45 PM。JavaScript Intl API 传入 locale 后自动处理:
new Intl.DateTimeFormat('vi-VN').format(new Date('2026-10-11'));
// "11/10/2026"
new Intl.DateTimeFormat('vi-VN', { dateStyle: 'full' }).format(new Date('2026-10-11'));
// "Chủ Nhật, 11 tháng 10, 2026"
越南语数字分隔符为何会导致支付页面出错?
越南语 CLDR 数字符号与英语惯例相反。在越南语中,句点(.)用于千位分组,逗号(,)用作小数点。如果用户看到 1,250.00 ₫,他们不会读成"一百二十五万越南盾",而是读成略大于1的数字。这一误读会直接造成支付转化损失,而非仅仅是外观问题。
1,250,500.75(美式写法)的越南语正确显示为 1.250.500,75。ECMA-402 Intl API 无需自定义代码即可自动处理:
new Intl.NumberFormat('vi-VN').format(1250500.75);
// "1.250.500,75"
在面向越南用户的货币展示字符串中,绝对不要硬编码小数点或千位分隔符。始终传入 locale 字符串,交由平台格式化器处理。
越南盾(VND)在应用中如何格式化?
越南盾(VND,₫)在流通中没有分位单位。所有零售价格和发票均使用整数。CLDR 对 VND 的标准设置为 maximumFractionDigits: 0。部分 i18n 库默认对所有货币保留两位小数,因此必须针对 VND 手动覆盖,以避免混淆性的",00"尾缀。
- 正确:
1.250.000 ₫ - 容易混淆:
1.250.000,00 ₫
new Intl.NumberFormat('vi-VN', {
style: 'currency',
currency: 'VND',
maximumFractionDigits: 0
}).format(1250000);
// "1.250.000 ₫"
越南语界面中使用的 CLDR 紧凑缩写形式:N(nghìn,千)、Tr(triệu,百万)、Tỷ(十亿)。"1,5 Tr ₫"表示 1.500.000 ₫。许多越南电商平台同时展示 VND 和 USD,因为部分越南网购用户熟悉国际平台的美元定价方式。
复数规则、量词与地址字段
越南语没有语法复数。名词形式在数量为1或一百万时完全相同。CLDR 为 vi 定义了两个复数类别:"one"(i = 0 或 n = 1)和"other"。在实际使用中,所有数量都只需用"other"。这大大简化了 ICU MessageFormat 字符串:
- 英语:
{count, plural, one {# item} other {# items}} - 越南语:
{count, plural, other {# sản phẩm}}
有一点需要注意:越南语使用量词,根据名词类别而非数量变化。人用"người"(3 người = 3人)、书用"cuốn"(2 cuốn sách = 2本书)、扁平物用"tờ"(5 tờ giấy = 5张纸)。机器翻译对抽象名词或新产品类别往往选错量词,这是人工审核的重要检查点。
在地址表单方面,越南语采用从小到大的顺序:门牌号和街道名,然后是坊(phường)或社(xã),然后是郡(quận)或县(huyện),最后是市或省。标准的西式两行地址输入框不适合越南用户。应将地址拆分为四个字段:街道、坊/社、郡/县和市/省。
可以自行配置什么,何时需要专业本地化人员?
上文描述的所有配置工作,包括日期格式、数字分隔符、VND 小数位数和复数规则,均属于纯技术配置。您的工程团队可以完全使用 Intl API 或兼容 ICU 的库(如 Format.js、ICU4J 或 Android ResourceBundle)来处理,无需越南语言学家介入。
聘请越南语网站本地化专家在内容层面能带来实质价值:
- 审核混合格式字符串,其中数字出现在句子内部时,周围的越南语语法必须相互匹配。
- 核查紧凑数字标签("N""Tr""Tỷ")是否符合目标用户的使用习惯,越南北方话和南方话在一些日常金融词汇上存在差异。
- 识别Tết节引用、农历文案和公共假日,这些内容需要具有文化意识的表达,而非单纯的日期转换。
- 核实通知文案和计数字符串中的量词用法,自动翻译在这方面经常出错。
常见问题
应该使用 vi 还是 vi-VN 作为 locale 标签?
两者提供相同的 CLDR 数据。BCP 47 建议使用能识别 locale 的最短标签,因此 vi 是正确且简洁的形式。如果您的框架需要显式的地区代码,则使用 vi-VN。两者在 Intl API、next-intl、Format.js 和 ICU4J 中均可正常工作。
我的库显示句点作为小数分隔符,但 CLDR 规定应为逗号,为什么?
部分旧版 i18n 库默认使用根 locale 或操作系统 locale,而非 CLDR 数据。请确认您已明确将 'vi-VN' 传递给格式化器,且所用库版本基于最新 CLDR 数据。CLDR 48 是截至2026年的最新稳定版本。如有需要,请升级到最新版本。
我的商店支持美元结算,还需要显示 VND 吗?
越南国家银行规定,在越南销售的商品和服务必须以越南盾标价。在面向越南市场的商店中只显示美元价格不符合法规,且会让大多数本地消费者感到困惑。请以 ₫ 符号将 VND 作为主要价格展示,可选择性地以较小文字显示美元参考价。VND 始终使用零位小数。
如何在日程或活动应用中处理越南农历?
公历是越南所有法律和商业事务的官方历法。农历(Âm lịch)用于文化活动和春节规划。CLDR 支持佛历作为农历的近似。如需精确的公历与越南农历转换,建议使用专用库。在越南日历应用中,同时显示公历和农历日期是标准做法。
在 Intl API 中设置 vi-VN 会影响翻译还是仅影响格式化?
Intl API 仅控制格式化:数字、日期和货币的显示方式。它不加载已翻译的字符串。您仍需要一个包含越南语消息目录的独立 i18n 系统来翻译界面文本。在 Intl.NumberFormat 中设置 vi-VN 可正确格式化数字,但不会将"checkout"翻译为"thanh toán"。
参考来源
- Unicode CLDR Project - 本文引用越南语日期、数字、货币和复数数据的权威来源。验证于2026年10月。
- Unicode Technical Report 35 Part 3: Numbers (UTS#35) - CLDR 数字和货币格式规范,包含 VND 的 maximumFractionDigits 设置。验证于2026年10月。
- W3C Internationalization: Choosing a date format - W3C 关于本地化日期格式和 ISO 8601 建议的指南。验证于2026年10月。
- W3C: Language tags in HTML and XML - BCP 47 关于 vi 和 vi-VN locale 标签的指南。验证于2026年10月。
- DataReportal Digital 2025: Vietnam - 越南市场数据:截至2025年1月,7980万互联网用户,总人口1.01亿。验证于2026年10月。
Written by Dao Huy (Lucas), Vietnamese translator & localization specialist (EN · ZH · FR → Vietnamese). See translation services →
