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 next-i18next do Intlayer
Dlaczego migrować z next-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
Ponieważ next-i18next opakuje react-i18next i i18next za kulisami, istnieją dwie komplementarne strategie migracji do Intlayer:
Adapter compat (rekomendowany dla istniejących aplikacji) — Zainstaluj
@intlayer/next-i18next,@intlayer/react-i18nexti@intlayer/i18next. Te pakiety ujawniają dokładnie ten sam API co ich odpowiedniki, ale delegują całą pracę tłumaczenia do Intlayer za kulisami. Zachowujesz istniejąceuseTranslation,appWithTranslation,serverSideTranslationsi routing Next.js Pages — jedyną zmianą jest inicjalizacja.Pełna migracja — Stopniowo zastępuj API
next-i18nextnatywnymi hakami Intlayer (useIntlayer) 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 są minimalne wymagane, aby uruchomić istniejącą aplikację Next.js Pages Router w Intlayer bez zmian kodu w stronach i komponentach.
Zainstaluj 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 init, jeśli jesteś agentem AI.Ta komenda wykryje twoje środowisko i zainstaluje wymagane pakiety. Na przykład:
bashKopiuj kodSkopiuj kod do schowka
npm install intlayer next-intlayer react-intlayer @intlayer/next-i18next @intlayer/react-i18next @intlayer/i18next @intlayer/sync-json-pluginMożesz bezpiecznie pozostawić
next-i18next,react-i18nextii18nextzainstalowane podczas migracji, chociaż usuniesz je po zastosowaniu aliasów.Skonfiguruj Intlayer
Komenda
intlayer inittworzy starterintlayer.config.ts. Zaktualizuj go, aby pasował do twoich istniejących lokalizacji i skieruj pluginsyncJSONdo twoich plików wiadomościnext-i18next(zwykle wewnątrzpublic/locales):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 istniejące lokalizacje tutaj ], defaultLocale: Locales.ENGLISH, }, plugins: [ syncJSON({ // pasuje do składni placeholder i18next: {{name}} format: "i18next", source: ({ key, locale }) => `./public/locales/${locale}/${key}.json`, location: "public/locales", }), ], }; export default config;sourcemapuje lokalizację i namespace (key) do ścieżki pliku JSON.locationmówi obserwatorowi Intlayer, który folder monitorować pod kątem zmian. Opcjaformat: 'i18next'zapewnia, że placeholdery są poprawnie parsowane dlanext-i18next.Zaktualizuj konfigurację Next.js
Opatrz istniejący
next.config.ts(lub.js) funkcjącreateNextI18nPluginz@intlayer/next-i18next/plugin. Ten wrapper komponujewithIntlayeri wstrzykuje aliasynext-i18next/react-i18next/i18next→@intlayer/*, dzięki czemu istniejące wywołaniaimport { useTranslation } from 'next-i18next'są transparentnie przekierowane podczas budowania. Nie są wymagane żadne zmiany w plikach źródłowych.next.config.tsKopiuj kodSkopiuj kod do schowka
import type { NextConfig } from "next"; import { createNextI18nPlugin } from "@intlayer/next-i18next/plugin"; // Możesz usunąć konfigurację i18n importowaną z next-i18next.config.js // import { i18n } from './next-i18next.config'; const withIntlayer = createNextI18nPlugin(); const nextConfig: NextConfig = { // Intlayer zarządza routingiem i18n Next.js pod maską, // więc nie musisz już tutaj przekazywać obiektu i18n. }; export default withIntlayer(nextConfig);Nie potrzebujesz już
next-i18next.config.js. Intlayer kompiluje wszystkie słowniki w czasie budowania, obsługując detektowanie lokalizacji, routing i ładowanie słowników bezproblemowo.Wolisz zwykły
withIntlayerznext-intlayer/server? Kompiluje twoje słowniki, ale nie dodaje aliasównext-i18next/react-i18next/i18next— musisz wówczas ręcznie zmienić importy na@intlayer/*(patrz krok 4).
To wszystko dla szybkiej migracji. Twoja aplikacja Next.js teraz działa na Intlayer, zachowując każde wywołanie useTranslation, serverSideTranslations i appWithTranslation.
Klucze tłumaczeń typizowane — automatycznie. Gdy Intlayer skompiluje twoje słowniki,
useTranslationigetFixedTsą typizowane względem twojej rzeczywistej zawartości. Klucze są autouzupełniane w twoim IDE, a nieprawidłowe ścieżki powodują błędy TypeScript w czasie budowania — nie jest wymagana żadna dodatkowa konfiguracja.tsxKopiuj kodSkopiuj kod do schowka
// Pages Router — 'about' to zarejestrowany klucz słownikaconst { t } = useTranslation("about");t("counter.label"); // ✓ autouzupełnianet("does.not.exist"); // ✗ błąd TypeScript// getStaticProps / getServerSideProps (instancja i18next)const tAbout = i18n.getFixedT(null, "about");tAbout("counter.label"); // ✓ typizowane
Pełna migracja
Poniższe kroki są opcjonalne i można je wykonywać przyrostowo. Odblokowują one pełny zestaw funkcji Intlayer: edytor wizualny, CMS, typed content files, tłumaczenie zasilane sztuczną inteligencją i wiele więcej.
Explicit import renaming (opcjonalnie)
OpcjonalnePlugin Intlayer już obsługuje aliasing na poziomie bundlera. Jeśli wolisz uczynić zależność jawną w swoich 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 { 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'import { useTranslation } from 'react-i18next'import { useTranslation } from '@intlayer/react-i18next'Są to drop-in replacements — nie są wymagane żadne zmiany w sygnaturach funkcji, argumentach ani zwracanych typach.
Enable AI-Powered Translation Automation
OpcjonalnePo podłączeniu Intlayer, użyj jego CLI, aby automatycznie uzupełnić brakujące tłumaczenia:
bashKopiuj kodSkopiuj kod do schowka
# Testuj brakujące tłumaczenia (dodaj do CI)npx intlayer test# Uzupeł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: ({ key, locale }) => `./public/locales/${locale}/${key}.json`, location: "public/locales", }), ], ai: { apiKey: process.env.OPENAI_API_KEY, // provider: "openai", // domyślnie // model: "gpt-4o-mini", // domyślnie }, }; export default config;Więcej informacji: Dokumentacja Intlayer CLI zawiera wszystkie dostępne opcje.
Co możesz usunąć po migracji
Po wdrożeniu adaptera kompatybilności, poniższy boilerplate next-i18next można usunąć:
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Plik / pattern | Dlaczego już nie jest potrzebny |
|---|---|
next-i18next.config.js | Intlayer obsługuje routing, ładowanie słowników i ustawienia domyślnych lokalizacji wewnętrznie na podstawie intlayer.config.ts. |
next-i18next z package.json | W całości zastąpione przez @intlayer/next-i18next i aliasing. |
Pakiety JSON (public/locales/*.json) | Pakiety JSON są potrzebne tylko jeśli nadal używasz wtyczki syncJSON. Po migracji do plików .content.ts możesz usunąć folder JSON. |
Gdy będziesz gotowy, aby pójść dalej, Intlayer automatycznie odkrywa wszystkie pliki .content.ts i .content.json gdziekolwiek w twoim codebase (domyślnie, gdziekolwiek wewnątrz ./src). Możesz umieścić plik my-component.content.ts tuż obok MyComponent.tsx a Intlayer go włączy podczas budowania bez żadnej dodatkowej konfiguracji — bez importów, rejestracji, bez scentralizowanego pliku indeksu. To sprawia, że umieszczanie tłumaczeń razem ze stronami i komponentami jest całkowicie bezproblemowe.
Konfigurowanie TypeScript
Intlayer uses module augmentation to provide full TypeScript intellisense for your translation keys. Make sure your tsconfig.json includes the auto-generated types:
Skopiuj kod do schowka
{ // ... Twoje istniejące konfiguracje TypeScript "include": [ // ... Twoje istniejące konfiguracje TypeScript ".intlayer/**/*.ts", // Dołącz auto-generowane typy ],}Szybka migracja
Następujące kroki są minimalne wymagane aby uruchomić istniejącą aplikację Next.js Pages Router na Intlayer bez zmian kodu w stronach i komponentach.
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 Next.js (Pages Router) — Kompletny przewodnik konfiguracji dla Next.js: intlayerwithnextjspagerouter.md