Magic Translate vs. next-intl
next-intl là thư viện i18n được sử dụng rộng rãi nhất cho Next.js. Nó hoạt động với App Router và React Server Components, và được xây dựng xung quanh các tệp tin nhắn với một khóa cho mỗi thư. Magic Translate cũng hiển thị các trang được dịch đầy đủ trên máy chủ, nhưng bạn viết văn bản của mình trực tiếp trong các thành phần của bạn và các bản dịch được tạo cho bạn.
Sơ lược
| Magic Translate | next-intl | |
|---|---|---|
| Cách bạn viết văn bản | Lời nói của riêng bạn, được gói trong <T> | Một khóa cho mỗi tin nhắn, chẳng hạn như t('title') |
| Bản dịch | Dịch AI, được tạo tự động | Bạn hoặc dịch giả của bạn viết chúng |
| Tệp tin nhắn | Không | Một tệp JSON cho mỗi ngôn ngữ |
| Ngôn ngữ mới | Thêm địa phương vào danh sách của bạn | Dịch mọi tin nhắn sang ngôn ngữ mới |
| Kết xuất máy chủ | React Server Components, HTML được dịch đầy đủ | React Server Components, HTML được dịch đầy đủ |
| Định tuyến cục bộ | Sử dụng phân đoạn [locale] | Tích hợp định tuyến và phần mềm trung gian |
| Giá | Gói miễn phí, sau đó gói hàng tháng dựa trên mức sử dụng | Mã nguồn mở và miễn phí |
Mã khác nhau như thế nào
Với next-intl, bạn giữ một tệp tin nhắn cho mỗi ngôn ngữ và tham khảo từng thư bằng khóa của nó:
// messages/en.json{ "HomePage": { "title": "Welcome to our website" } }// app/[locale]/page.tsximport { getTranslations } from 'next-intl/server';export default async function HomePage() {const t = await getTranslations('HomePage');return <h1>{t('title')}</h1>;}
Với Magic Translate, văn bản vẫn ở trong trang:
// app/[locale]/page.tsximport { createLocalizedT } from '@magic-translate/react-ssr';import { translate } from '@/lib/translate';export default async function HomePage({params}: {params: Promise<{ locale: string }>;}) {const { locale } = await params;const { T } = createLocalizedT(translate, locale);return (<h1><T>Welcome to our website</T></h1>);}
Hướng dẫn Next.js hiển thị thiết lập đầy đủ.
Khi nào nên chọn Magic Translate
- Bạn muốn trang web Next.js của mình bằng nhiều ngôn ngữ mà không cần duy trì các tệp tin nhắn.
- Văn bản của bạn thay đổi thường xuyên và bạn muốn mọi ngôn ngữ được cập nhật.
- Bạn không có dịch giả hoặc bạn muốn phát hành bản cập nhật mà không cần chờ bản dịch.
Khi nào nên chọn next-intl
- Tất cả văn bản phải được dịch hoặc xem xét bởi một người.
- Bạn cần kiểm soát chính xác số nhiều, ngày tháng và số với tin nhắn ICU.
- Bạn muốn có một thư viện mã nguồn mở miễn phí mà không có dịch vụ bên ngoài.
Sử dụng cả hai
Bạn có thể giữ next-intl cho định tuyến và định dạng địa phương của nó, và sử dụng Magic Translate cho văn bản. Chuyển ngôn ngữ địa phương từ next-intl sang createLocalizedT và thay thế các phím bằng <T> mỗi trang một.
Sẵn sàng để thử nó? Làm theo hướng dẫn bắt đầu để dịch thành phần đầu tiên của bạn trong năm phút.