poファイルを使ってWPの多言語化を実現する

「WordPressのテーマ、なんか翻訳できるらしいけど……poファイル?moファイル?なにそれ?」というところからスタートした初心者の私が、実際にやってみた記録です。
専用ソフトをインストール
まず出てくるのが「Poedit(ポエディット)」。poファイルを編集するための専用ソフトらしいので、公式サイト(https://poedit.net)からダウンロードしてインストールしました。インターフェースもわかりやすくて安心です。
テーマにlanguagesフォルダをつくる
自作のテーマ内に「languages」っていうフォルダを作成。ここに翻訳ファイルを入れるっぽいです。
ファイル名は「ja.po」にしておきます。日本語ってことですね。
その中にpoファイルをつくるみたいですね。ファイル名は「言語.po」。例えば「ja.po」とか。
中身はこんな感じ。
msgid ""
msgstr ""
"Project-Id-Version: Test Theme\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-09 00:00+0000\n"
"PO-Revision-Date: 2025-05-09 10:00+0900\n"
"Last-Translator: あなたの名前 <you@example.com>\n"
"Language-Team: \n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.6\n"
"X-Domain: テーマ名(半角英数字)\n"
msgid "Back to List"
msgstr "一覧に戻る" # 「一覧に戻る」と表示させたい場合
↑このあたり、最初よくわかってなかったんだけど、「msgid」は元の文、「msgstr」が翻訳先。つまり、”Back to List” を “一覧に戻る” に翻訳しますよっていう話。
ファイルができたら、「poedit」で「ja.po」ファイルを開きます。
上書き保存をしたら「ja.mo」というファイルが自動で作られます。poファイルをコンパイルしてmoファイルになります。これが実際にwordpressが読む翻訳ファイルです。なので、翻訳ファイルを変更したら、必ず上書き保存をしてコンパイルする必要があります。
WPに反映
次にfunctions.phpに以下を入力します。
必ずテーマ名を合わせてください。
function mytheme_load_textdomain() {
load_theme_textdomain('テーマ名(半角英数字)', get_template_directory() . '/languages');
}
add_action('after_setup_theme', 'mytheme_load_textdomain');
同時にstyle.cssに「Text Domain」が入っていることを確認します。
値はテーマ名と同じにします。ここが合っていないと表示されない可能性があります。
@charset "UTF-8";
/*!
Theme Name: 言語テスト
Author: 言語テスト
Author URI: https://example.co.jp
Description: 言語テスト
Text Domain: テーマ名(半角英数字)
Version: 1.0
*/
これで設定は完了です。
ブラウザで確認してみます。
まとめ:最初は意味不明だったけど、やってみたら流れはシンプルだった
最初は「po?mo??」とわけわかんなかったけど、
- Poeditを使ってpoファイルを編集
- moファイルを自動生成
- functions.phpとstyle.cssをちゃんと合わせる
この流れさえ押さえれば、思ってたよりスムーズに翻訳できました。テーマの文言を翻訳したい人は、まずこの方法から試してみるとよさそうです!
今回は以上です!