無料版のWPMLを利用したサイト多言語化

WordPressを多言語化するプラグインWPMLの最新バージョンが有償化していた。旧バージョンの2.0.4.1まではこれまで通り無料で使えるようだが、最新バージョンに、無料版はない。

CMS版が79ドル、ブログ版が29ドルとなっている。個人的な感想としては、個人のブログを多言語化するのに29ドルかかるというのは、何だか高いような気もするが、企業サイトを多言語化する費用が79ドルで済むといわれると、こちらは逆に安く感じてしまう。

企業・団体のサイトの場合は、責任の所在はがっきりしていた方が喜ばれる傾向が強いので、79ドルに1年間のサポートとアップグレード保証が含まれているとなれば、高い買い物ではないかもしれない。

とはいえ、せっかくオープンソースのWordPressを使っているのだから、できれば無料で済ませたい思う人も多い筈。

そこで、以下、旧バージョンのWPMLで使ったサイトの多言語化について情報を集めてみた。

旧バージョン(無料版)のWPMLのインストール方法

無料版のWPMLのインストール方法は次のサイトが詳しい。

なお、無料版の場合、リンク表示ウィジェットなど、WPMLに対応していないものもあるが、こうした箇所は、テキスト・ウィジェットなどで代替すれば何とかなる

無料版WPMLで多言語化できない箇所への対応

リンク表示ウィジェット以外にも、無料版WPMLでは対応していない箇所があるので、そこは、手作業で、多言語化しなければならない。

言語によるHeader画像などを切り替えなどは、次のサイトが参考になった。

無料版のWPMLが対応していない部分を多言語化(この場合は日英二ヶ国語化)するときのポイントは、次のとおり。

1. ルートディレクトリにあるwp-config.phpから次の行を探す。

define ('WPLANG', 'ja');

2. 上記の行を次のとおり書き換える。

// 言語判定(ブラウザの言語設定とGETの両方を確認)
if (preg_match('/^ja/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
     $locale = "ja";
     define ('WPLANG', 'ja');
     if(htmlspecialchars(@$_GET["lang"] == "en")) {
          $locale = "en_US";
          define ('WPLANG', 'en_US');
     }
} else {
     $locale = "en_US";
     define ('WPLANG', 'en_US');
     if(htmlspecialchars(@$_GET['lang'] == "ja")) {
          $locale = "ja";
          define ('WPLANG', 'ja');
     }
}

3. header.phpやhome.phpなどで言語による切り替えを行いたい部分に、次のような条件分岐を記入する。

<?php if ($locale == "ja"): ?>
     /* 日本語モードの時表示したい記事やヘッダー画像などをここに入れる */
<?php else: ?>
     /* 英語モードの時表示したい記事やヘッダー画像などをここに入れる */
<?php endif; ?>

なお、トップページに独自のレイアウトで表示させたい場合、例えばhome.php(バージョン3.0以降ならfront-page.phpでもよい)を利用しているとしたら、get_template_part関数を応用して次のように書いておくと分かりやすいかもしれない。

<?php get_header(); ?>
<div id="container">
  <div id="content" role="main">
    <?php if ($locale == "ja"): ?>
      <?php get_template_part('home', 'jp'); ?>
    <?php else: ?>
      <?php get_template_part('home', 'en'); ?>
    <?php endif; ?>
  </div>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

あとは、home.phpと同じ階層にhome-jp.phpとhome-en.phpを作り、前者に日本語の内容、後者に英語の内容を記述すれば、2ヶ国語対応となる。対応言語が増えてくると、役に立つかもしれない。

今のところWordPressのバージョン3.2.1でも問題なし

以上で、無料版のWPMLによるサイトの多言語化の簡単なまとめだが、この方法で多言語化したテストサイトのWordPressのバージョンを3.2.1に上げてみたが、今ところ問題なく動作している。

ただ、この無料版WPMLは、今後のバージョンアップは行われないようなので、WordPressのどのバージョンまで対応するかは未知数。

もちろん、簡単なサイトならWPMLなどのプラグインを頼らない多言語化もありだろうが、プラグインを含めた多言語化まで考えるなら、有料版を購入した方が安くつくかもしれない。