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-intl do Intlayer
Dlaczego migrować z next-intl 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.
Strategia migracji
Rekomendowane podejście dla istniejących aplikacji to adapter compat: zainstaluj @intlayer/next-intl, który ujawnia dokładnie ten sam API co next-intl, ale deleguje całą pracę tłumaczenia do Intlayer za kulisami.
Zachowujesz istniejące useTranslations, getTranslations, NextIntlClientProvider i przyjaciół — jedyną zmianą jest ścieżka importu. Nie jest wymagane żadne refaktorowanie sygnatur Call, kształtów prop lub struktury komponentu.
Z biegiem czasu możesz opcjonalnie migrować poszczególne pliki do bogatszego formatu .content.ts Intlayer aby odblokować edytor wizualny, CMS i ograniczanie zawartości per-komponent — ale ten krok jest całkowicie opcjonalny i może być wykonywany przyrostowo.
Spis treści
Szybka migracja
Poniższe kroki stanowią minimum wymagane do uruchomienia istniejącej aplikacji next-intl na Intlayer bez zmian w kodzie.
Instalacja zależności
Zainstaluj podstawowe pakiety Intlayer i adapter kompatybilności
@intlayer/next-intl:bashKopiuj kodSkopiuj kod do schowka
npx intlayer-cli init --interactiveflaga
--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
npm install intlayer next-intlayer @intlayer/next-intl @intlayer/sync-json-pluginZachowaj
next-intlzainstalowany — jest wciąż wymagany do routingu URL (createNavigation,createMiddleware,Link,redirect,usePathname,useRouter). Adapter kompatybilności nie zastępuje warstwy routingu.Konfiguracja Intlayer
Polecenie
intlayer inittworzy starterintlayer.config.ts. Zaktualizuj go, aby pasował do istniejących lokalizacji i wskaż pluginsyncJSONna 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 istniejące lokalizacje tutaj ], defaultLocale: Locales.ENGLISH, }, plugins: [ syncJSON({ // 'icu' pasuje do składni ICU placeholder next-intl: {name}, {count, plural, ...} format: "icu", source: ({ locale }) => `./messages/${locale}.json`, location: "messages", }), ], }; export default config;sourcemapuje lokalizację na ścieżkę pliku JSON.locationmówi obserwatorowi Intlayer, który folder monitorować pod kątem zmian. Opcjaformat: 'icu'zapewnia, że ICU placeholders takie jak{name}i{count, plural, one {# item} other {# items}}są poprawnie analizowane.Aby zobaczyć pełną listę opcji konfiguracji, zobacz dokumentację konfiguracji.
Dodaj plugin Intlayer do Next.js
Opakuj istniejącą konfigurację Next.js za pomocą
createNextIntlPluginz@intlayer/next-intl/plugin. To opakowanie komponujewithIntlayeri rejestruje aliasynext-intl→@intlayer/next-intldla Ciebie:next.config.tsKopiuj kodSkopiuj kod do schowka
import type { NextConfig } from "next"; import { createNextIntlPlugin } from "@intlayer/next-intl/plugin"; const withIntlayer = createNextIntlPlugin(); const nextConfig: NextConfig = { /* twoje istniejące opcje konfiguracji */ }; export default withIntlayer(nextConfig);createNextIntlPlugin()opakujewithIntlayer, automatycznie wykrywa Webpack lub Turbopack, konfiguruje obserwowanie zawartości, kompilację słowników i — co krytyczne — wstrzykuje aliasy modułów tak, aby istniejące wywołaniaimport … from 'next-intl'były transparentnie przekierowywane do@intlayer/next-intlw czasie budowania. Wejście routingunext-intl/routingpozostaje wskazujące na rzeczywisty pakiet. Nie są wymagane żadne zmiany plików źródłowych.Wolisz zwykły
withIntlayerznext-intlayer/server? Będzie kompilować Twoje słowniki, ale nie dodaje aliasównext-intl— musiałbyś wtedy ręcznie zmienić nazwy importów na@intlayer/next-intl(zobacz krok 4).Nie potrzebujesz już
getRequestConfiganiloadMessages. Znext-intlmusiałeś napisać pliksrc/i18n.ts, który ładował pakiety wiadomości JSON przy każdym żądaniu za pomocągetRequestConfig. Intlayer kompiluje wszystkie słowniki w czasie budowania, więc nie ma kroku ładowania w runtime. Możesz całkowicie usunąć ten plik (lub zachować tylko części routingu, jeśli nadal używaszcreateNavigation).
To wszystko dla szybkiej migracji. Twoja aplikacja teraz działa na Intlayer, zachowując każdy import i API next-intl.
Typowane klucze tłumaczeń — automatycznie. Po kompilacji słowników przez Intlayer,
useTranslationsigetTranslationssą typowane względem Twojej rzeczywistej zawartości. Klucze są autouzupełniane w Twoim IDE, a nieznane ścieżki powodują błędy TypeScript w czasie budowania — bez dodatkowej konfiguracji.tsxKopiuj kodSkopiuj kod do schowka
// Komponent klienta — 'about' to zarejestrowany klucz słownikaconst t = useTranslations("about");t("counter.label"); // ✓ autouzupełnionet("does.not.exist"); // ✗ Błąd TypeScript// Komponent serweraconst t = await getTranslations("about");t("counter.label"); // ✓ typowane
Pełna migracja
Poniższe kroki są opcjonalne i można je wykonywać stopniowo. Odblokowują pełny zestaw funkcji Intlayer: edytor wizualny, CMS, typizowane pliki zawartości, automatyczne tłumaczenie oparte na AI i wiele innych.
Jawne zmianę nazwy importu (opcjonalnie)
OpcjonalneWrapper
createNextIntlPlugin()już obsługuje aliasingnext-intl→@intlayer/next-intlna poziomie bundlera. Jeśli wolisz uczynić zależność jawną w plikach źródłowych (i zamiast tego użyć zwykłego pluginuwithIntlayer), 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 { useTranslations } from 'next-intl'import { useTranslations } from '@intlayer/next-intl'import { useLocale } from 'next-intl'import { useLocale } from '@intlayer/next-intl'import { NextIntlClientProvider } from 'next-intl'import { NextIntlClientProvider } from '@intlayer/next-intl'import { getTranslations } from 'next-intl/server'import { getTranslations } from '@intlayer/next-intl/server'import { getLocale } from 'next-intl/server'import { getLocale } from '@intlayer/next-intl/server'import { setLocale } from 'next-intl/server'import { setLocale } from '@intlayer/next-intl/server'import { getMessages } from 'next-intl/server'import { getMessages } from '@intlayer/next-intl/server'Zawsze zachowuj importy routingu z rzeczywistego
next-intl— adapter kompatybilności nie zastępuje warstwy routingu URL:tsKopiuj kodSkopiuj kod do schowka
// ✅ Zawsze zachowuj te z rzeczywistego 'next-intl'import { createNavigation } from "next-intl/routing";import { createMiddleware } from "next-intl/server";import { defineRouting } from "next-intl/routing";Alternatywnie możesz użyć
defineRoutingz@intlayer/next-intl/routing, które automatycznie scala konfigurację lokalizacji z twojegointlayer.config.ts.Włącz automatyzację tłumaczenia opartą na AI
OpcjonalnePo podłączeniu Intlayer, możesz użyć jego CLI, aby automatycznie wypełnić brakujące tłumaczenia, korzystając z wybranego przez siebie LLM:
bashKopiuj kodSkopiuj kod do schowka
# Test dla brakujących tłumaczeń (dodaj do CI)npx intlayer test# Wypełnij brakujące tłumaczenia za pomocą AInpx intlayer fillDodaj
OPENAI_API_KEY(lub klucz preferowanego dostawcy) do pliku.env, a następnie rozszerz swójintlayer.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: "icu", source: ({ locale }) => `./messages/${locale}.json`, location: "messages", }), ], 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 poznać wszystkie dostępne opcje.
Szybka migracja
Następujące kroki są minimalne wymagane aby uruchomić istniejącą aplikację next-intl na Intlayer bez zmian kodu.
Zainstaluj zależności
Zainstaluj pakiety rdzenia Intlayer i adapter compat @intlayer/next-intl:
Konfiguracja TypeScript
Intlayer używa module augmentation aby zapewnić pełny TypeScript intellisense dla Twoich kluczy tłumaczeń. Upewnij się, że Twój tsconfig.json zawiera auto-generowane typy:
Skopiuj kod do schowka
{ // ... Twoje istniejące konfiguracje TypeScript "include": [ // ... Twoje istniejące konfiguracje TypeScript ".intlayer/**/*.ts", // Dołącz auto-generowane typy ],}Konfiguracja Git
Dodaj wygenerowany katalog Intlayer do swoją .gitignore:
Skopiuj kod do schowka
# Ignoruj pliki wygenerowane przez Intlayer.intlayerIdź dalej
- Visual Editor — Zarządzaj tłumaczeniami wizualnie w przeglądarce: Intlayer Visual Editor
- CMS — Externalizuj i zarządzaj contentem zdalnie: Intlayer CMS
- VS Code Extension — Uzyskaj autouzupełnianie i wykrywanie błędów tłumaczeń w czasie rzeczywistym: Intlayer VS Code Extension
- CLI Reference — Pełna lista poleceń CLI: Intlayer CLI
- Intlayer with Next.js — Pełny przewodnik konfiguracji dla Next.js: intlayerwithnextjs_16.md