WordPressの子テーマで翻訳多言語対応する方法

2013/04/12

WordPress用にさまざまなテーマが公開されています。 しかし、海外製のものが多いため、日本語対応しておおらず、文言が英語で表示されてしまう場合があります。

本サイトでは 「Standard Theme」 というテーマを使用しています。
このテーマも、海外企業製なので、文言が英語の部分があります。
例えば、 「続きを読む」は”Continue Reading…” となっています。

「Standard Theme」 はTwitter Bootstrapをベースにしたテーマなので、子テーマを作成・編集することで、オリジナルを汚すことなくカスタマイズ可能です。
ここでは、「Standard Theme」 の場合を例に、子テーマでのローカライズ(日本語対応)の方法を紹介します。

準備

まず、WordPressの多言語対応は.poファイル、.moファイルを使って実現される、とか、.poファイルの編集はPoeditというソフトを使うか、あるいは、テキストエディタで編集してmsgfmtコマンドで.moファイルに変換する、とか言うことは前提知識として持っているものとします。

オリジナルの実装

まず、wp-config.phpを見てみると、

define('WPLANG', 'ja');

となっており、ロケールが’ja’であることが分かります。

次に、wp-content/themes/standard/functions.phpを見てみると、

load_theme_textdomain( 'standard', get_template_directory() . '/lang' );

となっており、ドメインが’standard’に設定されていて、国際化用ファイルをwp-content/themes/standard/langから読むことが分かります。
実際、wp-content/themes/standard/lang/standard.moが配置されています。

子テーマを日本語対応する

今回対象の子テーマはStandard Child Theme Kitで、wp-content/themes/eightbit-standard-child-theme-kit-fd31c49/ にインストールされています。

1. 翻訳した.moを配置する

wp-content/themes/eightbit-standard-child-theme-kit-fd31c49/lang に ja.mo を置きます。
プラグインの場合、ファイル名は{ドメイン}-{ロケール}.moですが、テーマの場合は{ロケール}.moでなければなりません。
なので、ファイル名はja.moとします。

2. 翻訳した.moを読み込むようコードを変更する

wp-content/themes/eightbit-standard-child-theme-kit-fd31c49/functions.phpに

/* /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ CUSTOMIZATIONS /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ */
add_action( 'after_setup_theme', 'my_child_theme_setup' );
function my_child_theme_setup(){
    load_child_theme_textdomain( 'standard', get_stylesheet_directory() . '/lang' );
}

を追記します。

load_child_theme_textdomain()の第一引数は、親テーマの名前を指定します。
第二引数は.moファイルを置いたパスです。

3. 確認する

ページをリロードして確認してみましょう。
“Continue Reading…”は「続きを読む」になったでしょうか。
001 Prime Strategy Translate Acceleratorなど、翻訳ファイルの読み込みをキャッシュするプラグインを導入している場合は、一時的に無効にして、キャッシュを削除して確認しましょう。

WordPress+Standard Theme(Twitter Bootstrap)は、多言語対応が考慮されているので、対応は簡単ですね。
拡張性・保守性が高いのが、良くできたプラットフォームを使用するメリットの1つです。

反応して頂けると励みになります。ありがとうございます

No Comments

Be the first to start the conversation.

コメントを残す

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax

Text formatting is available via select HTML.

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

*