多言語対応サイトはGeeklogを使うとかなり簡単に構築運用できます。
バージョンは geeklog-1.7.1sr1-jp-extended-1.0.tar.gz
公式サイトの
WIKIにも詳しく書いてあるけど、ひとめでわかるよう自分用にまとめた。
◆サイトを多言語化するための最初の設定
「コンフィギュレーション 」-「言語とロケール」で、
言語ファイル[多言語モード]と言語名[多言語モード]で対応したい全言語の設定を入れる。
◆記事の多言語化
まず「話題」の話題IDを言語ID付きにする。
例えば、story_ja、story_enなど。
記事を作成するときに、該当する言語の言語IDを持つ話題を選ぶ。
◆静的ページの多言語化
ページのIDの末尾に_ja、_enを追加する。
例えば、testpage_ja、testpage_en
このとき言語ID以外の部分は同一のものにしておく必要がある。
言語切替時に同一ID(言語ID部分以外)のページが切り替わる。
◆ブロックの多言語化
ブロック3つを下記のブロックIDで作成。例えばMenuという名のブロック。
menu ・・・有効にする。表示されないので内容は適当に何かいれておく。
menu_ja・・・無効にする。日本語モード時に内容が表示される。
menu_en・・・無効にする。英語モード時に内容が表示される。
◆COM_getLanguageId()
COM_getLanguageId()を使うと現在の言語モードja、enを取得できる。
これを使えばphpが使えるheader.thtmlで言語モードに応じた表示切り替えが可能。
◆switchlang.php
言語モードを切り替えるツール。
http://・・・/switchlang.php/ja
http:/・・・/switchlang.php/en
のように実行するだけ。国旗画像のリンク先に使うと良い。
◆検索ボックスの多言語化
多言語モードのとき、デフォルトでは記事が検索で出てこないので、下記の修正をする。(mystral-kkさんからの情報)
非公開領域/systems/classes/search.class.phpの337行目を
$sql .= COM_getPermSQL('AND') . COM_getTopicSQL('AND') . COM_getLangSQL('sid', 'AND') . ' ';
から
$sql .= COM_getPermSQL('AND') . COM_getTopicSQL('AND') . COM_getLangSQL('
tid', 'AND') . ' ';
に変えると検索できるようになる。
◆参考URL
http://wiki.geeklog.jp/index.php?title=%E5%A4%9A%E8%A8%80%E8%AA%9E%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88