Giao diện
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:
- Đồ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: truetrong database
- 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
- 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?
| Collection | Mô tả |
|---|---|
localizationTexts | Lưu text gốc cần dịch — gồm text và module (nguồn gốc) |
localizationTranslations | Lư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:
| Snippet | Quyền | Đối tượng |
|---|---|---|
pm.plugin-localization.localization | Toàn bộ action trên localization, localizationTexts, localizationTranslations | Admin / có quyền quản lý plugin |
ui.localization | localizationTexts:missing | Mọ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:
- Chưa nhấn Publish sau khi dịch
- Browser cache chưa được làm mới
- Module của text gốc không khớp với module đang hiển thị
Cách xử lý:
- Nhấn Publish để áp dụng bản dịch
- Nhấn
Ctrl + Shift + R(hard refresh) hoặc xóa cache trình duyệt - 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ý:
- Đảm bảo plugin nguồn đã được kích hoạt
- Kiểm tra cấu hình field — bật flag
translationcho trường cần dịch - 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)