[WP]wordpressテンプレートファイルの翻訳方法

プラグインと同じくテーマもmoファイルで翻訳可能らしいので作り方メモ。
幅広く使ってもらうテーマを作るなら必須と言える。
プラグインの翻訳もほぼ同じ。

翻訳には言語ファイルの編集ソフトが必要。
有名なのはpoEditだろうか。

参考:Translating WordPress

さらっとpoEditの使い方を書くと

  1. poEditを起動する
  2. 新規カタログ→プロジェクトの設定
    • プロジェクトの名前とバージョン→テーマの名前とか適当に
    • 翻訳チーム→自分の名前とか
    • 言語→japanese
    • 国→JAPAN
    • 文字符号化&ソースコードの(ry→UTF-8
    • ページのパス→「ドット」だけ入力
    • パス→「新しいアイテム」で「ドット」
    • キーワード→「__(アンダーバー2つ)」と「_e」
  3. OKしてテーマのフォルダ内に保存。ファイル名はja.po(プラグインなら、プラグイン名-ja.po)
  4. カタログのソースから更新で翻訳文取り込み
  5. ひたすら翻訳。保存したら自動的にmoが作成・更新される

まずテーマのテキスト部分を次のように記述する。

<h3><?php _e("Sample Information","hoge")?></h3>
<?php $test = __("Sample Information","hoge");?>

_eはecho命令と同じなので出力用に、
__は何も付いてない状態とほぼ同じなので、変数への代入、引数等で使用する。

_e($message,$domain)echo
__($message,$domain)return

ソースからpoファイルとmoファイルを作成する。(作成手順は省略)

作成したpoファイルとmoファイルは、wp-config.phpの言語設定の値と同じものにする。

日本語ならこう書いてあるので▼

define ('WPLANG', 'ja')

ファイル名を、ja.moとja.poにしてテーマのフォルダ内に置く。(themes直下ではなく翻訳対象テーマのフォルダ内)

functions.phpに以下を記述する。

load_theme_textdomain($domain);

$domainはテーマ内に書いた_e()の第2引数を入れる。
上のサンプルだとload_theme_textdomain('hoge');になる。

テーマの翻訳はテーマフォルダ内にja.moがあれば勝手に翻訳されますが
プラグインでプラグインフォルダ内にmoファイルを入れても翻訳されない場合は、プラグインのソース内の

load_plugin_textdomain('hoge', 'wp-content/plugins/');

に、プラグインフォルダ名を付け足せばおk。
翻訳出来るように作られてないプラグインやテーマの場合は、翻訳する部分を全て_e()や__()でマークしていく作業が必要。

翻訳されない場合

以下チェックしてみてください

  1. アクティブなテーマのディレクトリ直下にja.moがあるか
  2. moファイルの文字コードがUTF-8であるか
  3. load_theme_textdomain()の位置
    →カッコを省略したif ( function_exists(‘register_sidebars’) ) の下に書いたらトラブルが発生したという報告例あり

プラグイン用moファイルの場合、ファイル名がplugin-ja_UTF.moだと翻訳されないので、UTFの部分を削る必要があります。

1件のコメント

Leave a Comment.