xoopsでの多言語表示
投稿者: serv | 投稿日時: 2007-9-16 0:41 | 閲覧: 4392回
初めまして。
多言語表示が可能なサイトを作ろうとしています。言語切り替えにはeasiestmlを利用しています。
多言語表示とは申しましても、1ページ内にいろいろな言語を同時に表示させる必要はなく、英語なら英語、日本語なら日本語、韓国語なら韓国語「だけ」でいいのです。
easiestml内は以下のような内容になっています。日本語、英語、韓国語切り替えを考えています。
define('EASIESTML_LANGS','en,ja,kr'); // [en]english[/en] [ja]japananese[/ja] common
// list the language images separated with comma
define('EASIESTML_LANGIMAGES','images/english.gif,images/japanese.gif');
// list the language names separated with comma (these will be alt of )
define('EASIESTML_LANGNAMES','in english,in japanese');
// list language - accept_chaset patterns (perl regex) separated with comma
define('EASIESTML_ACCEPT_CHARSET_REGEXES',',/shift_jis/i');
// list language - accept_language patterns (perl regex) separated with comma
define('EASIESTML_ACCEPT_LANGUAGE_REGEXES','/^en/,/^ja/,/^kr/');
// charset in Content-Type separated with comma (only for fastestcache)
define('EASIESTML_CHARSETS','ISO-8859-1,EUC-JP,EUC-KR');
// tag name for language image (default [mlimg]. don't include specialchars)
define('EASIESTML_IMAGETAG','mlimg');
// make regular expression which disallows language tags to cross it
define('EASIESTML_NEVERCROSSREGEX','');
この設定でも、firefoxでは[kr][/kr]で囲まれた部分はきちんと韓国語で表示されたのですが、IE6だと正常に表示されませんでした。
IEのエンコード設定を「韓国語」にすると当たり前でしょうけれど、[kr][/kr]にて囲まれた部分は正常になりました。
文字コードの問題なのは間違いないのでしょうけれど、やはりマルチバイトな言語が2つ以上含まれるサイトをつくろうと思うと、サイト全体をutf8にするしか方法が無いのでしょうか?
冒頭にて述べました通り、コンテンツ内に複数言語が混在する必要はなく、同時に使用される言語は1つだけでいいので、easiestmlにて言語切り替えを行った際、xoops自体が出力する文字コードをeuc-jpから目的の文字コード(この場合はeuc-krでしょうか)に切り替える事ができれば目的は達成されると思うのですが、素人の浅知恵でしょうか?
何らかの解決策か、解決に繋がりそうなお知恵をお持ちの方、いらっしゃいましたらお力を貸していただけないでしょうか?
多言語表示が可能なサイトを作ろうとしています。言語切り替えにはeasiestmlを利用しています。
多言語表示とは申しましても、1ページ内にいろいろな言語を同時に表示させる必要はなく、英語なら英語、日本語なら日本語、韓国語なら韓国語「だけ」でいいのです。
easiestml内は以下のような内容になっています。日本語、英語、韓国語切り替えを考えています。
define('EASIESTML_LANGS','en,ja,kr'); // [en]english[/en] [ja]japananese[/ja] common
// list the language images separated with comma
define('EASIESTML_LANGIMAGES','images/english.gif,images/japanese.gif');
// list the language names separated with comma (these will be alt of )
define('EASIESTML_LANGNAMES','in english,in japanese');
// list language - accept_chaset patterns (perl regex) separated with comma
define('EASIESTML_ACCEPT_CHARSET_REGEXES',',/shift_jis/i');
// list language - accept_language patterns (perl regex) separated with comma
define('EASIESTML_ACCEPT_LANGUAGE_REGEXES','/^en/,/^ja/,/^kr/');
// charset in Content-Type separated with comma (only for fastestcache)
define('EASIESTML_CHARSETS','ISO-8859-1,EUC-JP,EUC-KR');
// tag name for language image (default [mlimg]. don't include specialchars)
define('EASIESTML_IMAGETAG','mlimg');
// make regular expression which disallows language tags to cross it
define('EASIESTML_NEVERCROSSREGEX','');
この設定でも、firefoxでは[kr][/kr]で囲まれた部分はきちんと韓国語で表示されたのですが、IE6だと正常に表示されませんでした。
IEのエンコード設定を「韓国語」にすると当たり前でしょうけれど、[kr][/kr]にて囲まれた部分は正常になりました。
文字コードの問題なのは間違いないのでしょうけれど、やはりマルチバイトな言語が2つ以上含まれるサイトをつくろうと思うと、サイト全体をutf8にするしか方法が無いのでしょうか?
冒頭にて述べました通り、コンテンツ内に複数言語が混在する必要はなく、同時に使用される言語は1つだけでいいので、easiestmlにて言語切り替えを行った際、xoops自体が出力する文字コードをeuc-jpから目的の文字コード(この場合はeuc-krでしょうか)に切り替える事ができれば目的は達成されると思うのですが、素人の浅知恵でしょうか?
何らかの解決策か、解決に繋がりそうなお知恵をお持ちの方、いらっしゃいましたらお力を貸していただけないでしょうか?
コメント(4)
新しいものから |
古いものから |
ネスト表示 |
Re: xoopsでの多言語表示
Re: xoopsでの多言語表示
投稿者: Ujiki | 投稿日時: 2007-9-17 8:28
はじめまして、こんにちは。
是非、韓国語用のUTF-8言語ファイルが完成しましたあかつきには、是非、ご提供願いたいものです。
Cubuへの対応は、こちらの実力が伴わないという意味において、未着手です。
早急にCubeへ差し替える計画がないのなら、前安定化最終バージョンをハックした、フルファイルセットなXOOPS2インストーラーを自分用ではありますが、作成し、配布しております。
■ Cubeへの移植を目指すにも、文字化けの無いDBは必須でしょう。
phpMyAdminでの文字化けなし。これは日本語だけと言う意味ではありません。多言語をサポートしたphpMyAdminが必須です。つまりUTF-8をサポートしたphpMyAdminで、英語圏を含めて、各国語UTF-8で、多言語で表示なり、書き込める必要があります。
サーバーの移転、Cubuへの移植を考えた時に、phpMyAdminを利用したエクスポートで、多言語データーが文字化けしないことが求められます。つまり、mySQLはUTF-8を正式にサポートしている必要があります。つまり、mySQL4.1以降か、MySQL5と言うことになります。選択肢の判断を求められたら、迷わず「MySQL5」を推奨します。
■ 大規模DBに発展したら、mysqldumpでも多言語文字化けがあってはダメです。
つまり、MySQL4のEUC-JPでは、必ず文字化けするということです。迷わず、MySQL5なUTF-8なMySQLをサポートしているサーバーを探しましょう。
■ 次に、PHPですが、選択肢を求められたら迷わずPHP5を推奨します。
さて、多言語を文字化けなく、DBに保存するには、DBとアクセスするclassで保証するべきだと存じます。くどいようですが、phpMyAdminなり、mysqldumpで全く文字化けが無いことが、多言語XOOPSをスタートする最低限の条件です。
MySQLからのエキスポートで多言語データーが文字化けするようなら、Cubuへの移転も困難でしょう。
-----
※ 以上のハードルを何ら問題無く、XOOPSのインストールの直後から楽しめるようにと、フルファイルセットなXOOPS2インストーラーを作成しました。最初からUTF-8です。PHP5なり、MySQL5対応です。(インストーラー内で選択肢あり)
※ 詳しくは、配布中のXOOPS2インストーラーで稼動中の当方のXOOPS2の、ZenCartで無料配布しております。多言語PukiWiki(多言語RSS)でインストール手順を作成中です。
お役にたてれば、幸いです。
PS: 多言語切り替え判定に初期値ではなくて「 language 」に変更しています。理由は「 ZenCartと同じにしたかった」のと(超安易)、affiliate目的と誤認されたくなかったので。
是非、韓国語用のUTF-8言語ファイルが完成しましたあかつきには、是非、ご提供願いたいものです。
Cubuへの対応は、こちらの実力が伴わないという意味において、未着手です。
早急にCubeへ差し替える計画がないのなら、前安定化最終バージョンをハックした、フルファイルセットなXOOPS2インストーラーを自分用ではありますが、作成し、配布しております。
■ Cubeへの移植を目指すにも、文字化けの無いDBは必須でしょう。
phpMyAdminでの文字化けなし。これは日本語だけと言う意味ではありません。多言語をサポートしたphpMyAdminが必須です。つまりUTF-8をサポートしたphpMyAdminで、英語圏を含めて、各国語UTF-8で、多言語で表示なり、書き込める必要があります。
サーバーの移転、Cubuへの移植を考えた時に、phpMyAdminを利用したエクスポートで、多言語データーが文字化けしないことが求められます。つまり、mySQLはUTF-8を正式にサポートしている必要があります。つまり、mySQL4.1以降か、MySQL5と言うことになります。選択肢の判断を求められたら、迷わず「MySQL5」を推奨します。
■ 大規模DBに発展したら、mysqldumpでも多言語文字化けがあってはダメです。
つまり、MySQL4のEUC-JPでは、必ず文字化けするということです。迷わず、MySQL5なUTF-8なMySQLをサポートしているサーバーを探しましょう。
■ 次に、PHPですが、選択肢を求められたら迷わずPHP5を推奨します。
さて、多言語を文字化けなく、DBに保存するには、DBとアクセスするclassで保証するべきだと存じます。くどいようですが、phpMyAdminなり、mysqldumpで全く文字化けが無いことが、多言語XOOPSをスタートする最低限の条件です。
MySQLからのエキスポートで多言語データーが文字化けするようなら、Cubuへの移転も困難でしょう。
-----
※ 以上のハードルを何ら問題無く、XOOPSのインストールの直後から楽しめるようにと、フルファイルセットなXOOPS2インストーラーを作成しました。最初からUTF-8です。PHP5なり、MySQL5対応です。(インストーラー内で選択肢あり)
※ 詳しくは、配布中のXOOPS2インストーラーで稼動中の当方のXOOPS2の、ZenCartで無料配布しております。多言語PukiWiki(多言語RSS)でインストール手順を作成中です。
お役にたてれば、幸いです。
PS: 多言語切り替え判定に初期値ではなくて「 language 」に変更しています。理由は「 ZenCartと同じにしたかった」のと(超安易)、affiliate目的と誤認されたくなかったので。
Re: xoopsでの多言語表示
投稿者: serv | 投稿日時: 2007-9-19 16:03
返信くださった方々、ありがとうございます。
実は既にサイトが稼動状態でして、今更DBの文字コードを変えることも、サイト自体をutf8化する事もできず、はてどうしたものだろうと悩んでいたのです。
素人ながらにいろいろ悩んだ結果、当初の予定通りhtmlヘッダ内の以下の情報をeasiestml.phpにて切り替える事で対応しました。具体的には以下のようにtheme.htmlに記載しています。
当方のサイトでは日本語環境以外では掲示板も動かしませんし、ユーザー登録時もアルファベット以外は受け付けないようにしていますので、見た目上の問題はクリアできているように見受けられます。
唯一心配しているのがサイトで稼動中の販売用モジュールなのですが、こちらもプログラム側の対処でなんとかするつもりです。
ただ、xoops自体が出力するページ、たとえば「ログイン中です」などのページや、認証メールの内容等は当然この対処法では切り替えできませんので、そのあたりはこれから探っていかなければと思っております。最悪の場合は、日本語と英語を併記して逃げようかと思ってます…。
とりあえずieでも無事に(見た目だけでも)切り替えることが出来てホっとしています。問題は他国ユーザーの環境でも正常に閲覧できているかどうかを試す事ができていないというところですが…。
実は既にサイトが稼動状態でして、今更DBの文字コードを変えることも、サイト自体をutf8化する事もできず、はてどうしたものだろうと悩んでいたのです。
素人ながらにいろいろ悩んだ結果、当初の予定通りhtmlヘッダ内の以下の情報をeasiestml.phpにて切り替える事で対応しました。具体的には以下のようにtheme.htmlに記載しています。
当方のサイトでは日本語環境以外では掲示板も動かしませんし、ユーザー登録時もアルファベット以外は受け付けないようにしていますので、見た目上の問題はクリアできているように見受けられます。
唯一心配しているのがサイトで稼動中の販売用モジュールなのですが、こちらもプログラム側の対処でなんとかするつもりです。
ただ、xoops自体が出力するページ、たとえば「ログイン中です」などのページや、認証メールの内容等は当然この対処法では切り替えできませんので、そのあたりはこれから探っていかなければと思っております。最悪の場合は、日本語と英語を併記して逃げようかと思ってます…。
とりあえずieでも無事に(見た目だけでも)切り替えることが出来てホっとしています。問題は他国ユーザーの環境でも正常に閲覧できているかどうかを試す事ができていないというところですが…。
Re: xoopsでの多言語表示
投稿者: Ujiki | 投稿日時: 2007-9-21 0:32
引用:
何だか、狐につままれたような感覚を覚えました。画期的なことなのかな。
向学心からのお願いなのですが、サイトURLを教えていただけませんか? 公開するのが問題なら、プライベートメッセージででも教えていただけますか。PMなら、PMで返答します。
IEには無いんだろうか・・・FFなら、アドオンの「ロケール」切り替えボタンがありますね。
試すなら、ロケールを任意の外国語にセットしてから、ぶらうざーの履歴データーを削除して、海外のプロキシー経由で自分のサイトを閲覧してみれば、どうでしょうか。ダメですかね。。。
servさんは書きました:
とりあえずieでも無事に(見た目だけでも)切り替えることが出来てホっとしています。問題は他国ユーザーの環境でも正常に閲覧できているかどうかを試す事ができていないというところですが…。
何だか、狐につままれたような感覚を覚えました。画期的なことなのかな。

向学心からのお願いなのですが、サイトURLを教えていただけませんか? 公開するのが問題なら、プライベートメッセージででも教えていただけますか。PMなら、PMで返答します。

IEには無いんだろうか・・・FFなら、アドオンの「ロケール」切り替えボタンがありますね。
試すなら、ロケールを任意の外国語にセットしてから、ぶらうざーの履歴データーを削除して、海外のプロキシー経由で自分のサイトを閲覧してみれば、どうでしょうか。ダメですかね。。。


