Ajukan pertanyaan Anda dan dapatkan ringkasan dokumen dengan merujuk halaman ini dan penyedia AI pilihan Anda
Riwayat Versi
- "Tambahkan Mengapa Intlayer di atas bagian alternatif"v8.11.231/5/2026
- "Rilis Kompiler"v7.3.127/11/2025
- "Pembaruan tabel komparatif"v5.8.019/8/2025
- "Riwayat awal"v5.5.1029/6/2025
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
Mengapa Anda harus mempertimbangkan Intlayer?
Apa itu Intlayer?
Intlayer adalah perpustakaan internasionalisasi yang dirancang khusus untuk pengembang JavaScript. Ini memungkinkan deklarasi konten Anda di mana saja dalam kode Anda. Ini mengonversi deklarasi konten multibahasa menjadi kamus terstruktur untuk diintegrasikan dengan mudah dalam kode Anda. Menggunakan TypeScript, Intlayer membuat pengembangan Anda lebih kuat dan efisien.
Mengapa Intlayer dibandingkan alternatif?
Dibandingkan dengan solusi utama seperti next-intl atau i18next, Intlayer adalah solusi yang hadir dengan pengoptimalan terintegrasi seperti:
Daripada memuat file JSON berukuran besar ke halaman Anda, muat saja konten yang diperlukan. Intlayer membantu mengurangi ukuran bundle dan halaman Anda hingga 50%.
Mencakup konten aplikasi Anda memfasilitasi pemeliharaan untuk aplikasi berskala besar. Anda dapat menduplikasi atau menghapus satu folder fitur tanpa beban mental untuk meninjau seluruh basis kode konten Anda. Selain itu, Intlayer diketik sepenuhnya untuk memastikan keakuratan konten Anda.
Menempatkan konten bersama mengurangi konteks yang diperlukan dengan Model Bahasa Besar (LLM). Intlayer juga dilengkapi dengan serangkaian alat, seperti CLI untuk menguji terjemahan yang hilang,LSP, MCP, dan agent skill, untuk menjadikan pengalaman pengembang (DX) lebih lancar bagi agen AI.
Intlayer menawarkan sejumlah fitur tambahan yang tidak dimiliki solusi i18n lainnya, seperti Dukungan penurunan harga, mengambil konten eksternal, file pemuatan konten, pembaruan konten langsung, visual editor dan banyak lagi.
Gunakan otomatisasi untuk menerjemahkan dalam saluran CI/CD Anda menggunakan LLM pilihan Anda dengan biaya penyedia AI Anda. Intlayer juga menawarkan compiler untuk mengotomatiskan ekstraksi konten, serta platform web untuk membantu menerjemahkan di latar belakang.
Menghubungkan file JSON berukuran besar ke komponen dapat menyebabkan masalah kinerja dan reaktivitas. Intlayer mengoptimalkan pemuatan konten Anda pada waktu pembuatan.
Lebih dari sekedar solusi i18n, Intlayer menyediakan editor visual yang dihosting sendiri dan CMS lengkap untuk membantu Anda mengelola konten multibahasa secara real-time, membuat kolaborasi dengan penerjemah, copywriter, dan anggota tim lainnya menjadi lancar. Konten dapat disimpan secara lokal dan/atau jarak jauh.
Jika Anda menggunakan kerangka kerja yang berbeda untuk bagian aplikasi yang berbeda (misalnya, React, React-native, Vue, Angular, Svelte, dll.), Intlayer menyediakan cara untuk menggunakan sinatax umum dan implementasi di semua kerangka frontend utama. Anda juga akan dapat membagikan deklarasi konten Anda ke seluruh sistem desain, aplikasi, backend, dll.
Mengapa Intlayer dibuat?
Intlayer dibuat untuk mengatasi masalah umum yang mempengaruhi semua library i18n populer seperti next-intl, react-i18next, react-intl, next-i18next, react-intl, dan vue-i18n.
Semua solusi ini mengadopsi pendekatan terpusat untuk mendaftar dan mengelola konten Anda. Contohnya:
Salin kode ke clipboard
.├── locales│ ├── en.json│ ├── es.json│ └── fr.json├── i18n.ts└── src └── components └── MyComponent └── index.tsxAtau di sini menggunakan namespace:
Salin kode ke clipboard
.├── locales│ ├── en│ │ ├── footer.json│ │ └── navbar.json│ ├── fr│ │ ├── footer.json│ │ └── navbar.json│ └── es│ ├── footer.json│ └── navbar.json├── i18n.ts└── src └── components └── MyComponent └── index.tsxTipe arsitektur ini memperlambat proses pengembangan dan membuat codebase lebih kompleks untuk dipertahankan karena beberapa alasan:
Untuk setiap komponen baru yang dibuat, Anda harus:
- Membuat resource/namespace baru di folder
locales - Mengingat untuk mengimpor namespace baru di halaman Anda
- Menerjemahkan konten Anda (sering dilakukan secara manual dengan copy/paste dari penyedia AI)
- Membuat resource/namespace baru di folder
Untuk setiap perubahan yang dilakukan pada komponen Anda, Anda harus:
- Mencari resource/namespace terkait (jauh dari komponen)
- Menerjemahkan konten Anda
- Memastikan konten Anda terbaru untuk setiap locale
- Memverifikasi namespace Anda tidak mencakup key/value yang tidak digunakan
- Memastikan struktur file JSON Anda sama untuk semua locale
Pada proyek profesional yang menggunakan solusi ini, platform lokalisasi sering digunakan untuk membantu mengelola terjemahan konten Anda. Namun, ini dapat dengan cepat menjadi mahal untuk proyek besar.
Untuk mengatasi masalah ini, Intlayer mengadopsi pendekatan yang membatasi konten Anda per-komponen dan menjaga konten Anda dekat dengan komponen Anda, seperti yang sering kita lakukan dengan CSS (styled-components), types, dokumentasi (storybook), atau unit tests (jest).
Salin kode ke clipboard
.└── components └── MyComponent ├── index.content.ts ├── index.test.tsx ├── index.stories.tsx └── index.tsxSalin kode ke clipboard
import { t, type Dictionary } from "intlayer";
const componentExampleContent = {
key: "component-example",
content: {
myTranslatedContent: t({
id: "Halo Dunia",
en: "Hello World",
es: "Hola Mundo",
fr: "Bonjour le monde",
}),
},
} satisfies Dictionary;
export default componentExampleContent;Salin kode ke clipboard
import { useIntlayer } from "react-intlayer";
export const ComponentExample = () => {
const { myTranslatedContent } = useIntlayer("component-example");
return <span>{myTranslatedContent}</span>;
};Pendekatan ini memungkinkan Anda untuk:
Meningkatkan kecepatan pengembangan
- File
.content.{{ts|mjs|cjs|json}}dapat dibuat menggunakan ekstensi VSCode - Alat AI autocompletion di IDE Anda (seperti GitHub Copilot) dapat membantu Anda mendeklarasikan konten Anda, mengurangi copy/paste
- File
Membersihkan codebase Anda
- Mengurangi kompleksitas
- Meningkatkan maintainability
Menduplikasi komponen Anda dan konten terkait dengan lebih mudah (Contoh: komponen login/register, dll.)
- Dengan membatasi risiko berdampak pada konten komponen lain
- Dengan copy/paste konten Anda dari satu aplikasi ke aplikasi lain tanpa dependensi eksternal
Hindari mengotori codebase Anda dengan key/value yang tidak digunakan untuk komponen yang tidak digunakan
- Jika Anda tidak menggunakan komponen, Intlayer tidak akan mengimpor konten terkaitnya
- Jika Anda menghapus komponen, Anda akan lebih mudah mengingat untuk menghapus konten terkaitnya karena akan ada di folder yang sama
Kurangi biaya reasoning untuk agen AI untuk mendeklarasikan konten multibahasa Anda
- Agen AI tidak akan harus memindai seluruh codebase Anda untuk mengetahui di mana harus mengimplementasikan konten Anda
- Terjemahan dapat dilakukan dengan mudah oleh alat AI autocompletion di IDE Anda (seperti GitHub Copilot)
Optimalkan kinerja loading
- Jika komponen di-lazy-load, konten terkaitnya akan dimuat pada saat yang sama
Fitur Tambahan Intlayer
Buka tabel dalam modal untuk melihat semua isi data dengan jelas
| Feature | Description |
|---|---|
| Dukungan Lintas Framework Intlayer kompatibel dengan semua framework dan library utama, termasuk Next.js, React, Vite, Vue.js, Nuxt, Preact, Express, dan lainnya. |
| Manajemen Konten Bertenaga JavaScript Manfaatkan fleksibilitas JavaScript untuk mendefinisikan dan mengelola konten Anda secara efisien. - Deklarasi konten |
| Compiler Intlayer Compiler mengekstrak konten secara otomatis dari komponen dan menghasilkan file kamus. - Compiler |
| File Deklarasi Konten Per-Locale Percepat pengembangan Anda dengan mendeklarasikan konten Anda sekali, sebelum pembuatan otomatis. - File Deklarasi Konten Per-Locale |
| Lingkungan Aman Tipe Manfaatkan TypeScript untuk memastikan definisi konten dan kode Anda bebas kesalahan, sambil juga menikmati autocompletion IDE. - Konfigurasi TypeScript |
| Penyiapan Disederhanakan Mulai dengan cepat dengan konfigurasi minimal. Sesuaikan pengaturan untuk internasionalisasi, routing, AI, build, dan penanganan konten dengan mudah. - Jelajahi integrasi Next.js |
| Pengambilan Konten Disederhanakan Tidak perlu memanggil fungsi t Anda untuk setiap bagian konten. Ambil semua konten Anda secara langsung menggunakan satu hook.- Integrasi React |
| Implementasi Komponen Server Konsisten Sangat cocok untuk komponen server Next.js, gunakan implementasi yang sama untuk komponen klien dan server, tidak perlu melewatkan fungsi t Anda di setiap komponen server. - Komponen Server |
| Codebase Terorganisir Jaga codebase Anda lebih terorganisir: 1 komponen = 1 kamus dalam folder yang sama. Terjemahan yang dekat dengan komponen mereka masing-masing meningkatkan kemudahan pemeliharaan dan kejelasan. - Cara Kerja Intlayer |
| Routing Ditingkatkan Dukungan lengkap routing aplikasi, beradaptasi dengan mulus dengan struktur aplikasi yang kompleks, untuk Next.js, React, Vite, Vue.js, dll. - Jelajahi integrasi Next.js |
| Dukungan Markdown Impor dan interpretasikan file locale dan Markdown jarak jauh untuk konten multibahasa seperti kebijakan privasi, dokumentasi, dll. Interpretasikan dan buat metadata Markdown dapat diakses dalam kode Anda. - File konten |
| Editor Visual & CMS Gratis Editor visual dan CMS gratis tersedia untuk penulis konten, menghilangkan kebutuhan akan platform lokalisasi. Jaga konten Anda tetap tersinkronisasi menggunakan Git, atau eksternalisasi sepenuhnya atau sebagian dengan CMS. - Intlayer Editor - Intlayer CMS |
| Konten Tree-shakable Konten tree-shakable, mengurangi ukuran bundle akhir. Memuat konten per komponen, mengecualikan konten yang tidak digunakan dari bundle Anda. Mendukung lazy loading untuk meningkatkan efisiensi loading aplikasi. - Optimasi build aplikasi |
| Rendering Statis Tidak memblokir Rendering Statis. - Integrasi Next.js |
| Terjemahan Bertenaga AI Ubah situs web Anda menjadi 231 bahasa dengan hanya satu klik menggunakan alat terjemahan bertenaga AI Intlayer yang canggih menggunakan penyedia/kunci API AI Anda sendiri. - Integrasi CI/CD - Intlayer CLI - Isi Otomatis |
| Integrasi MCP Server Menyediakan server MCP (Model Context Protocol) untuk otomasi IDE, memungkinkan manajemen konten dan alur kerja i18n yang mulus langsung dalam lingkungan pengembangan Anda. - MCP Server |
| Ekstensi VSCode Intlayer menyediakan ekstensi VSCode untuk membantu Anda mengelola konten dan terjemahan, membangun kamus Anda, menerjemahkan konten Anda, dan lainnya. - Ekstensi VSCode |
| Interoperabilitas Memungkinkan interoperabilitas dengan react-i18next, next-i18next, next-intl, dan react-intl. - Intlayer dan react-intl - Intlayer dan next-intl - Intlayer dan next-i18next |
| Testing Missing Translations (CLI/CI) | ✅ CLI: npx intlayer content test (audit ramah-CI) |
Perbandingan Intlayer dengan solusi lain
Buka tabel dalam modal untuk melihat semua isi data dengan jelas
| Fitur | intlayer | react-i18next | react-intl (FormatJS) | lingui | next-intl | next-i18next | vue-i18n |
|---|---|---|---|---|---|---|---|
| Terjemahan Dekat dengan Komponen | ✅ Ya, konten diletakkan bersama setiap komponen | ❌ Tidak | ❌ Tidak | ❌ Tidak | ❌ Tidak | ❌ Tidak | ✅ Ya - menggunakan Single File Components (SFCs) |
| Integrasi TypeScript | ✅ Lanjutan, tipe yang ketat dan auto-generated | ⚠️ Dasar; konfigurasi tambahan untuk keamanan | ✅ Baik, tetapi kurang ketat | ⚠️ Typing, perlu konfigurasi | ✅ Baik | ⚠️ Dasar | ✅ Baik (tipe tersedia; keamanan kunci perlu setup) |
| Deteksi Terjemahan Hilang | ✅ Error TypeScript dan error/warning saat build-time | ⚠️ Sebagian besar fallback string saat runtime | ⚠️ Fallback string | ⚠️ Perlu konfigurasi tambahan | ⚠️ Fallback runtime | ⚠️ Fallback runtime | ⚠️ Fallback/peringatan runtime (dapat dikonfigurasi) |
| Konten Kaya (JSX/Markdown/komponen) | ✅ Dukungan langsung | ⚠️ Terbatas / interpolasi saja | ⚠️ Sintaks ICU, bukan JSX asli | ⚠️ Terbatas | ❌ Tidak dirancang untuk node kaya | ⚠️ Terbatas | ⚠️ Terbatas (komponen via <i18n-t>, Markdown via plugin) |
| Terjemahan Bertenaga AI | ✅ Ya, mendukung multiple AI provider. Dapat digunakan dengan API key Anda sendiri. Mempertimbangkan konteks aplikasi dan scope konten | ❌ Tidak | ❌ Tidak | ❌ Tidak | ❌ Tidak | ❌ Tidak | ❌ Tidak |
| Editor Visual | ✅ Ya, Visual Editor lokal + CMS opsional; dapat mengeksternal konten codebase; embeddable | ❌ Tidak / tersedia via platform lokalisasi eksternal | ❌ Tidak / tersedia via platform lokalisasi eksternal | ❌ Tidak / tersedia via platform lokalisasi eksternal | ❌ Tidak / tersedia via platform lokalisasi eksternal | ❌ Tidak / tersedia via platform lokalisasi eksternal | ❌ Tidak / tersedia via platform lokalisasi eksternal |
| Routing Terlokalisasi | ✅ Ya, mendukung path terlokalisasi out of the box (bekerja dengan Next.js & Vite) | ⚠️ Tidak built-in, memerlukan plugin (mis. next-i18next) atau konfigurasi router custom | ❌ Tidak, hanya pemformatan pesan, routing harus manual | ⚠️ Tidak built-in, memerlukan plugin atau konfigurasi manual | ✅ Built-in, App Router mendukung segmen [locale] | ✅ Built-in | ✅ Built-in |
| Generasi Rute Dinamis | ✅ Ya | ⚠️ Plugin/ekosistem atau setup manual | ❌ Tidak disediakan | ⚠️ Plugin/manual | ✅ Ya | ✅ Ya | ❌ Tidak disediakan (Nuxt i18n menyediakan) |
| Pluralisasi | ✅ Pola berbasis enumerasi | ✅ Dapat dikonfigurasi (plugin seperti i18next-icu) | ✅ (ICU) | ✅ (ICU/messageformat) | ✅ Baik | ✅ Baik | ✅ Aturan plural built-in |
| Pemformatan (tanggal, angka, mata uang) | ✅ Formatter yang optimal (Intl under the hood) | ⚠️ Via plugin atau penggunaan Intl custom | ✅ Formatter ICU | ✅ Pembantu ICU/CLI | ✅ Baik (pembantu Intl) | ✅ Baik (pembantu Intl) | ✅ Formatter tanggal/angka built-in (Intl) |
| Format Konten | ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml WIP) | ⚠️ .json | ✅ .json, .js | ⚠️ .po, .json | ✅ .json, .js, .ts | ⚠️ .json | ✅ .json, .js |
| Dukungan ICU | ⚠️ WIP | ⚠️ Via plugin (i18next-icu) | ✅ Ya | ✅ Ya | ✅ Ya | ⚠️ Via plugin (i18next-icu) | ⚠️ Via formatter/compiler custom |
| Pembantu SEO (hreflang, sitemap) | ✅ Tool built-in: pembantu untuk sitemap, robots.txt, metadata | ⚠️ Plugin komunitas/manual | ❌ Bukan core | ❌ Bukan core | ✅ Baik | ✅ Baik | ❌ Bukan core (Nuxt i18n menyediakan pembantu) |
| Ekosistem / Komunitas | ⚠️ Lebih kecil tetapi berkembang cepat dan responsif | ✅ Terbesar dan matang | ✅ Besar | ⚠️ Lebih kecil | ✅ Mid-size, fokus Next.js | ✅ Mid-size, fokus Next.js | ✅ Besar di ekosistem Vue |
| Server-side Rendering & Server Components | ✅ Ya, streamlined untuk SSR / React Server Components | ⚠️ Didukung di level halaman tetapi perlu melewatkan t-functions di component tree untuk children server components | ⚠️ Didukung di level halaman dengan setup tambahan, tetapi perlu melewatkan t-functions di component tree untuk children server components | ✅ Didukung, setup diperlukan | ⚠️ Didukung di level halaman tetapi perlu melewatkan t-functions di component tree untuk children server components | ⚠️ Didukung di level halaman tetapi perlu melewatkan t-functions di component tree untuk children server components | ✅ SSR via Nuxt/Vue SSR (tidak ada RSC) |
| Tree-shaking (muat hanya konten yang digunakan) | ✅ Ya, per-komponen saat build time via plugin Babel/SWC | ⚠️ Biasanya memuat semua (dapat ditingkatkan dengan namespace/code-splitting) | ⚠️ Biasanya memuat semua | ❌ Bukan default | ⚠️ Parsial | ⚠️ Parsial | ⚠️ Parsial (dengan code-splitting/setup manual) |
| Lazy loading | ✅ Ya, per-locale / per-dictionary | ✅ Ya (mis., backend/namespace on demand) | ✅ Ya (split locale bundle) | ✅ Ya (dynamic catalog import) | ✅ Ya (per-route/per-locale), perlu manajemen namespace | ✅ Ya (per-route/per-locale), perlu manajemen namespace | ✅ Ya (async locale message) |
| Hapus konten yang tidak digunakan | ✅ Ya, per-dictionary saat build time | ❌ Tidak, hanya via segmentasi namespace manual | ❌ Tidak, semua pesan yang dideklarasikan di-bundle | ✅ Ya, kunci yang tidak digunakan terdeteksi & dihapus saat build | ❌ Tidak, dapat dikelola manual dengan manajemen namespace | ❌ Tidak, dapat dikelola manual dengan manajemen namespace | ❌ Tidak, hanya mungkin via lazy-loading manual |
| Manajemen Proyek Besar | ✅ Mendorong modular, cocok untuk design-system | ⚠️ Perlu disiplin file yang baik | ⚠️ Katalog pusat dapat membesar | ⚠️ Mungkin menjadi kompleks | ✅ Modular dengan setup | ✅ Modular dengan setup | ✅ Modular dengan setup Vue Router/Nuxt i18n |
Bintang GitHub
Bintang GitHub adalah indikator kuat dari popularitas proyek, kepercayaan komunitas, dan relevansi jangka panjang. Meskipun bukan ukuran langsung dari kualitas teknis, bintang-bintang tersebut mencerminkan berapa banyak pengembang yang menganggap proyek tersebut berguna, mengikuti kemajuannya, dan kemungkinan akan mengadopsinya. Untuk memperkirakan nilai suatu proyek, bintang membantu membandingkan daya tarik di berbagai alternatif dan memberikan wawasan tentang pertumbuhan ekosistem.
Interoperabilitas
intlayer juga dapat membantu mengelola namespace react-intl, react-i18next, next-intl, next-i18next, dan vue-i18n Anda.
Menggunakan intlayer, Anda dapat mendeklarasikan konten dalam format pustaka i18n favorit Anda, dan intlayer akan menghasilkan namespace Anda di lokasi pilihan Anda (contoh: /messages/{{locale}}/{{namespace}}.json).