Internationalisierung (i18n) ist der Prozess des Entwerfens einer Anwendung, die ohne technische Änderungen problemlos an verschiedene Sprachen und Regionen angepasst werden kann. In diesem Artikel erfahren Sie, wie Sie i18n in einer Next.js-Anwendung einrichten und mit next-intl.
einen Sprachumschalter erstellen, um zwischen Englisch und Spanisch umzuschalten.Zuerst müssen Sie die next-intl-Bibliothek installieren, die die Verwaltung der Internationalisierung in Next.js erleichtert. Führen Sie den folgenden Befehl in Ihrem Terminal aus:
npm install next-intl
Die Projektstruktur wird wie folgt sein:
├── messages │ ├── en.json │ └── es.json ├── next.config.mjs └── src ├── i18n.ts ├── middleware.ts └── app └── [locale] ├── layout.tsx └── page.tsx
Erstellen Sie ein Nachrichtenverzeichnis im Stammverzeichnis Ihres Projekts. Fügen Sie in diesem Verzeichnis JSON-Dateien für jede Sprache hinzu, die Sie unterstützen möchten.
{ "greeting": "Hello Codú", "farewell": "Goodbye Codú" }
{ "greeting": "Hola Codú", "farewell": "Adiós Codú" }
Diese Dateien enthalten die Übersetzungen der Phrasen, die Ihre Anwendung verwenden wird.
Konfigurieren Sie Next.js zur Unterstützung der Internationalisierung in next.config.mjs.
import { getRequestConfig } from 'next-intl/server'; // List of supported languages const locales = ['en', 'es']; export default getRequestConfig(async ({ locale }) => { // Validate that the incoming `locale` parameter is valid if (!locales.includes(locale)) { return { notFound: true }; } return { messages: (await import(`./messages/${locale}.json`)).default }; });
Diese Datei konfiguriert Next.js so, dass die richtigen Übersetzungsnachrichten basierend auf der angeforderten Sprache geladen werden.
Erstellen Sie Middleware, um die Umleitung zu verwalten und die Standardsprache festzulegen.
import createMiddleware from 'next-intl/middleware'; export default createMiddleware({ // List of all supported languages locales: ['en', 'es'], // Default language defaultLocale: 'en' }); export const config = { // Only match internationalised pathnames matcher: ['/', '/(en|es)/:path*'] };
Diese Middleware übernimmt die Umleitung zur Standardsprache, wenn keine angegeben ist.
Erstellen Sie eine Konfigurationsdatei, um die Internationalisierungseinstellungen zu verwalten.
import { notFound } from 'next/navigation'; import { getRequestConfig } from 'next-intl/server'; const locales = ['en', 'es']; export default getRequestConfig(async ({ locale }) => { if (!locales.includes(locale as any)) notFound(); return { messages: (await import(`../messages/${locale}.json`)).default }; });
Diese Datei validiert die Gebietsschemas und lädt die entsprechenden Nachrichten.
Konfigurieren Sie das Layout und die Hauptseite, um die Internationalisierung zu unterstützen.
import { useLocale } from 'next-intl'; import { ReactNode } from 'react'; export default function Layout({ children }: { children: ReactNode }) { const locale = useLocale(); return ( {children} ); }
import { useTranslations } from 'next-intl'; export default function Page() { const t = useTranslations(); return (); }{t('greeting')}
{t('farewell')}
Diese Dateien konfigurieren das Layout und die Hauptseite für die Verwendung der Übersetzungen.
Schließlich erstellen Sie einen Sprachumschalter, um zwischen Englisch und Spanisch umzuschalten.
'use client'; import { useLocale } from 'next-intl'; import { useRouter } from 'next/navigation'; import { ChangeEvent, useTransition } from 'react'; export default function LocalSwitcher() { const [isPending, startTransition] = useTransition(); const router = useRouter(); const localActive = useLocale(); const onSelectChange = (e: ChangeEvent) => { const nextLocale = e.target.value; startTransition(() => { router.replace(`/${nextLocale}`); }); }; return ( ); }
Mit dieser Komponente können Benutzer die Sprache der Benutzeroberfläche ändern.
Mit diesen Schritten haben Sie die Internationalisierung in Ihrer Next.js-Anwendung erfolgreich eingerichtet und einen Sprachumschalter zum Umschalten zwischen Englisch und Spanisch erstellt. Dadurch kann Ihre Anwendung mehrere Sprachen unterstützen und eine lokalisierte Benutzererfahrung bieten.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3