Joom!Fishのはじめて訪れるユーザのデフォルト言語を設定する
公開日| 2009年04月06日 | コメントはまだありません。
カテゴリー:エクステンション |
管理しているサイトへ、Joom!Fishを導入にあたり、初めて訪れるユーザに見せる言語は、何にすべきか考えてみました。 通常、管理しているサイトの母国語で良いと思いますが、管理しているサイトによっては、各ユーザのウェブブラウザの言語指定で自動的に切り替えたいという要望もあります。 そうしたとき、Joom!Fishでは、どのように設定すべきでしょうか。
もっと、Joomla!やPHP、Apacheについて詳しく知りたい方は、以下の本なども良いと思います。本から学ぶことは多いと思います。ネットだけでは判らない様々な事に気づかされます。
Joomla!Pro Book オープンソースCMS導入&カスタマイズガイド |
初めてのPHP & MySQL 第2版 |
Apacheハンドブック |
Joom!Fishでの設定
下記のプラグイン設定画面(エクステンション - プラグイン)には、各ユーザのウェブブラウザの言語指定で自動的に切り替えるためのパラメータが既にあります。では、設定してみましょう。
System - jfrouter を選択する。

パラメータ設定画面(右)で"Language selection for new visitors?" を"Browser settings"に設定する。

ここでの指定は、以下のように意味です。
| Ordering of languages in Joom!Fish component | Joom!Fishでの言語順に従う |
| Browser settings | ユーザのブラウザの言語設定に従う |
| Site default language | Joomla!で指定しているサイトデフォルト言語を指定する |
ユーザが1つの言語を指定している場合、上記でうまく動作すると思います。
ただ、ユーザによっては、優先順位を決めて、複数の言語を指定していることがあります。 (多くの日本人は、1番目に日本語が、2番目に英語をブラウザの言語に設定していると思います。)
このとき、優先順位に従って、正しく選択できないことがあります。
これに対応するためには、以下のように、一部のソースコードを変更してあげると良いです。
/plugin/system/jfrouter.php Line 186 あたりを、以下のように変更すると、正しく選択できるようになります。
変更前)
変更後)
ただ、ユーザによっては、優先順位を決めて、複数の言語を指定していることがあります。 (多くの日本人は、1番目に日本語が、2番目に英語をブラウザの言語に設定していると思います。)
このとき、優先順位に従って、正しく選択できないことがあります。
これに対応するためには、以下のように、一部のソースコードを変更してあげると良いです。
/plugin/system/jfrouter.php Line 186 あたりを、以下のように変更すると、正しく選択できるようになります。
変更前)
1 2 3 4 5 6 7 8 | foreach ($activeLanguages as $alang) { $active_iso[] = $alang->iso; if( eregi('[_-]', $alang->iso) ) { $isocountry = split('[_-]',$alang->iso); $active_isocountry[] = $isocountry[0]; } $active_code[] = $alang->shortcode; } |
変更後)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | foreach ($activeLanguages as $alang) { // --start-- add languae priority $iso_array = split(',',$alang->iso); if(isset($iso_array) && count($iso_array)>0){ foreach ($iso_array as $alang2_iso) { $alang2_iso=trim($alang2_iso); $active_iso[] = $alang2_iso; $isocountry = split('[_-]',$alang2_iso); if(isset($isocountry) && count($isocountry)>0){ $active_isocountry[] = $isocountry[0]; } $active_code[] = $alang->shortcode; } } else { // --end-- add languae priority $active_iso[] = $alang->iso; if( eregi('[_-]', $alang->iso) ) { $isocountry = split('[_-]',$alang->iso); $active_isocountry[] = $isocountry[0]; } $active_code[] = $alang->shortcode; // --start-- add languae priority } // --end-- add languae priority } |

