BerandaSandboxShowcaseAplikasiDokumentasiBlog
    • EnglishInggris
      EN
    • русскийRusia
      RU
    • 日本語Jepang
      JA
    • françaisPrancis
      FR
    • 한국어Korea
      KO
    • 中文Tionghoa
      ZH
    • españolSpanyol
      ES
    • DeutschJerman
      DE
    • العربيةArab
      AR
    • italianoItalia
      IT
    • British EnglishInggris (Britania)
      EN-GB
    • portuguêsPortugis
      PT
    • हिन्दीHindi
      HI
    • TürkçeTurki
      TR
    • polskiPolski
      PL
    • IndonesiaIndonesia
      ID
    • Tiếng ViệtVietnam
      VI
    • українськаUkraina
      UK
    /
    Filter dokumen berdasarkan framework
    Alt+←
    Mengapa Intlayer?
    Mulai
    Konsep
    • Bagaimana Intlayer bekerja
    • Konfigurasi
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Editor visual
    • CMS
    • Integrasi CI/CD
    • TerjemahanPluralPenumeraanKondisiJenis kelaminPenambahanBerkasNestingMarkdownHTMLPengambilan fungsi
    • File untuk setiap lokal
    • Kompilator
    • Pengisian otomatis
    • Pengujian
    • Optimasi paket
    Lingkungan
    • Next.js 14 dan App Router
      Next.js 15
      Next.js tanpa locale URL
      Next.js dan Page Router
      Compiler
    • Tanstack Start Solid
    • Astro dan React
      Astro dan Svelte
      Astro dan Vue
      Astro dan Solid
      Astro dan Preact
      Astro dan Lit
      Astro dan Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt dan Vue
    • Vite dan Solid
    • SvelteKit
    • Vite dan Preact
    • Vite dan Vanilla JS
    • Vite dan Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native dan Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx dan React
    Plugins
    • JSON
    • gettext (.po)
    Ekstensi VS Code
    Agen
    • Server MCP
    • Keahlian agen
    Rilis
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Ajukan pertanyaan
    1. Documentation
    2. Compiler
    Dibuat:2025-09-09Terakhir diperbarui:2026-03-12
    Referensikan dokumen ini ke asisten AI favorit Anda
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Ajukan pertanyaan Anda dan dapatkan ringkasan dokumen dengan merujuk halaman ini dan penyedia AI pilihan Anda

    Riwayat Versi

    1. "Perbarui opsi kompiler, tambah dukungan FilePathPattern"
      v8.2.09/3/2026
    2. "Perbarui opsi kompiler"
      v8.1.725/2/2026
    3. "Rilis Compiler"
      v7.3.127/11/2025

    Konten halaman ini diterjemahkan menggunakan AI.

    Lihat versi terakhir dari konten aslinya dalam bahasa Inggris
    Sunting dokumen ini

    Jika Anda memiliki ide untuk meningkatkan dokumentasi ini, silakan berkontribusi dengan mengajukan pull request di GitHub.

    Tautan GitHub ke dokumentasi
    Salin

    Salin Markdown dokumentasi ke clipboard

    Intlayer Compiler | Ekstraksi Konten Otomatis untuk i18n

    Apa itu Intlayer Compiler?

    Intlayer Compiler adalah alat yang kuat yang dirancang untuk mengotomatisasi proses internasionalisasi (i18n) dalam aplikasi Anda. Alat ini memindai kode sumber Anda (JSX, TSX, Vue, Svelte) untuk deklarasi konten, mengekstraknya, dan secara otomatis menghasilkan file kamus yang diperlukan. Ini memungkinkan Anda untuk menjaga konten tetap berdekatan dengan komponen Anda sementara Intlayer menangani manajemen dan sinkronisasi kamus Anda.

    Mengapa Menggunakan Intlayer Compiler?

    • Otomatisasi: Menghilangkan penyalinan konten secara manual ke dalam kamus.
    • Kecepatan: Ekstraksi konten yang dioptimalkan memastikan proses build Anda tetap cepat.
    • Pengalaman Pengembang: Menjaga deklarasi konten tepat di tempat mereka digunakan, meningkatkan pemeliharaan.
    • Pembaruan Langsung: Mendukung Hot Module Replacement (HMR) untuk umpan balik instan selama pengembangan.

    Lihat posting blog Compiler vs. Declarative i18n untuk perbandingan yang lebih mendalam.

    Mengapa Tidak Menggunakan Intlayer Compiler?

    Meskipun compiler menawarkan pengalaman "langsung bekerja" yang sangat baik, compiler juga memperkenalkan beberapa kompromi yang harus Anda ketahui:

    • Ambiguitas heuristik: Compiler harus menebak apa yang merupakan konten yang ditujukan untuk pengguna versus logika aplikasi (misalnya, className="active", kode status, ID produk). Dalam codebase yang kompleks, ini dapat menyebabkan false positive atau string yang terlewat yang memerlukan anotasi manual dan pengecualian.
    • Ekstraksi hanya statis: Ekstraksi berbasis compiler bergantung pada analisis statis. String yang hanya ada saat runtime (kode kesalahan API, field CMS, dll.) tidak dapat ditemukan atau diterjemahkan oleh compiler saja, jadi Anda masih memerlukan strategi i18n runtime yang melengkapi.

    Untuk perbandingan arsitektur yang lebih mendalam, lihat posting blog Compiler vs. Declarative i18n.

    Sebagai alternatif, untuk mengotomatisasi proses i18n Anda sambil mempertahankan kontrol penuh atas konten Anda, Intlayer juga menyediakan perintah auto-ekstraksi intlayer extract (lihat dokumentasi CLI), atau perintah Intlayer: extract content to Dictionary dari ekstensi Intlayer VS Code (lihat dokumentasi ekstensi VS Code).

    Penggunaan

    Vite

    Untuk aplikasi berbasis Vite (React, Vue, Svelte, dll.), cara termudah menggunakan compiler adalah melalui plugin vite-intlayer.

    Instalasi

    bash
    Salin kode

    Salin kode ke clipboard

    npm install vite-intlayer

    Konfigurasi

    Perbarui vite.config.ts Anda untuk menyertakan plugin intlayerCompiler:

    vite.config.ts
    Salin kode

    Salin kode ke clipboard

    import { defineConfig } from "vite";import { intlayer, intlayerCompiler } from "vite-intlayer";export default defineConfig({ plugins: [   intlayer(),   intlayerCompiler(), // Menambahkan plugin compiler ],});

    See complete tutorial: Intlayer Compiler with Vite+React

    Dukungan Framework

    Plugin Vite secara otomatis mendeteksi dan menangani berbagai jenis file:

    • React / JSX / TSX: Ditangani secara native.
    • Vue: Memerlukan @intlayer/vue-compiler.
    • Svelte: Memerlukan @intlayer/svelte-compiler.

    Pastikan untuk menginstal paket compiler yang sesuai untuk framework Anda:

    bash
    Salin kode

    Salin kode ke clipboard

    # Untuk Vuenpm install @intlayer/vue-compiler# Untuk Sveltenpm install @intlayer/svelte-compiler

    Next.js (Babel)

    Untuk Next.js atau aplikasi berbasis Webpack lainnya yang menggunakan Babel, Anda dapat mengonfigurasi compiler menggunakan plugin @intlayer/babel.

    Instalasi

    bash
    Salin kode

    Salin kode ke clipboard

    npm install @intlayer/babel

    Konfigurasi

    Perbarui babel.config.js Anda (atau babel.config.json) untuk menyertakan plugin ekstraksi. Kami menyediakan helper getExtractPluginOptions untuk memuat konfigurasi Intlayer Anda secara otomatis.

    babel.config.js
    Salin kode

    Salin kode ke clipboard

    const { intlayerExtractBabelPlugin, intlayerOptimizeBabelPlugin, getExtractPluginOptions, getOptimizePluginOptions,} = require("@intlayer/babel");module.exports = { presets: ["next/babel"], plugins: [   // Ekstrak konten dari komponen ke dalam kamus   [intlayerExtractBabelPlugin, getExtractPluginOptions()],   // Optimalkan impor dengan mengganti useIntlayer dengan impor kamus langsung   [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()], ],};

    Konfigurasi ini memastikan bahwa konten yang dideklarasikan dalam komponen Anda secara otomatis diekstraksi dan digunakan untuk menghasilkan kamus selama proses build Anda.

    See complete tutorial: Intlayer Compiler with Next.js

    Konfigurasi kustom

    Untuk menyesuaikan perilaku compiler, Anda dapat memperbarui file intlayer.config.ts di root proyek Anda.

    intlayer.config.ts
    Salin kode

    Salin kode ke clipboard

    import { type IntlayerConfig, Locales } from "intlayer";const config: IntlayerConfig = {  compiler: {    /**     * Menunjukkan apakah kompiler harus diaktifkan.     * Atur ke 'build-only' untuk melewatkan kompiler selama pengembangan dan mempercepat waktu mulai.     */    enabled: true,    /**     * Mendefinisikan jalur file output. Menggantikan `outputDir`.     *     * - Jalur yang dimulai dengan `./` diselesaikan relatif terhadap direktori komponen.     * - Jalur yang dimulai dengan `/` diselesaikan relatif terhadap root proyek (`baseDir`).     *     * - Menyertakan variabel `{{locale}}` dalam jalur akan mengaktifkan pembuatan kamus yang dipisahkan berdasarkan bahasa.     *     * Contoh:     * ```ts     * {     *   // Buat file .content.ts multi-bahasa di sebelah komponen     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // Padanan menggunakan string template     * }     * ```     *     * ```ts     * {     *   // Buat file JSON terpusat berdasarkan bahasa di root proyek     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // Padanan menggunakan string template     * }     * ```     *     * Daftar variabel:     *   - `fileName`: Nama file.     *   - `key`: Kunci konten.     *   - `locale`: Bahasa konten.     *   - `extension`: Ekstensi file.     *   - `componentFileName`: Nama file komponen.     *   - `componentExtension`: Ekstensi file komponen.     *   - `format`: Format kamus.     *   - `componentFormat`: Format kamus komponen.     *   - `componentDirPath`: Jalur direktori komponen.     */    output: ({ fileName, extension }) => `./${fileName}${extension}`,    /**     * Menunjukkan apakah komponen harus disimpan setelah ditransformasi.     * Dengan begitu, kompiler hanya perlu dijalankan sekali untuk mentransformasi aplikasi, lalu dapat dihapus.     */    saveComponents: false,    /**     * Masukkan konten saja dalam file yang dihasilkan. Berguna untuk output JSON i18next atau ICU MessageFormat per bahasa.     *     * - `output: ({ locale, key }) => `./locale/${locale}/${key}.json`,`     */    noMetadata: false,    /**     * Awalan kunci kamus     */    dictionaryKeyPrefix: "", // Tambahkan awalan opsional untuk kunci kamus yang diekstrak  },};

    Referensi Konfigurasi Kompiler

    Properti berikut dapat dikonfigurasi dalam blok compiler pada file intlayer.config.ts Anda:

    • enabled:

      • Tipe: boolean | 'build-only'
      • Default: true
      • Deskripsi: Menunjukkan apakah kompiler harus diaktifkan.
    • dictionaryKeyPrefix:

      • Tipe: string
      • Default: ''
      • Deskripsi: Awalan untuk kunci kamus yang diekstrak.
    • transformPattern:

      • Tipe: string | string[]
      • Default: ['**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}', '!**/node_modules/**']
      • Deskripsi: (Sudah tidak digunakan: gunakan build.traversePattern sebagai gantinya) Pola untuk menelusuri kode yang ingin dioptimalkan.
    • excludePattern:

      • Tipe: string | string[]
      • Default: ['**/node_modules/**']
      • Deskripsi: (Sudah tidak digunakan: gunakan build.traversePattern sebagai gantinya) Pola yang harus dikecualikan dari optimasi.
    • output:

      • Tipe: FilePathPattern
      • Default: ({ key }) => 'compiler/${key}.content.json'
      • Deskripsi: Mendefinisikan jalur file output. Menggantikan outputDir. Menangani variabel dinamis seperti {{locale}}, {{key}}, {{fileName}}, {{extension}}, {{format}}, {{dirPath}}, {{componentFileName}}, {{componentExtension}}, dan {{componentFormat}}. Dapat diatur sebagai string menggunakan format 'my/{{var}}/path', atau sebagai fungsi.
      • Catatan: Jalur ./**/* diselesaikan relatif terhadap komponen. Jalur /**/* diselesaikan relatif terhadap baseDir Intlayer.
      • Catatan: Jika bahasa didefinisikan dalam jalur, kamus akan dihasilkan per bahasa.
      • Contoh: output: ({ locale, key }) => 'compiler/${locale}/${key}.json'
    • noMetadata:

      • Tipe: boolean
      • Default: false
      • Deskripsi: Menunjukkan apakah metadata harus disimpan dalam file. Jika benar, kompiler tidak akan menyimpan metadata kamus (kunci, pembungkus konten).
      • Catatan: Berguna jika digunakan dengan plugin loadJSON. Berguna untuk output JSON i18next atau ICU MessageFormat per bahasa.
      • Contoh: Jika true: json { "key": "value" } Jika false: json { "key": "value", "content": { "key": "value" } }
    • saveComponents:

      • Tipe: boolean
      • Default: false
      • Deskripsi: Menunjukkan apakah komponen harus disimpan setelah ditransformasi.

    Isi terjemahan yang hilang

    Intlayer menyediakan alat CLI untuk membantu Anda mengisi terjemahan yang hilang. Anda dapat menggunakan perintah intlayer untuk menguji dan mengisi terjemahan yang hilang dari kode Anda.

    bash
    Salin kode

    Salin kode ke clipboard

    npx intlayer test         # Uji apakah ada terjemahan yang hilang
    bash
    Salin kode

    Salin kode ke clipboard

    npx intlayer fill         # Isi terjemahan yang hilang

    Ekstraksi

    Intlayer menyediakan alat CLI untuk membantu Anda mengekstrak konten dari kode Anda. Anda dapat menggunakan perintah intlayer extract untuk mengekstrak konten dari kode Anda.

    bash
    Salin kode

    Salin kode ke clipboard

    npx intlayer extract
    Untuk rincian lebih lanjut, silakan merujuk ke dokumentasi CLI
    File untuk setiap lokal
    Pengisian otomatis
    Alt+→

    Di halaman ini

      Diskusi bersifat anonim dan ditinjau secara berkala untuk mengatasi masalah umum. Jangan ragu untuk berbagi ide fitur, masukan tentang dokumentasi, atau apa pun yang terkait dengan Intlayer, kami menggunakan masukan ini untuk membentuk peta jalan dan meningkatkan produk.

      npm install vite-intlayer
      import { defineConfig } from "vite";import { intlayer, intlayerCompiler } from "vite-intlayer";export default defineConfig({ plugins: [   intlayer(),   intlayerCompiler(), // Menambahkan plugin compiler ],});
      # Untuk Vuenpm install @intlayer/vue-compiler# Untuk Sveltenpm install @intlayer/svelte-compiler
      npm install @intlayer/babel
      const { intlayerExtractBabelPlugin, intlayerOptimizeBabelPlugin, getExtractPluginOptions, getOptimizePluginOptions,} = require("@intlayer/babel");module.exports = { presets: ["next/babel"], plugins: [   // Ekstrak konten dari komponen ke dalam kamus   [intlayerExtractBabelPlugin, getExtractPluginOptions()],   // Optimalkan impor dengan mengganti useIntlayer dengan impor kamus langsung   [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()], ],};
      import { type IntlayerConfig, Locales } from "intlayer";const config: IntlayerConfig = {  compiler: {    /**     * Menunjukkan apakah kompiler harus diaktifkan.     * Atur ke 'build-only' untuk melewatkan kompiler selama pengembangan dan mempercepat waktu mulai.     */    enabled: true,    /**     * Mendefinisikan jalur file output. Menggantikan `outputDir`.     *     * - Jalur yang dimulai dengan `./` diselesaikan relatif terhadap direktori komponen.     * - Jalur yang dimulai dengan `/` diselesaikan relatif terhadap root proyek (`baseDir`).     *     * - Menyertakan variabel `{{locale}}` dalam jalur akan mengaktifkan pembuatan kamus yang dipisahkan berdasarkan bahasa.     *     * Contoh:     * ```ts     * {     *   // Buat file .content.ts multi-bahasa di sebelah komponen     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // Padanan menggunakan string template     * }     * ```     *     * ```ts     * {     *   // Buat file JSON terpusat berdasarkan bahasa di root proyek     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // Padanan menggunakan string template     * }     * ```     *     * Daftar variabel:     *   - `fileName`: Nama file.     *   - `key`: Kunci konten.     *   - `locale`: Bahasa konten.     *   - `extension`: Ekstensi file.     *   - `componentFileName`: Nama file komponen.     *   - `componentExtension`: Ekstensi file komponen.     *   - `format`: Format kamus.     *   - `componentFormat`: Format kamus komponen.     *   - `componentDirPath`: Jalur direktori komponen.     */    output: ({ fileName, extension }) => `./${fileName}${extension}`,    /**     * Menunjukkan apakah komponen harus disimpan setelah ditransformasi.     * Dengan begitu, kompiler hanya perlu dijalankan sekali untuk mentransformasi aplikasi, lalu dapat dihapus.     */    saveComponents: false,    /**     * Masukkan konten saja dalam file yang dihasilkan. Berguna untuk output JSON i18next atau ICU MessageFormat per bahasa.     *     * - `output: ({ locale, key }) => `./locale/${locale}/${key}.json`,`     */    noMetadata: false,    /**     * Awalan kunci kamus     */    dictionaryKeyPrefix: "", // Tambahkan awalan opsional untuk kunci kamus yang diekstrak  },};
      npx intlayer test         # Uji apakah ada terjemahan yang hilang
      npx intlayer fill         # Isi terjemahan yang hilang
      npx intlayer extract