Magic Translate vs. next-intl
next-intl adalah perpustakaan i18n yang paling banyak digunakan untuk Next.js. Ini bekerja dengan App Router dan React Server Components, dan dibangun di sekitar file pesan dengan kunci untuk setiap pesan. Magic Translate juga merender halaman yang diterjemahkan sepenuhnya di server, tetapi Anda menulis teks Anda langsung di komponen Anda, dan terjemahan dibuat untuk Anda.
Sekilas
| Magic Translate | next-intl | |
|---|---|---|
| Bagaimana Anda menulis teks | Kata-kata Anda sendiri, dibungkus dengan <T> | Kunci untuk setiap pesan, seperti t('title') |
| Terjemahan | Terjemahan AI, dibuat secara otomatis | Anda atau penerjemah Anda menulisnya |
| File pesan | Tidak ada | Satu file JSON per bahasa |
| Bahasa baru | Tambahkan lokal ke daftar Anda | Terjemahkan setiap pesan ke dalam bahasa baru |
| Render server | Komponen Server React, HTML sepenuhnya diterjemahkan | Komponen Server React, HTML sepenuhnya diterjemahkan |
| Perutean lokal | Gunakan segmen [locale] | Perutean bawaan dan middleware |
| Harga | Paket gratis, lalu paket bulanan berdasarkan penggunaan | Open source dan gratis |
Bagaimana kode berbeda
Dengan next-intl, Anda menyimpan file pesan untuk setiap bahasa dan merujuk ke setiap pesan dengan kuncinya:
// 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>;}
Dengan Magic Translate, teks tetap berada di halaman:
// 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>);}
Panduan Next.js menunjukkan pengaturan lengkap.
Kapan memilih Magic Translate
- Anda ingin situs Next.js Anda dalam banyak bahasa tanpa memelihara file pesan.
- Teks Anda sering berubah, dan Anda ingin setiap bahasa tetap up to date.
- Anda tidak memiliki penerjemah, atau Anda ingin merilis pembaruan tanpa menunggu terjemahan.
Kapan memilih next-intl
- Semua teks harus diterjemahkan atau ditinjau oleh seseorang.
- Anda memerlukan kontrol yang tepat atas jamak, tanggal dan angka dengan pesan ICU.
- Anda menginginkan perpustakaan sumber terbuka gratis tanpa layanan eksternal.
Menggunakan keduanya
Anda dapat menyimpan next-intl untuk perutean dan pemformatan lokal, dan menggunakan Magic Translate untuk teks. Berikan lokal dari next-intl ke createLocalizedT, dan ganti kunci dengan <T> satu halaman pada satu waktu.
Siap untuk mencobanya? Ikuti panduan memulai untuk menerjemahkan komponen pertama Anda dalam lima menit.