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つ、マーケティングページ用のオリジンを別に用意できます。
より細かな制御のために、コンポーネント単位でオリジンを設定できます。
これを実現するには、プロジェクト内で 複数の 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}
/>
);
}
上記の例はプレーンテキストとしてレンダリングされます。