Next.js
Magic Translate funziona con entrambi i router di Next.js. Con l'App Router, le pagine vengono tradotte sul server, quindi ogni lingua riceve il proprio codice HTML completamente tradotto per i motori di ricerca.
App Router
Inserisci le tue pagine in un segmento [locale] ed elenca le lingue che vuoi offrire.
// 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>);}
Quindi traduci le tue pagine con React SSR, utilizzando il parametro locale come lingua.
// 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>);}
I titoli e le descrizioni delle pagine vengono tradotti con la funzione di traduzione.
I componenti del cliente che necessitano di traduzioni, come i menu interattivi, possono utilizzare il client React. Avvolgili in un MagicTranslateProvider e converti la lingua con 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>);}
Router di pagine
Per prima cosa configura le tue impostazioni internazionali seguendo la guida all'internazionalizzazione di Next.js.
Quindi passa il locale determinato da Next.js al MagicTranslateProvider. I codici delle lingue di Magic Translate non corrispondono 1:1 alle impostazioni locali utilizzate da Next.js, quindi convertili con 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>);}
Il tuo sito web รจ ora tradotto in base alle impostazioni locali determinate da Next.js.