【Windows対応】’msgfmt’ は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。【言語翻訳ファイル .po ファイルから.mo ファイル変換方法】MSYS2

言語翻訳ファイル .po ファイルから.mo ファイルに変換するときに「’msgfmt’ は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と表示された時の対処法です。

エラーは「msgfmt(GNU gettext の一部)」が未インストール、または PATH に通っていないのが原因です。Windows での解決方法を用途別にまとめます(すべて公式手順へのリンク付き)。
gettext(msgfmt含む)は、WordPress の翻訳 .po → .mo 変換や国際化処理などでよく使われます。

MSYS2 を使って Windows に msgfmt を導入する手順を解説します。

目次

MSYS2 を使って Windows に msgfmt を導入する手順

MSYS2のインストール

MSYS2公式サイトにアクセス
https://www.msys2.org/

インストーラをダウンロード

ご自身の環境に適したものをインストールします。

インストーラを実行

「Next」→「Install」で進めます。

途中確認を求められたら内容を確認して「Y」で進めます。

デフォルトインストール先: C:\msys64

インストール完了後、MSYS2 Shellを起動

スタートメニュー → 「MSYS2 UCRT64」 または 「MSYS2 MINGW64」で起動できます。
検索ウィンドウで「MSYS2」と入力すると一覧が表示されます。
(※どちらを使うかは後述)

各シェルの違い一覧

シェル名主な用途対応アーキテクチャ使用するCランタイム主なPATH特徴・用途の説明
MSYSUNIXツール実行用Windows(共通)MSYS2独自DLL(msys-2.0.dll)/usr/binC:\msys64\usr\binBash, sed, grep, make などLinuxコマンドが動作。開発環境の制御用。この環境でビルドしたバイナリはWindows単体では動かない(MSYS DLL依存)。
MINGW64Windows 64bit向けネイティブアプリ開発x86_64MSVCRT(Microsoft Visual Cランタイム)/mingw64/binC:\msys64\mingw64\bin従来のWindowsネイティブビルド。WordPress・Python・VSCodeなどと相性が良い。gettextなどもこちらで十分。
MINGW32Windows 32bit向け開発i686(32bit)MSVCRT/mingw32/binC:\msys64\mingw32\bin古い32bitアプリをビルドしたい場合のみ使用。通常は不要。
UCRT64Windows 64bit向け・最新UCRT対応x86_64UCRT(Universal C Runtime)/ucrt64/binC:\msys64\ucrt64\binMicrosoft公式UCRT採用。新しい標準。Python3.11以降やVisual Studio、CMakeとの互換性が高い。gettextもここがおすすめ。
CLANG64LLVM/Clangベース開発用x86_64UCRT/clang64/binC:\msys64\clang64\binClangでビルドしたい場合。Apple/macOS移植やLLVM依存プロジェクトに適す。
CLANGARM64ARM64版(Surfaceなど)ARM64UCRT/clangarm64/binARM Windows向け開発用。ARMデバイスでのみ利用。

パッケージデータベースを更新

初回はパッケージ情報を更新します。

pacman -Syu
  • 実行中に「再起動を促すメッセージ」が出た場合は、MSYS2ウィンドウを閉じて再起動
  • 再度開いたあと、もう一度以下を実行: pacman -Syu

これで MSYS2 が最新化されます。

gettext(msgfmt含む)をインストール

MSYS2 は「シェルごとに異なる環境」を持ちます。
WordPressなどWindowsアプリから直接呼びたい場合UCRT64 または MINGW64 が推奨です。

UCRT64の場合(推奨)

pacman -S mingw-w64-ucrt-x86_64-gettext

MINGW64の場合

pacman -S mingw-w64-x86_64-gettext

これで msgfmt.exe が以下に配置されます:

  • UCRT64: C:\msys64\ucrt64\bin\msgfmt.exe
  • MINGW64: C:\msys64\mingw64\bin\msgfmt.exe

PATHをWindows環境変数に追加

Windowsの PowerShell や CMD から msgfmt を使いたい場合、
上記の bin フォルダを PATH に追加します。

方法

  1. 「スタート」→「環境変数」と検索→「システム環境変数の編集」を開く。
  2. 「環境変数(N)…」ボタンをクリック。
  3. 「システム環境変数」欄の Path を選択 → 「編集」。
  4. 以下を追加
    UCRT64を使う場合: C:\msys64\ucrt64\bin
    MINGW64の場合: C:\msys64\mingw64\bin
  5. OKで閉じ、PowerShellを再起動。

環境変数の設定方法については、こちらの記事でも解説しています↓

動作確認

PowerShellまたはCMDを一度閉じてから開きなおして以下を入力:

msgfmt --version

例:

msgfmt (GNU gettext-tools) 0.xx.x

と表示されれば正常にインストール完了です。

補足(MSYS2の構成)

シェル名説明gettext パッケージ名PATH例
MSYSLinux風の最小環境gettextC:\msys64\usr\bin
MINGW6464bit Windows向けmingw-w64-x86_64-gettextC:\msys64\mingw64\bin
UCRT64互換性の高いWindows向け(推奨)mingw-w64-ucrt-x86_64-gettextC:\msys64\ucrt64\bin

UCRT64が最も新しく安定しており、Visual StudioやPythonなどのUCRT環境と互換性が高いです。

翻訳(.po→.mo)をmsgfmtでコンパイルする具体例

GNU gettext の一部で、翻訳テキストファイル(.po)をコンパイルして .mo ファイルに変換します。
PowerShellまたはCMDでコマンドを入力します。
※xxxx-ja.mo は任意のファイル名に変更してください。

例)

cd 翻訳テキストファイル(.po)のあるディレクトリ
msgfmt -o xxxx-ja.mo xxxx-ja.po

公式ドキュメント

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

AIアーティスト | エンジニア | ライター | 最新のAI技術やトレンド、注目のモデル解説、そして実践に役立つ豊富なリソースまで、幅広い内容を記事にしています。フォローしてねヾ(^^)ノ

コメント

コメントする

目次