Reactサーバーコンポーネント
Magic Translate は React サーバーコンポーネントを完全にサポートしている。コンテンツはサーバー上で翻訳されるので、検索エンジンとユーザーはクライアント側のJavaScriptなしで翻訳されたHTMLを受け取る。
設置
# using npmnpm i @magic-translate/react-ssr# using yarnyarn add @magic-translate/react-ssr# using pnpmpnpm add @magic-translate/react-ssr
セットアップ
翻訳機能を一度設定して、例えば lib/translate.ts で。APIキーは環境変数に入れておく。
import { setupT } from '@magic-translate/react-ssr';export const translate = setupT({apiKey: process.env.MAGIC_TRANSLATE_API_KEY!});
APIキーをまだ持っていないなら、Magic Translate にサインアップして取得しよう。
サーバーコンポーネントを翻訳する
createLocalizedT は翻訳関数を1つの言語にバインドし、<T> コンポーネントと t() 関数を返す。Language や de や pt-BR などの任意のロケールを受け入れる。
import { createLocalizedT } from '@magic-translate/react-ssr';import { translate } from '@/lib/translate';export default async function AboutPage() {const { T, t } = createLocalizedT(translate, 'de');return (<article><h1><T>About us</T></h1><img src="/team.jpg" alt={await t('Our team in Zurich')} /></article>);}
すべてのページが同じ翻訳機能を共有しているので、翻訳はアプリ全体で一括してキャッシュされる。
1つのコンポーネントの場合、createServerT は1回の呼び出しですべてを設定する。その呼び出しの中でのみキャッシュされる。
import { createServerT } from '@magic-translate/react-ssr';const { T } = createServerT({apiKey: process.env.MAGIC_TRANSLATE_API_KEY!,locale: 'zh'});
React SSRの
<T>コンポーネントは、Reactサーバーコンポーネントでのみ動作する。クライアントコンポーネントでは、代わりにReactクライアントを使う。
コンポーネントごとに言語を選択する
createT は、言語を prop と見なす <T> コンポーネントを返す。これは、言語がコンポーネントごとに異なる場合に役立つ。
import { createT, Language } from '@magic-translate/react-ssr';import { translate } from '@/lib/translate';const T = createT(translate);const Greeting = async () => <T lang={Language.ZH}>Please translate me!</T>;
すべての <T> コンポーネントは、formality など、クライアント <T> コンポーネントと同じオプションを受け入れる。