WordPressプラグイン「qTranslate」でブログを多言語化する

thumb_translate

以前このブログをリニューアルした時に「付け足したかった機能を1つまだ実装していない」と触れたのですが、やっと実装完了しました!Webクリエイターボックスがついに英語でも配信されます!わーわー!ブログを始めた時から友人から「英語化まだかよー」と言われ続け早2年。お待たせしました!今回はそんな英語化するにあたってqTranslateというWordPressプラグインを使って多言語化したので、その使用方法について書いてみようと思います。

実は今回の記事のタイトル、どこかで見た事があるかもしれません。そう、以前「WordPressプラグイン「WPML」でブログを多言語化する」という記事を書いた事があるのです。この記事で説明しているとおり、私のポートフォリオサイトは「WPML」という、サイトを多言語化するWordPressプラグインを使用して翻訳されています。しかしWPMLは2011年2月に有料化されたため、課金をするか別のプラグインを使うか悩んでいました。

今回採用したのはqTranslateという、無料でサイトを多言語化することができるWordPressプラグインです。以前から知ってはいたものの、ちゃんと試した事がなかったので、今回改めてテストしてみました。すると思っていた以上に使いやすかったので採用することに。簡単に使い方を紹介します。

追記:問題発生によりWPMLに移行しました→ WordPressの多言語化プラグインをqTranslateからWPMLに変更しました

qTranslateの基本設定

まずはプラグインをダウンロードして、管理ページで有効化します。その後、設定 > Language から設定していきます。まずは言語の設定。

qTranlateの基本設定

ページ下部に国旗とともに言語が表示されています。使用する言語を「Enable(有効化)」し、不要な言語は「Disable(無効化)」します。

デフォルトにしたい言語のラジオボタンにチェック

「Save Changes」ボタンをクリックして保存すると、選択した言語が表示されています。デフォルトにしたい言語のラジオボタンにチェックを入れて保存。

投稿画面

投稿画面に行くと、複数言語でタイトル・記事が書けるようになっていますね。

カテゴリー名とタグ名

もちろんカテゴリーやタグの名前も複数言語で指定できます。

URL

設定 > Language > Advanced Settings からURLの設定ができます。下記3つのどれかになります。

  1. クエリーモード(http://webcreatorbox.com/?lang=en)
  2. サブディレクトリモード(http://webcreatorbox.com/en)※デフォルト
  3. サブドメインモード(http://en.webcreatorbox.com/)

私はデフォルトのサブディレクトリモードを使っています。サブドメインモードでは他にドメインの取得・設定が必要になるようです。

テーマのカスタマイズ

日付のフォーマット

プラグインを有効化すると、日付の表示が何やらおかしくなっていました。テーマファイル内で <?php the_time(); ?> ではなく <?php the_date(); ?> を使うと直りました。
それでもおかしい時は 設定 > Language > Languages の言語一覧から「Edit」をクリックし、「Date Format」を変更してください。

言語スイッチャー

言語スイッチャー

好きなところに言語スイッチャーを表示する事ができます。表示方法は text, image, both, dropdown から選べます。

<?php echo qtrans_generateLanguageSelectCode('text'); ?>

つねに全ての言語を表示するのではなく、現在表示している言語以外のもののみを表示する場合は、少しカスタマイズが必要です。このサイトでは以下のコードをfunctions.phpに書いています。

function curPageURL() {
    $pageURL = 'http';
     if ($_SERVER["HTTPS"] == "on") {
        $pageURL .= "s";
    }
     $pageURL .= "://";
     if ($_SERVER["SERVER_PORT"] != "80") {
          $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
     }
    else {
          $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
     }
return $pageURL;
}

function langlist () {
   if (qtrans_getLanguage() == 'en') {
      echo '<a href="' . qtrans_convertURL(curPageURL(), 'ja') . '">日本語</a>';
   } elseif (qtrans_getLanguage() == 'ja') {
      echo '<a href="' . qtrans_convertURL(curPageURL(), 'en') . '">English</a>';
   }
}

テーマファイル内の翻訳

テーマファイルの文字列を翻訳する時は、下記の便利なコードが使えます。文字数が少ないナビゲーションメニューや見出しなどはこれで済みそうですね。

<?php _e("<!--:en-->english<!--:--><!--:ja-->にほんご<!--:-->"); ?>

翻訳する部分がたくさんあったり、言語によって読み込むファイルを変更する時は qtrans_getLanguage() を使います。この例では、言語が英語だった時は「en.css」というCSSファイルを読み込むようにしています。

<?php if (qtrans_getLanguage() == 'en') { // English ver ?>
   <link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/css/en.css">
<?php } ?> 

All in One SEO Plugin

All in One SEO Plugin

All in One SEO Packを使う時は、画像のコードで適応できました。

Tweetするとタイトルが変

私は記事が更新されるとWordTwitというプラグインで自動Tweetするようにしています。qTranslateのテストを兼ねて記事を更新したある日、こんな風にTweetされていました。

Webクリエイターボックス:<!–:ja–>Twitter 人気のつぶやき 1/14~1/20 2012<!–:–> tinyurl.com/7x6rbje

なんかタグが見えてる…

__() というのが翻訳文字列の取得コードとの事なので、プラグインファイル wordtwit.php の887行目の

$message = str_replace( '[title]', $my_post->post_title, $message );

$message = str_replace( '[title]', __($my_post->post_title), $message );

に変更すると直りました。

WordTwitだけでなく、多くのTwitter自動配信系プラグインは同様のコードを使っていると思うので、試してみてください。

qTranslateはカスタマイズが非常に楽チンで気に入っています。ただ、やはり自分で使って試してみるのが一番。WPMLは有料ですが、30日以内であれば払い戻しもしてもらえるようなので、比較してみるのもいいでしょう。

翻訳…大変だろうけどがんばるぞー!

参考サイト: What is the qTranslate lang switch code?

シェアする

コメント

  • http://twitter.com/dearworldjay dearworldjay

    世界へ飛躍してしまうのですね。
    すごいです。応援してます。
    世界特にアメリカは日本よりずーと技術が進んでるから
    日本より目は肥えてると思うけど勝負してみてください。

  • Yuto Hatachi

    多言語化対応クールですね~!
    例え英語版でしか見れない記事とか出てもマナさんの記事なら頑張って読みます^^

  • Lora Kaneko

    はじめまして。このプラグインいいですね!
    これは、例えば、簡単な日本語(学習者向け)⇔普通の日本語(日本人向け)などの切り替えにも応用できると思いますか?
    今はひたすら、記事の上の方に簡単な日本語、下の方に普通の日本語・・・と羅列して書いているので、こうやって切り替えられるととてもいいな、と思いました。

  • http://webcreatorbox.com Webクリエイターボックス

    自分で新しい言語の登録もできるので、自分でわかりやすい言語名・旗(必要なら)・スラッグなどの登録をしてカスタマイズできると思いますよ!

  • tubu anko

    いつもお役立ち記事をありがとうございます!
    これ!すごく便利ですね♪一つの記事内に英語と日本語の二カ国語でお料理のblog(bloggerを使っています。)を書いているんですが、もうごちゃごちゃしてしまっているのでスイッチできるようにしたい!と色々検索してたところなんです。
    この言語スイッチャーなんてすごくいいなぁ。いいなぁ。
    しかし、wordpressなんですね。。初心者には何となくハードルが高いようなイメージだけれど、bloggerから移行させるべきかどうか悩みどころです。うーぬ。

  • Ishoji

    はじめまして。いつもためになる記事ありがとうございます。多言語化対応もおかげさまでうまくいきました。
    ただ、ウィジェットの検索ですが、これは対応されないのですかねえ?英語モードで検索しても”検索結果”などの文字が英語化されなかったです。もし何かご存知でしたら、ご教授いただけると助かります。

  • chengri cai

    いつもブログを読んで勉強になります。このプラグインがすごくいいですね。
    しかし、よく分からなくて困ってます。
    例えば、見出しとか画像にするとチェンジできないですかね?
    マナさんのブログのロゴは画像もチェンジできるみたいけど、どんな方法か教えてもらえますか?
    よろしくお願いいたします。

  • http://webcreatorbox.com Webクリエイターボックス

    普通に、上記コードで画像名を変更すればOKです。
    <img <!–:en–="" src="&lt;?php _e(">english.jpgjapanese.jpg"); ?>">

  • http://webcreatorbox.com Webクリエイターボックス

    ウィジェットタイトルのテキストフィールド内に
    [en:]Search Result[ja:]検索結果
    でどうでしょ?

  • Pingback: Web サイトをリニューアルしました | attosoft.info()

  • Pingback: qTranslate でサイトを多言語化する | attosoft.info()

  • Pingback: まとめ:中級者におすすめの WordPress プラグイン (18 個) | attosoft.info()

  • http://profile.yahoo.com/SNFU5E7BX6RLLQXC4WO47FKDLQ MimoKuter

     はじめまして、このプラグインについて詳しい解説ありがとうございます!
    今自分が使用しているテーマのstyle sheetファイルはLESSファイルで、
    different font with different language 例:英語だった時は「en.css」ファイルを読み込む←この辺はうまくいかなくて、もし宜しければご教授をお願いしたいです。。。すみません。。

    ”    <link rel="stylesheet" href="/css/en.css”>
     ” こちらのコードはテーマ内header.php →   の間に書くのは間違いないでしょうか?

    for my theme style, i add a different font for the different language but without any result,
    so i add a new file as ex:en.css (not a less file) , but still, nothing changed.
    All i want to do is to change the font of the default Post Title and maybe content’s font,i saw the source of the title named  ,  i tried .entry-title {} and some code else, but …of course did not  work :(
    or do I miss something? Sorry, my knowledge of PHP is not that good.
    can you get me in the right direction. would be very much appreciated. thanks a lot !

  • http://webcreatorbox.com Webクリエイターボックス

    Would you like to change only font family of a post title? So that you can just change a heading class by languages.

    For example:
    <h1 class="<?php _e("<!–:en–>english<!–:–><!–:ja–>japanese<!–:–>"); ?>">

    CSS:
    .english{font-family: georgia, serif;}
    .japanese{font-family: helvetica, sans-serif;}

  • http://www.facebook.com/caichengri 蔡成功

     ありがとうございます。助かります。

  • Pingback: ポートフォリオサイトをリデザインしました! | Webクリエイターボックス()

  • Pingback: 【Wordpress】プラグイン qTranslate | メモ()

  • Pingback: 【Wordpress】プラグイン qTranslate | メモ()

  • http://twitter.com/wangxxx Daniel Wang

    助かりました。ありがとう。
    といえば、コメントは通訳してないよね

  • Pingback: TweetableとqTranslate | 450k()

  • Pingback: qTranslate | UEHASU()

  • Pingback: [開発メモ]wordpress 無料翻訳プラグイン qtranlate 旗を含む cssの在処 | 株式会社Asile Asile.inc()