# gt-react: General Translation React SDK: T コンポーネント URL: https://generaltranslation.com/ja/docs/react/guides/t.mdx --- title: T コンポーネント description: T コンポーネントを使って JSX コンポーネントを国際化する方法 --- {/* 自動生成: 直接編集しないでください。content/docs-templates/ の template を編集してください。 */} [`` コンポーネント](/docs/react/api/components/t)は、React アプリケーションで JSX コンテンツを国際化するための主要なツールです。JSX 要素をラップし、ユーザーのロケールに応じて自動的に翻訳します。 **ヒント:** [auto JSX injection](/docs/cli/features/auto-jsx-injection) を有効にすると、コンパイラはビルド時に JSX を翻訳コンポーネントで自動的にラップできます。 ほとんどのケースでは、`` を手動で追加する必要はありません。特定の `id` や `context` を設定するなど、より細かく制御したい場合には、手動の `` も引き続き有用です。 ## クイックスタート 任意の静的な JSX コンテンツは、[``](/docs/react/api/components/t) で囲むことで変換できます: ```jsx import { T } from 'gt-react'; // 変更前 function Greeting() { return

Hello, world!

; } // 変更後 function Greeting() { return

Hello, world!

; } ``` [``](/docs/react/api/components/t) 内で動的なコンテンツを扱うには、[変数コンポーネント](/docs/react/guides/variables) と [分岐コンポーネント](/docs/react/guides/branches) を使用します。 ## 基本的な使い方 [`` コンポーネント](/docs/react/api/components/t) では、子要素に任意の JSX コンテンツを指定できます: ```jsx // シンプルなテキスト Welcome to our app // HTML要素

Page Title

// 複雑なネストされたJSX
Important: Please read carefully.
``` ## 設定オプション ### コンテキストの追加 曖昧な用語には、翻訳用のコンテキストを指定します。 ```jsx Click the toast to dismiss ``` ## T を使う場合 [``](/docs/react/api/components/t) は、**静的なコンテンツにのみ**使用します: ```jsx // ✅ 静的コンテンツは動作します

Welcome to our site

// ❌ 動的コンテンツはエラーになります

Hello {username}

Today is {new Date()}

// ✅ 動的コンテンツには変数コンポーネントを使用してください

Hello {username}

``` 変数コンポーネントと分岐コンポーネントは、動的なコンテンツを扱うために [``](/docs/react/api/components/t) 内で使用するよう設計されています。 詳しくは、[変数コンポーネント](/docs/react/guides/variables) ガイドと [分岐コンポーネント](/docs/react/guides/branches) ガイドを参照してください。 ## 例 ### シンプルな要素 ```jsx // 基本的なテキスト Hello, world! // テキスト付きボタン // スタイル付き見出し

Welcome

``` ### 複雑なコンポーネント ```jsx // ナビゲーションメニュー // アラートメッセージ
Your session expires in 5 minutes
``` ### 変数を使う場合 ローカライズされた形式で表示するには、変数コンポーネントを使用できます。 ```jsx // 静的テキストと動的な値を組み合わせる

Welcome back, {user.name}!

You have {user.friends.length} friends online

Your birthday is {user.birthday}

Your balance is {user.balance}

``` [`` コンポーネント](/docs/react/api/components/var)の詳細は、[変数コンポーネントガイド](/docs/react/guides/variables)を参照してください。 ## 本番環境のセットアップ ### ビルドプロセス ビルドパイプラインに翻訳処理を追加します: ```json title="package.json" { "scripts": { "build": "npx gt translate && <...YOUR_BUILD_COMMAND...>" } } ``` ### 開発環境と本番環境での動作 * **開発環境**: 開発用 API キーを使用すると、コンポーネントのレンダリング時に翻訳が on-demand で実行されます。開発中は翻訳結果がリアルタイムで反映されます。 * **本番環境**: すべての翻訳はビルド時に事前生成され、アプリケーションの公開後に反映されます。 開発中にライブ翻訳を有効にするには、環境変数に開発用 API キーを設定してください。API キーはダッシュボードの [API Keys](https://dash.generaltranslation.com/en-US/project/api-keys) から作成できます。 ### プライバシーに関する注意事項 [``](/docs/react/api/components/t) コンポーネント内の内容は、翻訳のために GT API に送信されます。機微なデータを扱う場合は、[変数コンポーネント](/docs/react/guides/variables) を使用して、非公開情報をローカルにとどめてください。 ```jsx // 安全 - 機密データはローカルに保持される Welcome back, {username} ``` ## 1 つの `` でどこまで囲むべきか 翻訳者が自然にひとまとまりとして読んで訳せる**論理的なコンテンツのまとまり**で囲んでください。 ```jsx // ✅ 良い例 — 関連コンテンツをまとめてラップすることで、翻訳者に十分なコンテキストを提供できる

Welcome to Our Platform

Get started in minutes with our simple setup process.

// ✅ 良い例 — 各カードは独立した単位 {features.map((feature) => (

{feature.title}

{feature.description}

))} // ❌ 範囲が狭すぎる — 翻訳が断片化し、コンテキストが失われる

Welcome to Our Platform

Get started in minutes with our simple setup process.

// ❌ 範囲が広すぎる — ページ全体をラップすると保守が難しくなる {/* ...数百行の JSX... */} ``` **目安:** テキストが見た目または意味の上で関連しているなら、1 つの `` で囲んでください。内容が本当に独立している場合 (たとえば、ヘッダーとフッター) にだけ分けます。 1 つの `` でより多くのコンテンツを囲むと、翻訳者はより適切なコンテキストを得られるため、より自然な翻訳になります。言語によっては文の構成を組み替えたり、近くのコンテンツを参照したりする必要があるためです。 ## よくある問題 ### コンポーネントの境界 [``](/docs/react/api/components/t) は直接の子要素だけを翻訳し、他のコンポーネント内の内容は翻訳されません。 ```jsx // ❌ 誤り - コンポーネント内の内容は翻訳対象になりません function MyComponent() { return

This won't be translated

; }

This will be translated

{/* 中の内容は翻訳対象になりません */}
// ✅ 正しい - 各コンポーネントを個別にラップします function MyComponent() { return

This will be translated

; }

This will be translated

``` ### T コンポーネントの入れ子 ```jsx // ❌ コンポーネントをネストしないでください Hello world {/* これはしないでください */} ``` ### 動的コンテンツに関するエラー CLI は [``](/docs/react/api/components/t) 内に動的コンテンツがあるとエラーになります。動的な値は変数コンポーネントでラップしてください: ```jsx // ❌ 誤り - 動的コンテンツはエラーになる

Hello {username}

// ✅ 正しい - 変数コンポーネントを使用する

Hello {username}

``` 動的な値の扱いについては[変数コンポーネントガイド](/docs/react/guides/variables)を、条件分岐するコンテンツについては[分岐コンポーネントガイド](/docs/react/guides/branches)を参照してください。 ## 次のステップ **実際の動作を見る:** 実際に動くデモは、[`` コンポーネントの基本サンプルアプリ](https://github.com/gt-examples/t-component-basics) を確認してください — [ライブプレビュー](https://t-component-basics.generaltranslation.dev)。 * [変数コンポーネントガイド](/docs/react/guides/variables) - JSX 内の翻訳で動的コンテンツを扱う * [分岐コンポーネントガイド](/docs/react/guides/branches) - 翻訳に条件分岐を追加する