動的コンテンツ

GT における動的コンテンツの取り扱いに関する概要。

概要

動的コンテンツとは、一般的にユーザーやコンテキスト、環境などによって変化し得るコンテンツを指します。 これは、ユーザーやコンテキスト、環境に関わらず常に同一のままである静的コンテンツと対照的です。

"Tx すべきか、すべきでないか"

動的なコンテンツを翻訳したい場合もあれば、そのままにしておきたい場合もあります。

わかりやすい例としては、ユーザーのメールアドレスや名前があります。 別の例としては、銀行口座の残高やユーザーの SSN が挙げられます。 このような項目は、(1) アプリが別の言語で表示される場合でも翻訳の必要がないことが多く、(2) 可変である(この場合はユーザーごとに異なる)という性質があります。

Greeting.jsx
import { T, Var } from 'gt-next'

export default function Greeting(name) {
    return (
        <T id='greeting'>
            こんにちは、<Var>{name}</Var>!
        </T>
    );
}

翻訳の観点では、これは次の2つのメリットがあります。

  1. あり得るすべての名前ごとに翻訳を作成する必要がありません。
    • <Var> を使えば、実質的に次のような1つの翻訳だけを用意すれば済みます:
      • ¡Hola, $&#123;name&#125;!
    • <Var> を使わない場合は、固有の各名前に対してオンデマンド翻訳を行う必要があります:
      • "¡Hola, Alice!", "¡Hola, Bob!", "¡Hola, Charlie!", "¡Hola, David!", ...
  2. また、名前そのものが翻訳形に置き換わってしまう心配も不要です(例: "¡Hola, Alicia!", "¡Hola, Roberto!", ...)。

ご覧のとおり、<Var> コンポーネントは、locale に関わらず同一のままにすべき内容を包むために使用します。 この方法により、動的コンテンツのあらゆる可能な値ごとに翻訳を作成する必要がなくなります。

機密情報を <Var> コンポーネントで包むことで、その情報が General Translation の API に送信されないようにできます。

例外

上記の記述に対する例外は、(1) <Var> コンポーネント内で使用される入れ子の <T> コンポーネントの場合(つまり、入れ子になった <T> コンポーネントのchildrenは翻訳されます)、 あるいは (2) <Var> コンポーネントの子要素内で、別の手段によって意図的にデータを当社の API に渡す場合(例: fetch 呼び出し)です。 ただし、これは <Var> コンポーネントや General Translation の API の本来の用途ではなく、そのような実装は読み込み時間やパフォーマンスを損なう可能性があります。

このガイドはどうでしたか?

動的コンテンツ