MO ファイル形式とは?
.mo は、コンパイルされたバイナリ翻訳カタログを保存するために使用される開発者向けファイルです。.mo ファイルは人間が読める形式ではなく、人間が編集可能な .po ソースファイルに対応するマシン読み取り用のファイルです。翻訳者は .po ファイルを編集し、msgfmt コマンドを使用して .mo にコンパイルします。その後、アプリケーションは実行時に .mo を読み込んで翻訳テキストを表示します。.mo ファイルを直接修正すると、使用不能になります。
データアクセス
.mo ファイルは暗号化や読み取り保護はされていません。一部のバイナリエディタで生のバイナリを表示できますが、人間が読める文字列を復元する正しい方法は msgunfmt コマンドです。これにより、.mo を元の .po ソースにデコンパイルできます。内部的には、.mo は4バイトのマジックナンバー(リトルエンディアンで 0x950412DE)、リビジョンワード、および原文(msgid)と翻訳文(msgstr)の文字列配列を指す2つのオフセットテーブルで始まります。オプションのハッシュテーブルにより、実行時の高速な検索が可能になります。
セキュリティと安全性
リスク: LOW.mo には翻訳文字列とメタデータのみが含まれており、実行可能コードは含まれていないため、ファイル自体は無害です。唯一の実際的な注意点として、テーマやプラグインに悪意のある .mo が配置されると、誤解を招くインターフェーステキスト(改ざんされたリンクや指示など)が注入される可能性があるため、言語ファイルは未知の「翻訳」ダウンロードサイトからではなく、公式のテーマ/プラグインソースからのみ使用してください。
形式の詳細
概要- Autodesk Maya ASCII/オブジェクトデータ - 一部の Maya パイプラインやエクスポーターがオブジェクトデータに .mo を使用しますが、gettext とは無関係です。
- Modula-3 オブジェクトファイル - Modula-3 言語の歴史的なコンパイル済みオブジェクトファイルです。DB名はこの稀な意味を反映しています。
- Motorola / ファームウェアオブジェクトダンプ - Motorola のオブジェクト/ファームウェアバイナリで見られることがありますが、特殊な用途であり無関係です。
MO ファイルを開くプログラム
msgunfmt file.mo を実行してカタログを .po テキストとして出力するか、msgfmt file.po -o file.mo でコンパイルします。 brew install gettext を実行後、msgunfmt file.mo / msgfmt file.po -o file.mo を使用します。 技術的詳細
詳細仕様| フォーマットタイプ | バイナリコンパイル済み翻訳カタログ(ハッシュインデックス付き文字列テーブル) |
| マジックナンバー | 0x950412DE (リトルエンディアン: オフセット0で DE 12 04 95、ビッグエンディアンでは 95 04 12 DE) |
| バイト順序 | リトルエンディアンまたはビッグエンディアン。リーダーは解析時にマジックナンバーからバイト順を検出します |
| MIMEタイプ | application/x-gettext-translation |
| 文字列エンコーディング | UTF-8(最も一般的)。実際の文字セットは空の msgid メタデータエントリで宣言されます |
| メタデータエントリ | 空の msgid を持つエントリに Project-Id-Version、Content-Type、文字セット、および Plural-Forms(複数形)ルールが保存されます |
| フォーマットリビジョン | リビジョン 0(メジャーおよびマイナーリビジョンワードともに 0)。リビジョン 1 も定義されていますが、ほとんど使用されていません |
| ハッシュテーブル | 実行時に O(1) で文字列を検索するためにファイル本体に埋め込まれたオプションの固定サイズハッシュテーブル |
| コンパイルツール | msgfmt (GNU gettext) が .po → .mo をコンパイル |
| デコンパイルツール | msgunfmt (GNU gettext) が .mo バイナリから .po ファイルを復元 |
| 一般的なファイルサイズ | 翻訳された文字列の数に応じて 5 KB - 2 MB |
| プラットフォームサポート | Linux, macOS, Windows, BSD - gettext ベースのソフトウェアを実行するすべての OS |
| 一般的な配置パス | ロケールツリー下の LC_MESSAGES ディレクトリ内に <domain>.mo としてインストール(例:locale/ja/LC_MESSAGES/app.mo) |
| リリース日 | 1995 (GNU gettext) |
| 最新バージョン | MO format revision 0 (still current); revision 1 defined but rarely used |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | www.gnu.org |
MO の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。MO ファイルについて最初の質問をしてみましょう。
よくある質問
.moファイルとは何ですか?
.moファイルを開いたり編集したりするにはどうすればよいですか?
msgunfmt file.mo でデコンパイルして読み取り可能な .po テキストを取得してください。.mo を直接編集せず、.po を編集してから .mo に再コンパイルしてください。.poと.moの違いは何ですか?
msgfmt(または Poedit)を使用して .mo を生成します。.poから.moを作成するにはどうすればよいですか?
msgfmt file.po -o file.mo を実行するか、Poedit で .po を保存するだけで、対応する .mo が自動的に書き出されます。.moを編集したのに WordPress の翻訳が変わりません。なぜですか?
メモ帳で.moを読むことはできますか?
msgunfmt を使用してください。