Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
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
Tłumaczenie Twojej aplikacji Next.js 15 za pomocą next-intl i Intlayer | Internacjonalizacja (i18n)
Ten przewodnik przeprowadzi Cię przez najlepsze praktyki next-intl w aplikacji Next.js 15 (App Router) oraz pokaże, jak nałożyć Intlayer, aby uzyskać solidne zarządzanie tłumaczeniami i automatyzację.
Zobacz porównanie w next-i18next vs next-intl vs Intlayer.
- Dla juniorów: postępuj krok po kroku, aby uzyskać działającą aplikację wielojęzyczną.
- Dla programistów średniego szczebla: zwróć uwagę na optymalizację payloadu oraz rozdzielenie serwera i klienta.
- Dla seniorów: zwróć uwagę na generowanie statyczne, middleware, integrację SEO oraz haki automatyzacji.
Co omówimy:
- Konfiguracja i struktura plików
- Optymalizacja ładowania wiadomości
- Użycie komponentów klienta i serwera
- Metadane, sitemap, robots dla SEO
- Middleware do routingu lokalizacji
- Dodanie Intlayer na wierzch (CLI i automatyzacja)
Skonfiguruj swoją aplikację za pomocą next-intl
Zainstaluj zależności next-intl -
Skopiuj kod do schowka
Skopiuj kod do schowka
Konfiguracja i ładowanie zawartości
Ładuj tylko te przestrzenie nazw, których potrzebują Twoje trasy, i wczesne waliduj lokalizacje. Utrzymuj komponenty serwera synchroniczne, gdy to możliwe, i przesyłaj do klienta tylko wymagane wiadomości.
Skopiuj kod do schowka
Skopiuj kod do schowka
Skopiuj kod do schowka
Użycie w komponencie klienckim
Weźmy przykład komponentu klienckiego renderującego licznik.
Tłumaczenia (struktura powtórzona; załaduj je do wiadomości next-intl według własnego uznania)
Skopiuj kod do schowka
Skopiuj kod do schowka
Komponent kliencki
Skopiuj kod do schowka
Nie zapomnij dodać komunikatu "about" w wiadomościach klienta na stronie (dołącz tylko przestrzenie nazw, których faktycznie potrzebuje twój klient).
Użycie w komponencie serwerowym
Ten komponent UI jest komponentem serwerowym i może być renderowany pod komponentem klienckim (strona → klient → serwer). Zachowaj synchroniczność, przekazując wcześniej obliczone ciągi znaków.
Skopiuj kod do schowka
Uwagi:
- Oblicz
formattedCountpo stronie serwera (np.const initialFormattedCount = format.number(0)). - Unikaj przekazywania funkcji lub obiektów niepodlegających serializacji do komponentów serwerowych.
Skopiuj kod do schowka
Skopiuj kod do schowka
Skopiuj kod do schowka
Middleware do routingu lokalizacji
Dodaj middleware do obsługi wykrywania i routingu lokalizacji:
Skopiuj kod do schowka
Najlepsze praktyki
- Ustaw html
langidir: Wsrc/app/[locale]/layout.tsxobliczdirza pomocągetLocaleDirection(locale)i ustaw<html lang={locale} dir={dir}>. - Podziel wiadomości według przestrzeni nazw: Organizuj JSON według lokalizacji i przestrzeni nazw (np.
common.json,about.json). - Minimalizuj payload klienta: Na stronach wysyłaj do
NextIntlClientProvidertylko wymagane namespace (np.pick(messages, ['common', 'about'])). - Preferuj strony statyczne: Eksportuj
export const dynamic = 'force-static'i generuj statyczne parametry dla wszystkichlocales. - Synchroniczne komponenty serwera: Przekazuj wcześniej obliczone łańcuchy znaków (przetłumaczone etykiety, sformatowane liczby) zamiast wywołań asynchronicznych lub funkcji nieserializowalnych.
Implementacja Intlayer na bazie next-intl
Zainstaluj zależności intlayer:
Skopiuj kod do schowka
Utwórz plik konfiguracyjny intlayer:
Skopiuj kod do schowka
Dodaj skrypty do package.json:
Skopiuj kod do schowka
Notatki:
intlayer fill: używa Twojego dostawcy AI do uzupełniania brakujących tłumaczeń na podstawie skonfigurowanych lokalizacji.intlayer test: sprawdza brakujące/nieprawidłowe tłumaczenia (używaj tego w CI).
Możesz konfigurować argumenty i dostawców; zobacz Intlayer CLI.