プラグインと同じくテーマもmoファイルで翻訳可能らしいので作り方メモ。
幅広く使ってもらうテーマを作るなら必須と言える。
プラグインの翻訳もほぼ同じ。
翻訳には言語ファイルの編集ソフトが必要。
有名なのはpoEditだろうか。
さらっとpoEditの使い方を書くと
- poEditを起動する
- 新規カタログ→プロジェクトの設定
- プロジェクトの名前とバージョン→テーマの名前とか適当に
- 翻訳チーム→自分の名前とか
- 言語→japanese
- 国→JAPAN
- 文字符号化&ソースコードの(ry→UTF-8
- ページのパス→「ドット」だけ入力
- パス→「新しいアイテム」で「ドット」
- キーワード→「__(アンダーバー2つ)」と「_e」
- OKしてテーマのフォルダ内に保存。ファイル名はja.po(プラグインなら、プラグイン名-ja.po)
- カタログのソースから更新で翻訳文取り込み
- ひたすら翻訳。保存したら自動的に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()や__()でマークしていく作業が必要。
翻訳されない場合
以下チェックしてみてください
- アクティブなテーマのディレクトリ直下にja.moがあるか
- moファイルの文字コードがUTF-8であるか
- load_theme_textdomain()の位置
→カッコを省略したif ( function_exists(‘register_sidebars’) ) の下に書いたらトラブルが発生したという報告例あり
プラグイン用moファイルの場合、ファイル名がplugin-ja_UTF.moだと翻訳されないので、UTFの部分を削る必要があります。
「[WP]wordpressテンプレートファイルの翻訳方法」への2件のフィードバック