# gt: General Translation CLI tool: .stringsdict
URL: https://generaltranslation.com/ja/docs/cli/reference/formats/dot-stringsdict-files.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Translate .stringsdict files with the General Translation CLI. API reference for the .stringsdict file format.

CLI は `.stringsdict` ファイル、つまりアプリの複数形ルールを保持する XML プロパティリストを翻訳します。各ロケールは、`<locale>.lproj` ディレクトリ内に .strings tables と並んで専用のファイルを持ちます。翻訳後も plist の構造、フォーマットキー、フォーマット指定子はそのまま維持され、複数形のフォームは対象ロケールごとに再構築されます。

*注意: `.stringsdict` は従来の Apple のローカライゼーション構成の一部で、[`.strings`](/docs/cli/reference/formats/dot-strings-files) と対で使われます。Xcode の String Catalog への移行では、両者が単一の [`.xcstrings` カタログ](/docs/cli/reference/formats/xcstrings-files)に統合されて削除されるため、プロジェクトではどちらか一方の構成のみを使うことになります。*

## 設定 [#config]

`files` の下に `dotStringsdict` エントリを追加し、glob パターンの `include` 配列を指定します。`[locale]` プレースホルダーは `.lproj` ディレクトリ名に含めてください。これにより、CLI がソースファイルを検出し、翻訳を正しいパスに保存できるようになります。

```json title="gt.config.json"
{
  "defaultLocale": "en",
  "locales": ["pl", "ar", "zh"],
  "files": {
    "dotStringsdict": {
      "include": ["Resources/[locale].lproj/Localizable.stringsdict"]
    }
  }
}
```

この設定では、CLI は `Resources/en.lproj/Localizable.stringsdict` を読み込み、翻訳ファイルを `Resources/pl.lproj/`、`Resources/ar.lproj/`、`Resources/zh.lproj/` に書き出します。すべてのファイルキーについては[設定リファレンス](/docs/cli/reference/config#files)を参照してください。

`dotStringsdict` キーを使用するには `gt` 2.18.1 以降が必要です。

## ファイルのエンコーディング [#encoding]

CLI は `.stringsdict` ファイルを読み込む際に、UTF-8、UTF-16、UTF-32 のバイトオーダーマークを検出します。デコードした XML を API に送信し、各翻訳をソースファイルの元のエンコーディングで書き出します。バイトオーダーマークがないファイルは UTF-8 として扱われます。

アップロード後にソースファイルが移動または削除されていた場合、CLI は既存の翻訳済みファイルのエンコーディングが利用可能であればそれを使用します。

<Callout type="info">
  **v2.20.0 での変更点:** CLI は UTF-16 ファイルを UTF-8 に書き換えたり、エンコードされたバイト列をそのまま XML パーサーに渡したりせず、ソースのエンコーディングを保持するようになりました。
</Callout>

## 出力の挙動 [#output]

CLI は、プロパティリストの key と value に含まれる復帰文字を XML 文字参照として保持します。

## .strings tables と併せて翻訳する [#pairing]

`.stringsdict` ファイルが対象とするのは 複数形ルール が必要な keys のみで、そのロケールの残りのテキストは `.strings` tables に格納されたままです。両方の keys を設定しておけば、1 回の run で `.lproj` ディレクトリ全体を処理できます:

```json title="gt.config.json"
{
  "defaultLocale": "en",
  "locales": ["pl", "ar", "zh"],
  "files": {
    "dotStrings": {
      "include": ["Resources/[locale].lproj/*.strings"]
    },
    "dotStringsdict": {
      "include": ["Resources/[locale].lproj/*.stringsdict"]
    }
  }
}
```

## 複数形カテゴリー [#plurals]

翻訳ファイルには対象言語が実際に使用する複数形カテゴリーが含まれますが、その組み合わせがソースと一致することはほとんどありません。英語は `one` と `other` を使い分けますが、ポーランド語は整数の数に対して3つの形式を使い、アラビア語は6つ、中国語は1つです。CLI はソースのカテゴリーをそのままコピーするのではなく、対象言語の CLDR ルールに基づいて各書式変数を再構築します。

* 対象言語が使用するカテゴリーは必ず含まれるため、ポーランド語の翻訳では英語になかった形式が追加されます。
* 対象言語が選択することのないカテゴリーは削除されるため、中国語の翻訳は `other` の1形式にまとめられます。
* ソースに明示的な `zero` がある場合は、CLDR ルールに `zero` を持たない言語であっても保持されます。Foundation は数が 0 のときに必ずこれをレンダリングするためです。

カテゴリーの構成が変わるため、翻訳ファイルがソースと同じキーを持つとは考えないでください。代わりに、代表的な数でレンダリングされた出力を比較してください。

## Sitemap

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