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. Dlaczego Intlayer?
    Data utworzenia:2024-08-14Ostatnia aktualizacja:2025-09-27
    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. "Wydanie Kompilatora"
      v7.3.127.11.2025
    2. "Aktualizacja tabeli porównawczej"
      v5.8.019.08.2025
    3. "Inicjalizacja historii"
      v5.5.1029.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

    Dlaczego warto rozważyć Intlayer?

    Czym jest Intlayer?

    Intlayer to biblioteka do internacjonalizacji zaprojektowana specjalnie dla programistów JavaScript. Pozwala ona na deklarowanie treści w dowolnym miejscu w kodzie. Przekształca deklaracje treści wielojęzycznych w strukturalne słowniki, które można łatwo zintegrować z kodem. Dzięki zastosowaniu TypeScript, Intlayer sprawia, że proces programowania staje się bardziej solidny i wydajny.

    Dlaczego powstał Intlayer?

    Intlayer powstał, aby rozwiązać powszechny problem dotyczący wszystkich popularnych bibliotek i18n, takich jak next-intl, react-i18next, react-intl, next-i18next, react-intl czy vue-i18n.

    Wszystkie te rozwiązania stosują scentralizowane podejście do listowania i zarządzania treścią. Na przykład:

    bash
    Kopiuj kod

    Skopiuj kod do schowka

    .├── locales│   ├── en.json│   ├── es.json│   └── fr.json├── i18n.ts└── src    └── components        └── MyComponent            └── index.tsx

    Lub przy użyciu przestrzeni nazw:

    bash
    Kopiuj kod

    Skopiuj kod do schowka

    .├── locales│   ├── en│   │  ├── footer.json│   │  └── navbar.json│   ├── fr│   │  ├── footer.json│   │  └── navbar.json│   └── es│      ├── footer.json│      └── navbar.json├── i18n.ts└── src    └── components        └── MyComponent            └── index.tsx

    Tego typu architektura spowalnia proces programowania i komplikuje utrzymanie kodu z kilku powodów:

    1. Dla każdego nowego komponentu należy:

      • Utworzyć nowy zasób/przestrzeń nazw w folderze locales
      • Pamiętać o zaimportowaniu nowej przestrzeni nazw na stronie
      • Przetłumaczyć treść (często robione ręcznie poprzez kopiowanie/wklejanie z narzędzi AI)
    2. Dla każdej zmiany w komponentach należy:

      • Wyszukać powiązany zasób/przestrzeń nazw (z dala od komponentu)
      • Przetłumaczyć treść
      • Upewnić się, że treść jest aktualna dla wszystkich języków
      • Zweryfikować, czy przestrzeń nazw nie zawiera nieużywanych kluczy/wartości
      • Upewnić się, że struktura plików JSON jest taka sama dla wszystkich języków

    W profesjonalnych projektach korzystających z tych rozwiązań często używa się platform lokalizacyjnych do zarządzania tłumaczeniami. Jednak w przypadku dużych projektów może to szybko stać się kosztowne.

    Aby rozwiązać ten problem, Intlayer stosuje podejście polegające na ograniczeniu zakresu treści do każdego komponentu i przechowywaniu jej blisko niego, podobnie jak robimy to z CSS (styled-components), typami, dokumentacją (storybook) czy testami jednostkowymi (jest).

    bash
    Kopiuj kod

    Skopiuj kod do schowka

    .└── components    └── MyComponent        ├── index.content.ts        ├── index.test.tsx        ├── index.stories.tsx        └── index.tsx
    ./components/MyComponent/index.content.ts
    Kopiuj kod

    Skopiuj kod do schowka

    import { t, type Dictionary } from "intlayer";
    
    const componentExampleContent = {
      key: "component-example",
      content: {
        myTranslatedContent: t({
          en: "Hello World",
          es: "Hola Mundo",
          fr: "Bonjour le monde",
        }),
      },
    } satisfies Dictionary;
    
    export default componentExampleContent;
    ./components/MyComponent/index.tsx
    Kopiuj kod

    Skopiuj kod do schowka

    import { useIntlayer } from "react-intlayer";
    
    export const ComponentExample = () => {
      const { myTranslatedContent } = useIntlayer("component-example");
    
      return <span>{myTranslatedContent}</span>;
    };

    Takie podejście pozwala na:

    1. Zwiększenie prędkości programowania

      • Pliki .content.{{ts|mjs|cjs|json}} można tworzyć za pomocą rozszerzenia VSCode
      • Narzędzia AI do autouzupełniania w IDE (np. GitHub Copilot) mogą pomagać w deklarowaniu treści, ograniczając kopiowanie/wklejanie
    2. Uporządkowanie kodu

      • Zmniejszenie złożoności
      • Zwiększenie łatwości utrzymania
    3. Łatwiejsze duplikowanie komponentów wraz z ich treścią (np. komponenty logowania/rejestracji itp.)

      • Poprzez ograniczenie ryzyka wpływu na treść innych komponentów
      • Poprzez kopiowanie/wklejanie treści z jednej aplikacji do drugiej bez zewnętrznych zależności
    4. Unikanie zaśmiecania kodu nieużywanymi kluczami/wartościami dla nieużywanych komponentów

      • Jeśli nie używasz komponentu, Intlayer nie zaimportuje powiązanej z nim treści
      • Jeśli usuniesz komponent, łatwiej będzie pamiętać o usunięciu powiązanej z nim treści, ponieważ znajduje się ona w tym samym folderze
    5. Zmniejszenie kosztów rozumowania dla agentów AI przy deklarowaniu treści wielojęzycznych

      • Agent AI nie będzie musiał skanować całego kodu, aby wiedzieć, gdzie zaimplementować treść
      • Tłumaczenia można łatwo wykonać za pomocą narzędzi AI do autouzupełniania w IDE (np. GitHub Copilot)
    6. Optymalizację wydajności ładowania

      • Jeśli komponent jest ładowany leniwie (lazy-loaded), powiązana z nim treść zostanie załadowana w tym samym czasie

    Dodatkowe funkcje Intlayer

    Pokaż całą zawartość tabeli

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

    Funkcja Opis
    Funkcja Obsługa wielu frameworków

    Intlayer jest kompatybilny ze wszystkimi głównymi frameworkami i bibliotekami, w tym Next.js, React, Vite, Vue.js, Nuxt, Preact, Express i innymi.
    Feature Zarządzanie treścią oparte na JavaScript

    Wykorzystaj elastyczność JavaScript do wydajnego definiowania i zarządzania treścią.

    - Deklarowanie treści
    Funkcja Kompilator

    Kompilator Intlayer automatycznie wyodrębnia treść z komponentów i generuje pliki słowników.

    - Kompilator
    Feature Plik deklaracji treści dla każdego języka

    Przyspiesz programowanie, deklarując treść raz przed automatycznym generowaniem.

    - Plik deklaracji treści dla każdego języka
    Feature Środowisko bezpieczne pod względem typów (Type-Safe)

    Wykorzystaj TypeScript, aby upewnić się, że definicje treści i kod są wolne od błędów, korzystając jednocześnie z autouzupełniania w IDE.

    - Konfiguracja TypeScript
    Feature Uproszczona konfiguracja

    Szybko rozpocznij pracę dzięki minimalnej konfiguracji. Łatwo dostosuj ustawienia internacjonalizacji, routingu, AI, budowania i obsługi treści.

    - Poznaj integrację z Next.js
    Feature Uproszczone pobieranie treści

    Nie ma potrzeby wywoływania funkcji t dla każdego elementu treści. Pobieraj całą treść bezpośrednio za pomocą jednego hooka.

    - Integracja z React
    Feature Spójna implementacja Server Components

    Idealnie dopasowana do Next.js Server Components, używaj tej samej implementacji dla komponentów klienckich i serwerowych, bez konieczności przekazywania funkcji t przez każdy komponent serwerowy.

    - Server Components
    Feature Uporządkowany kod

    Utrzymuj kod w większym porządku: 1 komponent = 1 słownik w tym samym folderze. Tłumaczenia znajdujące się blisko swoich komponentów poprawiają łatwość utrzymania i przejrzystość.

    - Jak działa Intlayer
    Feature Ulepszony routing

    Pełne wsparcie dla routingu aplikacji, płynnie dostosowujące się do złożonych struktur aplikacji w Next.js, React, Vite, Vue.js itd.

    - Poznaj integrację z Next.js
    Feature Obsługa Markdown

    Importuj i interpretuj pliki lokalne oraz zdalne pliki Markdown dla treści wielojęzycznych, takich jak polityki prywatności, dokumentacja itp. Interpretuj i udostępniaj metadane Markdown w kodzie.

    - Pliki treści
    Feature Darmowy edytor wizualny i CMS

    Dla autorów treści dostępny jest darmowy edytor wizualny i CMS, eliminujący potrzebę korzystania z platform lokalizacyjnych. Synchronizuj treść za pomocą Git lub całkowicie lub częściowo wyprowadź ją na zewnątrz dzięki CMS.

    - Edytor Intlayer
    - Intlayer CMS
    Feature Treść typu Tree-shakable

    Treść typu tree-shakable, zmniejszająca rozmiar końcowego pakietu. Ładuje treść na poziomie komponentu, wykluczając wszelkie nieużywane treści z pakietu. Obsługuje leniwe ładowanie dla zwiększenia wydajności ładowania aplikacji.

    - Optymalizacja budowania aplikacji
    Feature Renderowanie statyczne

    Nie blokuje renderowania statycznego.

    - Integracja z Next.js
    Feature Tłumaczenie wspomagane przez AI

    Przetłumacz swoją stronę na 231 języków jednym kliknięciem, korzystając z zaawansowanych narzędzi tłumaczeniowych AI Intlayer z własnym dostawcą AI/kluczem API.

    - Integracja CI/CD
    - Intlayer CLI
    - Auto-fill
    Feature Integracja z Serwerem MCP

    Zapewnia serwer MCP (Model Context Protocol) do automatyzacji IDE, umożliwiając płynne zarządzanie treścią i przepływy pracy i18n bezpośrednio w środowisku programistycznym.

    - Serwer MCP
    Feature Rozszerzenie VSCode

    Intlayer zapewnia rozszerzenie VSCode, które pomaga zarządzać treścią i tłumaczeniami, budować słowniki, tłumaczyć treści i nie tylko.

    - Rozszerzenie VSCode
    Feature Interoperacyjność

    Umożliwia interoperacyjność z react-i18next, next-i18next, next-intl i react-intl.

    - Intlayer i react-intl
    - Intlayer i next-intl
    - Intlayer i next-i18next
    Testowanie brakujących tłumaczeń (CLI/CI) ✅ CLI: npx intlayer content test (audyt przyjazny dla CI)

    Porównanie Intlayer z innymi rozwiązaniami

    Pokaż całą zawartość tabeli

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

    Cecha intlayer react-i18next react-intl (FormatJS) lingui next-intl next-i18next vue-i18n
    Tłumaczenia blisko komponentów ✅ Tak, treść znajduje się przy każdym komponencie ❌ Nie ❌ Nie ❌ Nie ❌ Nie ❌ Nie ✅ Tak – przy użyciu Single File Components (SFCs)
    Integracja z TypeScript ✅ Zaawansowana, automatycznie generowane ścisłe typy ⚠️ Podstawowa; wymaga dodatkowej konfiguracji dla pełnego bezpieczeństwa ✅ Dobra, ale mniej ścisła ⚠️ Typowanie wymaga konfiguracji ✅ Dobra ⚠️ Podstawowa ✅ Dobra (typy dostępne; bezpieczeństwo kluczy wymaga konfiguracji)
    Wykrywanie brakujących tłumaczeń ✅ Podświetlanie błędów TypeScript oraz błędy/ostrzeżenia w czasie budowania ⚠️ Głównie ciągi zapasowe (fallback) w czasie wykonywania ⚠️ Ciągi zapasowe ⚠️ Wymaga dodatkowej konfiguracji ⚠️ Fallback w czasie wykonywania ⚠️ Fallback w czasie wykonywania ⚠️ Fallback/ostrzeżenia w czasie wykonywania (konfigurowalne)
    Bogata treść (JSX/Markdown/komponenty) ✅ Bezpośrednie wsparcie ⚠️ Ograniczone / tylko interpolacja ⚠️ Składnia ICU, brak prawdziwego JSX ⚠️ Ograniczone ❌ Nie zaprojektowane dla bogatych struktur ⚠️ Ograniczone ⚠️ Ograniczone (komponenty przez <i18n-t>, Markdown przez pluginy)
    Tłumaczenie wspomagane przez AI ✅ Tak, obsługuje wielu dostawców AI. Można używać z własnymi kluczami API. Uwzględnia kontekst aplikacji i zakres treści ❌ Nie ❌ Nie ❌ Nie ❌ Nie ❌ Nie ❌ Nie
    Edytor wizualny ✅ Tak, lokalny edytor wizualny + opcjonalny CMS; możliwość wyprowadzenia treści kodu na zewnątrz; możliwość osadzenia ❌ Nie / dostępne przez zewnętrzne platformy lokalizacyjne ❌ Nie / dostępne przez zewnętrzne platformy lokalizacyjne ❌ Nie / dostępne przez zewnętrzne platformy lokalizacyjne ❌ Nie / dostępne przez zewnętrzne platformy lokalizacyjne ❌ Nie / dostępne przez zewnętrzne platformy lokalizacyjne ❌ Nie / dostępne przez zewnętrzne platformy lokalizacyjne
    Zlokalizowany routing ✅ Tak, wsparcie dla zlokalizowanych ścieżek "z pudełka" (działa z Next.js i Vite) ⚠️ Brak wbudowanego, wymaga pluginów (np. next-i18next) lub własnej konfiguracji routera ❌ Nie, tylko formatowanie wiadomości, routing musi być ręczny ⚠️ Brak wbudowanego, wymaga pluginów lub ręcznej konfiguracji ✅ Wbudowany, App Router obsługuje segment [locale] ✅ Wbudowany ✅ Wbudowany
    Dynamiczne generowanie ścieżek ✅ Tak ⚠️ Plugin/ekosystem lub ręczna konfiguracja ❌ Brak ⚠️ Plugin/ręcznie ✅ Tak ✅ Tak ❌ Brak (zapewniane przez Nuxt i18n)
    Liczba mnoga ✅ Wzorce oparte na wyliczeniach (enums) ✅ Konfigurowalne (pluginy takie jak i18next-icu) ✅ (ICU) ✅ (ICU/messageformat) ✅ Dobra ✅ Dobra ✅ Wbudowane reguły liczby mnogiej
    Formatowanie (daty, liczby, waluty) ✅ Zoptymalizowane formatery (Intl pod spodem) ⚠️ Przez pluginy lub własne użycie Intl ✅ Formatery ICU ✅ Helpery ICU/CLI ✅ Dobra (helpery Intl) ✅ Dobra (helpery Intl) ✅ Wbudowane formatery dat/liczb (Intl)
    Format treści ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml w trakcie prac) ⚠️ .json ✅ .json, .js ⚠️ .po, .json ✅ .json, .js, .ts ⚠️ .json ✅ .json, .js
    Wsparcie ICU ⚠️ W trakcie prac ⚠️ Przez plugin (i18next-icu) ✅ Tak ✅ Tak ✅ Tak ⚠️ Przez plugin (i18next-icu) ⚠️ Przez własny formater/kompilator
    Helpery SEO (hreflang, sitemap) ✅ Wbudowane narzędzia: helpery do sitemap, robots.txt, metadanych ⚠️ Pluginy społeczności / ręcznie ❌ Brak w rdzeniu ❌ Brak w rdzeniu ✅ Dobra ✅ Dobra ❌ Brak w rdzeniu (zapewniane przez Nuxt i18n)
    Ekosystem / Społeczność ⚠️ Mniejszy, ale szybko rosnący i responsywny ✅ Największy i najbardziej dojrzały ✅ Duży ⚠️ Mniejszy ✅ Średniej wielkości, skupiony na Next.js ✅ Średniej wielkości, skupiony na Next.js ✅ Duży w ekosystemie Vue
    Server-side Rendering i Server Components ✅ Tak, zoptymalizowane pod kątem SSR / React Server Components ⚠️ Obsługiwane na poziomie strony, ale wymaga przekazywania funkcji t w dół drzewa komponentów ⚠️ Obsługiwane na poziomie strony z dodatkową konfiguracją, ale wymaga przekazywania funkcji t w dół drzewa komponentów ✅ Obsługiwane, wymaga konfiguracji ⚠️ Obsługiwane na poziomie strony, ale wymaga przekazywania funkcji t w dół drzewa komponentów ⚠️ Obsługiwane na poziomie strony, ale wymaga przekazywania funkcji t w dół drzewa komponentów ✅ Obsługiwane przez Nuxt/Vue SSR (brak RSC)
    Tree-shaking (ładowanie tylko używanej treści) ✅ Tak, dla każdego komponentu w czasie budowania przez pluginy Babel/SWC ⚠️ Zazwyczaj ładuje wszystko (można poprawić przez przestrzenie nazw / code-splitting) ⚠️ Zazwyczaj ładuje wszystko ❌ Nie domyślnie ⚠️ Częściowo ⚠️ Częściowo ⚠️ Częściowo (z code-splitting / ręczną konfiguracją)
    Leniwe ładowanie (Lazy loading) ✅ Tak, dla każdego języka / słownika ✅ Tak (np. backendy/przestrzenie nazw na żądanie) ✅ Tak (dzielenie paczek językowych) ✅ Tak (dynamiczny import katalogów) ✅ Tak (na trasę / na język), wymaga zarządzania przestrzeniami nazw ✅ Tak (na trasę / na język), wymaga zarządzania przestrzeniami nazw ✅ Tak (asynchroniczne wiadomości językowe)
    Usuwanie nieużywanej treści ✅ Tak, dla każdego słownika w czasie budowania ❌ Nie, tylko przez ręczne dzielenie przestrzeni nazw ❌ Nie, wszystkie zadeklarowane wiadomości są pakowane ✅ Tak, nieużywane klucze są wykrywane i usuwane przy budowaniu ❌ Nie, wymaga ręcznego zarządzania przestrzeniami nazw ❌ Nie, wymaga ręcznego zarządzania przestrzeniami nazw ❌ Nie, możliwe tylko przez ręczne leniwe ładowanie
    Zarządzanie dużymi projektami ✅ Zachęca do modułowości, odpowiednie dla systemów projektowych (design systems) ⚠️ Wymaga dużej dyscypliny w organizacji plików ⚠️ Centralne katalogi mogą stać się bardzo duże ⚠️ Może stać się skomplikowane ✅ Modułowość dzięki konfiguracji ✅ Modułowość dzięki konfiguracji ✅ Modułowość dzięki konfiguracji Vue Router/Nuxt i18n

    Gwiazdki na GitHubie

    Gwiazdki na GitHubie są silnym wskaźnikiem popularności projektu, zaufania społeczności i długoterminowego znaczenia. Choć nie są bezpośrednią miarą jakości technicznej, odzwierciedlają, ilu programistów uważa projekt za przydatny, śledzi jego postępy i prawdopodobnie go przyjmie. Przy szacowaniu wartości projektu gwiazdki pomagają porównać zainteresowanie alternatywami i dostarczają wglądu w rozwój ekosystemu.

    Star History Chart


    Interoperacyjność

    intlayer może również pomóc w zarządzaniu przestrzeniami nazw react-intl, react-i18next, next-intl, next-i18next oraz vue-i18n.

    Korzystając z intlayer, możesz zadeklarować swoją treść w formacie ulubionej biblioteki i18n, a intlayer wygeneruje przestrzenie nazw w wybranej przez Ciebie lokalizacji (przykład: /messages/{{locale}}/{{namespace}}.json).

    Zacząć
    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.

      .├── locales│   ├── en.json│   ├── es.json│   └── fr.json├── i18n.ts└── src    └── components        └── MyComponent            └── index.tsx
      .├── locales│   ├── en│   │  ├── footer.json│   │  └── navbar.json│   ├── fr│   │  ├── footer.json│   │  └── navbar.json│   └── es│      ├── footer.json│      └── navbar.json├── i18n.ts└── src    └── components        └── MyComponent            └── index.tsx
      .└── components    └── MyComponent        ├── index.content.ts        ├── index.test.tsx        ├── index.stories.tsx        └── index.tsx