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. Koncepcja
    3. Konfiguracja
    Data utworzenia:2024-08-13Ostatnia aktualizacja:2026-05-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. "Dodano obsługę dostawcy LM Studio"
      v8.9.412.05.2026
    2. "Dodano opcje `prune` i `minify` do konfiguracji budowania"
      v8.7.08.04.2026
    3. "Dodano opcję `currentDomain`"
      v8.7.03.04.2026
    4. "Dodano obsługę zapisu obiektowego na poziomie lokali dla 'compiler.output' i 'dictionary.fill'"
      v8.4.020.03.2026
    5. "Przeniesiono 'baseDir' z konfiguracji 'content' do konfiguracji 'system'"
      v8.3.011.03.2026
    6. "Zaktualizowano opcje kompilatora, dodano obsługę 'output' i 'noMetadata'"
      v8.2.09.03.2026
    7. "Zaktualizowano opcje kompilatora"
      v8.1.725.02.2026
    8. "Dodano opcję kompilatora 'build-only' i prefiks klucza słownika"
      v8.1.523.02.2026
    9. "Dodano obsługę dostawców Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face i Together AI"
      v8.0.612.02.2026
    10. "Dodano `dataSerialization` do konfiguracji AI"
      v8.0.56.02.2026
    11. "Zmiana nazwy trybu importu `live` na `fetch`, aby lepiej opisać mechanizm."
      v8.0.024.01.2026
    12. "Przeniesiono konfigurację budowania `importMode` do konfiguracji `dictionary`."
      v8.0.022.01.2026
    13. "Dodano opcję `rewrite` do konfiguracji routingu"
      v8.0.022.01.2026
    14. "Oddzielono konfigurację systemową od konfiguracji treści. Przeniesiono ścieżki wewnętrzne do właściwości `system`. Dodano `codeDir`, aby oddzielić pliki treści od przekształceń kodu."
      v8.0.018.01.2026
    15. "Dodano opcje słownika `location` i `schema`"
      v8.0.018.01.2026
    16. "Dodano obsługę formatów plików JSON5 i JSONC"
      v7.5.110.01.2026
    17. "Dodano opcję `buildMode`"
      v7.5.017.12.2025
    18. "Dodano konfigurację `dictionary`"
      v7.0.025.10.2025
    19. "Zastąpiono `middleware` przez konfigurację `routing`"
      v7.0.021.10.2025
    20. "Dodano opcję `formatCommand`"
      v7.0.012.10.2025
    21. "Zaktualizowano opcję `excludedPath`"
      v6.2.012.10.2025
    22. "Dodano opcję `outputFormat`"
      v6.0.223.09.2025
    23. "Usunięto pola `dictionaryOutput` i `i18nextResourcesDir`"
      v6.0.021.09.2025
    24. "Dodano tryb importu `live`"
      v6.0.016.09.2025
    25. "Zastąpiono pole `hotReload` przez `liveSync` oraz dodano pola `liveSyncPort`, `liveSyncURL`"
      v6.0.04.09.2025
    26. "Zastąpiono `activateDynamicImport` przez opcję `importMode`"
      v5.6.125.07.2025
    27. "Zmieniono domyślny `contentDir` z `['src']` na `['.']`"
      v5.6.013.07.2025
    28. "Dodano komendy `docs`"
      v5.5.1129.06.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

    Dokumentacja konfiguracji Intlayer

    Przegląd

    Pliki konfiguracyjne Intlayer pozwalają na dostosowanie różnych aspektów wtyczki, takich jak internacjonalizacja (i18n), middleware i zarządzanie treścią. Ten dokument zawiera szczegółowy opis każdej właściwości w konfiguracji.


    Spis treści


    Obsługa plików konfiguracyjnych

    Intlayer akceptuje formaty plików konfiguracyjnych JSON, JS, MJS i TS:

    • intlayer.config.ts
    • intlayer.config.js
    • intlayer.config.json
    • intlayer.config.json5
    • intlayer.config.jsonc
    • intlayer.config.cjs
    • intlayer.config.mjs
    • .intlayerrc

    Przykładowy plik konfiguracyjny

    intlayer.config.ts
    Kopiuj kod

    Skopiuj kod do schowka

    import { Locales, type IntlayerConfig } from "intlayer";import { nextjsRewrite } from "intlayer/routing";import { z } from "zod";/** * Przykład pliku konfiguracyjnego Intlayer pokazujący wszystkie dostępne opcje. */const config: IntlayerConfig = {  /**   * Konfiguracja ustawień internacjonalizacji.   */  internationalization: {    /**     * Lista obsługiwanych lokali w aplikacji.     * Domyślnie: [Locales.ENGLISH]     */    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    /**     * Lista wymaganych lokali, które muszą być zdefiniowane w każdym słowniku.     * Jeśli pusta, wszystkie locale są wymagane w trybie `strict`.     * Domyślnie: []     */    requiredLocales: [Locales.ENGLISH],    /**     * Poziom rygoru dla treści zinternacjonalizowanej.     * - "strict": Błąd, jeśli brakuje zadeklarowanych lokali lub używane są niezadeklarowane locale.     * - "inclusive": Ostrzeżenia, jeśli brakuje zadeklarowanych lokali.     * - "loose": Akceptuje każde istniejące locale.     * Domyślnie: "inclusive"     */    strictMode: "inclusive",    /**     * Domyślne locale używane jako zapasowe, gdy żądane locale nie zostanie znalezione.     * Domyślnie: Locales.ENGLISH     */    defaultLocale: Locales.ENGLISH,  },  /**   * Ustawienia kontrolujące operacje na słownikach i zachowanie zapasowe.   */  dictionary: {    /**     * Kontroluje sposób importowania słowników.     * - "static": Importowane statycznie w czasie budowania.     * - "dynamic": Importowane dynamicznie za pomocą Suspense.     * - "fetch": Pobierane dynamicznie przez API Live Sync.     * Domyślnie: "static"     */    importMode: "static",    /**     * Strategia automatycznego uzupełniania brakujących tłumaczeń za pomocą AI.     * Może być wartością logiczną lub wzorcem ścieżki do zapisywania uzupełnionej treści.     * Domyślnie: true     */    fill: true,    /**     * Fizyczna lokalizacja plików słowników.     * - "local": Przechowywane w lokalnym systemie plików.     * - "remote": Przechowywane w Intlayer CMS.     * - "hybrid": Przechowywane zarówno lokalnie, jak i w Intlayer CMS.     * - "plugin" (lub dowolny ciąg znaków): Dostarczane przez wtyczkę lub niestandardowe źródło.     * Domyślnie: "local"     */    location: "local",    /**     * Czy automatycznie przekształcać treść (np. Markdown do HTML).     * Domyślnie: false     */    contentAutoTransformation: false,  },  /**   * Konfiguracja routingu i middleware.   */  routing: {    /**     * Strategia routingu lokali.     * - "prefix-no-default": Prefiks dla wszystkich języków z wyjątkiem domyślnego (np. /dashboard, /fr/dashboard).     * - "prefix-all": Prefiks dla wszystkich języków (np. /en/dashboard, /fr/dashboard).     * - "no-prefix": Locale nie jest widoczne w adresie URL.     * - "search-params": Użycie ?locale=...     * Domyślnie: "prefix-no-default"     */    mode: "prefix-no-default",    /**     * Miejsce przechowywania locale wybranego przez użytkownika.     * Opcje: 'cookie', 'localStorage', 'sessionStorage', 'header' lub ich tablica.     * Domyślnie: ['cookie', 'header']     */    storage: ["cookie", "header"],    /**     * Bazowa ścieżka dla adresów URL aplikacji.     * Domyślnie: ""     */    basePath: "",    /**     * Własne reguły przepisywania URL dla określonych ścieżek zlokalizowanych.     */    rewrite: nextjsRewrite({      "/[locale]/about": {        en: "/[locale]/about",        fr: "/[locale]/a-propos",      },    }),    /**     * Mapuje locale na nazwy hostów domen dla routingu opartego na domenach.     * Adresy URL dla tych lokali będą absolutne (np. https://intlayer.cn/).     * Domena implikuje locale, więc do ścieżki nie jest dodawany żaden prefiks locale.     * Domyślnie: undefined     */    domains: {      en: "intlayer.org",      zh: "intlayer.cn",    },  },  /**   * Ustawienia wyszukiwania i przetwarzania plików treści.   */  content: {    /**     * Rozszerzenia plików do skanowania w poszukiwaniu słowników.     * Domyślnie: ['.content.ts', '.content.js', '.content.json' itp.]     */    fileExtensions: [".content.ts", ".content.js", ".content.json"],    /**     * Katalogi, w których znajdują się pliki .content.     * Domyślnie: ["."]     */    contentDir: ["src"],    /**     * Katalog kodu źródłowego.     * Używany do optymalizacji budowania i przekształceń kodu.     * Domyślnie: ["."]     */    codeDir: ["src"],    /**     * Wzorce do wykluczenia ze skanowania.     * Domyślnie: ['node_modules', '.intlayer' itp.]     */    excludedPath: ["node_modules"],    /**     * Czy śledzić zmiany i regenerować słowniki podczas deweloperki.     * Domyślnie: true w trybie deweloperskim     */    watch: true,    /**     * Polecenie do formatowania nowo utworzonych / zaktualizowanych plików .content.     */    formatCommand: 'npx prettier --write "{{file}}"',  },  /**   * Konfiguracja edytora wizualnego.   */  editor: {    /**     * Czy edytor wizualny jest włączony.     * Domyślnie: false     */    enabled: true,    /**     * URL Twojej aplikacji do walidacji źródła.     * Domyślnie: ""     */    applicationURL: "http://localhost:3000",    /**     * Port lokalnego serwera edytora.     * Domyślnie: 8000     */    port: 8000,    /**     * Publiczny URL edytora.     * Domyślnie: "http://localhost:8000"     */    editorURL: "http://localhost:8000",    /**     * URL Intlayer CMS.     * Domyślnie: "https://app.intlayer.org"     */    cmsURL: "https://app.intlayer.org",    /**     * URL serwera API backendu.     * Domyślnie: "https://back.intlayer.org"     */    backendURL: "https://back.intlayer.org",    /**     * Czy włączyć synchronizację treści w czasie rzeczywistym.     * Domyślnie: false     */    liveSync: true,  },  /**   * Ustawienia tłumaczenia i generowania opartego na AI.   */  ai: {    /**     * Wybrany dostawca AI.     * Opcje: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'     * Domyślnie: 'openai'     */    provider: "openai",    /**     * Model dostawcy do użycia.     */    model: "gpt-4o",    /**     * Klucz API dostawcy.     */    apiKey: process.env.OPENAI_API_KEY,    /**     * Globalny kontekst ułatwiający AI generowanie tłumaczeń.     */    applicationContext: "To jest aplikacja do rezerwacji podróży.",    /**     * Bazowy URL dla API AI.     */    baseURL: "http://localhost:3000",    /**     * Serializacja danych (Data Serialization)     *     * Opcje:     * - "json": domyślnie, niezawodna; zużywa więcej tokenów.     * - "toon": szybciej, mniej tokenów, mniej spójna niż JSON.     *     * Domyślnie: "json"     */    dataSerialization: "json",  },  /**   * Ustawienia budowania i optymalizacji.   */  build: {    /**     * Tryb wykonywania budowania.     * - "auto": Automatyczne budowanie podczas budowania aplikacji.     * - "manual": Wymaga jawnego polecenia budowania.     * Domyślnie: "auto"     */    mode: "auto",    /**     * Czy optymalizować wynikowy pakiet poprzez usuwanie nieużywanych słowników.     * Domyślnie: true w środowisku produkcyjnym     */    optimize: true,    /**     * Minimalizuj słowniki, aby zmniejszyć rozmiar pakietu.     * Domyślnie: false     *     * Uwaga:     * - Ta opcja zostanie zignorowana, jeśli `optimize` jest wyłączone.     * - Ta opcja zostanie zignorowana, jeśli `editor.enabled` jest ustawione na true.     */    minify: true,    /**     * Usuń nieużywane klucze w słownikach.     * Domyślnie: false     *     * Uwaga:     * - Ta opcja zostanie zignorowana, jeśli `optimize` jest wyłączone.     */    purge: true,    /**     * Format wyjściowy generowanych plików słowników.     * Domyślnie: ['cjs', 'esm']     */    outputFormat: ["cjs", "esm"],    /**     * Czy przeprowadzać sprawdzanie typów TypeScript podczas budowania.     * Domyślnie: false     */    checkTypes: false,  },  /**   * Konfiguracja loggera.   */  log: {    /**     * Tryb logowania.     * - "default": Standardowe logowanie.     * - "verbose": Szczegółowe logowanie do debugowania.     * - "disabled": Wyłącz logowanie.     * Domyślnie: "default"     */    mode: "default",    /**     * Prefiks dla wszystkich wiadomości w logach.     * Domyślnie: "[intlayer]"     */    prefix: "[intlayer]",  },  /**   * Konfiguracja systemowa (do zaawansowanych zastosowań)   */  system: {    /**     * Katalog, w którym przechowywane są zlokalizowane słowniki.     */    dictionariesDir: ".intlayer/dictionary",    /**     * Katalog dla module augmentation.     */    moduleAugmentationDir: ".intlayer/types",    /**     * Katalog dla niepołączonych słowników.     */    unmergedDictionariesDir: ".intlayer/unmerged_dictionary",    /**     * Katalog typów słowników.     */    typesDir: ".intlayer/types",    /**     * Katalog głównych plików aplikacji.     */    mainDir: ".intlayer/main",    /**     * Katalog skompilowanych plików konfiguracyjnych.     */    configDir: ".intlayer/config",    /**     * Katalog plików cache.     */    cacheDir: ".intlayer/cache",  },  /**   * Konfiguracja kompilatora (do zaawansowanych zastosowań)   */  compiler: {    /**     * Czy kompilator jest włączony.     *     * - false: wyłącz kompilator.     * - true: włącz kompilator.     * - "build-only": pomiń kompilator podczas deweloperki dla szybszego startu.     *     * Domyślnie: false     */    enabled: true,    /**     * Definiuje ścieżkę do pliku wyjściowego. Zastępuje `outputDir`.     *     * - Ścieżki `./` są rozwiązywane względem katalogu komponentu.     * - Ścieżki `/` są rozwiązywane względem katalogu bazowego projektu (`baseDir`).     *     * - Obecność zmiennej `{{locale}}` w ścieżce wyzwala generowanie osobnych słowników na język.     *     * Przykłady:     * ```ts     * {     *   // Tworzy wielojęzyczne pliki .content.ts obok komponentu     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // To samo poprzez ciąg szablonowy     * }     * ```     *     * ```ts     * {     *   // Tworzy scentralizowane pliki JSON na język w korzeniu projektu     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // To samo poprzez ciąg szablonowy     * }     * ```     *     * Lista zmiennych:     *   - `fileName`: Nazwa pliku.     *   - `key`: Klucz treści.     *   - `locale`: Locale treś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: ({ locale, key }) => `compiler/${locale}/${key}.json`,    /**     * Czy zapisać komponenty po ich przekształceniu.     * W ten sposób można uruchomić kompilator raz, aby przekształcić aplikację, a następnie go usunąć.     */    saveComponents: false,    /**     * Pozostaw tylko treść w wygenerowanym pliku. Przydatne dla formatów i18next lub ICU MessageFormat JSON na język.     */    noMetadata: false,    /**     * Prefiks klucza słownika     */    dictionaryKeyPrefix: "", // Dodaje opcjonalny prefiks do wyodrębnionych kluczy słownika  },  /**   * Własne schematy do walidacji struktury słowników.   */  schemas: {    "my-schema": z.object({      title: z.string(),    }),  },  /**   * Konfiguracja wtyczek.   */  plugins: [],};export default config;

    Odniesienia do konfiguracji

    Poniższe sekcje szczegółowo opisują różne właściwości konfiguracji dostępne w Intlayer.


    Konfiguracja internacjonalizacji (Internationalization)

    Definiuje ustawienia związane z internacjonalizacją, w tym dostępne locale i domyślne locale.

    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Pole Opis Typ Domyślnie Przykład Uwagi
    locales Lista obsługiwanych lokali w aplikacji. string[] [Locales.ENGLISH] ['en', 'fr', 'es']
    requiredLocales Lista wymaganych lokali w aplikacji. string[] [] [] • Jeśli pusta, wszystkie locale są wymagane w trybie strict.
    • Upewnij się, że wymagane locale są również zdefiniowane w polu locales.
    strictMode Zapewnia silną implementację zinternacjonalizowanej treści za pomocą TypeScript. string 'inclusive' • Jeśli "strict": Każde zadeklarowane locale musi być zdefiniowane dla funkcji t - błąd w przypadku braku lub niezadeklarowanego locale.
    • Jeśli "inclusive": Ostrzeżenie dla brakujących lokali, ale pozwala na użycie istniejących niezadeklarowanych lokali.
    • Jeśli "loose": Akceptuje każde istniejące locale.
    defaultLocale Domyślne locale używane jako zapasowe, gdy żądane locale nie zostanie znalezione. string Locales.ENGLISH 'en' Używane do określenia locale, jeśli żadne nie jest określone w URL, plikach cookie lub nagłówku.

    Konfiguracja edytora (Editor)

    Definiuje ustawienia edytora wizualnego, w tym port serwera i status aktywacji.

    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Pole Opis Typ Domyślnie Przykład Uwagi
    applicationURL URL Twojej aplikacji. string undefined 'http://localhost:3000'
    'https://example.com'
    process.env.INTLAYER_EDITOR_URL
    • Używane do ograniczania źródła edytora ze względów bezpieczeństwa.
    • Jeśli ustawione na '*', edytor jest dostępny z dowolnego źródła.
    port Port serwera edytora wizualnego. number 8000
    editorURL URL serwera edytora. string 'http://localhost:8000' 'http://localhost:3000'
    'https://example.com'
    process.env.INTLAYER_EDITOR_URL
    • Używane do ograniczania źródeł, które mogą wchodzić w interakcję z aplikacją.
    • Jeśli ustawione na '*', dostępne z dowolnego źródła.
    • Należy to ustawić, jeśli port zostanie zmieniony lub edytor jest hostowany na innej domenie.
    cmsURL URL Intlayer CMS. string 'https://app.intlayer.org' 'https://app.intlayer.org'
    backendURL URL serwera backendu. string https://back.intlayer.org http://localhost:4000
    enabled Czy aplikacja powinna wchodzić w interakcję z edytorem wizualnym. boolean false process.env.NODE_ENV !== 'production' • Jeśli false, edytor nie będzie mógł wchodzić w interakcję z aplikacją.
    • Wyłączenie tego dla określonych środowisk zwiększa bezpieczeństwo.
    clientId Pozwala pakietom intlayer na uwierzytelnianie w backendzie za pomocą oAuth2. Przejdź do intlayer.org/project, aby uzyskać token dostępu. string |
    undefined
    undefined Musi pozostać tajne; używaj zmiennych środowiskowych.
    clientSecret Pozwala pakietom intlayer na uwierzytelnianie w backendzie za pomocą oAuth2. Przejdź do intlayer.org/project, aby uzyskać token dostępu. string |
    undefined
    undefined Musi pozostać tajne; używaj zmiennych środowiskowych.
    dictionaryPriorityStrategy Strategia priorytetu słowników, gdy obecne są zarówno słowniki lokalne, jak i zdalne. string 'local_first' 'distant_first' • 'distant_first': Słowniki zdalne mają pierwszeństwo przed lokalnymi.
    • 'local_first': Słowniki lokalne mają pierwszeństwo przed zdalnymi.
    liveSync Czy serwer aplikacji powinien natychmiast przeładowywać treść po wykryciu zmian w
    CMS
    edytorze wizualnym
    serwerze backendu.
    boolean true true • Aktualizuje treść strony aplikacji po dodaniu/aktualizacji słowników.
    • Live Sync pobiera treść z innego serwera, co może nieznacznie wpłynąć na wydajność.
    • Zaleca się hostowanie obu na tej samej maszynie.
    liveSyncPort Port serwera Live Sync. number 4000 4000
    liveSyncURL URL serwera Live Sync. string 'http://localhost:{liveSyncPort}' 'https://example.com' Domyślnie wskazuje na localhost; można zmienić na zdalny serwer Live Sync.

    Konfiguracja routingu (Routing)

    Ustawienia kontrolujące zachowanie routingu, w tym strukturę URL, przechowywanie locale i obsługę middleware.

    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Pole Opis Typ Domyślnie Przykład Uwagi
    mode Tryb struktury URL do zarządzania locale. 'prefix-no-default' |
    'prefix-all' |
    'no-prefix' |
    'search-params'
    'prefix-no-default' 'prefix-no-default': /dashboard (en) lub /fr/dashboard (fr). 'prefix-all': /en/dashboard. 'no-prefix': locale zarządzane inaczej. 'search-params': /dashboard?locale=fr Nie wpływa na zarządzanie plikami cookie ani pamięcią lokalną.
    storage Konfiguracja przechowywania locale u klienta. false |
    'cookie' |
    'localStorage' |
    'sessionStorage' |
    'header' |
    CookiesAttributes |
    StorageAttributes |
    Array
    ['cookie', 'header'] 'localStorage'
    [{ type: 'cookie', name: 'custom-locale', secure: true }]
    Zobacz tabelę opcji przechowywania poniżej.
    basePath Bazowa ścieżka dla adresów URL aplikacji. string '' '/my-app' Jeśli Twoja aplikacja znajduje się pod adresem https://example.com/my-app, basePath to '/my-app', co wskazuje na URL https://example.com/my-app/en.
    rewrite Własne reguły przepisywania URL w celu zmiany domyślnego trybu routingu dla określonych ścieżek. Obsługuje parametry dynamiczne [param]. Record<string, StrictModeLocaleMap<string>> undefined Zobacz przykład poniżej • Reguły routingu mają wyższy priorytet niż mode.
    • Działa z Next.js i Vite.
    • getLocalizedUrl() automatycznie stosuje pasujące reguły.
    • Zobacz Własne przepisywanie URL.
    domains Mapuje locale na nazwy hostów domen dla routingu opartego na domenach. Gdy ustawione, adresy URL dla danego locale używają tej domeny jako bazy (absolutny URL) i do ścieżki nie jest dodawany prefiks locale. Partial<Record<Locale, string>> undefined { zh: 'intlayer.zh', fr: 'intlayer.org' } • Domyślnym protokołem jest https://, gdy nie jest zawarty w nazwie hosta.
    • Sama domena identyfikuje locale, więc prefiks /zh/ nie jest dodawany.
    • getLocalizedUrl('/', 'zh') zwraca https://intlayer.zh/.

    Przykład rewrite:

    typescript
    Kopiuj kod

    Skopiuj kod do schowka

    routing: {  mode: "prefix-no-default", // Strategia zapasowa  rewrite: nextjsRewrite({    "/about": {      en: "/about",      fr: "/a-propos",    },    "/product/[slug]": {      en: "/product/[slug]",      fr: "/produit/[slug]",    },    "/blog/[category]/[id]": {      en: "/blog/[category]/[id]",      fr: "/journal/[category]/[id]",    },  }),}

    Opcje przechowywania (Storage)

    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Wartość Uwagi Opis
    'cookie' • Zapewnij odpowiednią zgodę użytkownika zgodnie z RODO.
    • Można dostosować przez CookiesAttributes ({ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }).
    Przechowuje locale w pliku cookie - dostępne zarówno u klienta, jak i na serwerze.
    'localStorage' • Nie wygasa, dopóki nie zostanie usunięte jawnie.
    • Intlayer Proxy nie ma do niego dostępu.
    • Można dostosować przez StorageAttributes ({ type: 'localStorage', name: 'custom-locale' }).
    Przechowuje locale w przeglądarce bez daty wygaśnięcia - tylko klient.
    'sessionStorage' • Usuwane po zamknięciu karty/okna przeglądarki.
    • Intlayer Proxy nie ma do niego dostępu.
    • Można dostosować przez StorageAttributes ({ type: 'sessionStorage', name: 'custom-locale' }).
    Przechowuje locale na czas sesji strony - tylko klient.
    'header' • Przydatne przy wywołaniach API.
    • Klient nie ma do niego dostępu.
    • Można dostosować przez StorageAttributes ({ type: 'header', name: 'custom-locale' }).
    Przechowuje lub przekazuje locale przez nagłówki HTTP - tylko serwer.

    Atrybuty Cookie (Cookies Attributes)

    Przy użyciu przechowywania w plikach cookie można skonfigurować dodatkowe atrybuty:

    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Pole Opis Typ
    name Nazwa pliku cookie. Domyślnie: 'INTLAYER_LOCALE' string
    domain Domena pliku cookie. Domyślnie: undefined string
    path Ścieżka pliku cookie. Domyślnie: undefined string
    secure Wymagane HTTPS. Domyślnie: undefined boolean
    httpOnly Flaga HTTP-only. Domyślnie: undefined boolean
    sameSite Polityka SameSite. 'strict' |
    'lax' |
    'none'
    expires Data wygaśnięcia lub liczba dni. Domyślnie: undefined Date |
    number

    Atrybuty przechowywania (Storage Attributes)

    Przy użyciu localStorage lub sessionStorage:

    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Pole Opis Typ
    type Typ przechowywania. 'localStorage' |
    'sessionStorage'
    name Nazwa klucza w pamięci. Domyślnie: 'INTLAYER_LOCALE' string

    Przykłady konfiguracji

    Oto kilka typowych konfiguracji korzystających z nowej struktury routingu v7:

    Podstawowa konfiguracja (Standard):

    typescript
    Kopiuj kod

    Skopiuj kod do schowka

    import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "prefix-no-default",    storage: "localStorage",    basePath: "",  },};export default config;

    Konfiguracja zgodna z RODO:

    typescript
    Kopiuj kod

    Skopiuj kod do schowka

    import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "prefix-no-default",    storage: [      {        type: "localStorage",        name: "user-locale",      },      {        type: "cookie",        name: "user-locale",        secure: true,        sameSite: "strict",        httpOnly: false,      },    ],    basePath: "",  },};export default config;

    Tryb parametrów wyszukiwania (Search Params):

    typescript
    Kopiuj kod

    Skopiuj kod do schowka

    import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "search-params",    storage: "localStorage",    basePath: "",  },};export default config;

    Tryb bez prefiksu (No-Prefix) z własnym miejscem przechowywania:

    typescript
    Kopiuj kod

    Skopiuj kod do schowka

    import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "no-prefix",    storage: {      type: "sessionStorage",      name: "app-locale",    },    basePath: "/my-app",  },};export default config;

    Własne przepisywanie URL ze ścieżkami dynamicznymi:

    typescript
    Kopiuj kod

    Skopiuj kod do schowka

    // intlayer.config.tsimport { nextjsRewrite } from "intlayer/routing";const config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr"],    defaultLocale: "en",  },  routing: {    mode: "prefix-no-default", // Rezerwowa strategia dla nieprzepisanych ścieżek    storage: "cookie",    rewrite: nextjsRewrite({      "/about": {        en: "/about",        fr: "/a-propos",      },      "/product/[slug]": {        en: "/product/[slug]",        fr: "/produit/[slug]",      },      "/blog/[category]/[id]": {        en: "/blog/[category]/[id]",        fr: "/journal/[category]/[id]",      },    }),  },};export default config;

    Konfiguracja treści (Content)

    Ustawienia do zarządzania treścią w aplikacji, w tym nazwy katalogów, rozszerzenia plików i pochodne konfiguracje.

    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Pole Opis Typ Domyślnie Przykład Uwagi
    watch Wskazuje, czy Intlayer powinien śledzić zmiany w plikach deklaracji treści w celu regeneracji słowników. boolean true
    fileExtensions Rozszerzenia plików do skanowania podczas kompilacji słowników. string[] ['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.json5', '.content.jsonc', '.content.tsx', '.content.jsx'] ['.data.ts', '.data.js', '.data.json'] Może pomóc uniknąć konfliktów przy dostosowywaniu.
    contentDir Ścieżki do katalogów, w których znajdują się pliki definicji treści (.content.*). string[] ['.'] ['src', '../../ui-library', require.resolve("@my-package/content"), '@my-package/content'] Używane do śledzenia plików treści i regeneracji słowników.
    codeDir Ścieżka do katalogów, w których znajduje się kod, względem katalogu bazowego. string[] ['.'] ['src', '../../ui-library'] • Używane do śledzenia przekształceń plików kodu (usuwanie niepotrzebnych części, optymalizacja).
    • Oddzielenie od contentDir zwiększa wydajność.
    excludedPath Katalogi, które należy wykluczyć ze skanowania treści. string[] ['**/node_modules/**', '**/dist/**', '**/build/**', '**/.intlayer/**', '**/.next/**', '**/.nuxt/**', '**/.expo/**', '**/.vercel/**', '**/.turbo/**', '**/.tanstack/**'] Obecnie nieużywane; zaplanowane na przyszłość.
    formatCommand Polecenie do formatowania plików treści, gdy Intlayer zapisuje je lokalnie. string undefined 'npx prettier --write "{{file}}" --log-level silent' (Prettier), 'npx biome format "{{file}}" --write --log-level none' (Biome), 'npx eslint --fix "{{file}}" --quiet' (ESLint) • {{file}} zostanie zastąpione ścieżką do pliku.
    • Jeśli niezdefiniowane, Intlayer spróbuje automatycznie wykryć (testuje prettier, biome, eslint).

    Konfiguracja słownika (Dictionary)

    Opcje kontrolujące operacje na słownikach, w tym zachowanie automatycznego uzupełniania i generowanie treści.

    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Pole Opis Typ Domyślnie Przykład Uwagi
    fill Kontroluje generowanie plików wyjściowych automatycznego uzupełniania (tłumaczenia AI). boolean |
    FilePathPattern |
    Partial<Record<Locale, boolean | FilePathPattern>>
    true { en: '/locales/en/{{key}}.json', fr: ({ key }) => '/locales/fr/${key}.json', es: false } • true: Domyślna ścieżka (ten sam plik co źródło).
    • false: Wyłączone.
    • Wzorzec ciągu/funkcji pozwala na generowanie na poziomie lokali.
    • Obiekt na poziomie lokali: Każde locale ma własny wzorzec; false wyklucza locale.
    • Uwzględnienie {{locale}} pozwala na generowanie na poziomie lokali.
    • Ustawienie fill na poziomie słownika zawsze ma priorytet nad tym globalnym ustawieniem.
    description Pomaga edytorowi i CMS zrozumieć przeznaczenie słownika. Używane również jako kontekst do generowania tłumaczeń przez AI. string undefined 'User profile section'
    locale Przełącza słownik na format specyficzny dla danego locale. Każde zadeklarowane pole staje się węzłem tłumaczenia. Jeśli brak, słownik jest uznawany za zawierający wiele tłumaczeń. LocalesValues undefined 'en' Używaj tego, jeśli słownik jest przeznaczony dla konkretnego języka, a nie zawiera wielu tłumaczeń.
    contentAutoTransformation Czy automatycznie przekształcać ciągi znaków treści w typowane węzły (Markdown, HTML lub wstawki). boolean |
    { markdown?: boolean; html?: boolean; insertion?: boolean }
    false true • Markdown : ### Title → md('### Title') .
    • HTML : <div>Title</div> → html('<div>Title</div>') .
    • Wstawki : Hello {{name}} → insert('Hello {{name}}') .
    location Wskazuje na lokalizację przechowywania plików słowników oraz sposób ich synchronizacji z CMS. 'local' |
    'remote' |
    'hybrid' |
    'plugin' |
    string
    'local' 'hybrid' • 'local': Tylko lokalne zarządzanie.
    • 'remote': Tylko zdalne zarządzanie (CMS).
    • 'hybrid': Zarządzanie zarówno lokalne, jak i zdalne.
    • 'plugin' lub własne ciągi: Zarządzanie przez wtyczkę lub własne źródło.
    importMode Kontroluje sposób importowania słowników. 'static' |
    'dynamic' |
    'fetch'
    'static' 'dynamic' • 'static': Statyczny import.
    • 'dynamic': Dynamiczny import przez Suspense.
    • 'fetch': Pobieranie przez API Live Sync; rezerwowa opcja 'dynamic' w razie błędu.
    • Wymagane wtyczki @intlayer/babel i @intlayer/swc.
    • Klucze muszą być zadeklarowane statycznie.
    • Ignorowane, jeśli optimize jest wyłączone.
    • Nie wpływa na getIntlayer, getDictionary itp.
    priority Priorytet słownika. Przy rozwiązywaniu konfliktów między słownikami wyższa wartość ma pierwszeństwo przed niższą. number undefined 1
    live ZDEPRECJONOWANE - używaj importMode: 'fetch'. Wcześniej wskazywało, czy należy pobierać treść słownika dynamicznie przez API Live Sync. boolean undefined Przemianowano na importMode: 'fetch' w v8.0.0.
    schema Generowane automatycznie przez Intlayer do walidacji schematu JSON. 'https://intlayer.org/schema.json' Automatyczne Nie edytuj ręcznie.
    title Pomaga identyfikować słowniki w edytorze i CMS. string undefined 'User Profile'
    tags Klasyfikuje słowniki i dostarcza kontekst lub instrukcje dla edytora i AI. string[] undefined ['user', 'profile']
    version Wersja zdalnego słownika; pomaga śledzić używaną obecnie wersję. string undefined '1.0.0' • Zarządzane w CMS.
    • Nie edytuj lokalnie.

    Przykład fill:

    ts
    Kopiuj kod

    Skopiuj kod do schowka

    dictionary: {  fill: {    en: "/locales/en/{{key}}.content.json",    fr: ({ key }) => `/locales/fr/${key}.content.json`,    es: false,  },};

    Konfiguracja loggera (Log)

    Ustawienia dostosowywania wyjścia logów Intlayer.

    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Pole Opis Typ Domyślnie Przykład Uwagi
    mode Wskazuje tryb loggera. 'default' |
    'verbose' |
    'disabled'
    'default' 'verbose' • 'verbose': Zapisuje więcej informacji do debugowania.
    • 'disabled': Całkowicie wyłącza loggera.
    prefix Prefiks dla wszystkich wiadomości w logach. string '[intlayer] ' '[mój prefiks] '

    Konfiguracja AI (AI)

    Ustawienia do zarządzania funkcjami AI w Intlayer, w tym dostawca, model i klucz API.

    Ta konfiguracja jest opcjonalna, jeśli zarejestrujesz się za pomocą klucza dostępu w Intlayer Dashboard. Intlayer automatycznie wybierze najbardziej opłacalne i wydajne rozwiązanie AI dla Twoich potrzeb. Korzystanie z domyślnych ustawień zapewnia najlepsze długoterminowe wsparcie, ponieważ Intlayer stale aktualizuje się, aby korzystać z najnowszych modeli.

    Jeśli wolisz korzystać z własnego klucza API lub konkretnego modelu, możesz zdefiniować własną konfigurację AI. Ta konfiguracja AI będzie używana globalnie w Twoim środowisku Intlayer. Komendy CLI, takie jak fill, będą domyślnie używać tych ustawień, podobnie jak SDK, edytor wizualny i CMS. Możesz nadpisać te wartości domyślne w konkretnych przypadkach za pomocą parametrów komend.

    Intlayer obsługuje szeroką gamę dostawców AI, aby zapewnić maksymalną elastyczność. Obecnie obsługiwani dostawcy to:

    • OpenAI (Domyślnie)
    • Anthropic Claude
    • Mistral AI
    • DeepSeek
    • Google Gemini
    • Google AI Studio
    • Google Vertex
    • Meta Llama
    • Ollama
    • OpenRouter
    • Alibaba Cloud
    • Fireworks
    • Hugging Face
    • Groq
    • Amazon Bedrock
    • Together.ai
    • LM Studio
    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Pole Opis Typ Domyślnie Przykład Uwagi
    provider Dostawca, który będzie używany do funkcji AI w Intlayer. 'openai' |
    'anthropic' |
    'mistral' |
    'deepseek' |
    'gemini' |
    'ollama' |
    'openrouter' |
    'alibaba' |
    'fireworks' |
    'groq' |
    'huggingface' |
    'bedrock' |
    'googleaistudio' |
    'googlevertex' |
    'togetherai' |
    'lmstudio'
    undefined 'anthropic' Różni dostawcy wymagają różnych kluczy API i mają różne cenniki.
    model Model AI do użycia w funkcjach AI. string Brak 'gpt-4o-2024-11-20' Konkretne modele zależą od dostawcy.
    temperature Kontroluje losowość odpowiedzi AI. number Brak 0.1 Wyższa temperatura = bardziej kreatywne, ale mniej niezawodne odpowiedzi.
    apiKey Twój klucz API dla wybranego dostawcy. string Brak process.env.OPENAI_API_KEY Musi pozostać tajny; używaj zmiennych środowiskowych.
    applicationContext Dodatkowy kontekst o Twojej aplikacji, aby pomóc AI generować dokładniejsze tłumaczenia (domena, grupa docelowa, ton, terminologia). string Brak 'mój własny kontekst aplikacji' Można użyć do dodania zasad (np.: "Nie powinieneś tłumaczyć swoich URL" ).
    baseURL Bazowy URL dla API AI. string Brak 'https://api.openai.com/v1'
    'http://localhost:5000'
    Może wskazywać na lokalne lub własne punkty końcowe API AI.
    dataSerialization Format serializacji danych dla funkcji AI. 'json' |
    'toon'
    undefined 'toon' • 'json': domyślnie, niezawodne; zużywa więcej tokenów.
    • 'toon': mniej tokenów, mniej stabilne.
    • Przekazuje modelowi kontekst jako dodatkowy parametr (reasoning effort itp.).

    Konfiguracja budowania (Build)

    Ustawienia kontrolujące sposób, w jaki Intlayer optymalizuje i kompiluje internacjonalizację aplikacji.

    Ustawienia budowania mają zastosowanie do wtyczek @intlayer/babel i @intlayer/swc.

    W trybie deweloperskim Intlayer używa statycznego importu słowników w celu ułatwienia procesu deweloperskiego.
    Podczas optymalizacji Intlayer zastępuje wywołania słowników optymalizacją dzielenia kodu (chunking), aby wynikowy pakiet importował tylko te słowniki, które są faktycznie używane.
    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Pole Opis Typ Domyślnie Przykład Uwagi
    mode Kontroluje tryb wykonywania budowania. 'auto' |
    'manual'
    'auto' 'manual' • 'auto': Budowanie jest automatycznie wyzwalane podczas budowania aplikacji.
    • 'manual': Uruchamiane tylko poprzez jawne polecenie budowania.
    • Może być użyte do zapobiegania budowaniu słowników (np. aby uniknąć uruchamiania w środowisku Node.js).
    optimize Kontroluje, czy optymalizacja budowania jest wykonywana. boolean undefined process.env.NODE_ENV === 'production' • Jeśli niezdefiniowane, optymalizacja jest wyzwalana podczas budowania frameworka (Vite/Next.js).
    • true wymusza optymalizację nawet w trybie deweloperskim.
    • false wyłącza ją.
    • Jeśli włączone, zastępuje wywołania słowników optymalizacją chunking.
    • Wymagane wtyczki @intlayer/babel i @intlayer/swc.
    minify Minimalizuj słowniki, aby zmniejszyć rozmiar pakietu. boolean false • Określa, czy pakiet ma zostać zminimalizowany.
    • Domyślnie: true w produkcji.
    • Ta opcja zostanie zignorowana, jeśli optimize jest wyłączone.
    • Ta opcja zostanie zignorowana, jeśli editor.enabled jest prawdziwe.
    purge Usuń nieużywane klucze w słownikach. boolean false • Określa, czy pakiet ma zostać wyczyszczony.
    • Domyślnie: true w produkcji.
    • Ta opcja zostanie zignorowana, jeśli optimize jest wyłączone.
    checkTypes Wskazuje, czy budowanie powinno sprawdzać typy TypeScript i logować błędy. boolean false Może spowolnić proces budowania.
    outputFormat Kontroluje format wyjściowy słowników. ('esm' | 'cjs')[] ['esm', 'cjs'] ['cjs']
    traversePattern Wzorzec dla plików, które mają być skanowane podczas optymalizacji. string[] ['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*'] ['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**'] • Poprawia wydajność budowania poprzez ograniczenie optymalizacji do odpowiednich plików.
    • Ignorowane, jeśli optimize jest wyłączone.
    • Używa wzorców glob.

    Konfiguracja systemowa (System)

    Te ustawienia są przeznaczone dla zaawansowanych użytkowników i wewnętrznej konfiguracji Intlayer.

    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Pole Opis Typ Domyślnie Przykład Uwagi
    dictionariesDir Katalog dla skompilowanych słowników. string '.intlayer/dictionary'
    moduleAugmentationDir Katalog dla module augmentation TypeScript. string '.intlayer/types'
    unmergedDictionariesDir Katalog dla niepołączonych słowników. string '.intlayer/unmerged_dictionary'
    typesDir Katalog dla wygenerowanych typów. string '.intlayer/types'
    mainDir Katalog głównych plików Intlayer. string '.intlayer/main'
    configDir Katalog skompilowanych plików konfiguracyjnych. string '.intlayer/config'
    cacheDir Katalog plików cache. string '.intlayer/cache'

    Konfiguracja kompilatora (Compiler)

    Kontroluje ustawienia kompilatora Intlayer, który kolekcjonuje słowniki bezpośrednio z Twoich komponentów.

    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Pole Opis Typ Domyślnie Przykład Uwagi
    enabled Wskazuje, czy kompilator powinien być aktywny w celu kolekcjonowania słowników. boolean |
    'build-only'
    true 'build-only' 'build-only' pomija kompilator podczas deweloperki dla szybszego startu; uruchamia się tylko podczas poleceń budowania.
    dictionaryKeyPrefix Prefiks dla zebranych kluczy słowników. string '' 'my-prefix-' Dodawany przed wygenerowanym kluczem (opartym na nazwie pliku), aby uniknąć konfliktów.
    saveComponents Czy zapisać komponenty po ich przekształceniu. boolean false • Jeśli true, oryginalne pliki zostaną nadpisane przekształconymi wersjami.
    • Pozwala na jednorazowe uruchomienie kompilatora, a następnie jego usunięcie.
    output Definiuje ścieżkę do pliku wyjściowego. Zastępuje outputDir. Obsługuje zmienne szablonowe: {{fileName}},
    {{key}},
    {{locale}},
    {{extension}},
    {{componentFileName}},
    {{componentExtension}},
    {{format}},
    {{componentFormat}},
    {{componentDirPath}} .
    boolean |
    FilePathPattern |
    Partial<Record<Locale, boolean | FilePathPattern>>
    undefined './{{fileName}}{{extension}}'
    '/locales/{{locale}}/{{key}}.json'
    { en: ({ key }) => './locales/en/${key}.json', fr: '...', es: false }
    • Ścieżki ./ są obliczane względem katalogu komponentu.
    • Ścieżki / są obliczane względem korzenia projektu.
    • {{locale}} pozwala na generowanie na poziomie lokali.
    • Obsługuje definicję przez obiekt na poziomie lokali.
    noMetadata Jeśli true, kompilator usuwa metadane słownika (klucz, content wrapper) z wyniku. boolean false false → {"key":"my-key","content":{"key":"value"}}
    true → {"key":"value"}
    • Przydatne dla formatów i18next lub ICU MessageFormat JSON na język.
    • Dobrze współpracuje z wtyczką loadJSON.
    dictionaryKeyPrefix Prefiks klucza słownika string '' Dodaje opcjonalny prefiks do wyodrębnionych kluczy słownika

    Własne schematy (Custom Schemas)

    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Pole Opis Typ
    schemas Pozwala definiować schematy Zod do walidacji struktury Twoich słowników. Record<string, ZodSchema>

    Wtyczki (Plugins)

    Pokaż całą zawartość tabeli

    Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość

    Pole Opis Typ
    plugins Lista wtyczek Intlayer, które mają być dołączone. IntlayerPlugin[]
    Jak działa Intlayer
    CLI
    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.

      import { Locales, type IntlayerConfig } from "intlayer";import { nextjsRewrite } from "intlayer/routing";import { z } from "zod";/** * Przykład pliku konfiguracyjnego Intlayer pokazujący wszystkie dostępne opcje. */const config: IntlayerConfig = {  /**   * Konfiguracja ustawień internacjonalizacji.   */  internationalization: {    /**     * Lista obsługiwanych lokali w aplikacji.     * Domyślnie: [Locales.ENGLISH]     */    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    /**     * Lista wymaganych lokali, które muszą być zdefiniowane w każdym słowniku.     * Jeśli pusta, wszystkie locale są wymagane w trybie `strict`.     * Domyślnie: []     */    requiredLocales: [Locales.ENGLISH],    /**     * Poziom rygoru dla treści zinternacjonalizowanej.     * - "strict": Błąd, jeśli brakuje zadeklarowanych lokali lub używane są niezadeklarowane locale.     * - "inclusive": Ostrzeżenia, jeśli brakuje zadeklarowanych lokali.     * - "loose": Akceptuje każde istniejące locale.     * Domyślnie: "inclusive"     */    strictMode: "inclusive",    /**     * Domyślne locale używane jako zapasowe, gdy żądane locale nie zostanie znalezione.     * Domyślnie: Locales.ENGLISH     */    defaultLocale: Locales.ENGLISH,  },  /**   * Ustawienia kontrolujące operacje na słownikach i zachowanie zapasowe.   */  dictionary: {    /**     * Kontroluje sposób importowania słowników.     * - "static": Importowane statycznie w czasie budowania.     * - "dynamic": Importowane dynamicznie za pomocą Suspense.     * - "fetch": Pobierane dynamicznie przez API Live Sync.     * Domyślnie: "static"     */    importMode: "static",    /**     * Strategia automatycznego uzupełniania brakujących tłumaczeń za pomocą AI.     * Może być wartością logiczną lub wzorcem ścieżki do zapisywania uzupełnionej treści.     * Domyślnie: true     */    fill: true,    /**     * Fizyczna lokalizacja plików słowników.     * - "local": Przechowywane w lokalnym systemie plików.     * - "remote": Przechowywane w Intlayer CMS.     * - "hybrid": Przechowywane zarówno lokalnie, jak i w Intlayer CMS.     * - "plugin" (lub dowolny ciąg znaków): Dostarczane przez wtyczkę lub niestandardowe źródło.     * Domyślnie: "local"     */    location: "local",    /**     * Czy automatycznie przekształcać treść (np. Markdown do HTML).     * Domyślnie: false     */    contentAutoTransformation: false,  },  /**   * Konfiguracja routingu i middleware.   */  routing: {    /**     * Strategia routingu lokali.     * - "prefix-no-default": Prefiks dla wszystkich języków z wyjątkiem domyślnego (np. /dashboard, /fr/dashboard).     * - "prefix-all": Prefiks dla wszystkich języków (np. /en/dashboard, /fr/dashboard).     * - "no-prefix": Locale nie jest widoczne w adresie URL.     * - "search-params": Użycie ?locale=...     * Domyślnie: "prefix-no-default"     */    mode: "prefix-no-default",    /**     * Miejsce przechowywania locale wybranego przez użytkownika.     * Opcje: 'cookie', 'localStorage', 'sessionStorage', 'header' lub ich tablica.     * Domyślnie: ['cookie', 'header']     */    storage: ["cookie", "header"],    /**     * Bazowa ścieżka dla adresów URL aplikacji.     * Domyślnie: ""     */    basePath: "",    /**     * Własne reguły przepisywania URL dla określonych ścieżek zlokalizowanych.     */    rewrite: nextjsRewrite({      "/[locale]/about": {        en: "/[locale]/about",        fr: "/[locale]/a-propos",      },    }),    /**     * Mapuje locale na nazwy hostów domen dla routingu opartego na domenach.     * Adresy URL dla tych lokali będą absolutne (np. https://intlayer.cn/).     * Domena implikuje locale, więc do ścieżki nie jest dodawany żaden prefiks locale.     * Domyślnie: undefined     */    domains: {      en: "intlayer.org",      zh: "intlayer.cn",    },  },  /**   * Ustawienia wyszukiwania i przetwarzania plików treści.   */  content: {    /**     * Rozszerzenia plików do skanowania w poszukiwaniu słowników.     * Domyślnie: ['.content.ts', '.content.js', '.content.json' itp.]     */    fileExtensions: [".content.ts", ".content.js", ".content.json"],    /**     * Katalogi, w których znajdują się pliki .content.     * Domyślnie: ["."]     */    contentDir: ["src"],    /**     * Katalog kodu źródłowego.     * Używany do optymalizacji budowania i przekształceń kodu.     * Domyślnie: ["."]     */    codeDir: ["src"],    /**     * Wzorce do wykluczenia ze skanowania.     * Domyślnie: ['node_modules', '.intlayer' itp.]     */    excludedPath: ["node_modules"],    /**     * Czy śledzić zmiany i regenerować słowniki podczas deweloperki.     * Domyślnie: true w trybie deweloperskim     */    watch: true,    /**     * Polecenie do formatowania nowo utworzonych / zaktualizowanych plików .content.     */    formatCommand: 'npx prettier --write "{{file}}"',  },  /**   * Konfiguracja edytora wizualnego.   */  editor: {    /**     * Czy edytor wizualny jest włączony.     * Domyślnie: false     */    enabled: true,    /**     * URL Twojej aplikacji do walidacji źródła.     * Domyślnie: ""     */    applicationURL: "http://localhost:3000",    /**     * Port lokalnego serwera edytora.     * Domyślnie: 8000     */    port: 8000,    /**     * Publiczny URL edytora.     * Domyślnie: "http://localhost:8000"     */    editorURL: "http://localhost:8000",    /**     * URL Intlayer CMS.     * Domyślnie: "https://app.intlayer.org"     */    cmsURL: "https://app.intlayer.org",    /**     * URL serwera API backendu.     * Domyślnie: "https://back.intlayer.org"     */    backendURL: "https://back.intlayer.org",    /**     * Czy włączyć synchronizację treści w czasie rzeczywistym.     * Domyślnie: false     */    liveSync: true,  },  /**   * Ustawienia tłumaczenia i generowania opartego na AI.   */  ai: {    /**     * Wybrany dostawca AI.     * Opcje: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'     * Domyślnie: 'openai'     */    provider: "openai",    /**     * Model dostawcy do użycia.     */    model: "gpt-4o",    /**     * Klucz API dostawcy.     */    apiKey: process.env.OPENAI_API_KEY,    /**     * Globalny kontekst ułatwiający AI generowanie tłumaczeń.     */    applicationContext: "To jest aplikacja do rezerwacji podróży.",    /**     * Bazowy URL dla API AI.     */    baseURL: "http://localhost:3000",    /**     * Serializacja danych (Data Serialization)     *     * Opcje:     * - "json": domyślnie, niezawodna; zużywa więcej tokenów.     * - "toon": szybciej, mniej tokenów, mniej spójna niż JSON.     *     * Domyślnie: "json"     */    dataSerialization: "json",  },  /**   * Ustawienia budowania i optymalizacji.   */  build: {    /**     * Tryb wykonywania budowania.     * - "auto": Automatyczne budowanie podczas budowania aplikacji.     * - "manual": Wymaga jawnego polecenia budowania.     * Domyślnie: "auto"     */    mode: "auto",    /**     * Czy optymalizować wynikowy pakiet poprzez usuwanie nieużywanych słowników.     * Domyślnie: true w środowisku produkcyjnym     */    optimize: true,    /**     * Minimalizuj słowniki, aby zmniejszyć rozmiar pakietu.     * Domyślnie: false     *     * Uwaga:     * - Ta opcja zostanie zignorowana, jeśli `optimize` jest wyłączone.     * - Ta opcja zostanie zignorowana, jeśli `editor.enabled` jest ustawione na true.     */    minify: true,    /**     * Usuń nieużywane klucze w słownikach.     * Domyślnie: false     *     * Uwaga:     * - Ta opcja zostanie zignorowana, jeśli `optimize` jest wyłączone.     */    purge: true,    /**     * Format wyjściowy generowanych plików słowników.     * Domyślnie: ['cjs', 'esm']     */    outputFormat: ["cjs", "esm"],    /**     * Czy przeprowadzać sprawdzanie typów TypeScript podczas budowania.     * Domyślnie: false     */    checkTypes: false,  },  /**   * Konfiguracja loggera.   */  log: {    /**     * Tryb logowania.     * - "default": Standardowe logowanie.     * - "verbose": Szczegółowe logowanie do debugowania.     * - "disabled": Wyłącz logowanie.     * Domyślnie: "default"     */    mode: "default",    /**     * Prefiks dla wszystkich wiadomości w logach.     * Domyślnie: "[intlayer]"     */    prefix: "[intlayer]",  },  /**   * Konfiguracja systemowa (do zaawansowanych zastosowań)   */  system: {    /**     * Katalog, w którym przechowywane są zlokalizowane słowniki.     */    dictionariesDir: ".intlayer/dictionary",    /**     * Katalog dla module augmentation.     */    moduleAugmentationDir: ".intlayer/types",    /**     * Katalog dla niepołączonych słowników.     */    unmergedDictionariesDir: ".intlayer/unmerged_dictionary",    /**     * Katalog typów słowników.     */    typesDir: ".intlayer/types",    /**     * Katalog głównych plików aplikacji.     */    mainDir: ".intlayer/main",    /**     * Katalog skompilowanych plików konfiguracyjnych.     */    configDir: ".intlayer/config",    /**     * Katalog plików cache.     */    cacheDir: ".intlayer/cache",  },  /**   * Konfiguracja kompilatora (do zaawansowanych zastosowań)   */  compiler: {    /**     * Czy kompilator jest włączony.     *     * - false: wyłącz kompilator.     * - true: włącz kompilator.     * - "build-only": pomiń kompilator podczas deweloperki dla szybszego startu.     *     * Domyślnie: false     */    enabled: true,    /**     * Definiuje ścieżkę do pliku wyjściowego. Zastępuje `outputDir`.     *     * - Ścieżki `./` są rozwiązywane względem katalogu komponentu.     * - Ścieżki `/` są rozwiązywane względem katalogu bazowego projektu (`baseDir`).     *     * - Obecność zmiennej `{{locale}}` w ścieżce wyzwala generowanie osobnych słowników na język.     *     * Przykłady:     * ```ts     * {     *   // Tworzy wielojęzyczne pliki .content.ts obok komponentu     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // To samo poprzez ciąg szablonowy     * }     * ```     *     * ```ts     * {     *   // Tworzy scentralizowane pliki JSON na język w korzeniu projektu     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // To samo poprzez ciąg szablonowy     * }     * ```     *     * Lista zmiennych:     *   - `fileName`: Nazwa pliku.     *   - `key`: Klucz treści.     *   - `locale`: Locale treś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: ({ locale, key }) => `compiler/${locale}/${key}.json`,    /**     * Czy zapisać komponenty po ich przekształceniu.     * W ten sposób można uruchomić kompilator raz, aby przekształcić aplikację, a następnie go usunąć.     */    saveComponents: false,    /**     * Pozostaw tylko treść w wygenerowanym pliku. Przydatne dla formatów i18next lub ICU MessageFormat JSON na język.     */    noMetadata: false,    /**     * Prefiks klucza słownika     */    dictionaryKeyPrefix: "", // Dodaje opcjonalny prefiks do wyodrębnionych kluczy słownika  },  /**   * Własne schematy do walidacji struktury słowników.   */  schemas: {    "my-schema": z.object({      title: z.string(),    }),  },  /**   * Konfiguracja wtyczek.   */  plugins: [],};export default config;
      routing: {  mode: "prefix-no-default", // Strategia zapasowa  rewrite: nextjsRewrite({    "/about": {      en: "/about",      fr: "/a-propos",    },    "/product/[slug]": {      en: "/product/[slug]",      fr: "/produit/[slug]",    },    "/blog/[category]/[id]": {      en: "/blog/[category]/[id]",      fr: "/journal/[category]/[id]",    },  }),}
      import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "prefix-no-default",    storage: "localStorage",    basePath: "",  },};export default config;
      import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "prefix-no-default",    storage: [      {        type: "localStorage",        name: "user-locale",      },      {        type: "cookie",        name: "user-locale",        secure: true,        sameSite: "strict",        httpOnly: false,      },    ],    basePath: "",  },};export default config;
      import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "search-params",    storage: "localStorage",    basePath: "",  },};export default config;
      import { Locales, type IntlayerConfig } from "intlayer";// intlayer.config.tsconst config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr", "es"],    defaultLocale: "en",  },  routing: {    mode: "no-prefix",    storage: {      type: "sessionStorage",      name: "app-locale",    },    basePath: "/my-app",  },};export default config;
      // intlayer.config.tsimport { nextjsRewrite } from "intlayer/routing";const config: IntlayerConfig = {  internationalization: {    locales: ["en", "fr"],    defaultLocale: "en",  },  routing: {    mode: "prefix-no-default", // Rezerwowa strategia dla nieprzepisanych ścieżek    storage: "cookie",    rewrite: nextjsRewrite({      "/about": {        en: "/about",        fr: "/a-propos",      },      "/product/[slug]": {        en: "/product/[slug]",        fr: "/produit/[slug]",      },      "/blog/[category]/[id]": {        en: "/blog/[category]/[id]",        fr: "/journal/[category]/[id]",      },    }),  },};export default config;
      dictionary: {  fill: {    en: "/locales/en/{{key}}.content.json",    fr: ({ key }) => `/locales/fr/${key}.content.json`,    es: false,  },};