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 は文字列を意味のあるコンテナに分けることを可能にします。 例えば、ドキュメント用に1つの origin を持ち、マーケティングページ用に別の origin を持つことができます。
より細かい制御を行うには、コンポーネントレベルで origins を設定することができます。
これを実現するには、プロジェクト内で複数の TacoTranslate プロバイダーを使用することを検討してください。
同じ文字列でも異なるオリジンでは異なる翻訳がされる場合があることにご注意ください。
最終的に、文字列をオリジンに分ける方法はあなたの判断とニーズ次第です。ただし、1つのオリジンに多くの文字列があると読み込み時間が長くなる可能性があることに注意してください。
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}
/>
);
}
上記の例はプレーンテキストとしてレンダリングされます。