← Về blog

Tràn bố cục locale trong UI game: Dung lượng thiết kế dự phòng và QA xuất bản dịch VberAI Studio

Cách xử lý khi bản dịch tiếng Đức hoặc Tây Ban Nha phá vỡ nút và danh sách, cách dự trù chiều rộng trong thiết kế, và cách so sánh locale trên canvas VberAI Studio trước khi xuất lại toàn bộ cây.

Đăng ngày
  • game-ui-design
  • game-dev-ai
  • ui-localization
  • i18n
  • figma-to-unity
  • psd-to-unity
  • vberai
  • ai-studio
  • unity
  • godot
  • cocos
  • 2026
Tràn bố cục locale trong UI game: Dung lượng thiết kế dự phòng và QA xuất bản dịch VberAI Studio

Giao diện UI đủ điều kiện phát hành vẫn thường thất bại ở bước bản địa hóa vì lý do khác bản dịch kém: cùng một bố cục không thể chứa bản dịch. Chữ trên nút bị RectTransform cắt cụt, hàng danh sách từ hai dòng co lại thành một, tab vẫn chật chội nhưng hiện dấu ba chấm. Việc kiểm tra đạt trong Unity Editor với tiếng Anh giữ chỗ sẽ che giấu vấn đề cho đến khi thử tiếng Đức hoặc Tây Ban Nha—lúc đó việc sửa thường phải động đến cả nguồn thiết kế lẫn Prefab.

Các ví dụ về bố cục và cắt cụt bên dưới dùng Unity UGUI (RectTransform, Prefab, v.v.). Godot Control và Cocos UI dùng cùng ý tưởng qua anchor, minimum_size và prefab; dung lượng thiết kế dự phòng và tiêu chí tràn áp dụng theo cùng cách.

Danh sách kiểm tra bàn giao thiết kế mục 9–11 đã nêu rõ dung lượng dự phòng cho độ dài bản sao và các locale cùng cấu trúc. Bài này bổ sung khoảng tham chiếu, danh sách đánh dấu phía thiết kế, QA trên canvas sau khi dịch bằng VberAI Studio, và tiêu chí thất bại trước khi phát hành. Safe Area trên thiết bị, tài nguyên bản Release và các kiểm tra liên quan vẫn nằm trong danh sách kiểm tra UI trước phát hành mục 1, 5 và 6.

Tiêu chí thất bại (chỉ cần một điều = không đạt): chữ đọc được bị cắt cụt hoặc chồng lấn; dấu ba chấm hoặc chữ chạy mà không có đặc tả sản phẩm; khung nút trực quan không khớp với vùng nhấn; màn hình luồng chính của một locale cần thay đổi Hierarchy riêng để hiện đủ chữ (xung đột với mục tiêu đa ngôn ngữ cùng cấu trúc).


Độ giãn bản sao: khoảng tham chiếu cho thiết kế

Các nhóm bản địa hóa thường ước lượng độ tăng so với tiếng Anh hoặc ngôn ngữ nguồn. Đây không phải SLA có ràng buộc hợp đồng—hãy đặt ngưỡng nội bộ với kiểu chữ và cỡ chữ UI của bạn. Dùng bảng để chọn 2–3 locale áp lực cho buổi duyệt thiết kế trước bàn giao, không phải để dự đoán độ dài chuỗi chính xác.

Mối quan hệMẫu điển hình (nút mobile, nhãn ngắn)Hành động thiết kế
DE / ES / PT so với nhãn tiếng Trung ngắnCùng nghĩa thường cần ~+25% đến +40% không gian ngang (từ ghép, mạo từ)Đưa chiều rộng tối thiểu của nút và chiều rộng cố định của tab hoặc quy tắc xuống dòng vào đặc tả
EN so với ZH trên cùng một nútĐộ dài tương tự hoặc EN dài hơn chút—đừng coi chiều rộng EN là chuẩn nghiệm thu cho mọi localeKiểm tra nhanh DE hoặc ES bên cạnh EN
FR / ITTrung bình-dài; phụ đề danh sách thường cần hai dòngDự trù dòng thứ hai hoặc giới hạn độ dài phụ đề
VI / IDChữ Latin nhưng độ dài từ thay đổiCùng mức áp lực như ES
ARĐộ dài cộng với RTL và định hình chữ số; bố cục gương là chủ đề riêngBài này giả định LTR cùng cấu trúc; RTL cần quy tắc thiết kế hoặc gương của engine riêng
JA / KOTrộn toàn chiều rộng: chiều rộng thị giác không tuyến tính với số ký tựĐo chiều rộng chuỗi hiển thị ở cỡ đích; đừng chỉ đếm ký tự

Lưu ý engine: Auto Size của TextMeshPro trong Unity chỉ thu nhỏ trong khoảng cỡ chữ tối thiểu/tối đa. Nếu chữ vẫn tràn ở cỡ tối thiểu, đó là dung lượng bố cục, không phải thứ để sửa bằng cách thu nhỏ thêm—hãy mở rộng vùng chứa hoặc đổi bản sao trong thiết kế.

Side-by-side stress locales (e.g. DE, ES) with no overflow


12 kiểm tra thiết kế tập trung vào tràn (danh sách đánh dấu)

Ngoài danh sách bàn giao 12 mục chung, hãy đánh dấu những mục sau cho các locale:

#Kiểm traTiêu chuẩn đạt
1Bản sao nút chính là layer văn bản, không phải chữ hiển thị dạng ảnh rasterChuỗi có thể hoán đổi; liệt kê chữ hiển thị không bản địa hóa trong đặc tả
2Vùng chứa nút có chiều rộng tối thiểu (Figma Auto Layout hoặc chiều rộng cố định)Locale giả DE/ES hoặc chuỗi thật không tràn
3Tab / thanh dưới: ô cố định hoặc cho phép hai dòng rõ ràngKhông có kiểu “trông một dòng, thực ra bị cắt”
4Hàng danh sách: tiêu đề và phụ đề trên dòng riêng; phụ đề có số dòng tối đaNếu hai dòng không vừa, rút ngắn bản sao hoặc mở rộng danh sách
5Số, tiền tệ, bộ đếm và đơn vị là trường riêngKhông raster cả câu; định dạng nằm trong bảng chuỗi
6Icon + chữ: chiều rộng chữ độc lập với iconBản sao dài hơn không bóp méo icon
7Padding panel nine-slice và padding nội dung đủXem mục bàn giao 6; vùng giãn không dính sát chữ
8Tiêu đề hộp thoại, thân, nút chính/phụ là layer riêngĐặc tả cho xuống dòng hoặc giảm một bậc cỡ chữ khi tiêu đề dài
9Huy hiệu sự kiện và bản sao ngắn gần chấm đỏ có độ dài tối đaBản sao vận hành vượt giới hạn phải gửi lại để sửa—không bóp chữ khẩn cấp
10Biến thể đa ngôn ngữ: cùng cấu trúc Frame, chỉ khác chữKhông có control riêng cho locale trừ khi đặc tả cho phép
11Ghi chú xuất liệt kê locale áp lực nào đã được duyệtKỹ thuật / QA biết chuẩn nghiệm thu
12Ý tưởng toàn màn hình vẫn có chữ đọc đượcTách layer văn bản hoặc chấp nhận xuất lại trước engine (cắt tại chỗ)

Auto Layout hug/fill, chiều rộng tối thiểu/tối đa và truncate văn bản trong Figma phải khớp với thỏa thuận kỹ thuật—nếu sản phẩm cấm dấu ba chấm, đừng duyệt mock chỉ với truncate.


Đường đi VberAI Studio: dịch → so sánh → xuất lại toàn bộ cây

VberAI Studio (AI Studio, ≠ Google AI Studio) dịch một cú nhấp nhằm chỉ thay đổi bản sao đọc được—hình học và phân cấp giữ nguyên. Điều đó khớp với công việc engine nơi chỉ CSV / bảng chuỗi thay đổi và cấu trúc Prefab giữ nguyên—các giai đoạn khác nhau trên cùng một pipeline bản địa hóa: AI Studio sở hữu thiết kế trực quan đa ngôn ngữ và xuất bản; TMP và bảng chuỗi sở hữu chuyển đổi lúc chạy.

Thứ tự khuyến nghị (giống như canvas → Prefab):

BướcHành độngNghiệm thu
1Khóa bố cục chính trên canvas hoặc Figma/PSDLayer văn bản và biên nút rõ ràng
2Chạy dịch một cú nhấp cho từng màn hình (theo lô locale phát hành hoặc đa locale)Phân cấp layer và tên node không đổi
3Trên canvas, so sánh 2–3 locale có bản sao dài nhất cạnh nhau hoặc bằng chuyển đổi (gồm DE hoặc ES + locale phát hành chính)Không tràn, không chồng lấn
4Duyệt các chuỗi máy dịch quá dàiSửa bản sao hoặc chỉnh cỡ trong đặc tả; người duyệt các dòng pháp lý/thương hiệu
5Xuất lại toàn bộ cây Prefab (Unity UGUI / Godot Control / Cocos UI)Khớp với canvas; đừng chỉ sửa Text trong dự án mà không đồng bộ nguồn thiết kế
6Căn chỉnh bảng chuỗi với bản sao mặc định của Prefab trong dự ánChuyển locale trong Play mode khớp với canvas

Cùng bố cục, chỉ đổi theme: reskin. Sau reskin, nếu bạn thêm locale phát hành mới, vẫn phải dịch rồi xuất—tránh sửa tay Text trong Scene khi Prefab trong repo bị lệch (mục trước phát hành 6).

Trước khi dịch: bố cục trang chủ và quan hệ node cố định

Sau khi dịch: chỉ ngôn ngữ bản sao thay đổi; hình học nên giữ nguyên một-một


Nghiệm thu trước phát hành: gắn với danh sách kiểm tra thử nghiệm

Mục 2 của danh sách trước phát hành yêu cầu mọi locale đang hoạt động trên trang chủ và các popup chính. Cách thực hiện gợi ý:

MụcThực hành
Ưu tiên localeTrước khi duyệt toàn bộ locale, smoke locale áp lực + locale phát hành chính
Phạm viHUD chính, popup tần suất cao, màn hình bản sao dài về thanh toán/độ tuổi/pháp lý
Môi trườngChuyển locale trong Unity Editor không thay thế kiểm tra hiển thị font trên thiết bị (đặc biệt trộn CJK + Latin)
ĐạtKhông cắt cụt, không dấu ba chấm không khai báo, vùng nhấn khớp hình ảnh

Nếu chuỗi chỉ thay đổi trong engine và bố cục không đổi mà tràn vẫn còn → coi là dung lượng thiết kế dự phòng không đủ hoặc thiếu QA canvas locale áp lực, rồi sửa theo bảng bên dưới—không thu nhỏ font toàn cục vĩnh viễn trên Prefab.


Định tuyến sửa lỗi

Triệu chứngNguyên nhân khả dĩHành độngChủ sở hữu
Tràn một nút hoặc nhãnChiều rộng tối thiểu quá nhỏ; dùng chữ hiển thị làm chữ thânMở rộng thiết kế hoặc rút ngắn bản sao; chuyển sang layer văn bảnThiết kế
Nhiều tràn trên một màn hìnhMock chính quá chật; chưa duyệt locale áp lựcFigma/canvas Auto Layout → dịch lại bằng AI Studio → xuất lại toàn bộ câyThiết kế + Kỹ thuật
Unity Editor đạt, một locale lỗi trên thiết bịFont dự phòng rộng hơn; DPIThử lại trên thiết bị; điều chỉnh Font Asset / vùng chứaKỹ thuật
Danh sách hai dòng chỉ ở một localeBản dịch phụ đề quá dàiBản địa hóa rút ngắn hoặc tăng chiều cao hàng (xuất lại nếu cấu trúc đổi)Bản địa hóa + Thiết kế
Chuyển lúc chạy lỗi, canvas đạtBảng chuỗi lệch với PrefabCăn chỉnh bảng và Text mặc định; kiểm tra ngắt dòngKỹ thuật
Sau reskin sự kiện, locale vẫn hiện bố cục cũReskin chỉ đổi art, chưa xuất lại PrefabSau reskin, chạy lại dịch + xuất theo localeThiết kế

Quy tắc quyết định: nếu cấu trúc giữ nguyên → ưu tiên bản sao, chiều rộng tối thiểu và QA canvas VberAI Studio rồi xuất lại. Nếu bạn phải thêm/bớt node hoặc đổi số tab → thay đổi bố cục—cập nhật mock chính và mọi đặc tả locale; đừng vá Prefab của một locale riêng lẻ.


Phân chia công việc so với “chỉ bảng chuỗi”

Cách tiếp cậnPhù hợpKhông phù hợp
Bảng chuỗi / TMP trong engineBố cục đã xác minh; chỉ chuyển locale lúc chạyLần nhập UI đầu tiên chưa có QA locale áp lực
Dịch + xuất VberAI StudioĐịnh hướng thiết kế; tương đồng trực quan đa ngôn ngữ; nguồn Figma/PSDThay thế duyệt tuân thủ pháp lý hoặc thanh toán
Sửa tay Text trong PrefabHotfix khẩn cấp cho một hai chuỗiBảo trì đa ngôn ngữ lâu dài (Scene bị lệch)

Chuỗi đầy đủ: dung lượng thiết kế dự phòng → mock đa ngôn ngữ VberAI Studio → xuất Prefab → căn chỉnh bảng chuỗi và mặc định → smoke toàn locale trước phát hành. Binding và QA Play sau khi nhập: danh sách kiểm tra engine + MCP.


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

TMP Auto Size ở cỡ tối thiểu vẫn tràn—đó có phải lỗi kỹ thuật?
Thường là không. Auto Size chỉ co giãn trong vùng chứa. Nếu chiều rộng đã cố định lúc bàn giao, hãy mở rộng thiết kế hoặc đổi bản sao, hoặc cho phép hai dòng theo đặc tả.

Bố cục “về lý thuyết không đổi” sau khi dịch—vẫn phải xuất lại Prefab?
Nếu UI đến từ xuất VberAI Studio, xuất lại toàn bộ cây sau khi bản sao chốt sẽ giữ Prefab trong repo khớp với canvas. Chỉ sửa Text trong dự án mà không đồng bộ canvas sẽ mất khi reskin hoặc xuất lại lần sau.

RTL (tiếng Ả Rập, v.v.) có dùng được danh sách cùng cấu trúc này không?
Quy tắc chiều rộng cùng cấu trúc LTR vẫn hữu ích. RTL còn cần bố cục gương và hướng chữ số—đừng cho rằng chỉ dịch chuỗi là đủ để phát hành.

Có phải dịch lại khi reskin sự kiện không?
Nếu reskin không đổi bản sao, thì không. Nếu bản sao sự kiện đổi theo skin và tên node giữ nguyên, hãy kiểm tra lại locale áp lực trên canvas rồi xuất lại.

Tiếng Đức dài—có thể chỉ thu nhỏ cỡ chữ cho locale đó không?
Chỉ khi đặc tả sản phẩm định nghĩa “−1 bậc” toàn cục cho locale đó. Nếu không, ưu tiên chiều rộng tối thiểu và bản sao ngắn hơn để độ dễ đọc nhất quán giữa các nút.

VberAI Studio có giống Google AI Studio không?
Không. VberAI Studio là canvas UI game, dịch và xuất đa engine; Google AI Studio là môi trường phát triển AI tổng quát của Google. Xem so sánh.

Các bài hướng dẫn bạn có thể thích