Ajukan pertanyaan Anda dan dapatkan ringkasan dokumen dengan merujuk halaman ini dan penyedia AI pilihan Anda
Riwayat Versi
- "Init history"v9.0.05/6/2026
Konten halaman ini diterjemahkan menggunakan AI.
Lihat versi terakhir dari konten aslinya dalam bahasa InggrisIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Bermigrasi dari next-i18next ke Intlayer
Mengapa migrasi dari next-i18next ke Intlayer?
Alih-alih memuat file JSON besar ke halaman Anda, muat hanya konten yang diperlukan. Intlayer membantu mengurangi ukuran bundle dan halaman Anda hingga 50%.
Membatasi konten aplikasi Anda memfasilitasi pemeliharaan untuk aplikasi skala besar. Anda dapat menduplikasi atau menghapus folder fitur tunggal tanpa beban mental meninjau seluruh codebase konten Anda. Selain itu, Intlayer fully typed untuk memastikan akurasi konten Anda.
Intlayer juga merupakan solusi dengan pengembangan paling aktif di ekosistem i18n — masalah diperbaiki dengan cepat, adapter framework baru dirilis secara teratur, dan core API terus disempurnakan berdasarkan feedback produksi dunia nyata.
Co-locating konten mengurangi konteks yang diperlukan oleh Large Language Models (LLMs). Intlayer juga dilengkapi dengan rangkaian alat, seperti CLI untuk menguji terjemahan yang hilang, LSP, MCP, dan agent skills, untuk membuat developer experience (DX) lebih halus untuk AI agents.
Gunakan otomasi untuk menerjemahkan di pipeline CI/CD Anda menggunakan LLM pilihan Anda dengan biaya penyedia AI Anda. Intlayer juga menawarkan compiler untuk mengotomatisasi ekstraksi konten, serta platform web untuk membantu menerjemahkan di latar belakang.
Menghubungkan file JSON besar ke komponen dapat menyebabkan masalah performa dan reaktivitas. Intlayer mengoptimalkan pemuatan konten Anda saat build time.
Lebih dari sekadar solusi i18n, Intlayer menyediakan self-hosted visual editor dan full CMS untuk membantu Anda mengelola konten multibahasa Anda secara real-time, membuat kolaborasi dengan penerjemah, copywriter, dan anggota tim lainnya mulus. Konten dapat disimpan secara lokal dan/atau jarak jauh.
Strategi Migrasi
Karena next-i18next membungkus react-i18next dan i18next di bawah tenda, ada dua strategi pelengkap untuk migrasi ke Intlayer:
Compat adapter (direkomendasikan untuk aplikasi yang sudah ada) — Instal
@intlayer/next-i18next,@intlayer/react-i18next, dan@intlayer/i18next. Paket-paket ini mengekspos API yang persis sama seperti rekan-rekan mereka tetapi mendelegasikan semua pekerjaan terjemahan ke Intlayer di bawah tenda. Anda menjaga panggilanuseTranslation,appWithTranslation,serverSideTranslationsyang ada, dan routing Next.js Pages tetap tidak berubah — satu-satunya perubahan adalah inisialisasi.Migrasi penuh — Secara bertahap ganti API
next-i18nextdengan hook Intlayer native (useIntlayer) dan co-locate content dalam file.content.tsbersama komponen Anda.
Panduan ini mencakup Strategi 1 terlebih dahulu (drop-in compat adapter), kemudian memandu melalui migrasi penuh opsional.
Daftar Isi
Migrasi Cepat
Langkah-langkah berikut adalah persyaratan minimum untuk menjalankan aplikasi Next.js Pages Router Anda yang sudah ada di Intlayer tanpa perubahan kode di halaman dan komponen Anda.
Install Dependencies
Pasang paket inti Intlayer dan adapter kompatibilitas:
bashSalin kodeSalin kode ke clipboard
npx intlayer-cli init --interactiveflag
--interactivebersifat opsional. Gunakanintlayer-cli initjika Anda adalah agen AI.Perintah ini akan mendeteksi lingkungan Anda dan memasang paket yang diperlukan. Contohnya:
bashSalin kodeSalin kode ke clipboard
npm install intlayer next-intlayer react-intlayer @intlayer/next-i18next @intlayer/react-i18next @intlayer/i18next @intlayer/sync-json-pluginAnda dapat dengan aman menyimpan
next-i18next,react-i18next, dani18nextyang terinstal selama migrasi, meskipun Anda akan menghapusnya setelah dialias.Configure Intlayer
Perintah
intlayer initmembuat fileintlayer.config.tspemula. Perbarui untuk mencocokkan lokal yang ada dan arahkan pluginsyncJSONke file pesannext-i18nextAnda (biasanya di dalampublic/locales):intlayer.config.tsSalin kodeSalin kode ke clipboard
import { Locales, type IntlayerConfig } from "intlayer"; import { syncJSON } from "@intlayer/sync-json-plugin"; const config: IntlayerConfig = { internationalization: { locales: [ Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, // Tambahkan semua lokal yang sudah ada di sini ], defaultLocale: Locales.ENGLISH, }, plugins: [ syncJSON({ // cocok dengan sintaks placeholder i18next: {{name}} format: "i18next", source: ({ key, locale }) => `./public/locales/${locale}/${key}.json`, location: "public/locales", }), ], }; export default config;sourcememetakan lokal dan namespace (key) ke jalur file JSON-nya.locationmemberi tahu pengawas Intlayer folder mana yang akan dipantau untuk perubahan. Opsiformat: 'i18next'memastikan placeholder diurai dengan benar untuknext-i18next.Update Next.js Configuration
Bungkus
next.config.ts(atau.js) yang sudah ada dengancreateNextI18nPlugindari@intlayer/next-i18next/plugin. Wrapper ini membuatwithIntlayerdan menyuntikkan aliasnext-i18next/react-i18next/i18next→@intlayer/*, sehingga panggilanimport { useTranslation } from 'next-i18next'yang sudah ada dialihkan secara transparan saat build. Tidak ada perubahan file sumber yang diperlukan.next.config.tsSalin kodeSalin kode ke clipboard
import type { NextConfig } from "next"; import { createNextI18nPlugin } from "@intlayer/next-i18next/plugin"; // Anda dapat menghapus konfigurasi i18n yang diimpor dari next-i18next.config.js // import { i18n } from './next-i18next.config'; const withIntlayer = createNextI18nPlugin(); const nextConfig: NextConfig = { // Intlayer mengelola rute i18n Next.js di balik layar, // jadi Anda tidak perlu lagi meneruskan objek i18n di sini. }; export default withIntlayer(nextConfig);Anda tidak lagi memerlukan
next-i18next.config.js. Intlayer mengkompilasi semua kamus pada waktu build, menangani deteksi lokal, rute, dan pemuatan kamus dengan mulus.Lebih suka
withIntlayerbiasa darinext-intlayer/server? Ini mengkompilasi kamus Anda tetapi tidak menambahkan aliasnext-i18next/react-i18next/i18next— Anda kemudian dapat mengganti nama impor ke@intlayer/*secara manual (lihat Langkah 4).
Itulah migrasi cepat. Aplikasi Next.js Anda sekarang berjalan di Intlayer sambil menjaga setiap panggilan useTranslation, serverSideTranslations, dan appWithTranslation tetap utuh.
Kunci terjemahan yang diketik — otomatis. Setelah Intlayer mengkompilasi kamus Anda,
useTranslationdangetFixedTdiketik terhadap konten aktual Anda. Kunci secara otomatis dilengkapi di IDE Anda dan jalur yang tidak valid menyebabkan kesalahan TypeScript pada waktu build — tidak ada pengaturan tambahan yang diperlukan.tsxSalin kodeSalin kode ke clipboard
// Pages Router — 'about' adalah kunci kamus yang terdaftarconst { t } = useTranslation("about");t("counter.label"); // ✓ autocompletedt("does.not.exist"); // ✗ TypeScript error// getStaticProps / getServerSideProps (instans i18next)const tAbout = i18n.getFixedT(null, "about");tAbout("counter.label"); // ✓ typed
Migrasi Lengkap
Langkah-langkah di bawah ini bersifat opsional dan dapat dilakukan secara bertahap. Langkah-langkah ini membuka fitur Intlayer lengkap: visual editor, CMS, typed content files, AI-powered translation, dan banyak lagi.
Explicit import renaming (optional)
OpsionalPlugin Intlayer sudah menangani aliasing di tingkat bundler. Jika Anda lebih suka membuat dependensi eksplisit di file sumber Anda, Anda dapat mengganti nama import secara manual:
Tampilkan semua isi tabelBuka tabel dalam modal untuk melihat semua isi data dengan jelas
Sebelum Sesudah import { serverSideTranslations } from 'next-i18next/serverSideTranslations'import { serverSideTranslations } from '@intlayer/next-i18next'import { appWithTranslation } from 'next-i18next'import { appWithTranslation } from '@intlayer/next-i18next'import { useTranslation } from 'next-i18next'import { useTranslation } from '@intlayer/next-i18next'import { useTranslation } from 'react-i18next'import { useTranslation } from '@intlayer/react-i18next'Ini adalah drop-in replacements — tidak ada perubahan yang diperlukan pada call signatures, arguments, atau return types.
Enable AI-Powered Translation Automation
OpsionalSetelah Intlayer terhubung, gunakan CLI-nya untuk mengisi terjemahan yang hilang secara otomatis:
bashSalin kodeSalin kode ke clipboard
# Test untuk terjemahan yang hilang (tambahkan ke CI)npx intlayer test# Isi terjemahan yang hilang dengan AInpx intlayer fillTambahkan konfigurasi AI ke
intlayer.config.ts:intlayer.config.tsSalin kodeSalin kode ke clipboard
import { Locales, type IntlayerConfig } from "intlayer"; import { syncJSON } from "@intlayer/sync-json-plugin"; const config: IntlayerConfig = { internationalization: { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, }, plugins: [ syncJSON({ format: "i18next", source: ({ key, locale }) => `./public/locales/${locale}/${key}.json`, location: "public/locales", }), ], ai: { apiKey: process.env.OPENAI_API_KEY, // provider: "openai", // default // model: "gpt-4o-mini", // default }, }; export default config;Lihat dokumentasi Intlayer CLI untuk semua opsi yang tersedia.
Apa yang dapat Anda hapus setelah migrasi
Setelah adapter kompatibilitas sudah diterapkan, boilerplate next-i18next berikut dapat dihapus:
Buka tabel dalam modal untuk melihat semua isi data dengan jelas
| File / pola | Mengapa sudah tidak diperlukan |
|---|---|
next-i18next.config.js | Intlayer menangani routing, loading kamus, dan locale default secara internal berdasarkan intlayer.config.ts. |
next-i18next dari package.json | Sepenuhnya digantikan oleh @intlayer/next-i18next dan aliasing. |
JSON language bundles (public/locales/*.json) | JSON bundles hanya diperlukan jika Anda masih menggunakan plugin syncJSON. Setelah Anda migrasi ke file .content.ts Anda dapat menghapus folder JSON. |
Ketika Anda siap untuk melangkah lebih jauh, Intlayer secara otomatis menemukan semua file .content.ts dan .content.json di mana pun dalam codebase Anda (secara default, di mana pun di dalam ./src). Anda dapat menempatkan file my-component.content.ts tepat di sebelah MyComponent.tsx Anda dan Intlayer akan mengambilnya pada waktu build tanpa konfigurasi tambahan — tidak ada imports, registrasi, atau file index terpusat yang diperlukan. Ini membuat co-locating terjemahan dengan halaman dan komponen sepenuhnya tanpa hambatan.
Konfigurasi TypeScript
Intlayer menggunakan module augmentation untuk memberikan intellisense TypeScript lengkap untuk kunci terjemahan Anda. Pastikan tsconfig.json Anda menyertakan tipe yang dibuat secara otomatis:
Salin kode ke clipboard
{ // ... Konfigurasi TypeScript yang sudah ada "include": [ // ... Konfigurasi TypeScript yang sudah ada ".intlayer/**/*.ts", // Sertakan tipe yang dibuat secara otomatis ],}Konfigurasi Git
Tambahkan direktori yang dihasilkan Intlayer ke .gitignore Anda:
Salin kode ke clipboard
# Ignore the files generated by Intlayer.intlayerSelanjutnya
- Visual Editor — Kelola terjemahan secara visual di browser Anda: Intlayer Visual Editor
- CMS — Externalisasi dan kelola konten dari jarak jauh: Intlayer CMS
- VS Code Extension — Dapatkan autokompletion dan deteksi kesalahan terjemahan real-time: Intlayer VS Code Extension
- CLI Reference — Daftar lengkap perintah CLI: Intlayer CLI
- Intlayer with Next.js (Pages Router) — Panduan setup lengkap untuk Next.js: intlayerwithnextjspagerouter.md