Game UI String Expansion: Fitting Vietnamese into Your EN/ZH Game
💡 Vietnamese UI strings run 20-40% longer than English source labels and 3-5x longer in character count than Chinese equivalents. Buttons, skill tooltips, and HUD labels are the first components to overflow. Flexible containers in Unity's RectTransform and Unreal's SizeBox, combined with Latin Extended Additional font coverage, prevent layout failures before the first LQA pass.
Key takeaways
- Plan for 20-40% expansion from English to Vietnamese for descriptive UI text; short action words (OK, Save) are often the same length or shorter.
- In Unity: use Content Size Fitter plus TextMeshPro auto-sizing instead of fixed RectTransform widths; add a Vietnamese-capable font fallback in TMP_FontAsset settings covering U+1E00-U+1EFF.
- In Unreal: wrap buttons in SizeBox with Min Desired Width rather than a fixed-size CanvasPanel slot; enable Text Wrapping on RichTextBlock and UTextBlock components.
- Export your string table to a spreadsheet, sort by English character count, and pre-translate the 20 longest labels before locking the UI layout.
- Never apply CJK line-break rules to Vietnamese text: Vietnamese uses space-based syllable breaks, not character-based CJK breaks.
How much longer is Vietnamese than English in game UI?
Vietnamese is an isolating, tonal language that writes every syllable separately. Each syllable also carries a tone mark and often a vowel diacritic. The result is that a six-character English button label frequently becomes a nine-to-twelve character Vietnamese equivalent. "Battle" (6 chars) becomes "chiến đấu" (9 chars). "Equipment" (9 chars) becomes "trang bị" (8 chars, but "Equipment Settings" at 18 chars becomes "cài đặt trang bị" at 16 chars plus diacritic rendering overhead).
The practical expansion rate for game UI text is not uniform. Short action words (OK, Save, Exit) often translate to similarly short Vietnamese equivalents. The real risk is mid-to-long descriptive labels: quest names, skill descriptions, HUD tooltips that routinely expand 25-40% in pixel width. For Chinese-sourced games, the jump is steeper in character count: Chinese characters are compact glyphs, while Vietnamese precomposed characters span more pixels each. "战斗" (2 Chinese chars) becomes "chiến đấu" (9 Vietnamese chars with diacritics).
Which game UI components overflow first?
Not all UI elements carry equal risk. These five break earliest when Vietnamese strings replace English source labels:
- Buttons with fixed width: any fixed-width button styled for English will clip Vietnamese labels once they expand beyond the original pixel budget. Design buttons with a minimum width plus horizontal padding rather than a hard pixel width.
- Skill and item tooltips: tooltip windows set to a fixed pixel width truncate Vietnamese descriptions. Either increase the base tooltip width by 30% or use a scrollable tooltip for long descriptions.
- HUD element labels: stat labels next to health or mana bars ("Attack Power", "Defense") often sit in narrow fixed-width containers. These require flexible containers or abbreviated Vietnamese alternatives agreed with the translator.
- Tab navigation bars: four or five tabs with long Vietnamese labels overflow the screen width at 375-390dp. Test every tab combination at 375dp before locking the UI layout.
- Notification and system messages: single-line banners designed for English prose need two lines for Vietnamese equivalents. Set dynamic height or a line clamp that does not cut tone marks off their vowels.
How do you fix string expansion in Unity?
The Unity Localization Package stores Vietnamese strings in a String Table Collection alongside every other locale. The package's Smart Strings support variable substitution and plural rules. Configure vi-VN via Window > Asset Management > Localization Tables, as documented in the Unity Localization Package 1.5 documentation. Smart Strings handle number classifiers and variable substitution correctly for Vietnamese without custom code.
For layout, replace every hard-coded RectTransform width on buttons and labels with a flexible alternative:
- Add a Content Size Fitter component to the button's root RectTransform. Set Horizontal Fit to "Preferred Size" and add a Horizontal Layout Group with equal left and right padding. The button stretches to fit any locale's label.
- Set TextMeshPro's Font Size to "Auto Size" with min/max bounds rather than a fixed point size. TMP shrinks text gracefully when a Vietnamese label fills the container instead of clipping it.
- In TMP Global Font Asset Settings, add a Vietnamese-capable Fallback Font Asset (Noto Sans, Be Vietnam Pro, or Source Han Sans). Vietnamese diacritics live in Unicode Latin Extended Additional (U+1E00-U+1EFF) and most game fonts skip this block entirely.
- Enable Unity's built-in Pseudo-localization (Project Settings > Localization > Pseudo-locale) to simulate 30% string expansion during layout QA before real Vietnamese strings arrive. This catches overflow failures early without waiting for translation.
How do you fix string expansion in Unreal Engine?
Unreal Engine uses FText for all localizable user-facing strings. The Unreal Engine text localization documentation recommends defining strings with NSLOCTEXT or LOCTEXT macros so the Localization Dashboard can gather them automatically. Vietnamese uses the IETF tag vi or vi-VN, added via Project Settings > Localization > Cultures. The Unreal localization overview covers culture mapping in DefaultGame.ini for regional variants.
For layout, two UMG widget changes handle most string expansion problems:
- Replace any Canvas Panel slot with a fixed pixel size with a Size Box widget that sets a Min Desired Width but no fixed width. The button expands beyond the minimum when Vietnamese labels require it.
- On UTextBlock and URichTextBlock, enable Auto Wrap Text and set a wrap-at value that matches your widest sensible container. Text wraps rather than clips when Vietnamese labels exceed the English pixel budget.
For font coverage, add a Composite Font in Slate/Fonts with a default typeface for your main game font and a fallback typeface covering U+1E00-U+1EFF. This serves Vietnamese diacritics without rebuilding the entire font atlas for every language.
Vietnamese font coverage: why CJK game fonts fail
A common engine build failure: Vietnamese strings show as rectangles or empty boxes after translation import. The cause is almost always a custom CJK font optimized for Chinese, Japanese, or Korean that skipped the Latin Extended Additional block (U+1E00-U+1EFF). That block contains all Vietnamese precomposed characters: ề, ổ, ắ, ữ, ị, and their 250-plus variants.
The fix depends on engine and usage. For TMP in Unity, build a separate Vietnamese TMP_FontAsset from Noto Sans or Be Vietnam Pro and add it to the fallback chain. For Unreal, add a composite font fallback slot covering U+1E00-U+1EFF. Always normalize Vietnamese strings to NFC form (precomposed characters) at import: some Vietnamese IME software outputs NFD (decomposed form), which causes mismatch between stored strings and font atlas entries. A single NFC normalization step prevents this class of bug entirely.
What you can fix in-house vs when a Vietnamese specialist adds value
The layout and font issues above are purely engineering: they require no Vietnamese language knowledge. Any developer can fix the RectTransform, SizeBox, and font fallback configuration without consulting a translator. Pseudo-localization tests and expansion ratio measurements from a raw MT first pass are also fully in-house tasks.
A native Vietnamese specialist adds genuine value in these specific areas:
- String length negotiation: a Vietnamese linguist can suggest shorter equivalents for the labels that expand most. "Cài đặt nâng cao" (Advanced Settings, 16 chars) might become "Nâng cao" (8 chars) in a button context without losing meaning in-game.
- Tone and register: Vietnamese game UI splits between formal Sino-Vietnamese vocabulary (used in strategy and RPG titles) and casual everyday Vietnamese (preferred in casual mobile). MT engines cannot reliably distinguish the two registers, and a wrong register choice breaks player immersion.
- LQA (Linguistic Quality Assurance): a native reviewer with in-engine screenshots catches tone mark clipping, truncated syllable groups, and culturally wrong terminology that automated tools miss entirely.
For end-to-end Vietnamese game localization covering strings, LQA, and App Store listing copy, see the Vietnamese game localization service.
FAQ
What is the typical string expansion rate from English to Vietnamese in game UI?
Descriptive labels and quest text expand 20-40% in character count from English to Vietnamese. Short action words (OK, Save, Exit) are often comparable in length or shorter. The most extreme expansion occurs with multi-word noun phrases used in settings menus and skill descriptions. Test your 20 longest source labels to find the real outliers rather than assuming a flat expansion rate across the whole string table.
Is Vietnamese string expansion worse than other Southeast Asian languages?
Vietnamese expansion from English is comparable to Thai and Indonesian in percentage terms (20-40%) but different in character. Thai and Khmer do not use spaces between words, complicating line breaking. Vietnamese uses space-separated syllables, making line breaking reliable without extra engine rules. The unique risk in Vietnamese is stacked diacritics: each syllable can carry both a vowel shape modifier and a tone mark, increasing rendered glyph height compared to English source strings.
Do I need separate Vietnamese string tables for North and South dialect differences?
No. Standard Northern Vietnamese (tiêu chuẩn) is the written publishing standard across all of Vietnam for game UI and subtitles. A single vi-VN String Table reviewed by a native Vietnamese speaker familiar with both Northern and Southern registers is sufficient for the full Vietnam market. Only voiced dialogue benefits from a Southern Vietnamese check if the game specifically targets Ho Chi Minh City audiences.
Can I use machine translation for Vietnamese UI strings and skip a native review?
MT works well for technical strings with low ambiguity: system messages, numeric formats, simple menu labels. It struggles with tone and register selection (Sino-Vietnamese vs. everyday vocabulary), cultural adaptation of idioms and character names, and maintaining consistency across 10,000-plus strings in an RPG. For casual mobile games with simple UI, MT plus a native LQA pass is a workable cost-effective approach. For narrative-heavy games, native translation with MT assistance produces better results than MT with post-editing.
Official Sources
- Unity Localization Package 1.5 Documentation - String Table Collections, Smart Strings, pseudo-localization, and vi-VN locale setup. Verified October 2026.
- Unreal Engine: Text Localization - FText type, NSLOCTEXT/LOCTEXT macros, String Tables, and culture-aware number formats. Verified October 2026.
- Unreal Engine: Localization Overview - IETF language tags, CultureMappings in DefaultGame.ini, and the localization pipeline. Verified October 2026.
- W3C Internationalization: Line Breaking - Vietnamese classified as syllable-based line-breaking language, not CJK character-break. Verified October 2026.
Written by Dao Huy (Lucas), Vietnamese translator & localization specialist (EN · ZH · FR → Vietnamese). See translation services →
