O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

WordPress 多言語化プラグインqTranslateの紹介

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio

Confira estes a seguir

1 de 20 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Quem viu também gostou (12)

Anúncio

Semelhante a WordPress 多言語化プラグインqTranslateの紹介 (20)

Mais de Takashi Uemura (20)

Anúncio

Mais recentes (20)

WordPress 多言語化プラグインqTranslateの紹介

  1. 1. WordPress多言語化プラグイン qTranslate の紹介 2013.9.7 WordBench神戸 上村崇 @uemera
  2. 2. 最近のオレ @uemera uemura フリーランスのシステムエンジニアです。西宮在住。 上村 崇 PHPフレームワーク (FuelPHP) サーバーインフラ (Webサーバ構築など) WordPress (プログラミングサイドの仕事) JavaScript、jQuery 勉強会準備 (WordBench等) ネットショップ支援 (CS-Cartアドオン作成、カスタマイズ)
  3. 3. qTranslateとは ・多言語化のためのプラグイン。  日本語のほかに英語のページを作りたいときに便利。 もちろん他の言語も可能。 ・フリー ・動作が重い?
  4. 4. 1つの投稿に2つの言語のタイトルを入力する欄 日本語と英語の記事入力欄をタブで切り替える
  5. 5. qTranslateのいいところ ・1つの投稿ページで、同時に複数の言語の記事が書けるので、  管理が楽。 日本語の記事を書いたあとに、別途英語用の投稿ページを  新規作成するという手間が省けます。 ・すべてのページに、 必ず日英両記事が必要なサイトを作る  場合に向いています。  例えば部分的に日本語だけのページしか必要ない場合は あまり向かないかも。
  6. 6. 日本語 English タイトルロゴ 言語切替 メニューバー
  7. 7. 言語選択切替ボタンの表示 <?php echo qtrans_generateLanguageSelectCode('both'); ?>
  8. 8. <?php  echo  esc_url(  qtrans_convertURL(home_url('/'),  qtrans_getLanguage())  );  ?> qtrans_getLanguage()  →  ‘ja’か  ‘en’を返します。 qtrans_convertURL(  $url,  $lang  )  →  $lang用のURLを生成します。 例: qtrans_convertURL(  ‘http://example.com’,  ‘ja’  )  →  ‘http://example.com’を返す qtrans_convertURL(  ‘http://example.com’,  ‘en’  )  →  ‘http://example.com/en’を返す URLは言語によって変わります。例えばHOMEのURLはこうなります。 ・日本語のサイト(デフォルト)  http://example.com/ ・英語のサイト(第2外国語)  http://example.com/en/ 現在、日本語モードで表示しているか、英語モードで表示しているかでHOMEへのリンク 先URLを変えなければいけません。 そのための関数があります。 多言語対応にした場合、URLはどうなる?
  9. 9. ロゴ画像の切替の例 <?php  if(  qtrans_getLanguage()  ==  'ja'  ){  ?>        <img  src="/logo.png"/> <?php  }  else  {  ?>        <img  src="/logo_en.png"  /> <?php  }  ?> 日本語ページの場合は、logo.pngを使い、 英語ページの場合はlogo_en.pngを使うコードです。
  10. 10. qTranslateの関数一覧はこちらにあります。 http://www.qianqin.de/qtranslate/forum/viewtopic.php?f=3&t=9
  11. 11. 管理画面→外観→メニューで設定します。 ナビゲーションラベル入力欄に、日本語のページの場合と、英語のページの場 合の文字列を併記します。 メニューの文字列 <!-­‐-­‐:ja-­‐-­‐>メニューアイテム<!-­‐-­‐:-­‐-­‐><!-­‐-­‐:en-­‐-­‐>Menu  Item<!-­‐-­‐:-­‐-­‐>
  12. 12. トラブったところ1 カスタムメニューでの不具合 カスタムメニューとの相性が良くない感じでした。 (qTranslate Ver.2.5.34) HOME MENU1 MENU1-­‐1 MENU2 MENU3 MENU3-­‐1 MENU4 英語ページ表示のとき、メニューの各itemはすべて英語のページに リンクして欲しいのだが、HOME、MENU3、MENU3-1は日本語の ページにリンクされてしまう問題が起きた。 MENU1、MENU2、MENU4は固定ページ MENU3、MENU3-1はカスタム投稿タイプ。 → どうやらTOPページへのリンクと、カスタム投稿タイプへのリン クで不具合が起こるらしい。
  13. 13. 調べてみると、リンク先URLに en が入ってませんでした。 HOME MENU1 MENU1-­‐1 MENU2 MENU3 MENU3-­‐1 MENU4 HOMEへのリンク: http://example.com/ MENU1へのリンク: http://example.com/en/menu1 MENU3-1へのリンク: http://example.com/menu3-1 ←NG en が抜けている ←OK en がちゃんと入ってる ←NG en が抜けている トラブったところ1 カスタムメニューでの不具合
  14. 14. 1. カスタムメニュー処理に割り込みして、独自処理を入れたいため、カスタ ムメニューのフックを探しました。 <参考> カスタムメニューの「カスタムリンク」に target 属性を追記 ¦ 鉄王 http://www.tecking.org/archives/2651 2. functions.phpにフィルターフック処理を書きました。 TOPページへのリンクURLと、カスタム投稿タイプへのURLに   en を入れる処理 トラブったところ1 カスタムメニューでの不具合
  15. 15. 追加したフィルターフックの処理 add_filter('walker_nav_menu_start_el',  'qtrans_in_nav_el',  10,  4); function  qtrans_in_nav_el($item_output,  $item,  $depth,  $args){        if(  $item-­‐>menu_order  ==  1  ){    //  top  contents  のとき              if  (function_exists('qtrans_getLanguage'))  {                      if(  qtrans_getLanguage()  ==  'en'  ){                              $item_output          =  preg_replace(  "/(href=".+?)"/",  "$1en/"",  $item_output  );                      }              }        }  else  if(  $item-­‐>object  ==  'custom1'  ){  //  post_type:  custom1のとき              if  (function_exists('qtrans_getLanguage'))  {                      if(  qtrans_getLanguage()  ==  'en'  ){                              $item_output              =  str_replace(    '/cunstom1/',  '/en/custom1/',  $item_output  );                      }              }        }        return  $item_output; }
  16. 16. トラブったところ2 他プラグインとの相性 パンくずプラグイン Prime Strategy Bread Crumb を導入していましたが、 qTranslateとの組み合わせでうまく動かないところがありました。 英語ページ表示のとき、HOMEへのリンクは英語のトップページに リンクして欲しいのだが、日本語のページにリンクされてしまって いる。 HOME  >  REPORT
  17. 17. トラブったところ2 他プラグインとの相性 Prime Strategy Bread Crumbプラグインに bread_crumb_after というフック があったので、これを使って追加処理をfunctions.phpに入れました。 add_filter('bread_crumb_after',  'primestrategy_bread_crumb_after',  10,  2); function  primestrategy_bread_crumb_after($output,  $args){      if  (function_exists('qtrans_getLanguage'))  {              if(  qtrans_getLanguage()  ==  "en"  ){                      $homeurlstr  =  'href="'  .  get_bloginfo(  'url'  )  .  '/"';                      $replacestr  =  'href="'  .  get_bloginfo(  'url'  )  .  '/en/"';                      $output  =  str_replace(  $homeurlstr,  $replacestr,  $output  );              }      }        return  $output; }
  18. 18. まとめ ・無料で使える多言語化プラグインとしては良くできているので  使う価値は十分にある。 ・qTranslateの関数が用意されているので、細かい表示制御にも対応できる。 ・規模の大きいサイトだとパフォーマンスが心配? ・同時に導入しているプラグインとか、カスタム投稿タイプなどで  相性問題が発生する可能性がある。ちょっとテクニカルなことを  しようと思うと問題が起こる可能性が高い。
  19. 19. ありがとうございました。 @uemera uemura

×