Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Ta dokumentacja jest nieaktualna, wersja bazowa została zaktualizowana w 29 sierpnia 2026.
Przejdź do angielskiej wersji dokumentuHistoria wersji
- "Aktualizacja użycia API useIntlayer w Solid do bezpośredniego dostępu do właściwości"v8.9.04.05.2026
- "Dodaj polecenie init"v7.5.930.12.2025
- "Inicjalizacja historii"v7.1.1020.11.2025
Treść tej strony została przetłumaczona przy użyciu sztucznej inteligencji.
Zobacz ostatnią wersję oryginalnej treści w języku angielskimJeśli masz pomysł na ulepszenie tej dokumentacji, zachęcamy do przesłania pull requesta na GitHubie.
Link do dokumentacji na GitHubieKopiuj dokument Markdown do schowka
Przetłumacz swoją stronę SvelteKit za pomocą Intlayer | Internacjonalizacja (i18n)
Spis treści
Dlaczego Interlayer zamiast alternatyw?
W porównaniu do głównych rozwiązań, takich jak svelte-i18n czy i18next, Intlayer jest rozwiązaniem wyposażonym w zintegrowane optymalizacje, takie jak:
Intlayer jest zoptymalizowany do doskonałej współpracy z SvelteKit, oferując routing wielojęzyczny, obsługę SSR i wszystkie funkcje potrzebne do skalowania internacjonalizacji (i18n).
Zamiast ładować ogromne pliki JSON na swoje strony, ładuj tylko niezbędną treść. Intlayer pomaga zmniejszyć rozmiary bundle'a i stron nawet o 50%.
Określanie zakresu zawartości aplikacji ułatwia konserwację aplikacji na dużą skalę. Możesz powielić lub usunąć pojedynczy folder funkcji bez obciążania psychicznego koniecznością przeglądania całej bazy kodu zawartości. Dodatkowo Inlayer jest w pełni napisany, aby zapewnić dokładność treści.
Wspólna lokalizacja treści zmniejsza potrzebny kontekst dzięki modelom dużego języka (LLM). Intlayer zawiera także zestaw narzędzi, taki jak CLI do sprawdzania brakujących tłumaczeńLSP, MCP i agent skills, aby praca programisty (DX) była jeszcze płynniejsza dla agentów AI.
Korzystaj z automatyzacji, aby tłumaczyć w swoim potoku CI/CD przy użyciu wybranego LLM na koszt dostawcy sztucznej inteligencji. Intlayer oferuje także kompilator do automatyzacji ekstrakcji treści, a także [platformę internetową] (/pl/doc/concept/cms), która pomaga tłumaczyć w tle.
Łączenie ogromnych plików JSON z komponentami może prowadzić do problemów z wydajnością i reaktywnością. Inlayer optymalizuje ładowanie treści w czasie kompilacji.
Więcej niż tylko rozwiązanie i18n, Intlayer zapewnia samodzielny edytor wizualny i pełny CMS, który pomoże Ci zarządzać wielojęzyczną treścią w w czasie rzeczywistym, dzięki czemu współpraca z tłumaczami, copywriterami i innymi członkami zespołu będzie płynna. Treść może być przechowywana lokalnie i/lub zdalnie.
Przewodnik krok po kroku: konfiguracja Intlayer w aplikacji SvelteKit
Zobacz Application Template na GitHub.
Aby rozpocząć, utwórz nowy projekt SvelteKit. Oto końcowa struktura, którą stworzymy:
Skopiuj kod do schowka
Instalacja zależności
Zainstaluj niezbędne pakiety za pomocą npm:
bashKopiuj kodSkopiuj kod do schowka
flaga
--interactivejest opcjonalna. Użyjintlayer-cli init, jeśli jesteś agentem AI.To polecenie wykryje Twoje środowisko i zainstaluje wymagane pakiety. Na przykład:
bashKopiuj kodSkopiuj kod do schowka
- intlayer: Podstawowy pakiet i18n.
- svelte-intlayer: Zapewnia dostawców kontekstu i sklepy dla Svelte/SvelteKit.
- vite-intlayer: Wtyczka Vite do integracji deklaracji treści z procesem budowania.
Konfiguracja projektu
Utwórz plik konfiguracyjny w katalogu głównym projektu:
intlayer.config.tsKopiuj kodSkopiuj kod do schowka
Integracja Intlayer w konfiguracji Vite
Zaktualizuj swój plik
vite.config.ts, aby uwzględnić wtyczkę Intlayer. Ta wtyczka obsługuje transpileację Twoich plików z treścią.vite.config.tsKopiuj kodSkopiuj kod do schowka
Zadeklaruj swoją treść
Utwórz pliki deklaracji treści w dowolnym miejscu w folderze
src(np.src/lib/contentlub obok swoich komponentów). Pliki te definiują tłumaczoną treść dla Twojej aplikacji, używając funkcjit()dla każdego języka.Wykorzystaj Intlayer w swoich komponentach
Teraz możesz używać funkcji
useIntlayerw dowolnym komponencie Svelte. Zwraca ona reaktywny store, który automatycznie aktualizuje się, gdy zmieni się locale. Funkcja będzie automatycznie respektować bieżący locale (zarówno podczas SSR, jak i nawigacji po stronie klienta)., aby uzyskać dostęp do jego reaktywnej wartości (np.
$content.title).src/lib/components/Component.svelteKopiuj kodSkopiuj kod do schowka
Skonfiguruj routing
OpcjonalnePoniższe kroki pokazują, jak skonfigurować routing oparty na lokalizacji w SvelteKit. Pozwala to na dodanie prefiksu lokalizacji do adresów URL (np.
/en/about,/fr/about) dla lepszego SEO i doświadczenia użytkownika.bashKopiuj kodSkopiuj kod do schowka
Obsługa wykrywania lokalizacji po stronie serwera
W SvelteKit serwer musi znać lokalizację użytkownika, aby wyrenderować odpowiednią zawartość podczas SSR. Używamy
hooks.server.tsdo wykrywania lokalizacji z URL lub ciasteczek.Utwórz lub zmodyfikuj plik
src/hooks.server.ts:src/hooks.server.tsKopiuj kodSkopiuj kod do schowka
Następnie utwórz pomocnika do pobierania lokalizacji użytkownika z eventu żądania:
src/lib/getLocale.tsKopiuj kodSkopiuj kod do schowka
getLocaleFromStoragesprawdzi lokalizację na podstawie nagłówka lub ciasteczka w zależności od Twojej konfiguracji. Zobacz Konfiguracja po więcej szczegółów.Funkcja
localeDetectorprzetworzy nagłówekAccept-Languagei zwróci najlepsze dopasowanie.Jeśli lokalizacja nie jest skonfigurowana, chcemy zwrócić błąd 404. Aby to ułatwić, możemy stworzyć funkcję
match, która sprawdzi, czy lokalizacja jest poprawna:/src/params/locale.tsKopiuj kodSkopiuj kod do schowka
Uwaga: Upewnij się, że Twój plik
src/app.d.tszawiera definicję lokalizacji:typescriptKopiuj kodSkopiuj kod do schowka
Dla pliku
+layout.sveltemożemy usunąć wszystko, aby zachować tylko statyczną zawartość, niezwiązaną z i18n:src/+layout.svelteKopiuj kodSkopiuj kod do schowka
Następnie utwórz nową stronę i layout w grupie
[[locale=locale]]:src/routes/[[locale=locale]]/+layout.tsKopiuj kodSkopiuj kod do schowka
src/routes/[[locale=locale]]/+layout.svelteKopiuj kodSkopiuj kod do schowka
src/routes/[[locale=locale]]/+page.tsKopiuj kodSkopiuj kod do schowka
src/routes/[[locale=locale]]/+page.svelteKopiuj kodSkopiuj kod do schowka
Linki z internacjonalizacją
OpcjonalneDla SEO zaleca się poprzedzanie swoich ścieżek lokalizacją (np.
/en/about,/fr/about). Ten komponent automatycznie dodaje prefiks lokalizacji do każdego linku.src/lib/components/LocalizedLink.svelteKopiuj kodSkopiuj kod do schowka
Jeśli używasz
gotoz SvelteKit, możesz zastosować tę samą logikę zgetLocalizedUrl, aby nawigować do zlokalizowanego URL:typescriptKopiuj kodSkopiuj kod do schowka
Przełącznik języka
OpcjonalneAby umożliwić użytkownikom zmianę języka, zaktualizuj URL.
src/lib/components/LanguageSwitcher.svelteKopiuj kodSkopiuj kod do schowka
Dodaj backend proxy
OpcjonalneAby dodać backend proxy do swojej aplikacji SvelteKit, możesz użyć funkcji
intlayerProxydostarczonej przez wtyczkęvite-intlayer. Ta wtyczka automatycznie wykryje najlepszy locale dla użytkownika na podstawie URL, ciasteczek i preferencji językowych przeglądarki.Od wersji Intlayer v9,
intlayerProxy()jest wbudowany bezpośrednio w wtyczkęintlayer()i domyślnie włączony za pomocą opcjirouting.enableProxy(truedomyślnie). Rejestrowanie go oddzielnie, jak pokazano poniżej, jest teraz opcjonalne — jest zachowywane dla zgodności wstecznej i dla konfiguracji, które wymagają kontroli kolejności wtyczek. Ustawrouting.enableProxy: false, aby zrezygnować. Zobacz uwagi do wydania v9.vite.config.tsKopiuj kodSkopiuj kod do schowka
Konfiguracja edytora intlayer / CMS
OpcjonalneAby skonfigurować edytor intlayer, należy postępować zgodnie z dokumentacją edytora intlayer.
Aby skonfigurować CMS intlayer, należy postępować zgodnie z dokumentacją CMS intlayer.
Aby móc wizualizować selektor edytora intlayer, musisz użyć składni komponentu w swojej zawartości intlayer.
Component.svelteKopiuj kodSkopiuj kod do schowka
Wyodrębnij zawartość swoich komponentów
OpcjonalneJeśli masz istniejącą bazę kodu, transformacja tysięcy plików może być czasochłonna.
Aby ułatwić ten proces, Intlayer proponuje kompilator / ekstraktor, aby przetransformować komponenty i wyodrębnić zawartość.
Aby go skonfigurować, możesz dodać sekcję
compilerw plikuintlayer.config.ts:intlayer.config.tsKopiuj kodSkopiuj kod do schowka
import { type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { // ... Reszta Twojej konfiguracji compiler: { /** * Wskazuje, czy kompilator powinien być włączony. */ enabled: true, /** * Definiuje ścieżkę plików wyjściowych */ output: ({ fileName, extension }) => `./${fileName}${extension}`, /** * Wskazuje, czy komponenty powinny zostać zapisane po transformacji. W ten sposób kompilator można uruchomić tylko raz, aby przetransformować aplikację, a następnie go usunąć. */ saveComponents: false, /** * Prefiks klucza słownika */ dictionaryKeyPrefix: "", }, }; export default config;Uruchom ekstraktor, aby przetransformować komponenty i wyodrębnić zawartość
bashKopiuj kodSkopiuj kod do schowka
Since v9, the
intlayerCompileris included in theintlayerplugin. So you don't need to add it manually.Zaktualizuj
vite.config.ts, aby dołączyć wtyczkęintlayerCompiler:vite.config.tsKopiuj kodSkopiuj kod do schowka
bashKopiuj kodSkopiuj kod do schowka
Konfiguracja Git
Zaleca się ignorowanie plików generowanych przez Intlayer.
Skopiuj kod do schowka
Idź dalej
- Edytor wizualny: Zintegruj Intlayer Visual Editor, aby edytować tłumaczenia bezpośrednio z interfejsu użytkownika.
- CMS: Zewnętrz zarządzanie treścią, korzystając z Intlayer CMS.
Często Zadawane Pytania
svelte-i18noraztypesafe-i18n: katalogi oparte na store'ach, ręcznie podpinane do funkcji ładowania (load).Paraglide: kompilator komunikatów z adapterem dla SvelteKit.Intlayer: najbardziej zaawansowane rozwiązanie. Treści deklarowane w dowolnym miejscu bazy kodu (obok każdego komponentu lub centralnie) i kompilowane w czasie budowy, w pełni typowane, z tłumaczeniem AI, edytorem wizualnym i systemem CMS.
Główną zaletą w SvelteKit jest deklaracja treści per komponent, pełne wsparcie dla SSR i prerenderowania w plikach +layout.server.ts i hooks.server.ts oraz integracja z systemem reaktywności Svelte. Zobacz dlaczego Intlayer.
Znacznie mniej niż rozwiązania oparte na przestrzeniach nazw, ponieważ strona nigdy nie pobiera katalogu, którego nie renderuje. Kompilator czasu budowy zastępuje wywołania useIntlayer dokładnymi wpisami ze słownika, których używa komponent, dzięki czemu nieużywane klucze i nieużywane języki są usuwane, a słowniki dynamiczne dzielą resztę na poszczególne języki. W porównaniu z typowymi alternatywami, Intlayer zmniejsza rozmiar bundle'a i strony nawet o 50%. Zobacz optymalizację bundle'a oraz benchmark.
W znacznej mierze tak. Postępuj zgodnie z przewodnikiem migracji z svelte-i18n. Możesz także migrować stopniowo: wtyczka synchronizacji JSON utrzymuje Twoje istniejące pliki JSON jako źródło prawdy i generuje z nich słowniki Intlayer.
Tak. Wtyczka sync JSON utrzymuje Twoje pliki /messages/{locale}/{namespace}.json jako źródło prawdy i generuje z nich słowniki Intlayer w obu kierunkach. Wtyczka sync PO robi to samo dla katalogów gettext, a pliki per locale pozwalają rozdzielić zawartość według języka zamiast grupować lokalizacje w jednym pliku.
Nie. Uruchom npx intlayer extract, a Intlayer odczyta Twoje komponenty, wyodrębni ciągi widoczne dla użytkownika i utworzy plik .content obok każdego z nich, dzięki czemu przeglądasz diff zamiast ręcznie kopiować ciągi do katalogu pojedynczo.
W przypadku w pełni zautomatyzowanego procesu Intlayer Compiler robi to samo w czasie budowania: skanuje kod JSX, TSX, Vue i Svelte przy każdej zmianie, generuje słowniki i utrzymuje je w synchronizacji za pośrednictwem hot module replacement, dzięki czemu nie trzeba w ogóle ręcznie utrzymywać kluczy.
Warto pamiętać o dwóch ograniczeniach przed włączeniem kompilatora. Działa on w oparciu o analizę statyczną, więc ciągi tekstowe istniejące tylko w czasie wykonywania, takie jak kody błędów API czy pola z CMS, pozostają poza jego zasięgiem. Musi on także odróżnić tekst dla użytkownika od logiki aplikacji, takiej jak className="active" czy kod stanu, co w dużej bazie kodu wymaga kilku adnotacji. Polecenie extract unika obu tych problemów, pozostawiając Ci pełną kontrolę.
Pięć narzędzi, wszystkie opcjonalne:
- Rozszerzenie VS Code: przejście od klucza
useIntlayerdo pliku treści, który go deklaruje, wyodrębnianie treści z komponentu oraz uruchamianie build, fill, test, push i pull z palety poleceń lub dedykowanej karty Intlayer. - Serwer LSP: taka sama świadomość w dowolnym edytorze obsługującym LSP, z funkcjami przejdź do definicji (go to definition), znajdź wszystkie referencje, podglądem przetłumaczonej wartości po najechaniu kursorem, autouzupełnianiem kluczy i pól oraz ostrzeżeniem, gdy klucz nie jest nigdzie zadeklarowany. Rozpoznaje również wywołania
i18next,react-i18next,next-intliuse-intl, co ułatwia migrację. - Serwer MCP: udostępnia dokumentację i CLI Intlayer dla Cursor, VS Code, Claude Desktop, Claude Code i ChatGPT, dzięki czemu asystent odpowiada na podstawie aktualnej dokumentacji zamiast zgadywać i może samodzielnie wykonywać polecenia, takie jak
intlayer fill. - Umiejętności agenta (Agent skills): wyspecjalizowane umiejętności, takie jak
intlayer-config,intlayer-cliiintlayer-content, oraz po jednej dla każdego frameworka, które uczą agenta konfiguracji routingu i typów węzłów treści. - Wtyczka ESLint: reguła
no-raw-textoznacza zakodowane na stałe ciągi tekstowe, z dodatkowymi regułami dla statycznych kluczy słownika i nieużywanej zawartości.
