動的コンテンツ
GT における動的コンテンツの取り扱いに関する概要。
概要
一般に動的コンテンツとは、ユーザー・コンテキスト・環境などに応じて変化し得るコンテンツを指します。 これは、ユーザー・コンテキスト・環境などに関わらず常に同一である静的コンテンツと対比されます。
「Tx にするか、しないか」
動的なコンテンツは翻訳したいこともあれば、そのままにしておきたいこともあります。
わかりやすい例としては、ユーザーのメールアドレスや名称があります。 別の例としては、銀行口座の残高やユーザーの SSN などが挙げられます。 このような項目は、(1) アプリが別の言語でレンダリングされても翻訳する必要がほぼなく、(2)(この場合はユーザーごとに)値が変わります。
例
import { T, Var } from 'gt-next'
export default function Greeting(name) {
return (
<T id='greeting'>
こんにちは、<Var>{name}</Var>さん!
</T>
);
}翻訳という観点では、これには次の2つの利点があります。
- あり得るすべての名称ごとに翻訳を作成する必要がありません。
<Var>を使えば、実質的に次のような翻訳を1つ用意するだけで済みます:¡Hola, ${name}!
<Var>を使わない場合は、固有の各名称ごとにオンデマンド翻訳が必要になります:- "¡Hola, Alice!", "¡Hola, Bob!", "¡Hola, Charlie!", "¡Hola, David!", ...
- また、名称そのものが翻訳形に置き換わってしまうこと(例: "¡Hola, Alicia!", "¡Hola, Roberto!", ...)を心配する必要もありません。
ご覧のとおり、<Var> コンポーネントは、locale に関係なく同一のままにすべき内容をラップするために使用します。
この方法により、動的コンテンツのあらゆる value ごとに翻訳を用意する必要がなくなります。
機微情報を <Var> コンポーネントでラップすることで、その情報が General Translation の API に送信されないことを保証できます。
例外
上記の内容に対する例外は、(1) <Var> コンポーネント内で入れ子になった <T> コンポーネントを使用している場合(つまり、入れ子の <T> コンポーネントの children は翻訳されます)、
または (2) <Var> コンポーネントの子要素内で、別の手段(例: fetch 呼び出し)により意図的にデータを当社の API に送信する場合です。
ただし、これは <Var> コンポーネントや General Translation の API の想定される使用方法ではなく、そのようにすると読み込み時間やパフォーマンスを損なう可能性があります。
このガイドはいかがですか?