翻訳

Xcode String Catalog (.xcstrings) を翻訳する

String Catalog はすべての言語を1つの JSON ファイルに保持し、手動で編集すべきは Xcode のみです。KAERIS は新しい言語を同じファイルに追加し、それ以外は元のままにします。

KAERISはこのページを翻訳し、すべての行を逆翻訳して確認しました。ネイティブスピーカーによるレビューはまだ行われていません。 英語原文

String Catalog の構造

1つのファイルに strings、次にキー、localizations、そして言語が続きます。各言語は複数形用の stringUnit または variations を持ちます。ファイルには comment、extractionState、shouldTranslate も含まれます。ソース言語のエントリがないキーはそれ自体がソーステキストです。

ソースファイルLocalizable.xcstrings
{
  "sourceLanguage" : "en",
  "strings" : {
    "Welcome back, %@!" : {
      "comment" : "Greeting on the home screen",
      "extractionState" : "manual",
      "localizations" : {
        "en" : { "stringUnit" : { "state" : "translated", "value" : "Welcome back, %@!" } }
      }
    },
    "%lld items" : {
      "localizations" : {
        "en" : {
          "variations" : {
            "plural" : {
              "one" : { "stringUnit" : { "state" : "translated", "value" : "%lld item" } },
              "other" : { "stringUnit" : { "state" : "translated", "value" : "%lld items" } }
            }
          }
        }
      }
    },
    "Cancel" : { }
  },
  "version" : "1.0"
}

.xcstrings 翻訳で注意すべき点

実際の実行例:ドイツ語に翻訳しチェック

実際の実行例、2026年10月27日、手動編集なし: kaeris translate Localizable.xcstrings --langs de を kaeris 0.2.35 で実行、2.4秒、モデルは openai/gpt-4.1-mini(サービスのフォールバックモデルがこのジョブに応答)。以下は生成されたドイツ語ファイルと kaeris check の結果です。

ドイツ語の結果Localizable.xcstrings
{
  "sourceLanguage": "en",
  "strings": {
    "Welcome back, %@!": {
      "comment": "Greeting on the home screen",
      "extractionState": "manual",
      "localizations": {
        "en": {
          "stringUnit": {
            "state": "translated",
            "value": "Welcome back, %@!"
          }
        },
        "de": {
          "stringUnit": {
            "state": "translated",
            "value": "Willkommen zurück, %@!"
          }
        }
      }
    },
    "%lld items": {
      "localizations": {
        "en": {
          "variations": {
            "plural": {
              "one": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld item"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld items"
                }
              }
            }
          }
        },
        "de": {
          "variations": {
            "plural": {
              "one": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld Artikel"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld Artikel"
                }
              }
            }
          }
        }
      }
    },
    "Cancel": {
      "localizations": {
        "de": {
          "stringUnit": {
            "state": "translated",
            "value": "Abbrechen"
          }
        }
      }
    }
  },
  "version": "1.0"
}
kaeris チェックexit code 0
$ kaeris check --source Localizable.xcstrings --langs de
✓ de: complete & placeholder-safe
✓ all locales complete & placeholder-safe

KAERIS が行うこと

3ステップで実行する

  1. CLIをインストールする

    pip install kaerisを実行します。

  2. カタログを翻訳する

    kaeris translate Localizable.xcstrings --langs de,fr,ja を実行します。カタログはその場で更新されます。

  3. 結果をチェックする

    無料チェックページにカタログをアップロードしてください。ソースと翻訳を1つのファイルから読み込みます。

pip install kaeris
kaeris translate Localizable.xcstrings --langs de,fr,ja --verify

よくある質問

既存の翻訳は上書きされますか?

ファイル内の既存言語、コメント、抽出状態は変更せずに保持されます。これは CLI の README にも記載されています。

複数形はどのように扱われますか?

複数形のバリエーションは各言語に必要なカテゴリに展開されます。英語の one/other はロシア語では one/few/many/other に、アラビア語では6形態に展開されます。

無料ですか?

はい、アカウントなしで:ファイルあたり 10,000 文字、実行あたり最大 8 言語。無料の API キーでファイル制限が 50,000 文字に引き上げられます。一度限りの生涯プランは 79 ドルで、ご自身の OpenRouter キーを使用します。月額プランは 19 ドルから。 料金

ターミナルや CI から実行できますか?

はい。pip install kaeris の後、kaeris translate Localizable.xcstrings --langs de,ja を実行します。iOS も参照してください。GitHub Action はプルリクエストで同じ翻訳を実行します。CLI ドキュメント · GitHub Action

続ける

CLIリファレンス · チェックリファレンス · ブラウザで翻訳 · 無料チェック · フォーマット変換 · 疑似ローカリゼーション

その他のフォーマット: JSON · YAML · .po · ARB · XLIFF · .strings · .properties · .resx · CSV · Markdown · Fluent · Android XML