Next.js
Magic Translate funktioniert mit beiden Routern von Next.js. Mit dem App Router werden Seiten auf dem Server übersetzt, sodass jede Sprache ihren eigenen, vollständig übersetzten HTML-Code für Suchmaschinen erhält.
App-Router
Stelle deine Seiten unter ein [locale]-Segment und liste die Sprachen auf, die du anbieten möchtest.
// app/[locale]/layout.tsxconst locales = ['en', 'de', 'fr', 'ja'];export function generateStaticParams() {return locales.map((locale) => ({ locale }));}export default async function LocaleLayout({children,params}: {children: React.ReactNode;params: Promise<{ locale: string }>;}) {const { locale } = await params;return (<html lang={locale}><body>{children}</body></html>);}
Übersetze dann deine Seiten mit React SSR und verwende den locale-Parameter als Sprache.
// app/[locale]/page.tsximport { createLocalizedT } from '@magic-translate/react-ssr';import { translate } from '@/lib/translate';export default async function HomePage({params}: {params: Promise<{ locale: string }>;}) {const { locale } = await params;const { T } = createLocalizedT(translate, locale);return (<h1><T>Welcome to our website</T></h1>);}
Seitentitel und Beschreibungen werden mit der Übersetzungsfunktion übersetzt.
Client-Komponenten, die Übersetzungen benötigen, wie interaktive Menüs, können den React-Client verwenden. Wickle sie in MagicTranslateProvider ein und konvertiere das Gebietsschema mit utsLocaleToLanguage.
'use client';import {MagicTranslateProvider,utsLocaleToLanguage} from '@magic-translate/react';export function Providers({locale,children}: {locale: string;children: React.ReactNode;}) {return (<MagicTranslateProviderapiKey={process.env.NEXT_PUBLIC_MAGIC_TRANSLATE_API_KEY!}language={utsLocaleToLanguage(locale)}>{children}</MagicTranslateProvider>);}
Seitenrouter
Richte zuerst deine Gebietsschemas ein, indem du dem Internationalisierungsleitfaden von Next.js folgst.
Dann übergebe das ermittelte Gebietsschema Next.js an MagicTranslateProvider. Die Sprachcodes von Magic Translate entsprechen nicht 1:1 den Gebietsschemas, die Next.js verwendet, also konvertiere sie mit utsLocaleToLanguage.
// pages/_app.tsximport type { AppProps } from 'next/app';import { useRouter } from 'next/router';import {MagicTranslateProvider,utsLocaleToLanguage} from '@magic-translate/react';export default function MyApp({ Component, pageProps }: AppProps) {const { locale } = useRouter();return (<MagicTranslateProviderapiKey="<your-api-key>"language={utsLocaleToLanguage(locale)}><Component {...pageProps} /></MagicTranslateProvider>);}
Deine Website wird jetzt auf der Grundlage des Gebietsschemas übersetzt, das Next.js bestimmt.