適用 (対象)
サーバーサイド技術 (HTTP ヘッダーを設定するサーバーサイドのスクリプト言語及びサーバー設定ファイルを含む)
これは達成基準 3.1.1: ページの言語 (参考) に関する達成方法である。
解説
この達成方法の目的は、コンテンツの対象者を特定するために、ウェブページの主たる自然言語に関する情報を提供することである。HTTP Content-Language ヘッダーには、一つ以上の言語コードのリストを含めることが可能で、ユーザエージェントとサーバーとの間での言語ネゴシエーションに用いられる。ユーザエージェントで言語設定が正しく設定されていれば、言語ネゴシエーションによって利用者は自分が設定した自然言語に合うコンテンツを見つけることができる。
ただし、HTTP Content-Language ヘッダーは、コンテンツを処理するのに用いられる自然言語を特定するためのものではないことに注意しなければならない。コンテンツを処理する自然言語は、マークアップ言語の lang 属性や xml:lang 属性などによって特定することができる。
この達成方法は、lang 属性または xml:lang 属性の例で明記されているように、文書の主たる自然言語を HTTP Content-Language ヘッダーで挙げるようにするものである。
言語ネゴシエーション (language negotiation) というのは、Accept-Language によるコンテントネゴシエーションのことを指していると思われるが、このときネゴシエーションに使われるのは "Content-Language
" ではなく、クライアントが送る "Accept-Language
" の値であると考えられる。
事例
例 1: Java サーブレット及び JSP によるコンテンツの自然言語設定
Java サーブレット又は JavaServer Pages (JSP) では、開発者は response.setHeader("Content-Language", lang)を用いることが可能で、"lang" は言語タグを表す (例えば、英語なら "en"):
… public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { … response.setHeader("Content-Language", "en"); PrintWriter out = response.getWriter(); … }
例 2: PHP によるコンテンツの自然言語設定
PHP では、開発者は header メソッドで生の HTTP ヘッダーを送ることができる。次の例では、自然言語をフランス語に設定している:
<?php header('Content-language: fr'); … ?>
参考リソース
参考リソースは、あくまでも情報提供のみが目的であり、推薦などを意味するものではない。
W3C Internationalization FAQ: HTTP and meta for language information
Declaring metadata about the language(s) of the intended audience in Authoring HTML: Language declarations - W3C Working Group Note 3 June 2014.
RFC 7321 3.1.3.2. Content-Language
header in the PHP Manual.
検証
手順
- Live HTTP Header ビューアを用いて、"Content-Language" ヘッダーの値を調べる。
- その値がウェブページの主たる自然言語と一致していることを確認する。
期待される結果
- #2 の結果が真である。