# General Translation Integrations: ソースコードの文脈を追加する
URL: https://generaltranslation.com/ja/docs/integrations/paraglide/guides/adding-source-context.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Paraglide JS の各メッセージの周辺コードを、文脈として翻訳に渡す方法。

`@generaltranslation/paraglide-js` は、アプリ内にある Paraglide JS メッセージの使用箇所をすべて検出し、その周辺のコードを保存します。これにより、「Order」のようなメッセージも、それがボタンなのか、見出しなのか、名詞なのか動詞なのかがわかるコードと一緒に翻訳に渡されます。

このパッケージが行うのは原文ファイルの読み取りだけです。Paraglide JS に手を加えることも、バンドラーを実行することもないため、アプリのビルド方法にかかわらず動作します。

## 始める前に [#before-start]

以下が必要です。

* Node.js 20 以降。
* Paraglide JS 1、2、または 3 (出力ディレクトリが生成されるよう、一度以上コンパイル済みであること) 。
* inlang メッセージ形式 (`plugin.inlang.messageFormat`) で保存されたメッセージ (例：`messages/en.json`) 。
* CLI で翻訳するメッセージファイル ([クイックスタート](/docs/integrations/paraglide/quickstart)を参照) 。
* JavaScript、TypeScript、JSX 以外のコンポーネントを使う場合は、そのフレームワークの言語ツールがアプリにインストールされていること ([サポートされているファイル形式](/docs/integrations/paraglide/reference/file-formats)を参照) 。

<Callout type="info">
  [クイックスタート](/docs/integrations/paraglide/quickstart#quickstart)の `jsonSchema` ルールを使用している場合、現時点では翻訳元の文脈は付与されません。CLI はメタデータが付与されなかった旨を警告し、翻訳元の文脈なしでメッセージを翻訳します。このルールはバリアント宣言とセレクターを保護するためのものなので、残しておいてください。翻訳元の文脈を有効にする目的で削除しないでください。
</Callout>

## 文脈を追加する [#add-context]

パッケージをインストールして文脈を収集したら、あとは通常どおり翻訳します。

### 1. `@generaltranslation/paraglide-js` をインストールする

<Tabs items={['npm', 'yarn', 'bun', 'pnpm']}>
  <Tab value="npm">
    ```bash
    npm install --save-dev @generaltranslation/paraglide-js
    ```
  </Tab>

  <Tab value="yarn">
    ```bash
    yarn add --dev @generaltranslation/paraglide-js
    ```
  </Tab>

  <Tab value="bun">
    ```bash
    bun add --dev @generaltranslation/paraglide-js
    ```
  </Tab>

  <Tab value="pnpm">
    ```bash
    pnpm add --save-dev @generaltranslation/paraglide-js
    ```
  </Tab>
</Tabs>

### 2. 文脈を収集する

アプリのディレクトリで [`paraglide-context`](/docs/integrations/paraglide/reference/paraglide-context) を実行します。`--verbose` を指定すると、検出された使用箇所の数と、使用された Paraglide JS の出力ディレクトリが表示されます。

```bash
npx paraglide-context --verbose
```

ベースロケールの各メッセージファイルの隣に、メタデータファイルが生成されます。使用されているメッセージごとに、その使用箇所の前後のコードがソースファイル単位で記録されます：

```json title="messages/en.metadata.json"
{
  "greeting": {
    "sourceCode": {
      "src/Header.tsx": [
        {
          "before": "import { m } from './paraglide/messages.js';\n…",
          "target": "  return <h1>{m.greeting({ username })}</h1>;",
          "after": "}\n…"
        }
      ]
    }
  }
}
```

<Callout type="info">
  警告には、スキップされた対象とその対処方法が示されます。たとえば、解決できなかったインポートのエイリアス、見つからない言語ツール、Paraglide JS の出力として認識されなかったディレクトリなどです ([インポートの解決](/docs/integrations/paraglide/guides/resolving-imports)を参照) 。
</Callout>

### 3. メッセージを翻訳する

[`gt translate`](/docs/cli/reference/commands/translate) を実行します。CLI は各メッセージファイルと同じ場所にあるメタデータファイルを検出し、[キーごとのメタデータ](/docs/cli/reference/keyed-metadata)としてメッセージと一緒に送信します。

```bash
npx gt translate
```

文脈を常に最新の状態に保つため、翻訳を実行するたびにその前に文脈を収集します：

```json title="package.json"
{
  "scripts": {
    "translate": "paraglide-context && gt translate"
  }
}
```

<Callout type="info">
  文脈を追加しただけでは、メッセージは再翻訳されません。メッセージが再翻訳されるのは、原文が変更された場合のみです。
</Callout>

## Next steps

- /docs/integrations/paraglide/guides/resolving-imports
- /docs/integrations/paraglide/guides/adding-file-formats

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
