Bogoを利甚するずきの泚意点

2022-12-31T02:28:18.411Z

私は倚蚀語化プラグむンBogoでを利甚したWordPressサむト倚蚀語化の際の泚意点。

はじめに

WordPressの他蚀語化プラグむンずいえば WP ML か Bogo らしい。qTranslateは新しくqTranslate X ずしお䜜り盎されたらしいが、他のプラグむンず競合しやすい癖がただ抜けおなさそう。

Bogoは結構絶賛されおいたが、「One language per post」ず呌ばれる1ペヌゞ1蚀語の考え方なので、぀たりは珟行ペヌゞ数×蚀語数のペヌゞを生成せねばならない。

元々は「poファむルみたいな翻蚳ファむルを䜜っおlanguageフォルダに蚭眮すればOKだろう」くらいで考えおいたこれもpoファむルの元ずなるpotファむルにない単語は翻蚳䞍可ので、䞊蚘の構成で思った以䞊に工数がかかった。

しかし逆に「one website per language」のマルチサむト型にするよりは楜なようなので、今埌もBogoにお䞖話になろうず思う。

ペヌゞタむトルに蚀語名を付䞎すべし

WordPressのメニュヌにおいお、Bogoではメニュヌ項目ごずに「どの蚀語で衚瀺させるか」を遞択するこずができる。ただ基本的には1項目1蚀語でしか衚瀺しないだろう。぀たり「日本語のメニュヌ項目数×蚀語数」の項目が、倖芳メニュヌのペヌゞにズラヌッず瞊䞊びするこずになる。

さらにBogoでは蚀語ごずにペヌゞを生成するため、メニュヌに远加したい各ペヌゞのタむトルはその蚀語に翻蚳されたタむトルになっおいる。

䟋えば䞭囜語では䞭囜・銙枯・台湟ず3皮類の違いがあるが、これらの蚀語は共通しおいる郚分も倚い。日本語で「予玄」ずいうペヌゞがある堎合、これらの䞭囜語3皮の翻蚳語のタむトルは「预订 」「預蚂 」「 預蚂」ずなる。

これをメニュヌに远加しようず思った時に、どれがどの蚀語のペヌゞなのかわからなくなる。

そのため、タむトルはブラりザのタブに衚瀺されるし、SEO的な圱響も倚少䞍安だが「预订(䞭囜) 」「預蚂(銙枯) 」「 預蚂(台湟)」のように、タむトルにはどの囜のペヌゞなのかを括匧曞きで蚘茉するこずをおすすめする。

ペヌゞビルダヌプラグむンは WPBakery Page Builder がおすすめ

テヌマ付属だったり、SiteOrigin Page Builder プラグむンで制䜜したコンテンツは、Bogoの翻蚳を远加によるペヌゞ耇補機胜ではコピヌされない。しかし WPBakery Page Builder プラグむンなら耇補機胜でコピヌしおくれる。

たた最悪できなかったずしおもテンプレヌト登録読み蟌み機胜があるので日本語ペヌゞを簡単にコピヌできおおすすめである。

埓っおペヌゞ数×蚀語数だけ手動でペヌゞビルダヌでコンテンツを生成せねばならず骚が折れるので泚意。

パヌマリンクの曎新を忘れずに

カスタム投皿タむプのアヌカむブペヌゞが404になった。この蚘事をみお「もしや」ず思いパヌマリンク蚭定を曎新したら治りたしたURLやスラッグ系ではあるあるですので、もしかするずこちらのケヌスも治るかもです

パヌマリンクに䞍具合があるずカスタム投皿タむプの投皿をBogoで生成しおも、そのパヌマリンクは日本語ペヌゞのそれにリダむレクトされおしたいたすので泚意が必芁です。

䜿甚したカスタマむズコヌド

// Bogo 蚀語スむッチのEnglishの(United States)を削陀
function replace_bogo_text($output){
 return str_replace(' (United States)','',$output);
}
add_filter( 'bogo_language_switcher','replace_bogo_text');

// Bogo 囜旗アむコンを削陀
function bogo_use_flags_false(){
 return false;
}
add_filter( 'bogo_use_flags','bogo_use_flags_false');

// Support custom post type with bogo.
function my_localizable_post_types( $localizable ) {
    $localizable[] = 'your_post_type_name';
    return $localizable;
}
add_filter( 'bogo_localizable_post_types', 'my_localizable_post_types', 10, 1 );

// Bogoのテンプレヌト出し分け
function select_locale_template($template){
  $locale = get_locale();
  if($locale == 'en_US'){
    $locale_template = dirname( __FILE__ ) . '/' . basename($template, '.php') . '_en.php';
    if(file_exists($locale_template)){
      $template = $locale_template;
    }
  }
  return $template;
}
add_filter('index_template', 'select_locale_template');
add_filter('404_template', 'select_locale_template');
add_filter('archive_template', 'select_locale_template');
add_filter('author_template', 'select_locale_template');
add_filter('category_template', 'select_locale_template');
add_filter('tag_template', 'select_locale_template');
add_filter('taxonomy_template', 'select_locale_template');
add_filter('date_template', 'select_locale_template');
add_filter('home_template', 'select_locale_template');
add_filter('front_page_template', 'select_locale_template');
add_filter('page_template', 'select_locale_template');
add_filter('paged_template', 'select_locale_template');
add_filter('search_template', 'select_locale_template');
add_filter('single_template', 'select_locale_template');
add_filter('text_template', 'select_locale_template');
add_filter('plain_template', 'select_locale_template');
add_filter('text_plain_template', 'select_locale_template');
add_filter('attachment_template', 'select_locale_template');
add_filter('comments_popup', 'select_locale_template');
add_filter('home_template', 'select_locale_template');
// PHPファむルで蚀語ごずに衚瀺内容を switch
  <?php $locale = get_locale();
          switch ($locale) {
            case 'en_US':
            break;

            case 'zh_CN':
            break;

            case 'zh_TW':
            break;

            case 'zh_HK':
            break;

            default:
            break;
          } ?>

ナビメニュヌに蚀語スむッチを埋める

PC版は position: absolute で右䞊などに絶察配眮しおしたえばいいが、モバむル版はハンバヌガヌメニュヌの䞭に入れたい堎合がある。

今回はTCDテヌマ KADAN を利甚したサむトであったが、wp_nav_menu()の匕数に枡す $args の䞭にショヌトコヌドを入れ蟌むこずで綺麗に埋め蟌めた。

スラッグは英語でなければならない

投皿だけかもしれないが、スラッグURLに䜿われる䞀郚を日本語にしおおくず以䞋の譊告が出た。

Too few arguments in/home/example/example.com/public_html/wp-includes/nav-menu-template.phpon line261

これはナビメニュヌに䜿甚されるsprintf()関数の匕数が足りない時に吐かれる゚ラヌだが、今回は日本語スラッグの投皿だけで正確には日本語スラッグの投皿の倖囜語の投皿を生成し公開するず゚ラヌが出たので原因がスラッグず分かった。

パヌマリンクを基本に倉曎するのは芁泚意

タむトルをそのたたスラッグに䜿われおしたわないよう、パヌマリンクを基本の?p=123圢匏にしようず考えるかもしれない。しかしこれをしおしたうず固定ペヌゞのパヌマリンク圢匏も倉曎されおしたうため、各ペヌゞに蚭眮しおいるリンク先を倉曎しなければならなくなる。

URLがexample.com/?p=123&lang=enみたいな圢匏になっお矎しくもないので、スラッグを英語にする点だけ泚意しお䜿う方がいいかなず。

参考リンク

bogoで衚瀺䞭の蚀語ごずに別のテンプレヌトを䜿う

無料なのに最匷WordPressの倚蚀語化プラグむンBogoの䜿い方これ䟿利

ワヌドプレスサむトを倚蚀語化するプラグむン「Bogo」䜿い方たずめ

WordPressプラグむン『Bogo』の蚀語スむッチの芋た目をカスタムする | oku-log

Bogoを䜿っおWordpressを倚蚀語化 – 株匏䌚瀟クオックスQOX Inc.

WordPressプラグむン「Bogo」翻蚳ペヌゞが衚瀺されないずきの察凊 | 蚘事 | ShitTakaBull

Bogoプラグむン䜿甚時、get_postsで投皿を取埗するず党郚の蚀語が察象になる | WordPress.org

WordPress倚蚀語化プラグむン「bogo」のメモメモ - ゚フスタゞオのテクニカルメモ

WordPress サむトの倚蚀語化に もう迷わない そう、Bogo ならね | Design Hack and Slash