【使い方メモ:qTranslate X】WordPressサイトを多言語化するプラグイン
WordPressで多言語化案件がいくつか続きそうなのでメモメモ。
多言語化プラグインはいくつかありますが、qTranslate Xがいちばん簡単手軽かなと思いました。
言語を追加する
「qTranslate X」
(Wordpressの「プラグイン」→「新規追加」→ qTranslate Xで検索)で、インストール&有効化!
サイドバーの「設定」→「言語」→言語管理 (qTranslate 設定)で、まずは言語追加。
「デフォルト言語・順番」にあらかじめ日本語・英語が設定されているので、これ以外の言語の場合、「言語」タブから選択します。
「言語」の一覧にすらない言語の場合、たとえば韓国語などは、フォームから「言語を追加」します。
以下、韓国語の場合
①言語コード
言語コード:ko
└入力したい言語の2文字の ISO 言語コードを↓ここから探して入力(アルファベット2文字)
https://www.w3.org/WAI/ER/IG/ert/iso639.htm#2letter
②国旗
国旗:プルダウンから選択
└日本語でJaとJpがあるように、韓国語もKoとKrがあるようで、この場合kr.pngになります。
③言語名
言語名:한국
└サイトに表示される言語名
④ロケール
ロケール:ko_KR
└PHP と WordPress ロケールを↓このあたりから探して入力
https://gist.github.com/jacobbubu/1836273
⑤Locale at front-end
ヘッダーに記述する”hreflang”の指定です。”hreflang”については↓こちら
https://support.google.com/webmasters/answer/189077?hl=ja
特に指定がない場合は、”hreflang”には①の言語コードが入ります。
⑥日付フォーマット
⑦時刻フォーマット
└どちらも任意
⑧利用不可のメッセージ
利用不可のメッセージ:죄송합니다,이 내용은 지금 %LANG :뿐입니다.
└投稿が韓国語で利用できない場合に表示されるメッセージ。
%LANG には「利用できる言語」が入るので、
「このページは %LANG のみです」とか、ただ「ご利用できません」とか入れる感じ。
以上を入力したら、「言語を追加」
これで、日本語・英語・韓国語 の多言語サイトになりました。
テーマに言語選択ボタンを追加
よくある、ヘッダーの右上にある言語選択ボタンは下記コード
//テキストの場合 <?php echo qtranxf_generateLanguageSelectCode('text'); ?> //画像&テキストの場合 <?php echo qtranxf_generateLanguageSelectCode('both'); ?> //画像のみの場合 <?php echo qtranxf_generateLanguageSelectCode('image'); ?> //プルダウンの場合 <?php echo qtranxf_generateLanguageSelectCode('dropdown'); ?>
オリジナルの国旗など独自に設定にする場合は、’text’にしておいてCSSで調整します。
‘text’では以下のコードが出力されます。
<ul class="language-chooser language-chooser-text qtranxs_language_chooser" id="qtranslate-chooser"> <li class="lang-ja active"><a href="http://xxxxxx/ja/" hreflang="ja" title="日本語 (ja)" class="qtranxs_text qtranxs_text_ja"><span>日本語</span></a></li> <li class="lang-en"><a href="http://xxxxx/en/" hreflang="en" title="English (en)" class="qtranxs_text qtranxs_text_en"><span>English</span></a></li> <li class="lang-ko"><a href="http://xxxxx/ko/" hreflang="ko" title="한국 (ko)" class="qtranxs_text qtranxs_text_ko"><span>한국</span></a></li> </ul>
CSS例
#qtranslate-chooser li {float: left;} #qtranslate-chooser li a span {display:block;text-indent:-9999px;width:18px;height:12px;} #qtranslate-chooser li.lang-ja a span {background:url(画像パス) 0 0 no-repeat;} #qtranslate-chooser li.lang-en a span {background:url(画像パス) 0 0 no-repeat;} #qtranslate-chooser li.lang-ko a span {background:url(画像パス) 0 0 no-repeat;}
条件分岐でメニューや画像等を出力
投稿・カテゴリ・ページともに管理画面でタブを選択することで多言語入力できます。
ヘッダーやメニュー、フッターなどをウィジェットやテンプレートタグで出力していれば、言語選択ボタンで言語が変わりますが、往々にして、「英語版はメニューを減らす」とか「中国語版はフッター記述を別にする」とかいうケース、ロゴだけ画像、べた書きのメニュー…といったケースは、phpの条件分岐で出力します。
<?php if(qtranxf_getLanguage()=='en'): ?> 英語だった場合 <?php elseif(qtranxf_getLanguage() == 'ko'):?> 韓国語だった場合 <?php else:?> それ以外 <?php endif;?>
↑このソースだと結構ごちゃごちゃするので、
↓menu-en.phpなど別ファイルを作ってインクルードするとスッキリ
<?php if (qtranxf_getLanguage() == 'en') { include(TEMPLATEPATH.'/menu-en.php'); //英語版のメニュー } elseif (qtranxf_getLanguage() == 'ko') { include(TEMPLATEPATH.'/menu-ko.php'); //韓国語版のメニュー } else { ?> それ以外(インクルードでもなんでも) <?php }?>
あと、ソースはそのまんまでいいけど、日本語以外の言語の時はちょっとデザインを変える…の場合、bodyタグにクラスを出力します。
こちらはfunction.phpに記述。
function body_class_lang( $classes ) { $classes[] = esc_attr( qtranxf_getLanguage() ); return $classes; } add_filter( 'body_class', 'body_class_lang' );
この設定で、bodyタグに class=”en” 等が出力されます。
end.
※2018/10/16 追記
■PHPに直接多言語を記述する場合
→ _e() を使います。
<?php _e("[:ja]日本語の記述[:en]英語の記述[:]"); ?>
■親カテゴリ、親ページなど取得するとき
例)固定ページで親ページ名を取得
$parent_id = $post->post_parent; $parent_title = get_post($parent_id)->post_title; → <?php echo $parent_title; ?> では [:ja]〜[:en]〜[:] がそのまま吐き出されるので、 <?php _e( $parent_title ); ?> にする。