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

Hello, world!

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

Hello, world!

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

Page Title

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

Welcome to our site

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

Hello {username}

Today is {new Date()}

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

Hello {username}

``` 変数コンポーネントと 分岐コンポーネントは、動的なコンテンツを扱うために [``](/docs/next/api/components/t) 内で使用するよう設計されています。 詳細は、[変数コンポーネント](/docs/next/guides/variables) および [分岐コンポーネント](/docs/next/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/next/guides/variables)で、[`` コンポーネント](/docs/next/api/components/var)の詳細を確認してください。 ## 本番環境のセットアップ ### ビルドプロセス ビルドパイプラインに翻訳を組み込みます: ```json title="package.json" { "scripts": { "build": "npx gt translate && <...YOUR_BUILD_COMMAND...>" } } ``` ### 開発時と本番環境での動作 * **Development**: 開発用の API キーを使用すると、コンポーネントのレンダリング時に翻訳が on-demand で行われます。開発中にリアルタイムで翻訳を確認できます。 * **Production**: すべての翻訳はビルド時に事前生成され、アプリケーションの公開後に反映されます。 開発中にライブ翻訳を有効にするには、環境変数に開発用 API キーを設定してください。API キーはダッシュボードの [API Keys](https://dash.generaltranslation.com/en-US/project/api-keys) から作成できます。 ### プライバシーに関する注意点 [``](/docs/next/api/components/t) コンポーネント内の内容は、翻訳のために GT API に送信されます。機密性の高いデータについては、[変数コンポーネント](/docs/next/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/next/api/components/t) が翻訳するのは直下の子要素のみで、他のコンポーネント内の内容は翻訳されません。 ```jsx // ❌ 誤り - コンポーネント内のコンテンツは翻訳されない function MyComponent() { return

これは翻訳されない

; }

これは翻訳される

{/* 内部のコンテンツは翻訳されない */}
// ✅ 正しい - 各コンポーネントを個別にラップする function MyComponent() { return

これは翻訳される

; }

これは翻訳される

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

Hello {username}

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

Hello {username}

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