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
Migrasi dari i18next ke Intlayer
Mengapa bermigrasi dari 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%.
Scoping konten aplikasi Anda memfasilitasi maintenance untuk aplikasi skala besar. Anda dapat menduplikasi atau menghapus folder fitur tunggal tanpa beban mental meninjau seluruh content codebase Anda. Selain itu, Intlayer fully typed untuk memastikan akurasi konten Anda.
Intlayer juga merupakan solusi dengan pengembangan paling aktif dalam ekosistem i18n — issue diperbaiki dengan cepat, framework adapters baru tersedia secara teratur, dan core API terus disempurnakan berdasarkan feedback produksi dunia nyata.
Penempatan bersama konten mengurangi konteks yang diperlukan oleh Large Language Models (LLMs). Intlayer juga dilengkapi dengan suite tools, seperti CLI untuk menguji terjemahan yang hilang, LSP, MCP, dan agent skills, untuk membuat developer experience (DX) lebih mulus untuk AI agents.
Gunakan automation untuk menerjemahkan dalam CI/CD pipeline Anda menggunakan LLM pilihan Anda dengan biaya dari AI provider Anda. Intlayer juga menawarkan compiler untuk mengotomatisasi ekstraksi konten, serta web platform untuk membantu menerjemahkan di background.
Menghubungkan file JSON besar ke komponen dapat menyebabkan masalah performance dan reactivity. Intlayer mengoptimalkan content loading Anda pada build time.
Lebih dari sekadar solusi i18n, Intlayer menyediakan self-hosted visual editor dan full CMS untuk membantu Anda mengelola konten multibahasa Anda dalam real-time, membuat kolaborasi dengan translator, copywriter, dan anggota tim lainnya seamless. Konten dapat disimpan secara lokal dan/atau remote.
Strategi Migrasi
Ada dua strategi komplementer untuk migrasi dari i18next ke Intlayer:
Compat adapter (direkomendasikan untuk aplikasi yang sudah ada) — Install
@intlayer/i18next. Package ini mengekspos API yang sama persis dengani18nextnamun mendelegasikan semua pekerjaan terjemahan ke Intlayer di balik layar. Anda menyimpan panggilani18next.t(),i18next.changeLanguage(), dancreateInstance()yang sudah ada — satu-satunya perubahan adalah jalur import dan inisialisasi.Migrasi penuh — Secara bertahap ganti API
i18nextdengan tools native Intlayer dan co-locate konten dalam file.content.ts.
Panduan ini mencakup Strategi 1 terlebih dahulu (drop-in compat adapter), kemudian menjelaskan migrasi penuh yang bersifat opsional.
Daftar Isi
Migrasi Cepat
Langkah-langkah berikut adalah minimum yang diperlukan untuk menjalankan aplikasi i18next yang sudah ada di Intlayer tanpa perubahan kode sama sekali.
Install Dependencies
Install paket core 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 menginstal paket yang diperlukan. Misalnya:
bashSalin kodeSalin kode ke clipboard
npm install intlayer @intlayer/i18next @intlayer/sync-json-pluginAnda dapat menjaga
i18nexttetap terpasang — adapter kompatibilitas menggunakannya sebagaidevDependency/peerDependencyuntuk tipe TypeScript.Configure Intlayer
Perintah
intlayer initmembuat fileintlayer.config.tspemula. Perbarui untuk mencocokkan locale yang sudah ada dan arahkan pluginsyncJSONke file pesan Anda: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 locale yang sudah ada di sini ], defaultLocale: Locales.ENGLISH, }, plugins: [ syncJSON({ // cocok dengan sintaks placeholder i18next: {{name}} format: "i18next", source: ({ locale }) => `./src/locales/${locale}.json`, location: "src/locales", }), ], }; export default config;sourcememetakan locale ke jalur file JSON-nya.locationmemberitahu Intlayer watcher folder mana yang harus dipantau untuk perubahan. Opsiformat: 'i18next'memastikan bahwa placeholder seperti{{name}}diurai dengan benar.Update Bundler Aliases (Optional)
Jika Anda menggunakan bundler (Vite, Webpack, esbuild), Anda dapat menyuntikkan alias modul sehingga
import ... from 'i18next'secara otomatis diselesaikan ke@intlayer/i18next. Ini menghilangkan kebutuhan untuk mengubah impor apa pun di codebase Anda secara manual.Untuk Vite:
vite.config.tsSalin kodeSalin kode ke clipboard
import { defineConfig } from "vite"; import i18nextVitePlugin from "@intlayer/i18next/plugin"; export default defineConfig({ plugins: [i18nextVitePlugin()], });i18nextVitePlugin()membungkus pluginintlayer()darivite-intlayerdan menambahkan aliasi18next→@intlayer/i18nextuntuk Anda. Menggunakan pluginintlayer()biasa darivite-intlayermengompilasi kamus tetapi tidak menambahkan alias itu — Anda kemudian harus mengganti nama impor ke@intlayer/i18nextsecara manual (lihat langkah berikutnya).
Itu saja untuk migrasi cepat. Aplikasi Anda sekarang berjalan di Intlayer sambil mempertahankan setiap impor dan API i18next.
Migrasi Lengkap
Langkah-langkah di bawah ini bersifat opsional dan dapat dilakukan secara bertahap. Mereka membuka akses ke rangkaian fitur Intlayer yang lengkap: editor visual, CMS, file konten yang diketik, terjemahan bertenaga AI, dan lainnya.
Explicit import renaming (optional)
OpsionalJika Anda lebih suka membuat dependensi eksplisit dalam file sumber Anda, atau jika Anda tidak menggunakan plugin bundler untuk alias imports, Anda dapat mengganti nama imports secara manual:
Tampilkan semua isi tabelBuka tabel dalam modal untuk melihat semua isi data dengan jelas
Before After import i18next from 'i18next'import i18next from '@intlayer/i18next'import { createInstance } from 'i18next'import { createInstance } from '@intlayer/i18next'import { t } from 'i18next'import { t } from '@intlayer/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 for missing translations (add to CI)npx intlayer test# Fill missing translations with 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: ({ locale }) => `./src/locales/${locale}.json`, location: "src/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 tersedia, boilerplate i18next berikut dapat dihapus:
Buka tabel dalam modal untuk melihat semua isi data dengan jelas
| File / pola | Mengapa tidak lagi diperlukan |
|---|---|
i18next.init() calls | Intlayer menginisialisasi semuanya secara otomatis; tidak ada langkah pemuatan runtime. |
i18next.use(...) | Intlayer tidak menggunakan plugin i18next, backend, atau pendeteksi bahasa. |
JSON language bundles (locales/*.json) | Bundle JSON hanya diperlukan jika Anda masih menggunakan plugin syncJSON. Setelah Anda bermigrasi 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 saja dalam codebase Anda (secara default, di mana saja di dalam ./src). Anda dapat menempatkan file my-component.content.ts tepat di sebelah logika Anda dan Intlayer akan mengambilnya pada saat build tanpa konfigurasi tambahan — tidak ada impor, tidak ada pendaftaran, tidak ada file indeks terpusat yang diperlukan. Ini membuat co-locating translations menjadi sepenuhnya lancar.
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 oleh Intlayer ke .gitignore Anda:
Salin kode ke clipboard
# Abaikan file yang dihasilkan oleh Intlayer.intlayerLanjutkan Lebih Jauh
- Visual Editor — Kelola terjemahan secara visual di browser Anda: Intlayer Visual Editor
- CMS — Eksternal dan kelola konten dari jarak jauh: Intlayer CMS
- VS Code Extension — Dapatkan autocompletion dan deteksi kesalahan terjemahan real-time: Intlayer VS Code Extension
- CLI Reference — Daftar lengkap perintah CLI: Intlayer CLI