Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Historia wersji
- "Init history"v9.0.05.06.2026
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
Migracja z react-i18next / i18next do Intlayer
Dlaczego migrować z react-i18next / i18next do Intlayer?
Zamiast ładować ogromne pliki JSON do stron, ładuj tylko niezbędną zawartość. Intlayer pomaga zmniejszyć bundle i rozmiary stron nawet o 50%.
Ograniczanie zawartości aplikacji ułatwia utrzymanie dużych aplikacji. Możesz zduplikować lub usunąć jeden folder funkcji bez konieczności przeglądania całej bazy kodu zawartości. Ponadto Intlayer jest w pełni wpisany aby zapewnić dokładność zawartości.
Intlayer jest również rozwiązaniem z najaktywniejszym rozwojem w ekosystemie i18n, problemy są naprawiane szybko, nowe adaptery frameworku pojawiają się regularnie, a podstawowy API jest stale ulepsszany na podstawie opinii z produkcji.
Umieszczanie zawartości razem zmniejsza kontekst potrzebny przez Duże Modele Języka (LLM). Intlayer zawiera również pakiet narzędzi, takich jak CLI do testowania brakujących tłumaczeń, LSP, MCP i agent skills, aby doświadczenie programisty (DX) było jeszcze płynniejsze dla agentów AI.
Użyj automatyzacji do tłumaczenia w pipeline CI/CD korzystając z wybranego LLM za koszt dostawcy AI. Intlayer oferuje również kompilator do automatycznego wyodrębniania zawartości, a także platformę internetową, która pomaga tłumaczyć w tle.
Łączenie dużych plików JSON z komponentami może prowadzić do problemów z wydajnością i reaktywnością. Intlayer optymalizuje ładowanie zawartości w czasie budowania.
Więcej niż tylko rozwiązanie i18n, Intlayer zapewnia samodzielnie hostowany edytor wizualny i pełny CMS, aby pomóc ci zarządzać wielojęzyczną zawartością w rzeczywistym czasie, czyniąc współpracę z tłumaczami, copywriterami i innymi członkami zespołu bezproblemową. Zawartość może być przechowywana lokalnie i/lub zdalnie.
Aby zrozumieć, skąd wzięły się te biblioteki, przeczytaj historię i18n w JavaScript.
Strategie migracji
Istnieją dwie komplementarne strategie migracji z react-i18next / i18next do Intlayer:
Adapter compat (rekomendowany dla istniejących aplikacji): Zainstaluj
@intlayer/react-i18next(dla komponentów React) i/lub@intlayer/i18next(dla instancjii18n). Te pakiety ujawniają dokładnie ten sam API coreact-i18next/i18next, ale delegują całą pracę tłumaczenia do Intlayer za kulisami. Zachowujesz istniejąceuseTranslation,Trans,withTranslation,i18next.t(), jedyną zmianą jest ścieżka importu.Pełna migracja: Stopniowo zastępuj API
react-i18nextnatywnymi hakami Intlayer (useIntlayer,IntlayerProvider) i umieszczaj zawartość w plikach.content.tsobok komponentów.
Ten przewodnik obejmuje Strategię 1 najpierw (adapter compat drop-in), a następnie przechodzi przez opcjonalną pełną migrację.
Spis treści
Szybka migracja
Poniższe kroki to minimum wymagane, aby uruchomić istniejącą aplikację react-i18next na Intlayer bez żadnych zmian w kodzie.
Instalacja zależności
Zainstaluj pakiety rdzenia Intlayer i adaptery kompatybilności:
bashKopiuj kodSkopiuj kod do schowka
flaga
--interactivejest opcjonalna. Użyjintlayer-cli initjeśli jesteś agentem AI.Ta komenda wykryje twoje środowisko i zainstaluje wymagane pakiety. Na przykład:
bashKopiuj kodSkopiuj kod do schowka
Możesz zachować zainstalowane
react-i18nextii18next, adaptery kompatybilności używają ich jakodevDependencies/ opcjonalnepeerDependenciesdla typów TypeScript. Nie musisz zmieniać żadnych peers wpackage.json.Konfiguracja Intlayer
Komenda
intlayer inittworzy starterintlayer.config.ts. Zaktualizuj go, aby dopasować się do twoich istniejących lokalizacji i wskaż wtyczkęsyncJSONna twoje pliki wiadomości:intlayer.config.tsKopiuj kodSkopiuj kod do schowka
import { Locales, type IntlayerConfig } from "intlayer"; import { syncJSON } from "@intlayer/sync-json-plugin"; const config: IntlayerConfig = { internationalization: { locales: [ Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, // Dodaj wszystkie twoje istniejące lokalizacje tutaj ], defaultLocale: Locales.ENGLISH, }, plugins: [ syncJSON({ // pasuje do składni placeholderów react-i18next: {{name}} format: "i18next", source: ({ locale }) => `./src/locales/${locale}.json`, location: "src/locales", }), ], }; export default config;sourcemapuje lokalizację na ścieżkę pliku JSON.locationmówi obserwatorowi Intlayer, który folder monitorować pod kątem zmian. Opcjaformat: 'i18next'zapewnia, że placeholdery takie jak{{name}}są analizowane prawidłowo.Dodaj wtyczkę Intlayer do twojego bundlera
Opakuj istniejącą konfigurację bundlera wtyczką kompatybilności. Kompiluje rdzeń wtyczki Intlayer, podłącza obserwowanie treści i, co krityczne, wstrzykuje aliasy modułów, aby twoje istniejące wywołania
import … from 'react-i18next'(i'i18next') były przezroczyście przekierowywane do@intlayer/react-i18next/@intlayer/i18nextw czasie budowania. Żadne zmiany pliku źródłowego nie są potrzebne.Dla Vite:
vite.config.tsKopiuj kodSkopiuj kod do schowka
import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; import { reactI18nextVitePlugin } from "@intlayer/react-i18next/plugin"; export default defineConfig({ plugins: [react(), reactI18nextVitePlugin()], });reactI18nextVitePlugin()opakuje wtyczkęintlayer()zvite-intlayeri dodaje aliasyreact-i18next/i18next. Użycie zwykłej wtyczkiintlayer()zvite-intlayerkompiluje słowniki, ale nie dodaje tych aliasów, musiałbyś wtedy ręcznie zmienić nazwy importów na@intlayer/*(patrz Krok 4).Dla Next.js:
Jeśli używasz
next-i18next(integracja Pages Router), zainstaluj@intlayer/next-i18nextinext-intlayer:bashKopiuj kodSkopiuj kod do schowka
Następnie dodaj wtyczkę kompatybilności do twojego
next.config.ts(wstrzykuje aliasynext-i18next/react-i18next/i18next):next.config.tsKopiuj kodSkopiuj kod do schowka
import type { NextConfig } from "next"; import { createNextI18nPlugin } from "@intlayer/next-i18next/plugin"; const withIntlayer = createNextI18nPlugin(); const nextConfig: NextConfig = {/* twoje opcje */}; export default withIntlayer(nextConfig);Nie potrzebujesz już
i18next.init()ani ręcznego bootstrappingu providera. Intlayer kompiluje wszystkie słowniki w czasie budowania, więc nie ma kroku ładowania w czasie wykonania. Aliasowany provider obsługuje inicjalizację za ciebie.
To wszystko w kwestii szybkiej migracji. Twoja aplikacja teraz działa na Intlayer, zachowując każdy import i API react-i18next.
Wpisane klucze translacji, automatycznie. Gdy Intlayer skompiluje twoje słowniki,
useTranslationigetFixedTsą wpisane względem twojej faktycznej treści. Klucze są auto-uzupełniane w twoim IDE, a nieprawidłowe ścieżki powodują błędy TypeScript w czasie budowania, żadna dodatkowa konfiguracja nie jest wymagana.tsxKopiuj kodSkopiuj kod do schowka
Kompletna migracja
Poniższe kroki są opcjonalne i mogą być wykonywane stopniowo. Odblokowują pełny zestaw funkcji Intlayer: edytor wizualny, CMS, pliki treści z typami, tłumaczenie wspomagane przez AI i wiele więcej.
Jawne zmieniane nazw importów (opcjonalnie)
OpcjonalneWtyczki Intlayer już obsługują aliasowanie na poziomie bundlera. Jeśli wolisz uczynić zależność jawną w plikach źródłowych, możesz ręcznie zmienić nazwy importów:
Pokaż całą zawartość tabeliOtwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
Przed Po import { useTranslation } from 'react-i18next'import { useTranslation } from '@intlayer/react-i18next'import { Trans } from 'react-i18next'import { Trans } from '@intlayer/react-i18next'import { withTranslation } from 'react-i18next'import { withTranslation } from '@intlayer/react-i18next'import { I18nextProvider } from 'react-i18next'import { I18nextProvider } from '@intlayer/react-i18next'import { initReactI18next } from 'react-i18next'import { initReactI18next } from '@intlayer/react-i18next'import i18next from 'i18next'import i18next from '@intlayer/i18next'import { createInstance } from 'i18next'import { createInstance } from '@intlayer/i18next'import { t } from 'i18next'import { t } from '@intlayer/i18next'Dla Next.js (
next-i18next):Pokaż całą zawartość tabeliOtwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
Przed Po import { serverSideTranslations } from 'next-i18next/serverSideTranslations'import { serverSideTranslations } from '@intlayer/next-i18next'import { appWithTranslation } from 'next-i18next'import { appWithTranslation } from '@intlayer/next-i18next'import { useTranslation } from 'next-i18next'import { useTranslation } from '@intlayer/next-i18next'Włącz automatyzację tłumaczenia wspomaganą przez AI
OpcjonalneGdy Intlayer jest podłączony, użyj jego CLI, aby automatycznie wypełnić brakujące tłumaczenia:
bashKopiuj kodSkopiuj kod do schowka
Dodaj konfigurację AI do
intlayer.config.ts:intlayer.config.tsKopiuj kodSkopiuj kod do schowka
import { Locales, type IntlayerConfig } from "intlayer"; import { syncJSON } from "@intlayer/sync-json-plugin"; const config: IntlayerConfig = { internationalization: { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, }, plugins: [ syncJSON({ format: "i18next", source: ({ locale }) => `./src/locales/${locale}.json`, location: "src/locales", }), ], ai: { apiKey: process.env.OPENAI_API_KEY, // provider: "openai", // domyślnie // model: "gpt-4o-mini", // domyślnie }, }; export default config;Zapoznaj się z dokumentacją CLI Intlayer, aby zapoznać się ze wszystkimi dostępnymi opcjami.
Co możesz usunąć po migracji
Po umieszczeniu adapterów kompatybilności można usunąć następujący boilerplate react-i18next / i18next:
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Plik / pattern | Dlaczego już nie jest potrzebny |
|---|---|
i18next.init() calls | Provider Intlayer inicjalizuje wszystko automatycznie; nie ma kroku ładowania podczas wykonywania. |
I18nextProvider / initReactI18next | Plugin Intlayer obsługuje wstrzyknięcie i bootstrap pod maską. |
JSON language bundles (locales/*.json) | Pakiety JSON są potrzebne tylko, jeśli nadal używasz pluginu syncJSON. Po migracji do plików .content.ts możesz usunąć folder JSON. |
Gdy będziesz gotowy do dalszych kroków, Intlayer automatycznie odkrywa wszystkie pliki .content.ts i .content.json gdziekolwiek w twojej bazie kodu (domyślnie gdziekolwiek wewnątrz ./src). Możesz umieścić plik my-component.content.ts bezpośrednio obok MyComponent.tsx a Intlayer odbierze go podczas budowania bez dodatkowej konfiguracji, brak importów, rejestracji, brak scentralizowanego pliku indeksu. To sprawia, że współlokalizowanie tłumaczeń ze stronami i komponentami jest całkowicie bezproblemowe.
Konfiguracja TypeScript
Intlayer używa module augmentation, aby zapewnić pełny intellisense TypeScript dla Twoich kluczy tłumaczenia. Upewnij się, że Twój plik tsconfig.json zawiera automatycznie wygenerowane typy:
Skopiuj kod do schowka
Konfiguracja Git
Dodaj wygenerowany przez Intlayer katalog do .gitignore:
Skopiuj kod do schowka
