Information


Geeklog1.7.1で多言語対応サイトを構築するテクニックまとめ

  •    2011年2月28日(月) 16:48 JST 閲覧件数 771
多言語対応サイトは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