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 angielskimIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
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 umiejętności agenta, aby jeszcze bardziej gładka była doświadczenie dla programistów (DX) 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 platforma internetowa aby pomóc 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ć multilingual 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.
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
npx intlayer-cli init --interactiveflaga
--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
npm install intlayer react-intlayer @intlayer/react-i18next @intlayer/i18next @intlayer/sync-json-pluginMoż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
npm install @intlayer/next-i18next next-intlayerNastę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
// 'about' to zarejestrowany klucz słownika → t() akceptuje tylko prawidłowe ścieżki z kropkamiconst { t } = useTranslation("about");t("counter.label"); // ✓ auto-uzupełnianet("does.not.exist"); // ✗ błąd TypeScript// Po stronie serwera (instancja i18next)const tAbout = i18n.getFixedT(null, "about");tAbout("counter.label"); // ✓ wpisane
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
# Test brakujących tłumaczeń (dodaj do CI)npx intlayer test# Wypełnij brakujące tłumaczenia za pomocą AInpx intlayer fillDodaj 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
{ // ... Twoje istniejące konfiguracje TypeScript "include": [ // ... Twoje istniejące konfiguracje TypeScript ".intlayer/**/*.ts", // Dołącz automatycznie wygenerowane typy ],}Szybka migracja
Następujące kroki są minimalne wymagane aby uruchomić istniejącą aplikację react-i18next na Intlayer bez zmian kodu.
Zainstaluj zależności
Idź dalej
- Visual Editor — Zarządzaj tłumaczeniami wizualnie w przeglądarce: Intlayer Visual Editor
- CMS — Externalizuj i zarządzaj treścią zdalnie: Intlayer CMS
- VS Code Extension — Uzyskaj autouzupełnianie i wykrywanie błędów tłumaczenia w czasie rzeczywistym: Intlayer VS Code Extension
- CLI Reference — Pełna lista poleceń CLI: Intlayer CLI
- Intlayer with React — Pełny przewodnik konfiguracji dla React: intlayerwithvite+react.md
- Intlayer with Next.js — Pełny przewodnik konfiguracji dla Next.js: intlayerwithnextjs_16.md