うぇぶるじょん
WP コーディング webデザイン word bench千葉
wordpress多言語化をやる + qTranslate
wordpress多言語化とは
サイトを日本語だけでなく英語だとか中国語だとかで表示すること
方法は2つある。
1. 翻訳ツールなどを利用して自動的に翻訳してもらう
2. それぞれの言語用にコンテンツを用意して切り替えて表示するようにする
→WPならどっちでもイケるよ
翻訳ツールなどを利用して自動的に翻訳してもらう
e.g. Translate This Blog Translator
勝手に翻訳してくれる
(まあまあ意味は通じるかもしれないけど残念な翻訳になることがある)
それぞれの言語用にコンテンツを用意して切り替えて表示するようにする
いくつか方法がある
1. ブラウザの言語から表示を変えるプログラムを書く wordpressをプラグインに頼らず多言語化する方法
(プログラミングの技術がないとしんどい)
2. マルチサイトを使う wordpressの標準機能、マルチサイトを利用して、各言語用の子サイトを作る
(比較的開発は楽、プラグインに依存しない。ただし、コンテンツをサイトごとに入れていかないといかんので運用は面倒)
3. 多言語化用のプラグインを使う
無料プラグイン qTranslate(この機能そのものは自動翻訳しないよ)
(ただし無料なのでいつ開発が止まるか分からないし文句言えない)
有料プラグイン WPML
(開発がいきなり止まることは考えづらいけど、初期費用はかかる)
qTranslateでの多言語化に挑戦してみよう
ところが、このプラグインはWordPress3.5に未対応(Last Updated:2012-09-23)
→WordPress3.5に対応さす→フォーラムを調べた
http://wordpress.org/support/topic/qtranslate-broken-after-update-wp-to-35-version
1. 対応バージョンを書き換える
qtranslate.php 90行目
define('QT+SUPPORTED_WP_VERSION', '3.4.2'); // 3.5.0に書き換える
2. qtranslate_javascript.phpを入れ替える
3. 初期設定
デフォルト言語を設定
使用言語を設定
URLを設定 (?lang=en vs /en/ vs http://en.yoursite.com ←サブドメインの設定がしんどい)
widgetに配置
Edit Language
カテゴリを多言語化
(ここまでやると大抵のブログは設定完了でっせ)
サンプルサイト
http://multilingual-test.webourgeon.net/
http://multilingual-test.webourgeon.net/en
4. qTranslateの独自タグ
テンプレートの中で使ったり、カスタムフィールドなどを言語別に
出力させたりするための独自タグ
カスタムフィールドも[:ja]日本語向けの内容と[:en]英語向けの内容という風に使い分ける必要がある
<?php _e("<--:en-->English Here!!<!--:--><!--:ja-->こっちはん日本語<!--:-->:); ?>
<?php qtrans_getLanguage(); ?>
<? if(qtrans_getLanguage() == 'en') : ?> // ここに英語で出力さしたいコード <?php else: ?> // そうじゃなかったらこれが表示される <?php endif; ?>
カスタムフィールドやwidgetタイトルを出し分けてみようか
[:ja]言語切り替え[:en]Change Language
'e_'を使うといいんだよ。これがないと動かないよ
<?php echo e_(get_post_meta( $post->ID, 'price', true)); ?>
パンくずも表示できる
WP SiteManager(wordpressをCMSとして利用する際に必要な機能を網羅した統合パッケージ)を利用する
特にパラメーターを入れなくても多言語化に対応
お問い合わせも多言語化する
ContactForm7 や TrustForm を掛け合せる
ContactForm7(フォーム追加の際に、言語を選ぶことも出来、エラーも自動で多言語化してくれる。ただしこのままだと動かない)
functions.phpに以下を追加(http://nik.chankov.net/2011/10/21/quick-tip-wordpress-how-to-make-contact-form-7-working-with-qtranslate/)
add_filter('wpcf7_form_action_url', 'wpcf7_action_url'); function wpcf7_action_url(){ if(function_exists('qtrans_convertURL')){ return qtrans_convertURL($_SERVER["REQUEST_URI"]); } return $_SERVER["REQUEST_URI"]; }
タイトルやサイトも多言語化してくれるが、管理画面のタイトルは多言語化されない
あとは応用してくれ。