Bản địa hóa liên tục tiếng Việt: hướng dẫn thiết lập Crowdin
← Blog
🌏 Bản địa hóa9 phút đọc

Bản địa hóa liên tục tiếng Việt: hướng dẫn thiết lập Crowdin

💡 Bản địa hóa liên tục tự động hóa vòng lặp đẩy-kéo giữa kho mã nguồn và TMS như Crowdin, giúp bản dịch tiếng Việt ra cùng lúc với từng phiên bản thay vì trễ nhiều tuần. Thiết lập cốt lõi: kết nối GitHub, thêm crowdin.yml, và yêu cầu phê duyệt bản ngữ trước khi gộp. Bẫy chính: chuẩn hóa Unicode NFD/NFC khiến chuỗi chưa thay đổi bị nhận diện là mới.

Ý chính

  • Tích hợp GitHub của Crowdin đồng bộ mỗi giờ một lần theo mặc định: chuỗi nguồn mới tự động tải lên, bản dịch tiếng Việt được phê duyệt sẽ quay về dưới dạng pull request trên nhánh l10n_.
  • File crowdin.yml tối giản với bốn trường (project_id, api_token, đường dẫn nguồn, đường dẫn bản dịch có %locale%) là đủ để bắt đầu; CLI bỏ qua file không thay đổi, giữ pipeline CI chạy nhanh.
  • Chuẩn hóa file JSON nguồn về NFC trước mỗi lần đẩy để tránh NFD từ macOS tạo ra "chuỗi mới giả".
  • Tiếng Việt thường dài hơn tiếng Anh từ 10-25%; chạy kiểm thử bố cục với locale vi sau mỗi bản phát hành quan trọng.
  • Yêu cầu phê duyệt của người bản ngữ trước khi gộp: dịch máy xử lý UI chung tốt, nhưng lỗi dấu thanh trong văn bản hướng đến khách hàng không bị công cụ ước lượng chất lượng tự động phát hiện.

Bản địa hóa liên tục là gì, và tại sao tiếng Việt thường bị trễ?

Bản địa hóa truyền thống theo mô hình thác nước: nhà phát triển đóng băng chuỗi, chuyển cho dịch thuật viên, chờ đợi, rồi mới phát hành. Với sản phẩm agile hiện đại, điều này có nghĩa là bản tiếng Việt ra chậm hơn tiếng Anh nhiều tuần - một tín hiệu niềm tin rõ rệt đối với 78 triệu người dùng internet tại Việt Nam (DataReportal, 2024).

Bản địa hóa liên tục thay thế đóng băng chuỗi bằng trigger tự động. Ngay khi nhà phát triển đẩy chuỗi mới lên kho mã nguồn, TMS phát hiện phần thay đổi và chuyển đến dịch thuật viên. Khi họ phê duyệt, nền tảng tạo pull request và bản tiếng Việt ra cùng phiên bản. Không còn gom batch, không còn trễ.

Kết quả: tiếng Việt và tiếng Anh ra cùng lúc, chi phí bản địa hóa dự đoán được vì dịch thuật viên xử lý lô nhỏ liên tục thay vì dump lớn theo quý, và translation memory tích lũy theo từng sprint.

Tích hợp Crowdin và GitHub hoạt động như thế nào?

Tích hợp GitHub của Crowdin chạy hai chiều. Khi bạn đẩy file nguồn (ví dụ src/locales/en.json) lên GitHub, Crowdin kéo các chuỗi mới hoặc đã thay đổi vào dự án. Khi dịch thuật viên phê duyệt các chuỗi tiếng Việt trong editor của Crowdin, nền tảng đẩy file bản dịch lên nhánh có tiền tố l10n_ và tự động tạo pull request.

Chu kỳ đồng bộ mặc định là mỗi giờ. Bạn có thể kích hoạt đồng bộ ngay lập tức qua nút Sync Now trên dashboard, hoặc dùng CLI trong pipeline CI/CD để kiểm soát tốt hơn. Tích hợp cũng hỗ trợ quản lý nhánh: các nhánh Crowdin riêng cho main, staging và feature giữ trạng thái bản dịch tách biệt theo track phát hành.

Các nền tảng TMS thay thế - Phrase TMS, Lokalise và Smartcat - cung cấp cùng mô hình kích hoạt webhook. Các khái niệm cốt lõi (tải file nguồn khi push, PR bản dịch khi phê duyệt) đồng nhất; sự khác biệt chủ yếu là mức giá và độ sâu tự động hóa quy trình.

File crowdin.yml tối giản cho dự án tiếng Việt cần những gì?

Đặt file crowdin.yml trong thư mục gốc của kho mã nguồn. Cấu hình tối thiểu cho dự án JSON tiếng Việt:

project_id: "YOUR_PROJECT_ID"
api_token: "%CROWDIN_API_TOKEN%"
base_path: "."
files:
  - source: /src/locales/en.json
    translation: /src/locales/%locale%.json
    ignore:
      - /src/locales/en.json

Placeholder %locale% ánh xạ đến vi cho tiếng Việt, tạo ra src/locales/vi.json. Quy tắc ignore ngăn file nguồn bị ghi đè thành file bản dịch.

Thêm hai bước vào pipeline CI (ví dụ GitHub Actions):

- name: Upload sources to Crowdin
  run: crowdin upload sources --config crowdin.yml
- name: Download approved Vietnamese
  run: crowdin download --language vi --config crowdin.yml

Lưu CROWDIN_API_TOKEN dưới dạng secret của kho, không hardcode trong file config. CLI Crowdin sử dụng cached upload và bỏ qua file không thay đổi từ lần chạy trước.

Những bẫy đặc thù tiếng Việt nào phá vỡ quy trình tự động?

Ba lỗi thường gặp chỉ xuất hiện với tiếng Việt trong pipeline bản địa hóa liên tục:

Trôi dạt chuẩn hóa Unicode. Dấu thanh tiếng Việt có hai dạng Unicode hợp lệ: NFC tổng hợp sẵn (một code point cho mỗi ký tự có dấu) và NFD phân tách (ký tự cơ sở cộng combining mark). Các trình soạn thảo trên macOS thường ghi NFD; phần lớn TMS lưu NFC. Khi file nguồn đến Crowdin theo dạng NFD, translation memory nhận dạng mọi chuỗi có dấu là mới, điểm khớp TM về không, và bạn trả phí dịch lại. Thêm bước .normalize("NFC") vào pre-commit hook để xử lý.

Lỗi dấu thanh. Tiếng Việt có sáu thanh điệu viết bằng dấu phụ. Một dấu sai thay đổi hoàn toàn nghĩa của từ: "ma" (ma quỷ), "mà" (nhưng mà), "má" (má/mẹ), "mả" (ngôi mả), "mã" (mã số), "mạ" (mạ lúa). Công cụ ước lượng chất lượng tự động không phát hiện lỗi thanh điệu vì đầu ra vẫn là văn bản tiếng Việt hợp lệ. Cần người bản ngữ duyệt mọi chuỗi tiếp xúc khách hàng.

Độ dài chuỗi tăng. Chuỗi tiếng Việt thường dài hơn tiếng Anh 10-25%. Nhãn điều hướng, nút bấm và tab ứng dụng di động có thể bị tràn container một cách im lặng trong các build tự động. Chạy kiểm thử hồi quy bố cục với locale vi để phát hiện tràn trước khi người dùng gặp phải.

Nhóm của bạn có thể tự xử lý đến đâu, và khi nào chuyên gia tiếng Việt bản ngữ giúp tiết kiệm chi phí?

Lớp tự động hóa - thiết lập Crowdin, crowdin.yml, tích hợp GitHub, pipeline CI/CD - hoàn toàn là việc của nhà phát triển. Không cần chuyên gia ngoài.

Với lớp dịch thuật, ranh giới thực tế là:

  • Nội dung UI chung và nội dung thông tin: Dịch máy kết hợp người bản ngữ rà soát là đủ và hiệu quả chi phí. MT hiện đại xử lý từ vựng sản phẩm phổ biến tốt; lượt rà soát bắt lỗi thanh điệu và cách diễn đạt không tự nhiên.
  • Bản sao marketing và thương hiệu: Dịch thuật viên bản ngữ hiểu ngữ thể miền Bắc (chuẩn cho kinh doanh chính thức) và giọng điệu sản phẩm của bạn sẽ tạo ra bản sao có khả năng chuyển đổi. Đầu ra MT chung đọc như dịch nghĩa đen với người dùng Việt.
  • Chuỗi kỹ thuật, pháp lý hoặc tài chính: Thuật ngữ Hán-Việt chuyên ngành rất quan trọng ở đây. Một ứng dụng fintech dùng sai thuật ngữ đặc trưng là tín hiệu người ngoài với người dùng Việt. Chuyên gia bản ngữ với kiến thức chuyên ngành chọn đúng thuật ngữ người dùng thực sự sử dụng.

Dịch vụ bản địa hóa website tiếng Việt của Đào Huy bao gồm cả rà soát pipeline tự động và lớp dịch thuật bởi người bản ngữ cho sản phẩm web gia nhập thị trường Việt Nam.

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

Tôi có thể dùng gói miễn phí của Crowdin cho bản địa hóa tiếng Việt liên tục không?

Gói miễn phí của Crowdin hỗ trợ một dự án với tính năng giới hạn. Tích hợp GitHub và quản lý nhánh cần thiết cho bản địa hóa liên tục yêu cầu gói trả phí. Phrase TMS và Lokalise cũng có gói trả phí tương đương; so sánh mức giá hiện tại trên trang của các nền tảng đó.

Mã locale nào tôi nên dùng cho tiếng Việt trong file locale?

Dùng vi (ISO 639-1) cho tiếng Việt không có biến thể vùng, hoặc vi-VN (IETF BCP 47) khi cần chỉ rõ Việt Nam. Trong crowdin.yml, placeholder %locale% xuất ra mã locale như cấu hình trong cài đặt dự án.

Crowdin có hỗ trợ translation memory và bảng thuật ngữ tiếng Việt không?

Có. Crowdin duy trì translation memory cấp dự án cho tiếng Việt. Khi chuỗi nguồn thay đổi, TM hiển thị bản dịch tiếng Việt trước đó với điểm khớp để giảm chi phí dịch lại. Bảng thuật ngữ cho phép khóa các thuật ngữ Hán-Việt đặc thù để nhiều dịch thuật viên dùng cùng từ vựng nhất quán.

Làm sao ngăn bản dịch tiếng Việt từ máy đưa thẳng lên production?

Đặt ngưỡng phê duyệt tối thiểu trong cài đặt dự án Crowdin và cấu hình tích hợp GitHub chỉ tạo PR khi tất cả chuỗi đạt ngưỡng đó. Bạn cũng có thể thêm flag --export-approved-only vào bước crowdin download trong pipeline CI để chỉ tải xuống chuỗi đã được con người phê duyệt.

Bản địa hóa liên tục có áp dụng cho ứng dụng di động không?

Có. Crowdin hỗ trợ Android XML, iOS .strings và Flutter ARB bên cạnh JSON. Tích hợp GitHub hoạt động tương tự: chuỗi nguồn đẩy lên Crowdin mỗi commit, bản dịch tiếng Việt được phê duyệt quay về dưới dạng PR. Các lưu ý về chuẩn hóa Unicode và kiểm thử bố cục áp dụng tương tự cho di động.

Nguồn

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

Báo giáWhatsApp