Next.js
Magic Translate hoạt động với cả bộ định tuyến ứng dụng Next.js và bộ định tuyến Pages. Với App Router, các trang được dịch trên máy chủ, vì vậy các công cụ tìm kiếm nhận được HTML được dịch đầy đủ cho từng ngôn ngữ.
Bộ định tuyến ứng dụng
Đặt các trang của bạn dưới một phân đoạn [locale] và liệt kê các ngôn ngữ bạn muốn cung cấp.
// 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>);}
Sau đó dịch các trang của bạn bằng React SSR, sử dụng tham số locale làm ngôn ngữ.
// 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>);}
Tiêu đề trang và mô tả được dịch với chức năng dịch.
Các thành phần máy khách cần bản dịch, chẳng hạn như menu tương tác, có thể sử dụng React client. Gói chúng trong một MagicTranslateProvider và chuyển đổi miền địa phương bằng 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>);}
Pages Router
Đầu tiên thiết lập địa phương của bạn bằng cách làm theo hướng dẫn quốc tế hóa Next.js.
Sau đó chuyển miền địa phương từ Next.js sang MagicTranslateProvider. Magic Translate sử dụng các mã ngôn ngữ khác nhau, vì vậy hãy chuyển đổi miền địa phương bằng 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>);}
Trang web của bạn hiện được dịch dựa trên địa phương mà Next.js xác định.