WordPress+qTranslateでウイジェットの多言語対応
qTranslateプラグインを入れると、PowrdPressのUI、カテゴリやらタグやら記事本文まで多言語対応させることが出来るのだけど、シンプルなテキストウィジェットなどはどうにもならない。というわけでちょっとメモ。
PHP Code Widgetプラグインをインストール。テキストウィジェットの代わりにこれを利用する。
ウィジェットのタイトルは空白にして、本文にタイトルを記述する。
<?php if (strpos(strtoupper(get_locale()) ,'JA') !== FALSE) : ?> <h2>日本語タイトル</h2> <?php else : ?> <h2>English title</h2> <?php endif; ?>
言語を切り替えると現在のロケール情報も変わるので、それを読み込んで判断する。ここでは日本語と英語の二カ国語の場合を書いているが、もっと様々な言語をインストールして多言語対応している場合はその数だけ条件判断が必要になる。
サイドバーの見出しに使われるタグをチェックして同じものを使えばOK。
QRコードを貼り付けたウィジェットなら、以下のような感じ。
<?php if (strpos(strtoupper(get_locale()) ,'JA') !== FALSE) : ?> <h2>QRコード</h2> <?php else : ?> <h2>QR code</h2> <?php endif; ?> <div style="float:left; margin-right: 1em; "> <img src="http://my_site/QR_Code.jpg"></img> </div> <?php if (strpos(strtoupper(get_locale()) ,'JA') !== FALSE) : ?> 左の<a href="http://www.denso-wave.com/qrcode/index.html" target="_blank">QRコード</a>を携帯電話のカメラなどで撮影してアクセスできます。 <?php else: ?> You can access this site with some mobile devices by taking photo of <a href="http://www.denso-wave.com/qrcode/index-e.html" target="_blank">QR Code</a>. <?php endif; ?> <div style="clear:left;"></div>
ウィジェットの本文も英語に対応するため、少々長くなっている。
結果は以下のようになる。
まあ、今回は独自のPHPウィジェットを使えるようにするプラグインを使用したが、通常の記事やテキストウィジェットでPHPを使えるようにするプラグインなどもあるので、そのへんはお好みで。
追記:
別の記述方法(多分よりスマートなの)を見つけたので新たに記事を書きました。