== お手軽多言語ハック ==
●特長
気軽に利用できる多言語ハックです。
ファイル1つをコピーして、mainfile.php に1行追加。たったそれだけで、動作します。
obフィルターを利用して最終出力時にいくつかの変換処理を行うだけなので、XOOPSのブロックキャッシュやモジュールキャッシュも有効に効きます。
また、mainfile.phpへのパッチなので、XOOPSコアのバージョンアップで心配する必要もありません。他のHackとの競合もないはずです。(同じobフィルターを利用するSimplified URLsでさえも、mainfile.phpに記述する順番だけの問題のはずです。)
●使い方
このアーカイブに含まれる easiestml.php をXOOPSインストールディレクトリのinclude/ディレクトリにコピーして下さい。
mainfile.phpを開いて、XOOPS_URL定義行の直後に、
require XOOPS_ROOT_PATH.'/include/easiestml.php' ;
と一行追加して下さい。
たったこれだけで、
[ja]日本語部分[/ja]
[en]英語部分[/en]
共通部分
という記述が可能になります。
このタグを変更したい時は、easiestml.php をエディタで開いて、最初の数行をお好きなように編集してください。
初期設定では、以下の様になっています。利用する言語タグをカンマで区切ることに注意してください。([]は不要です)
define('EASIESTML_LANGS','en,ja');
誤認識が怖いようでしたら、以下の設定をお勧めします。
define('EASIESTML_LANGS','xlang:en,xlang:ja');
この場合、以下のような記述となります。
[xlang:ja]日本語部分[/xlang:ja]
[xlang:en]英語部分[/xlang:en]
利用者が言語を選択して、それをクッキー保存するようにしています。そのため、テーマ内などに、各言語を選択するためのリンクを用意してあげる必要があります。手動で作成しても良いのですが、
というタグを入れるだけで、自動的に言語選択リンクとなりますので、こちらのご利用をお勧めします。
1.22から、クッキーがない場合の利用言語は、ブラウザが送ってきたHTTPリクエスト(Accept_LanguageまたはAccept_Charset)から判断するようにしました。これらのパターンをいじりたい場合は、EASIESTML_ACCEPT_LANGUAGE_REGEXES または EASIESTML_ACCEPT_CHARSET_REGEXES を書き換えてください。perlの正規表現であること、その正規表現を,(カンマ)で区切っていること(つまり正規表現内では,は利用不可能)に注意が必要です。
1.23では、EASIESTML_CHARSETS という定数が増えました。この定数についても、利用言語ごとに編集する必要があります。
※ 利用可能言語を増やせば増やした分だけ、出力時の処理負荷が大きくなります。利用しない言語タグは定義しないで下さい。
コンピュータ入力に慣れていない人のために、入力フォームを分けたい場合、POSTマージ機能を使うのが良いでしょう。
まず、CONFIGURATIONエリアをこう修正して、
define('EASIESTML_USEPOSTMERGER',0 1);
それから、入力フォームのテンプレートをこんな感じにいじります。
<input type="text" name="subject" value="<{$value}>" />
English: <input type="text" name="subject[en]" value="<{$value|easiestml:"en"}>" />
日本語: <input type="text" name="subject[ja]" value="<{$value|easiestml:"ja"}>" />
これによって、それぞれのフォームに書かれたテキストが言語タグでマージされます。
●変更履歴
2008-10-01 1.31
- ACCEPT_LANGUAGEがあればACCEPT_CHARSETに優先するように修正した (thx nobu)
2008-06-20 1.30
- POSTマージ機能の実装
- グローバル関数 easiestml() に2番目の引数を追加して、テンプレートからマニュアルで言語分割ができるようにした
- [mlimg ] の出力にスペースが含まれるようにしてみた (thx jagi) 1.30a
2007-04-02 1.26
- デフォルト言語の定義を追加した
- mlimg tag を HTML-lint で叱られないようにしてみた
2006-09-07 1.25
- 初期判定のロジックで抜けがあったのを修正した
2006-01-29 1.24
- テキストボックス用のエスケープ判定正規表現をよりシンプルに改善した
2005-12-29 1.23
- FastestCache への対応コード追加 (各言語ごとのContent-Typeにおけるcharset追加)
2005-12-24 1.22
- HTTP_ACCEPT_CHARSET, HTTP_ACCEPT_LANGUAGE のパターンから、デフォルトの言語選択を行うロジックを今さらながら追加
2005-04-11 1.21
- 排除ディレクトリ指定の部分にあったtypoを修正 (thx domifara)
2005-03-18 1.20
- 否定先読みのバッファあふれと思われる現象に対応 (ロジックを大幅修正)
2005-03-18 1.11
- 言語タグ直後の<br />を消すロジックを改善 (開始タグ後も消すようにした)
2005-03-03 1.10
- デバッグ用allモード実装 (管理者のみ)
- 言語タグ直後の<br />も一緒に消すようにした
- イメージタグの新設 [ mlimg]
2005-03-02 1.00
- 最初の公開
by GIJOE
http://www.peak.ne.jp/xoops/