勉強がてらに始めたWordPressのプラグイン作成なのですが、とても得るものが多いです。その中で、なかなかてこずった技術が「ローカライズ」です。
ローカライズ。この言葉、馴染みがある方は少ないと思います。
ローカライズとは【localize】(地域化) – 意味/解説/説明/定義 : IT用語辞典から引用させていただきますと・・・
ソフトウェアの多言語対応の段階の一つで、
国際化されたソフトウェアをある特定の言語に対応させること。
その言語に対応したメニュー表示などをセットしたり、
その言語特有の処理などを追加するといった改造のことを指す。
その前段階として、ソフトウェアに様々な言語で利用するための設計や仕
様などを組み込むことを国際化(インターナショナリゼーション:internationalization、I18N)という。
そして、様々な言語への対応を組み込み、利用者が自分の使用する言語にあわせて
設定を切り替えて使用できるようにすることを
多言語化(マルチリンガライゼーション:multilingualization、M17N)という。
・・・うーむ・・・。以下、自分でむりやり解釈した例を挙げます。
包装された「お菓子」があったとして。日本特有だと「和菓子」になりますかね。お菓子の袋には注意書きがあって、「温めるとまずいから常温で食べてくれ」って書いてある。これは重要なことだけど、日本語で書いてある。
で、それをフランス語しかわからない方(まあ、フランス人でしょうかね)に渡す。
ローカライズされていれば、フランス語で「温めるとまずいから常温で食べてくれ」が翻訳された形で「Aller à manger à la température ambiante de la chaleur et le mauvais」って包装に書かれている。これは、読める。読めるから注意書きの内容を守って、おいしく食べられる。
ダメ押しで例をもう1つ、寿司。食べ物ばかりですみません。寿司の食べ方はいろいろありすぎて、それはちゃんと説明がないと通常の食べ方はできないでしょう・・・
寿司の食べ方についての説明文をローカライズしておけば、初めて見た外国の方だって何も情報がないよりはきちんと食べることができる・・・はず・・・だと信じたいです。
外国の方が寿司を説明なしに食べることはできるのだろうか
・・・どんな例を出してんだよっていう指摘はあるとは思いますが、国籍問わず、同じように正しく道具や事柄を扱えるようにしましょうってことかな・・・
そのためには、まずは言葉の壁を取って誰でも理解できるようにしようよ。そこからがスタートでしょ~、ってことなのかもしれない。・・・私はそう理解しました。
長々となりましたが、WordPressに当てはめれば、プラグインを作成する際にはローカライズさせることが推奨されていますね。
というわけで、私もWordPressプラグインのローカライズに挑戦しました。ここからが本題です。
まずは前提から
今回は「WordPressプラグインを作成してる時に思ったこと」なので、WordPressプラグインに焦点を当ててローカライズさせる方法をご説明します。
せっかくなんで私のどうしようもない例を採用して「okashi」ってプラグインを作ることにします。お菓子の「タイトル」「注意書き」「値段」をローカライズして表示させるだけのプラグインです。
プラグインファイルに必要な記述「Text Domain」
wordpressプラグインのメインとなるファイルにはヘッダー情報を入れる必要があります。
詳しくは、こちらをご覧下さい。
で、このヘッダー情報の中にローカライズさせるための記述として「Text Domain」を指定する必要があります。ここでは、お菓子「okashi」と指定します。(他の項目の値は適当です)
プラグインのメインとなるファイルのヘッダーにText Domainを記述
/* Plugin Name: okashi Plugin URI: https://www.imamura.biz/blog/ Description: okashi information Version: 1.0.0 Author: Tetsuya Imamura Text Domain: okashi Author URI: https://www.imamura.biz/blog/ License: GPL2 */
続いて、ローカライズするための言語ファイルの場所を指定する
言語ファイルを指定する記述
function okashi_textdomain() { load_plugin_textdomain ( 'okashi', false, basename( rtrim(dirname(__FILE__), '/') ) . '/languages' ); }
さらっと説明を。各言語ファイルは「プラグインディレクトリ/languages」に格納していますので、「使いますよ」という宣言をしています。pot,po,moファイルの作成方法は今回は省略します。
プラグインフック
実際に「使う」ためには、以下の「フック」を記述しましょう。
フックを記述します
add_action( 'init', array(&$this, 'okashi_textdomain') );
ローカライズさせた文字を出力するには
codexにはこう書かれています。
文字列を取得するには、
__(‘String name’,’your-unique-name’); を使って翻訳を返すか、
_e(‘String name’,’your-unique-name’); をつかって翻訳を出力します。
上の引用にならって「okashi」の「タイトル」「注意書き」「値段」を出力するには・・・
- タイトル → <?php _e(‘Title’ , ‘okashi’); ?>
- 注意書き → <?php _e(‘Notice’ , ‘okashi’); ?>
- 値段 → <?php _e(‘Price’ , ‘okashi’); ?>
というように書きます。これでよしです。
それぞれコードの一部分だけ切り取って紹介しましたんで、わかりにくですね。事項から、画像を交えますね~。
「okashi」ウィジェットの入力項目に注目下さい
試しに「okashi」ウィジェットのプラグインを作りました。このプラグインを有効にすると、「okashi」というウィジェットが作成されます。
管理画面のウィジェット画面で単純に、お菓子の「名前」「注意事項」「値段」を入力して、Webサイトのサイドバーに表示させようという、別にいらないものですね。
いいんです、ローカライズの実験でしか使わないので・・・そんなことより注目するところは、それぞれ入力項目の表示です。
日本語
フランス語
WordPressをそれぞれ日本語、フランス語に対応させて、ウィジェット画面をキャプチャしました。これがローカライズです。日本語、フランス語を使う方がこのウィジェットを見たときに何を入力すればいいのか、わかりやすくなりますね。
ローカライズの検証は「config.php」のコード一部を変更すればよいです
ちなみに、これはどうやって検証したのか?といいますと、使っているWordPressの言語の設定を変更することでできます。
WordPressのインストールしたディレクトリにある「config.php」ファイルのコードを一部変えるだけです。
もし気になる方は、WordPressの日本語版をお使いでしたら「config.php」ファイル中にある以下の記述をみつけてください。
define('WPLANG', 'ja');
というコードがあるはずです。太字のところにご注目を。「ja」となっていれば日本語版対応されていますよ。ここの部分を変更すれば、言語を変更できます。
define('WPLANG', 'ja'); → 日本語サポート define('WPLANG', 'fr_FR'); → フランス語サポート
といったようにです。
まとめ
WordPressのプラグインを自作していて、この「ローカライズ」が一番てこずりました。理由は以下です。
- WordPressのプラグイン作成について、全容を掴むことができていなかったこと
- テンプレートタグや関数の使い方をイマイチ修得していなかったこと
- そもそもWordPressのローカライズの仕組みを理解していなかったこと
など、今回のプラグイン作成がきっかけになって、いろいろと気づくことができたと共に、私の弱かった分野を幾分か補強することができたな、と感じました。
また、ローカライズはプラグイン作成においては基本的な技術の1つにすぎないので、プラグイン作成って意外にやることが多いんだなぁ~、なんて感じています。
今回の件で、日ごろお世話になっているプラグインの使用については、「ありがとう、ありがとう」と感謝の気持ちも芽生えはじめました。
今まで使えて当たり前だろって思っていたところも少しありましたが・・・使っていた技術に感謝することなんて、サービスを提供される側から提供する側に回らないと、なかなか実感することがないんだろうな、なんて改めて思いました。
というわけで、WordPressのプラグインのローカライズ(地域化)、多言語対応の方法をお探しの方に、ご参考いただければ幸いです!
次回は自作プラグインの登録方法を書こうかと思います。今、WordPress.orgに申請中なので、正式に認証がされたらその時また書こうかと思います。
「Newpost Catch」プラグイン専用Facebookページがあります
WordPressプラグイン「Newpost Catch」の活用事例や更新情報などを配信しています。情報を受け取る場合は「いいね!」でフォローくださいますよう、よろしくお願いします。
このページを共有する