【WordPress】 翻訳ファイルを子テーマで変更する方法

404ページの「おっと、失礼しました。」などちょっと!?な翻訳が多いWordPressですが、これを子テーマを用いて変更する方法をまとめておきたいと思います。

スポンサーリンク

翻訳の仕組み

まずは翻訳の仕組みをまとめていきましょう。

WordPressは多言語対応です。
このためソースの中に「この箇所を使用している言語に置き換える」という指定があります。

例えば404ページの「「おっと、失礼しました。」であれば404.phpの「_e(・・・)」の箇所です。

20141105_translation_02b

これはテーマtwentytwelveの日本語用翻訳ファイルで「’This is somewhat embarrassing, isn’t it?’」に紐付けされた文章をecho出力するという意味です。

この翻訳関数は_e()と__()の2種類あり、_e()は文字をそのまま出力するときに、__()は変数代入や引数に使われます。
例えば変数として代入すると、
$test = __( ‘This is somewhat embarrassing, isn’t it?’, ‘twentytwelve’ );
という使い方になります。

翻訳ファイルはどこにあるのかといえば、テーマフォルダの中ではなく
wp/wp-content/languages/themes
にあります。

20141105_translation_03

この中のtwentytwelve-ja.moを読みに行っているのです。

中身を見てみましょう。
中身を見るにはPoeditを使いmoファイルと対になっているpoファイルを開きます。

20141105_translation_04

ありました。
ここを読んで出力しているのです。

翻訳を変えるにはどうしたらいいか

いちばん簡単な方法は上記の翻訳ファイルを直接変更してしまうことです。
しかし翻訳ファイルにアップデートがあると全て元に戻ってしまいます。
その都度修正するという手も有りますが、アップデートごとに全てを確認するのも大変な作業です。

そこでここでは子テーマにて変更を行います。

手順は以下のとおりです。

1.functions.phpにコード追加
2.親テーマの翻訳ファイルをダウンロード
3.翻訳ファイルの編集
4.子テーマのフォルダへ翻訳ファイルをUP
5.変更したい箇所のコード修正

実際に404ページの「おっと、失礼しました。」を「ご指定のページは存在しません。」に変更してみましょう。

20141105_translation_01

1.functions.phpにコード追加

以下のコードを子テーマ用functions.phpに追加し、アップロード。

add_action(‘after_setup_theme’, ‘language_child’);
if(! function_exists(‘language_child’)):
function language_child() {
load_theme_textdomain(‘twentytwelve_customize’, get_stylesheet_directory() . ‘/languages’);
}
endif;

20141105_translation_05b

2.親テーマの翻訳ファイルをダウンロード

FTPにて子テーマのベースにしている親テーマのpoファイルをダウンロード。

20141105_translation_08

3.翻訳ファイルの編集

まずファイル名を変更します。

twentytwelve-ja.po

ja.po

その後でPoeditで編集します。

20141105_translation_07b

保存をするとpoファイルと共にmoファイルが生成されます。

20141105_translation_09

4.子テーマのフォルダへ翻訳ファイルをUP

子テーマの中にfunctions.phpで指定したフォルダ「languages」を作成し、その中に2つの翻訳ファイルをアップロードします。

20141105_translation_10

5.変更したい箇所のコード修正

最後に変更したい箇所の翻訳ファイルの指定を変更します。
今回の例であれば404.phpのこの箇所を変更し、子テーマにアップロード。

20141105_translation_11b

これで完成です。

20141105_translation_12

注意点

実はWordPressの翻訳ファイルは一つではなく、WordPress本体やプラグインなどにも別の翻訳ファイルが存在します。
今回変更したのはテーマ用の翻訳ファイルで対象はテーマに関する文章だけです。
WordPress本体やプラグインは子テーマでは扱えませんので、更新で消えることを覚悟して直接翻訳ファイルを変更するしかないようです。
個人的には更新のたびに不安になるくらいならクラスやIDで引っ掛けてjQueryで書き換えてしまったほうが素直かと思います。


スポンサーリンク
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA