# gt: General Translation CLI tool: .resx
URL: https://generaltranslation.com/ja/docs/cli/reference/formats/resx-files.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: General Translation CLI で .NET リソースファイル（.resx および .resw）を翻訳します。RESX ファイル形式の API リファレンスです。

CLI は、.NET の `.resx` ファイルと、同じスキーマを使用する `.resw` ファイルに含まれる文字列リソースを翻訳します。翻訳後も、リソース名、コメント、.NET のプレースホルダー、およびテキストを含まないリソースはすべてそのまま保持されます。この機能には `gt` 2.23.1 以降が必要です。

## 概要 [#overview]

| トピック                        | 説明                                    |
| --------------------------- | ------------------------------------- |
| [設定](#config)               | ソースファイルを照合し、.NET の想定どおりに翻訳ファイルを命名します。 |
| [翻訳動作](#behavior)           | 翻訳されるリソースと、変更されずに残る部分。                |
| [プレースホルダー](#placeholders)   | .NET の複合書式と名前付きプレースホルダーをそのまま保持します。  |
| [翻訳されないリソース](#untranslated) | CLI が変更せずにそのまま残すリソース。                 |
| [エンコーディング](#encoding)       | BOM 付きのテキストエンコーディングをデコードし、復元します。      |
| [検証](#validation)           | 空のファイルをスキップし、有効な XML でないドキュメントを拒否します。 |

## 設定 [#config]

`files` の下に `resx` エントリを追加します。.NET プロジェクトでは、デフォルト言語のリソースを `Properties/Resources.resx` などのファイルに格納し、各翻訳はカルチャー名を付けた同じディレクトリ内のファイル (例: `Properties/Resources.es.resx`) に格納します。ソースファイルの名前にはロケールが含まれないため、`include` でそのファイルを指定し、`transform` で翻訳出力のファイル名を指定します。また、翻訳済みのファイルがソースファイルとして読み込まれないよう、`[locales]` プレースホルダーを含めた `exclude` を指定してください。

```json title="gt.config.json"
{
  "defaultLocale": "en",
  "locales": ["es", "fr"],
  "files": {
    "resx": {
      "include": ["Properties/*.resx"],
      "exclude": ["Properties/*.[locales].resx"],
      "transform": "*.[locale].resx"
    }
  }
}
```

この設定では、CLI は `Properties/Resources.resx` を読み込み、`Properties/Resources.es.resx` と `Properties/Resources.fr.resx` を出力します。

UWP および WinUI のプロジェクトでは、`Strings/en-US/Resources.resw` のように、`.resw` ファイルを言語ごとのディレクトリに配置します。このような構成では `[locale]` プレースホルダーを使用し、`transform` は削除します：

```json title="gt.config.json"
{
  "defaultLocale": "en-US",
  "locales": ["es-ES", "fr-FR"],
  "files": {
    "resx": {
      "include": ["Strings/[locale]/Resources.resw"]
    }
  }
}
```

RESX がサポートする出力形式は `RESX` のみで、`transformationFormat` を使用して別のファイル形式に変換することはできません。共通のファイルキーについては、[設定リファレンス](/docs/cli/reference/config#files)を参照してください。

## 翻訳動作 [#behavior]

CLI は、文字列を保持する各 `<data>` エントリを翻訳します。翻訳済みファイルはソースのコピーで、文字列の値だけが置き換えられます。そのため、次の要素はそのまま維持されます。

* リソース名とエントリの順序
* `<resheader>` エントリとスキーマブロック
* 画像、アイコン、サイズなど、テキストを含まないリソース
* コメントとインデント

エントリに付けた `<comment>` はコンテキストとして翻訳エンジンに渡されます。短い文字列や複数の意味を持つ文字列の意味を明確にしたい場合に活用してください。`{Locked}` や `{Locked="Power Display"}` など、コメント内に記述された Microsoft のローカライゼーション指示は、従うべき指示として翻訳エンジンに渡されます。

コメントやインラインタグなど XML を含む値は XML として翻訳されるため、整形式を保つ必要があります。同じ名前が複数回出現する場合、CLI は .NET が読み取る最初のエントリのみを翻訳し、残りのエントリはそのままにします。

変更されていないエントリについては、再翻訳を強制しない限り、既存の翻訳が再利用されます。

## プレースホルダー [#placeholders]

翻訳では、.NET のプレースホルダーはすべて、書式や配置の指定も含めて記述どおりに保持されます。

| プレースホルダー     | 例                        |
| ------------ | ------------------------ |
| 複合書式         | `{0}`、`{0:N2}`、`{1,-10}` |
| 名前付きプレースホルダー | `{count}`、`{Name:0.00}`  |
| リテラルの波かっこ    | `{{` と `}}`              |

プレースホルダーは対象言語の語順に合わせて文中で移動してもかまいませんが、出現回数はソースと同じでなければなりません。プレースホルダーを変更・削除した翻訳や、XML を含む値の XML 構造を壊した翻訳は翻訳ファイルに含まれないため、そのエントリについて .NET はソース言語にフォールバックします。このようなエントリは次回の実行時に再度翻訳されます。

文字の前に置かれた単一の `&` は、`&File` のようにキーボードのアクセスキーを表します。翻訳後も、訳語内の適切な文字の前に `&` が 1 つだけ付けられます。

## 翻訳されないリソース [#untranslated]

CLI は、以下のリソースを翻訳に回さず、翻訳済みファイルにそのまま残します。

* `mimetype` を持つエントリ (画像などのバイナリデータを保持するもの) 
* `type` が `System.String` 以外のエントリ (`System.Drawing.Size` など) 
* 名前が `>>` で始まる Windows フォーム デザイナーのエントリ
* 値が空のエントリ

## エンコーディング [#encoding]

CLI は、BOM(バイトオーダーマーク)のない `.resx` ファイルを UTF-8 として読み込みます。ファイルが BOM で始まる場合は、UTF-8、UTF-16(リトルエンディアン/ビッグエンディアン)、UTF-32(リトルエンディアン/ビッグエンディアン)に対応しています。Visual Studio は `.resx` ファイルを BOM 付きの UTF-8 で保存します。ダウンロードした翻訳ファイルには、ソースファイルと同じエンコーディングと BOM が適用されます。

BOM のない UTF-16 または UTF-32 ファイルは UTF-8 として扱われます。翻訳前に適切な BOM を追加するか、UTF-8 で保存し直してください。

## 検証 [#validation]

CLI は空の `.resx` ファイルをスキップし、その旨をコマンドのサマリーに表示します。API は、整形式の XML ではないファイル、またはルート要素が `<root>` ではないファイルを拒否します。

## Sitemap

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