# gt: General Translation CLI tool: autoderive URL: https://generaltranslation.com/ja/docs/cli/features/autoderive.mdx --- title: autoderive description: 翻訳関数およびJSXコンポーネント内の補間値を自動的にデリベーションする --- ## 概要 autoderive を有効にすると、補間値は [`derive()`](/docs/next/api/strings/derive) で囲まれている場合と同様に解析されます。これにより、取り得る値ごとに個別の翻訳エントリが生成され、言語が変わっても語の一致や活用を維持できます。 Autoderive は 2 つのコンテキストで機能します: * **文字列** — `t()`、`gt()`、`msg()` の呼び出しにおける補間値 * **JSX** — `const` 変数宣言を参照する `` コンポーネント内の式 autoderive は**デフォルトで無効**です。 ## 設定 文字列とJSXの両方でautoderiveを有効にします。 ```json title="gt.config.json" { "files": { "gt": { "parsingFlags": { "autoderive": true } } } } ``` 文字列または JSX のみに対して、autoderive を選択的に有効にすることもできます。 ```json title="gt.config.json" { "files": { "gt": { "parsingFlags": { "autoderive": { "jsx": true, "strings": false } } } } } ``` ## 文字列の例 ```jsx const gt = useGT(); const role = isAdmin ? "admin" : "user"; // autoderiveが有効な場合、これは派生として解析されます: gt(`Welcome back, ${role}!`); // 生成結果: // "Welcome back, admin!" → "¡Bienvenido de nuevo, administrador!" // "Welcome back, user!" → "¡Bienvenido de nuevo, usuario!" ``` autoderive を使わない場合、同じ動作にするには [`derive()`](/docs/next/api/strings/derive) を明示的に使用する必要があります。 ## JSXの例 ```jsx const label = condition ? "boy" : "girl"; Hello, {label} // 2つの翻訳エントリを生成します: // "Hello, boy" → "Hola, chico" // "Hello, girl" → "Hola, chica" ``` JSX autoderive は、`` コンポーネント内で参照される `const` 変数宣言を解決します。対応内容: * 三項演算子 (`const x = cond ? "a" : "b"`) * ネストした三項演算子 (`const x = a ? "small" : b ? "medium" : "large"`) * 文字列、数値、真偽値リテラル * 文字列連結と template literal * 連鎖した `const` 参照 (`const alias = base`) **`const` のみ:** 対応しているのは `const` 宣言のみです。`let` と `var` の変数は再代入できるため、警告が表示されます。分割代入した変数 (`const { x } = obj`) には対応していません。 **注:** `t` tagged template macro は対象外です。こちらは template literal 構文で導出を処理します。 ## 関連 * [`derive()` 関数リファレンス](/docs/next/api/strings/derive) * [JSX の自動インジェクション](/docs/cli/features/auto-jsx-injection) * [リリースノート: gt@2.13.0](/devlog/gt_v2_13_0)