- 締切済み
サイトで閲覧者の使用言語に合わせページを飛ばしたい
自分のウェブサイトで、閲覧者の使用言語に合わせて自動的にページが飛ぶようにしたい はじめまして。独学で個人のウェブサイトを作ってるのですが、どうしてもわからないことがあります。 ウェブサイトを多言語化したいのですが、その言語が使われてる国に合わせてサイトのコンテンツやウェブデザインを変えるので、 サーチエンジンなどとの兼ね合いで混乱を防ぐためにも、サブディレクトリで違うURLにして管理する事にしました。 (例:日本語ページはhttp://www.●●●.com/ja、英語ページはhttp://www.●●●.com/en、といった具合です) つまり、ひとつひとつ言語別にページをつくり、別々でひとつひとつアップロードしていく感じです。 ですが、名刺など人に教える時にはサブディレクトリを省いたhttp://www.●●●.comで教えたいので、そのアドレスにどちらの言語の人が来ても、閲覧者にとってクリックする手間が省けるよう、コンピューターで日本語をお使いの方にはjaページ、その他の言語の方にはenページが最初に表示されるようにしたいのです。 (そして、英語ページなどをわざわざ見たいと思っている日本語閲覧者には、enページへのリンクを貼り誘導するようにしたい) ★イメージとしては、このサイトと似た仕様にしたいと思ってます http://www.astro.com/ (星座占いのサイトで、右上の言語ボタンをクリックすることで言語を切り替えられるのですが、アクセスをどの国からしているかによって自動的にどれかのページに飛ぶようになっているようです) ※希望としては、「アクセスしてる国に合わせる」のではなく、「アクセスしてるPCのメインで使用するのに設定されてる言語に合わせて」ページの切り替えが行えたらな・・・と思っているのですが、 上記の例のサイトと同じ仕様でもいいな、と、思ってます。 どうかお知恵をお貸し下さい。よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10358)
No3です。 >実はWordpressを使用してサイトを作りたいとおもっているのです なんか元の質問と全然関係ない話になっていますね。 >静的なHTMLページじゃなくて、プログラムでHTMLを生成する場合は、ブラウザからの > Accept-Language ヘッダを参照して出し分けてください。 と書いたとおりですが、自分で出来ないなら、PHPのカテゴリで、 「WordPressでブラウザの言語に合わせて出すページを変えたいのだが」と質問してください。
- notnot
- ベストアンサー率47% (4900/10358)
Apacheだとそういう機能は標準で備わってます。 まず、言語はOSの設定と言うよりブラウザの設定で決まります。IEだとインターネットオプションの全般タブの言語のボタンで設定します。日本語Windowsだと標準でjaが登録されていると思いますが、ここでenを追加して、jaよりも上位にしておくと、英語のページを日本語より優先して表示して欲しいとサーバーに伝えることになります。IE以外のブラウザでも同様の設定が必ずあります。 自分で各国語の画面の確認をする場合も、ここをいろいろ変更しながら確認することになります。英語の画面を確認したいときはenだけを登録してjaを削除しておきます。 Apache側では、httpd.confで標準で、 AddHandler type-map var という行が有効になっているはずです。もしコメントになっていれば有効にしてください。 例えば、index.html をブラウザの言語に応じて、日本語:index.ja.html 英語:index.en.html 韓国語:index.ko.html などを出し分けたいとすると、index.html.var と言うファイルを作って、下記のように書きます。これはHTMLじゃないので、いきなり下記のように書いてください。 ======ここから===== URI: index.html URI: index.en.html Content-type: text/html Content-language: en URI: index.ja.html Content-type: text/html;charset=utf-8 Content-language: ja URI: index.ko.html Content-type: text/html;charset=utf-8 Content-language: ko =====ここまで===== この状態で、index.htmlを表示させるリクエストを送ると、言語に応じてファイルが選択されます。 もしindex.htmlファイルが存在すると(index.html.varが無視され)そちらが表示されます。 また、該当する言語が無いときは英語版が表示されるようです。 静的なHTMLページじゃなくて、プログラムでHTMLを生成する場合は、ブラウザからの Accept-Language ヘッダを参照して出し分けてください。
補足
すいません、教えて頂いた事を調べていてわかったのですが、 実はWordpressを使用してサイトを作りたいとおもっているのです その場合、index.htmlではなくindexphpになるようなのですが、 その部位を変えるだけで適用できるのでしょうか? WordpressにApacheをインストールするところから ほとんど宇宙語に近く、苦闘していますが なんとか勉強したいです (独学htmlとcssとちょっとjava scriptくらいしかやっとことがないです) ウェブサイトのデザインを日本語版と英語版で変えたいと考えてるので、 notnotさんの教えてくださっている二番目の方法が合う気がしているのですが、 Wordpressでやるとしたらやり方が変わってしまいますか? ちなみに、インストールして使う方のWordpressです
- memphis
- ベストアンサー率40% (975/2395)
.htaccessを設定して、閲覧する言語ごとのサイトに ジャンプするようにするのが手軽と思います。 HTMLを編集する方法もありますが、修正に手間がかかりますので。 あとは、HTMLではくPHPを使いアクセスするブラウザの言語を取得し 初期の言語を表示をすると共に、言語を変更できるようにするのがいいでしょう。 また言語ごとにページを作るとメンテナンスに手間がかかるので 言語部分は別で管理するのがオススメです。 例えば下のようなサイトを参考にして下さい。 http://themuck.de/index.php?lang=ja このPHPシステムは公開されているので理解できれば簡単でしょう。
お礼
補足の補足です http://okwave.jp/qa/q7553544.html この方とおそらくやりたいことが似ているのですが Googleなど検索エンジンで混乱するのではと懸念してます
補足
例を添えての回答参考になります、ありがとうございます! 実は、言語も別にするのですが、デザインも別にしようと考えているのです .htaccessはよっぽどでない限り使わないほうがいいとどこかにあったような記憶があるのですが・・・ 聞きかじりで言ってすいません、だいじょうぶでしょうか? そして後出しなのですがWordpressを使ってサイトを作りたいと思っているのです。WordpressはPHPやApachをメインで使ってると思うので二番目の方法がうまい具合に適用できますでしょうか。
- ballville
- ベストアンサー率47% (233/487)
サーバー側で振り分けるより、ブラウザに言語を判定させ、該当ページに飛ばすほうが簡単な気がします。 var lang=window.navigator.userLanguage || window.navigator.language || window.navigator.browserLanguage; で使用言語が取得できます たとえば日本語だと、ブラウザによって"ja"だったり"ja-JP"だったりするので細かなチェックは必要ですが。
お礼
Wordpressを使用するか否かはあまり関係無いかなと思っていました。すいません!! ここで回答を頂いたり調べたりして色々とわかってきたので、 感謝しています。度々ご回答ありがとうございます!