# General Translation Integrations: メタデータファイル
URL: https://generaltranslation.com/ja/docs/integrations/paraglide/reference/metadata-files.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Paraglide JS のメッセージについて、ソースコード上の文脈を保持するファイルです。メタデータファイルのリファレンスです。

メタデータファイルは、ベースロケールのメッセージファイルと同じ場所に置かれ、その構造をそのまま反映します。たとえば `messages/en.json` に対しては `messages/en.metadata.json` を用意します。メタデータファイルは [キーごとのメタデータ](/docs/cli/reference/keyed-metadata) の形式に従っているため、CLI がメッセージと一緒にアップロードします。

## 形式 [#format]

使用されている各メッセージには [`sourceCode`](/docs/cli/reference/keyed-metadata#source-code) フィールドがあり、使用箇所の周辺コードがソースファイルごとに記載されています。パスはプロジェクトルートからの相対パスです。

```json title="messages/en.json"
{
  "greeting": "Hello, {username}!",
  "legacy_banner": "Welcome back"
}
```

```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…"
        }
      ]
    }
  }
}
```

`legacy_banner` はアプリ内で使用されていないため、エントリは生成されません。

| フィールド    | 説明                                                                                                         | 型        |
| -------- | ---------------------------------------------------------------------------------------------------------- | -------- |
| `before` | 使用箇所の上にある行。デフォルトは 10 行で、[`radius`](/docs/integrations/paraglide/reference/collect-context#radius) で設定できます。 | `string` |
| `target` | 使用箇所そのものの行。                                                                                                | `string` |
| `after`  | 使用箇所の下にある行。                                                                                                | `string` |

## 書き込まれるファイルとキー [#written]

* **ベースロケールのみ。** `messages/fr.json` など、他のロケールのファイルに対応するメタデータファイルは作成されません。文脈はどの対象言語でも共通だからです。
* **メッセージファイルにあるキーのみ。** CLI はソースファイルに存在しないメタデータのキーを受け付けないため、メッセージファイルに含まれるキーのみが書き込まれます。ネストされたキーは、ネスト構造のまま書き込まれます。
* **使用されているメッセージのみ。** 使用されていないメッセージのエントリは作成されません。
* **動的な名前。** ``m[`error_${code}`]`` のように動的に組み立てられた名前は、`error_*` にマッチするすべてのメッセージに割り当てられます。`m[key]` だけの場合は、どのメッセージにも割り当てられません。
* **複数の inlang プロジェクト。** 各使用箇所は、その Paraglide JS 出力ディレクトリのコンパイル元となったプロジェクトに割り当てられます。

メッセージファイルの読み込みには、各 inlang プロジェクトの `settings.json` に記載された `baseLocale` と、`plugin.inlang.messageFormat` の `pathPattern` が使用されます。

## ファイルの更新方法 [#updates]

* `sourceCode` は実行のたびに置き換えられます。手動で記述するフィールド ([`context`](/docs/cli/reference/keyed-metadata#context) と [`maxChars`](/docs/cli/reference/keyed-metadata#max-chars)) は保持されます。
* ファイルの書き込みはアトミックに行われ、内容が変更された場合にのみ実行されます。
* 読み取れないメタデータファイルや、JSON オブジェクトではないメタデータファイルは、警告を出したうえでそのまま残されます。
* Paraglide JS をインポートしなくなったプロジェクトでは、メタデータファイルはそのまま残ります。出力ディレクトリ、ひいては inlang プロジェクトが見つからなくなるためです。

## 制限事項 [#limits]

* 1つの inlang プロジェクトを複数のアプリで共有すると、互いの `sourceCode` が上書きされます。最後に解析されたアプリの内容が残ります。
* i18next など、他の inlang 形式プラグインで保存されたメッセージには、メタデータファイルが生成されません。
* 翻訳サービスがファイルごとに読み取るエントリ数には上限があり、長いエントリは切り詰められます ([`sourceCode`](/docs/cli/reference/keyed-metadata#source-code) を参照) 。

## Sitemap

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