PAGE TOP


WordPress + BuddyPress 多言語化

2016年12月6日Wordpress

WordPress + BuddyPressの多言語化の為のメモとなります。これらは、すこしはまった点もあるのでメモしておきます。

まずは、言語が切り替わる設定が必要です。ブラウザで設定された言語を読み取り、配列化し、配列に入れた一番初めにくるものを判定して値を返す関数を作ります。そして、その関数をlocaleフィルターフックに引っ掛けます。これでブラウザの言語によって振り分けることが可能となります。

//functions.php
function locale_id( $id) {
$lang = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang = current($lang);
$id = '';
  if (preg_match('/^en/i', $lang)) {
    $id = 'en';
  } elseif (preg_match('/^ja/i', $lang)) {
    $id = 'ja';
  }
    return $id;
}
add_filter( 'locale', 'locale_id' );

WordPressでの表示言語は、日本語版をインストールした場合は、wp-content/languages/ja.mo ファイルを読み取り、英語を日本語に翻訳するという形で、言語が表示されています。日本語版の標準(v4.6.1)では、言語が日本語と英語しか入っていません。そこで、このディレクトリ階層に、他の言語ファイルを配置する必要があります。

例えば、中国語(簡体字・繁体字)の場合は、各国のWordpressをダウンロードして、wp-content/languages/の中から、言語ファイルだけを取り出して、それを配置する。この場合は、zh_CN.po zh_CN.mo zh_TW.p zh_TW.mo を配置する。

これを配置するだけで、管理画面の設定の一般より言語のドロップダウンを確認すると、選択できる言語が増えているのがわかる。

また、同様にプラグインのほうでも同じような作業を行こないます。プラグインの場合は、wp-content/languages/plugins の中に配置します。日本語版の標準では、日本語への翻訳のbuddypress-ja.po buddypress-ja.mo が入っています。また、追加したい言語は、公式サイト(https://translate.wordpress.org/projects/wp-plugins/buddypress)より、poファイル、moファイルをダウンロードすることができます。このとき注意したいのが、ダウンロード時の名前は、プラグインの言語設定の命名規約とは異なるということです。従って、そのままの名前で配置しても、読み込まれません。命名規約では、(プラグ名)-(ロケールID).mo となります。またロケールIDは、大文字と小文字の区別もあるようで、例えば、台湾の繁体字の場合は、buddypress-zh_TW.mo のようにしなければ読み込まれません。間違えてbuddypress-zh_tw.mo のようにロケールIDの部分の派生箇所を小文字にしただけでも読み込まれません。