本文へ移動
easeweb
ご相談
トピックを検索

読み上げの発音が崩れる、誤ったページの言語指定

共通レイアウトが lang="en" を固定しているため、スペイン語のページが英語の発音規則で読み上げられ、別の言語の引用もページの声で読まれます。

WCAG 2.2
SC 3.1.1ASC 3.1.2AA
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり lang="en"
アクセシビリティの問題を示した図: 英語の発音で読む。
01

問題

スクリーンリーダーや点字ディスプレイの利用者に、ページが別の言語の発音で読み上げられ、理解しにくく、ときには理解できなくなります。

02

試してみる

スペイン語の商品ページを聞いてください。

各部分の「聞く」を押すと、langで選ばれる声で読み上げます(端末にその声がある場合)。パネルには声と聞こえ方が表示されます。言語を切り替えて、もう一度聞いてください。

問題あり 修正できますか?

<html lang="en">

Botas de montaña

Impermeables y ligeras, para todo el año.

Kept me dry for three days of rain.

ページの部分の「聞く」を押してください。

設定元: <html lang="en">

再現デモです。「問題あり」は意図的にアクセシブルでない状態にしています。

03

修正方法

htmlのlangをページの実際の言語から設定し、別の言語の部分にはそれぞれlangを付けます。

  1. 1どのページもhtml要素に、主な内容と一致する有効なlangがある。
  2. 2ページを読み込まずに言語が変わるときは、htmlのlangも合わせて変える。
  3. 3別の言語の部分は、独自のlangを持つ。
修正前 どの言語でも同じlang

html

<!-- app.html, the shared layout --><html lang="en">

html

<!-- the Spanish product page, words from the translation file --><h1>Botas de montaña</h1><p>Impermeables y ligeras, para todo el año.</p><blockquote>Kept me dry for three days of rain.</blockquote>
修正後

テンプレートでページのロケールからlangを設定

html

<!-- app.html, rendered on the server for each request --><html lang="{locale}">  <!-- "es" on /es/ pages, "en" on /en/ -->

html

<h1>Botas de montaña</h1><p>Impermeables y ligeras, para todo el año.</p><blockquote lang="en">Kept me dry for three days of rain.</blockquote>

AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得

04

修正の確認

マウスを使わない5つの確認

確認方法: スクリーンリーダー

5件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。言語を追加した際は、再度確認します。

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。スクリーンリーダーが声を切り替えるのは、その言語の声がインストールされている場合だけで、短い部分の lang を無視するものもあります。これは制御できませんが、マークアップは正しくしておく必要があります。ある部分が名前なのか別の言語の語句なのかは、ツールでは判断できません。実際のページの各言語版を、できればその言語を読める人と一緒に確認してください。

よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。

コードを更新しても、使いやすさを保つために

ガイドの内容を、コーディングエージェントやCIで使える開発ルールにまとめます。更新後は、キーボードとスクリーンリーダーで再テストし、問題が再発していないか確認します。

再テストの進め方