Giao diện game tiếng Việt: xử lý chuỗi dài hơn nguồn EN/ZH
← Blog
🌏 Bản địa hóa7 phút đọc

Giao diện game tiếng Việt: xử lý chuỗi dài hơn nguồn EN/ZH

💡 Chuỗi giao diện game tiếng Việt dài hơn tiếng Anh 20-40% và dài hơn 3-5 lần về số ký tự so với tiếng Trung. Nút nhấn, tooltip kỹ năng và nhãn HUD là những thành phần đầu tiên bị tràn nội dung. Container linh hoạt trong RectTransform của Unity và SizeBox của Unreal, kết hợp với font hỗ trợ Latin Extended Additional, ngăn lỗi bố cục trước buổi LQA đầu tiên.

Ý chính

  • Tính thêm 20-40% không gian cho văn bản mô tả trong giao diện; các từ hành động ngắn (OK, Lưu) thường tương đương hoặc ngắn hơn tiếng Anh.
  • Trong Unity: dùng Content Size Fitter kết hợp TextMeshPro auto-sizing thay vì chiều rộng RectTransform cố định; thêm font fallback hỗ trợ U+1E00-U+1EFF vào TMP_FontAsset.
  • Trong Unreal: đặt SizeBox với Min Desired Width thay vì slot CanvasPanel kích thước cố định; bật Text Wrapping trên RichTextBlock và UTextBlock.
  • Xuất bảng chuỗi ra spreadsheet, sắp xếp theo độ dài ký tự tiếng Anh, dịch thử 20 nhãn dài nhất trước khi chốt bố cục giao diện.
  • Không áp dụng quy tắc ngắt dòng CJK cho văn bản tiếng Việt: tiếng Việt ngắt dòng theo khoảng trắng âm tiết, không theo ký tự CJK.

Giao diện game tiếng Việt dài hơn tiếng Anh bao nhiêu?

Tiếng Việt là ngôn ngữ đơn lập có thanh điệu, viết từng âm tiết riêng biệt. Mỗi âm tiết mang một thanh điệu và thường có dấu nguyên âm. Kết quả là nhãn nút sáu ký tự tiếng Anh thường trở thành chín đến mười hai ký tự tiếng Việt. "Battle" (6 ký tự) thành "chiến đấu" (9 ký tự). "Settings" (8 ký tự) thành "cài đặt" (7 ký tự). Nhưng "Advanced Settings" (17 ký tự) thành "cài đặt nâng cao" (16 ký tự với chi phí hiển thị dấu lớn hơn đáng kể).

Mức độ giãn không đồng đều. Các từ hành động ngắn (OK, Lưu, Thoát) thường tương đương chiều dài tiếng Anh. Rủi ro thực sự nằm ở nhãn mô tả dài: tên nhiệm vụ, mô tả kỹ năng, tooltip HUD thường giãn 25-40% về chiều rộng pixel. Với game nguồn tiếng Trung, sự chênh lệch về số ký tự càng rõ hơn: "战斗" (2 ký tự Trung) thành "chiến đấu" (9 ký tự Việt), nhưng chiều rộng pixel thực tế ít cực đoan hơn do chữ Hán rộng hơn.

Thành phần giao diện game nào dễ tràn nội dung nhất?

Không phải tất cả thành phần đều có rủi ro như nhau. Năm loại sau đây dễ lỗi nhất khi áp dụng chuỗi tiếng Việt mà chưa kiểm tra:

  • Nút có chiều rộng cố định: bất kỳ nút nào được tạo kiểu cho tiếng Anh với chiều rộng cứng sẽ cắt nhãn tiếng Việt khi chúng vượt quá ngân sách pixel. Thiết kế nút với chiều rộng tối thiểu kèm padding ngang thay vì width pixel cứng.
  • Tooltip kỹ năng và vật phẩm: cửa sổ tooltip có chiều rộng pixel cố định sẽ cắt mô tả tiếng Việt. Tăng chiều rộng tooltip cơ bản thêm 30% hoặc dùng tooltip có thể cuộn cho mô tả dài.
  • Nhãn thành phần HUD: nhãn chỉ số bên cạnh thanh HP/MP ("Sức tấn công", "Phòng thủ") thường nằm trong container hẹp. Cần container linh hoạt hoặc từ viết tắt tiếng Việt thống nhất với dịch giả.
  • Thanh điều hướng tab: bốn hoặc năm tab với nhãn tiếng Việt dài sẽ tràn chiều rộng màn hình ở 375-390dp. Kiểm tra mọi tổ hợp tab ở 375dp trước khi chốt giao diện.
  • Banner thông báo hệ thống: banner một dòng tiếng Anh cần hai dòng cho câu tiếng Việt tương đương. Đặt chiều cao động hoặc giới hạn số dòng không cắt dấu thanh khỏi nguyên âm.

Cách xử lý chuỗi dài trong Unity như thế nào?

Unity Localization Package lưu trữ chuỗi tiếng Việt trong String Table Collection cùng với các locale khác. Smart Strings của gói hỗ trợ thay thế biến và quy tắc số nhiều, điều quan trọng vì tiếng Việt không đánh dấu số nhiều ngữ pháp nhưng dùng loại từ số. Cấu hình vi-VN qua Window > Asset Management > Localization Tables, như được ghi lại trong tài liệu Unity Localization Package 1.5.

Để xử lý bố cục, thay thế mọi chiều rộng RectTransform cứng trên nút và nhãn bằng giải pháp linh hoạt:

  • Thêm component Content Size Fitter vào RectTransform gốc của nút. Đặt Horizontal Fit là "Preferred Size" và thêm Horizontal Layout Group với padding trái-phải bằng nhau. Nút sẽ co giãn vừa với nhãn của bất kỳ locale nào.
  • Đặt Font Size của TextMeshPro là "Auto Size" với giới hạn min/max thay vì cỡ chữ cố định. TMP thu nhỏ chữ khéo léo khi nhãn tiếng Việt lấp đầy container thay vì cắt bỏ.
  • Trong TMP Global Font Asset Settings, thêm Fallback Font Asset hỗ trợ tiếng Việt (Noto Sans, Be Vietnam Pro hoặc Source Han Sans). Dấu tiếng Việt nằm trong khối Latin Extended Additional (U+1E00-U+1EFF) và hầu hết font game đều bỏ qua khối này.
  • Bật tính năng Pseudo-localization (Project Settings > Localization > Pseudo-locale) để mô phỏng giãn chuỗi 30% trong quá trình QA bố cục trước khi nhận chuỗi tiếng Việt thực.

Cách xử lý chuỗi dài trong Unreal Engine như thế nào?

Unreal Engine dùng FText cho tất cả chuỗi giao diện cần bản địa hóa. Tài liệu bản địa hóa text Unreal Engine khuyến nghị định nghĩa chuỗi bằng macro NSLOCTEXT hoặc LOCTEXT để Localization Dashboard tự động thu thập. Tiếng Việt dùng tag IETF vi hoặc vi-VN, thêm qua Project Settings > Localization > Cultures. Tổng quan bản địa hóa Unreal mô tả cách ánh xạ culture trong DefaultGame.ini.

Hai thay đổi widget UMG xử lý hầu hết vấn đề giãn chuỗi:

  • Thay Canvas Panel slot với kích thước pixel cố định bằng Size Box có Min Desired Width nhưng không có fixed width. Nút mở rộng vượt mức tối thiểu khi nhãn tiếng Việt yêu cầu.
  • Trên UTextBlock và URichTextBlock, bật Auto Wrap Text với giá trị wrap phù hợp container rộng nhất. Văn bản xuống dòng thay vì bị cắt khi nhãn tiếng Việt vượt ngân sách pixel tiếng Anh.

Để hỗ trợ font, thêm Composite Font trong Slate/Fonts với typeface mặc định cho font game chính và fallback typeface bao phủ U+1E00-U+1EFF. Cách này phục vụ dấu tiếng Việt mà không cần xây lại toàn bộ font atlas.

Font chữ tiếng Việt: tại sao font CJK thường thất bại

Lỗi build phổ biến: chuỗi tiếng Việt hiển thị thành ô vuông hoặc hộp rỗng sau khi nhập bản dịch. Nguyên nhân hầu như luôn là font CJK tùy chỉnh bỏ qua khối Latin Extended Additional (U+1E00-U+1EFF) vì đã tối ưu cho chữ Trung, Nhật hoặc Hàn. Khối này chứa tất cả ký tự tiếng Việt đã ghép sẵn: ề, ổ, ắ, ữ, ị và hơn 250 biến thể.

Cách sửa tùy thuộc vào engine và cách dùng font. Với TMP trong Unity, tạo TMP_FontAsset tiếng Việt từ Noto Sans hoặc Be Vietnam Pro và thêm vào chuỗi fallback. Với Unreal, thêm slot composite font fallback bao phủ U+1E00-U+1EFF. Luôn chuẩn hóa chuỗi tiếng Việt về dạng NFC (ký tự ghép sẵn) khi nhập: một số phần mềm gõ tiếng Việt xuất NFD (dạng phân tách), gây không khớp giữa chuỗi lưu trữ và mục font atlas. Một bước chuẩn hóa NFC khi nhập ngăn hoàn toàn lớp lỗi này.

Tự xử lý hay cần chuyên gia tiếng Việt: đánh giá thực tế

Các vấn đề bố cục và font ở trên hoàn toàn là kỹ thuật: không cần kiến thức tiếng Việt. Bất kỳ lập trình viên nào cũng có thể sửa RectTransform, SizeBox và cấu hình font fallback mà không cần hỏi dịch giả. Kiểm tra pseudo-localization và đo tỷ lệ giãn từ bản MT đầu tiên cũng là việc nội bộ.

Chuyên gia tiếng Việt bản ngữ mang lại giá trị thực sự trong các lĩnh vực sau:

  • Thương lượng độ dài chuỗi: chuyên gia ngôn ngữ có thể đề xuất bản ngắn hơn cho các nhãn giãn nhiều nhất. "Cài đặt nâng cao" (16 ký tự) có thể rút thành "Nâng cao" (8 ký tự) trong ngữ cảnh nút mà không mất nghĩa trong game.
  • Giọng văn và văn phong: giao diện game tiếng Việt chia giữa từ Hán Việt trang trọng (dùng trong game chiến lược và nhập vai) và tiếng Việt thông thường hàng ngày (ưa chuộng trong game casual). MT không thể phân biệt đáng tin cậy hai văn phong này, và lựa chọn sai làm giảm trải nghiệm người chơi.
  • LQA (kiểm thử chất lượng ngôn ngữ): người đánh giá bản ngữ với ảnh chụp màn hình trong engine phát hiện dấu thanh bị cắt, nhóm âm tiết bị ngắt và thuật ngữ sai văn hóa mà công cụ tự động bỏ qua.

Để bản địa hóa game tiếng Việt toàn diện bao gồm chuỗi, LQA và nội dung trang cửa hàng ứng dụng, xem dịch thuật game tiếng Việt chuyên nghiệp.

Câu hỏi thường gặp

Mức độ giãn chuỗi từ tiếng Anh sang tiếng Việt trong game UI là bao nhiêu?

Nhãn mô tả và văn bản nhiệm vụ giãn 20-40% về số ký tự từ tiếng Anh sang tiếng Việt. Các từ hành động ngắn (OK, Lưu, Thoát) thường tương đương hoặc ngắn hơn. Sự giãn cực đoan nhất xảy ra với cụm danh từ nhiều từ dùng trong menu cài đặt và mô tả kỹ năng. Kiểm tra 20 nhãn nguồn dài nhất để tìm trường hợp ngoại lệ thực sự thay vì giả định tỷ lệ giãn đồng đều cho toàn bảng chuỗi.

Chuỗi tiếng Việt có giãn hơn các ngôn ngữ Đông Nam Á khác không?

Mức giãn từ tiếng Anh sang tiếng Việt (20-40%) tương đương Thái và Indonesia về tỷ lệ, nhưng khác về tính chất. Tiếng Thái và Khmer không dùng khoảng trắng giữa các từ, làm phức tạp việc ngắt dòng. Tiếng Việt dùng âm tiết phân tách bằng khoảng trắng, giúp ngắt dòng đáng tin cậy không cần quy tắc engine bổ sung. Rủi ro đặc trưng trong tiếng Việt là dấu xếp chồng: mỗi âm tiết có thể mang cả dấu hình nguyên âm lẫn dấu thanh, làm tăng chiều cao glyph khi hiển thị.

Có cần bảng chuỗi riêng cho phương ngữ Bắc và Nam không?

Không. Tiếng Việt chuẩn (tiêu chuẩn Hà Nội) là chuẩn xuất bản trên toàn Việt Nam cho giao diện game và phụ đề. Một String Table vi-VN duy nhất được người bản ngữ quen cả hai phong cách rà soát là đủ cho toàn thị trường. Chỉ lời thoại có giọng đọc mới cần kiểm tra thêm với người miền Nam nếu game hướng đến TP.HCM cụ thể.

Có thể dùng dịch máy cho chuỗi UI và bỏ qua kiểm duyệt bản ngữ không?

MT hoạt động tốt với chuỗi kỹ thuật ít nhập nhằng: thông báo hệ thống, định dạng số, nhãn menu đơn giản. MT gặp khó khăn với: chọn văn phong (Hán Việt hay thuần Việt), điều chỉnh thành ngữ và tên nhân vật, duy trì nhất quán thuật ngữ qua 10.000+ chuỗi trong game nhập vai. Với game casual đơn giản, MT kết hợp một lần LQA bản ngữ là hướng tiết kiệm chi phí. Với game nặng nội dung tự sự, dịch bản ngữ có hỗ trợ MT cho kết quả tốt hơn MT kèm chỉnh sửa sau.

Nguồn

Written by Dao Huy (Lucas), Vietnamese translator & localization specialist (EN · ZH · FR → Vietnamese). See translation services →

Báo giáWhatsApp