Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Historia 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
- "Zaktualizuj Layout i obsłuż 404"v7.5.627.12.2025
- "Zaktualizowano dokumentację"v6.1.53.10.2025
- "Dodano dla React Router v7"v5.8.24.09.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ę React Router v7 za pomocą Intlayer | Internacjonalizacja (i18n)
Ten przewodnik pokazuje, jak zintegrować Intlayer dla płynnej internacjonalizacji w projektach React Router v7 z routingiem uwzględniającym lokalizację, wsparciem TypeScript oraz nowoczesnymi praktykami programistycznymi.
Ten przewodnik skupia się na routowaniu frontend. W przypadku routowania fs-routes, zapoznaj się z przewodnikiem Intlayer with React Router v7 File-System Routes.
Table of Contents
Dlaczego Interlayer zamiast alternatyw?
W porównaniu do głównych rozwiązań, takich jak „react-i18next” lub „i18next”, Intlayer jest rozwiązaniem wyposażonym w zintegrowane optymalizacje, takie jak:
Intlayer jest zoptymalizowany do doskonałej współpracy z React Router, oferując routing uwzględniający ustawienia lokalne, oprogramowanie pośredniczące do wykrywania ustawień regionalnych 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, jak skonfigurować Intlayer w aplikacji React Router v7
See the Config-Based Routing Template or File-System Routes Template on GitHub.
Zainstaluj zależności
Zainstaluj niezbędne pakiety, używając preferowanego menedżera pakietów:
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
Główny pakiet, który dostarcza narzędzia do internacjonalizacji, zarządzania konfiguracją, tłumaczeń, deklaracji treści, transpilecji oraz poleceń CLI.
react-intlayer Pakiet integrujący Intlayer z aplikacją React. Zapewnia dostawców kontekstu oraz hooki do internacjonalizacji w React.
vite-intlayer Zawiera wtyczkę Vite do integracji Intlayer z bundlerem Vite, a także middleware do wykrywania preferowanego języka użytkownika, zarządzania ciasteczkami oraz obsługi przekierowań URL.
Konfiguracja Twojego projektu
Utwórz plik konfiguracyjny, aby skonfigurować języki swojej aplikacji:
intlayer.config.tsKopiuj kodSkopiuj kod do schowka
import { type IntlayerConfig, Locales } from "intlayer"; const config: IntlayerConfig = { internationalization: { defaultLocale: Locales.ENGLISH, locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], }, }; export default config;Za pomocą tego pliku konfiguracyjnego możesz ustawić lokalizowane adresy URL, przekierowania w middleware, nazwy ciasteczek, lokalizację i rozszerzenie deklaracji zawartości, wyłączyć logi Intlayer w konsoli i wiele więcej. Pełną listę dostępnych parametrów znajdziesz w dokumentacji konfiguracyjnej.
Integracja Intlayer w konfiguracji Vite
Dodaj wtyczkę intlayer do swojej konfiguracji:
vite.config.tsKopiuj kodSkopiuj kod do schowka
Wtyczka Vite
intlayer()służy do integracji Intlayer z Vite. Zapewnia budowanie plików deklaracji zawartości i monitoruje je w trybie deweloperskim. Definiuje zmienne środowiskowe Intlayer w aplikacji Vite. Dodatkowo dostarcza aliasy w celu optymalizacji wydajności.Konfiguracja tras React Router v7
Skonfiguruj routing z trasami uwzględniającymi lokalizację:
app/routes.tsKopiuj kodSkopiuj kod do schowka
Set up your routing configuration to use file-system based routes with
flatRoutes:app/routes.tsKopiuj kodSkopiuj kod do schowka
The
flatRoutesfunction from@react-router/fs-routesenables file-system based routing, where the file structure in theroutes/directory determines your application's routes. TheignoredRouteFilesoption ensures that Intlayer content declaration files (.content.ts, etc.) are not treated as route files.Tworzenie komponentów layoutu
Skonfiguruj swój główny layout oraz layouty specyficzne dla lokalizacji:
Główny Layout
app/root.tsxKopiuj kodSkopiuj kod do schowka
Zadeklaruj swoją zawartość
Utwórz i zarządzaj deklaracjami zawartości, aby przechowywać tłumaczenia:
app/routes/[lang]/page.content.tsKopiuj kodSkopiuj kod do schowka
Twoje deklaracje treści mogą być zdefiniowane w dowolnym miejscu w aplikacji, pod warunkiem, że zostaną umieszczone w katalogu
contentDir(domyślnie./app). I muszą odpowiadać rozszerzeniu pliku deklaracji treści (domyślnie.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).Could be placed in
app/routes/($locale)._index.content.tsin case of using file-system based routing.Po więcej szczegółów odsyłamy do dokumentacji deklaracji treści.
Tworzenie komponentów uwzględniających lokalizację
Utwórz komponent
LocalizedLinkdo nawigacji uwzględniającej lokalizację:app/components/localized-link.tsxKopiuj kodSkopiuj kod do schowka
W przypadku, gdy chcesz nawigować do lokalizowanych tras, możesz użyć hooka
useLocalizedNavigate:app/hooks/useLocalizedNavigate.tsKopiuj kodSkopiuj kod do schowka
Wykorzystaj Intlayer na swoich stronach
Uzyskaj dostęp do swoich słowników treści w całej aplikacji:
Lokalizowana strona główna
app/routes/page.tsxKopiuj kodSkopiuj kod do schowka
app/routes/($locale)._index.tsxKopiuj kodSkopiuj kod do schowka
Aby dowiedzieć się więcej o hooku
useIntlayer, zapoznaj się z dokumentacją.Jeśli Twoja aplikacja już istnieje, możesz użyć Intlayer Compiler w połączeniu z poleceniem extract, aby przekonwertować tysiące komponentów w jedną sekundę.
Utwórz komponent przełącznika języka
Utwórz komponent, który pozwoli użytkownikom zmieniać języki:
app/components/locale-switcher.tsxKopiuj kodSkopiuj kod do schowka
app/components/locale-switcher.tsxKopiuj kodSkopiuj kod do schowka
Aby dowiedzieć się więcej o hooku
useLocale, zapoznaj się z dokumentacją.Dodaj zarządzanie atrybutami HTML
Utwórz hook do zarządzania atrybutami lang i dir w HTML:
app/hooks/useI18nHTMLAttributes.tsxKopiuj kodSkopiuj kod do schowka
Następnie użyj go w swoim komponencie root:
app/routes/layout.tsxKopiuj kodSkopiuj kod do schowka
Dodaj middleware
Możesz również użyć
intlayerProxydo dodania routingu po stronie serwera do aplikacji. Ta wtyczka automatycznie wykryje bieżące locale na podstawie adresu URL i ustawi odpowiedni plik cookie locale. Jeśli locale nie zostanie określone, wtyczka określi najbardziej odpowiednie locale na podstawie preferencji języka przeglądarki użytkownika. Jeśli locale nie zostanie wykryte, nastąpi przekierowanie do domyślnego locale.Pamiętaj, że aby użyć
intlayerProxyw produkcji, musisz przenieść pakietvite-intlayerzdevDependenciesdodependencies.Od wersji Intlayer v9,
intlayerProxy()jest dołączony bezpośrednio do wtyczkiintlayer()i domyślnie włączony przez opcjęrouting.enableProxy(truedomyślnie). Rejestrowanie go oddzielnie, jak pokazano poniżej, jest teraz opcjonalne - jest zachowane dla kompatybilności wstecznej i dla konfiguracji, które muszą kontrolować kolejność wtyczek. Ustawrouting.enableProxy: false, aby zrezygnować. Patrz notatki wydania v9.vite.config.tsKopiuj kodSkopiuj kod do schowka
Wyodrębnij zawartość swoich komponentów
OpcjonalneIf you have an existing codebase, transforming thousands of files can be time-consuming.
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
Configure TypeScript
Intlayer uses module augmentation to get benefits of TypeScript and make your codebase stronger.
Ensure your TypeScript configuration includes the autogenerated types:
Skopiuj kod do schowka
Git Configuration
It is recommended to ignore the files generated by Intlayer. This allows you to avoid committing them to your Git repository.
To do this, you can add the following instructions to your .gitignore file:
Skopiuj kod do schowka
VS Code Extension
To improve your development experience with Intlayer, you can install the official Intlayer VS Code Extension.
Install from the VS Code Marketplace
This extension provides:
- Autocompletion for translation keys.
- Real-time error detection for missing translations.
- Inline previews of translated content.
- Quick actions to easily create and update translations.
For more details on how to use the extension, refer to the Intlayer VS Code Extension documentation.
Idź dalej
Aby pójść dalej, możesz wdrożyć edytor wizualny lub wyeksternalizować swoje treści za pomocą CMS.
Odnośniki do dokumentacji
- Dokumentacja Intlayer
- Dokumentacja React Router v7
- Hook useIntlayer
- Hook useLocale
- Deklaracja zawartości
- Konfiguracja
Ten kompleksowy przewodnik zawiera wszystko, czego potrzebujesz, aby zintegrować Intlayer z React Router v7 w celu uzyskania w pełni umiędzynarodowionej aplikacji z routingiem uwzględniającym lokalizację i obsługą TypeScript.
Często Zadawane Pytania
React Router v7 nie dostarcza warstwy komunikatów, więc łączy się go z biblioteką i18n:
react-i18next/i18next: przestrzenie nazw JSON ładowane w czasie wykonywania, z osobnym detektorem lokalizacji podłączanym do routera.react-intliLingui: komunikaty ICU z krokiem ekstrakcji.Intlayer: zawartość deklarowana w dowolnym miejscu w bazie kodu (obok każdego komponentu lub centralnie), kompilowana w czasie budowania, w pełni typowana, z pomocnikami routingu uwzględniającymi lokalizację, tłumaczeniem AI, edytorem wizualnym i CMS.
Zobacz dlaczego Intlayer oraz benchmark.
Znacznie mniej niż konfiguracja oparta na przestrzeniach nazw, ponieważ strona nigdy nie pobiera katalogu, którego nie renderuje. Narzut renderowany po stronie serwera rozwiązuje zawartość na serwerze, a kompilator w czasie budowania zastępuje wywołania useIntlayer dokładnymi wpisami słownika, których używa komponent, dzięki czemu nieużywane klucze i nieużywane języki są usuwane, a dynamiczne słowniki dzielą resztę według lokalizacji. W porównaniu ze zwykłymi alternatywami Intlayer zmniejsza rozmiar bundle i stron nawet o 50%. Zobacz optymalizację bundle oraz benchmark.
Tak, istnieją dwie ścieżki. Możesz migrować zawartość stopniowo za pomocą przewodnika migracji z react-i18next lub przewodnika migracji z i18next. Albo możesz w pełni zachować obecne API: adaptery kompatybilności udostępniają dokładnie to samo API co react-i18next, react-intl i i18next, ale obsługiwane przez słowniki Intlayer, więc zmieniają się tylko importy, a kod komponentów pozostaje bez zmian.
Tak. Wtyczka sync JSON utrzymuje 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 dla poszczególnych lokalizacji pozwalają dzielić zawartość według języków zamiast grupować wszystkie lokalizacje w jednym pliku.
Nie. Uruchom npx intlayer extract, a Intlayer odczyta Twoje komponenty, wyciągnie ciągi widoczne dla użytkownika i zapisze plik .content obok każdego z nich, dzięki czemu przeglądasz diff zamiast kopiować ciągi do katalogu pojedynczo. Krok 12 tego przewodnika opisuje to szczegółowo.
W przypadku w pełni zautomatyzowanego potoku Intlayer Compiler robi to samo w czasie budowania: skanuje źródła JSX, TSX, Vue i Svelte przy każdej zmianie, generuje słowniki i utrzymuje je w synchronizacji za pośrednictwem HMR, więc nie ma żadnych kluczy do ręcznego utrzymywania.
Warto znać dwa ograniczenia przed włączeniem kompilatora. Działa on na zasadzie analizy statycznej, więc ciągi istniejące tylko w czasie wykonywania, takie jak kody błędów API czy pola CMS, pozostają poza zasięgiem. Ponadto musi odróżniać tekst widoczny dla użytkownika od logiki aplikacji, takiej jak className="active" czy kod statusu, co wymaga kilku adnotacji w dużej bazie kodu. Polecenie extract unika obu tych problemów.
Pięć narzędzi, wszystkie opcjonalne:
- Rozszerzenie VS Code: przejdź od klucza
useIntlayerdo pliku zawartości, który go deklaruje, wyodrębnij zawartość z komponentu i uruchamiaj build, fill, test, push i pull z palety poleceń lub dedykowanej karty Intlayer. - Serwer LSP: te same możliwości w dowolnym edytorze obsługującym LSP: przejście do definicji, znajdowanie referencji, podgląd po najechaniu kursorem, autouzupełnianie kluczy i pól oraz ostrzeżenia, gdy klucz nie jest zadeklarowany. Rozpoznaje również wywołania
i18next,react-i18next,next-intliuse-intl. - Serwer MCP: udostępnia dokumentację i CLI Intlayer dla Cursor, VS Code, Claude Desktop, Claude Code i ChatGPT.
- Umiejętności agentów: ukierunkowane umiejętności, takie jak
intlayer-config,intlayer-cliiintlayer-content, plus jedna na framework. - Wtyczka ESLint:
no-raw-textoznacza zakodowane na stałe ciągi znaków.
