Bỏ qua, đến nội dung

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

Sử dụng ​

Plugin có hỗ trợ dịch tự động không? ​

Không. Plugin Localization không dịch tự động. Quy trình dịch gồm:

  1. Đồng bộ text: Nhấn Sync để thu thập tất cả chuỗi cần dịch từ hai nguồn:
    • System & Plugins: Các chuỗi từ hệ thống và plugin đã cài đặt
    • Collections & Fields: Các trường có translation: true trong database
  2. Dịch thủ công: Nhập bản dịch cho từng chuỗi tương ứng với locale mong muốn
  3. Publish: Nhấn Publish để áp dụng bản dịch vào hệ thống

Người dùng đổi ngôn ngữ ở đâu? ​

Trong menu người dùng (góc trên phải) → Language. Ngôn ngữ được lưu theo phiên (session) của từng user.

Tôi có thể thêm ngôn ngữ mới không? ​

Có. Hệ thống hỗ trợ mọi locale theo chuẩn BCP 47 (ví dụ: vi-VN, ja-JP, ko-KR). Khi dịch cho locale mới, bản dịch sẽ tự động được lưu vào bảng localizationTranslations.

Text mới thêm từ plugin có được tự động thu thập không? ​

Có, khi nhấn Sync cho nguồn "System & Plugins". Plugin sẽ quét toàn bộ resources từ localeManager, bao gồm cả text từ plugin mới cài đặt.

Trường collection có dịch được không? ​

Có, nếu trường đó được đánh dấu translation: true trong cấu hình field. Khi đồng bộ nguồn "Collections & Fields", plugin sẽ duyệt tất cả collection, tìm các trường có flag translation và thu thập giá trị text từ database.

Cấu hình ​

Collection nào được tạo bởi plugin? ​

CollectionMô tả
localizationTextsLưu text gốc cần dịch — gồm text và module (nguồn gốc)
localizationTranslationsLưu bản dịch — gồm locale, translation, liên kết textId đến localizationTexts

Phân quyền hoạt động thế nào? ​

Plugin đăng ký 2 snippet ACL:

SnippetQuyềnĐối tượng
pm.plugin-localization.localizationToàn bộ action trên localization, localizationTexts, localizationTranslationsAdmin / có quyền quản lý plugin
ui.localizationlocalizationTexts:missingMọi user đăng nhập (report text thiếu)

Hệ thống cache hoạt động ra sao? ​

Plugin sử dụng in-memory cache (cacheManager) để lưu text đã tải. Cache được cập nhật khi:

  • Thêm text mới (qua addNewTexts)
  • Nhận sync message từ cluster node khác (qua handleSyncMessage)
  • Reset thủ công khi cần reload toàn bộ

Lỗi thường gặp ​

Dịch rồi nhưng vẫn hiển thị tiếng Anh ​

Nguyên nhân phổ biến:

  1. Chưa nhấn Publish sau khi dịch
  2. Browser cache chưa được làm mới
  3. Module của text gốc không khớp với module đang hiển thị

Cách xử lý:

  1. Nhấn Publish để áp dụng bản dịch
  2. Nhấn Ctrl + Shift + R (hard refresh) hoặc xóa cache trình duyệt
  3. Kiểm tra cột Module trong bảng localization texts — đảm bảo text bạn dịch thuộc đúng module

Sync không tìm thấy text mới ​

Nguyên nhân: Text thuộc plugin chưa được kích hoạt, hoặc trường collection chưa có translation: true.

Cách xử lý:

  1. Đảm bảo plugin nguồn đã được kích hoạt
  2. Kiểm tra cấu hình field — bật flag translation cho trường cần dịch
  3. Thử sync lại — text mới sẽ xuất hiện trong danh sách

Bản dịch bị mất sau khi cập nhật hệ thống ​

Bản dịch được lưu trong database (localizationTranslations), không bị ảnh hưởng bởi cập nhật hệ thống. Nếu bị mất, kiểm tra:

  • Database có được backup/restore đúng không
  • Migration có xóa/đổi tên bảng không (kiểm tra log migration)