PO ファイル形式とは?
.po ファイルは GNU gettext Portable Object ファイルであり、ソフトウェア翻訳のための人間が編集可能なソース形式です。この形式は、GNU/Linux ユーティリティ、PHP アプリケーション、Python パッケージ、WordPress のテーマやプラグイン、その他多くのオープンソースアプリケーションなど、非常に幅広いプロジェクトで使用されています。
.po ファイルは、ペアになったエントリとして構成されたプレーンな UTF-8 テキストです。msgid(元のソース言語の文字列)と msgstr(対応する翻訳)で構成されます。# で始まるコメント行には、翻訳者のメモ、抽出されたソースコードのコメント、ファイル参照、および «fuzzy» フラグが含まれます。複数形を持つエントリは、ファイルヘッダーの Plural-Forms 式によって制御される msgid_plural とインデックス付きの msgstr[n] バリアントを使用します。
翻訳ワークフローは 3 つのファイルタイプに従います。開発者が翻訳可能な文字列を .pot テンプレートに抽出し、翻訳者がそれをロケールごとにコピーして msgstr の値を入力し、最後に msgfmt が各 .po をアプリケーションが実行時に読み込むバイナリ .mo ファイルにコンパイルします。.mo はマシン読み取り専用です。コンパイルされた出力ではなく、常に .po を編集します。
.po ファイルはプレーンテキストエディタで編集できますが、Poedit のような専用ツールを使用すると、エラーチェック、あいまい一致(fuzzy-match)の提案、複数形ヘルパーなどが提供されます。Weblate のようなウェブプラットフォームは共同翻訳をサポートしています。この形式は、1995 年に GNU gettext が導入されて以来、安定しており後方互換性があります。
セキュリティと安全性
リスク: LOW.po ファイルには翻訳テキストとコメントのみが含まれており、実行可能コードはないため、ファイル自体は無害です。唯一の実際的な注意点として、テーマやプラグインに配置された悪意のある翻訳ファイルが、誤解を招くインターフェーステキスト(改ざんされたリンクや指示など)を注入する可能性があります。そのため、言語ファイルは公式のテーマ/プラグインまたは翻訳ソースからのみ使用し、出所不明の «翻訳» ダウンロードは避けてください。
形式の詳細
概要- Disk image / partition image (rare) - The DB legacy name 'Disk image file' reflects a rare/incorrect labeling; .po is not a standard disk-image extension.
PO ファイルを開くプログラム
技術的詳細
詳細仕様| フォーマットタイプ | プレーンテキスト、行指向 (GNU gettext PO 構文) |
| エンコーディング | UTF-8 (ヘッダーの Content-Type フィールドで宣言); 古いカタログでは ISO-8859-x エンコーディングが使用される場合があります |
| MIME タイプ | text/x-gettext-translation |
| エントリ構造 | msgid / msgstr のペア。同一のソース文字列を文脈で区別するためのオプションの msgctxt |
| ヘッダーエントリ | 最初のエントリは空の msgid を持ち、その msgstr ブロックには Project-Id-Version、Content-Type、Plural-Forms、その他のカタログメタデータが含まれます |
| 複数形 | msgid_plural と、インデックス付きの msgstr[0], msgstr[1], ... バリアント。Plural-Forms ヘッダー式が、特定のカウントに対してどの形式を適用するかを制御します |
| コメントの種類 | # (翻訳者コメント), #. (抽出されたソースコメント), #: (ソースファイル参照), #, (fuzzy や c-format などのフラグ) |
| Fuzzy フラグ | #, fuzzy は、ソース文字列の変更後にレビューが必要な翻訳をマークします。msgfmt はコンパイルされた .mo 出力から fuzzy エントリを除外します |
| コンパイル済み出力 | msgfmt によってバイナリの .mo (Machine Object) に変換されます。実行中のアプリケーションは gettext() を介してこの .mo を読み込みます |
| テンプレートファイル | .pot (Portable Object Template) - 未翻訳のスケルトン。すべての言語の .po ファイルは、msginit または msgmerge を介してここから派生します |
| 一般的なファイルサイズ | 5 KB - 5 MB。プロジェクト内の翻訳可能な文字列の数に比例します |
| ツールチェーン | xgettext (ソースから文字列を抽出), msginit (新しい .po を作成), msgmerge (既存の .po を更新), msgfmt (.mo にコンパイル) |
| プラットフォーム | すべて - Linux, macOS, Windows, BSD。GNU gettext または互換性のある libintl 実装が利用可能な場所ならどこでも |
| エコシステム | WordPress, Drupal, GNOME, KDE, Python gettext, PHP gettext、およびその他多くの国際化 (i18n) フレームワークで使用されています |
| リリース日 | 1995 (GNU gettext) |
| 最新バージョン | PO file syntax is stable; defined in the current GNU gettext manual |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | www.gnu.org |
PO の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。PO ファイルについて最初の質問をしてみましょう。
よくある質問
.po ファイルとは何ですか?
msgid) と翻訳 (msgstr) をペアにしたプレーンテキストの翻訳カタログです。バイナリの .mo にコンパイルされる編集可能なソースであり、WordPress、PHP、Python、Linux アプリで非常に一般的です。