WordPressを多言語化ではなく言語によって切り替える方法
Blog 11月 14th, 2009Zen-Cartは標準で多言語対応になっていますが、WordPressは標準では多言語に対応してません。
WP_Multilingualというモジュールで多言語化はできるようです。私は多言語化ではなく、英語用、日本語用と二つのWordPressをインストールし、Zen-Cartの言語($_SESSION[‘language’])にあわせて、WordPress On ZenCartでそれぞれのWordPressを読み込まれるようにしています。(以前に翻訳プラグインも検討しました)
二つWordPressをたてることによって、英語圏の方だけに伝わればいい記事は英語版だけに投稿すればいいので、多言語化するより重宝かなと思ってます。カテゴリやタグづけも自由ですし。ここでは、その方法を紹介したいと思います。
図式化すると以下のようなイメージです。
Zen-Cart
↓
WordPress On ZenCart($_SESSION[‘language’]で判別)
↓
‘ja’だったらWordPress日本語
‘en’だったらWordPress英語
具体的な方法は以下のとおりです。
includes/auto_loaders/config.woz.phpを以下の内容で追加
[code]
‘init_script’,
‘loadFile’=>’init_woz.php’);
?>
[/code]
includes/extra_configures/wordpress-config.phpを
includes/init_includes/init_woz.phpへ移動
includes/init_includes/init_woz.phpの
[code]define(‘ABSPATH’,’***’);[/code]
を
[code]
if(($_SESSION[‘language’] == ‘english’)|| ($_GET[‘language’] == ‘en’)){
define(‘ABSPATH’,’***’); //英語用のWordPressの絶対パス
}else{
define(‘ABSPATH’,’***’); //日本語用のWordPressの絶対パス
}
[/code]
に変更します。
最後に
includes/auto_loaders/config.core.php
をダウンロードして
[code]
$autoLoadConfig[110][] = array(‘autoType’=>’init_script’,
‘loadFile’=> ‘init_templates.php’);
[/code]
の110を115などの値に変更して、
includes/auto_loaders/overrides/config.core.php
としてアップロードします。
これで
init_languages.php
init_woz.php
init_templates.php
と読み込まれるはずなので、$_SESSION[‘language’]でWordPressの言語を切り替えることができるようになります。
ちなみにincludes/application_top.phpでDEBUG_AUTOLOADをtrueにすると、どの順に読み込まれたか確認することができます。
実は、この機能も先日リリースしたWOZ v1.4に組み込む予定でしたが、config.core.phpのオーバーライドが必要になってしまったので断念しました。