gettext の PO または POT カタログを翻訳者や外注先が編集できる Excel シートにし、そのまま PO へ戻す — 複数形、コンテキスト、ヘッダー、プレースホルダー、fuzzy フラグをすべて保持し、各エントリはコンテキストをキーにします。汎用のテキスト→表ではなく、gettext の受け渡しで実際に必要な 1 ステップです。
この変換は、gettext ツールチェーンと翻訳者がそれぞれ慣れた形式を使えるように — その間で何も失わないために存在します。
GNU gettext ツールチェーンやエディタ(Poedit、Lokalize、Weblate、Crowdin など)が使うバイリンガル・カタログ形式です。文字列ごとに 1 エントリで、msgid と msgstr、曖昧さ回避の任意の msgctxt、ヘッダーの Plural-Forms に支配される 複数形(msgid_plural + msgstr[0]、msgstr[1] …)、レビューが必要な文字列を示す fuzzy フラグを持ちます。精密で、目視で手編集するものではありません。
翻訳者・レビュアー・外注先が最も扱いやすい画面です。1 行 1 文字列、原文と訳文が並び、フィルタ・一括編集・注釈が容易です。難点は、.po をそのまま Excel で開くと複数形が散らばり、コンテキストが曖昧になり、fuzzy フラグが失われ、ツールチェーンに読み戻せなくなることです。
このツールが守るのはまさにその「読み戻せない」です。書き出し時に各複数エントリを形ごとに 1 行へ展開し(Type 列に plural:0、plural:1 …)、各コンテキストを Key 列に保ち、fuzzy フラグを保持して未レビューの文字列に印を残し、ヘッダーを予約済みの @@po.header 行に一字一句保存します — だからシートは有効な PO カタログに戻せます。スプレッドシートでは残せない一部の構造は 報告され、無断で削除されません: 翻訳者・抽出コメント、ソース参照、previous-msgid ヒント、fuzzy 以外の書式フラグ(c-format など)、廃止エントリです。コンパイル済みの .mo ファイルは未対応です(テキスト PO/POT のみ)。