はじめて質問させていただきます。

携帯向けのホームページを作りたいと思っているのですが、
サーバー側で自動的に多言語に振り分ける方法が、
どうにも調べても分からなくなったので教えてください。
できれば、コード付きで教えて戴けると幸いです。

具体的には日本語、英語、中国語、韓国語、スペイン語などです。
確か、携帯だとjavascriptが動作しなかったと思い、
cgiや.htaccessなどで自動的に
jp/index.html
en/index.html
ch/index.html
ko/index.html
sp/index.html
といったページを振り分けたいのですが、
プログラムについて殆ど素人なので分かりません。
よい方法があれば教えて下さい。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2008/03/08 22:22:26
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:tezcello No.3

回答回数460ベストアンサー獲得回数69

ポイント100pt

お使いのサーバが許しているかは不明ですが、

(更に携帯がチャンと 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 を使う訳なので、そこを置換えながら読んでみて下さい。

id:legoblock

とても説明が丁寧で分かりやすいです。

使用サーバはロリポップなのでapacheは動作しています。

.htaccessも今まで使ったことがあるので大丈夫です。

中国語→zh、スペイン語→esということが、ご紹介のリンクで分かりました。

PerlとPHPの振り分け説明について紹介は凄いです。

自分で携帯の機種別による振り分けをやっておりながら、

全く活かされておりませんでした。

なぜ直に思いつかなかったのか、というより随分悩んでしまっていたのか、

きっと上辺ばかりを勉強してきたせいなのでしょう。。

ただ今読んでハッキリ光明を感じることができました。

(教えて戴いてはじめてハッとするなど真に恥ずかしい限りで恐縮です。。)

この度は大変感謝しております。ありがとうございました。

2008/03/08 22:19:53

その他の回答2件)

id:ayuoffice No.1

回答回数46ベストアンサー獲得回数1

ポイント20pt

以下の物がよさそうですが、導入してみたら、どうですかね?

http://guideurl.net/GuideURL.html

後、以下の掲示板は、言語自動認識について、いろいろ書いています。

CGIなりJSなりで、プログラム上でも実現可能です。

合わせてご参考まで

http://chaichan.hp.infoseek.co.jp/qa2000/qa2033.htm

id:legoblock

色々と紹介して頂きありがとうございます。

もう少し調べてみたいと思います。

2008/03/08 21:49:10
id:y-kawaz No.2

回答回数1422ベストアンサー獲得回数226

ポイント50pt

使用言語は 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...

id:legoblock

なるほど、下記のように.htaccessに登録すればできそうですね。

拓けてきた気がします。試してみます。

AddLanguage jp .jp

AddLanguage en .en

AddLanguage ko .ko

AddLanguage ch .ch

AddLanguage sp .sp

LanguagePriority jp en ko ch sp

Options +MultiViews

2008/03/08 22:00:09
id:tezcello No.3

回答回数460ベストアンサー獲得回数69ここでベストアンサー

ポイント100pt

お使いのサーバが許しているかは不明ですが、

(更に携帯がチャンと 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 を使う訳なので、そこを置換えながら読んでみて下さい。

id:legoblock

とても説明が丁寧で分かりやすいです。

使用サーバはロリポップなのでapacheは動作しています。

.htaccessも今まで使ったことがあるので大丈夫です。

中国語→zh、スペイン語→esということが、ご紹介のリンクで分かりました。

PerlとPHPの振り分け説明について紹介は凄いです。

自分で携帯の機種別による振り分けをやっておりながら、

全く活かされておりませんでした。

なぜ直に思いつかなかったのか、というより随分悩んでしまっていたのか、

きっと上辺ばかりを勉強してきたせいなのでしょう。。

ただ今読んでハッキリ光明を感じることができました。

(教えて戴いてはじめてハッとするなど真に恥ずかしい限りで恐縮です。。)

この度は大変感謝しております。ありがとうございました。

2008/03/08 22:19:53

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません