越南语UI字符串长度与布局:开发者必知的陷阱
💡 越南语UI字符串比英文长10-20%,声调符号堆叠导致行高增加,且按音节而非词语换行。三项技术调整可解决大多数布局问题:UTF-8编码、基于CLDR的数字格式化以及弹性宽度容器。进入越南市场的开发团队应在翻译前完成这些基础设置,避免界面溢出和乱码。
要点
- 所有UI容器预留10-20%的额外字符空间:按钮、标签页、菜单项和卡片标题最先出现溢出。
- 越南语文本设置
line-height: 1.5或更高;堆叠的声调符号需要比英文更多的垂直空间。 - 不要对越南语文本应用
word-break: keep-all,该规则适用于CJK文字;浏览器默认的空格换行对越南语音节是正确的。 - 越南语数字使用句点(.)作为千位分隔符,逗号(,)作为小数点:
1.234,56 VND。日期格式为DD/MM/YYYY。 - 始终使用UTF-8编码提供越南语页面;编码错误是导致声调符号乱码的最常见原因。
为什么越南语字符串比英文更长?
越南语是孤立语,具有声调系统,每个音节同时承载意义和声调标记。"账户设置"在越南语中变成"cài đặt tài khoản",四个音节,每个音节至少带一个附加符号,字符数量增加约30%。这种扩展并不均匀:短小的常用词如"Lưu"(保存)、"Hủy"(取消)长度相近,而描述性短语扩展最为明显。
对于从中文版本本地化的游戏和应用,这一挑战尤为突出。中文字符紧凑,但转换为越南语时,相同内容往往需要更多字符空间。一个在中文界面完美适配的按钮,在越南语版本中很可能发生溢出。解决方案是使用 min-width 加水平内边距,而非固定 width。在翻译开始前,应在所有断点处测试10-20个最长的标签文本。
声调符号堆叠:行高与垂直间距要求
越南语在拉丁字母基础上增加了两层附加符号:元音变形符(上加符^、短音符、钩形符)和声调符号(平声、升声、问声、波声、降声)。字符"ộ"同时带有上加符和下加点,比任何英文或中文拼音字母都更高更深。这种双层堆叠影响字符的上伸部分和下降部分,改变了整行文字的垂直节奏。
英文UI重置样式中常见的 line-height: 1.2 默认值会裁剪越南语声调符号的顶部和底部。将越南语文本的基准行高设为 line-height: 1.5。对于输入框和文本域,增加上下内边距以避免截断。在Safari(CoreText引擎)和Android WebView中分别测试渲染,两种环境对附加符号的处理存在差异。
音节换行:越南语换行规则与中文的差异
中文不使用空格,字符间可以自由换行。越南语则使用空格,但空格分隔的是单个音节而非完整词语。"máy tính bảng"(平板电脑)由三个空格分隔的词符组成,任何一个空格都是合法的换行点。W3C将越南语分类为基于音节的换行语言,与英语的词语换行不同,也与中文的字符换行不同。
对游戏UI开发者的实际影响:不要将为中文设计的 word-break: keep-all 应用于越南语文本,这会阻止所有换行并导致容器溢出。浏览器默认的空格换行对越南语UI字符串已经足够,无需额外CSS规则。具体需要测试的风险点:容器宽度过窄导致两个音节的词语断行不美观,以及省略号截断将声调符号与其基础元音分离产生乱码。
哪些UI组件最容易出问题?
以下组件在应用越南语字符串时几乎必然需要调整:
- 固定宽度按钮:将
width: 120px改为min-width: 120px加水平内边距。 - 移动端标签栏:使用"Thông báo"、"Cài đặt"、"Hồ sơ"等长标签的四标签导航在375px屏幕上会溢出。缩短文案、使用图标加文字,或允许水平滚动。
- 面包屑和工具提示:省略号截断可能将声调符号与其基础元音分离,产生乱码片段。提高字符限制或允许两行显示。
- 输入框占位符:越南语占位符文本很少能与英文占据相同空间。使用
text-overflow: ellipsis或缩短占位符内容。 - 通知横幅:英文单行横幅在越南语中通常需要两行。允许动态高度或设置最大行数限制并测试截断效果。
越南语数字、日期和货币格式有何不同?
Unicode CLDR 越南语(vi)区域设置与美式英语定义了不同的惯例:千位分隔符为句点(.),小数分隔符为逗号(,)。一百万越南盾写作"1.000.000 ₫",而非"1,000,000 VND"。日期格式为日/月/年:"30/09/2026"。
- JavaScript:
new Intl.NumberFormat('vi-VN', { style: 'currency', currency: 'VND' }).format(1000000) - Android:
NumberFormat.getCurrencyInstance(new Locale("vi", "VN")) - Unity/C#:
CultureInfo("vi-VN")配合string.Format
游戏内购价格显示是常见问题点。"500,000 VND"(英文逗号分组)对越南玩家来说看起来不对,他们习惯的是"500.000 ₫"。确保支付界面和价格标签使用基于CLDR的格式化,而非硬编码格式。
哪些工作可以内部处理,哪些需要越南语专业人员?
大多数布局和编码修复是纯技术性的,无需越南语语言知识即可完成。可以内部处理的包括:UTF-8声明、HTML元素上的 lang="vi" 属性、行高和容器尺寸、通过Intl或平台API进行CLDR区域格式化,以及Latin Extended Additional(U+1E00-U+1EFF)的字体回退设置。
越南语母语专业人员在以下领域能带来真正的价值:
- 翻译前字符串长度规划:专业人员标记哪些源字符串扩展最多,并在布局确定前提出更短的越南语替代方案,节省后续返工。
- 语言风格与术语:越南语技术UI在某些语境使用汉越词,在其他语境使用纯越南语词汇。"Phần mềm"(软件)与"ứng dụng"(应用程序)承载不同的语言风格期望,机器翻译无法可靠区分。
- 方言审核:越南北部、中部和南部在词汇和表达上存在差异。针对目标地区的母语审核者能发现内部团队遗漏的问题。
- LQA(语言质量保证):基于截图的结构化LQA能在实际界面中发现截断、乱码和声调符号裁剪问题。
如需了解面向越南市场的网站本地化工作流程,请参阅越南语网站本地化服务。
常见问题
越南语UI总是需要比英文更多的空间吗?
并非总是如此。短小的常用词("OK"、"Lưu"、"Xóa")通常长度相近甚至更短。真正的风险在于中等长度的描述性短语(英文8-20个字符),在越南语中可能扩展20-40%。测试最长的10-20个标签以找出具体的问题字符串。
越南语UI应该使用什么字体?
任何覆盖Latin Extended Additional块(U+1E00-U+1EFF)的OpenType字体都能处理所有越南语字符。常用安全选择:Inter、Noto Sans、Roboto和Source Sans 3。始终声明系统字体回退栈。Android预装了Noto Sans,iOS的SF Pro包含完整范围,Windows的Segoe UI支持越南语。避免仅覆盖基本拉丁字母的字体,它们会将越南语附加符号显示为方块。
越南语数字和日期格式的官方来源是什么?
Unicode通用区域数据仓库(CLDR)是权威来源。vi区域设置定义了句点作为千位分隔符、逗号作为小数点以及DD/MM/YYYY日期格式。浏览器原生Intl API实现了CLDR:new Intl.NumberFormat('vi-VN').format(1234567)在任何符合标准的运行时返回"1.234.567"。
从中文游戏移植到越南语时最常见的本地化错误是什么?
最常见的四个错误:(1) 将中文的固定宽度容器直接复用到越南语,导致文字溢出;(2) 将 word-break: keep-all(CJK规则)错误应用于越南语;(3) 使用不支持Latin Extended Additional的字体,导致附加符号显示为方块;(4) 硬编码英美数字格式而非使用CLDR越南语格式。这四个问题都可以通过技术修复解决,无需重新翻译。
参考来源
- W3C Internationalization: Line Breaking - 将越南语分类为基于音节的换行语言。已于2026年9月验证。
- Unicode Standard Annex #29: Text Segmentation - 组合附加符号作为Extend字符,不在字符中间换行。已于2026年9月验证。
- Unicode CLDR(通用区域数据仓库) - vi区域设置:小数符号(,)、千位分组符号(.)和货币格式。已于2026年9月验证。
- Apple Developer: Localization - Auto Layout和弹性文字尺寸指南。已于2026年9月验证。
Written by Dao Huy (Lucas), Vietnamese translator & localization specialist (EN · ZH · FR → Vietnamese). See translation services →
