lang
属性と音声読み上げ
スクリーン・リーダーの中には、html
要素やその他の要素に指定されたlang
属性の値に応じて、読み上げに用いる音声合成エンジンを切り替えるものがあります。freeeで標準環境としているNVDAでも、音声設定を調整することで、多言語の読み上げに対応した状態になります。(スクリーン・リーダーを用いたチェックの実施方法の「その他の初期設定」、「音声」の項を参照)
このようなスクリーン・リーダーでは、例えばhtml要素にlang="en"
が指定されているページにアクセスすると、英語用の音声合成エンジンが利用されます。多くの英語用の音声合成エンジンは日本語を正しく扱えませんので、もしそのページのコンテンツが主に日本語で書かれている場合には正しい読み上げが行われず、半角の英数字のみを読み上げるような状態になってしまいます。
特にhtml
要素のlang
属性はページ全体の処理に影響しますので、適切な値をlang
属性に指定することは重要ですが、それ以上に誤った値を指定しないことが重要です。
例えば、以下のようにhtml
要素のlang
属性に誤った値が指定されているページは、画面表示に問題はありませんが、多言語の読み上げに対応しているスクリーン・リーダーでは適切に読み上げられません。
コードを表示
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"/> 5 <title>誤ったlang属性の指定</title> 6 </head> 7 <body> 8 <p>日本語のテキストは日本語の合成音声で読み上げられます。</p> 9 <p>HTML要素のlang属性には、ページ全体で主に使われている言語を指定します。</p> 10 <p>Web Content Accessibility Guidelines 2.1や、それを元に作ったfreeeアクセシビリティー・ガイドラインでは、html要素に適切なlang属性を指定することを必須としています。</p> 11 </body> 12 </html>
もし主に日本語で書かれていてhtml
要素のlang
属性にja
が指定されているページ中に英語のテキスト情報がある場合、その部分も含めて日本語用の音声合成エンジンが用いられます。
“freee”や“Web”といった単語単位であったり、“Web Content Accessibility
Guidelines”のように数単語程度のフレーズであれば、このことが問題になることは少ないのですが、例えば1段落以上の長さに渡ってhtml
要素のlang
属性に指定されているのとは異なる言語のテキストがあるような場合などにおいては、その言語に対応した音声合成エンジンが用いられる方が望ましいことがあります。
以下のように、引用されている英文の箇所にlang="en"
を指定してある場合(12行目)、この部分と他の日本語で書かれた部分で読み上げに用いられる音声が変わります。
コードを表示
1 <!DOCTYPE html> 2 <html lang="ja"> 3 <head> 4 <meta charset="UTF-8"/> 5 <title>lang属性 - 日英混在</title> 6 </head> 7 <body> 8 <p>日本語のテキストは日本語の合成音声で読み上げられます。</p> 9 <p>Webの考案者、Tim Berners-Leeは、以下のように言っています:</p> 10 11 <blockquote> 12 <p lang="en">The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect.</p> 13 </blockquote> 14 15 <p>適切にlang属性を使うことで、複数の言語が混在しているときの使い勝手が変わってきますが、状況や想定ユーザーに応じて、最善の実装方法が異なることが考えられます。</p> 16 </body> 17 </html>
関連ガイドライン項目
テキスト:ページの主たる言語の指定
テキスト:部分的に使用される言語の明示