Đóng góp bản dịch
Ngôn ngữ mặc định của NocoBase là tiếng Anh. Hiện tại, ứng dụng chính hỗ trợ tiếng Anh, tiếng Ý, tiếng Hà Lan, tiếng Trung giản thể và tiếng Nhật. Chúng tôi trân trọng mời bạn đóng góp bản dịch cho các ngôn ngữ khác, để Người dùng trên toàn cầu đều có thể tận hưởng trải nghiệm NocoBase tiện lợi hơn.
I. Bản địa hóa hệ thống
1. Bản dịch giao diện hệ thống và Plugin
1.1 Phạm vi bản dịch
Chỉ áp dụng cho bản địa hóa giao diện hệ thống NocoBase và các Plugin, không bao gồm các nội dung tùy chỉnh khác (như bảng dữ liệu hoặc Block Markdown).


1.2 Tổng quan nội dung bản địa hóa
NocoBase dùng Git để quản lý nội dung bản địa hóa. Kho chính là: https://github.com/nocobase/nocobase/tree/main/locales
Mỗi ngôn ngữ được bi ểu diễn bằng một file JSON đặt tên theo mã ngôn ngữ (ví dụ de-DE.json, fr-FR.json). Cấu trúc file được tổ chức theo module Plugin, dùng cặp key-value để lưu bản dịch. Ví dụ:
Khi dịch, vui lòng từng bước chuyển đổi nó thành cấu trúc tương tự như sau:
1.3 Kiểm thử và đồng bộ bản dịch
-
Sau khi hoàn thành bản dịch, vui lòng kiểm thử và xác minh tất cả văn bản hiển thị đúng. Chúng tôi cũng đã phát hành một plugin xác minh bản dịch — tìm
Locale testertrong plugin marketplace.
Sau khi cài đặt, sao chép nội dung JSON từ file bản địa hóa tương ứng trong kho git, dán vào đó, sau đó nhấn xác nhận để kiểm chứng nội dung bản dịch có hoạt động không.

-
Sau khi commit, script hệ thống sẽ tự động đồng bộ nội dung bản địa hóa vào kho mã.
1.4 Plugin bản địa hóa NocoBase 2.0
Lưu ý: Phần này đang được phát triển. Plugin bản địa hóa của NocoBase 2.0 có một số khác biệt so với phiên bản 1.x. Thông tin chi tiết sẽ được cung cấp trong các bản cập nhật sau.
II. Bản địa hóa tài liệu (NocoBase 2.0)
Tài liệu của NocoBase 2.0 áp dụng cấu trúc quản lý mới. File nguồn của tài liệu nằm trong kho chính của NocoBase:
https://github.com/nocobase/nocobase/tree/next/docs
2.1 Cấu trúc tài liệu
Tài liệu dùng Rspress làm trình tạo trang static, hỗ trợ 8 ngôn ngữ. Cấu trúc được tổ chức như sau:
2.2 Quy trình dịch
-
Đồng bộ với nguồn tiếng Anh: Tất cả bản dịch nên dựa trên tài liệu tiếng Anh (
docs/en/). Khi tài liệu tiếng Anh được cập nhật, bản dịch nên được cập nhật tương ứng. -
Chiến lược nhánh:
- Dùng nhánh
develophoặcnextlàm tham chiếu cho nội dung tiếng Anh mới nhất - Tạo nhánh dịch của bạn từ nhánh đích
- Dùng nhánh
-
Cấu trúc file: Mỗi thư mục ngôn ngữ nên phản chiếu cấu trúc thư mục tiếng Anh. Ví dụ:
2.3 Đóng góp bản dịch
- Fork kho: https://github.com/nocobase/nocobase
- Clone fork của bạn và checkout nhánh
develophoặcnext - Điều hướng đến thư mục
docs/docs/ - Tìm thư mục ngôn ngữ bạn muốn đóng góp (ví dụ, tiếng Nhật là
ja/) - Dịch các file markdown, giữ cấu trúc file giống với phiên bản tiếng Anh
- Kiểm thử thay đổi của bạn ở local:
- Submit Pull Request lên kho chính
2.4 Hướng dẫn dịch
- Giữ format nhất quán: Giữ cấu trúc markdown, tiêu đề, code block và liên kết giống file nguồn
- Bảo toàn frontmatter: Giữ nguyên YAML frontmatter ở đầu file, trừ khi nó chứa nội dung có thể dịch
- Tham chiếu hình ảnh: Dùng cùng đường dẫn hình ảnh từ
docs/public/— hình ảnh được dùng chung giữa tất cả các ngôn ngữ - Liên kết nội bộ: Cập nhật liên kết nội bộ để trỏ đến đường dẫn ngôn ngữ chính xác
- Ví dụ code: Thông thường, ví dụ code không nên dịch, nhưng comment trong code có thể dịch
2.5 Cấu hình điều hướng
Cấu trúc điều hướng của mỗi ngôn ngữ được định nghĩa trong file _nav.json và _meta.json trong mỗi thư mục ngôn ngữ. Khi thêm trang mới hoặc chương, hãy đảm bảo cập nhật các file cấu hình này.
III. Bản địa hóa trang chủ chính thức
Các trang và toàn bộ nội dung của trang chủ được lưu tại: https://github.com/nocobase/website
3.1 Bắt đầu và tài nguyên tham khảo
Khi thêm ngôn ngữ mới, vui lòng tham khảo các trang ngôn ngữ hiện có:
- Tiếng Anh: https://github.com/nocobase/website/tree/main/src/pages/en
- Tiếng Trung: https://github.com/nocobase/website/tree/main/src/pages/cn
- Tiếng Nhật: https://github.com/nocobase/website/tree/main/src/pages/ja

Sửa đổi style toàn cục nằm tại:
- Tiếng Anh: https://github.com/nocobase/website/blob/main/src/layouts/BaseEN.astro
- Tiếng Trung: https://github.com/nocobase/website/blob/main/src/layouts/BaseCN.astro
- Tiếng Nhật: https://github.com/nocobase/website/blob/main/src/layouts/BaseJA.astro

Bản địa hóa các component toàn cục của trang chủ nằm tại: https://github.com/nocobase/website/tree/main/src/components

3.2 Cấu trúc nội dung và phương pháp bản địa hóa
Chúng tôi áp dụng phương pháp quản lý nội dung kết hợp. Nội dung và tài nguyên tiếng Anh, tiếng Trung và tiếng Nhật được đồng bộ định kỳ từ hệ thống CMS và ghi đè, trong khi các ngôn ngữ khác có thể được chỉnh sửa trực tiếp trong file local. Nội dung local được lưu trong thư mục content, được tổ chức như sau:
3.3 Hướng dẫn dịch nội dung
- Về dịch nội dung Markdown
- Tạo file ngôn ngữ mới dựa trên file mặc định (ví dụ,
index.mdthànhindex.fr.md) - Thêm thuộc tính bản địa hóa vào các trường tương ứng trong file JSON
- Giữ tính nhất quán của cấu trúc file, liên kết và tham chiếu hình ảnh
- Dịch nội dung JSON Nhiều metadata nội dung được lưu trong file JSON, thường chứa các trường đa ngôn ngữ:
Lưu ý khi dịch:
-
Quy ước đặt tên trường: Các trường dịch thường dùng format
{trường gốc}_{mã ngôn ngữ}- Ví dụ: title_fr (tiêu đề tiếng Pháp), description_de (mô tả tiếng Đức)
-
Khi thêm ngôn ngữ mới:
- Thêm phiên bản có hậu tố ngôn ngữ tương ứng cho mỗi trường cần dịch
- Không sửa giá trị trường gốc (như title, description, v.v.), vì chúng đóng vai trò là nội dung ngôn ngữ mặc định (tiếng Anh)
-
Cơ chế đồng bộ CMS:
- Hệ thống CMS định kỳ cập nhật nội dung tiếng Anh, tiếng Trung và tiếng Nhật
- Hệ thống chỉ cập nhật/ghi đè nội dung của ba ngôn ngữ này (một số thuộc tính trong JSON), không xóa các trường ngôn ngữ do người đóng góp khác thêm vào
- Ví dụ: nếu bạn đã thêm bản dịch tiếng Pháp (title_fr), việc đồng bộ CMS sẽ không ảnh hưởng đến trường này
3.4 Cấu hình hỗ trợ ngôn ngữ mới
Để thêm hỗ trợ cho ngôn ngữ mới, cần sửa cấu hình SUPPORTED_LANGUAGES trong file src/utils/index.ts:
3.5 File layout và style
Mỗi ngôn ngữ cần file layout tương ứng:
- Tạo file layout mới (ví dụ, đối với tiếng Pháp, tạo
src/layouts/BaseFR.astro) - Bạn có thể sao chép file layout hiện có (như
BaseEN.astro) và dịch nó - File layout chứa bản dịch của các phần tử toàn cục như menu điều hướng, footer, v.v.
- Đảm bảo cập nhật cấu hình language switcher để chuyển đổi đúng sang ngôn ngữ mới được thêm
3.6 Tạo thư mục trang ngôn ngữ
Tạo thư mục trang riêng cho ngôn ngữ mới:
- Tạo một thư mục đặt tên theo mã ngôn ngữ trong thư mục
src(ví dụsrc/fr/) - Sao chép cấu trúc trang từ thư mục ngôn ngữ khác (ví dụ
src/en/) - Cập nhật nội dung trang, dịch tiêu đề, mô tả và văn bản sang ngôn ngữ đích
- Đảm bảo trang dùng component layout đúng (ví dụ
.layout: '@/layouts/BaseFR.astro')
3.7 Bản địa hóa component
Một số component dùng chung cũng cần dịch:
- Kiểm tra các component trong thư mục
src/components/ - Đặc biệt chú ý đến các component có văn bản cố định (như navbar, footer, v.v.)
- Component có thể dùng conditional rendering để hiển thị nội dung của các ngôn ngữ khác nhau:
3.8 Kiểm thử và xác minh
Sau khi hoàn thành bản dịch, hãy kiểm thử toàn diện:
- Chạy website ở local (thường dùng
yarn dev) - Kiểm tra hiệu ứng hiển thị của tất cả các trang trong ngôn ngữ mới
- Xác minh tính năng chuyển đổi ngôn ngữ có hoạt động đúng không
- Đảm bảo tất cả liên kết trỏ đến trang phiên bản ngôn ngữ chính xác
- Kiểm tra layout responsive, đảm bảo văn bản đã dịch không phá vỡ thiết kế trang
IV. Cách bắt đầu dịch
Nếu bạn muốn đóng góp bản dịch ngôn ngữ mới cho NocoBase, vui lòng làm theo các bước sau:
Sau khi hoàn thành bản dịch, vui lòng submit Pull Request lên NocoBase. Ngôn ngữ mới sẽ xuất hiện trong cấu hình hệ thống, cho phép bạn chọn ngôn ngữ hiển thị.

Tài liệu NocoBase 1.x
Về hướng dẫn dịch của NocoBase 1.x, vui lòng tham khảo:

