携帯向けのホームページを作りたいと思っているのですが、
サーバー側で自動的に多言語に振り分ける方法が、
どうにも調べても分からなくなったので教えてください。
できれば、コード付きで教えて戴けると幸いです。
具体的には日本語、英語、中国語、韓国語、スペイン語などです。
確か、携帯だとjavascriptが動作しなかったと思い、
cgiや.htaccessなどで自動的に
jp/index.html
en/index.html
ch/index.html
ko/index.html
sp/index.html
といったページを振り分けたいのですが、
プログラムについて殆ど素人なので分かりません。
よい方法があれば教えて下さい。
お使いのサーバが許しているかは不明ですが、
(更に携帯がチャンと http://www.futomi.com/lecture/env_var/http_accept_language.html:... をリクエストとして送っていないとダメなんですけど)
サーバ側の設定で案外簡単に実現できます。
利用するのはサーバ(Apache)のこんな機能です。
http://httpd.apache.org/docs/2.2/ja/content-negotiation.html
こちらの方が分りやすいかも知れません。
http://www.kanzaki.com/docs/sw/http-header.html#con-neg
目的のディレクトリに MultiViews の許可を与え
.htaccess が使えるならそこに
Options +MultiViews を追加しておく
それぞれの言語向けのファイルに、ファイル名に言語名をつけて形にしておく
index.html.ja
index.html.en
index.html.ko
index.html.es
index.html.zh
これだけでOKです。
これらのページからのリンク先を言語別のディレクトリにしてもいいし、全部をこのような形式にしてもいいです。(全部を同じディレクトリに置いておくと、ズラズラっと並んで鬱陶しいかも)
サーバが許していなければ、Perl, PHP などを使って、振り分ける事は可能です。
携帯 振り分け CGI などのキーワードで検索するとたくさん見つかると思います。
例えば、http://japan.internet.com/webtech/20040929/8.html
これらは携帯のキャリアによる振り分けが殆どで、その為
HTTP_USER_AGENT の値を使って振り分けを行っています。
今回の場合は、HTTP_ACCEPT_LANGUAGE を使う訳なので、そこを置換えながら読んでみて下さい。
以下の物がよさそうですが、導入してみたら、どうですかね?
http://guideurl.net/GuideURL.html
後、以下の掲示板は、言語自動認識について、いろいろ書いています。
CGIなりJSなりで、プログラム上でも実現可能です。
合わせてご参考まで
色々と紹介して頂きありがとうございます。
もう少し調べてみたいと思います。
使用言語は Accept-Language ヘッダで知ることができます。
CGIの場合は環境変数 HTTP_ACCEPT_LANGUAGE にクライアントが望む言語が優先に順に ja-JP,ja,defaultQLS;q=0.9,en-US という形で入っているのでこれを見て出力するページを切り替えるようにすればよいです。
.htaccessで解決する場合はまず以下を設定します。
Options +MultiViews
そして、ファイル名を index.html.ja、index.html.en、index.html.ch という名前で作成しておきます。
このようなファイル名にしておくと、index.html でアクセスした際に Apache が Accept-Languageを見て自動的にその言語にあったファイルを返してくれます。
http://httpd.apache.org/docs/2.2/ja/content-negotiation.html#nam...
なるほど、下記のように.htaccessに登録すればできそうですね。
拓けてきた気がします。試してみます。
AddLanguage jp .jp
AddLanguage en .en
AddLanguage ko .ko
AddLanguage ch .ch
AddLanguage sp .sp
LanguagePriority jp en ko ch sp
Options +MultiViews
お使いのサーバが許しているかは不明ですが、
(更に携帯がチャンと http://www.futomi.com/lecture/env_var/http_accept_language.html:... をリクエストとして送っていないとダメなんですけど)
サーバ側の設定で案外簡単に実現できます。
利用するのはサーバ(Apache)のこんな機能です。
http://httpd.apache.org/docs/2.2/ja/content-negotiation.html
こちらの方が分りやすいかも知れません。
http://www.kanzaki.com/docs/sw/http-header.html#con-neg
目的のディレクトリに MultiViews の許可を与え
.htaccess が使えるならそこに
Options +MultiViews を追加しておく
それぞれの言語向けのファイルに、ファイル名に言語名をつけて形にしておく
index.html.ja
index.html.en
index.html.ko
index.html.es
index.html.zh
これだけでOKです。
これらのページからのリンク先を言語別のディレクトリにしてもいいし、全部をこのような形式にしてもいいです。(全部を同じディレクトリに置いておくと、ズラズラっと並んで鬱陶しいかも)
サーバが許していなければ、Perl, PHP などを使って、振り分ける事は可能です。
携帯 振り分け CGI などのキーワードで検索するとたくさん見つかると思います。
例えば、http://japan.internet.com/webtech/20040929/8.html
これらは携帯のキャリアによる振り分けが殆どで、その為
HTTP_USER_AGENT の値を使って振り分けを行っています。
今回の場合は、HTTP_ACCEPT_LANGUAGE を使う訳なので、そこを置換えながら読んでみて下さい。
とても説明が丁寧で分かりやすいです。
使用サーバはロリポップなのでapacheは動作しています。
.htaccessも今まで使ったことがあるので大丈夫です。
中国語→zh、スペイン語→esということが、ご紹介のリンクで分かりました。
PerlとPHPの振り分け説明について紹介は凄いです。
自分で携帯の機種別による振り分けをやっておりながら、
全く活かされておりませんでした。
なぜ直に思いつかなかったのか、というより随分悩んでしまっていたのか、
きっと上辺ばかりを勉強してきたせいなのでしょう。。
ただ今読んでハッキリ光明を感じることができました。
(教えて戴いてはじめてハッとするなど真に恥ずかしい限りで恐縮です。。)
この度は大変感謝しております。ありがとうございました。
とても説明が丁寧で分かりやすいです。
使用サーバはロリポップなのでapacheは動作しています。
.htaccessも今まで使ったことがあるので大丈夫です。
中国語→zh、スペイン語→esということが、ご紹介のリンクで分かりました。
PerlとPHPの振り分け説明について紹介は凄いです。
自分で携帯の機種別による振り分けをやっておりながら、
全く活かされておりませんでした。
なぜ直に思いつかなかったのか、というより随分悩んでしまっていたのか、
きっと上辺ばかりを勉強してきたせいなのでしょう。。
ただ今読んでハッキリ光明を感じることができました。
(教えて戴いてはじめてハッとするなど真に恥ずかしい限りで恐縮です。。)
この度は大変感謝しております。ありがとうございました。