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

CLI は `.strings` ファイルを翻訳します。これは、アプリがロケールごとに 1 つの `<locale>.lproj` ディレクトリから読み込む key/value 形式のテキスト テーブル です。翻訳後も各 エントリ の key、エスケープ、フォーマット指定子はそのまま保持され、エントリ の直前にあるコメントは context として translation engine に渡されます。

*注: `.strings` と `.stringsdict` は Apple の従来のローカライゼーションレイアウトです。Xcode の String Catalog への移行では、`.lproj` ファイルが単一の [`.xcstrings` catalog](/docs/cli/reference/formats/xcstrings-files) にまとめられたうえで削除されるため、プロジェクトではどちらか一方のレイアウトのみを使用することになります。*

## 設定 [#config]

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

```json title="gt.config.json"
{
  "defaultLocale": "en",
  "locales": ["es", "ja", "ar"],
  "files": {
    "dotStrings": {
      "include": [
        "Resources/[locale].lproj/Localizable.strings",
        "Resources/[locale].lproj/InfoPlist.strings"
      ]
    }
  }
}
```

この設定では、CLI は `Resources/en.lproj/` 内のテーブルを読み取り、`Resources/es.lproj/`、`Resources/ja.lproj/`、`Resources/ar.lproj/` に書き込みます。すべてのファイルキーについては[設定リファレンス](/docs/cli/reference/config#files)を参照してください。

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

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

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

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

<Callout type="info">
  **v2.20.0 での変更点:** CLI はデコードしたテキストをハッシュ化し、ソースのエンコーディングを保持するようになりました。以前のリリースでは base64 のバイト列をハッシュ化していたため、既存の `.strings` ファイルには新しいバージョン ID が付与されます。そのため、テキストが変更されていない場合でも、アップグレード後に一度だけ再翻訳されます。
</Callout>

## 出力の挙動 [#output]

翻訳済みのテーブルにエントリが 1 つもない場合、CLI はゼロバイトのファイルではなく空のプロパティリスト形式の dictionary を書き出します。これにより Foundation が読み込めるようになります。

## ロケールごとに複数のテーブル [#tables]

ほとんどのアプリはロケールごとに複数のテーブルを同梱するため、`Localizable.strings`だけを列挙した設定では、残りが翻訳されないまま見過ごされてしまいます。よく使われるテーブルは次の2つです。

* `Localizable.strings` — `NSLocalizedString`経由で読み込まれるインターフェーステキスト
* `InfoPlist.strings` — `CFBundleDisplayName`や権限プロンプトに表示される利用目的の説明など、`Info.plist`内のシステム向けの値

`include`に各テーブルを列挙するか、単一のglobですべてをまとめてマッチさせます:

```json title="gt.config.json"
{
  "files": {
    "dotStrings": {
      "include": ["Resources/[locale].lproj/*.strings"]
    }
  }
}
```

## 複数形 [#plurals]

`.strings` のエントリはキーごとに 1 つの文字列しか保持できないため、複数形を表現できません。Apple は複数形のルールを、同じ `.lproj` ディレクトリ内にある対になる `.stringsdict` ファイルに保持しており、これは別の 設定 キーとして扱われます。テーブルと併せて翻訳する方法については [`.stringsdict`](/docs/cli/reference/formats/dot-stringsdict-files) を参照してください。

## Sitemap

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