💡 Để bản địa hóa ứng dụng iOS sang tiếng Việt: thêm
vitrong Xcode Project Settings, dùng String Catalogs (.xcstrings) tự đồng bộ chuỗi, viết một nhánh plural duy nhất (tiếng Việt chỉ có một dạng CLDR), bản địa hóa Info.plist và điền đầy đủ metadata App Store Connect. Kiểm tra bố cục trước khi phát hành vì chuỗi tiếng Việt dài hơn tiếng Anh 10-20%.
Ý chính
- Thêm tiếng Việt (
vi) trong Project Settings > Localizations; Xcode tự tạo thư mụcvi.lproj/cho mỗi tài nguyên được bản địa hóa. - String Catalogs (.xcstrings) trong Xcode 27 tự đồng bộ với SwiftUI và UIKit sau mỗi lần build, không cần duy trì thủ công tệp .strings.
- Tiếng Việt chỉ có một dạng số nhiều CLDR: other. Quy tắc plural trong .stringsdict và String Catalogs chỉ cần một nhánh tiếng Việt duy nhất.
- Giới hạn metadata App Store Connect: tên app 30 ký tự, phụ đề 30 ký tự, mô tả 4.000 ký tự, từ khóa 100 ký tự. Mỗi ký tự có dấu (ắ, ề, ộ) tính là 1 ký tự.
- Chuỗi mô tả quyền trong Info.plist bắt buộc phải có tiếng Việt - iOS hiển thị trực tiếp trong hộp thoại xin quyền hệ thống và App Review kiểm tra chúng.
Bản địa hóa ứng dụng iOS sang tiếng Việt gồm những gì?
Bản địa hóa iOS sang tiếng Việt bao gồm bốn lớp độc lập: trích xuất chuỗi ở mức code (NSLocalizedString / String(localized:)), quy tắc số nhiều (.stringsdict hoặc String Catalog), bản địa hóa tài nguyên (ảnh, storyboard, Info.plist) và metadata trang sản phẩm App Store (tên, phụ đề, mô tả, từ khóa, ảnh chụp màn hình). Cả bốn lớp phải hoàn chỉnh trước khi ứng dụng sẵn sàng cho thị trường Việt Nam.
Để thêm tiếng Việt, mở .xcodeproj trong Xcode, chọn project trong tab Info, nhấn + dưới Localizations và chọn Vietnamese (vi). Xcode tạo thư mục vi.lproj/ cho mỗi tài nguyên được bản địa hóa và, với dự án SwiftUI dùng String Catalogs, bắt đầu theo dõi chuỗi tiếng Việt tự động sau lần build tiếp theo. Mã ngôn ngữ cho tiếng Việt trong toàn bộ hệ thống là vi; không cần dùng vi-VN trừ khi SDK bên thứ ba yêu cầu.
String Catalogs và quy tắc plural tiếng Việt hoạt động thế nào trong Xcode 27?
String Catalogs (.xcstrings) là cách tiếp cận được khuyến nghị cho dự án mới kể từ Xcode 16. Tệp là một JSON có cấu trúc lưu tất cả bản dịch, quy tắc plural và văn bản theo thiết bị trong một chỗ. Sau khi thêm tiếng Việt và build, Xcode tự động quét SwiftUI views và UIKit calls để thu thập chuỗi cần bản địa hóa và thêm vào catalog.
Tiếng Việt chỉ có một dạng số nhiều CLDR: other. Mọi con số - 1, 2, 100 - đều dùng cùng dạng từ. Tiếng Việt diễn đạt số lượng qua danh từ chỉ loại và ngữ cảnh, không phải biến hình từ. "1 mục" và "5 mục" hoàn toàn giống nhau về dạng từ.
Trong String Catalog, slot plural tiếng Việt chỉ hiển thị một nhánh: other. Với tệp .stringsdict cũ hơn, chỉ cần định nghĩa khóa other cho tiếng Việt. Khi cần trạng thái rỗng riêng biệt, dùng khóa khớp chính xác =0 với nội dung như "Không có mục nào".
<!-- Ví dụ .stringsdict cho tiếng Việt (một nhánh plural duy nhất) -->
<key>item_count</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@item_count@</string>
<key>item_count</key>
<dict>
<key>NSStringPluralRuleType</key>
<string>other</string>
<key>other</key>
<string>%d mục</string>
</dict>
</dict>
Làm thế nào để bản địa hóa phần mô tả quyền trong Info.plist?
iOS hiển thị chuỗi mô tả quyền trực tiếp trong hộp thoại xin quyền hệ thống. Nếu những chuỗi này vẫn bằng tiếng Anh, người dùng Việt sẽ thấy tiếng Anh trong popup iOS, trông chưa hoàn chỉnh và có thể bị App Review từ chối vì thiếu bản địa hóa.
Với String Catalogs (Xcode 16+), tạo hoặc mở InfoPlist.xcstrings. Xcode tự thu thập các khóa đã được nhận diện: NSCameraUsageDescription, NSMicrophoneUsageDescription, NSLocationWhenInUseUsageDescription, NSPhotoLibraryUsageDescription. Thêm bản dịch tiếng Việt cho từng khóa ứng dụng sử dụng.
Ví dụ: "NSCameraUsageDescription" = "Ứng dụng cần truy cập camera để chụp ảnh hồ sơ của bạn.";
Giải thích cụ thể lý do ứng dụng cần quyền đó. Cả Apple lẫn người dùng Việt đều muốn biết lý do rõ ràng. Chuỗi mơ hồ có thể bị App Review đặt câu hỏi.
Phải điền những trường metadata nào trong App Store Connect bằng tiếng Việt?
Apple không tự động hiển thị trang sản phẩm tiếng Anh cho người dùng tại Việt Nam. Thêm bản địa hóa tiếng Việt (vi) trong App Store Connect và điền các trường sau:
- Tên ứng dụng: tối đa 30 ký tự. Mỗi ký tự có dấu tiếng Việt tính là 1 ký tự. "Quản lý tài chính" là 18 ký tự, nằm trong giới hạn.
- Phụ đề: tối đa 30 ký tự. Hiển thị bên dưới tên app trong kết quả tìm kiếm.
- Mô tả: tối đa 4.000 ký tự. Ba dòng đầu (~255 ký tự) hiển thị trước dấu "xem thêm" trong App Store. Đặt thông điệp giá trị mạnh nhất ở đây.
- Từ khóa: tối đa 100 ký tự, cách nhau bằng dấu phẩy, không có khoảng trắng. Người dùng Việt thường tìm không dấu khi gõ nhanh - cân nhắc thêm cả dạng không dấu nếu còn ngân sách.
- Ảnh chụp màn hình: tải lên ảnh chụp màn hình hiển thị giao diện tiếng Việt. App Review kiểm tra ảnh chụp màn hình có khớp với bản địa hóa đã nộp không.
Bố cục tiếng Việt trên iOS có thể gặp vấn đề gì và cách khắc phục?
Font hệ thống iOS (San Francisco, Helvetica Neue) hiển thị tiếng Việt chính xác từ đầu. Vấn đề chỉ xảy ra với font tùy chỉnh và bố cục label cố định.
- Font tùy chỉnh: kiểm tra font có hỗ trợ đầy đủ các biến thể chữ cái cơ sở tiếng Việt (ă, â, ê, ô, ơ, ư, đ) và dấu thanh kết hợp không. Ký tự bị thiếu tự động dùng font hệ thống, tạo hiển thị font hỗn hợp trong cùng từ.
- Label bị cắt ngắn: chuỗi tiếng Việt dài hơn tiếng Anh 10-20%. UILabel với numberOfLines = 1 sẽ cắt văn bản tiếng Việt dù tiếng Anh vừa đủ. Chạy scheme tiếng Việt trong Simulator và kiểm tra mọi label chính ở độ rộng iPhone SE (375pt).
- Chuẩn hóa NFC: dấu phụ tiếng Việt có thể mã hóa theo NFC (một code point) hoặc NFD (ký tự gốc + dấu kết hợp). Cả hai hiển thị giống nhau nhưng NFD thất bại khi so sánh chuỗi. Dùng
string.precomposedStringWithCanonicalMappingtrong Swift để chuẩn hóa NFC. - Hướng văn bản: tiếng Việt viết từ trái sang phải, không cần xử lý RTL.
Tự làm hay thuê chuyên gia: ranh giới thực tế cho đội iOS
Công việc kỹ thuật - thêm vi vào Xcode, cấu hình String Catalogs, bản địa hóa Info.plist và thiết lập App Store Connect - hoàn toàn có thể tự thực hiện trong một đến hai ngày làm việc.
Dịch máy hoạt động tốt với chuỗi tiện ích: nhãn form, thông báo lỗi, màn hình cài đặt. Những chuỗi này ngắn, ngữ cảnh có cấu trúc, chất lượng MT đủ dùng cho lần ra mắt đầu tiên.
Chuyên gia người Việt bản ngữ thực sự tiết kiệm chi phí ở: nội dung trang sản phẩm App Store, màn hình onboarding và thuật ngữ chuyên ngành. Từ Hán-Việt được kỳ vọng trong app tài chính và y tế: "giao dịch" cho transaction, "tài khoản" cho account, "xác thực" cho authentication. Người dịch bản ngữ hiểu những thuật ngữ này ngay từ đầu; dịch máy thường trả về từ thuần Việt nghe kém chuyên nghiệp hơn.
Cách phân chia thực tế: dùng MT cho toàn bộ chuỗi tiện ích, thuê chuyên gia tiếng Việt bản ngữ cho trang sản phẩm App Store và 20-30 màn hình onboarding hoặc luồng chính mà người dùng thấy mỗi phiên. Với dịch thuật chuyên nghiệp Anh-Việt cho app iOS và sản phẩm số, dịch vụ bản địa hóa website và ứng dụng tiếng Việt trên trang này xử lý cả chuỗi kỹ thuật lẫn nội dung App Store.
Câu hỏi thường gặp
Mã ngôn ngữ tiếng Việt trong Xcode là gì?
Dùng vi làm mã ngôn ngữ. Xcode tạo thư mục vi.lproj/ trong bundle. Mã vi bao gồm tất cả người dùng tiếng Việt theo chuẩn BCP 47. Chỉ dùng vi-VN khi SDK bên thứ ba yêu cầu mã locale đầy đủ để tra cứu dữ liệu.
Có cần tệp .stringsdict cho quy tắc số nhiều tiếng Việt không?
Chỉ cần cho dự án chưa dùng String Catalogs. Tiếng Việt chỉ có một dạng số nhiều CLDR (other), nên entry .stringsdict cho tiếng Việt chỉ cần khóa other. Với dự án trên Xcode 16+, dùng String Catalogs (.xcstrings) thay thế. Dự án mới có thể bỏ qua .stringsdict hoàn toàn.
Ký tự tiếng Việt ảnh hưởng thế nào đến ngân sách từ khóa App Store?
App Store Connect cho phép 100 ký tự cho trường từ khóa. Mỗi ký tự có dấu tiếng Việt tính là 1 ký tự. Với 100 ký tự, bạn có khoảng 8-12 cụm từ khóa tiếng Việt có nghĩa. Phân tách bằng dấu phẩy, không có khoảng trắng. Người dùng Việt thường tìm không dấu khi gõ nhanh, hãy cân nhắc thêm cả dạng không dấu.
Nên dùng tiếng Việt miền Bắc, miền Trung hay miền Nam?
Với hầu hết ứng dụng, một bản địa hóa theo chuẩn tiếng Việt miền Bắc (Hà Nội) là đủ. Tiếng Việt miền Bắc là biến thể chuẩn được dùng trong báo chí, văn bản chính thức và sản phẩm số toàn quốc. Tiếng Việt miền Nam khác chủ yếu ở vài chục từ vựng thông dụng, không phải ngữ pháp hay hệ thống chữ viết.
Làm thế nào để kiểm tra bản địa hóa tiếng Việt trước khi nộp App Review?
Trong Xcode, thêm tiếng Việt làm ngôn ngữ test trong scheme (Edit Scheme > Run > Options > App Language = Vietnamese). Khởi chạy trong iOS Simulator với scheme này. Kiểm tra từng màn hình: label bị cắt ngắn, hộp thoại quyền, nhập văn bản có dấu và tất cả ảnh cho nội dung nhạy cảm locale. Kiểm tra đặc biệt ở độ rộng iPhone SE (375pt), hạn chế bố cục phổ biến nhất trong iPhone fleet.
Nguồn tham khảo
- Apple Developer: Localization - Tính năng String Catalogs trong Xcode, App Store hỗ trợ 50 ngôn ngữ và 175 vùng, quy trình bản địa hóa đầy đủ. Đã xác minh tháng 11 năm 2026.
- Apple Developer Documentation: Xcode Localization - Các loại tệp .strings, .stringsdict, .xcstrings, NSLocalizedString API, quy trình bản địa hóa Info.plist. Đã xác minh tháng 11 năm 2026.
- Unicode CLDR: Language Plural Rules - Dạng số nhiều CLDR cho tiếng Việt: một dạng "other" duy nhất. Đã xác minh tháng 11 năm 2026.

Bài viết bởi Đào Huy (Lucas), biên dịch viên và chuyên viên bản địa hóa tiếng Việt (Anh, Trung, Pháp sang Việt). See translation services →
