Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Historia wersji
- "Dodano hooki useIntlayer / useLocale oraz middleware Astro.locals do astro-intlayer"v9.5.519.09.2026
- "Aktualizacja użycia API useIntlayer w Solid do bezpośredniego dostępu do właściwości"v8.9.04.05.2026
- "Dodano polecenie init"v7.5.930.12.2025
- "Aktualizacja integracji z Astro, konfiguracji i użytkowania"v6.2.03.10.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ą witrynę Astro za pomocą Intlayer | Międzynarodowość (i18n)
Spis treści
Dlaczego Interlayer zamiast alternatyw?
W porównaniu do głównych rozwiązań, takich jak „astro-i18n” czy „i18next”, Intlayer jest rozwiązaniem wyposażonym w zintegrowane optymalizacje, takie jak:
Intlayer jest zoptymalizowany do doskonałej współpracy z Astro, oferując wielojęzyczny routing, mapę witryny 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 po konfiguracji Intlayer w Astro
Sprawdź szablon aplikacji na GitHubie.
Zainstaluj zależności
Zainstaluj niezbędne pakiety za pomocą preferowanego menedżera pakietów:
bashKopiuj kodSkopiuj kod do schowka
flaga
--interactivejest opcjonalna. Użyjintlayer-cli initjeśli jesteś agentem AI.To polecenie wykryje twoje środowisko i zainstaluje wymagane pakiety. Na przykład:
bashKopiuj kodSkopiuj kod do schowka
intlayer Główny pakiet zapewniający narzędzia i18n do zarządzania konfiguracją, tłumaczeniami, deklaracją treści, transpilacją i poleceniami CLI.
astro-intlayer Zawiera wtyczkę integracji z Astro do łączenia Intlayer z bundlerem Vite, middleware rozpoznające ustawienia regionalne każdego żądania w
Astro.locals.intlayeroraz hookiuseIntlayer/useDictionary/useLocale. Ta sama ścieżka importu prowadzi do implementacji serwerowej w nagłówku.astrooraz klienckiej (opartej navanilla-intlayer) w blokach<script>.
Skonfiguruj swój projekt
Architektura
W tej architekturze integracja
intlayer()zarejestrowana wastro.config.tsbuduje Twoje słowniki i dodaje middleware, który rozwiązuje locale każdego żądania i udostępnia je wAstro.locals.intlayer. Strony znajdują się w segmencie restsrc/pages/[...locale]/, dzięki czemu domyślne locale jest serwowane bez prefiksu, a każde inne locale otrzymuje własny dedykowany adres URL. Pliki.astroodczytują zawartość za pomocą hookówuseIntlayer/useLocalezastro-intlayer, a deklaracje zawartości są umieszczane obok Twoich komponentów wsrc/.bashKopiuj kodSkopiuj kod do schowka
Konfiguracja
Utwórz plik konfiguracyjny, aby zdefiniować języki swojej aplikacji:
intlayer.config.tsKopiuj kodSkopiuj kod do schowka
Za pośrednictwem tego pliku konfiguracyjnego możesz ustawić zlokalizowane adresy URL, przekierowania oprogramowania pośredniczącego, nazwy plików cookie, lokalizację i rozszerzenia deklaracji treści, wyłączyć dzienniki Intlayer w konsoli i wiele więcej. Pełną listę dostępnych parametrów znajdziesz w dokumentacji konfiguracji.
Zintegruj Intlayer ze swoją konfiguracją Astro
Dodaj wtyczkę
intlayerdo konfiguracji Astro.astro.config.tsKopiuj kodSkopiuj kod do schowka
Wtyczka integracyjna
intlayer()służy do integracji Intlayer z Astro. Zapewnia ona generowanie plików deklaracji treści i monitoruje je w trybie deweloperskim. Definiuje zmienne środowiskowe Intlayer w aplikacji Astro i udostępnia aliasy w celu optymalizacji wydajności.Zadeklaruj swoją treść
Twórz i zarządzaj swoimi deklaracjami treści, aby przechowywać tłumaczenia:
src/app.content.tsxKopiuj kodSkopiuj kod do schowka
Deklaracje treści mogą być definiowane w dowolnym miejscu aplikacji, pod warunkiem, że są zawarte w
contentDir(domyślnie./src) i pasują do rozszerzenia pliku deklaracji treści (domyślnie.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).Więcej informacji znajdziesz w dokumentacji deklaracji treści.
Korzystanie z treści w Astro
Używaj słowników w plikach
.astroza pomocą hooków wyeksportowanych przezastro-intlayer. Dzielą one sygnatury zreact-intlayer:useIntlayer("key")zwraca zawartość słownika, auseLocale()bieżące ustawienia regionalne, bez konieczności przekazywania argumentów.Ustawienia regionalne pochodzą z middleware
astro-intlayer, które integracja rejestruje przed Twoim własnymsrc/middleware.ts. Rozpoznaje je dla każdego żądania, na podstawie prefiksu URL, następnie ustawień regionalnych zapisanych przez klienta (cookie lub nagłówek), a potemAccept-Language, i zapisuje wAstro.locals.intlayer. Wstępnie renderowane strony używają tylko URL, ponieważ są renderowane raz dla każdego odwiedzającego.Należy również dodać metadane SEO, takie jak hreflang i linki kanoniczne, do każdej strony oraz dołączyć przełącznik języków, aby umożliwić użytkownikom zmianę języka.
src/pages/index.astroKopiuj kodSkopiuj kod do schowka
Astro.locals.intlayerudostępnia równieżlocale,defaultLocaleiavailableLocalesdla Twoich własnych middleware i endpointów. Przekaż ustawienia regionalne lub selektor jako drugi argument (useIntlayer("app", "fr"),useIntlayer("faq", { item: 2 })), aby nadpisać ustawienia regionalne żądania dla jednego wywołania.Zlokalizowany routing
Twórz dynamiczne segmenty tras (np.
src/pages/[locale]/index.astro), aby serwować zlokalizowane strony:src/pages/[locale]/index.astroKopiuj kodSkopiuj kod do schowka
Uwaga dotycząca konfiguracji routingu: Struktura katalogów, którą używasz, zależy od ustawienia
middleware.routingw plikuintlayer.config.ts:prefix-no-default(domyślnie): Przechowuje domyślny język w katalogu głównym (bez prefiksu) i dodaje prefiksy do pozostałych. Użyj[...locale], aby uwzględnić wszystkie przypadki.prefix-all: Wszystkie adresy URL mają prefiks języka. Możesz użyć standardowego[locale], jeśli nie musisz obsługiwać katalogu głównego osobno.search-paramlubno-prefix: Folder z językiem nie jest potrzebny. Język jest obsługiwany za pośrednictwem parametrów wyszukiwania lub ciasteczek.
Dodaj przełącznik języka
Integracja z Astro dodaje oprogramowanie pośredniczące Vite, które pomaga w routingu uwzględniającym język i definiowaniu środowiska podczas programowania. Możesz również użyć własnej logiki lub narzędzi
intlayer, takich jakgetLocalizedUrl, aby tworzyć linki między językami.src/components/LocaleSwitcher.astroKopiuj kodSkopiuj kod do schowka
Uwaga dotycząca trwałości:
setLocalez klienckiegouseLocalezapisuje preferencje językowe użytkownika w pliku cookie. Pozwala to Intlayer zapamiętać wybór i automatycznie przekierować użytkownika na preferowany język podczas kolejnych wizyt: strony renderowane na żądanie (adapter zoutput: 'server'lubprerender = false) są przekierowywane przez middleware Intlayer przed wysłaniem jakiegokolwiek kodu HTML, podczas gdy strony wstępnie wyrenderowane, serwowane jako pliki statyczne, są przekierowywane przez niewielki skrypt wstrzykiwany przez integrację na każdej stronie. Ustawrouting.enableProxynafalse, aby wyłączyć oba mechanizmy. W środowiskuastro devplik cookie jest ignorowany jako źródło przekierowania, chyba żerouting.enableProxyjest ustawione natrue, dzięki czemu nieaktualny plik cookie nie przejmie stron, nad którymi pracujesz.Wzajemna kompatybilność serwer / klient:
astro-intlayerprowadzi do swoich hooków serwerowych w nagłówku frontmatter (odczytującAstro.locals) oraz do hooków klienckichvanilla-intlayerw blokach<script>i wyspach (islands), z tymi samymi nazwami i strukturą zawartości.setLocaleionChangedziałają tylko na kliencie, wywołaj tam razinstallIntlayer(), aby zainicjalizować magazyn klienta.astro-intlayer/clientjawnie udostępnia punkt wejścia klienta.Sitemap i Robots.txt
Intlayer udostępnia narzędzia do dynamicznego generowania zlokalizowanych map witryny (sitemaps) i plików robots.txt.
Mapa witryny
Intlayer zawiera wbudowany generator mapy witryny, który ułatwia tworzenie mapy witryny dla aplikacji. Obsługuje zlokalizowane trasy i dodaje niezbędne metadane dla wyszukiwarek.
Mapa witryny generowana przez Intlayer obsługuje przestrzeń nazw
xhtml:link(Hreflang XML Extensions). W przeciwieństwie do domyślnych generatorów map witryny, które wymieniają tylko surowe adresy URL, Intlayer automatycznie tworzy wymagane dwukierunkowe linki między wszystkimi wersjami językowych strony (np./about,/about?lang=fri/about?lang=es). Zapewnia to, że wyszukiwarki prawidłowo indeksują i serwują odpowiednią wersję językową właściwej grupie odbiorców.Utwórz
src/pages/sitemap.xml.ts, aby wygenerować mapę witryny zawierającą wszystkie zlokalizowane trasy.src/pages/sitemap.xml.tsKopiuj kodSkopiuj kod do schowka
Robots.txt
Utwórz
src/pages/robots.txt.tsaby kontrolować crawlowanie wyszukiwarek.src/pages/robots.txt.tsKopiuj kodSkopiuj kod do schowka
Kontynuuj używanie swojej ulubionej frameworku
Kontynuuj używanie swojej ulubionej frameworku do budowania aplikacji.
- Intlayer + React: Intlayer with React
- Intlayer + Vue: Intlayer with Vue
- Intlayer + Svelte: Intlayer with Svelte
- Intlayer + Solid: Intlayer with Solid
- Intlayer + Preact: Intlayer with Preact
- Intlayer + Lit: Intlayer with Lit
Wyodrębnij treść swoich komponentów
OpcjonalneJeśli posiadasz istniejącą bazę kodu, transformacja tysięcy plików może być czasochłonna.
Aby ułatwić ten proces, Intlayer proponuje compiler / extractor do transformacji komponentów i wyodrębnienia treści.
Aby to 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 konfiguracji compiler: { /** * Wskazuje, czy compiler powinien być włączony. */ enabled: true, /** * Definiuje ścieżkę plików wyjściowych */ output: ({ fileName, extension }) => `./${fileName}${extension}`, /** * Wskazuje, czy komponenty powinny być zapisane po transformacji. * * - Jeśli `true`, compiler przepisze plik komponentu na dysku. Transformacja będzie trwała, a compiler pominąć transformację w następnym procesie. W ten sposób compiler może transformować aplikację, a następnie można go usunąć. * * - Jeśli `false`, compiler wstrzyknie wywołanie funkcji `useIntlayer()` do kodu w outputzie budowania, i zachowa intaktną bazę kodu. Transformacja będzie wykonana tylko w pamięci. */ saveComponents: false, /** * Prefiks klucza słownika */ dictionaryKeyPrefix: "", }, }; export default config;Uruchom extractor, aby transformować komponenty i wyodrębnić treść
bashKopiuj kodSkopiuj kod do schowka
Zbuduj aplikację, aby przekształcić komponenty i wyodrębnić treść
bashKopiuj kodSkopiuj kod do schowka
Konfiguracja TypeScript
Intlayer wykorzystuje rozszerzenie modułów (module augmentation), aby skorzystać z TypeScript, czyniąc bazę kodu bardziej solidną.


Upewnij się, że Twoja konfiguracja TypeScript zawiera automatycznie generowane typy.
Skopiuj kod do schowka
Konfiguracja Git
Zaleca się ignorowanie plików generowanych przez Intlayer. Zapobiega to ich przesyłaniu do repozytorium Git.
Aby to zrobić, dodaj następujące instrukcje do pliku .gitignore:
Skopiuj kod do schowka
Rozszerzenie VS Code
Aby poprawić wrażenia z programowania z Intlayer, możesz zainstalować oficjalne rozszerzenie Intlayer dla VS Code.
Instalacja z VS Code Marketplace
To rozszerzenie zapewnia:
- Autouzupełnianie kluczy tłumaczeń.
- Wykrywanie błędów w czasie rzeczywistym dla brakujących tłumaczeń.
- Podgląd inline przetłumaczonej treści.
- Szybkie akcje do łatwego tworzenia i aktualizowania tłumaczeń.
Więcej informacji na temat korzystania z rozszerzenia znajdziesz w dokumentacji rozszerzenia VS Code.
Pogłębiaj swoją wiedzę
Jeśli chcesz dowiedzieć się więcej, możesz również wdrożyć Edytor Wizualny lub użyć CMS, aby wyeksternalizować swoją treść.
Często Zadawane Pytania
Astro posiada opcję i18n na poziomie routingu, która obsługuje prefiksy i przekierowania, ale nie zarządza samą treścią, więc nadal potrzebna jest warstwa wiadomości:
- Wbudowane
i18nw Astro z ręcznie tworzonymi słownikami JSON lub TypeScript: brak zależności, ale brak typowania, reguł liczby mnogiej i narzędzi. i18nextlubvue-i18n/svelte-i18nwewnątrz wysp (islands): osobna biblioteka dla każdego frameworka wyspy, każda z własnym katalogiem.Intlayer: jedna warstwa treści współdzielona przez strony Astro i każdy framework wyspy, kompilowana w czasie budowania, w pełni typowana, z tłumaczeniem AI, edytorem wizualnym i systemem CMS.
Zaletą w Astro jest to, że ten sam słownik obsługuje stronę .astro oraz wyspę React, Vue, Svelte, Solid, Preact lub Lit, zamiast osobnej biblioteki i18n na każde środowisko wyspy. Zobacz dlaczego Intlayer.
Znacznie mniej niż rozwiązania oparte na przestrzeniach nazw, ponieważ strona nigdy nie pobiera katalogu, którego nie renderuje. Strony Astro są renderowane w czasie budowania, więc dostarczają przetłumaczony HTML bez żadnego słownika; tylko wyspy go otrzymują. Kompilator czasu budowy rozwiązuje odwołania do treści do dokładnych wpisów używanych przez komponent, 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 i18next, aby przenieść treść. Możesz także migrować stopniowo: wtyczka synchronizacji JSON utrzymuje Twoje istniejące katalogi JSON jako źródło prawdy i generuje z nich słowniki Intlayer, dzięki czemu obie warstwy pozostają zsynchronizowane podczas przenoszenia komponentów pojedynczo.
Tak. Wtyczka synchronizacji JSON utrzymuje Twoje pliki /messages/{locale}/{namespace}.json jako źródło prawdy i generuje słowniki Intlayer w obu kierunkach. Wtyczka synchronizacji PO robi to samo dla katalogów gettext, a pliki per locale pozwalają rozdzielić treść 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. Krok 15 tego przewodnika to opisuje.
W przypadku w pełni zautomatyzowanego procesu Intlayer Compiler robi to samo w czasie budowania: skanuje kod źródłowy JSX, TSX, Vue i Svelte przy każdej zmianie, generuje słowniki i utrzymuje je zsynchronizowane przez HMR, dzięki czemu nie trzeba ręcznie zarządzać kluczami.
Warto znać dwa ograniczenia przed włączeniem kompilatora. Działa on przez analizę statyczną, więc ciągi istniejące tylko w czasie wykonywania, takie jak kody błędów API czy pola z CMS, pozostają poza zasięgiem. Ponadto musi odróżniać tekst użytkownika od logiki aplikacji (np. className="active" czy kod statusu), co wymaga pewnych adnotacji w dużych bazach kodu. 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.
