Bản địa hóa liên tục: mọi ngôn ngữ, trong mọi lần hợp nhất.
Bản địa hóa liên tục dịch các chuỗi mới và đã thay đổi ngay khi mã nguồn thay đổi, thay vì thực hiện ở một giai đoạn riêng biệt trước mỗi bản phát hành. Mọi ngôn ngữ luôn sẵn sàng để phát hành cùng với mã nguồn cần chúng.
Bản địa hóa liên tục là gì?
Bản địa hóa liên tục là cách làm việc trong đó các chuỗi mới và đã thay đổi được gửi đi dịch tự động ngay khi chúng thay đổi, và văn bản đã dịch sẽ quay trở lại sản phẩm mà không cần bất kỳ ai lên lịch trình.
Không có giai đoạn dịch thuật riêng biệt, vì quá trình dịch không bao giờ dừng lại. Khi nhà phát triển hợp nhất một chuỗi, bản dịch sẽ theo cùng luồng với mã nguồn, và việc phát hành không còn phụ thuộc vào tệp tin của bất kỳ ai.
Đây là nửa còn lại của quy trình phân phối liên tục (continuous delivery). Một nhóm hợp nhất mã mỗi ngày nhưng bàn giao công việc dịch thuật vài tuần một lần sẽ khiến các ngôn ngữ bị tụt hậu so với mã nguồn trong hầu hết thời gian của tháng. Bản địa hóa liên tục thu hẹp khoảng cách này xuống bằng thời gian của một lần chạy.
Điều này không có nghĩa là đầu ra từ máy sẽ được đưa lên trực tiếp mà không được kiểm duyệt. Bạn quyết định chuỗi nào cần con người xem xét, và bản phát hành chỉ bao gồm những nội dung đã được phê duyệt.
Sự khác biệt nằm ở thời điểm diễn ra quá trình dịch, không phải ai thực hiện.
| Những thay đổi | Bàn giao theo lô | Liên tục |
|---|---|---|
| Cạnh nhau | ||
| Thời điểm dịch | Trong giai đoạn trước mỗi bản phát hành | Khi từng chuỗi thay đổi |
| Yếu tố kích hoạt | Ai đó xuất tệp | Một lần đẩy, hợp nhất hoặc thay đổi nội dung |
| Quy mô của từng phần | Nhiều tuần chuỗi cùng lúc | Các chuỗi trong một lần thay đổi |
| Bản phát hành chờ điều gì | Chờ tệp được trả về | Kiểm duyệt, trên các chuỗi bạn đã đánh dấu |
| Thay đổi bản sao muộn | Thêm một vòng phản hồi nữa | Chạy lại chỉ khóa đó |
| Nguồn thông tin cho người dịch | Bảng tính chứa các chuỗi | Hàng dữ liệu, kèm thuật ngữ bảng chú giải, kết quả bộ nhớ và ảnh chụp màn hình |
| Ngôn ngữ khi ra mắt | Cuốn chiếu, từng đợt một | Cùng lúc với tính năng |
- Thời điểm dịch
- Trong giai đoạn trước mỗi bản phát hành
- Yếu tố kích hoạt
- Ai đó xuất tệp
- Quy mô của từng phần
- Nhiều tuần chuỗi cùng lúc
- Bản phát hành chờ điều gì
- Chờ tệp được trả về
- Thay đổi bản sao muộn
- Thêm một vòng phản hồi nữa
- Nguồn thông tin cho người dịch
- Bảng tính chứa các chuỗi
- Ngôn ngữ khi ra mắt
- Cuốn chiếu, từng đợt một
- Thời điểm dịch
- Khi từng chuỗi thay đổi
- Yếu tố kích hoạt
- Một lần đẩy, hợp nhất hoặc thay đổi nội dung
- Quy mô của từng phần
- Các chuỗi trong một lần thay đổi
- Bản phát hành chờ điều gì
- Kiểm duyệt, trên các chuỗi bạn đã đánh dấu
- Thay đổi bản sao muộn
- Chạy lại chỉ khóa đó
- Nguồn thông tin cho người dịch
- Hàng dữ liệu, kèm thuật ngữ bảng chú giải, kết quả bộ nhớ và ảnh chụp màn hình
- Ngôn ngữ khi ra mắt
- Cùng lúc với tính năng
Cách thức hoạt động của bản địa hóa liên tục
Theo dõi một chuỗi mới xuyên suốt vòng lặp. Mỗi bước hiển thị những gì bạn sẽ thực sự thấy.
Thay đổi đến Transglot qua CLI, GitHub Action hoặc ứng dụng trên máy chủ Git của bạn. Tệp nguồn được phân tích cú pháp ở một trong 20 định dạng gốc và mỗi chuỗi được so sánh với những gì dự án đang lưu giữ. Chỉ các chuỗi mới và đã thay đổi mới được chuyển tiếp.
Bản dịch khớp chính xác từ bộ nhớ dịch sẽ điền vào hàng và không tính phí từ. Phần còn lại sẽ được xử lý bởi Glossa cùng với bảng thuật ngữ, hướng dẫn phong cách và ngữ cảnh của khóa đó.
Trình giữ chỗ, dạng số nhiều, thuật ngữ trong bảng thuật ngữ và độ dài đều được kiểm tra trên mỗi hàng của mỗi lần chạy. Trình giữ chỗ bị lỗi, dạng số nhiều bị thiếu hoặc thuật ngữ bị cấm sẽ được sửa một lần và kiểm tra lại; nếu vẫn thất bại ở lần thứ hai, bản dịch sẽ bị từ chối và không được phát hành. Hàng chỉ vượt quá độ dài cho phép vẫn được ghi lại, và từ gói Team, tính năng tự động phê duyệt hoặc quy trình QA sẽ đánh dấu để xem xét.
Một lần chạy không bao giờ ghi đè lên hàng mà con người đã chỉnh sửa hoặc xem xét. Nếu nguồn thay đổi sau đó, văn bản vẫn được giữ nguyên, lần chạy sẽ đếm hàng đó và thông báo cho bạn; từ gói Team, bản cập nhật đề xuất sẽ chờ bên cạnh để ai đó chấp nhận.
Ứng dụng Git commit các tệp ngôn ngữ vào một nhánh đồng bộ hóa và duy trì một pull request luôn cập nhật. Trên GitHub, hãy bình luận /translate trên một pull request và các tệp sẽ được đưa vào nhánh riêng của pull request đó. Hoặc xuất bản lên CDN, và sản phẩm đang chạy sẽ đọc thay đổi mà không cần phát hành phiên bản mới.
Sáu cách bản địa hóa liên tục có thể sai sót và những gì ngăn chặn từng vấn đề
Một lần chạy ghi đè lên công việc của con người
Mọi người viết đều kiểm tra trạng thái của hàng trước: một lần chạy, khớp bộ nhớ và đẩy. Hàng do con người chỉnh sửa hoặc xem xét sẽ được giữ nguyên, và lần chạy sẽ báo cáo nó.
→fr, đã xem xét, nguồn vừa thay đổi
✓được giữ lại, được tính, được báo cáo
Chuỗi bị lỗi vẫn đến được môi trường production
Mọi token đã đưa vào đều phải được trả về. Trong dự án ICU, thông báo gây lỗi khi hiển thị sẽ bị loại khỏi pull request, connector và gói CDN, đồng thời tên của quá trình chạy sẽ được ghi nhận.
→{count, plural, one {# article}
✓bị loại khỏi tệp, được đặt tên trong quá trình chạy
Kho lưu trữ tràn ngập các pull request tự động
Một nhánh đồng bộ hóa và một pull request cho mỗi kho lưu trữ. Hai lần push nhanh hội tụ vào đó thay vì mở thêm một cái mới.
→#812 #815 #819 #823 cập nhật l10n
✓#812 transglot/sync, cập nhật tại chỗ
Chỉnh sửa nguồn để lại bản dịch cũ
Mỗi hàng đích ghi lại nguồn mà nó được viết dựa trên, nên một chuỗi đã thay đổi sẽ được biết là lỗi thời ở mọi ngôn ngữ cùng lúc, và chỉ khóa đó được chạy lại.
→Lưu trở thành Lưu nháp. fr, de, ja vẫn nói Lưu
✓fr, de, ja chạy lại trên một khóa đó
Mỗi lần chạy đều tính phí toàn bộ dự án một lần nữa
Quy mô của một lần chạy được xác định từ những gì đã thay đổi. Chuỗi không thay đổi không được gửi, khớp bộ nhớ chính xác không tốn từ, và hàng do người sở hữu bị từ chối trước khi bất kỳ chi phí nào phát sinh.
→tệp chứa 48.000 từ
✓lần chạy này: 60 từ
Pull request chưa hoàn thành làm sạch tệp ngôn ngữ
Nếu máy chủ báo cáo không có mục nhập cho một ngôn ngữ, pull request sẽ từ chối ghi đè lên tệp đang có nội dung và thoát với mã 1 để dừng quy trình tại đó.
→pull: 0 mục nhập cho ja, tệp chứa 1.204
✓từ chối ghi đè locales/ja.json bằng gói rỗng
- run 4182 fr: thiếu placeholder trong bản nháp, đã sửa khi thử lại
- run 4182 de: 3 hàng được giữ lại, có người sở hữu chúng
- run 4182 ja: 41 hàng từ bộ nhớ, 0 từ
- run 4183 ar: thiếu dạng số nhiều sau khi thử lại, hàng bị từ chối
- pull đã ghi locales/pt-BR.json
- sync transglot/sync đã cập nhật, pull request #812
Cả ba đều kết nối với kho lưu trữ của bạn. Sự khác biệt nằm ở những gì xảy ra khi bạn hợp nhất.
Đọc từ các trang riêng của từng công ty vào ngày 5 tháng 11 năm 2026. Hàng giá cả đến từ các trang so sánh của chúng tôi, được liên kết bên dưới, hiển thị gói và phép tính. Giá và gói thay đổi, vì vậy hãy kiểm tra chúng trước khi quyết định.
| Diễn biến | Transglot | Lokalise | Crowdin |
|---|---|---|---|
| Chuỗi mới được hợp nhất | Được dịch theo mặc định Lệnh đẩy bắt đầu quá trình chạy. Cài đặt dự án có thể tắt tính năng này. | Được dịch sau khi bạn thiết lập Tự động hóa bị tắt theo mặc định khi tạo khóa và nhập tệp. Quy trình làm việc với bước AI sẽ chạy theo lịch trình của nó. | Được dịch sau khi bạn bật Trong Cài đặt, Tự động dịch, tính năng này sẽ chạy mỗi khi tải lên. Đồng bộ Git chạy mỗi giờ theo mặc định. |
| Bản dịch không vượt qua kiểm tra | Sửa một lần, sau đó từ chối Đối với trình giữ chỗ, dạng số nhiều hoặc thuật ngữ bị cấm bị lỗi, trên mọi hàng của mỗi lần chạy. Lỗi vượt quá độ dài sẽ được ghi lại. Trong dự án ICU, hàng bị lỗi sẽ không xuất hiện trong lệnh kéo, các trình kết nối và CDN. | Kiểm tra mức Lỗi ngăn lưu trong trình chỉnh sửa Mỗi kiểm tra được đặt thành Tắt, Cảnh báo hoặc Lỗi. | Kiểm tra mức Lỗi ngăn lưu Mỗi kiểm tra được đặt thành Cảnh báo hoặc Lỗi. |
| Một người đã chỉnh sửa hàng này | Quá trình chạy từ chối ghi vào Điều này cũng áp dụng cho khớp bộ nhớ và lệnh đẩy. Nếu nguồn thay đổi sau đó, quá trình chạy sẽ báo cáo hàng đó. | Tự động hóa điền các giá trị trống theo mặc định Tùy chọn ghi đè và hành động xóa sẽ ghi đè lên các giá trị đã điền. | Các tùy chọn giữ nguyên hàng do con người chỉnh sửa và đã phê duyệt Cũng có tùy chọn thay thế tất cả. |
| Yêu cầu kéo trên kho lưu trữ bận rộn | Một nhánh, một yêu cầu kéo Cập nhật tại chỗ mỗi khi đẩy. | Nhánh mới cho mỗi yêu cầu kéo Được đặt tên kèm dấu thời gian. | Nhánh dịch vụ, đồng bộ mỗi giờ Mỗi giờ là mặc định và khoảng thời gian có thể thay đổi. |
| Những gì gói dịch vụ tính phí | Số từ đã dịch, tính một lần cho mỗi ngôn ngữ Các bản khớp bộ nhớ chính xác không mất phí. Lưu trữ chuỗi không mất phí. | Số từ đã xử lý Cả ngôn ngữ nguồn và ngôn ngữ đích đều được tính. | Số từ lưu trữ Số từ cần dịch nhân với số ngôn ngữ đích. |
| Chi phí cho AI | Số từ trong gói Không tính phí riêng. | Hạn mức từ AI theo từng gói Từ AI Standard và AI Pro là các mục riêng trong gói. | Số dư riêng hoặc khóa API của bạn AI do Crowdin quản lý được thanh toán bằng tín dụng, ngoài gói đăng ký. |
| Cùng một khối lượng: 5,000 chuỗi trong 10 ngôn ngữ | $39 mỗi tháng Team, bao gồm dịch thuật | $1,049 mỗi tháng Advanced (billed yearly) | $138 mỗi tháng Pro with 560K hosted words (billed monthly), cộng thêm AI |
| GitHub, GitLab, Bitbucket, Azure Repos, CLI và máy chủ MCP | Tất cả Ứng dụng Git bắt đầu từ gói Team và hỗ trợ các phiên bản đám mây. | Tất cả Tích hợp có sẵn trên mọi gói. | Tất cả Cũng hỗ trợ Bitbucket Server. |
- Chuỗi mới được hợp nhất
- Được dịch theo mặc địnhLệnh đẩy bắt đầu quá trình chạy. Cài đặt dự án có thể tắt tính năng này.
- Bản dịch không vượt qua kiểm tra
- Sửa một lần, sau đó từ chốiĐối với trình giữ chỗ, dạng số nhiều hoặc thuật ngữ bị cấm bị lỗi, trên mọi hàng của mỗi lần chạy. Lỗi vượt quá độ dài sẽ được ghi lại. Trong dự án ICU, hàng bị lỗi sẽ không xuất hiện trong lệnh kéo, các trình kết nối và CDN.
- Một người đã chỉnh sửa hàng này
- Quá trình chạy từ chối ghi vàoĐiều này cũng áp dụng cho khớp bộ nhớ và lệnh đẩy. Nếu nguồn thay đổi sau đó, quá trình chạy sẽ báo cáo hàng đó.
- Yêu cầu kéo trên kho lưu trữ bận rộn
- Một nhánh, một yêu cầu kéoCập nhật tại chỗ mỗi khi đẩy.
- Những gì gói dịch vụ tính phí
- Số từ đã dịch, tính một lần cho mỗi ngôn ngữCác bản khớp bộ nhớ chính xác không mất phí. Lưu trữ chuỗi không mất phí.
- Chi phí cho AI
- Số từ trong góiKhông tính phí riêng.
- Cùng một khối lượng: 5,000 chuỗi trong 10 ngôn ngữ
- $39 mỗi thángTeam, bao gồm dịch thuật
- GitHub, GitLab, Bitbucket, Azure Repos, CLI và máy chủ MCP
- Tất cảỨng dụng Git bắt đầu từ gói Team và hỗ trợ các phiên bản đám mây.
- Chuỗi mới được hợp nhất
- Được dịch sau khi bạn thiết lậpTự động hóa bị tắt theo mặc định khi tạo khóa và nhập tệp. Quy trình làm việc với bước AI sẽ chạy theo lịch trình của nó.
- Bản dịch không vượt qua kiểm tra
- Kiểm tra mức Lỗi ngăn lưu trong trình chỉnh sửaMỗi kiểm tra được đặt thành Tắt, Cảnh báo hoặc Lỗi.
- Một người đã chỉnh sửa hàng này
- Tự động hóa điền các giá trị trống theo mặc địnhTùy chọn ghi đè và hành động xóa sẽ ghi đè lên các giá trị đã điền.
- Yêu cầu kéo trên kho lưu trữ bận rộn
- Nhánh mới cho mỗi yêu cầu kéoĐược đặt tên kèm dấu thời gian.
- Những gì gói dịch vụ tính phí
- Số từ đã xử lýCả ngôn ngữ nguồn và ngôn ngữ đích đều được tính.
- Chi phí cho AI
- Hạn mức từ AI theo từng góiTừ AI Standard và AI Pro là các mục riêng trong gói.
- Cùng một khối lượng: 5,000 chuỗi trong 10 ngôn ngữ
- $1,049 mỗi thángAdvanced (billed yearly)
- GitHub, GitLab, Bitbucket, Azure Repos, CLI và máy chủ MCP
- Tất cảTích hợp có sẵn trên mọi gói.
- Chuỗi mới được hợp nhất
- Được dịch sau khi bạn bậtTrong Cài đặt, Tự động dịch, tính năng này sẽ chạy mỗi khi tải lên. Đồng bộ Git chạy mỗi giờ theo mặc định.
- Bản dịch không vượt qua kiểm tra
- Kiểm tra mức Lỗi ngăn lưuMỗi kiểm tra được đặt thành Cảnh báo hoặc Lỗi.
- Một người đã chỉnh sửa hàng này
- Các tùy chọn giữ nguyên hàng do con người chỉnh sửa và đã phê duyệtCũng có tùy chọn thay thế tất cả.
- Yêu cầu kéo trên kho lưu trữ bận rộn
- Nhánh dịch vụ, đồng bộ mỗi giờMỗi giờ là mặc định và khoảng thời gian có thể thay đổi.
- Những gì gói dịch vụ tính phí
- Số từ lưu trữSố từ cần dịch nhân với số ngôn ngữ đích.
- Chi phí cho AI
- Số dư riêng hoặc khóa API của bạnAI do Crowdin quản lý được thanh toán bằng tín dụng, ngoài gói đăng ký.
- Cùng một khối lượng: 5,000 chuỗi trong 10 ngôn ngữ
- $138 mỗi thángPro with 560K hosted words (billed monthly), cộng thêm AI
- GitHub, GitLab, Bitbucket, Azure Repos, CLI và máy chủ MCP
- Tất cảCũng hỗ trợ Bitbucket Server.
Bắt đầu từ bất kỳ nơi nào chuỗi của bạn được lưu trữ. Mọi lối vào đều dẫn đến cùng một quy trình.
Cách thiết lập bản địa hóa liên tục
- 01
Lấy chuỗi ký tự ra khỏi mã nguồn
Mỗi chuỗi hiển thị cho người dùng cần một khóa ổn định trong tệp ngôn ngữ. Transglot hỗ trợ 20 định dạng, vì vậy hãy giữ nguyên định dạng bạn đang có.
jsonyamlxliffarb - 02
Kết nối kho lưu trữ
Lệnh init sẽ tìm các tệp ngôn ngữ của bạn, đăng nhập qua trình duyệt, tải lên những gì bạn đã có và chạy bản dịch đầu tiên.
npx transglot@latest init - 03
Chạy trên mỗi lần hợp nhất
Thêm GitHub Action, gọi CLI từ bất kỳ CI nào khác hoặc cài đặt ứng dụng cho GitHub, GitLab, Bitbucket hoặc Azure Repos.
transglot push --wait - 04
Quyết định nội dung nào cần con người xử lý
Đặt min_state thành reviewed trong quy tắc pull và tệp đó chỉ chứa các chuỗi đã được người dùng xem xét. Nếu không đặt, bản nháp sẽ được phát hành.
min_state: reviewed
Chi phí khi chạy trên mỗi lần hợp nhất: các từ đã thay đổi.
Một từ là một từ nguồn, được tính một lần cho mỗi ngôn ngữ đích. Một lượt chạy được xác định dựa trên những gì đã thay đổi, vì vậy một lần hợp nhất ảnh hưởng đến mười hai từ trong năm ngôn ngữ sẽ được tính là sáu mươi, bất kể quy mô dự án lớn đến đâu.
Phù hợp với gói Starter: $19/mo, 300,000 từ mỗi tháng.
Điều này chiếm khoảng 9% giới hạn.
Điều này chỉ tính riêng phần dịch thuật. Kiểm tra chất lượng, bản nháp giọng điệu thương hiệu và sửa lỗi cũng được tính là từ, còn các khớp chính xác từ bộ nhớ thì không mất phí. CLI và GitHub Action bắt đầu từ gói Starter, còn các ứng dụng cho GitHub, GitLab, Bitbucket và Azure Repos bắt đầu từ gói Team.
Ba vấn đề mà bản địa hóa liên tục không giải quyết được
Chuỗi văn bản vẫn bị kẹt trong mã nguồn
Quy trình chỉ có thể dịch những gì nó đọc được. Các chuỗi và câu văn được mã hóa cứng hoặc ghép từ nhiều phần cần được sửa trước, và đây thường là lý do khiến việc triển khai bị đình trệ.
Không ai chịu trách nhiệm về nội dung
Tự động hóa di chuyển các chuỗi văn bản. Nó không quyết định cách sản phẩm của bạn gọi tên mọi thứ. Cần có người sở hữu bảng thuật ngữ, nếu không ngôn ngữ sẽ dần lệch chuẩn mà không ai nhận ra.
Nội dung cần sự phán đoán
Văn bản pháp lý, giá cả và thông điệp thương hiệu cần con người xử lý. Hãy gửi chúng để xem xét và giữ chúng ngoài các tệp phát hành cho đến khi có người phê duyệt.
Câu hỏi thường gặp về bản địa hóa liên tục
Những câu hỏi mà các đội ngũ thường đặt ra trước khi bật tính năng này.
Bản địa hóa liên tục là gì?
Bản địa hóa liên tục khác với bản địa hóa truyền thống như thế nào?
Bản địa hóa liên tục có giống với CI/CD không?
Tôi có cần quy trình CI/CD cho bản địa hóa liên tục không?
Bản địa hóa liên tục có nghĩa là không cần người xem xét không?
Một lần chạy tự động có thể ghi đè lên chỉnh sửa của biên dịch viên không?
Bản địa hóa liên tục có đáng để đầu tư cho một đội ngũ nhỏ không?
Làm sao để ngăn một lần chạy tốn nhiều hơn dự kiến?
Nó có hoạt động với GitLab, Bitbucket và Azure DevOps không?
Tôi có thể thực hiện bản địa hóa liên tục mà không cần Git không?
Bản dịch có thể cập nhật mà không cần phát hành không?
Làm cách nào để di chuyển dự án hiện có sang?
41 đầu nối, đã được tích hợp sẵn.
Kết nối kho lưu trữ. Lần hợp nhất tiếp theo sẽ hoàn tất phần còn lại.
Một lệnh duy nhất sẽ tìm các tệp ngôn ngữ của bạn, đăng nhập qua trình duyệt và thực hiện bản dịch đầu tiên.