PoeditでHTMLソース内の__()と_e()を抽出して翻訳する方法 | WordPress開発

※当サイトはアフィリエイト広告を利用しています。

この記事ではPoeditにおいて、HTMLソース内の__()や_e()のテキストを抽出し、翻訳して多言語対応する方法を記載します。
スポンサーリンク


前提知識について

この記事はPoeditを使用してphpファイル内の__()と_e()を抽出する方法は知っている前提で記載します。

「そのそも多言語の方法が全然分からないよ」という方は以下の記事にまとめてあるので、そちらをまずご覧ください。

サンプルコード

今後は以下のサンプルコードを用いて説明します。

test.php
<?php

/*
Plugin Name: test
Description: test
Version: 0.1
Author: Aresei
Author URI: https://www.aresei-note.com/
*/

load_plugin_textdomain("test", false, dirname(plugin_basename( __FILE__ )) . "/languages");

function test_execMenu() {
    include("test.html");
}
function test_addMenu() {
    add_options_page(
        "test",
        "test",
        "manage_options",
        "test",
        "test_execMenu"
    );
}
add_action("admin_menu", "test_addMenu");

var_dump(__("test in php", "test"));

?>
test.html
<html>
    <head>
    </head>
    <body>
        <?php _e("test in html", "test"); ?>
    </body>
</html>

上記のサンプルコードのプラグインメニューページを開くと以下のように表示されます。
これらの”test in php”と”test in html”の文字列を翻訳することを目指しましょう。

そのままPoeditで__()と_e()を抽出すると…?

下図のようにtest.phpとtest.htmlを対象ファイルにし、コードから抽出してみます。
すると、下図のようにphpファイル内の翻訳対象テキストは抽出できているものの、残念ながらhtmlファイル内の翻訳対象テキストが抽出できていないことが分かります。

HTMLファイル内の__()と_e()を抽出する方法

HTMLファイル内の__()と_e()が抽出できない原因はよくは分かりませんが、以下の手順でHTMLファイルも抽出できるようになります。

Poeditのツールバー → 設定 → 抽出ツール → + を選択します。
すると抽出ツールの設定画面が開かれますので、以下のように入力します。
入力するのが大変だと思うので、コピペできるように以下に記載しておきます。
  • ‪php in html
  • *.html
  • ‪xgettext -L PHP –add-comments=TRANSLATORS: –force-po -o %o %C %K %F
  • ‪-k%k
  • ‪%f
  • ‪–from-code=%c
入力が終わったらOKボタンを押してウィンドウが閉じて、ツールバーの「コードから更新」を押します。
下図のようにHTML内の翻訳対象テキストが抽出できていればOKです。

サンプルコードの結果

さきほどのサンプルコードが問題なく翻訳されることを確認しましょう。

今回は以下のように翻訳テキストを設定しました。
.poファイルを保存し.moファイルを生成後に、元のプラグイン設定画面を更新すると、下図のように翻訳されたテキストが表示されます。

まとめ

この記事ではPoeditでHTMLファイル内の__()と_e()を抽出して翻訳する方法を紹介しました。
困っている方の参考になれば幸いです。