@surea11y/core 1.7.0 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +103 -1
- package/README.md +157 -54
- package/docs/ACT_RULE_MAPPING.md +8 -7
- package/docs/API_STABILITY.md +18 -5
- package/docs/BINDING_AUTHORS_GUIDE.md +2 -2
- package/docs/CI_INTEGRATIONS.md +43 -0
- package/docs/DESIGN_CHALLENGES.md +97 -3
- package/docs/EARL.md +2 -2
- package/docs/ENGINE_OPTIONS.md +81 -3
- package/docs/I18N.md +62 -20
- package/docs/JUNIT.md +73 -0
- package/docs/LIMITATIONS.md +1 -0
- package/docs/OUTPUT_SCHEMA.md +19 -6
- package/docs/REPORT.md +7 -2
- package/docs/RULE_AUTHORING.md +73 -6
- package/docs/RULE_CATALOG.md +139 -116
- package/docs/RULE_EXAMPLES.md +2189 -0
- package/docs/RULE_HELPERS.md +62 -5
- package/docs/RULE_TAXONOMY.md +2 -2
- package/docs/SARIF.md +2 -1
- package/docs/WCAG_CONFORMANCE.md +56 -3
- package/package.json +34 -11
- package/profiles/index.js +14 -0
- package/src/checks/automatic/area-alt-present.js +87 -31
- package/src/checks/automatic/aria-braille-equivalent.js +25 -7
- package/src/checks/automatic/aria-hidden-focus.js +74 -18
- package/src/checks/automatic/aria-prohibited-attr.js +17 -4
- package/src/checks/automatic/aria-required-attr.js +29 -0
- package/src/checks/automatic/aria-role-name-present.js +19 -2
- package/src/checks/automatic/aria-valid-attr-value.js +28 -16
- package/src/checks/automatic/autocomplete-valid.js +26 -11
- package/src/checks/automatic/avoid-inline-spacing.js +105 -40
- package/src/checks/automatic/button-name-present.js +2 -1
- package/src/checks/automatic/canvas-text-alternative-present.js +105 -14
- package/src/checks/automatic/combobox-name-present.js +34 -51
- package/src/checks/automatic/contrast-computable.js +35 -4
- package/src/checks/automatic/contrast-enhanced.js +4 -4
- package/src/checks/automatic/contrast-minimum.js +45 -11
- package/src/checks/automatic/css-orientation-lock.js +152 -30
- package/src/checks/automatic/definition-list-children-valid.js +67 -23
- package/src/checks/automatic/deprecated-elements-not-used.js +43 -38
- package/src/checks/automatic/dialog-name-present.js +28 -9
- package/src/checks/automatic/duplicate-id.js +6 -2
- package/src/checks/automatic/identical-iframes-same-purpose.js +4 -4
- package/src/checks/automatic/iframe-focusable-content.js +7 -4
- package/src/checks/automatic/iframe-title-unique.js +36 -81
- package/src/checks/automatic/input-image-alt-present.js +32 -20
- package/src/checks/automatic/label-in-name.js +40 -13
- package/src/checks/automatic/language-page-present.js +12 -6
- package/src/checks/automatic/link-in-text-block.js +272 -60
- package/src/checks/automatic/link-name-present.js +13 -5
- package/src/checks/automatic/list-children-valid.js +18 -1
- package/src/checks/automatic/listbox-name-present.js +19 -49
- package/src/checks/automatic/listitem-parent-valid.js +4 -3
- package/src/checks/automatic/meta-refresh-no-exceptions.js +3 -3
- package/src/checks/automatic/page-title-present.js +16 -4
- package/src/checks/automatic/progressbar-name-present.js +11 -1
- package/src/checks/automatic/role-img-text-alternative-present.js +9 -5
- package/src/checks/automatic/searchbox-name-present.js +32 -49
- package/src/checks/automatic/server-side-image-map-absent.js +48 -28
- package/src/checks/automatic/slider-name-present.js +38 -52
- package/src/checks/automatic/spinbutton-name-present.js +32 -49
- package/src/checks/automatic/target-size-minimum.js +0 -11
- package/src/checks/automatic/td-has-header.js +41 -5
- package/src/checks/automatic/text-spacing-content-loss.js +548 -0
- package/src/checks/automatic/textbox-name-present.js +32 -49
- package/src/checks/automatic/valid-lang.js +15 -10
- package/src/checks/manual/area-alt-quality-manual.js +113 -31
- package/src/checks/manual/canvas-text-alternative-quality-manual.js +0 -2
- package/src/checks/manual/css-focus-indicator-suppressed-manual.js +23 -10
- package/src/checks/manual/css-hidden-focus.js +215 -7
- package/src/checks/manual/form-control-label-quality-manual.js +109 -5
- package/src/checks/manual/heading-order-manual.js +9 -1
- package/src/checks/manual/heading-quality-manual.js +143 -9
- package/src/checks/manual/img-alt-decorative-manual.js +6 -3
- package/src/checks/manual/input-image-alt-quality-manual.js +81 -13
- package/src/checks/manual/link-name-quality-manual.js +130 -4
- package/src/checks/manual/media-transcript-present-manual.js +65 -8
- package/src/checks/manual/mouse-only-event-handlers-manual.js +66 -5
- package/src/checks/manual/no-autoplay-audio-manual.js +93 -6
- package/src/checks/manual/p-as-heading-manual.js +89 -44
- package/src/checks/manual/page-title-patterns-manual.js +77 -8
- package/src/checks/manual/skip-link-manual.js +42 -14
- package/src/checks/manual/table-fake-caption-manual.js +32 -1
- package/src/checks/manual/video-caption-manual.js +47 -24
- package/src/checks/manual-review.js +0 -4
- package/src/core.js +14285 -2219
- package/src/coverage/en301549-map.js +187 -0
- package/src/coverage/standards.js +279 -0
- package/src/coverage/wcag-facets.js +1119 -0
- package/src/coverage/wcag-version-map.js +101 -0
- package/src/en301549.js +33 -0
- package/src/junit.js +321 -0
- package/src/profile-kit.js +163 -0
- package/src/report.js +343 -74
- package/src/sarif.js +34 -3
- package/src/wcag.js +105 -0
- package/surea11y.browser.js +5 -4
- package/surea11y.i18n.de.js +1 -1
- package/surea11y.i18n.es.js +1 -1
- package/surea11y.i18n.fr.js +1 -1
- package/surea11y.i18n.ja.js +3 -0
- package/src/checks/manual/area-alt-decorative-manual.js +0 -255
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/* SPDX-License-Identifier: MPL-2.0 */
|
|
2
|
+
/*! @surea11y/core -- ja messages for the standalone browser bundle. Generated; load after surea11y.browser.js. */
|
|
3
|
+
(function(e){"use strict";if(!e.a11ycore||typeof e.a11ycore.registerMessages!="function")throw new Error("surea11y.i18n.ja.js: load surea11y.browser.js first.");e.a11ycore.registerMessages("ja",{img_altPresent_title:"<img> 要素には alt 属性が必要",img_altPresent_description:"<img> 要素に、テキストによる代替を提供するための alt 属性があるかを確認します。",img_altPresent_summary_fail:"<img> 要素に alt 属性がありません。",img_altPresent_hint_fail:'alt 属性を追加してください (alt="" は装飾画像の場合にのみ使用します)。',area_altPresent_title:"<area> 要素にはアクセシブルな名前が必要",area_altPresent_description:"<area> 要素に、alt、aria-label/aria-labelledby、または title による空でないアクセシブルな名前があるかを確認します。",area_altPresent_summary_fail:"<area> 要素に alt 属性がありません。",area_altPresent_hint_fail:"リンク先を説明する alt 属性を追加してください (<area> は装飾として扱えません)。",area_altPresent_summary_fail_empty:"alt 属性が空のため、<area> のリンクにアクセシブルな名前がありません。",area_altPresent_hint_fail_empty:"alt でリンク先を説明するか、aria-label/aria-labelledby を追加してください (イメージマップが使用されている <area> は装飾として扱えません)。",inputImage_altPresent_title:'<input type="image"> には alt 属性が必要',inputImage_altPresent_description:'<input type="image"> 要素に、テキストによる代替を提供するための alt 属性があるかを確認します。',inputImage_altPresent_summary_fail:'<input type="image"> に alt 属性がありません。',inputImage_altPresent_hint_fail:'alt 属性を追加してください (alt="" は別の方法でアクセシブルな名前が提供されている場合にのみ使用します)。',inputImage_altPresent_summary_cantTell_defaultName:"アクセシブルな名前が画像ボタンに対するブラウザーの既定値と一致しています。ボタンの機能を説明しているか確認してください。",inputImage_altPresent_hint_cantTell_defaultName:"名前がボタンの機能を表していない場合は、機能を説明するテキスト (例:「検索」) に置き換えてください。",inputImage_altPresent_summary_emptyAlt:'<input type="image"> の alt="" が空のため、コントロールに名前がありません。',inputImage_altPresent_hint_emptyAlt:"alt で操作内容を説明するか、aria-label または aria-labelledby でコントロールに名前を付けてください。",ariaHidden_programmaticFocus_review_title:"プログラムでフォーカス可能な aria-hidden 要素の確認",ariaHidden_programmaticFocus_review_description:"aria-hidden が指定されていても、プログラムによるフォーカス (tabindex < 0 など) が可能なため対象となる要素を検出します。フォーカス管理と支援技術への公開のされ方が意図どおりか確認してください。",ariaHidden_programmaticFocus_review_summary:"要確認: aria-hidden が指定された要素が、プログラムでフォーカス可能です。",ariaHidden_programmaticFocus_review_hint:"フォーカス管理が意図的なものか、またこの要素を支援技術から隠したままにしてよいかを確認してください。",canvas_textAltPresent_title:"<canvas> にはテキストによる代替が必要",canvas_textAltPresent_description:"<canvas> 要素に、フォールバックコンテンツまたはアクセシブルな名前によるテキストによる代替があるかを確認します。",canvas_textAltPresent_summary_fail:"<canvas> にテキストによる代替がありません。",canvas_textAltPresent_hint_fail:"<canvas> の中にフォールバックテキストを入れるか、アクセシブルな名前 (aria-label/aria-labelledby など) を指定してください。",canvas_textAltPresent_summary_fail_roleImg:'この <canvas role="img"> にはアクセシブルな名前がありません。role="img" があると、フォールバックコンテンツは名前になりません。',canvas_textAltPresent_hint_fail_roleImg:'aria-label か aria-labelledby で名前を付けるか、role="img" を削除してフォールバックコンテンツがテキストによる代替として機能するようにしてください。',svg_textAltPresent_title:"<svg> にはテキストによる代替が必要",svg_textAltPresent_description:"インライン <svg> 要素に、<title> 要素または ARIA による名前でテキストによる代替があるかを確認します (<desc> 要素だけでは対象外です)。",svg_textAltPresent_summary_fail:"<svg> にテキストによる代替がありません。",svg_textAltPresent_hint_fail:"テキストを含む <title> 要素、または ARIA による名前 (aria-label/aria-labelledby) を指定してください。<desc> 要素だけではアクセシブルな名前になりません。",object_textAltPresent_title:"<object> にはテキストによる代替が必要",object_textAltPresent_description:"<object> 要素に、フォールバックコンテンツまたはアクセシブルな名前によるテキストによる代替があるかを確認します。",object_textAltPresent_summary_fail:"<object> にテキストによる代替がありません。",object_textAltPresent_hint_fail:"<object> の中に意味のあるフォールバックコンテンツを入れるか、アクセシブルな名前 (aria-label/aria-labelledby) を指定してください。次善の策として title 属性も使えます。",embed_textAltPresent_title:"<embed> にはテキストによる代替が必要",embed_textAltPresent_description:"<embed> 要素に、アクセシブルな名前によるテキストによる代替があるかを確認します。",embed_textAltPresent_summary_fail:"<embed> にテキストによる代替がありません。",embed_textAltPresent_hint_fail:"<embed> にアクセシブルな名前を指定してください (aria-label/aria-labelledby を推奨。次善の策として title 属性も使えます)。",img_altQuality_title:"<img> の代替テキストが適切であること (手動確認)",img_altQuality_description:"空でない代替テキストを持つ <img> 要素を検出し、その内容が適切かを人が確認できるようにします。",img_altQuality_summary_cantTell:"<img> の代替テキストが正確かつ適切か、人による確認が必要です。",img_altQuality_hint_cantTell:"代替テキストが、文脈の中で画像の目的や情報を伝えているか確認してください (冗長な表現やファイル名のような文字列になっていないか)。",img_altDecorative_title:"支援技術から除外された <img>/<canvas>/<svg> が装飾であること (手動確認)",img_altDecorative_description:'アクセシビリティツリーから除外されている <img>、<canvas>、<svg> 要素 (aria-hidden、role="none"/"presentation"、空の alt、ラベルのない svg/canvas) を検出し、純粋な装飾かどうかを人が確認できるようにします。',img_altDecorative_summary_cantTell:"この <{{element}}> が装飾かどうか、人による確認が必要です。",img_altDecorative_hint_cantTell:"この要素が純粋な装飾であることを確認してください。情報や機能を伝えている場合は、除外せずに適切なテキストによる代替 (またはアクセシブルな名前) を指定してください。",area_altQuality_title:"<area> のテキストによる代替が適切であること (手動確認)",area_altQuality_description:"空でないテキストによる代替 (alt、aria-label、aria-labelledby、title) を持つ <area> 要素を検出し、その内容が適切かを人が確認できるようにします。",area_altQuality_summary_cantTell:"この <area> のテキストによる代替 ({{sources}}) が正確かつ適切か、人による確認が必要です。",area_altQuality_hint_cantTell:"挙げられた各テキストによる代替が、文脈の中でイメージマップの領域のリンク先や操作を示しているか確認してください。",inputImage_altQuality_title:'<input type="image"> のテキストによる代替が適切であること (手動確認)',inputImage_altQuality_description:'空でないテキストによる代替 (alt、aria-label、aria-labelledby、title) を持つ <input type="image"> 要素を検出し、その内容が適切かを人が確認できるようにします。',inputImage_altQuality_summary_cantTell:'この <input type="image"> のテキストによる代替 ({{sources}}) が正確かつ適切か、人による確認が必要です。',inputImage_altQuality_hint_cantTell:"挙げられた各テキストによる代替が、文脈の中でコントロールの操作 (例:「検索」「注文を確定」) を説明しているか確認してください。",inputImage_altDecorative_title:'alt="" の <input type="image"> が適切であること (手動確認)',inputImage_altDecorative_description:'alt が空の <input type="image"> 要素を検出し、人が確認できるようにします (機能を持つコントロールで alt を空にするのは、通常は適切ではありません)。',inputImage_altDecorative_summary_cantTell:'alt="" の <input type="image"> について、人による確認が必要です。',inputImage_altDecorative_hint_cantTell:"このコントロールは通常、機能を持っています。別の方法で同等のアクセシブルな名前が提供されているか確認し、なければ意味のある代替テキストを指定してください。",canvas_textAltQuality_title:"<canvas> のテキストによる代替が適切であること (手動確認)",canvas_textAltQuality_description:"テキストによる代替が検出された <canvas> 要素を検出し、同等性と適切さを人が確認できるようにします。",canvas_textAltQuality_summary_cantTell:"<canvas> のテキストによる代替が内容と同等で適切か、人による確認が必要です。",canvas_textAltQuality_hint_cantTell:"フォールバックテキストまたはアクセシブルな名前が、canvas の内容と同じ情報や機能を伝えているか確認してください。",svg_textAltQuality_title:"<svg> のテキストによる代替が適切であること (手動確認)",svg_textAltQuality_description:"テキストによる代替が検出された対象の <svg> グラフィックを検出し、その内容が適切かを人が確認できるようにします。",svg_textAltQuality_summary_cantTell:"<svg> のテキストによる代替が正確かつ適切か、人による確認が必要です。",svg_textAltQuality_hint_cantTell:"<title>/<desc> または ARIA による名前が、文脈の中でグラフィックの意味や目的を伝えているか確認してください。",object_textAltQuality_title:"<object> のテキストによる代替が適切であること (手動確認)",object_textAltQuality_description:"フォールバックコンテンツまたは名前が検出された <object> 要素を検出し、同等性と適切さを人が確認できるようにします。",object_textAltQuality_summary_cantTell:"<object> のテキストによる代替が内容と同等で適切か、人による確認が必要です。",object_textAltQuality_hint_cantTell:"フォールバックコンテンツまたは ARIA による名前が、埋め込まれたコンテンツと同等の代替になっているか確認してください。",embed_textAltQuality_title:"<embed> のテキストによる代替が適切であること (手動確認)",embed_textAltQuality_description:"名前が検出された <embed> 要素を検出し、その内容が適切かを人が確認できるようにします。",embed_textAltQuality_summary_cantTell:"<embed> のテキストによる代替が正確かつ適切か、人による確認が必要です。",embed_textAltQuality_hint_cantTell:"ARIA による名前または title が、文脈の中で埋め込まれたコンテンツを正しく示しているか確認してください。",videoPoster_textAltPresent_title:"<video> のポスター画像にはテキストによる代替が必要",videoPoster_textAltPresent_description:"ポスター画像を持つ <video> 要素に、テキストによる代替 (アクセシブルな名前) があるかを確認します。",videoPoster_textAltPresent_summary_fail:"<video> のポスター画像にテキストによる代替がありません。",videoPoster_textAltPresent_hint_fail:"ポスター画像にアクセシブルな名前を指定してください (aria-label/aria-labelledby を推奨。代わりに title 属性も使えます)。",svgImage_textAltPresent_title:"SVG の <image> にはテキストによる代替が必要",svgImage_textAltPresent_description:"SVG の <image> 要素に、<title>/<desc> または ARIA によるアクセシブルな名前でテキストによる代替があるかを確認します。",svgImage_textAltPresent_summary_fail:"SVG の <image> にテキストによる代替がありません。",svgImage_textAltPresent_hint_fail:"<image> の中に <title> (必要に応じて <desc> も) を追加するか、aria-label/aria-labelledby を指定してください。",formControl_programmaticLabelPresent_title:"フォームコントロールにはプログラムで解釈できるラベルが必要",formControl_programmaticLabelPresent_description:"フォームコントロールに、<label>、aria-label、aria-labelledby、title、または placeholder によるプログラムで解釈できるラベルがあるかを確認します。",formControl_programmaticLabelPresent_summary_fail:"フォームコントロールに、プログラムで解釈できるラベルがありません。",formControl_programmaticLabelPresent_hint_fail:"<label> による関連付け、aria-label、または aria-labelledby を指定してください (placeholder/title はラベルとして扱いません)。",formControlAccessibleName_description:"対象のフォームコントロールにアクセシブルな名前 (label、aria-label、aria-labelledby など) がない場合に不合格とします。",formControlAccessibleName_hint_fail:"<label>、aria-label、または aria-labelledby でアクセシブルな名前を指定してください。",formControlAccessibleName_summary_fail:"フォームコントロールにアクセシブルな名前がありません。",formControlAccessibleName_title:"フォームコントロールにはアクセシブルな名前が必要",linksTargetBlankNoopener_description:'target="_blank" を指定したリンクで、リバースタブナビングのリスクが軽減されているかを確認します。',linksTargetBlankNoopener_hint_cantTell:"このルールのガイダンスを参照してください。",linksTargetBlankNoopener_summary_cantTell:'新しいタブで開くリンクには rel="noopener" の指定が推奨されます',linksTargetBlankNoopener_title:'新しいタブで開くリンクには rel="noopener" の指定が推奨',manualReview_description:"キーボード操作とフォーカス順序について、手動による確認が必要であることを示します。",manualReview_hint_cantTell:"このルールのガイダンスを参照してください。",manualReview_summary_cantTell:"手動確認: キーボード操作とフォーカス順序",manualReview_title:"手動確認: キーボード操作とフォーカス順序","rules.img-alt-suspicious.meta.title":"不審な代替テキストは確認が必要","rules.img-alt-suspicious.meta.description":"代替テキストが、よくある不審なパターン (ファイル名、URL、仮の文字列、汎用的な語句など) に一致する画像を検出します。これらは手動での確認が必要です。","rules.img-alt-suspicious.occurrence.cantTell.summary":"画像の代替テキストが不審です (「{{alt}}」は {{pattern}} のように見えます)。人による確認が必要です。","rules.img-alt-suspicious.occurrence.cantTell.hint":"代替テキストを確認してください。ファイル名、URL、仮の文字列、汎用的な語句は避け、文脈の中で画像の目的や機能を説明するテキストにしてください。",formControlLabelQuality_title:"フォームフィールドのラベルは内容がわかり、互いに区別できることが望ましい",formControlLabelQuality_description:'表示されているフォームフィールドのラベルが仮の文字列 (「ラベル」「入力欄」、"Label" など) である場合や、区別のための表示上の手がかり (見出し、legend、行) がないまま別のフィールドと同じラベルになっている場合に検出します。英語の仮の文字列は常に対象とし、ドイツ語、スペイン語、フランス語、日本語のものは、フィールドがその言語で書かれている場合に対象とします。',formControlLabelQuality_summary_cantTell_placeholder:"このフィールドの表示ラベル (「{{label}}」) は仮の文字列であり、フィールドの用途を説明していません。",formControlLabelQuality_summary_cantTell_duplicate:"このフィールドの表示ラベル (「{{label}}」) は、ほかの {{count}} 個のフィールドと同じです。区別するための見出し、legend、行のテキストも表示されていません。",formControlLabelQuality_hint_cantTell_placeholder:"フィールドに入力する情報を示すラベルに置き換えてください。",formControlLabelQuality_summary_cantTell_partiallyHidden:"このフィールドのラベルは分割されています。表示されているのは「{{label}}」だけで、ラベルのほかの {{hiddenCount}} 個の部分は視覚的に隠れています。",formControlLabelQuality_hint_cantTell_partiallyHidden:"表示されている部分だけでフィールドを特定できるか確認するか、ラベルの残りの部分も表示してください。",formControlLabelQuality_hint_cantTell_duplicate:"フィールドごとに固有のラベルを付けるか、区別のための手がかりを画面に表示してください (各グループの上に見える見出しや fieldset の legend を置くなど)。",formControl_programmaticLabelQuality_title:"フォームコントロールは placeholder や title を主なラベルにしないことが望ましい",formControl_programmaticLabelQuality_description:"算出されたアクセシブルな名前が、主なラベル付けの方法として placeholder または title に依存しているフォームコントロールを検出します。<label> または aria-labelledby の使用を推奨します。",formControl_programmaticLabelQuality_summary_cantTell:"フォームコントロールの主なラベルは {{method}} から取得されています。",formControl_programmaticLabelQuality_hint_cantTell:"常に表示される <label> または aria-labelledby を使用してください。placeholder/title を主なラベルにすることは避けてください。",html_lang_attr_title:"ページの言語が指定されていること",html_lang_attr_description:"ページの既定の言語が、プログラムで解釈できるように指定されているかを確認します。",html_lang_attr_missing_absent:"ページの既定の言語が指定されていません。",html_lang_attr_hint_missing_absent:'<html> 要素に lang 属性を追加してください (例: <html lang="ja">)。',html_lang_attr_missing_empty:"ページの既定の言語は指定されていますが、値が空です。",html_lang_attr_hint_missing_empty:'<html> 要素の lang 属性に有効な言語の値を設定してください (例: <html lang="ja">)。',html_lang_attr_invalid:"ページの既定の言語は指定されていますが、値「{{lang}}」は有効な言語タグではありません。",html_lang_attr_hint_invalid:'<html lang="…"> には有効な BCP 47 言語タグを使用してください (例:「ja」「en」「ja-JP」)。',mediaTranscriptPresent_title:"時間依存メディア: トランスクリプトまたはテキストによる代替の手がかり",mediaTranscriptPresent_description:"トランスクリプトやその他のテキストによる代替の存在が、ページのコンテンツから十分に裏付けられない音声要素と動画要素を検出します。このルールは慎重な判定を行い、手がかりが見つからない場合や検証できない場合は cantTell を報告します。",mediaTranscriptPresent_summary_cantTell_missing:"この <{{element}}> のトランスクリプトまたはその他のテキストによる代替が、ページ上で十分に確認できません。",mediaTranscriptPresent_hint_cantTell_missing:"収録済みの音声のみ・映像のみのメディアには、明確にそれとわかるトランスクリプトまたはその他のテキストによる代替を提供してください (見出し「トランスクリプト」のついたセクションやリンクを表示するなど)。",mediaTranscriptPresent_summary_cantTell_unverified:"この時間依存メディアにはトランスクリプトまたはその他のテキストによる代替があるかもしれませんが、ページのコンテンツからは検証できませんでした。",mediaTranscriptPresent_hint_cantTell_unverified:"明確にそれとわかるトランスクリプトまたはその他のテキストによる代替が用意され、ページ上でメディアと視覚的またはプログラム的に関連付けられているか確認してください。",pageTitlePresent_title:"ページに空でないタイトルがあること",pageTitlePresent_description:"ページに空でない <title> 要素があるかを確認します。",pageTitlePresent_summary_fail:"ページに空でないタイトルがありません。",pageTitlePresent_hint_fail:"ページの主題や目的を説明するテキストを含む <title> 要素を追加してください。",pageTitlePatterns_title:"説明が不十分なおそれのあるページタイトルのパターン",pageTitlePatterns_description:"汎用的なタイトル、重複したタイトル、テンプレートに頼りすぎたタイトルなど、説明が不十分であることを示唆するページタイトルのパターンを検出します。このルールは確認のための手がかりを示すもので、自動的に不合格とすることはありません。",pageTitlePatterns_summary_cantTell:"ページタイトルが、ページの主題や目的を特定できるほど説明的でないおそれがあります。",pageTitlePresent_summary_fail_missing:"ページに <title> 要素がありません。",pageTitlePresent_summary_fail_empty:"ページの <title> が空です。",pageTitlePatterns_summary_cantTell_duplicateAcrossPages:"複数のページが同じタイトルを使用しているため、ページを区別しにくくなっている可能性があります (分析した {{pagesAnalyzed}} ページ中、重複グループが {{duplicateGroups}} 個)。例:「{{exampleTitle}}」",pageTitlePatterns_summary_cantTell_templatedAcrossPages:"多くのページタイトルがテンプレートに強く依存しているようで、タイトルでページを区別しにくくなっている可能性があります ({{pagesAnalyzed}} ページ)。",pageTitlePatterns_summary_cantTell_generic:"ページタイトルが汎用的で、ページの主題や目的を特定できないおそれがあります。",pageTitlePatterns_summary_cantTell_veryShort:"ページタイトルが非常に短く、ページの主題や目的を特定できないおそれがあります。",pageTitlePatterns_summary_cantTell_templateLike:"ページタイトルがテンプレートのままのようで、ページの主題や目的を特定できないおそれがあります。",pageTitlePatterns_hint_cantTell:"ページタイトルがページの主題や目的を明確に示し、ほかのページと区別するのに役立っているか確認してください。",contrastComputable_title:"表示されたテキストの色のコントラストを計算できること",contrastComputable_description:"表示されているテキストについて、WCAG の色のコントラストを計算するのに十分な情報があるかを判定します (背景を特定できなくするグラデーション、画像、ブレンドモードがないかなど)。",contrastComputable_pass_allComputable:"対象となるすべてのテキスト ({{eligibleTextCount}} 個のテキストノード) でコントラストを計算できます。",contrastComputable_cantTell_generic:"コントラストを計算できない可能性があります ({{reasonCode}})。",contrastComputable_cantTell_bgImageOrGradient:"背景に画像またはグラデーションが使われているため、コントラストを計算できません ({{blockerProperty}}={{blockerValue}})。",contrastComputable_cantTell_bgImage:"背景に画像が使われているため、コントラストを計算できません ({{blockerProperty}}={{blockerValue}})。",contrastComputable_cantTell_bgGradient:"背景にグラデーションが使われているため、コントラストを計算できません ({{blockerProperty}}={{blockerValue}})。",contrastComputable_cantTell_bgImageAndGradient:"背景に画像とグラデーションが使われているため、コントラストを計算できません ({{blockerProperty}}={{blockerValue}})。",contrastComputable_cantTell_mixBlendMode:"mix-blend-mode が使われているため、コントラストを計算できません ({{blockerProperty}}={{blockerValue}})。",contrastComputable_cantTell_filter:"filter/backdrop-filter が使われているため、コントラストを計算できません ({{blockerProperty}}={{blockerValue}})。",contrastComputable_cantTell_rootNotOpaque:"ルートで実際の背景が完全に不透明ではないため、コントラストを計算できません (alpha={{backgroundAlpha}})。",contrastComputable_cantTell_foregroundUnparsable:"算出された前景色を解析できなかったため、コントラストを計算できません。",contrastComputable_cantTell_engineFailure:"エンジン内部のエラーにより、コントラストを計算できるかどうかを判定できませんでした ({{reasonCode}})。",contrastComputable_cantTell_backdropFilter:"backdrop-filter が使われているため、コントラストを計算できません ({{blockerProperty}}={{blockerValue}})。",contrastComputable_cantTell_filterOrBackdropFilter:"filter が使われているため、コントラストを計算できません ({{blockerProperty}}={{blockerValue}})。",contrastComputable_cantTell_textShadow:"text-shadow が使われているため、コントラストを計算できません。text-shadow によってコントラストが高まる可能性がありますが、この計算では考慮していません ({{blockerProperty}}={{blockerValue}})。",contrastComputable_hint_cantTell_background:"表示されたページで、テキストの背後の背景とのコントラストが最も低くなる箇所を探し、コントラストを手動で測定してください。通常のテキストには 4.5:1 以上、大きなテキストには 3:1 以上が必要です (AAA では 7:1 と 4.5:1)。",contrastComputable_hint_cantTell_effect:"指定された CSS の色と実際に画面に表示される色は異なるため、効果が適用された状態の表示ページでコントラストを手動で測定してください。通常のテキストには 4.5:1 以上、大きなテキストには 3:1 以上が必要です (AAA では 7:1 と 4.5:1)。",contrastComputable_hint_cantTell_rootNotOpaque:"このテキストの背後にはルートまで完全に不透明な背景を持つ要素がないため、テキストが重なる色はページの表示先によって変わります。html または body に不透明な背景色を指定するか、ページが実際に表示される背景に対してコントラストを測定してください。",contrast_hint_cantTell_manual:"表示されたページで、このテキストのコントラストを手動で測定してください。通常のテキストには 4.5:1 以上、大きなテキストには 3:1 以上が必要です (AAA では 7:1 と 4.5:1)。",contrastMinimum_title:"テキストが最低限の色のコントラスト (AA) を満たしていること",contrastMinimum_description:"CSS からコントラストを計算できる場合に、表示されているテキストのコントラスト比が 4.5:1 以上 (通常のテキスト) または 3:1 以上 (大きなテキスト) であるかを確認します。",contrastMinimum_fail_belowThreshold:"要素の色のコントラスト比が {{ratio}}:1 で不十分です (前景: {{foregroundHex}}、背景: {{backgroundHex}}、フォントサイズ: {{fontSizePx}}px、フォントの太さ: {{fontWeightLabel}})。必要なコントラスト比は {{threshold}}:1 です ({{#isLargeText}}大きなテキスト{{/isLargeText}}{{^isLargeText}}通常のテキスト{{/isLargeText}})。",contrastMinimum_hint_fail:"コントラスト比が {{threshold}}:1 以上になるよう、テキストの色、背景色、またはその両方を変更してください。",contrastMinimum_pass_allAboveThreshold:"計算できたすべてのテキストが、最低限のコントラスト (AA) の基準値を満たしています。対象のテキストノード: {{eligibleTextCount}}。計算できたもの: {{computableTextCount}}。",contrastMinimum_notApplicable_noComputableText:"対象となるテキストのうち、コントラストを計算できたものはありません (対象のテキストノード: {{eligibleTextCount}})。詳しくは、コントラストの計算可否を判定するルールを参照してください。",contrastMinimum_cantTell_engineFailure:"エンジン内部のエラーにより、最低限のコントラスト (AA) を判定できませんでした ({{reasonCode}})。",contrastEnhanced_title:"テキストが高度な色のコントラスト (AAA) を満たしていること",contrastEnhanced_description:"CSS からコントラストを計算できる場合に、表示されているテキストのコントラスト比が 7:1 以上 (通常のテキスト) または 4.5:1 以上 (大きなテキスト) であるかを確認します。",contrastEnhanced_fail_belowThreshold:"要素の色のコントラスト比 (AAA) が {{ratio}}:1 で不十分です (前景: {{foregroundHex}}、背景: {{backgroundHex}}、フォントサイズ: {{fontSizePx}}px、フォントの太さ: {{fontWeightLabel}})。必要なコントラスト比は {{threshold}}:1 です ({{#isLargeText}}大きなテキスト{{/isLargeText}}{{^isLargeText}}通常のテキスト{{/isLargeText}})。",contrastEnhanced_hint_fail:"コントラスト比が {{threshold}}:1 以上になるよう、テキストの色、背景色、またはその両方を変更してください。",contrastEnhanced_pass_allAboveThreshold:"計算できたすべてのテキストが、高度なコントラスト (AAA) の基準値を満たしています。対象のテキストノード: {{eligibleTextCount}}。計算できたもの: {{computableTextCount}}。",contrastEnhanced_notApplicable_noComputableText:"対象となるテキストのうち、コントラストを計算できたものはありません (対象のテキストノード: {{eligibleTextCount}})。詳しくは、コントラストの計算可否を判定するルールを参照してください。",contrastEnhanced_cantTell_engineFailure:"エンジン内部のエラーにより、高度なコントラスト (AAA) を判定できませんでした ({{reasonCode}})。",dom_textContrastMinimum_title:"テキストに十分なコントラストがあること (最低限)",dom_textContrastMinimum_description:"WCAG 2.2 達成基準 1.4.3 (AA) に基づき、表示されているテキストと算出された背景とのコントラストを確認します。必要なコントラスト比は、描画時のスタイル (フォントサイズ/太さ) から判断します。",dom_textContrastMinimum_summary_fail:"テキストのコントラストが不十分です: {{contrastRatio}}:1 (必要なコントラスト比は {{requiredRatio}}:1)。前景 {{fgColor}}、背景 {{bgColor}}。フォント {{fontSizePx}}px、太さ {{fontWeight}}{{#isBold}}、太字{{/isBold}}{{#isLargeText}} (大きなテキスト){{/isLargeText}}。",dom_textContrastMinimum_hint_fail:"このテキストのサイズと太さに対してコントラスト比が {{requiredRatio}}:1 以上になるよう、前景色または背景色を調整してください。",dom_textContrastMinimum_summary_pass:"このテキストのコントラストは基準値を満たしています: {{contrastRatio}}:1 (必要なコントラスト比は {{requiredRatio}}:1)。前景 {{fgColor}}、背景 {{bgColor}}。フォント {{fontSizePx}}px、太さ {{fontWeight}}{{#isBold}}、太字{{/isBold}}{{#isLargeText}} (大きなテキスト){{/isLargeText}}。",dom_textContrastMinimum_summary_cantTell:"実際の背景を確定的に特定できないため (画像、グラデーション、動画、canvas、複雑な透明度、ブレンドなど)、テキストのコントラストを確実に計算できませんでした。",dom_textContrastMinimum_hint_cantTell:"テキストが画像、グラデーション、透明な要素に重なっている箇所のコントラストを手動で確認し、算出されたテキストのサイズと太さに対して {{requiredRatio}}:1 以上であることを確かめてください。",dom_textContrastEnhanced_title:"テキストに十分なコントラストがあること (高度)",dom_textContrastEnhanced_description:"WCAG 2.2 達成基準 1.4.6 (AAA) に基づき、表示されているテキストと算出された背景とのコントラストを確認します。必要なコントラスト比は、描画時のスタイル (フォントサイズ/太さ) から判断します。",dom_textContrastEnhanced_summary_fail:"テキストの高度なコントラストが不十分です: {{contrastRatio}}:1 (必要なコントラスト比は {{requiredRatio}}:1)。前景 {{fgColor}}、背景 {{bgColor}}。フォント {{fontSizePx}}px、太さ {{fontWeight}}{{#isBold}}、太字{{/isBold}}{{#isLargeText}} (大きなテキスト){{/isLargeText}}。",dom_textContrastEnhanced_hint_fail:"高度なコントラスト (AAA) の基準としてコントラスト比が {{requiredRatio}}:1 以上になるよう、前景色または背景色を調整してください。",dom_textContrastEnhanced_summary_pass:"このテキストの高度なコントラストは基準値を満たしています: {{contrastRatio}}:1 (必要なコントラスト比は {{requiredRatio}}:1)。前景 {{fgColor}}、背景 {{bgColor}}。フォント {{fontSizePx}}px、太さ {{fontWeight}}{{#isBold}}、太字{{/isBold}}{{#isLargeText}} (大きなテキスト){{/isLargeText}}。",dom_textContrastEnhanced_summary_cantTell:"実際の背景を確定的に特定できないため (画像、グラデーション、動画、canvas、複雑な透明度、ブレンドなど)、テキストの高度なコントラストを確実に計算できませんでした。",dom_textContrastEnhanced_hint_cantTell:"テキストが画像、グラデーション、透明な要素に重なっている箇所の高度なコントラスト (AAA) を手動で確認し、算出されたテキストのサイズと太さに対して {{requiredRatio}}:1 以上であることを確かめてください。",dom_nonTextContrast_title:"UI コンポーネントとグラフィックに十分なコントラストがあること",dom_nonTextContrast_description:"WCAG 2.2 達成基準 1.4.11 (AA) に基づき、テキスト以外の視覚的な情報 (UI コンポーネントの境界や状態、意味を持つグラフィカルオブジェクト) のコントラストを確認します。",dom_nonTextContrast_summary_fail:"非テキストのコントラストが不十分です: {{contrastRatio}}:1 (必要なコントラスト比は {{requiredRatio}}:1)。前景 {{fgColor}}、背景 {{bgColor}}。コンポーネント: {{componentKind}}{{#componentState}} (状態: {{componentState}}){{/componentState}}。",dom_nonTextContrast_hint_fail:"知覚できる境界や必須の視覚的情報について、コントラスト比が {{requiredRatio}}:1 以上になるよう、コンポーネントやグラフィックの色を調整してください。",dom_nonTextContrast_summary_pass:"この非テキストのコントラストは基準値を満たしています: {{contrastRatio}}:1 (必要なコントラスト比は {{requiredRatio}}:1)。前景 {{fgColor}}、背景 {{bgColor}}。コンポーネント: {{componentKind}}{{#componentState}} (状態: {{componentState}}){{/componentState}}。",dom_nonTextContrast_summary_cantTell:"実際の背景または描画されたピクセルを確定的に特定できないため (画像、グラデーション、動画、canvas、複雑な透明度、ブレンドなど)、非テキストのコントラストを確実に計算できませんでした。",dom_nonTextContrast_hint_cantTell:"コンポーネントやグラフィックと隣接する色とのコントラストを手動で確認し、必須の非テキストの視覚的情報について {{requiredRatio}}:1 以上であることを確かめてください。",contrastEnhanced_pass_allTextMeetsThreshold:"計算できたすべてのテキストが、高度なコントラスト (AAA) の基準値を満たしています。",contrastMinimum_pass_allTextMeetsThreshold:"計算できたすべてのテキストが、最低限のコントラスト (AA) の基準値を満たしています。",contrastComputable_cantTell_notComputable:"このテキストのコントラストを計算できませんでした ({{reasonCode}})。",roleImg_textAlternativePresent_title:'[role="img"/"graphics-symbol"/"graphics-document"] にはアクセシブルなテキストによる代替が必要',roleImg_textAlternativePresent_description:'role="img"、"graphics-symbol"、"graphics-document" を持つ要素に、aria-label、aria-labelledby、title 属性、または (SVG 要素の場合は) 最初の子要素の <title> によるアクセシブルなテキストによる代替があるかを確認します。',roleImg_textAlternativePresent_summary_fail:'role="{{role}}" を持つ要素に、アクセシブルなテキストによる代替がありません。',roleImg_textAlternativePresent_hint_fail:"aria-label、または空でないテキストを参照する aria-labelledby で、テキストによる代替を指定してください。",targetSizeMinimum_title:"ポインターのターゲットは 24×24px 以上の大きさか、ほかのターゲットとの間に十分な間隔が必要",targetSizeMinimum_description:"ポインターで操作できるターゲットの実効的なヒット領域が 24×24 CSS ピクセル以上であるか、または認められている例外 (十分な間隔など) に該当するかを確認します。",targetSizeMinimum_summary_fail:"24×24 CSS px 未満で、ほかのターゲットに近すぎるポインターのターゲットがあります。",targetSizeMinimum_hint_fail:"ターゲットのサイズを 24×24 CSS px 以上にするか、隣接するターゲットとの間に十分な間隔を空けてください。",targetSizeMinimum_summary_cantTell_ambiguousSpacing:"ターゲットが小さすぎ、ほかのターゲットに近すぎる可能性がありますが、重なりが検出の閾値付近にあるため、確実には測定できませんでした。",targetSizeMinimum_hint_cantTell_ambiguousSpacing:"このターゲットと隣接するターゲットとの実際の間隔を手動で確認してください。実際に重なっている場合は、ターゲットのサイズまたは間隔を大きくしてください。",targetSizeMinimum_summary_cantTell_plausiblyEssential:"ターゲットが小さすぎ、ほかのターゲットに近すぎますが、必要不可欠なグラフィックやイメージマップの領域の一部として例外に該当する可能性があります。",targetSizeMinimum_hint_cantTell_plausiblyEssential:"このターゲットのサイズが機能にとって必要不可欠か (SVG、canvas、イメージマップの一部など) を確認してください。そうでない場合は、ターゲットのサイズまたは間隔を大きくしてください。",targetSizeMinimum_summary_cantTell_inlineLinkRun:"ターゲットが 24×24 CSS px 未満で、同じ文中の別のインラインリンクに近接しています。インラインの例外が適用される可能性があります。",targetSizeMinimum_hint_cantTell_inlineLinkRun:"これらのリンクが文中のインラインテキストの一部か (その場合は例外に該当します) を確認してください。そうでない場合は、ターゲットのサイズを 24×24 CSS px 以上にするか、間隔を空けてください。",targetSizeMinimum_notApplicable_noTargets:"評価の対象となる、ポインターで操作できるターゲットはありませんでした。",targetSizeMinimum_pass_allOk:"対象となるすべてのポインターのターゲットが、最小サイズを満たしているか、認められている例外に該当しています。",ariaHidden_focus_title:"aria-hidden が指定された要素はフォーカス可能であってはならない",ariaHidden_focus_description:'aria-hidden="true" の要素がフォーカス可能でなく、フォーカス可能な子孫要素も含んでいないかを確認します。',ariaHidden_focus_summary_fail_desc:"aria-hidden が指定された {{element}} に、フォーカス可能な要素が {{focusableCount}} 個含まれています。",ariaHidden_focus_summary_fail_self:"aria-hidden が指定された {{element}} がフォーカス可能です (フォーカス可能な要素: {{focusableCount}} 個)。",ariaHidden_focus_summary_fail_self_and_desc:"aria-hidden が指定された {{element}} 自体がフォーカス可能で、さらにフォーカス可能な子孫要素を {{descendantFocusableCount}} 個含んでいます (フォーカス可能な要素は合計 {{focusableCount}} 個)。",ariaHidden_focus_hint_fail:"子孫要素をフォーカスできないようにするか、aria-hidden を削除してください。フォーカスの移動範囲とアクセシビリティツリーが食い違わないようにします。",ariaHidden_focus_summary_cantTell_redirect:"aria-hidden が指定された {{element}} がフォーカスを受け取りましたが、フォーカスはすぐに別の要素へ移動しました。センチネルやフォーカストラップの動作を確認してください。",ariaHidden_focus_hint_cantTell_redirect:"これが意図的なフォーカスセンチネル/フォーカストラップによる受け渡しであり、キーボード利用者が隠れたフォーカス対象にとどまることがないか確認してください。",ariaHidden_focus_summary_cantTell_modal:"モーダルダイアログが開いている間、aria-hidden が指定された {{element}} にフォーカス可能な要素が {{focusableCount}} 個含まれています。モーダルがキーボードフォーカスを閉じ込めていれば到達できない可能性がありますが、フォーカスがこれらの要素に移らないことを確認してください。",ariaHidden_focus_hint_cantTell_modal:"モーダルダイアログが開いているようです。背景を inert にする (または showModal() で開くネイティブの <dialog> を使う) ことでタブ順序から外すことを推奨します。そのうえで、キーボードフォーカスがダイアログ内にとどまることを確認してください。",cssFocusIndicatorSuppressed_title:"フォーカスインジケーターを代替なしで削除してはならない",cssFocusIndicatorSuppressed_description:"タブ順序に含まれる要素のうち、:focus/:focus-visible のルール、または a { outline: none } のような状態を持たないルールでフォーカスのアウトラインが削除され、その要素に一致するどのフォーカス用ルールにも代わりのインジケーター (border、box-shadow、background など) がないものを検出します。",cssFocusIndicatorSuppressed_summary_cantTell:"この要素はタブ移動で停止しますが、「{{selectors}}」がフォーカスのアウトラインを削除しており、この要素に一致するほかのフォーカス用ルールにも代わりのインジケーターがありません。",cssFocusIndicatorSuppressed_hint_cantTell:"同じルールで代わりのインジケーター (見えるアウトライン、border、box-shadow、背景の変化など) を描画するか、アウトラインのリセットをやめてください。インジケーターをスクリプトで付けている場合は、キーボード利用者に表示されることを確認してください。",cssHidden_focus_title:"フォーカス可能な要素は視覚的に隠されていてはならない",cssHidden_focus_description:"キーボードでフォーカス可能な要素が、タブ順序に残ったまま CSS の手法で視覚的に隠されていないかを確認します。",cssHidden_focus_summary_cantTell:"フォーカス可能な {{element}} が視覚的に隠されています。{{#opacityZero}}不透明度が 0 です。{{/opacityZero}}{{#offscreen}}画面外に配置されています。{{/offscreen}}{{#clipped}}クリップによって完全に切り取られています。{{/clipped}}{{#zeroSizeOverflowHidden}}overflow: hidden でサイズが 0 になっています。{{/zeroSizeOverflowHidden}}",cssHidden_focus_hint_cantTell:"キーボードフォーカスを受け取れるときは要素を表示するか、表示されるまでタブ順序から外してください。",cssHidden_focus_summary_cantTell_redirect:"フォーカス可能な {{element}} は視覚的に隠されているようですが、フォーカスはすぐに別の要素へ移動しました。センチネルやフォーカストラップの動作を確認してください。",cssHidden_focus_hint_cantTell_redirect:"これが意図的なフォーカスセンチネル/フォーカストラップによる受け渡しであり、キーボード利用者が視覚的に隠れたフォーカス対象にとどまることがないか確認してください。",linkNamePresent_title:"リンクにアクセシブルな名前があること",linkNamePresent_description:"リンクが空でないアクセシブルな名前を公開しているかを確認します。",linkNamePresent_summary_fail:"このリンクにはアクセシブルな名前がありません。",linkNamePresent_hint_fail:"支援技術がリンクを識別できるよう、リンクテキストまたはアクセシブルな名前を与える仕組み (aria-label など) を指定してください。",buttonNamePresent_title:"ボタンにアクセシブルな名前があること",buttonNamePresent_description:"ボタンが空でないアクセシブルな名前を公開しているかを確認します。",buttonNamePresent_summary_fail:"このボタンにはアクセシブルな名前がありません。",buttonNamePresent_hint_fail:"支援技術がボタンを識別できるよう、ボタンのテキストを表示するか、アクセシブルな名前をプログラムで与える仕組み (aria-label など) を指定してください。",binaryControlNamePresent_title:"二択のコントロールにアクセシブルな名前があること",binaryControlNamePresent_description:"チェックボックス、ラジオボタン、スイッチの各コントロールが、空でないアクセシブルな名前を公開しているかを確認します。",binaryControlNamePresent_summary_fail:"このコントロールにはアクセシブルな名前がありません。",binaryControlNamePresent_hint_fail:"支援技術がコントロールを識別できるよう、label、aria-label、aria-labelledby、またはその他のアクセシブルな名前を与える仕組みを指定してください。",comboboxNamePresent_title:"コンボボックスにアクセシブルな名前があること",comboboxNamePresent_description:'role="combobox" を持つ要素が、空でないアクセシブルな名前を公開しているかを確認します。',comboboxNamePresent_summary_fail:"このコンボボックスにはアクセシブルな名前がありません。",comboboxNamePresent_hint_fail:"aria-label、aria-labelledby、または title 属性を指定してください。表示されているテキストの内容は、このコンボボックスのアクセシブルな名前にはなりません。",dialogNamePresent_title:"ダイアログにアクセシブルな名前があること",dialogNamePresent_description:'ダイアログ (role="dialog" または role="alertdialog" を持つ要素、およびネイティブの <dialog> 要素) が、空でないアクセシブルな名前を公開しているかを確認します。',dialogNamePresent_summary_fail:"このダイアログにはアクセシブルな名前がありません。",dialogNamePresent_hint_fail:"支援技術がダイアログを読み上げられるよう、aria-labelledby (推奨) または aria-label を指定してください。",menuitemNamePresent_title:"メニュー項目にアクセシブルな名前があること",menuitemNamePresent_description:'メニュー項目 (チェックボックス型やラジオ型を含む role="menuitem*") が、空でないアクセシブルな名前を公開しているかを確認します。',menuitemNamePresent_summary_fail:"このメニュー項目にはアクセシブルな名前がありません。",menuitemNamePresent_hint_fail:"支援技術から隠されていないテキストを表示するか、aria-label または aria-labelledby を指定してください。",tabNamePresent_title:"タブにアクセシブルな名前があること",tabNamePresent_description:'role="tab" を持つ要素が、空でないアクセシブルな名前を公開しているかを確認します。',tabNamePresent_summary_fail:"このタブにはアクセシブルな名前がありません。",tabNamePresent_hint_fail:"支援技術から隠されていないタブのテキストを用意するか、aria-label または aria-labelledby を指定してください。",sliderNamePresent_title:"スライダーにアクセシブルな名前があること",sliderNamePresent_description:'スライダー (input[type="range"] および role="slider") が、空でないアクセシブルな名前を公開しているかを確認します。',sliderNamePresent_summary_fail:"このスライダーにはアクセシブルな名前がありません。",sliderNamePresent_hint_fail:"支援技術がスライダーを識別できるよう、label、aria-label、または aria-labelledby を指定してください。",textboxNamePresent_title:"テキストボックスにアクセシブルな名前があること",textboxNamePresent_description:'role="textbox" を持つ要素が、空でないアクセシブルな名前を公開しているかを確認します。',textboxNamePresent_summary_fail:"このテキストボックスにはアクセシブルな名前がありません。",textboxNamePresent_hint_fail:"aria-label、aria-labelledby、または title 属性を指定してください。表示されているテキストの内容は、このテキストボックスのアクセシブルな名前にはなりません。",searchboxNamePresent_title:"検索ボックスにアクセシブルな名前があること",searchboxNamePresent_description:'role="searchbox" を持つ要素が、空でないアクセシブルな名前を公開しているかを確認します。',searchboxNamePresent_summary_fail:"この検索ボックスにはアクセシブルな名前がありません。",searchboxNamePresent_hint_fail:"aria-label、aria-labelledby、または title 属性を指定してください。表示されているテキストの内容は、この検索ボックスのアクセシブルな名前にはなりません。",spinbuttonNamePresent_title:"スピンボタンにアクセシブルな名前があること",spinbuttonNamePresent_description:'role="spinbutton" を持つ要素が、空でないアクセシブルな名前を公開しているかを確認します。',spinbuttonNamePresent_summary_fail:"このスピンボタンにはアクセシブルな名前がありません。",spinbuttonNamePresent_hint_fail:"aria-label、aria-labelledby、または title 属性を指定してください。表示されているテキストの内容は、このスピンボタンのアクセシブルな名前にはなりません。",listboxNamePresent_title:"リストボックスにアクセシブルな名前があること",listboxNamePresent_description:'role="listbox" を持つ要素が、空でないアクセシブルな名前を公開しているかを確認します。',listboxNamePresent_summary_fail:"このリストボックスにはアクセシブルな名前がありません。",listboxNamePresent_hint_fail:"aria-label、aria-labelledby、または title 属性を指定してください。表示されているテキストの内容は、このリストボックスのアクセシブルな名前にはなりません。",optionNamePresent_title:"選択肢 (option) にアクセシブルな名前があること",optionNamePresent_description:'role="option" を持つ要素が、空でないアクセシブルな名前を公開しているかを確認します。',optionNamePresent_summary_fail:"この選択肢にはアクセシブルな名前がありません。",optionNamePresent_hint_fail:"支援技術から隠されていない選択肢のテキストを用意するか、aria-label または aria-labelledby を指定してください。",treeitemNamePresent_title:"ツリー項目にアクセシブルな名前があること",treeitemNamePresent_description:'role="treeitem" を持つ要素が、空でないアクセシブルな名前を公開しているかを確認します。',treeitemNamePresent_summary_fail:"このツリー項目にはアクセシブルな名前がありません。",treeitemNamePresent_hint_fail:"支援技術から隠されていないツリー項目のテキストを用意するか、aria-label または aria-labelledby を指定してください。",ariaRoleNamePresent_title:"アクセシブルな名前を必要とする ARIA ロールに名前があること",ariaRoleNamePresent_description:"WAI-ARIA がアクセシブルな名前を必須としているロールで、空でない名前が公開されているかを確認します。",ariaRoleNamePresent_summary_fail:"この要素にはアクセシブルな名前がありません。",ariaRoleNamePresent_hint_fail:"aria-label または aria-labelledby (推奨)、あるいは空でない title 属性を指定してください。",composite_rollup_summary:"複合ルールの結果: {{reasonCode}} ({{testCount}} 件のチェック)","catalog.rules.wcag_111_non_text_content.title":"非テキストコンテンツ: テキストによる代替","catalog.rules.wcag_111_non_text_content.description":"非テキストコンテンツに適切なテキストによる代替があるかを確認するチェックの集約です。","catalog.rules.wcag_121_prerecorded_transcript.title":"音声のみ及び映像のみ (収録済): トランスクリプト","catalog.rules.wcag_121_prerecorded_transcript.description":"収録済みの音声のみまたは映像のみのメディアに、トランスクリプトが用意されているかを確認するチェックの集約です。","catalog.rules.wcag_122_captions_prerecorded.title":"キャプション (収録済)","catalog.rules.wcag_122_captions_prerecorded.description":"収録済みの動画にキャプションのトラックがあるかを確認するチェックの集約です。","catalog.rules.wcag_131_info_and_relationships.title":"情報及び関係性","catalog.rules.wcag_131_info_and_relationships.description":"表現によって伝えられる情報、構造、関係性が、プログラムで解釈できるかを確認するチェックの集約です。","catalog.rules.wcag_141_use_of_color.title":"色の使用","catalog.rules.wcag_141_use_of_color.description":"色が情報を伝える唯一の視覚的手段になっていないかを確認するチェックの集約です。","catalog.rules.wcag_142_audio_control.title":"音声の制御","catalog.rules.wcag_142_audio_control.description":"自動再生される音声に、一時停止/停止または音量調節の仕組みがあるかを確認するチェックの集約です。","catalog.rules.wcag_143_contrast_minimum.title":"コントラスト (最低限)","catalog.rules.wcag_143_contrast_minimum.description":"テキストの最低限のコントラストを確認するチェックの集約です。","catalog.rules.wcag_146_contrast_enhanced.title":"コントラスト (高度)","catalog.rules.wcag_146_contrast_enhanced.description":"テキストの高度なコントラストを確認するチェックの集約です。","catalog.rules.wcag_211_keyboard.title":"キーボード","catalog.rules.wcag_211_keyboard.description":"機能がキーボードインタフェースで操作できるかを確認するチェックの集約です。","catalog.rules.wcag_213_keyboard_no_exception.title":"キーボード (例外なし)","catalog.rules.wcag_213_keyboard_no_exception.description":"機能が例外なくキーボードインタフェースで操作できるかを確認するチェックの集約です (AAA)。","catalog.rules.wcag_222_pause_stop_hide.title":"一時停止、停止、非表示","catalog.rules.wcag_222_pause_stop_hide.description":"動きのあるコンテンツ、点滅するコンテンツ、自動でスクロールするコンテンツを、一時停止、停止、非表示にできるかを確認するチェックの集約です。","catalog.rules.wcag_241_bypass_blocks.title":"ブロックスキップ","catalog.rules.wcag_241_bypass_blocks.description":"繰り返されるコンテンツのブロックをスキップする手段がページにあるかを確認するチェックの集約です。","catalog.rules.wcag_242_page_titled.title":"ページタイトル","catalog.rules.wcag_242_page_titled.description":"文書に意味のあるページタイトルがあるかを確認するチェックの集約です。","catalog.rules.wcag_243_focus_order.title":"フォーカス順序","catalog.rules.wcag_243_focus_order.description":"フォーカスが意味のある順序でコンテンツ内を移動するかを確認するチェックの集約です。","catalog.rules.wcag_244_link_purpose_in_context.title":"リンクの目的 (コンテキスト内)","catalog.rules.wcag_244_link_purpose_in_context.description":"アクセシブルな名前がないリンク、またはテキストだけを見ると説明的でない汎用的な語句として知られているリンクを検出するチェックの集約です。","catalog.rules.wcag_246_headings_and_labels.title":"見出し及びラベル","catalog.rules.wcag_246_headings_and_labels.description":"テキストが後続のコンテンツの説明ではなく仮の文字列になっている見出しを検出するチェックの集約です。","catalog.rules.wcag_247_focus_visible.title":"フォーカスの可視化","catalog.rules.wcag_247_focus_visible.description":"キーボードフォーカスが隠れず、知覚可能であり続けるかを確認するチェックの集約です。","catalog.rules.wcag_249_link_purpose_link_only.title":"リンクの目的 (リンクのみ)","catalog.rules.wcag_249_link_purpose_link_only.description":"同じアクセシブルな名前を持つリンクが同じ目的を果たしているかを確認するチェックの集約です (AAA)。","catalog.rules.wcag_253_label_in_name.title":"ラベルを含む名前 (name)","catalog.rules.wcag_253_label_in_name.description":"コントロールに表示テキストのラベルがある場合に、アクセシブルな名前にそのラベルのテキストが含まれているかを確認するチェックの集約です。","catalog.rules.wcag_258_target_size_minimum.title":"ターゲットのサイズ (最低限)","catalog.rules.wcag_258_target_size_minimum.description":"ポインターのターゲットが最小サイズの要件を満たしているかを確認するチェックの集約です。","catalog.rules.wcag_311_language_of_page.title":"ページの言語","catalog.rules.wcag_311_language_of_page.description":"ページの言語が指定されているかを確認するチェックの集約です。","catalog.rules.wcag_312_language_of_parts.title":"一部分の言語","catalog.rules.wcag_312_language_of_parts.description":"ページの既定の言語と異なる言語の要素で、その言語が正しく指定されているかを確認するチェックの集約です。","catalog.rules.wcag_134_orientation.title":"表示の向き","catalog.rules.wcag_134_orientation.description":"コンテンツの表示が、1 つの表示の向きに制限されていないかを確認するチェックの集約です。","catalog.rules.wcag_135_identify_input_purpose.title":"入力目的の特定","catalog.rules.wcag_135_identify_input_purpose.description":"autocomplete 属性が入力の目的を正しく特定しているかを確認するチェックの集約です。","catalog.rules.wcag_1412_text_spacing.title":"テキストの間隔","catalog.rules.wcag_1412_text_spacing.description":"内容を失わずにテキストの間隔を広げられることを確認するチェックの集約です。","catalog.rules.wcag_224_interruptions.title":"割り込み","catalog.rules.wcag_224_interruptions.description":"自動的なコンテキストの変化が、利用者の要求があったときにのみ起こるかを確認するチェックの集約です (AAA)。","catalog.rules.wcag_325_change_on_request.title":"要求による変化","catalog.rules.wcag_325_change_on_request.description":"コンテキストの変化が、利用者の要求があったときにのみ起こるかを確認するチェックの集約です (AAA)。","catalog.rules.wcag_411_parsing.title":"構文解析","catalog.rules.wcag_411_parsing.description":"id の値が一意であるかを確認するチェックの集約です。WCAG 2.0/2.1 のみが対象です。達成基準 4.1.1 は WCAG 2.2 で削除されたため、この集約には wcag22-removed タグが付いています。","catalog.rules.wcag_412_name.title":"名前 (name)・役割 (role) 及び値 (value): アクセシブルな名前","catalog.rules.wcag_412_name.description":"よく使われるインタラクティブな要素が、空でないアクセシブルな名前を公開しているかを確認するチェックの集約です。","catalog.rules.wcag_412_aria_validity.title":"名前 (name)・役割 (role) 及び値 (value): ARIA の妥当性","catalog.rules.wcag_412_aria_validity.description":"ARIA のロールと属性の使い方が WAI-ARIA 仕様に適合しているか (有効なロール、有効な属性、有効な値、必須の属性、ARIA から参照される id の一意性) を確認するチェックの集約です。","catalog.rules.wcag_144_resize_text.title":"テキストのサイズ変更","catalog.rules.wcag_144_resize_text.description":"viewport の meta タグが、利用者によるテキストの 200% までの拡大を妨げていないかを確認するチェックの集約です。","catalog.rules.wcag_221_timing_adjustable.title":"タイミング調整可能","catalog.rules.wcag_221_timing_adjustable.description":"利用者が制御できない時間指定の再読み込みを、ページが強制していないかを確認するチェックの集約です。","catalog.rules.wcag_332_labels_or_instructions.title":"ラベル又は説明","catalog.rules.wcag_332_labels_or_instructions.description":"フォームコントロールに、あいまいさのないラベルが付いているかを確認するチェックの集約です。","catalog.rules.wcag_338_accessible_authentication_minimum.title":"認証のアクセシビリティ (最低限)","catalog.rules.wcag_338_accessible_authentication_minimum.description":"認証の手順で、利用者を支援する仕組みが使える状態に保たれているかを確認するチェックの集約です。",labelInName_title:"ラベルを含む名前 (name): アクセシブルな名前に表示テキストが含まれていること",labelInName_description:"コントロールに表示テキストのラベルがある場合に、アクセシブルな名前にそのラベルのテキストが含まれているかを確認します (WCAG 2.5.3)。",labelInName_summary_fail:"{{element}}: 表示ラベル「{{visibleLabel}}」(取得元: {{labelSource}}) が、アクセシブルな名前 (取得元: {{nameMechanism}}) に含まれていません。",labelInName_hint_fail:"アクセシブルな名前に表示ラベルの文言が含まれるよう、aria-label/aria-labelledby (または表示ラベルのテキスト) を修正してください。",labelInName_summary_cantTell:"{{element}}: 表示ラベル「{{visibleLabel}}」(取得元: {{labelSource}}) とアクセシブルな名前 (取得元: {{nameMechanism}}) の違いは、略語またはハイフネーションだけです。",labelInName_hint_cantTell:"2 つの文言が一致しているとみなせるか、人の目で確認してください。意図した略語なのか不一致なのかは、マークアップからは判断できません。",labelInName_summary_cantTell_symbolic:"{{element}}: 表示ラベル「{{visibleLabel}}」(取得元: {{labelSource}}) は、文字としてではなくアイコンや記号として表示されている可能性があります。その場合、アクセシブルな名前 (取得元: {{nameMechanism}}) に含める必要はありません。",labelInName_hint_cantTell_symbolic:"人の目で確認してください。表示テキストがアイコンや記号として描画されているなら問題ではありません。文字として表示されているなら、その文言を含むようにアクセシブルな名前を修正してください。",ariaRolesValid_title:"role 属性は有効で抽象ロールでない ARIA ロールであること",ariaRolesValid_description:'明示的な role="" 属性が、実在する抽象ロールでない WAI-ARIA ロールとして解決されるかを確認します。',ariaRolesValid_summary_invalid:'role="{{role}}" は認識されない ARIA ロールです。',ariaRolesValid_hint_invalid:"有効な ARIA ロールのトークンを使用してください。該当するものがなければ role 属性を削除してください。",ariaRolesValid_summary_abstract:'role="{{role}}" は抽象 ARIA ロールであり、直接使用してはなりません。',ariaRolesValid_hint_abstract:"この抽象ロールを、ウィジェットや構造に適した具体的なロールに置き換えてください。",ariaRolesValid_summary_cantTell:'role 属性の値が使用できないため、この要素は引き続きネイティブのロール role="{{nativeRole}}" として公開されています。',ariaRolesValid_hint_cantTell:"role のトークンを修正または削除してください。それまでの間、支援技術はネイティブのロールを使用しています。",ariaDeprecatedRole_title:"role 属性には、非推奨のロールや作成者による使用が推奨されない ARIA ロールを使わないことが望ましい",ariaDeprecatedRole_description:'明示的な role="" 属性が、WAI-ARIA 仕様で非推奨とされたロールや、ユーザエージェントの内部利用のために予約されたロール (role="generic" など) を使用していないかを確認します。',ariaDeprecatedRole_summary_fail:'この要素は role="{{role}}" を使用していますが、このロールは作成者が明示的に宣言してはなりません。',ariaDeprecatedRole_summary_cantTell:'この要素は role="{{role}}" を使用しています。このロールは WAI-ARIA で非推奨です (現在も有効ですが、使用は推奨されません)。',ariaDeprecatedRole_summary_cantTell_discouraged:'この要素は role="{{role}}" を使用しています。このロールはユーザエージェント用に予約されています (現在も有効ですが、使用は推奨されません)。',ariaDeprecatedRole_guidance_directory:'role="list" (推奨される代替ロール) に置き換えてください。',ariaDeprecatedRole_guidance_generic:'削除してください。このロールは作成者向けではなく、ユーザエージェントの内部利用のために予約されています。セマンティクスを取り除くなら role="presentation"/"none"、グループ化を伝えるなら "group" などのセマンティックなロールを使用するか、何も指定しない要素 (暗黙的に generic ロールを持ちます) を使用してください。',ariaDeprecatedRole_guidance_default:"非推奨のロールを、推奨される代替ロールに置き換えてください。",ariaValidAttr_title:"aria-* 属性は ARIA で定義された実在の属性であること",ariaValidAttr_description:"DOM 内に存在するすべての aria-* 属性名が、WAI-ARIA 仕様で定義された実在の属性であるかを確認します。",ariaValidAttr_summary_fail:"{{attr}} は認識されない ARIA 属性です。",ariaValidAttr_hint_fail:"属性名を修正する (綴りの誤りがないか確認する) か、不要であれば削除してください。",ariaValidAttrValue_title:"aria-* 属性の値は宣言された型に一致すること",ariaValidAttrValue_description:"認識されるすべての aria-* 属性の値が、WAI-ARIA で宣言された値の型 (boolean、tristate、token、integer、number、ID 参照) に適合しているかを確認します。",ariaValidAttrValue_summary_fail:'{{attr}}="{{value}}" は、この属性の値として有効ではありません。',ariaValidAttrValue_hint_fail:"属性が想定する型に合った値を使用してください (この属性については WAI-ARIA 仕様を参照してください)。",ariaValidAttrValue_summary_cantTell_idref:'{{attr}}="{{value}}" は、現時点でどの要素も持っていない id を参照しているため、静的にはこの参照を確認できません。',ariaValidAttrValue_hint_cantTell_idref:"ウィジェットを開いたときに、制御対象の要素が生成されるか確認してください。その要素が存在しない場合は、参照を削除または修正してください。",ariaValidAttrValue_hint_cantTell_idrefList:"この id を持つ要素が後から追加されるか確認してください。追加されない場合は、参照を修正または削除してください。それまでは、要素はほかの名前や説明のソースを使用します。",ariaAllowedAttr_title:"aria-* 属性は要素のロールで許可されていること",ariaAllowedAttr_description:"明示的なロールを持つ要素にある、認識されるすべての aria-* 属性が、グローバルにサポートされているか、そのロールでサポートされているかを確認します。",ariaAllowedAttr_summary_fail:'{{attr}} は role="{{role}}" では許可されていません。',ariaAllowedAttr_hint_fail:"この属性を削除するか、この属性をサポートするロールを使用してください。",ariaAllowedAttr_summary_fail_roleless:"<{{element}}> には ARIA ロールがないため、この要素の {{attr}} 属性はどのロールにもサポートされません。",ariaAllowedAttr_hint_fail_roleless:"{{attr}} を削除するか、この属性をサポートするロールを持つ要素に移動してください。ロールのない要素に指定されたロール固有の ARIA 属性は、支援技術に無視されます。",ariaAllowedAttr_summary_cantTell:'{{attr}} は role="{{role}}" では非推奨です (現在も許可されていますが、使用は推奨されません)。',ariaAllowedAttr_hint_cantTell:"この属性は ARIA 1.2 でグローバル属性から外されました。将来の ARIA のバージョンで禁止される可能性があるため、削除するか、この属性をサポートするロールを使用してください。",ariaProhibitedAttr_title:"名前付けを禁止しているロールに ARIA の名前付け属性を使用してはならない",ariaProhibitedAttr_description:"仕様で ARIA による名前付けが明示的に禁止されている WAI-ARIA ロール (generic、emphasis、strong、paragraph など) に、aria-label/aria-labelledby が指定されていないかを確認します。",ariaProhibitedAttr_summary_fail:'{{attr}} は role="{{role}}" では禁止されています。',ariaProhibitedAttr_hint_fail:"この属性を削除してください。このロールはアクセシブルな名前を持つことができません。",ariaProhibitedAttr_summary_fail_roleless:"この {{element}} にはロールもほかのアクセシブルな名前の取得元もないため、{{attr}} は支援技術に確実には公開されません。",ariaProhibitedAttr_hint_fail_roleless:'この要素に、アクセシブルな名前をサポートするロール (role="img"/"button" など) を指定してください。ロールがなければ役に立たない属性であれば、削除してください。',ariaProhibitedAttr_summary_cantTell_roleless:"この {{element}} にはロールがないため、{{attr}} が支援技術によってアクセシブルな名前として公開されない可能性があります。ただし、要素自身のコンテンツがすでに名前を提供しています。",ariaProhibitedAttr_hint_cantTell_roleless:'既存のテキストがこの要素のラベルとして機能しているか確認してください。機能しているなら名前付け属性は冗長です。そうでない場合は、名前付けをサポートするロール (role="img" など) を要素に指定してください。',ariaRequiredAttr_title:"必須の ARIA ステート/プロパティを持つロールには、それを指定すること",ariaRequiredAttr_description:'明示的なロールを持つ要素に、そのロールで必須とされる aria-* ステート/プロパティのうち、あいまいさがなく文脈に依存しないものがすべて指定されているかを確認します (例: role="checkbox" には aria-checked が必要)。',ariaRequiredAttr_summary_fail:'role="{{role}}" には {{attr}} が必須ですが、指定されていません。',ariaRequiredAttr_hint_fail:"このロールに有効な値で、この属性を追加してください。",ariaRequiredAttr_summary_cantTell:'この属性は role="{{role}}" に必須ですが指定されていないため、ARIA の既定値「{{implicit}}」が使われます。',ariaRequiredAttr_hint_cantTell:"意図した状態が「{{implicit}}」でない場合は、{{attr}} を明示的に指定してください。",ariaAllowedRole_title:"明示的なロールはホスト要素で許可されていること",ariaAllowedRole_description:'明示的な role="" 属性が、ARIA in HTML 仕様でそのホスト要素に許可されているロールのいずれかであるかを確認します (例: <nav> に role="tab" は許可されていません)。',ariaAllowedRole_summary_fail:'role="{{role}}" は <{{element}}> では許可されていません。',ariaAllowedRole_hint_fail:"この要素で許可されているロールを使用するか、ホスト要素を変更してください。",ariaRequiredChildren_title:"コンテナーロールは必須の子ロールを少なくとも 1 つ所有していること",ariaRequiredChildren_description:"「必須の所有要素」が定められているコンテナーロール (list、listbox、menu、radiogroup、table、grid、tablist、tree、row など) に、許容される所有ロールを持つ子孫要素または aria-owns で参照される要素が少なくとも 1 つあるかを確認します。",ariaRequiredChildren_summary_fail:'role="{{role}}" は、必須のロール ({{requiredRoles}}) のいずれかを持つ子を所有していません。',ariaRequiredChildren_hint_fail:"必須の所有ロールのいずれかを持つ子孫要素 (または aria-owns で参照される要素) を追加してください。",ariaProhibitedChildren_title:"コンテナーロールは許可されていないロールの子を所有してはならない",ariaProhibitedChildren_description:"コンテナーロール (list、listbox、menu、menubar、radiogroup、rowgroup、table、grid、treegrid、tablist、tree、row) がアクセシビリティツリー上で所有するすべての子が、そのロールで許可された所有ロールのいずれかを持っているかを確認します。",ariaProhibitedChildren_summary_fail:'この要素は role="{{childRole}}" を持っていますが、これは外側の role="{{containerRole}}" コンテナーの子として許可された所有ロールではありません。',ariaProhibitedChildren_hint_fail:"このロールを削除するか、コンテナーで許可された所有ロール ({{allowedRoles}}) のいずれかに変更してください。または、この要素を {{containerRole}} コンテナーの外に移動してください。",ariaProhibitedChildren_summary_fail_roleless:'この要素には明示的なロールがありませんが、{{attr}} を持つためアクセシビリティツリー上の実際のノードになっています。このノードは、外側の role="{{containerRole}}" コンテナーの子として許可されていません。',ariaProhibitedChildren_hint_fail_roleless:'{{attr}} を削除する (または role="{{containerRole}}" コンテナーによる所有をやめる) か、この要素を独立したアクセシビリティツリーのノードにする意図がない場合は role="presentation"/"none" を指定してください。',ariaProhibitedChildren_summary_fail_native_focusable:'この要素には明示的なロールがありませんが、ネイティブでフォーカス可能なためアクセシビリティツリー上の実際のノードになっています。このノードは、外側の role="{{containerRole}}" コンテナーの子として許可されていません。',ariaProhibitedChildren_hint_fail_native_focusable:'この要素に role="presentation"/"none" を指定する、ネイティブのフォーカス可能性を取り除く (href や tabindex を与える属性を削除するなど)、または {{containerRole}} コンテナーの外に移動するのいずれかを行ってください。',ariaRequiredParent_title:"特定のコンテキストロールを必要とするロールは、そのコンテキスト内にあること",ariaRequiredParent_description:"「必須のコンテキストロール」が定められているロール (listitem、option、tab、treeitem、row、cell など) に、許容されるコンテキストロールを持つ祖先要素または aria-owns による所有者があるかを確認します。",ariaRequiredParent_summary_fail:'role="{{role}}" に必要なコンテキストロール ({{requiredRoles}} のいずれか) が見つかりませんでした。',ariaRequiredParent_hint_fail:"この要素を、許容されるコンテキストロールを持つ要素の中に配置する (またはその要素から aria-owns で参照する) ようにしてください。",deprecatedElements_title:"スクロールする <marquee> のコンテンツは、一時停止、停止、非表示にできなければならない",deprecatedElements_description:"廃止された <marquee> 要素ごとに、要素自体にはその手段がないため、自動スクロールするコンテンツを一時停止、停止、非表示にする手段をページが提供しているかを確認します。",deprecatedElements_summary_cantTell:"この <{{element}}> はコンテンツをスクロールさせますが、要素自体には利用者がそれを一時停止、停止、非表示にする手段がありません。",deprecatedElements_hint_cantTell:"このコンテンツを一時停止、停止、非表示にするコントロールがページにあるかを確認してください。より良い方法: 静的なコンテンツか、一時停止/停止のコントロールを備えたアニメーションに置き換えてください。",iframeNamePresent_title:"フレームにアクセシブルな名前があること",iframeNamePresent_description:"<iframe>/<frame> 要素が、aria-label、aria-labelledby、または title 属性によって空でないアクセシブルな名前を公開しているかを確認します。",iframeNamePresent_summary_fail:"この <{{element}}> にはアクセシブルな名前がありません。",iframeNamePresent_hint_fail:"フレームの内容や目的を説明する title 属性 (または aria-label/aria-labelledby) を追加してください。",iframeTitleUnique_title:"フレームのタイトルの一意性(非推奨)",iframeTitleUnique_description:"バージョン 1.8.0 で非推奨となり、このルールは常に notApplicable を返します。同じ名前のフレームが同じリソースを埋め込んでいるかは、identical-iframes-same-purpose が確認します。",identicalIframesSamePurpose_title:"同じ名前のフレームが同じリソースを埋め込んでいること",identicalIframesSamePurpose_description:"1 つの名前で説明できるのは 1 つのリソースだけなので、同じアクセシブルな名前を持つ <iframe>/<frame> 要素が同じリソースを埋め込んでいるかを確認します。",identicalIframesSamePurpose_summary_cantTell:"この <{{element}}> は、別のリソースを埋め込んでいる別のフレームと同じ名前「{{name}}」を持っています。",identicalIframesSamePurpose_hint_cantTell:"各フレームに、埋め込んでいるリソースを説明する名前を付けるか、同じリソースを参照するようにしてください。",iframeFocusableContent_title:'tabindex="-1" のフレームはフォーカス可能なコンテンツを含んではならない',iframeFocusableContent_description:'ブラウザーは tabindex="-1" の制限をフレーム内の文書には適用しないため、tabindex="-1" を持つ同一オリジンの <iframe>/<frame> 要素がフォーカス可能なコンテンツを含んでいないかを確認します。',iframeFocusableContent_summary_fail:'この <{{element}}> には tabindex="-1" が指定されていますが、内部にフォーカス可能な要素があり、キーボードで到達できてしまいます。',iframeFocusableContent_hint_fail:'フレームからフォーカス可能なコンテンツを取り除くか、フレームに到達できるようにする意図であれば tabindex="-1" を削除してください。',iframeFocusableContent_summary_cantTell_redirect:'この <{{element}}> には tabindex="-1" とフォーカス可能なコンテンツがありますが、フォーカスはすぐに別の対象へ移動します。実際のブラウザーで、キーボードで到達できるか確認してください。',iframeFocusableContent_hint_cantTell_redirect:"意図的なフォーカスの受け渡しである場合は、キーボード利用者が隠れたフレームのコンテンツや中間のコンテンツにとどまれないようにしてください。",tableHeadersAttrValid_title:"表のセルの headers 属性は有効な見出しセルを参照すること",tableHeadersAttrValid_description:"<td>/<th> の headers 属性にある各 id が、同じ表の中のセル (<td> または <th>) を指しているかを確認します (存在しない id、セル以外の要素、自分自身を指していないか)。",tableHeadersAttrValid_summary_fail:"この <{{element}}> の headers 属性は、無効な見出しセルを参照しています: {{invalidIds}}。",tableHeadersAttrValid_hint_fail:"すべての id が同じ表の中の <th> 要素を指すように、headers 属性を修正してください。",tableThHasDataCells_title:"<th> 要素は少なくとも 1 つのデータセルを説明していること",tableThHasDataCells_description:"<th> 要素を含む表に、それらの見出しが説明する <td> データセルが少なくとも 1 つあるかを確認します。",tableThHasDataCells_summary_fail:"この表には見出しセルがありますが、見出しが説明するデータセルがありません。",tableThHasDataCells_hint_fail:"表にデータセル (<td>) を追加するか、表にデータがない場合は見出しセルを削除してください。",ariaHiddenBody_title:"文書の <body> に aria-hidden を指定してはならない",ariaHiddenBody_description:'<body> に aria-hidden="true" が指定されていないかを確認します。指定されているとページ全体がアクセシビリティツリーから取り除かれます。',ariaHiddenBody_summary_fail:'文書の body に aria-hidden="true" が指定されているため、ページ全体が支援技術から隠されています。',ariaHiddenBody_hint_fail:"<body> から aria-hidden を削除してください。特定の要素を隠す意図だった場合は、その要素に指定してください。",listChildrenValid_title:"リストの直接の子はリスト項目のみであること",listChildrenValid_description:"<ul>/<ol> 要素の直接の子が <li>、<script>、<template> のみであるかを確認します。",listChildrenValid_summary_fail:"この <{{element}}> には、リスト項目でない直接の子があります: {{invalidChildren}}。",listChildrenValid_hint_fail:"<ul>/<ol> の直接の子には <li> (または <script>/<template>) のみを使用し、それ以外のマークアップは <li> の中に移動してください。",listitemParentValid_title:"リスト項目はリストのコンテナー内にあること",listitemParentValid_description:'<li> 要素が、<ul>、<ol>、<menu>、または role="list" を持つ要素に含まれているかを確認します。',listitemParentValid_summary_fail:"このリスト項目の親 (<{{parentElement}}>) はリストのコンテナーではありません。",listitemParentValid_hint_fail:'この <li> を <ul>/<ol> の中に配置するか、親要素に role="list" を指定してください。',definitionListChildrenValid_title:"記述リストは正しく構造化されていること",definitionListChildrenValid_description:"<dl> 要素の直接の子が、<dt>/<dd> のグループ (1 つの <div> で囲むことも可)、<script>、<template>、<style> のみであるかを確認します。",definitionListChildrenValid_summary_fail_invalidChild:"この記述リストには、dt/dd のグループに属さない直接の子 (または <div> で囲まれた子) があります: {{invalidChildren}}。",definitionListChildrenValid_hint_fail_invalidChild:"<dl> の中では、<dt>/<dd> (1 つの <div> で囲むことも可)、<script>、<template>、<style> のみを使用してください。",definitionListChildrenValid_summary_fail_noDtDd:"この記述リストには、用語と説明の <dt>/<dd> グループがありません。",definitionListChildrenValid_hint_fail_noDtDd:"この <dl> の中に、<dt>/<dd> の組を少なくとも 1 つ追加してください。",definitionListChildrenValid_summary_fail_order:"この記述リストでは、<dd> がどの <dt> よりも前にあるか、最後の <dt> の後に <dd> がありません。",definitionListChildrenValid_hint_fail_order:"各グループを、1 つ以上の <dt> の後に 1 つ以上の <dd> が続く順序にしてください。",dlitemParentValid_title:"記述リストの項目は記述リスト内にあること",dlitemParentValid_description:"<dt>/<dd> 要素が、直接または 1 つの <div> を介して <dl> に含まれているかを確認します。",dlitemParentValid_summary_fail:"この <{{element}}> の親 (<{{parentElement}}>) は記述リストではありません。",dlitemParentValid_hint_fail:"この <dt>/<dd> を、直接または 1 つの <div> で囲んで <dl> の中に配置してください。",duplicateId_title:"ID は一意であること",duplicateId_description:"空でない id 属性の値が、それぞれの文書またはシャドウツリー内で一意であるかを確認します (WCAG 2.0/2.1 の達成基準 4.1.1。WCAG 2.2 では削除されています)。",duplicateId_summary_fail:"id「{{id}}」が、同じツリー内の {{count}} 個の要素で使われています。",duplicateId_hint_fail:"要素ごとに固有の id を付けてください。id が重複すると、<label for>、フラグメントリンク、getElementById、ID を参照するすべての属性が、最初に一致した要素しか参照しなくなり、正しく機能しません。",duplicateIdAria_title:"ARIA から参照される ID は一意であること",duplicateIdAria_description:"ARIA の ID 参照属性 (aria-labelledby、aria-describedby、aria-owns、aria-controls、aria-activedescendant、aria-flowto、aria-errormessage、aria-details) から参照される id の値が、文書内で一意であるかを確認します。",duplicateIdAria_summary_cantTell:"id「{{id}}」は ARIA 属性から参照されていますが、{{duplicateCount}} 個の要素で使われています。参照先は最初の要素になります。",duplicateIdAria_hint_cantTell:"この id を持つ最初の要素が意図した参照先であるか確認するか、文書内で id を一意にしてください。",summaryNamePresent_title:"summary 要素にアクセシブルな名前があること",summaryNamePresent_description:"<summary> 要素が空でないアクセシブルな名前を公開しているかを確認します。",summaryNamePresent_summary_fail:"この summary にはアクセシブルな名前がありません。",summaryNamePresent_hint_fail:"支援技術から隠されていない summary のテキストを用意するか、aria-label または aria-labelledby を指定してください。",metaViewportZoomEnabled_title:"viewport の meta タグでズームを無効にしてはならない",metaViewportZoomEnabled_description:'<meta name="viewport"> で user-scalable=no や 2 (200%) 未満の maximum-scale が指定されていないかを確認します。',metaViewportZoomEnabled_summary_fail:"この viewport の meta タグは、利用者によるズームを制限しています ({{reasons}})。",metaViewportZoomEnabled_hint_fail:"viewport の meta の content から、user-scalable=no と 2 未満の maximum-scale を削除してください。",metaRefreshTimingAbsent_title:"ページで時間指定の meta refresh を使用してはならない",metaRefreshTimingAbsent_description:'<meta http-equiv="refresh"> で、20 時間以下の正の遅延が指定されていないかを確認します。',metaRefreshTimingAbsent_summary_fail:"このページは {{delay}} 秒後に自動的に再読み込みされます。",metaRefreshTimingAbsent_hint_fail:"時間指定の meta refresh を削除するか、実行前に利用者がそれを解除、延長、または一時停止できる手段を用意してください。",meterNamePresent_title:"メーターにアクセシブルな名前があること",meterNamePresent_description:'role="meter" を持つ要素が、空でないアクセシブルな名前を公開しているかを確認します。',meterNamePresent_summary_fail:"このメーターにはアクセシブルな名前がありません。",meterNamePresent_hint_fail:"aria-label、aria-labelledby、または title 属性を指定してください。表示されているテキストの内容は、このメーターのアクセシブルな名前にはなりません。",progressbarNamePresent_title:"プログレスバーにアクセシブルな名前があること",progressbarNamePresent_description:'role="progressbar" を持つ要素が、空でないアクセシブルな名前を公開しているかを確認します。',progressbarNamePresent_summary_fail:"このプログレスバーにはアクセシブルな名前がありません。",progressbarNamePresent_hint_fail:"aria-label、aria-labelledby、または title 属性を指定してください。表示されているテキストの内容は、このプログレスバーのアクセシブルな名前にはなりません。",tooltipNamePresent_title:"ツールチップにアクセシブルな名前があること",tooltipNamePresent_description:'role="tooltip" を持つ要素が、空でないアクセシブルな名前を公開しているかを確認します。',tooltipNamePresent_summary_fail:"このツールチップにはアクセシブルな名前がありません。",tooltipNamePresent_hint_fail:"支援技術から隠されていないツールチップのテキストを用意するか、aria-label または aria-labelledby を指定してください。",serverSideImageMapAbsent_title:"サーバーサイドイメージマップには、キーボードで操作できる代替手段がなければならない",serverSideImageMapAbsent_description:"リンク内の <img ismap> ごとに、同じリンク先をキーボードで到達できるリンクとしてページが提供しているかを確認します。サーバーサイドイメージマップ自体には、キーボードで操作できる領域がないためです。",serverSideImageMapAbsent_summary_cantTell:"この画像はサーバーサイドイメージマップ (リンク内の ismap) であり、その領域にはキーボードで到達できません。",serverSideImageMapAbsent_hint_cantTell:"同じリンク先が個別のリンクとしてページにあるか確認してください。より良い方法: サーバーサイドイメージマップを、クライアントサイドイメージマップ (<map>/<area>) か、個別のリンクやボタンに置き換えてください。",formControlSingleLabel_title:"フォームコントロールに複数のラベルがあってはならない",formControlSingleLabel_description:"フォームコントロールに関連付けられた <label> (囲む形式または label[for] による) が 1 つ以下であるかを確認します。",formControlSingleLabel_summary_fail:"この <{{element}}> には {{labelCount}} 個のラベルが関連付けられています。",formControlSingleLabel_hint_fail:"1 つのフォームコントロールにつき <label> は 1 つだけにしてください (コントロールを囲むか、for/id で参照するかのどちらか)。",formControlSingleLabel_summary_cantTell:"この <{{element}}> には、ラベルとして機能する <label> が 1 つあるほかに、空の <label> も関連付けられています。どのように読み上げられるか確認してください。",formControlSingleLabel_hint_cantTell:"コントロールに関連付けられる <label> がちょうど 1 つになるよう、冗長な空の <label> を削除してください。",nestedInteractiveControlsAbsent_title:"インタラクティブなコントロールを入れ子にしてはならない",nestedInteractiveControlsAbsent_description:"インタラクティブなコントロール (リンク、ボタン、フォームコントロール、ARIA のウィジェットロール) が、別のインタラクティブなコントロールを含んでいないかを確認します。",nestedInteractiveControlsAbsent_summary_fail:"この <{{element}}> の中に、入れ子になったインタラクティブなコントロールがあります: {{nestedElements}}。",nestedInteractiveControlsAbsent_hint_fail:"入れ子になったインタラクティブなコントロールを、この要素の外に移動してください。入れ子のインタラクティブなコントロールは、支援技術で確実に操作できません。",presentationalChildrenFocusableAbsent_title:"子要素をプレゼンテーショナルにするロールは、フォーカス可能なコンテンツを含んではならない",presentationalChildrenFocusableAbsent_description:"ロールによって子要素がプレゼンテーショナルになる要素 (button、checkbox、img、option、radio、slider、switch、tab など) に、タブ移動で停止する子孫要素が含まれていないかを確認します。",presentationalChildrenFocusableAbsent_summary_fail:'この role="{{role}}" の要素は子要素をプレゼンテーショナルにしますが、順次フォーカスナビゲーションの対象となるコンテンツを含んでいます ({{focusableElements}})。',presentationalChildrenFocusableAbsent_hint_fail:"フォーカス可能なコンテンツをこの要素の外に移動するか、子要素をプレゼンテーショナルにするロールを削除してください。この要素の中でフォーカスを受けても、読み上げるロールや名前がありません。",bypassBlocksPresent_title:"繰り返されるブロックをスキップする手段がページにあること",bypassBlocksPresent_description:"WCAG 2.4.1 (ブロックスキップ) の手段として認識されるもの (main ランドマーク、機能する同一ページ内アンカーリンク、見出し) が、ページに少なくとも 1 つあるかを確認します。",bypassBlocksPresent_summary_cantTell:"このページでは、繰り返されるコンテンツのブロックをスキップする手段として認識できるものが検出されませんでした。スキップの手段があるか、人による確認が必要です。",bypassBlocksPresent_hint_cantTell:'ページにスキップの手段があるか確認してください。main ランドマーク (<main> または role="main")、機能する「本文へスキップ」リンク、または支援技術が繰り返しコンテンツを飛ばすのに使える見出し要素などです。(モーダルダイアログによってページが inert になっている間など、手段が一時的に隠れている場合や、サイト単位で提供されている場合もあるため、人による確認が必要です。)',landmarkBannerIsTopLevel_title:"banner ランドマークは最上位にあること",landmarkBannerIsTopLevel_description:'banner ランドマーク (role="banner" または入れ子になっていない <header>) が、ほかのランドマーク領域の中に入れ子になっていないかを確認します。',landmarkBannerIsTopLevel_summary_cantTell:"この banner ランドマークは、ほかのランドマーク領域の中に入れ子になっています。",landmarkBannerIsTopLevel_hint_cantTell:'banner ランドマーク (header/role="banner") がほかのランドマークに含まれないよう移動してください。banner はページの最上位の領域にするべきです。',landmarkContentinfoIsTopLevel_title:"contentinfo ランドマークは最上位にあること",landmarkContentinfoIsTopLevel_description:'contentinfo ランドマーク (role="contentinfo" または入れ子になっていない <footer>) が、ほかのランドマーク領域の中に入れ子になっていないかを確認します。',landmarkContentinfoIsTopLevel_summary_cantTell:"この contentinfo ランドマークは、ほかのランドマーク領域の中に入れ子になっています。",landmarkContentinfoIsTopLevel_hint_cantTell:'contentinfo ランドマーク (footer/role="contentinfo") がほかのランドマークに含まれないよう移動してください。contentinfo はページの最上位の領域にするべきです。',landmarkComplementaryIsTopLevel_title:"complementary ランドマークは最上位にあること",landmarkComplementaryIsTopLevel_description:'complementary ランドマーク (role="complementary" または暗黙のロールを保持している <aside>) が、ほかのランドマーク領域の中に入れ子になっていないかを確認します。',landmarkComplementaryIsTopLevel_summary_cantTell:"この complementary ランドマークは、ほかのランドマーク領域の中に入れ子になっています。",landmarkComplementaryIsTopLevel_hint_cantTell:'complementary ランドマーク (<aside>/role="complementary") がほかのランドマークに含まれないよう移動してください。補足的なコンテンツは、ほかの領域の中ではなく、メインコンテンツと並べて配置するものです。',landmarkMainIsTopLevel_title:"main ランドマークは最上位にあること",landmarkMainIsTopLevel_description:'main ランドマーク (role="main" または <main>) が、ほかのランドマーク領域の中に入れ子になっていないかを確認します。',landmarkMainIsTopLevel_summary_cantTell:"この main ランドマークは、ほかのランドマーク領域の中に入れ子になっています。",landmarkMainIsTopLevel_hint_cantTell:'main ランドマーク (<main>/role="main") がほかのランドマークに含まれないよう移動してください。main はページの最上位の領域にするべきです。',landmarkNoDuplicateBanner_title:"ページに banner ランドマークが複数あってはならない",landmarkNoDuplicateBanner_description:'ページ内の banner ランドマーク (role="banner" または入れ子になっていない <header>) が 1 つ以下であるかを確認します。',landmarkNoDuplicateBanner_summary_cantTell:"このページには banner ランドマークが複数あります。",landmarkNoDuplicateBanner_hint_cantTell:'banner ランドマーク (header/role="banner") は 1 ページにつき 1 つだけにしてください。',landmarkNoDuplicateContentinfo_title:"ページに contentinfo ランドマークが複数あってはならない",landmarkNoDuplicateContentinfo_description:'ページ内の contentinfo ランドマーク (role="contentinfo" または入れ子になっていない <footer>) が 1 つ以下であるかを確認します。',landmarkNoDuplicateContentinfo_summary_cantTell:"このページには contentinfo ランドマークが複数あります。",landmarkNoDuplicateContentinfo_hint_cantTell:'contentinfo ランドマーク (footer/role="contentinfo") は 1 ページにつき 1 つだけにしてください。',landmarkNoDuplicateMain_title:"ページに main ランドマークが複数あってはならない",landmarkNoDuplicateMain_description:'ページ内の main ランドマーク (role="main" または <main>) が 1 つ以下であるかを確認します。',landmarkNoDuplicateMain_summary_cantTell:"このページには main ランドマークが複数あります。",landmarkNoDuplicateMain_hint_cantTell:'main ランドマーク (<main>/role="main") は 1 ページにつき 1 つだけにしてください。',landmarkOneMain_title:"ページに main ランドマークがあることが望ましい",landmarkOneMain_description:'ページに main ランドマーク (role="main" または <main>) が少なくとも 1 つあるかを確認します。',landmarkOneMain_summary_cantTell_missing:"このページには main ランドマークがありません。",landmarkOneMain_hint_cantTell_missing:'ページの主要なコンテンツを main ランドマーク (<main> または role="main") で囲んでください。',landmarkUnique_title:"同じロールのランドマークには、それぞれ異なる名前が必要",landmarkUnique_description:"同じロールを持つランドマークが 2 つ以上ある場合に、それぞれに異なるアクセシブルな名前があるかを確認します。",landmarkUnique_summary_cantTell_duplicateName:"この {{role}} ランドマークは、別の {{role}} ランドマークと同じアクセシブルな名前を持っています。",landmarkUnique_summary_cantTell_bothUnnamed:"この {{role}} ランドマークにはアクセシブルな名前がなく、このページには名前のない {{role}} ランドマークがほかにもあります。",landmarkUnique_hint_cantTell:"aria-label または aria-labelledby で、各 {{role}} ランドマークに異なる名前を付けてください。",emptyHeading_title:"見出しを空にしてはならない",emptyHeading_description:'見出し要素 (<h1>〜<h6> または role="heading") に、空でないアクセシブルな名前があるかを確認します。',emptyHeading_summary_cantTell:"この見出しにはアクセシブルな名前がありません。",emptyHeading_hint_cantTell:"この見出しにテキスト (または aria-label/aria-labelledby) を追加するか、不要であれば削除してください。",headingOrder_title:"見出しレベルを飛ばしてはならない",headingOrder_description:"文書の順序において、見出しレベルが一度に 1 つずつしか深くならないかを確認します。",headingOrder_summary_cantTell:"この見出しはレベル {{fromLevel}} からレベル {{toLevel}} に飛んでおり、途中のレベルが抜けています。",headingOrder_hint_cantTell:"文書のアウトラインを予測しやすく保つため、見出しレベルは連続させてください (階層を深くするときにレベルを飛ばさないでください)。",pageHasHeadingOne_title:"ページにレベル 1 の見出しがあることが望ましい",pageHasHeadingOne_description:'ページにレベル 1 の見出し (<h1> または aria-level="1" の role="heading") が少なくとも 1 つあるかを確認します。',pageHasHeadingOne_summary_cantTell:"このページにはレベル 1 の見出しがありません。",pageHasHeadingOne_hint_cantTell:'ページのメインコンテンツを示すレベル 1 の見出し (<h1> または role="heading" aria-level="1") を追加してください。',accesskeys_title:"accesskey の値は一意であること",accesskeys_description:"ページ内で同じ accesskey 属性の値を持つ要素がないかを確認します。",accesskeys_summary_cantTell:"この要素の accesskey は、ページ内の別の要素と重複しています。",accesskeys_hint_cantTell:"ページ全体で accesskey の値がそれぞれ一意になるようにしてください。",scopeAttrValid_title:"scope 属性には有効な値が必要",scopeAttrValid_description:'scope="..." の値が row、col、rowgroup、colgroup のいずれかであるかを確認します。',scopeAttrValid_summary_cantTell:"この scope 属性の値は認識されません。",scopeAttrValid_hint_cantTell:"scope 属性には row、col、rowgroup、colgroup のいずれかを使用してください。",tabindex_title:"tabindex は 0 より大きくしないことが望ましい",tabindex_description:"tabindex の値が正の数ではなく、0 または負の値であるかを確認します。",tabindex_summary_cantTell:"この要素には正の tabindex が指定されており、本来のタブ順序を上書きしています。",tabindex_hint_cantTell:'正の数ではなく tabindex="0" (タブ順序から外す場合は負の値) を使用してください。別のタブ順序が必要な場合は、DOM の順序を修正してください。',emptyTableHeader_title:"表の見出しセルを空にしてはならない",emptyTableHeader_description:'表の見出しセル (<th>、または role="columnheader"/"rowheader" を持つ要素) に、表示されるテキストがあるかを確認します。aria-label/aria-labelledby だけで名前が付けられた見出しも検出します。実際のスクリーンリーダーとブラウザーでは、そのサポートにばらつきがあるためです。',emptyTableHeader_summary_cantTell:"この表の見出しセルにはアクセシブルな名前がありません。",emptyTableHeader_hint_cantTell:"この見出しセルにテキスト (または aria-label/aria-labelledby) を追加するか、不要であれば削除してください。",emptyTableHeader_summary_cantTell_ariaOnly:"この表の見出しセルには表示されるテキストがありません。アクセシブルな名前は aria-label/aria-labelledby からのみ取得されていますが、実際のスクリーンリーダーとブラウザーの組み合わせ (NVDA+Firefox、iOS の VoiceOver+Safari など) では、<th> 要素のこれらの属性が無視されることが知られています。",emptyTableHeader_hint_cantTell_ariaOnly:"この見出しセルに、表示されるテキストを追加してください (aria-label/aria-labelledby と併用しても、置き換えてもかまいません)。検証したスクリーンリーダーすべてで機能が確認されている名前付けの方法は、表示テキストだけです。",labelTitleOnly_title:"フォームコントロールは title を唯一のラベルにしないことが望ましい",labelTitleOnly_description:"title 属性を持つフォームコントロールに、実際のラベル (label 要素、aria-label、または aria-labelledby) もあるかを確認します。",labelTitleOnly_summary_cantTell:"このフォームコントロールは、title 属性を唯一のラベルとしています。",labelTitleOnly_hint_cantTell:"title 属性に加えて、またはその代わりに、表示される <label> (または aria-label/aria-labelledby) を追加してください。",imageRedundantAlt_title:"画像の代替テキストは隣接する表示テキストと重複してはならない",imageRedundantAlt_description:"<img> の代替テキストが、すぐ上の親要素にすでにある表示テキストと同一でないかを確認します。",imageRedundantAlt_summary_cantTell:"この画像の代替テキストは、すぐ隣に表示されているテキストと重複しています。",imageRedundantAlt_hint_cantTell:'テキストに添えられた純粋な装飾画像であれば代替テキストを空 (alt="") にし、そうでなければ冗長な重複を解消してください。',tableDuplicateName_title:"表の caption は summary 属性と重複してはならない",tableDuplicateName_description:"<table> の <caption> のテキストが、(非推奨の) summary 属性と同一でないかを確認します。",tableDuplicateName_summary_cantTell:"この表の caption は summary 属性と重複しています。",tableDuplicateName_hint_cantTell:"冗長な summary 属性を削除するか、caption とは異なる情報を提供するようにしてください。",metaViewportLarge_title:"viewport の meta タグは 500% までのズームを許可することが望ましい",metaViewportLarge_description:'<meta name="viewport"> で user-scalable=no や 5 (500%) 未満の maximum-scale が指定されていないかを確認します。',metaViewportLarge_summary_cantTell:"この viewport の meta タグは、ベストプラクティスの目安である 500% よりも低い倍率にズームを制限しています。",metaViewportLarge_hint_cantTell:"可能であれば user-scalable=no を削除し、maximum-scale を 5 (500%) 以上にしてください。",presentationRoleConflict_title:"プレゼンテーショナルなロールが、グローバル ARIA 属性やフォーカス可能性と矛盾してはならない",presentationRoleConflict_description:'role="presentation"/"none" (<img alt=""> の暗黙の presentation ロールを含む) が、グローバル ARIA 属性 (aria-label、aria-hidden、aria-describedby など) やフォーカス可能性 (tabindex/ネイティブ) と組み合わされていないかを確認します。',presentationRoleConflict_summary_cantTell:'この role="{{role}}" の要素には矛盾する条件 ({{attrs}}) もあるため、暗黙のロールが復元され、プレゼンテーショナルにする意図が打ち消されています。',presentationRoleConflict_hint_cantTell:'要素をプレゼンテーショナルのままにするなら、矛盾する名前付け属性やフォーカス可能性 (tabindex/ネイティブ) を取り除いてください。支援技術に公開するべき要素であれば、role="presentation"/"none" を削除してください。',region_title:"ページのコンテンツはランドマーク領域内にあることが望ましい",region_description:"<body> 以下のコンテンツが、ランドマーク領域に含まれているかを確認します。",region_summary_cantTell:"このコンテンツはランドマーク領域に含まれていません。",region_hint_cantTell:"このコンテンツをランドマーク領域 (main、nav、aside、ラベル付きの section など) の中に移動してください。",skipLink_title:"スキップリンクには解決可能で利用できるリンク先が必要",skipLink_description:"「〜へスキップ」リンクの href のフラグメントが、文書内に実在し、現在利用できる要素を指しているかを確認します。",skipLink_summary_cantTell:"このスキップリンクのリンク先が存在しません。",skipLink_hint_cantTell:"スキップリンクの href が文書内に存在する id を指すようにするか、欠けているリンク先の要素を追加してください。",skipLink_summary_unusableTarget_cantTell:"このスキップリンクのリンク先は存在しますが、現在は利用できない状態です。",skipLink_hint_unusableTarget_cantTell:"このスキップリンクのリンク先を、公開されていてナビゲーションの移動先として利用できる要素にしてください。",autocompleteValid_title:"autocomplete 属性は有効な自動入力の値であること",autocompleteValid_description:'空でない autocomplete 属性の値が "on"/"off"、または正しい形式の自動入力の詳細トークンのリストであるかを確認します。',autocompleteValid_summary_fail:"この autocomplete 属性の値は、有効な自動入力の値ではありません。",autocompleteValid_hint_fail:'"on"/"off"、または有効な自動入力トークンのリスト (例: "shipping postal-code"、"cc-number") を使用してください。',passwordPasteEnabled_title:"認証用のフィールドで貼り付けを禁止してはならない",passwordPasteEnabled_description:"パスワードやワンタイムコードのフィールドに、貼り付けを取り消すインラインの paste ハンドラーがないかを確認します。貼り付けが禁止されると、WCAG 3.3.8 が支援の仕組みとして想定しているパスワードマネージャーやクリップボードが使えなくなります。",passwordPasteEnabled_summary_fail:"この認証用フィールドには、貼り付けを取り消すことだけを行う paste ハンドラーがあります。",passwordPasteEnabled_hint_fail:"貼り付けが実際に機能するか、人の手で確認してください。禁止されている場合は、パスワードマネージャー (ワンタイムコードの場合はクリップボード) でフィールドに入力できるよう、ハンドラーを削除してください。",passwordPasteEnabled_summary_cantTell:"この認証用フィールドには paste ハンドラーがありますが、貼り付けを取り消すかどうかは判定できませんでした。",passwordPasteEnabled_hint_cantTell:"パスワードマネージャーやクリップボードで入力できるよう、このフィールドへの貼り付けが機能するか、人の手で確認してください。",htmlXmlLangMismatch_title:"lang と xml:lang が食い違ってはならない",htmlXmlLangMismatch_description:"<html> 要素に lang 属性と xml:lang 属性の両方がある場合に、同じ主言語を宣言しているかを確認します。",htmlXmlLangMismatch_summary_fail:"lang 属性 (「{{lang}}」) と xml:lang 属性 (「{{xmlLang}}」) が異なる言語を宣言しています。",htmlXmlLangMismatch_hint_fail:"lang と xml:lang で同じ主言語を宣言するか、非推奨の xml:lang 属性を削除してください。",avoidInlineSpacing_title:"インラインスタイルで、テキストの間隔を WCAG の基準値未満に固定してはならない",avoidInlineSpacing_description:"インラインスタイルで line-height、letter-spacing、word-spacing を !important 付きで固定している場合に、その値がすでに WCAG 1.4.12 を満たしていて、利用者が上書きする必要がないかを確認します。",avoidInlineSpacing_summary_fail:"この要素のインラインスタイルは {{properties}} を !important で固定しており、利用者によるテキストの間隔の上書きを妨げています。",avoidInlineSpacing_hint_fail:"利用者がテキストの間隔を上書きできるよう、インラインスタイルの line-height/letter-spacing/word-spacing から !important を削除してください。",avoidInlineSpacing_summary_cantTell:"この要素のインラインスタイルは {{properties}} を !important 付きで指定していますが、値を解決できなかったため、WCAG のテキストの間隔の基準値を満たしているかは判定できませんでした。",avoidInlineSpacing_hint_cantTell:"この値が基準値 (line-height 1.5、letter-spacing 0.12em、word-spacing 0.16em) を満たしているか人の手で確認するか、要素の算出フォントサイズに対してエンジンが解決できる単位で指定してください。",avoidInlineSpacing_summary_cantTell_noSoftWrap:"この要素のインラインスタイルは {{properties}} を !important で固定していますが、テキストが折り返せないようなので、テキストの間隔の達成基準は適用されない可能性があります。",avoidInlineSpacing_hint_cantTell_noSoftWrap:"このテキストが折り返すことがあるか確認してください。折り返せない場合、この達成基準は適用されません。折り返せる場合は、!important を削除するか、基準値をすでに満たす値を指定してください。",avoidInlineSpacing_summary_cantTell_shortText:"この要素のインラインスタイルは {{properties}} を !important で固定していますが、テキストが 1 行に収まる短さなので折り返さない可能性があり、テキストの間隔の達成基準は適用されない可能性があります。",avoidInlineSpacing_hint_cantTell_shortText:"狭い幅でこのテキストが折り返すか確認してください。常に 1 行に収まる場合、この達成基準は適用されません。折り返せる場合は、!important を削除するか、基準値をすでに満たす値を指定してください。",textSpacingContentLoss_title:"利用者がテキストの間隔を広げてもテキストが読める",textSpacingContentLoss_description:"ブラウザーで WCAG 1.4.12 のテキスト間隔を適用し、テキストが切れたり重なったりしないかを確認します。また、!important で間隔を強制するスタイルシートの規則について確認を求めます。",textSpacingContentLoss_summary_fail_clipped:"WCAG 1.4.12 のテキスト間隔を適用すると、この要素はテキスト「{{text}}」を切り取ります。",textSpacingContentLoss_hint_fail_clipped:"コンテナーがテキストに合わせて広がるようにしてください。テキストに overflow: hidden と固定の高さや幅を組み合わせないか、スクロールできるようにしてください(WCAG 1.4.12)。",textSpacingContentLoss_summary_cantTell_clippedPartly:"WCAG 1.4.12 のテキスト間隔を適用すると、テキスト「{{text}}」がこの要素の端からはみ出し、はみ出した部分が隠れます。",textSpacingContentLoss_hint_cantTell_clippedPartly:"間隔を適用した状態で、このテキストがまだすべて読めることを確認してください(WCAG 1.4.12)。",textSpacingContentLoss_summary_cantTell_overlaps:"WCAG 1.4.12 のテキスト間隔を適用すると、テキスト「{{text}}」がテキスト「{{other}}」と重なります。",textSpacingContentLoss_hint_cantTell_overlaps:"間隔を適用した状態で、両方のテキストがまだ読めることを確認してください(WCAG 1.4.12)。",textSpacingContentLoss_summary_cantTell_stylesheetImportant:"スタイルシートの規則({{selector}})が、このテキストに {{property}}: {{value}} を !important で設定しており、WCAG 1.4.12 で利用者が適用できる間隔を下回っています。",textSpacingContentLoss_hint_cantTell_stylesheetImportant:"利用者が間隔を広げられるよう、間隔の宣言から !important を外すか、ユーザースタイルシートでまだ上書きできることを確認してください(WCAG 1.4.12)。",metaRefreshNoExceptions_title:"ページで時間指定の meta refresh を使用してはならない (AAA)",metaRefreshNoExceptions_description:'<meta http-equiv="refresh"> が、長さにかかわらず正の遅延を設定していないかを確認します。即時のリダイレクト (遅延 0) は合格です。20 時間を超える遅延を除外するレベル A のチェックに対応する、より厳格なレベル AAA のチェックです。',metaRefreshNoExceptions_summary_fail:"このページは meta refresh を使用しています。これは利用者が起動したものではない、自動的なコンテキストの変化です。",metaRefreshNoExceptions_hint_fail:"meta refresh を削除し、リダイレクトや再読み込みは利用者の操作に応じてのみ実行するようにしてください。",validLang_title:"要素の lang 属性は構文上有効であること",validLang_description:"ルートの <html> 以外で空でない lang 属性を持つ要素が、構文上有効な言語タグを使用しているかを確認します。",validLang_summary_fail:"この lang 属性の値 (「{{value}}」) は、構文上有効な言語タグではありません。",validLang_hint_fail:"有効な BCP47 言語タグを使用してください (例:「ja」「en-US」)。",linkInTextBlock_title:"文中のリンクは、色だけに頼らずに周囲のテキストと区別できること",linkInTextBlock_description:"文中にあるリンクが、色以外の手がかり (下線、フォントの太さやスタイル、枠線、背景、アイコン) によって周囲のテキストと視覚的に区別できるかを確認します。3:1 以上の色の差だけで区別されているリンクは、ホバー時とフォーカス時にも手がかりが必要なため、確認を求めます。",linkInTextBlock_summary_fail:"文中のこのリンクは、周囲のテキストとの区別を色だけに頼っています。",linkInTextBlock_hint_fail:"下線、または色以外の手がかり (フォントの太さやスタイルの違い、枠線、アイコン) を付けてください。周囲のテキストとの色のコントラストを 3:1 にするだけで十分なのは、リンクのホバー時とフォーカス時にも色以外の手がかりが加わる場合に限られます。",linkInTextBlock_summary_cantTell:"このリンクが色以外の手段で周囲のテキストと区別できるかは判定できませんでした。",linkInTextBlock_hint_cantTell:"リンクに下線、フォントの太さやスタイルの違い、その他の色以外の目印があるか、または周囲のテキストとの 3:1 以上のコントラストに加えてホバー時とフォーカス時に色以外の手がかりがあるか、目視で確認してください。DOM エミュレーターではなく実際のブラウザーでエンジンを実行すると、ほとんどの場合は自動で判定できます。",linkInTextBlock_summary_cantTell_contrastOnly:"文中のこのリンクは、周囲のテキストと色だけで区別されています (コントラスト {{ratio}}:1)。これで十分なのは、ホバー時とフォーカス時にも下線などの色以外の手がかりが表示される場合に限られます。",linkInTextBlock_hint_cantTell_contrastOnly:"リンクにマウスを重ね、キーボードフォーカスを移して、それぞれの状態で色以外の手がかり (下線、枠線、太さの変化) が加わるか確認してください。加わらない場合は、通常の状態でリンクに下線を付けてください。",noAutoplayAudio_title:"自動再生される音声には、一時停止/停止または音量調節の仕組みがあることが望ましい",noAutoplayAudio_description:"ミュートされずに自動再生され、ネイティブの controls 属性もない <audio>/<video> 要素と、音声を再生する可能性のある <embed>、<object>、<bgsound> 要素を検出し、WCAG 1.4.2 の 3 秒の例外に該当するかを人が確認できるようにします。",noAutoplayAudio_summary_cantTell:"この要素はネイティブの一時停止/停止や音量調節の仕組みなしに音声を自動再生します。3 秒の例外に該当するか、人による確認が必要です。",noAutoplayAudio_hint_cantTell:"このクリップが 3 秒を超えて再生される場合は、controls 属性 (または同等の独自の仕組み) を追加し、利用者が一時停止/停止したり、システムの音量とは別に音量を調節したりできるようにしてください。",noAutoplayAudio_summary_cantTell_embedded:"この要素はページの読み込みと同時に音声を再生する可能性があります。",noAutoplayAudio_hint_cantTell_embedded:"自動で音声が再生されるかを確認してください。音声が 3 秒を超える場合、利用者が一時停止または停止できるか、システムの音量とは別に音量を変更できる必要があります。",videoCaption_title:"収録済みの動画にはキャプションのトラックがあることが望ましい",videoCaption_description:'子要素に <track kind="captions"> がない <video> 要素を検出し、キャプションが必要な音声トラックがあるかを人が確認できるようにします。字幕 (subtitles) のトラックだけでは翻訳にすぎない場合があります。',videoCaption_summary_cantTell:"この動画にはキャプション (captions) のトラックがありません。キャプションが必要な音声があるか、人による確認が必要です。",videoCaption_hint_cantTell:'この動画に情報を伝える音声トラックがある場合は、キャプションの内容を含む <track kind="captions" src="..."> を追加してください。',videoCaption_summary_cantTell_subtitlesOnly:"この動画には字幕 (subtitles) のトラックしかありません。字幕は、キャプションが含む話者や音の情報を含まず、台詞を翻訳しているだけの場合があります。",videoCaption_hint_cantTell_subtitlesOnly:'この動画に情報を伝える音声トラックがある場合は、字幕のトラックが実際にはキャプションであるかを確認し、<track kind="captions"> と指定してください。そうでない場合は、キャプションのトラックを追加してください。',scrollableRegionFocusable_title:"フォーカス可能なコンテンツのないスクロール領域は、キーボードでフォーカスできることが望ましい",scrollableRegionFocusable_description:"CSS で overflow:auto/scroll が宣言され、フォーカス可能な子孫要素がなく、それ自体もキーボードでフォーカスできない要素を検出し、コンテンツが実際にはみ出してキーボードでのスクロール手段が必要かを人が確認できるようにします。",scrollableRegionFocusable_summary_cantTell:"この要素は overflow:auto/scroll を宣言していますが、フォーカス可能な子孫要素がなく、それ自体もキーボードでフォーカスできません。",scrollableRegionFocusable_hint_cantTell:'この領域のコンテンツが実際にはみ出す場合は、tabindex="0" (と適切なラベル) を追加し、キーボード利用者がフォーカスして矢印キーでスクロールできるようにしてください。',identicalLinksSamePurpose_title:"同じアクセシブルな名前のリンクは、同じリンク先に移動することが望ましい",identicalLinksSamePurpose_description:"同じアクセシブルな名前を持ちながら、複数の異なるリンク先を指すリンクのグループを検出し、同じ目的を果たしているかを人が確認できるようにします。",identicalLinksSamePurpose_summary_cantTell:"このリンクは、別のリンク先に移動するページ内のほかのリンクと同じアクセシブルな名前を持っています。",identicalLinksSamePurpose_hint_cantTell:"同じテキストのリンクが同じ目的を果たしているか確認するか、それぞれのリンク先がわかるようにリンクテキストを区別してください。",ariaBrailleEquivalent_title:"aria-braillelabel/aria-brailleroledescription には点字以外の対応する属性が必要",ariaBrailleEquivalent_description:"aria-braillelabel を使用する要素に通常のアクセシブルな名前もあり、aria-brailleroledescription を使用する要素に aria-roledescription もあるかを確認します。",ariaBrailleEquivalent_summary_fail_label:"この要素には aria-braillelabel がありますが、点字以外で対応するアクセシブルな名前がありません。",ariaBrailleEquivalent_hint_fail_label:"aria-braillelabel は点字用の補足であり、代わりになるものではありません。表示テキスト、aria-label、aria-labelledby などで、要素にアクセシブルな名前も付けてください。",ariaBrailleEquivalent_summary_fail_roleDescription:"この要素には aria-brailleroledescription がありますが、点字以外で対応する aria-roledescription がありません。",ariaBrailleEquivalent_hint_fail_roleDescription:"aria-brailleroledescription は点字用の補足であり、代わりになるものではありません。aria-roledescription も指定してください。",ariaConditionalAttr_title:"aria-errormessage を使うには、aria-invalid に false 以外の値が必要",ariaConditionalAttr_description:'aria-errormessage を持つ要素で、aria-invalid が "true"、"grammar"、"spelling" のいずれかに設定されているかを確認します。設定されていない場合、エラーメッセージはアクセシビリティツリーから除外されます。',ariaConditionalAttr_summary_fail:'この要素には aria-errormessage がありますが、aria-invalid が未指定または "false" のため、エラーメッセージが公開されません。',ariaConditionalAttr_hint_fail:'aria-errormessage を支援技術に公開する必要があるときは、aria-invalid を "true" (または "grammar"/"spelling") に設定してください。',ariaCheckedStateMismatch_title:"ネイティブのチェックボックス/ラジオボタンの aria-checked は実際の状態と一致していることが望ましい",ariaCheckedStateMismatch_description:'明示的な aria-checked の値が、実際の checked/indeterminate の状態と食い違っているネイティブの <input type="checkbox">/<input type="radio"> を検出し、人が確認できるようにします。',ariaCheckedStateMismatch_summary_cantTell:"この要素の aria-checked の値は、実際の checked/indeterminate の状態と一致していません。",ariaCheckedStateMismatch_hint_cantTell:"aria-checked を要素の実際の状態に合わせるか、削除してください。ネイティブのチェックボックス/ラジオボタンは、aria-checked がなくてもこの状態を公開します。",cssOrientationLock_title:"CSS でページを 1 つの表示の向きに固定してはならない",cssOrientationLock_description:"@media (orientation: portrait|landscape) のルールでページに transform: rotate(...) を設定していないかを確認します。これは端末の表示の向きを無効にする手法として知られています。また、そのようなルールがページの主要なコンテンツを非表示にしている場合は確認を求めます。",cssOrientationLock_summary_fail:"「{{mediaText}}」のメディアクエリが「{{selectorText}}」を回転させており、ページが 1 つの向きに固定されています。",cssOrientationLock_summary_fail_unknownSelector:"「{{mediaText}}」のメディアクエリが、セレクターを読み取れない要素を回転させており、ページが 1 つの向きに固定されています。",cssOrientationLock_hint_fail:"表示の向きのメディアクエリから rotate() の transform を削除してください。見た目を強制的に回転させるのではなく、端末の向きに合わせてページが自然に表示されるようにします。",cssOrientationLock_summary_cantTell_unreadableSheets:"{{count}} 個のスタイルシートを読み取れなかったため、このページが表示の向きを固定しているかは判定できませんでした。",cssOrientationLock_hint_cantTell_unreadableSheets:"クロスオリジンのスタイルシートは、ページからは検査できません。サードパーティの CSS に rotate() の transform を含む表示の向きのメディアクエリがないか確認するか、それらのスタイルシートを同一オリジンで配信した状態で再度スキャンしてください。",cssOrientationLock_summary_cantTell_hidesContent:"「{{mediaText}}」のメディアクエリがページの主要なコンテンツを含む「{{selectorText}}」を非表示にしているため、その向きではページを利用できない可能性があります。",cssOrientationLock_hint_cantTell_hidesContent:"ページが縦向きと横向きのどちらでも表示・操作できるか確認してください。このメディアクエリがコンテンツを端末の回転を求めるメッセージに置き換えている場合は、特定の向きが必須でない限り、代わりにコンテンツを表示してください。",ariaText_title:'role="text" の要素にはフォーカス可能な子孫要素がないことが望ましい',ariaText_description:'role="text" を持つ要素に、フォーカス可能な子孫要素 (リンク、ボタン、フォームコントロール、tabindex、iframe、contenteditable) が含まれていないかを確認します。',ariaText_summary_cantTell:'この role="text" の要素には、フォーカス可能な子孫要素が含まれています。',ariaText_hint_cantTell:'role="text" を削除する (またはフォーカス可能な子孫要素を取り除く) ようにしてください。「プレーンテキスト」の領域にフォーカス可能なコンテンツを含めるべきではありません。',focusOrderSemantics_title:"タブ順序に加えた要素にはインタラクティブなセマンティクスがあることが望ましい",focusOrderSemantics_description:"tabindex >= 0 を持ち、明示的なロールがインタラクティブでない構造/文書のロール (heading、list、region、presentation など) である要素を検出し、人が確認できるようにします。",focusOrderSemantics_summary_cantTell:'この要素はタブ順序に含まれています (tabindex="{{tabindex}}") が、インタラクティブでないロール ("{{role}}") を持っています。',focusOrderSemantics_hint_cantTell:"この要素を操作可能にする意図がなければ tabindex を削除し、そうでなければ実際の動作に合ったインタラクティブなロールを使用してください。",pAsHeading_title:"見出しのように装飾されたテキストは、本来の見出し要素にすることが望ましい場合がある",pAsHeading_description:"テキスト全体が太字で 18px 以上で表示される短い <p> 要素と <div> 要素を検出し、本来の見出し要素を使うべきかを人が確認できるようにします。",pAsHeading_summary_cantTell:"この段落はテキスト全体が太字で、見出しのようなサイズで表示されています。",pAsHeading_hint_cantTell:'このテキストが新しいセクションの始まりを示すなら、段落を見出しのように装飾するのではなく、本来の見出し要素 (<h1>〜<h6> または role="heading") を使用してください。',pAsHeading_summary_cantTell_div:"このテキストのブロックは全体が太字で、見出しのようなサイズで表示されています。",pAsHeading_hint_cantTell_div:'このテキストが新しいセクションの始まりであれば、<div> を見出しのように装飾するのではなく、本来の見出し要素 (<h1>-<h6> または role="heading") を使用してください。',tableFakeCaption_title:"表の 1 行目を本来の <caption> の代わりにしないことが望ましい",tableFakeCaption_description:"<caption> がなく、1 行目が空でない単一のセルで、ほかの行が複数のセルを持つ表を検出し、そのセルが見せかけのキャプションとして使われていないかを人が確認できるようにします。",tableFakeCaption_summary_cantTell:"この表には <caption> がありませんが、1 行目が複数セルの行の上にある単一のセルになっているため、見せかけのキャプションとして使われている可能性があります。",tableFakeCaption_hint_cantTell:"このセルが表を説明するためのものであれば、1 行目の単独のセルではなく、本来の <caption> 要素を使用してください。",tdHasHeader_title:"大きな表のデータセルには、関連付けられた見出しが必要",tdHasHeader_description:"大きく単純な (colspan/rowspan のない) 表のすべての <td> に、headers 属性、上にある暗黙的な列の <th>、または左にある暗黙的な行の <th> によって見出しが関連付けられているかを確認します。",tdHasHeader_summary_fail:"このデータセルには関連付けられた見出しがありません (headers 属性も、上にある列の <th> も、左にある行の <th> もありません)。",tdHasHeader_hint_fail:"該当する <th> の id を参照する headers 属性を追加するか、このセルに暗黙的な行/列の見出しができるよう表の構造を見直してください。",mouseOnlyEventHandlers_title:"ポインター専用のインラインイベントハンドラーには、キーボードで操作できる同等の手段があることが望ましい",mouseOnlyEventHandlers_description:"ポインター専用のインラインイベントハンドラー (onmouseover、onmouseout、onmousedown、onmouseup、ondblclick、onmousemove、onmouseenter、onmouseleave) があり、キーボードで操作できる同等のハンドラー (onkeydown/onkeyup/onkeypress/onfocus/onblur) がない要素を検出し、人が確認できるようにします。",mouseOnlyEventHandlers_summary_cantTell:"この要素には {{attrs}} がありますが、キーボードで操作できる同等のハンドラーがありません。",mouseOnlyEventHandlers_hint_cantTell:"この機能をキーボードでも利用できるよう、onkeydown/onkeyup/onkeypress (ホバーで動作するものには onfocus/onblur) を追加してください。",mouseOnlyEventHandlers_summary_cantTell_notFocusable:"この要素には {{attrs}} と {{keyboardAttrs}} がありますが、キーボードフォーカスを受け取れないため、キーボードのハンドラーは実行されません。",mouseOnlyEventHandlers_hint_cantTell_notFocusable:'この機能をキーボードでも利用できるよう、要素をフォーカス可能にする (ネイティブのコントロールを使うか tabindex="0" を追加する) か、ハンドラーをフォーカス可能な要素に移してください。',headingQuality_title:"見出しのテキストは仮の文字列ではなく、内容を説明していることが望ましい",headingQuality_description:'アクセシブルな名前が後続のコンテンツの説明になっておらず、仮の文字列である見出しを検出します。汎用的な語 (「見出し」「無題」、"Heading" など)、番号付きのテンプレートの枠 (「セクション 2」「第 1 章」)、ファイル名、URL などが該当します。英語の語句は常に対象とし、ドイツ語、スペイン語、フランス語、日本語の語句は、見出しがその言語で書かれている場合に対象とします。',headingQuality_summary_cantTell_placeholder:"この見出しのアクセシブルな名前 (「{{name}}」) は仮の文字列であり、導入するコンテンツを説明していません。",headingQuality_summary_cantTell_filename:"この見出しのアクセシブルな名前 (「{{name}}」) はファイル名であり、導入するコンテンツを説明していません。",headingQuality_summary_cantTell_url:"この見出しのアクセシブルな名前 (「{{name}}」) は URL であり、導入するコンテンツを説明していません。",headingQuality_hint_cantTell:"後続のコンテンツの主題や目的がわかるよう、見出しを書き直してください。",linkNameQuality_title:"リンクテキストは汎用的な語句ではなく、内容を説明していることが望ましい",linkNameQuality_description:'アクセシブルな名前の全体が、説明的でないことが知られている語句 (「こちら」「詳しくはこちら」「続きを読む」、"click here" など) やファイル形式名だけ ("HTML"、"PDF" など) で、リンク先を示す文脈が近くにないリンクを検出し、目的が明確かを人が確認できるようにします。英語の語句は常に対象とし、ドイツ語、スペイン語、フランス語、日本語の語句は、リンクがその言語で書かれている場合に対象とします。',linkNameQuality_summary_cantTell:"このリンクのアクセシブルな名前 (「{{name}}」) は、汎用的で説明的でない語句です。",linkNameQuality_hint_cantTell:"リンクテキスト自体でリンク先や目的がわかるようにするか (例:「ダウンロード」ではなく「2026 年版の料金ガイドをダウンロード」)、周囲の文脈ですでに目的が明確になっているか確認してください。",linkNameQuality_summary_cantTell_formatName:"このリンクのアクセシブルな名前 (「{{name}}」) はファイルの形式や種類を示していますが、どの文書のものかを示していません。",linkNameQuality_hint_cantTell_formatName:"リンクテキスト、またはリンクが関連付けられている近くのテキストや見出しで、文書の名前を示してください (例: 単なる「HTML」ではなく「年次報告書をダウンロード (HTML)」)。",report_title_default:"surea11y スキャンレポート",report_generated:"生成日時: {{date}}",report_noUrl:"(URL なし)",report_meta_rulesRun:"実行したルール",report_meta_totalOccurrences:"検出箇所の合計",report_meta_engine:"エンジン",report_meta_schemaVersion:"スキーマバージョン",report_meta_target:"対象",report_meta_profile:"プロファイル",report_meta_optInRules:"オプトインルール",report_meta_locale:"ロケール",report_meta_localeRequested:"ロケール (要求: {{requested}})",report_outcome_fail:"不合格",report_outcome_cantTell:"要確認",report_outcome_pass:"合格",report_outcome_notApplicable:"該当なし",report_severity_minor:"軽微",report_severity_moderate:"中程度",report_severity_serious:"重大",report_severity_critical:"致命的",report_hero_failures_one:"該当するチェック {{applicable}} 件のうち {{passed}} 件が合格しました。不合格の {{failed}} 件は、以下で対応が必要です。",report_hero_failures_other:"該当するチェック {{applicable}} 件のうち {{passed}} 件が合格しました。不合格の {{failed}} 件は、以下で対応が必要です。",report_hero_review:"該当するチェック {{applicable}} 件のうち {{passed}} 件が合格し、{{review}} 件は人による確認が必要です。",report_hero_allPassed:"該当するチェック {{applicable}} 件はすべて合格しました。",report_hero_none:"このスキャンでは、該当するチェックは実行されませんでした。",report_heading_worthReviewing:"確認が必要な項目",report_heading_wcagRollup:"WCAG の集約結果",report_heading_standardRollup:"{{standard}} の集約結果",report_standardRollup_col_criterion:"基準",report_techDetails:"詳細な技術データ — スコアカード、検索できる検出箇所の一覧",report_heading_scorecard:"スコアカード",report_heading_occurrences:"検出箇所",report_search_placeholder:"ルール ID、セレクター、HTML で検索…",report_col_rule:"ルール",report_col_outcome:"結果",report_col_severity:"重大度",report_col_selector:"セレクター",report_col_summary:"概要",report_pager_prev:"前へ",report_pager_next:"次へ",report_pager_none:"一致する検出箇所はありません",report_pager_info:"{{page}} / {{pages}} ページ (一致 {{matching}} 件、全 {{total}} 件)",report_rollup_none:"このスキャンには WCAG の集約結果がありません (runOnly/engineOptions で複合ルールが除外されています)。",report_rollup_level:"レベル {{level}}",report_rollup_levelUnmapped:"レベル (対応なし)",report_rollup_unmapped:"WCAG (対応なし)",report_rollup_col_sc:"達成基準",report_rollup_col_requirement:"要件",report_rollup_col_breakdown:"内訳",report_rollup_col_contributing:"関連するルール",report_rollup_breakdown:"合格 {{pass}} / 不合格 {{fail}} / 要確認 {{review}} / 該当なし {{na}}",report_cards_none:"このスキャンには、検出箇所のある fail/cantTell のルールはありません。",report_card_status:"({{outcome}}、重大度: {{severity}})",report_card_mixed:"(不合格 {{fail}} / 要確認 {{review}})",report_card_selector:"セレクター:",report_card_noSelector:"(なし)",report_card_representative:"上記のセレクターと概要は、代表的な 1 件のものです。このルールの検出箇所は合計 {{count}} 件です。",report_cards_overflow:"問題のある {{total}} 件のルールのうち、優先度の高い {{shown}} 件を表示しています。残りは下の詳細な技術データを参照してください。"})})(typeof window<"u"?window:this);
|
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
/* SPDX-License-Identifier: MPL-2.0 */
|
|
2
|
-
|
|
3
|
-
'use strict';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* @check area-alt-decorative
|
|
7
|
-
* @atomic true
|
|
8
|
-
* @summary Manual review: text alternative appropriateness (WCAG 1.1.1)
|
|
9
|
-
* @standard WCAG 2.2
|
|
10
|
-
* @sc 1.1.1
|
|
11
|
-
* @type manual
|
|
12
|
-
* @applicability
|
|
13
|
-
* Applies to <area> elements whose alt attribute is present but empty once
|
|
14
|
-
* trimmed, the markup that declares a hotspot decorative. The <area> must
|
|
15
|
-
* belong to a <map> that an <img usemap> actually references, and both
|
|
16
|
-
* that <img> and the <area> itself must be included in the accessibility
|
|
17
|
-
* tree; an <area> in an unused map is out of scope.
|
|
18
|
-
* role="presentation"/"none" takes an element out unless it is focusable.
|
|
19
|
-
* @expectation
|
|
20
|
-
* Human review is required to confirm that the provided text alternative is accurate and appropriate.
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
const id = 'area-alt-decorative';
|
|
24
|
-
|
|
25
|
-
const meta = {
|
|
26
|
-
title: '<area> with alt="" must be decorative (manual review)',
|
|
27
|
-
description:
|
|
28
|
-
'Flags <area> elements with empty alt for human review that they are decorative/non-informative.',
|
|
29
|
-
i18n: {
|
|
30
|
-
titleKey: 'area_altDecorative_title',
|
|
31
|
-
descriptionKey: 'area_altDecorative_description'
|
|
32
|
-
},
|
|
33
|
-
helpUrl: null,
|
|
34
|
-
tags: ['wcag2a', 'wcag111', 'nontext', 'images', 'imagemap', 'manual', 'atomic'],
|
|
35
|
-
wcagSc: ['1.1.1'],
|
|
36
|
-
normativeMappings: [
|
|
37
|
-
{
|
|
38
|
-
standard: 'WCAG',
|
|
39
|
-
version: '2.2',
|
|
40
|
-
requirement: '1.1.1',
|
|
41
|
-
title: 'Non-text Content',
|
|
42
|
-
conformanceLevel: 'A'
|
|
43
|
-
}
|
|
44
|
-
],
|
|
45
|
-
defaultSeverity: 'minor',
|
|
46
|
-
category: 'perceivable',
|
|
47
|
-
type: 'manual',
|
|
48
|
-
defaultConfidence: 'medium',
|
|
49
|
-
coverage: {
|
|
50
|
-
facetsBySc: {
|
|
51
|
-
'1.1.1': ['text-alternative-quality']
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
function runInPage(ctx) {
|
|
57
|
-
const { document, root, helpers, rule } = ctx;
|
|
58
|
-
const safeRoot = root || document;
|
|
59
|
-
|
|
60
|
-
const queryAllSmart =
|
|
61
|
-
helpers && typeof helpers.queryAllSmart === 'function' ? helpers.queryAllSmart : null;
|
|
62
|
-
const queryAll =
|
|
63
|
-
helpers && typeof helpers.queryAll === 'function'
|
|
64
|
-
? helpers.queryAll
|
|
65
|
-
: (sel) => {
|
|
66
|
-
try {
|
|
67
|
-
return safeRoot && safeRoot.querySelectorAll
|
|
68
|
-
? Array.from(safeRoot.querySelectorAll(sel))
|
|
69
|
-
: [];
|
|
70
|
-
} catch {
|
|
71
|
-
return [];
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
const __accEligCache = new WeakMap();
|
|
76
|
-
function accEligibleCached(node) {
|
|
77
|
-
if (!isAccTreeEligible) return { eligible: true, reasons: [] };
|
|
78
|
-
if (!node || typeof node !== 'object') return { eligible: true, reasons: [] };
|
|
79
|
-
const cached = __accEligCache.get(node);
|
|
80
|
-
if (cached) return cached;
|
|
81
|
-
let res;
|
|
82
|
-
try {
|
|
83
|
-
res = isAccTreeEligible(node, ctx);
|
|
84
|
-
} catch {
|
|
85
|
-
res = { eligible: true, reasons: [] };
|
|
86
|
-
}
|
|
87
|
-
res = res && typeof res === 'object' ? res : { eligible: !!res, reasons: [] };
|
|
88
|
-
__accEligCache.set(node, res);
|
|
89
|
-
return res;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const getEligibilityInfo =
|
|
93
|
-
helpers && typeof helpers.getEligibilityInfo === 'function' ? helpers.getEligibilityInfo : null;
|
|
94
|
-
|
|
95
|
-
const isAccTreeEligible =
|
|
96
|
-
helpers && typeof helpers.isAccTreeEligible === 'function' ? helpers.isAccTreeEligible : null;
|
|
97
|
-
|
|
98
|
-
// --- image-map semantics (rule-local; match automatic <area> applicability) ---
|
|
99
|
-
function normUsemap(val) {
|
|
100
|
-
try {
|
|
101
|
-
const t = String(val || '').trim();
|
|
102
|
-
if (!t) return '';
|
|
103
|
-
return t[0] === '#' ? t.slice(1).trim().toLowerCase() : t.toLowerCase();
|
|
104
|
-
} catch {
|
|
105
|
-
return '';
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
function getMapName(mapEl) {
|
|
110
|
-
try {
|
|
111
|
-
if (!mapEl || !mapEl.getAttribute) return '';
|
|
112
|
-
const n = String(mapEl.getAttribute('name') || mapEl.getAttribute('id') || '').trim();
|
|
113
|
-
return n ? n.toLowerCase() : '';
|
|
114
|
-
} catch {
|
|
115
|
-
return '';
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
const getFocusableInfo =
|
|
120
|
-
helpers && typeof helpers.getFocusableInfo === 'function' ? helpers.getFocusableInfo : null;
|
|
121
|
-
|
|
122
|
-
function isRolePresentationExcluded(el) {
|
|
123
|
-
const role = (() => {
|
|
124
|
-
try {
|
|
125
|
-
return String(el.getAttribute('role') || '')
|
|
126
|
-
.trim()
|
|
127
|
-
.toLowerCase();
|
|
128
|
-
} catch {
|
|
129
|
-
return '';
|
|
130
|
-
}
|
|
131
|
-
})();
|
|
132
|
-
if (role !== 'presentation' && role !== 'none') return false;
|
|
133
|
-
|
|
134
|
-
// Exclude only when NOT focusable (mirrors img-alt-present policy)
|
|
135
|
-
let focusable;
|
|
136
|
-
if (getFocusableInfo) {
|
|
137
|
-
const fi = (() => {
|
|
138
|
-
try {
|
|
139
|
-
return getFocusableInfo(el, ctx);
|
|
140
|
-
} catch {
|
|
141
|
-
return null;
|
|
142
|
-
}
|
|
143
|
-
})();
|
|
144
|
-
focusable = !!(fi && fi.focusable);
|
|
145
|
-
} else {
|
|
146
|
-
const tabindex = el.getAttribute('tabindex');
|
|
147
|
-
focusable =
|
|
148
|
-
tabindex != null &&
|
|
149
|
-
String(tabindex).trim() !== '' &&
|
|
150
|
-
!Number.isNaN(Number(String(tabindex).trim()));
|
|
151
|
-
}
|
|
152
|
-
return !focusable;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
const els = (() => {
|
|
156
|
-
try {
|
|
157
|
-
return Array.from((queryAllSmart ? queryAllSmart('area') : queryAll('area')) || []);
|
|
158
|
-
} catch {
|
|
159
|
-
return queryAll('area');
|
|
160
|
-
}
|
|
161
|
-
})();
|
|
162
|
-
|
|
163
|
-
const __usemapIndex = new Map(); // mapName -> img (first in document order)
|
|
164
|
-
try {
|
|
165
|
-
const imgs = Array.from(document.querySelectorAll('img[usemap]'));
|
|
166
|
-
for (const img of imgs) {
|
|
167
|
-
const u = normUsemap(img.getAttribute('usemap'));
|
|
168
|
-
if (!u) continue;
|
|
169
|
-
if (!__usemapIndex.has(u)) __usemapIndex.set(u, img); // keep first match only
|
|
170
|
-
}
|
|
171
|
-
} catch {}
|
|
172
|
-
|
|
173
|
-
if (!els.length) {
|
|
174
|
-
return { ruleId: rule.ruleId, outcome: 'notApplicable', severity: 'minor', occurrences: [] };
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
const occurrences = [];
|
|
178
|
-
let applicableCount = 0;
|
|
179
|
-
|
|
180
|
-
for (const el of els) {
|
|
181
|
-
if (!el || !el.getAttribute) continue;
|
|
182
|
-
|
|
183
|
-
// Must belong to a *used* image map (referenced by an <img usemap>). If unused, not applicable.
|
|
184
|
-
let img;
|
|
185
|
-
try {
|
|
186
|
-
const map = el.closest && el.closest('map');
|
|
187
|
-
const mapName = map ? getMapName(map) : '';
|
|
188
|
-
img = mapName ? __usemapIndex.get(mapName) || null : null;
|
|
189
|
-
} catch {
|
|
190
|
-
img = null;
|
|
191
|
-
}
|
|
192
|
-
if (!img) continue;
|
|
193
|
-
|
|
194
|
-
// The referencing <img> must be eligible in the accessibility tree.
|
|
195
|
-
if (isAccTreeEligible) {
|
|
196
|
-
const imgElig = accEligibleCached(img);
|
|
197
|
-
if (imgElig && imgElig.eligible === false) continue;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
if (isAccTreeEligible) {
|
|
201
|
-
const elig = (() => {
|
|
202
|
-
try {
|
|
203
|
-
return isAccTreeEligible(el, ctx);
|
|
204
|
-
} catch {
|
|
205
|
-
return { eligible: true, reasons: [] };
|
|
206
|
-
}
|
|
207
|
-
})();
|
|
208
|
-
if (elig && elig.eligible === false) continue;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
if (isRolePresentationExcluded(el)) continue;
|
|
212
|
-
|
|
213
|
-
// Rule-specific applicability (only elements that already have a text alternative mechanism)
|
|
214
|
-
let alt;
|
|
215
|
-
try {
|
|
216
|
-
alt = el.getAttribute('alt');
|
|
217
|
-
} catch {
|
|
218
|
-
alt = null;
|
|
219
|
-
}
|
|
220
|
-
if (alt === null) continue;
|
|
221
|
-
if (String(alt).trim() !== '') continue; // only alt=""
|
|
222
|
-
|
|
223
|
-
applicableCount += 1;
|
|
224
|
-
|
|
225
|
-
const eligInfo = getEligibilityInfo ? getEligibilityInfo(el, ctx, { targetSet: 'acc' }) : null;
|
|
226
|
-
|
|
227
|
-
const baseOccurrence = {
|
|
228
|
-
summary: 'Review whether <area> is decorative (alt="").',
|
|
229
|
-
hint: 'Confirm the area does not convey information or function. If it is interactive or meaningful, provide meaningful alt text.',
|
|
230
|
-
i18n: {
|
|
231
|
-
summaryKey: 'area_altDecorative_summary_cantTell',
|
|
232
|
-
hintKey: 'area_altDecorative_hint_cantTell',
|
|
233
|
-
params: { element: (el.tagName || '').toLowerCase() }
|
|
234
|
-
},
|
|
235
|
-
data: {
|
|
236
|
-
visibilityFilter: eligInfo || { targetSet: 'acc', accEligible: null, reasons: [] },
|
|
237
|
-
details: null
|
|
238
|
-
}
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
if (helpers && typeof helpers.reportOccurrence === 'function') {
|
|
242
|
-
occurrences.push(helpers.reportOccurrence(el, baseOccurrence));
|
|
243
|
-
} else {
|
|
244
|
-
occurrences.push({ selector: '', html: '', ...baseOccurrence });
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
if (applicableCount === 0) {
|
|
249
|
-
return { ruleId: rule.ruleId, outcome: 'notApplicable', severity: 'minor', occurrences: [] };
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
return { ruleId: rule.ruleId, outcome: 'cantTell', severity: 'minor', occurrences };
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
module.exports = { id, meta, runInPage };
|