Bỏ qua, đến nội dung

@digiforce-nc/plugin-localization

Plugin quản lý đa ngôn ngữ — lưu trữ source strings và bản dịch, đồng bộ từ locale cache và database, cung cấp UI quản lý translation.

Plugin này làm gì?

Hãy hình dung một phòng biên dịch: mỗi chuỗi văn bản (source string) trong hệ thống được gửi vào phòng biên dịch, tại đây có sẵn bản dịch cho từng ngôn ngữ. Khi hệ thống cần hiển thị giao diện, nó hỏi phòng biên dịch "câu này tiếng Việt nói sao?" và nhận lại bản dịch tương ứng.

Ba nhiệm vụ chính

#Nhiệm vụChi tiết
1Thu thập source stringsTự động phát hiện chuỗi mới từ module/collection, lưu vào DB
2Quản lý bản dịchCRUD translations cho từng ngôn ngữ, phát hiện bản dịch thiếu
3Đồng bộ cacheSync translations từ DB vào locale cache để i18n hoạt động realtime

Kiến trúc

Tổng quan 4 tầng

TầngVai tròThành phần
Client UIQuản lý bản dịch, xem missing keysLocalization settings, MissingKeyHandler
Server APIThu thập string, sync, trả translationsSourceManager, resources
DatabaseLưu trữ source texts & translations2 bảng: localizationTexts, localizationTranslations
CacheLocale data in-memoryĐồng bộ từ DB, phục vụ i18n nhanh

API endpoints

EndpointMô tả
localization:syncĐồng bộ translations từ DB vào locale cache
localizationTexts:listDanh sách source texts
localizationTexts:missingDanh sách text chưa có bản dịch cho ngôn ngữ chỉ định

Luồng đồng bộ

BướcHành độngKết quả
Phát hiện text mớiSourceManager.addNewTexts()Ghi record vào localizationTexts
Admin dịchSửa translation qua UIGhi vào localizationTranslations
Sync cacheGọi localization:syncCache cập nhật, i18n dùng bản dịch mới

Database — 2 bảng

BảngChứa gìVí dụ
localizationTextsSource string gốc{ module: 'users', text: 'Sign in' }
localizationTranslationsBản dịch theo ngôn ngữ{ textId: 1, locale: 'vi-VN', translation: 'Đăng nhập' }

Thành phần client

Thành phầnMô tả
Localization settingsTrang quản lý translations trong Settings
MissingKeyHandlerHiển thị & đánh dấu các key chưa có bản dịch

Dependencies

PackageVai trò
@digiforce-nc/cacheLocale cache (peer)
@digiforce-nc/databaseDatabase ORM (peer)
@digiforce-nc/plugin-ui-schema-storageĐọc UI schema để thu thập source strings
@digiforce-nc/clientClient framework (peer)

Mục lục chi tiết