Quay lại blog
Side-by-side illustration comparing a WordPress multilingual admin interface on the left with a JSON translation API workflow on the right.

PolyLingo vs Polylang: sự khác biệt là gì và khi nào nên sử dụng từng cái

By Robert M

PolyLingo và Polylang: sự khác biệt là gì và khi nào nên dùng từng cái

Nếu bạn đến đây, có thể bạn đang ở một trong hai tình huống: bạn hài lòng với Polylang trong WordPress nhưng tự hỏi liệu có công cụ tương đương cho một dự án không dùng WordPress, hoặc bạn đang di chuyển hoàn toàn ra khỏi WordPress và cố gắng tìm hiểu điều gì sẽ xảy ra với thiết lập đa ngôn ngữ của bạn.

Bài viết này trả lời trực tiếp cả hai câu hỏi. Chúng ta sẽ đề cập công cụ nào làm gì, mỗi công cụ phù hợp với trường hợp nào, và cách chọn giữa chúng.


Polylang là gì (và không phải là gì)

Polylang là một plugin của WordPress. Đây là một trong những plugin đa ngôn ngữ tốt nhất trong hệ sinh thái WordPress. Nó quản lý bộ chuyển đổi ngôn ngữ, cho phép bạn tạo các phiên bản dịch của bài viết và trang, xử lý thẻ hreflang, và tích hợp mượt mà với trình soạn thảo khối của WordPress. Nếu bạn vận hành một trang WordPress, đây là công cụ nghiêm túc, được duy trì tốt và có lý do chính đáng khi nó có hàng triệu lượt cài đặt hoạt động.

Hạn chế nằm ngay trong mô tả: nó là plugin WordPress. Nó không có API để bạn gọi từ bên ngoài WordPress. Nó không có khái niệm về file locale JSON, file nội dung Markdown, hay mẫu HTML nằm trong dự án Next.js. Toàn bộ mô hình của nó giả định nội dung nằm trong cơ sở dữ liệu WordPress và được WordPress render.

Đây không phải là lời phê bình. Chỉ là phạm vi của công cụ.


PolyLingo là gì

PolyLingo là một API dịch thuật. Bạn gửi nội dung (văn bản thuần, Markdown, JSON hoặc HTML) và nó trả về các phiên bản dịch sang mọi ngôn ngữ bạn yêu cầu, trong một lần gọi duy nhất. Nó không quan tâm CMS, framework hay thiết lập triển khai của bạn. Nó hoạt động ở bất cứ đâu bạn có thể gửi yêu cầu HTTP.

Mục tiêu thiết kế cốt lõi là bảo toàn định dạng. Hầu hết API dịch thuật được xây dựng quanh câu: bạn gửi một chuỗi, nhận lại một chuỗi. Mô hình đó nhanh chóng thất bại khi nội dung của bạn có cấu trúc. Dán một file locale JSON vào dịch vụ dịch thông thường, bạn sẽ nhận được tên khóa bị dịch sai, dấu phân cách bị hỏng, hoặc đoạn văn nơi từng là một đối tượng. PolyLingo coi cấu trúc là bất khả xâm phạm. Chỉ giá trị chuỗi thay đổi; mọi thứ khác được trả về y nguyên như đã gửi.

Ví dụ cụ thể. Bạn gửi:

{"btn": {"save": "Save", "cancel": "Cancel"}}

Một trình dịch theo câu có thể trả về:

{"button": {"save": "Guardar", "cancel": "Cancelar"}}

Khóa btn thành button. Điều đó sẽ làm hỏng ứng dụng của bạn. PolyLingo trả về:

{"btn": {"save": "Guardar", "cancel": "Cancelar"}}

Khóa không bị động chạm. Chỉ có giá trị được dịch.

Nguyên tắc tương tự áp dụng cho Markdown (tiêu đề vẫn là tiêu đề, khối mã giữ nguyên, URL liên kết không đổi) và HTML (thẻ và thuộc tính được giữ nguyên, chỉ các nút văn bản và thuộc tính thích hợp được dịch).


Sự khác biệt thực sự: phạm vi

Cách đơn giản nhất để nói:

Polylang quản lý nội dung đa ngôn ngữ bên trong WordPress. Nó là một lớp CMS. Nó xử lý bài viết nào là phiên bản tiếng Tây Ban Nha của bài viết tiếng Anh nào, tạo bộ chuyển đổi ngôn ngữ, và giữ đồng bộ bản dịch khi bạn cập nhật nội dung.

PolyLingo dịch nội dung có cấu trúc qua API. Nó là một lớp dịch thuật. Bạn cung cấp nội dung, nó trả về bản dịch. Bạn làm gì với các bản dịch đó là tùy bạn.

Chúng giải quyết các vấn đề liền kề, không phải cùng một vấn đề. Đó là lý do so sánh không phải là "cái nào tốt hơn" mà là "tôi có vấn đề gì".


Khi nào nên dùng Polylang

  • Trang của bạn chạy trên WordPress và bạn muốn tiếp tục dùng WordPress
  • Bạn cần quy trình quản lý nội dung: biên tập viên chuyển đổi giữa các phiên bản ngôn ngữ, theo dõi trạng thái dịch, bộ chuyển đổi ngôn ngữ trong giao diện
  • Bạn không phải là nhà phát triển và muốn giải pháp dựa trên giao diện người dùng
  • Bạn dùng WooCommerce và cần quản lý dịch sản phẩm trong WordPress

Polylang rất xuất sắc trong tất cả những điều này. Nếu WordPress là stack của bạn, đây là công cụ phù hợp.


Khi nào nên dùng PolyLingo

  • Bạn xây dựng trên Next.js, Nuxt, SvelteKit, Astro hoặc bất kỳ framework nào không phải WordPress
  • Bạn dùng headless CMS (Contentful, Sanity, Prismic) và cần dịch nội dung khi xuất bản hoặc qua webhook
  • Nội dung của bạn nằm trong các file locale JSON cần dịch mà không làm hỏng cấu trúc khóa
  • Bạn đang di chuyển khỏi WordPress và muốn mang theo quy trình đa ngôn ngữ của mình
  • Bạn có nội dung Markdown (bài blog, tài liệu, mô tả sản phẩm) và cần các phiên bản dịch không làm hỏng định dạng
  • Bạn muốn dịch sang nhiều ngôn ngữ trong một lần gọi API thay vì gọi từng ngôn ngữ một

Điểm cuối /translate của PolyLingo nhận một mảng targets, nên một yêu cầu có thể trả về tất cả 36 ngôn ngữ được hỗ trợ cùng lúc. Với một file locale cần xuất bản bằng mười ngôn ngữ, đó là một lần gọi API thay vì mười lần.


Còn việc di chuyển từ WordPress thì sao?

Nếu bạn chuyển một trang WordPress sang thiết lập headless hoặc tĩnh, nội dung Polylang của bạn sẽ không tự động đi theo. Các bản dịch được lưu dưới dạng metadata bài viết WordPress và không xuất ra file Markdown hay cấu trúc JSON một cách sạch sẽ.

Con đường thực tế mà hầu hết các nhóm đi:

  1. Xuất nội dung WordPress ra Markdown hoặc JSON (các công cụ như wordpress-export-to-markdown xử lý phần cơ học)
  2. Dùng PolyLingo để dịch nội dung đã xuất sang các ngôn ngữ mục tiêu
  3. Lưu các file kết quả trong cấu trúc nội dung mới bên cạnh ngôn ngữ gốc

Điểm cuối batch của PolyLingo (POST /translate/batch) được thiết kế cho việc này. Bạn có thể gửi tối đa 100 mục nội dung trong một yêu cầu, mỗi mục có định dạng riêng, tất cả dùng chung bộ ngôn ngữ mục tiêu. Với việc di chuyển trang có hàng trăm trang, đây là công cụ phù hợp.


Tóm tắt so sánh

PolyLingoPolylang
Hoạt động không cần WordPressKhông
Bảo toàn định dạng (JSON, Markdown, HTML)Chỉ nội dung WordPress
Một yêu cầu, tất cả ngôn ngữKhông
Truy cập REST APIKhông
Giao diện quản lý nội dungGiao diện dịch (không cần code)Toàn bộ quản trị WordPress
Tự động phát hiện định dạng nội dungKhông áp dụng
Hỗ trợ ngôn ngữ RTL
Thanh toán theo mức sử dụngPlugin miễn phí / Phí cố định Polylang Pro

Phiên bản ngắn gọn

Nếu bạn đang dùng WordPress và sẽ tiếp tục dùng WordPress: hãy dùng Polylang. Nó được xây dựng cho môi trường đó và làm việc rất tốt.

Nếu bạn không dùng WordPress, đang rời WordPress hoặc xây dựng bất cứ thứ gì không phải WordPress: PolyLingo cung cấp cho bạn quy trình đa ngôn ngữ có cấu trúc qua API, hoạt động với bất cứ thứ gì bạn đang xây dựng.

Hai công cụ cũng có thể cùng tồn tại. Một số nhóm chạy Polylang trên trang marketing chính (vẫn trên WordPress) và dùng PolyLingo cho trang tài liệu, chuỗi giao diện web app hoặc mẫu email. Quy trình giống nhau; stack không nhất thiết phải vậy.


Thử ngay

Gói miễn phí của PolyLingo bao gồm 100.000 token mỗi tháng. Đủ cho vài bài blog trên mười ngôn ngữ, hoặc một file locale cỡ trung bình trên 36 ngôn ngữ. Không cần thẻ tín dụng.

curl -sS -X POST "https://api.usepolylingo.com/v1/translate" \
  -H "Authorization: Bearer $POLYLINGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "# Welcome\n\nTranslate **any format** without breaking the structure.",
    "format": "markdown",
    "targets": ["es", "fr", "de", "ja"]
  }'

Bắt đầu dịch miễn phí