Next.js
Magic Translate działa z obydwoma routerami Next.js. Dzięki routerowi aplikacji strony są tłumaczone na serwerze, więc każdy język otrzymuje własny w pełni przetłumaczony HTML dla wyszukiwarek.
Router aplikacji
Umieść swoje strony w segmencie [locale] i wypisz języki, które chcesz zaoferować.
// 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>);}
Następnie przetłumacz swoje strony za pomocą React SSR, używając parametru locale jako języka.
// 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>);}
Tytuły stron i opisy są tłumaczone za pomocą funkcji tłumaczenia.
Komponenty klienta, które wymagają tłumaczeń, takie jak menu interaktywne, mogą korzystać z klienta React. Owiń je w MagicTranslateProvider i przekonwertuj ustawienia lokalne za pomocą 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 stron
Najpierw skonfiguruj ustawienia regionalne, postępując zgodnie z przewodnikiem internacjon alizacji Next.js.
Następnie przekaż ustawienia lokalne Next.js określone do MagicTranslateProvider. Kody językowe Magic Translate nie odwzorowują 1:1 do ustawień regionalnych używanych przez Next.js, więc przekonwertuj je za pomocą 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>);}
Twoja witryna jest teraz tłumaczona na podstawie ustawień lokalnych określanych przez Next.js.