WordPress

WordPress の Attitude テーマに日本語翻訳ファイルを使用する(子テーマ利用)

投稿日:2017年5月15日 更新日:

WordPress の Attitude テーマに日本語翻訳ファイルを追加する方法です。
子テーマを利用していることを前提としており、子テーマのディレクトリ側に翻訳ファイルを追加します。

前置き(WordPressの国際化機能について)

WordPress は gettext という技術を利用した「国際化」機能が標準で実装されています。Webサーバに各言語毎の翻訳ファイルを用意しておけば、あとは自動で読者の環境に適した翻訳ファイルを使ってページを表示してくれる機能です。

例えば、日本語環境で使用しているブラウザでウェブサイトにアクセスすると、

Accept-Language:ja,en-US;q=0.8,en;q=0.6

といった HTTPヘッダもWebサーバに送られます。これは「読み手側がどんな言語で記事を読みたいか」を Webサーバに伝える情報であり、上記の場合は “ja” つまり日本語を第一希望としています。そして、WordPressはこの Accept-Language で指定された言語に合致した翻訳ファイルを使ってくれます。

※ Accept-Language の仕様は、こちら です。

環境

  • CentOS (Linux) で Webサーバを実行しています。
  • ターミナルアプリケーションを使って、Linuxマシンにログインして作業します。
  • CentOS で gettext が入っていない場合は、以下のコマンドでインストールしておく必要があります。
$ yum install gettext
  • Attitude の子テーマを利用します。子テーマのディレクトリ名は、attitude-child とします。
  • 子テーマ側で load_theme_textdomain()関数を実行する場所は、attitude_add_files アクションフックを使っても良さそうでしたが、今回は、after_setup_theme アクションフックで実行しました。

作業

以下は、WordPress の Attitude テーマに日本語翻訳ファイルを追加する作業です(子テーマを使う場合)。

テーマのディレクトリに移動します。

$ cd path/to/wordpress/wp-content/theme

子テーマのディレクトリ内に、翻訳ファイル用のディレクトリを作成します。
これは、Attitudeのディレクトリと同じ構成にしました。
ディレクトリのパーミッションは適宜設定してください。

$ mkdir -p attitude-child/library/languages/

親(attitude)ディレクトリから gettextのテンプレートファイルをコピーします。
このファイルはコピーしなくても良いのですが、後でコマンドを実行する時にラクになるようコピーしました。

$ cp -p attitude/library/languages/attitude.pot attitude-child/library/languages/

子テーマ側の翻訳ファイル用ディレクトリに移動します。

$ cd attitude-child/library/languages/

日本語用の翻訳ファイルを生成します。

$ msginit --locale=ja --input=attitude.pot

これで、ja.po ファイルが生成されました。
次に、この翻訳ファイルを編集して日本語をセットしていきます。

$ vi ja.po

例えば、

msgid "Tagged on: "
msgstr ""

となっているところを、

msgid "Tagged on: "
msgstr "タグ: "

と書き換え、保存して閉じます。

次に、moファイルを生成します。

$ msgfmt -o ja.mo ja.po

これで、ja.mo ファイルが生成されました。
WordPressが画面表示の際に使用するのは、こちらのファイルになります。

次に、子テーマ側の functions.php ファイルを開き、この翻訳ファイルを読み込む命令を記述します。

$ vi attitude-child/functions.php

以下を追記します。

function add_my_functions_to_parent_theme() {

  load_theme_textdomain( 'attitude', get_stylesheet_directory() . '/library/languages' );

}

add_action( 'after_setup_theme', 'add_my_functions_to_parent_theme' );

load_theme_textdomain() は親テーマ側でも実行されています。同じドメイン(第一引数、この場合は ‘attitude’)に対して再度実行するとデータがマージされます。

以上の作業により、記事ページに表示されるタグ名の部分が変更されます。

こうなっていたのが、


こうなりました。


まとめ

翻訳ファイルの仕組みは WordPressが持っている機能ですので、Attitude に限った話しではありません。他のテーマを利用している場合も参考にしてみてください。

📂-WordPress
-

執筆者:labo


comment

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

関連記事

WordPressで作られたサイトの利用テーマを調査する

ブラウザでサイトを見ていて、「これは WordPressを使っているのか?」「WordPressを使っているとしてら、何のテーマを使っているのか?」を調査する方法です。 ※ 100%分かるわけではあり …

WordPress

WordPress のプラグイン Autoptimize についての覚書

WordPress のプラグイン Autoptimize についての覚書です。

WordPress

WordPress の管理バー(admin bar) が表示されない場合の対処法

WordPress サイトの管理バー(admin bar) が表示されない場合の対応方法について説明しています。

WordPress

WordPress 5.3 のエディターで、カスタムHTMLのボックスをリサイズ可能にする

WordPress 5.3 のエディターで、カスタムHTMLのボックスをリサイズ可能にする方法について説明します。

WordPress

【WordPress】Failed to load plugin url: /wp-content/plugins/post-snippets/tinymce/langs/ja.js というエラーが表示されました

WordPressで、Failed to load plugin url: /wp-content/plugins/post-snippets/tinymce/langs/ja.js というエラーが発生しました。