Next.js
Magic Translate funciona com o roteador de aplicativos Next.js e o roteador de páginas. Com o App Router, as páginas são traduzidas no servidor, para que os mecanismos de pesquisa recebam HTML totalmente traduzido para cada idioma.
Roteador de aplicativos
Coloque suas páginas em um segmento [locale] e liste os idiomas que você deseja oferecer.
// 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>);}
Em seguida, traduza suas páginas com o React SSR, usando o parâmetro locale como idioma.
// 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>);}
Os títulos e descrições das páginas são traduzidos com a função de tradução.
Os componentes do cliente que precisam de traduções, como menus interativos, podem usar o cliente React. Envolva-os em MagicTranslateProvider e converta a localidade com 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>);}
Roteador de páginas
Primeiro, configure suas localidades seguindo o guia de internacionalização do Next.js.
Em seguida, passe a localidade do Next.js para o MagicTranslateProvider. Magic Translate usa códigos de idioma diferentes, então converta a localidade com 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>);}
Seu site agora está traduzido com base na localidade que o Next.js determina.