Model dịch đã được đóng gói sẵn trong extension (~58 MB). Bạn không phải tải thêm gì sau khi cài. Ngay từ lần dùng đầu tiên, extension đã chạy được hoàn toàn offline — kể cả khi rút mạng, đi máy bay, hay dùng máy không có internet.
Toàn bộ quá trình dịch diễn ra ngay trên máy bạn. Không một ký tự nào được gửi lên server. Không tài khoản, không API key, không theo dõi.
- Dịch cả câu, cả đoạn — Anh → Việt và Việt → Anh
- Dịch trong popup — gõ hoặc dán văn bản, kết quả hiện ngay khi bạn ngừng gõ
- Dịch ngay trên trang web — bôi đen chữ bất kỳ, bấm nút hiện lên
- Tự nhận diện chiều dịch khi bôi đen văn bản
- Hoạt động 100% offline — không cần internet ở bất kỳ bước nào
- Riêng tư tuyệt đối — không có request mạng nào rời khỏi máy bạn
| Trình duyệt | Chrome 109+ hoặc Microsoft Edge 109+ |
| Hệ điều hành | Windows, macOS, hoặc Linux |
| Dung lượng trống | Khoảng 150 MB |
| Kết nối mạng | Không cần |
Cần Chrome/Edge từ phiên bản 109 trở lên vì extension dùng offscreen document. Kiểm tra phiên bản tại
chrome://settings/helphoặcedge://settings/help.
Extension chưa có trên Chrome Web Store, nên bạn cài thủ công. Chỉ mất khoảng 2 phút.
- Mở trang Releases
- Ở mục Assets, bấm tải file
offline-translator-chrome.zip - Giải nén file vừa tải (bấm chuột phải → Extract All trên Windows, hoặc bấm đúp trên macOS)
- Bạn sẽ được một thư mục — nhớ vị trí thư mục này, đừng xóa nó sau khi cài, vì trình duyệt cần đọc từ đây mỗi lần chạy
- Mở Chrome, gõ vào thanh địa chỉ:
chrome://extensions - Bật công tắc Developer mode ở góc trên bên phải
- Bấm nút Load unpacked vừa hiện ra ở góc trên bên trái
- Chọn thư mục bạn vừa giải nén ở Bước 1, rồi bấm Select Folder
- Xong. Bấm biểu tượng mảnh ghép 🧩 trên thanh công cụ, rồi ghim Offline Translator lại cho dễ dùng
- Mở Edge, gõ vào thanh địa chỉ:
edge://extensions - Bật công tắc Developer mode ở góc dưới bên trái
- Bấm nút Load unpacked ở phía trên
- Chọn thư mục bạn vừa giải nén ở Bước 1, rồi bấm Select Folder
- Xong. Bấm biểu tượng mảnh ghép trên thanh công cụ để ghim extension
Cách 1 — Dịch trong popup: Bấm vào biểu tượng extension, gõ câu tiếng Anh vào ô trên, bản dịch hiện ở ô dưới. Bấm nút ⇄ để đổi chiều Anh ↔ Việt.
Cách 2 — Dịch trên trang web: Bôi đen một đoạn chữ bất kỳ trên trang, một nút nhỏ sẽ hiện lên, bấm vào đó để xem bản dịch.
Lần dịch đầu tiên sẽ mất vài giây để khởi động máy dịch. Những lần sau sẽ nhanh hơn nhiều.
Có cần mạng không?
Không. Model đã nằm sẵn trong extension. Bạn có thể rút mạng hoàn toàn và extension vẫn dịch bình thường.
Xóa cache trình duyệt thì model có mất không?
Không. Model được lưu như một phần của extension, giống file code, chứ không nằm trong cache. Xóa lịch sử, cookie, hay dữ liệu duyệt web đều không ảnh hưởng.
Model chỉ mất khi bạn gỡ cài đặt extension.
Dữ liệu của tôi có bị gửi đi đâu không?
Không. Extension không có bất kỳ request mạng nào. Bạn có thể tự kiểm chứng bằng cách mở tab Network trong DevTools khi đang dịch.
Xóa thư mục đã giải nén có sao không?
Có. Khi cài bằng Load unpacked, trình duyệt đọc trực tiếp từ thư mục đó mỗi lần khởi động. Nếu xóa hoặc di chuyển, extension sẽ ngừng hoạt động. Hãy để thư mục ở nơi cố định.
Extension có tự cập nhật không?
Không. Vì cài thủ công nên bạn cần tải bản mới từ trang Releases và lặp lại các bước cài đặt khi muốn cập nhật.
| Thành phần | Lựa chọn |
|---|---|
| Framework | WXT + React 18 + TypeScript |
| Giao diện | Tailwind CSS |
| Máy dịch | Bergamot — Marian NMT biên dịch sang WebAssembly |
| Model | Firefox Translations models của Mozilla |
Phần suy luận chạy trong offscreen document, không phải service worker.
Lý do: service worker của Manifest V3 cấm import() động, mà WebAssembly runtime
lại cần đúng thứ đó.
popup / content script
│ TRANSLATE_REQUEST
▼
background.ts relay, quản lý vòng đời offscreen document
│ OFFSCREEN_TRANSLATE
▼
offscreen/main.ts Bergamot + model
│
▼
Web Worker + WASM
# 1. Clone
git clone https://github.com/vbth7777/offline-translator.git
cd offline-translator
# 2. Cài dependency
npm install
# 3. Tải model từ Mozilla (chỉ cần chạy một lần)
npm run fetch-models
# 4. Chạy development
npm run devnpm run dev sẽ mở sẵn một cửa sổ trình duyệt đã nạp extension và tự reload
khi bạn sửa code.
Vì sao model không nằm trong repo? Model nặng ~58 MB nên không commit vào git. Script
fetch-modelstải từ registry chính thức của Mozilla, tự giải nén và kiểm tra SHA-256 để đảm bảo file toàn vẹn.
npm run typecheck # kiểm tra kiểu TypeScript
npm run build # xuất ra .output/chrome-mv3
npm run zip # đóng gói để phân phốisrc/
├── entrypoints/
│ ├── background.ts relay message, quản lý offscreen
│ ├── content.ts dịch khi bôi đen trên trang
│ ├── offscreen/ chạy Bergamot + model
│ └── popup/ giao diện React
├── public/
│ ├── models/ model dịch (tạo bởi fetch-models)
│ ├── bergamot/worker/ worker + WASM
│ └── icon/ icon extension
└── vendor/bergamot/ bản vendor của Bergamot runtime
scripts/
└── fetch-models.js tải + giải nén + verify model
| Chiều | Kiến trúc | Kích thước | BLEU | COMET22 |
|---|---|---|---|---|
| Anh → Việt | base-memory | 31.6 MB | 43.09 | 0.8712 |
| Việt → Anh | tiny | 17.1 MB | 32.33 | 0.8487 |
Số liệu đo trên tập flores200-plus, lấy trực tiếp từ
registry chính thức của Mozilla.
- Việc nhận diện tiếng Việt khi bôi đen dựa vào dấu thanh, nên câu tiếng Việt không dấu có thể bị nhận nhầm là tiếng Anh
- Đoạn văn quá dài sẽ bị cắt bớt; nên dịch theo từng đoạn ngắn
- Chỉ hỗ trợ cặp Anh ↔ Việt
Mã nguồn phát hành theo giấy phép MIT.
Thành phần bên thứ ba:
- Bergamot Translator — MPL-2.0
- Model dịch của Mozilla — CC-BY-SA 4.0