gettextの.poファイルを翻訳する
.poファイルはテキストをキーとする形式で、英語の文がキーです。コンテキスト、複数形スロット、Pythonスタイルの変数はすべてそのテキストに付随します。KAERISはそれらを保持し、ターゲット言語に必要な複数形スロットを書き込みます。
KAERISはこのページを翻訳し、すべての行を逆翻訳して確認しました。ネイティブスピーカーによるレビューはまだ行われていません。 英語原文
.poファイルの構造
各エントリにはmsgid(原文)とmsgstr(翻訳文)があります。msgctxtは同じ文を区別します。複数形はmsgid_pluralと各形態ごとのmsgstr[n]を使い、ヘッダーのPlural-Forms行で言語の形態数を指定します。
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: app/views.py:12
msgid "Welcome back, %(name)s!"
msgstr ""
#: app/views.py:20
msgid "%(count)d file"
msgid_plural "%(count)d files"
msgstr[0] ""
msgstr[1] ""
msgctxt "menu"
msgid "Open"
msgstr ""
msgctxt "verb"
msgid "Open"
msgstr ""
.po翻訳で注意すべき点
コンテキストによる語の違い
メニュー項目としての「Open」と動詞としての「Open」は異なる翻訳になります。KAERISはコンテキストとテキストを合わせて読み、同じ原文が異なる翻訳で返された場合にフラグを立てます。以下の実例では両方ともドイツ語で正しい「Öffnen」となり、コンテキストはファイル内に保持されました。
複数形スロットは言語によって異なる
英語は2形態、ロシア語は3形態、アラビア語は6形態です。ロシア語の実行ではヘッダーが
nplurals=3となり、各複数形エントリに3つのmsgstrスロットが割り当てられます。PythonおよびCスタイルの変数
%(name)s、%d、{name}は変更されずに返されなければなりません。そうでない場合、アプリは実行時にエラーを発生させます。ヘッダーと参照
ヘッダーは言語と複数形ルールで再構築されます。ソース参照コメント(
#:)は翻訳ファイルに引き継がれません。
実際の実行例:ドイツ語に翻訳しチェック
実例:2026年10月27日、手動編集なしでkaeris translate en.po --langs deをkaeris 0.2.35で実行(3.9秒、モデル google/gemini-2.5-flash-lite、無料プランのデフォルト)。以下に生成されたドイツ語ファイルとkaeris checkの結果を示します。
# Generated by KAERIS i18n Tool # Language: de msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Language: de\n" msgid "Welcome back, %(name)s!" msgstr "Willkommen zurück, %(name)s!" msgid "%(count)d file" msgid_plural "%(count)d files" msgstr[0] "%(count)d Datei" msgstr[1] "%(count)d Dateien" msgctxt "menu" msgid "Open" msgstr "Öffnen" msgctxt "verb" msgid "Open" msgstr "Öffnen"
$ kaeris check --source en.po --langs de ✓ de: complete & placeholder-safe ✓ all locales complete & placeholder-safe
KAERIS が行うこと
エントリとコンテキストは保持される
テキストキー、
msgctxt、複数形の組は同じ順序で返されます。ターゲット言語に基づく複数形スロット
msgstr[n]の数は言語に従い、ロシア語の実行で確認されました。この形式の無料チェック
無料チェックページの/checkはこの形式を読み込み、キーやアカウントなしで実行できます。ターミナルコマンド
kaeris checkも同様に読み込みます:kaeris 0.2.35以降の13形式すべてに対応し、同じルールでどこにも送信しません。
3ステップで実行する
CLIをインストールする
pip install kaerisを実行します。カタログを翻訳する
kaeris translate django.po --langs de,jaを実行します。出力ファイルは言語名で命名されます。結果をチェックする
無料のチェックページにソースと翻訳済み.poファイルをアップロードして、失われた変数や不整合な用語を確認します。
pip install kaeris kaeris translate locale/en/LC_MESSAGES/django.po --langs de,ja --verify
よくある質問
ロシア語やアラビア語の複数形は対応していますか?
複数形ヘッダーとmsgstr[n]スロットの数はターゲット言語に合わせて書き込まれます。ロシア語の実行例ではnplurals=3と3つのスロットが生成されました。
msgctxtはどうなりますか?
コンテキストはエントリに付随したままなので、同じ原文でも異なるコンテキストがあれば別の文字列として扱われます。チェックは異なる翻訳が返された場合に警告します。
無料ですか?
はい、アカウントなしで:ファイルあたり 10,000 文字、実行あたり最大 8 言語。無料の API キーでファイル制限が 50,000 文字に引き上げられます。一度限りの生涯プランは 79 ドルで、ご自身の OpenRouter キーを使用します。月額プランは 19 ドルから。 料金
ターミナルや CI から実行できますか?
はい。pip install kaerisを実行し、次にkaeris translate django.po --langs de,jaを実行します。Djangoも参照してください。GitHub Actionはプルリクエスト内で同じ翻訳を実行します。CLIドキュメント · GitHub Action
続ける
CLIリファレンス · チェックリファレンス · ブラウザで翻訳 · 無料チェック · フォーマット変換 · 疑似ローカリゼーション
その他のフォーマット: JSON · YAML · ARB · XLIFF · .strings · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML