Tài liệu

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 Translatenext-intl
Cách bạn viết văn bảnLờ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ịchDịch AI, được tạo tự độngBạn hoặc dịch giả của bạn viết chúng
Tệp tin nhắnKhôngMột tệp JSON cho mỗi ngôn ngữ
Ngôn ngữ mớiThêm địa phương vào danh sách của bạnDị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ụngMã 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.tsx
import { 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.tsx
import { 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.