Strona głównaPiaskownicaPrezentacjaAplikacjaDokumentacjaBlog
    • Englishangielski
      EN
    • русскийrosyjski
      RU
    • 日本語japoński
      JA
    • françaisfrancuski
      FR
    • 한국어koreański
      KO
    • 中文chiński
      ZH
    • españolhiszpański
      ES
    • Deutschniemiecki
      DE
    • العربيةarabski
      AR
    • italianowłoski
      IT
    • British Englishangielski brytyjski
      EN-GB
    • portuguêsportugalski
      PT
    • हिन्दीhindi
      HI
    • Türkçeturecki
      TR
    • polskipolski
      PL
    • Indonesiaindonezyjski
      ID
    • Tiếng Việtwietnamski
      VI
    • українськаukraiński
      UK
    /
    Filtruj dokumenty według frameworka
    Alt+←
    Dlaczego Intlayer?
    Zacząć
    Koncepcja
    • Jak działa Intlayer
    • Konfiguracja
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Edytor wizualny
    • CMS
    • Integracja CI/CD
    • TłumaczenieLiczba mnogaWyliczenieWarunekPłećWstawieniePlikZagnieżdżanieMarkdownHTMLPobieranie funkcji
    • Plik dla każdej lokalizacji
    • Kompilator
    • Automatyczne wypełnianie
    • Testowanie
    • Optymalizacja pakietu
    Środowisko
    • Next.js 14 i App Router
      Next.js 15
      Next.js bez locale URL
      Next.js dan Page Router
      Kompilator
    • 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)
    Rozszerzenie VS Code
    Agent
    • Serwer MCP
    • Umiejętności agenta
    Wersje
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Zadaj pytanie
    1. Documentation
    2. Compiler
    Data utworzenia:2025-09-09Ostatnia aktualizacja:2026-03-12
    Prześlij ten dokument do swojego ulubionego asystenta AI
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI

    Historia wersji

    1. "Aktualizacja opcji kompilatora, dodanie wsparcia dla FilePathPattern"
      v8.2.09.03.2026
    2. "Aktualizacja opcji kompilatora"
      v8.1.725.02.2026
    3. "Wydanie kompilatora"
      v7.3.127.11.2025

    Treść tej strony została przetłumaczona przy użyciu sztucznej inteligencji.

    Zobacz ostatnią wersję oryginalnej treści w języku angielskim
    Edytuj tę dokumentację

    Jeśli masz pomysł na ulepszenie tej dokumentacji, zachęcamy do przesłania pull requesta na GitHubie.

    Link do dokumentacji na GitHubie
    Kopiuj

    Kopiuj dokument Markdown do schowka

    Intlayer Compiler | Zautomatyzowane wydobywanie treści dla i18n

    Czym jest Intlayer Compiler?

    Intlayer Compiler to potężne narzędzie zaprojektowane w celu automatyzacji procesu internacjonalizacji (i18n) w Twoich aplikacjach. Przeszukuje Twój kod źródłowy (JSX, TSX, Vue, Svelte) w poszukiwaniu deklaracji treści, wydobywa je i automatycznie generuje niezbędne pliki słowników. Pozwala to na utrzymanie treści współlokalnie z komponentami, podczas gdy Intlayer zajmuje się zarządzaniem i synchronizacją Twoich słowników.

    Dlaczego warto używać Intlayer Compiler?

    • Automatyzacja: Eliminuje ręczne kopiowanie i wklejanie treści do słowników.
    • Szybkość: Optymalizowane wydobywanie treści zapewnia szybki proces budowania.
    • Doświadczenie programisty: Zachowaj deklaracje treści dokładnie tam, gdzie są używane, co poprawia utrzymanie kodu.
    • Aktualizacje na żywo: Obsługuje Hot Module Replacement (HMR) dla natychmiastowej informacji zwrotnej podczas tworzenia aplikacji.

    Zobacz wpis na blogu Compiler vs. Declarative i18n dla głębszego porównania.

    Dlaczego nie używać Intlayer Compiler?

    Chociaż kompilator oferuje doskonałe doświadczenie "działa od razu", wprowadza również pewne kompromisy, o których powinieneś wiedzieć:

    • Niejednoznaczność heurystyczna: Kompilator musi zgadywać, co jest treścią skierowaną do użytkownika, a co logiką aplikacji (np. className="active", kody statusu, ID produktów). W złożonych bazach kodu może to prowadzić do fałszywych pozytywów lub pominiętych ciągów znaków, które wymagają ręcznych adnotacji i wyjątków.
    • Tylko statyczna ekstrakcja: Ekstrakcja oparta na kompilatorze opiera się na analizie statycznej. Ciągi znaków, które istnieją tylko w czasie wykonywania (kody błędów API, pola CMS itp.), nie mogą być odkryte ani przetłumaczone przez sam kompilator, więc nadal potrzebujesz uzupełniającej strategii i18n czasu wykonywania.

    Aby uzyskać głębsze porównanie architektoniczne, zobacz wpis na blogu Compiler vs. Declarative i18n.

    Jako alternatywę, aby zautomatyzować proces i18n przy zachowaniu pełnej kontroli nad treścią, Intlayer zapewnia również polecenie auto-ekstrakcji intlayer extract (zobacz dokumentację CLI) lub polecenie Intlayer: extract content to Dictionary z rozszerzenia Intlayer VS Code (zobacz dokumentację rozszerzenia VS Code).

    Użycie

    Vite

    Dla aplikacji opartych na Vite (React, Vue, Svelte itp.) najprostszym sposobem użycia kompilatora jest wtyczka vite-intlayer.

    Instalacja

    bash
    Kopiuj kod

    Skopiuj kod do schowka

    npm install vite-intlayer

    Konfiguracja

    Zaktualizuj swój plik vite.config.ts, aby dołączyć wtyczkę intlayerCompiler:

    vite.config.ts
    Kopiuj kod

    Skopiuj kod do schowka

    import { defineConfig } from "vite";import { intlayer, intlayerCompiler } from "vite-intlayer";export default defineConfig({ plugins: [   intlayer(),   intlayerCompiler(), // Dodaje wtyczkę kompilatora ],});

    See complete tutorial: Intlayer Compiler with Vite+React

    Wsparcie dla frameworków

    Wtyczka Vite automatycznie wykrywa i obsługuje różne typy plików:

    • React / JSX / TSX: Obsługiwane natywnie.
    • Vue: Wymaga @intlayer/vue-compiler.
    • Svelte: Wymaga @intlayer/svelte-compiler.

    Upewnij się, że zainstalowałeś odpowiedni pakiet kompilatora dla swojego frameworka:

    bash
    Kopiuj kod

    Skopiuj kod do schowka

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

    Next.js (Babel)

    Dla Next.js lub innych aplikacji opartych na Webpack z użyciem Babel, możesz skonfigurować kompilator za pomocą wtyczki @intlayer/babel.

    Instalacja

    bash
    Kopiuj kod

    Skopiuj kod do schowka

    npm install @intlayer/babel

    Konfiguracja

    Zaktualizuj swój plik babel.config.js (lub babel.config.json), aby uwzględnić wtyczkę ekstrakcji. Udostępniamy pomocniczą funkcję getExtractPluginOptions, która automatycznie ładuje Twoją konfigurację Intlayer.

    babel.config.js
    Kopiuj kod

    Skopiuj kod do schowka

    const { intlayerExtractBabelPlugin, intlayerOptimizeBabelPlugin, getExtractPluginOptions, getOptimizePluginOptions,} = require("@intlayer/babel");module.exports = { presets: ["next/babel"], plugins: [   // Wyodrębnij zawartość z komponentów do słowników   [intlayerExtractBabelPlugin, getExtractPluginOptions()],   // Optymalizuj importy, zastępując useIntlayer bezpośrednimi importami słowników   [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()], ],};

    Ta konfiguracja zapewnia, że zawartość zadeklarowana w Twoich komponentach jest automatycznie wyodrębniana i używana do generowania słowników podczas procesu budowania.

    See complete tutorial: Intlayer Compiler with Next.js

    Własna konfiguracja

    Aby dostosować zachowanie kompilatora, możesz zaktualizować plik intlayer.config.ts w katalogu głównym swojego projektu.

    intlayer.config.ts
    Kopiuj kod

    Skopiuj kod do schowka

    import { type IntlayerConfig, Locales } from "intlayer";const config: IntlayerConfig = {  compiler: {    /**     * Wskazuje, czy kompilator powinien być włączony.     * Ustaw na 'build-only', aby pominąć kompilator podczas programowania i przyspieszyć czas uruchamiania.     */    enabled: true,    /**     * Definiuje ścieżkę plików wyjściowych. Zastępuje `outputDir`.     *     * - Ścieżki zaczynające się od `./` są rozwiązywane względem katalogu komponentu.     * - Ścieżki zaczynające się od `/` są rozwiązywane względem katalogu głównego projektu (`baseDir`).     *     * - Uwzględnienie zmiennej `{{locale}}` w ścieżce umożliwi generowanie słowników oddzielonych według języka.     *     * Przykłady:     * ```ts     * {     *   // Utwórz wielojęzyczne pliki .content.ts obok komponentu     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // Równoważne użycie szablonu ciągu znaków     * }     * ```     *     * ```ts     * {     *   // Utwórz scentralizowane pliki JSON według języka w katalogu głównym projektu     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // Równoważne użycie szablonu ciągu znaków     * }     * ```     *     * Lista zmiennych:     *   - `fileName`: Nazwa pliku.     *   - `key`: Klucz zawartości.     *   - `locale`: Język zawartości.     *   - `extension`: Rozszerzenie pliku.     *   - `componentFileName`: Nazwa pliku komponentu.     *   - `componentExtension`: Rozszerzenie pliku komponentu.     *   - `format`: Format słownika.     *   - `componentFormat`: Format słownika komponentu.     *   - `componentDirPath`: Ścieżka do katalogu komponentu.     */    output: ({ fileName, extension }) => `./${fileName}${extension}`,    /**     * Wskazuje, czy komponenty powinny być zapisywane po transformacji.     * W ten sposób kompilator można uruchomić tylko raz, aby przetransformować aplikację, a następnie go usunąć.     */    saveComponents: false,    /**     * Wstaw tylko zawartość do wygenerowanego pliku. Przydatne dla wyjścia JSON i18next lub ICU MessageFormat na język.     *     * - `output: ({ locale, key }) => `./locale/${locale}/${key}.json`,`     */    noMetadata: false,    /**     * Prefiks klucza słownika     */    dictionaryKeyPrefix: "", // Dodaj opcjonalny prefiks dla wyekstrahowanych kluczy słownika  },};

    Odniesienie do konfiguracji kompilatora

    Następujące właściwości można skonfigurować w bloku compiler pliku intlayer.config.ts:

    • enabled:

      • Typ: boolean | 'build-only'
      • Domyślny: true
      • Opis: Wskazuje, czy kompilator powinien być włączony.
    • dictionaryKeyPrefix:

      • Typ: string
      • Domyślny: ''
      • Opis: Prefiks dla wyekstrahowanych kluczy słownika.
    • transformPattern:

      • Typ: string | string[]
      • Domyślny: ['**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}', '!**/node_modules/**']
      • Opis: (Zdeprecjonowane: użyj build.traversePattern zamiast tego) Wzorce do przeszukiwania kodu w celu optymalizacji.
    • excludePattern:

      • Typ: string | string[]
      • Domyślny: ['**/node_modules/**']
      • Opis: (Zdeprecjonowane: użyj build.traversePattern zamiast tego) Wzorce do wykluczenia z optymalizacji.
    • output:

      • Typ: FilePathPattern
      • Domyślny: ({ key }) => 'compiler/${key}.content.json'
      • Opis: Definiuje ścieżkę plików wyjściowych. Zastępuje outputDir. Obsługuje zmienne dynamiczne, takie jak {{locale}}, {{key}}, {{fileName}}, {{extension}}, {{format}}, {{dirPath}}, {{componentFileName}}, {{componentExtension}}, {{componentFormat}}. Można ustawić jako ciąg znaków w formacie 'my/{{var}}/path' lub jako funkcję.
      • Uwaga: Ścieżki ./**/* są rozwiązywane względem komponentu. Ścieżki /**/* są rozwiązywane względem baseDir Intlayer.
      • Uwaga: Jeśli język jest zdefiniowany w ścieżce, słowniki będą generowane na język.
      • Przykład: output: ({ locale, key }) => 'compiler/${locale}/${key}.json'
    • noMetadata:

      • Typ: boolean
      • Domyślny: false
      • Opis: Wskazuje, czy metadane powinny być zapisywane w pliku. Jeśli true, kompilator nie będzie zapisywał metadanych słowników (klucza, otoczki zawartości). Przydatne dla wyjść JSON i18next lub ICU MessageFormat na lokalizację.
      • Uwaga: Przydatne w przypadku korzystania z wtyczki loadJSON.
      • Przykład: Jeśli true: json { "key": "value" } Jeśli false: json { "key": "value", "content": { "key": "value" } }
    • saveComponents:

      • Typ: boolean
      • Domyślny: false
      • Opis: Wskazuje, czy komponenty powinny być zapisywane po transformacji.

    Uzupełnij brakujące tłumaczenia

    Intlayer udostępnia narzędzie CLI, które pomaga uzupełnić brakujące tłumaczenia. Możesz użyć polecenia intlayer, aby przetestować i uzupełnić brakujące tłumaczenia w swoim kodzie.

    bash
    Kopiuj kod

    Skopiuj kod do schowka

    npx intlayer test         # Sprawdź, czy brakuje tłumaczeń
    bash
    Kopiuj kod

    Skopiuj kod do schowka

    npx intlayer fill         # Uzupełnij brakujące tłumaczenia

    Ekstrakcja

    Intlayer udostępnia narzędzie CLI do wyodrębniania treści z Twojego kodu. Możesz użyć polecenia intlayer extract, aby wyodrębnić treść ze swojego kodu.

    bash
    Kopiuj kod

    Skopiuj kod do schowka

    npx intlayer extract
    Więcej szczegółów znajdziesz w dokumentacji CLI
    Plik dla każdej lokalizacji
    Automatyczne wypełnianie
    Alt+→

    Na tej stronie

      Dyskusje są anonimowe i regularnie przeglądane w celu rozwiązania typowych problemów. Podziel się pomysłami na funkcje, opinią o dokumentacji lub czymkolwiek związanym z Intlayer, wykorzystujemy te informacje do kształtowania naszej mapy drogowej i ulepszania produktu.

      npm install vite-intlayer
      import { defineConfig } from "vite";import { intlayer, intlayerCompiler } from "vite-intlayer";export default defineConfig({ plugins: [   intlayer(),   intlayerCompiler(), // Dodaje wtyczkę kompilatora ],});
      # Dla Vuenpm install @intlayer/vue-compiler# Dla Sveltenpm install @intlayer/svelte-compiler
      npm install @intlayer/babel
      const { intlayerExtractBabelPlugin, intlayerOptimizeBabelPlugin, getExtractPluginOptions, getOptimizePluginOptions,} = require("@intlayer/babel");module.exports = { presets: ["next/babel"], plugins: [   // Wyodrębnij zawartość z komponentów do słowników   [intlayerExtractBabelPlugin, getExtractPluginOptions()],   // Optymalizuj importy, zastępując useIntlayer bezpośrednimi importami słowników   [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()], ],};
      import { type IntlayerConfig, Locales } from "intlayer";const config: IntlayerConfig = {  compiler: {    /**     * Wskazuje, czy kompilator powinien być włączony.     * Ustaw na 'build-only', aby pominąć kompilator podczas programowania i przyspieszyć czas uruchamiania.     */    enabled: true,    /**     * Definiuje ścieżkę plików wyjściowych. Zastępuje `outputDir`.     *     * - Ścieżki zaczynające się od `./` są rozwiązywane względem katalogu komponentu.     * - Ścieżki zaczynające się od `/` są rozwiązywane względem katalogu głównego projektu (`baseDir`).     *     * - Uwzględnienie zmiennej `{{locale}}` w ścieżce umożliwi generowanie słowników oddzielonych według języka.     *     * Przykłady:     * ```ts     * {     *   // Utwórz wielojęzyczne pliki .content.ts obok komponentu     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // Równoważne użycie szablonu ciągu znaków     * }     * ```     *     * ```ts     * {     *   // Utwórz scentralizowane pliki JSON według języka w katalogu głównym projektu     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // Równoważne użycie szablonu ciągu znaków     * }     * ```     *     * Lista zmiennych:     *   - `fileName`: Nazwa pliku.     *   - `key`: Klucz zawartości.     *   - `locale`: Język zawartości.     *   - `extension`: Rozszerzenie pliku.     *   - `componentFileName`: Nazwa pliku komponentu.     *   - `componentExtension`: Rozszerzenie pliku komponentu.     *   - `format`: Format słownika.     *   - `componentFormat`: Format słownika komponentu.     *   - `componentDirPath`: Ścieżka do katalogu komponentu.     */    output: ({ fileName, extension }) => `./${fileName}${extension}`,    /**     * Wskazuje, czy komponenty powinny być zapisywane po transformacji.     * W ten sposób kompilator można uruchomić tylko raz, aby przetransformować aplikację, a następnie go usunąć.     */    saveComponents: false,    /**     * Wstaw tylko zawartość do wygenerowanego pliku. Przydatne dla wyjścia JSON i18next lub ICU MessageFormat na język.     *     * - `output: ({ locale, key }) => `./locale/${locale}/${key}.json`,`     */    noMetadata: false,    /**     * Prefiks klucza słownika     */    dictionaryKeyPrefix: "", // Dodaj opcjonalny prefiks dla wyekstrahowanych kluczy słownika  },};
      npx intlayer test         # Sprawdź, czy brakuje tłumaczeń
      npx intlayer fill         # Uzupełnij brakujące tłumaczenia
      npx intlayer extract