Next.js
Magic Translate funciona com os dois roteadores do Next.js. Com o App Router, as páginas são traduzidas no servidor, para que cada idioma tenha seu próprio HTML totalmente traduzido para os mecanismos de pesquisa.
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 Next.js determinada para o MagicTranslateProvider. Os códigos de idioma do Magic Translate não mapeiam 1:1 para os locais que o Next.js usa, então converta-os 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.