TacoTranslate の使用
文字列の翻訳
現在、文字列を翻訳する方法は3つあります: Translate
コンポーネント、useTranslation
フック、または translateEntries
ユーティリティです。
Translate
コンポーネントの使用。
翻訳を span
要素内に出力し、HTMLのレンダリングをサポートします。
import {Translate} from 'tacotranslate/react';
function Page() {
return <Translate string="Hello, world!" />;
}
要素の種類は、例えばコンポーネントの as="p"
を使って変更できます。
useTranslation
フックの使用。
翻訳をプレーンな文字列として返します。例えば、meta
タグ内で便利です。
import {useEffect} from 'react';
import {useTranslation} from 'tacotranslate/react';
function Page() {
const helloWorld = useTranslation('Hello, world!');
useEffect(() => {
alert(helloWorld);
}, [helloWorld]);
return (
<title>{useTranslation('My page title')}</title>
);
}
translateEntries
ユーティリティの使用。
サーバー側で文字列を翻訳します。あなたの OpenGraph 画像を強化しましょう。
import {createEntry, translateEntries} from 'tacotranslate';
async function generateMetadata(locale = 'es') {
const title = createEntry({string: 'Hello, world!'});
const description = createEntry({string: 'TacoTranslate on the server'});
const translations = await translateEntries(
tacoTranslate,
{origin: 'opengraph', locale},
[title, description]
);
return {
title: translations(title),
description: translations(description)
};
}
文字列がどのように翻訳されるか
文字列がサーバーに到達すると、最初にそれらを検証して保存し、その後すぐに機械翻訳を返します。機械翻訳は通常、弊社のAI翻訳に比べて品質が低いですが、迅速な初期応答を提供します。
同時に、文字列の高品質で最先端のAI翻訳を生成する非同期翻訳ジョブを開始します。AI翻訳が準備でき次第、それが機械翻訳に取って代わり、文字列の翻訳をリクエストするたびに送信されます。
文字列を手動で翻訳している場合は、それらの翻訳が優先され、代わりに返されます。
オリジンの活用
TacoTranslateプロジェクトには、originsと呼ばれるものが含まれています。これは、文字列や翻訳のエントリーポイント、フォルダー、またはグループと考えてください。
import {TacoTranslate} from 'tacotranslate/react';
function Menu() {
return (
<TacoTranslate origin="application-menu">
// ...
</TacoTranslate>
);
}
Origins により、文字列を意味のあるコンテナに分けることができます。 例えば、ドキュメンテーション用のオリジンとマーケティングページ用のオリジンを分けることができます。
より詳細な制御が必要な場合は、コンポーネントレベルでoriginsを設定することもできます。
これを実現するには、プロジェクト内で複数の TacoTranslate プロバイダーを使用することを検討してください。
同じ文字列でも、異なるオリジンでは異なる翻訳がされる場合があることにご注意ください。
最終的に、文字列をどのようにオリジンに分けるかは、あなたのニーズ次第です。ただし、ひとつのオリジン内に多くの文字列があると、読み込み時間が長くなる可能性があることに注意してください。
import {Translate} from 'tacotranslate/react';
function Greeting() {
const name = 'Juan';
return <Translate string="Hello, {{name}}!" variables={{name}} />;
}
import {useTranslation} from 'tacotranslate/react';
function useGreeting() {
const name = 'Juan';
return useTranslation('Hello, {{name}}!', {variables: {name}});
}
HTMLコンテンツの管理
デフォルトでは、Translate
コンポーネントはHTMLコンテンツのサポートとレンダリングを行います。しかし、useDangerouslySetInnerHTML
を false
に設定することで、この動作を無効にすることができます。
ユーザー生成コンテンツなどの信頼できないコンテンツを翻訳する際は、HTMLレンダリングを無効にすることを強く推奨します。
すべての出力は、レンダリングされる前に常にsanitize-htmlでサニタイズされます。
import {Translate} from 'tacotranslate/react';
function Page() {
return (
<Translate
string={`
Welcome to <strong>my</strong> website.
I’m using <a href="{{url}}">TacoTranslate</a> to translate text.
`}
variables={{url: 'https://tacotranslate.com'}}
useDangerouslySetInnerHTML={false}
/>
);
}
上記の例はプレーンテキストとしてレンダリングされます。