たったこれだけ!アクセシビリティ向上策

2008年9月19日(金)
伊藤 千光

コンテント・ネゴシエーションによる多言語対応

 それでは、コンテント・ネゴシエーションを使ってWebサイトの多言語対応に挑戦してみましょう。

 Apacheでコンテント・ネゴシエーションを有効にするには、図2のリスト1を.htaccessに追加します。最初の1行はコンテント・ネゴシエーション自体を有効にする設定で、残りの2行は最適なページが特定できなかった際の優先順位を指定しています。LanguagePriorityのパラメータに言語コードを空白区切りで並べることで優先順位が変更できるので、必要に応じてほかの言語を加えるなどの調整を行ってください。

 あとは「本来のファイル名.言語コード」というファイル名で各言語用のコンテンツを用意するだけです。ここでは図2のリスト2・リスト3をそのファイル名で作成してください。その後「negotiation.html」にアクセスすれば、ブラウザの言語設定によって「.ja」と「.en」のいずれかが適切に選択されます。また、「negotiation.html.en」のように言語コード付きのURLを指定して、Webブラウザの設定にかかわらず該当ファイルを表示することもできます。

 上記の説明では何気なく「言語コード」という言葉を使いましたが、これはISO 639という規格で規定されたアルファベット2文字の識別子です。日本語なら「ja」、英語なら「en」となります。その多言語に関してはWikipedia(http://ja.wikipedia.org/wiki/ISO_639)などを参照してください。

Cookieによる言語選択

 ここまでで最低限の多言語対応はできました。しかし、日本人でも英語のページを読みたいことはあるでしょうし、言語の自動選択が常にうまく働くとは限りません。欲を言うなら、ユーザー自身が言語を選択する手段も用意した方が親切です。そこで、次は表示言語をCookieに保存する機能を追加してみましょう。

 実装の作業自体は簡単で、図2のリスト4を.htaccessに追加するだけです。字下げされている行は前行の続きですので、1行で入力してください。追加後、「negotiation.html.en」にアクセスすると、言語コードがCookieに記録され、以降は「negotiation.html」でも英語のページが表示されます。日本語に戻すには「negotiation.html.ja」にアクセスしてください。

 できれば以上の仕組みを説明したいのですが、正規表現やHTTPヘッダの書き換えを駆使しているため、前提知識なしで把握するのは難しいかと思います。そのため、ここでは参考情報を紹介するにとどめたいと思います。

・環境変数「prefer-language」の解説(http://httpd.apache.org/docs/2.2/env.html#prefer-language
・SetEnvIfディレクティブの解説(http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html#setenvif
・Headerディレクティブの解説(http://httpd.apache.org/docs/2.2/mod/mod_headers.html#header
・とほほのHTTP入門(http://www.tohoho-web.com/ex/http.htm
・とほほのCookie入門(http://www.tohoho-web.com/wwwcook.htm
・Studio Sixnineの正規表現の解説(http://www.sixnine.net/regexp/

 実用性を考えると手動による言語選択は必須なため、コード例を掲載しました。図2のリスト4にはCookieの有効期限などの注意点がいくつかありますので、ぜひ上記のサイトを参考にして、仕組みを調べてみてください。

 次のページでは、デバイスを判別して適切なページを表示する方法を解説します。

白髪になってもプログラムを組んでいたい、元ゲームプログラマーのWebエンジニア。いくつかのゲーム会社を渡り歩いた後、2007年にWebの世界に転身。現在はRuby on Railsを用いた業務システムの開発に従事している。ブログでの情報発信も精力的に展開。WebOS Goodies : http://webos-goodies.jp

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています