champollion
Một framework quốc tế hóa (internationalization) hoàn toàn có thể tùy chỉnh. Chỉ với một lệnh duy nhất để dịch các tệp ngôn ngữ (locale files) của bạn. Một cấu hình duy nhất để kiểm soát mọi phương thức, mô hình và cặp ngôn ngữ. Và nếu các phương thức tích hợp sẵn là chưa đủ — hãy tự xây dựng phương thức của riêng bạn, chứng minh nó hoạt động hiệu quả và triển khai nó.
npx champollion sync
champollion tự động phát hiện các tệp ngôn ngữ, định dạng và ngôn ngữ đích của bạn. Nó sẽ dịch những phần còn thiếu, bỏ qua những phần đã hoàn thành, xác thực mọi kết quả và ghi ra đầu ra sạch sẽ. Đó mới chỉ là vạch xuất phát.
Tại sao không tự viết script?
Bạn có thể viết một vòng lặp nhanh để gọi Google Translate cho từng khóa (key). Hầu hết các nhà phát triển đều làm vậy — chỉ mất khoảng 30 dòng code. Nhưng đây là những điểm mà cách làm đó sẽ gặp lỗi:
- Không phát hiện thay đổi. Khi bạn cập nhật một chuỗi tiếng Anh — bản dịch cũ sẽ bị lỗi thời mãi mãi. champollion theo dõi từng giá trị nguồn bằng mã băm SHA-256 và chỉ dịch lại những gì đã thay đổi.
- Không gom nhóm (batching). Một cuộc gọi API cho mỗi khóa đồng nghĩa với việc 200 khóa = 200 lượt yêu cầu khứ hồi. champollion gom nhóm một cách thông minh (có thể cấu hình, mặc định là 80 khóa/nhóm cho LLM, 128 cho Google).
- Không lưu bộ nhớ đệm (caching). Mỗi lần đồng bộ hóa đều phải dịch lại mọi thứ. Bộ nhớ dịch (Translation Memory) của champollion lưu bản dịch theo văn bản nguồn + ngôn ngữ + phương thức — việc chạy lại đồng bộ sau khi thay đổi một khóa duy nhất sẽ chỉ dịch khóa đó, chứ không phải toàn bộ tệp.
- Không có rào cản kiểm soát chất lượng (quality gate). Dịch máy có thể bị ảo tưởng (hallucination), lặp lại văn bản nguồn hoặc trả về sai hệ chữ viết. champollion xác thực mọi bản dịch trước khi ghi — các lỗi sai hệ chữ viết, độ dài tăng bất thường và lặp lại nguồn đều bị phát hiện và từ chối.
- Không nhận biết định dạng. Chỉ cứng nhắc với JSON? champollion xử lý JSON, TOML, YAML và Hugo Markdown (frontmatter + nội dung) với khả năng tự động phát hiện.
- Không kiểm soát phương thức. Mọi cặp ngôn ngữ đều phải dùng chung một phương thức. champollion cho phép bạn sử dụng Google Translate cho tiếng Pháp, một LLM cho tiếng Nhật và một pipeline tùy chỉnh do cộng đồng lưu trữ cho tiếng Cree — tất cả trong cùng một tệp cấu hình.
champollion chính là phiên bản production của đoạn script đó.
Điều gì làm nên sự khác biệt
Mỗi phương thức là một plugin
Phương thức dịch có thể cấu hình cho từng cặp ngôn ngữ. Bạn có thể kết hợp Google Translate, LLM, prompt có hướng dẫn (coached prompt) và các API tùy chỉnh trong cùng một dự án:
{
"version": 3,
"pairs": {
"en:fr": { "method": "google-translate" },
"en:ja": { "method": "llm", "model": "google/gemini-2.5-pro" },
"en:crk": { "methodPlugin": "crk-coached-v1" }
}
}
Tiếng Pháp sử dụng Google Translate (nhanh, rẻ). Tiếng Nhật sử dụng một LLM cao cấp (tinh tế hơn). Tiếng Plains Cree sử dụng một plugin có hướng dẫn với các quy tắc ngữ pháp, từ điển và xác thực hình thái học. Cùng một lệnh sync. Cùng một rào cản chất lượng. Cùng một CLI.
Hãy chứng minh điều đó
Bạn nghĩ phương thức của mình có thể dịch tiếng Anh sang tiếng Tây Ban Nha? Tiếng Thổ Nhĩ Kỳ sang tiếng Azerbaijan? Tiếng Anh sang tiếng Cree?
Hãy chứng minh điều đó. Bộ công cụ đánh giá đi kèm eval harness sẽ đo điểm chuẩn (benchmark) cho bất kỳ phương thức dịch nào với điểm số có thể tái lập và được định danh (fingerprinted). Bảng xếp hạng leaderboard theo dõi mọi lượt gửi bài.
Bộ công cụ đánh giá (eval harness) và CLI production chia sẻ cùng một giao diện plugin. Một phương thức đạt điểm cao trong bộ công cụ đánh giá có thể được sử dụng trong môi trường production — nếu cộng đồng sở hữu ngôn ngữ đó đồng ý. Đối với các ngôn ngữ bản địa và ngôn ngữ ít tài nguyên (low-resource), sự đồng ý đó là vô cùng quan trọng. Xem thêm về Chủ quyền dữ liệu (Data Sovereignty).
# Benchmark your method (in the eval harness repo)
cd arena
python eval/baseline_experiment.py --dataset data/edtekla-dev-v1.json --submit
# Use it locally
npx champollion sync
Cùng một plugin. Cắm vào và thử nghiệm.
Bộ công cụ toàn diện
champollion không chỉ là sync. Nó là một pipeline i18n hoàn chỉnh:
| Lệnh | Chức năng |
|---|---|
sync | Dịch các khóa bị thiếu và bị lỗi thời (với xác thực sau đồng bộ) |
watch | Tự động đồng bộ hóa khi tệp nguồn của bạn thay đổi |
lint | Quét mã nguồn để tìm các chuỗi bị viết cứng (hardcoded) |
wrap | Tự động bọc các chuỗi viết cứng trong các lệnh gọi t() |
audit | Liệt kê tất cả các dấu hiệu dự phòng (fallback marker) [EN] từ các lần chạy trước |
verify | Xác minh các bản dịch có đầy đủ và chính xác hay không (rào cản CI) |
integrity | Phát hiện lỗi hỏng chỗ chứa (placeholder), sự cố mã hóa và tính đầy đủ của số nhiều ICU (ICU plural) |
seo | Tạo các thẻ hreflang, sitemap và schema JSON-LD |
status | Hiển thị cấu hình cặp ngôn ngữ, plugin và điểm số benchmark |
provenance | Kiểm tra giấy phép của tài nguyên dịch thuật |
plugin | Cài đặt, gỡ bỏ và liệt kê các plugin phương thức |
fonts | Tải xuống web font cho các bộ chuyển đổi hệ chữ viết PUA |
tm | Quản lý bộ nhớ đệm Bộ nhớ dịch (thống kê, xóa, theo từng ngôn ngữ) |
xliff | Xuất/nhập XLIFF 1.2 để biên dịch viên chuyên nghiệp soát lỗi |
Bốn trong số các lệnh này — lint, sync, verify, audit — tạo thành một pipeline CI giúp phát hiện các chuỗi viết cứng, dịch chúng, xác minh tính chính xác và báo lỗi bản build nếu có bất kỳ ngôn ngữ nào chưa hoàn thành.
Đấu trường (The Arena)
Bảng xếp hạng phương thức chính là bảng điểm. Mỗi lượt gửi bài đều được định danh theo một commit Git, được gắn phiên bản với một tập dữ liệu cụ thể và được chấm điểm bởi cùng một bộ công cụ đánh giá. Bất kỳ ai cũng có thể gửi bài.
Bạn có thể chứng minh điều gì? Bộ công cụ đánh giá nhận đầu vào là JSON. Các plugin nhận đầu vào là JSON. Bất kỳ phương thức nào tạo ra JSON đều có thể được kiểm thử:
| Cách tiếp cận | Ví dụ |
|---|---|
| LLM có hướng dẫn (Coached LLM) | Đưa các quy tắc ngữ pháp và từ điển vào prompt của một mô hình tiên tiến (frontier model) |
| Mô hình tinh chỉnh (Fine-tuned model) | Huấn luyện một mô hình mở trên văn bản song ngữ — nhưng tuyệt đối không dùng dữ liệu đánh giá |
| Pipeline kiểm soát bằng FST | LLM tạo bản dịch → bộ chuyển đổi trạng thái hữu hạn (FST) xác thực hình thái học → thử lại nếu lỗi |
| Chuỗi mô hình (Chained models) | Mô hình A nháp → Mô hình B hiệu đính → Mô hình C chấm điểm |
| Từ điển + LLM | Bắt buộc sử dụng các thuật ngữ đã biết từ từ điển, để LLM xử lý phần còn lại |
| Tiến hóa (Evolutionary) | Tạo ra các bản dịch ứng viên, chấm điểm chúng, đột biến những bản dịch tốt nhất, lặp lại |
| Dịch một phần (Partial translation) | Dịch thủ công một mẫu nhỏ, chứng minh LLM của bạn khớp với mẫu đó, rồi tự động dịch phần còn lại |
Tinh chỉnh các mô hình. Triển khai các thuật toán tiến hóa. Kiểm tra câu trả lời của học sinh trong các kỳ thi ngôn ngữ. Xây dựng bảng tra cứu. Chuỗi ba mô hình lại với nhau. Miễn là phương thức của bạn tạo ra JSON, bộ công cụ đánh giá sẽ chấm điểm và framework sẽ chạy nó.
:::danger Quy tắc duy nhất Không được huấn luyện trên dữ liệu đánh giá. Các phương thức tiếp xúc với tập dữ liệu benchmark sẽ bị truất quyền thi đấu. Bạn có thể tinh chỉnh trên bất kỳ dữ liệu nào bạn muốn. Nhưng tuyệt đối không phải là tập kiểm thử (test set). :::
Đây là một lời mời mở. Nếu bạn đang làm việc với một ngôn ngữ ít tài nguyên — với tư cách là nhà nghiên cứu, thành viên cộng đồng, học sinh/sinh viên hoặc chỉ là một người quan tâm — hãy xây dựng một phương thức, chạy bộ công cụ đánh giá và giành lấy điểm số cao nhất. Vấn đề này vẫn chưa có lời giải. Cơ sở hạ tầng đã sẵn sàng ở đây.
Các bước tiếp theo
Bắt đầu:
- Cài đặt — Thiết lập trong 2 phút
- Bắt đầu nhanh — Chạy lần đồng bộ đầu tiên của bạn
- Ngôn ngữ được hỗ trợ — Những gì có sẵn ngay khi cài đặt
Tùy chỉnh thiết lập của bạn:
- Phương thức dịch — Chọn phương thức phù hợp cho từng cặp ngôn ngữ
- Bộ nhớ dịch — Cách bộ nhớ đệm giúp bạn tiết kiệm chi phí
- Cấu hình — Tài liệu tham khảo cấu hình đầy đủ
- Trang web đa ngôn ngữ Hugo — Dịch nội dung Markdown
Đi sâu hơn:
- Làm việc với biên dịch viên chuyên nghiệp — Quy trình xuất/nhập XLIFF
- Chủ quyền dữ liệu — Các nguyên tắc OCAP, CARE và Chủ quyền dữ liệu của người Māori
- Hỗ trợ một ngôn ngữ ít tài nguyên — Thử thách đã khởi nguồn cho tất cả
- Cookbook: Pipeline kiểm soát bằng FST — Xây dựng một pipeline phân tách (decomposition pipeline)
- Đánh giá dịch máy (MT Evaluation) — Cách thức hoạt động của bộ công cụ đánh giá và bảng xếp hạng
- Bảng xếp hạng phương thức — Điểm số trực tiếp và các lượt gửi bài