vize_carton 0.155.0

Carton - The artist's toolbox for Vize compiler
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
{
  "test.hello": "こんにちは",
  "test.greeting": "こんにちは、{name}さん!",
  "diagnostic.format": "[vize:{rule}] {message}",
  "diagnostic.format.ts": "[vize:TS{code}] {message}",
  "category.essential": "必須",
  "category.strongly_recommended": "強く推奨",
  "category.recommended": "推奨",
  "category.vapor": "Vapor",
  "category.musea": "Musea",
  "category.script": "スクリプト",
  "category.css": "CSS",
  "category.a11y": "アクセシビリティ",
  "category.security": "セキュリティ",
  "category.performance": "パフォーマンス",
  "vue/require-v-for-key.description": "v-forディレクティブにv-bind:keyを必須にする",
  "vue/require-v-for-key.message": "繰り返し要素には'v-bind:key'ディレクティブが必要です。要素: <{tag}>",
  "vue/require-v-for-key.help": "各アイテムに一意の識別子を持つ`:key`属性を追加してください",
  "vue/valid-v-for.description": "有効なv-forディレクティブを強制する",
  "vue/valid-v-for.missing_expression": "v-forディレクティブには式が必要です",
  "vue/valid-v-for.invalid_syntax": "v-forの構文が無効です: 'item in items' または '(item, index) in items' の形式が必要です",
  "vue/valid-v-for.help": "構文: v-for=\"item in items\" または v-for=\"(item, index) in items\" を使用してください",
  "vue/valid-v-if.description": "有効なv-ifディレクティブを強制する",
  "vue/valid-v-if.missing_expression": "v-ifディレクティブには式が必要です",
  "vue/valid-v-if.help": "v-ifディレクティブに式を追加してください",
  "vue/valid-v-else.description": "有効なv-elseディレクティブを強制する",
  "vue/valid-v-else.unexpected_expression": "v-elseディレクティブには式を指定できません",
  "vue/valid-v-else.missing_v_if": "v-elseには対応するv-ifまたはv-else-ifが必要です",
  "vue/valid-v-else.help": "v-elseはv-ifまたはv-else-if要素の直後に配置してください",
  "vue/valid-v-bind.description": "有効なv-bindディレクティブを強制する",
  "vue/valid-v-bind.missing_expression": "v-bindには式が必要です",
  "vue/valid-v-bind.help": "v-bindディレクティブに式を追加してください",
  "vue/valid-v-on.description": "有効なv-onディレクティブを強制する",
  "vue/valid-v-on.missing_event": "v-onにはイベント名が必要です",
  "vue/valid-v-on.help": "@clickやv-on:clickのようにイベント名を追加してください",
  "vue/valid-v-model.description": "有効なv-modelディレクティブを強制する",
  "vue/valid-v-model.missing_expression": "v-modelには式が必要です",
  "vue/valid-v-model.invalid_element": "v-modelは<{tag}>要素では使用できません",
  "vue/valid-v-model.help": "v-modelはinput、textarea、select、またはカスタムコンポーネントで使用できます",
  "vue/valid-v-show.description": "有効なv-showディレクティブを強制する",
  "vue/valid-v-show.missing_expression": "v-showディレクティブには式が必要です",
  "vue/valid-v-show.on_template": "v-showは<template>要素では使用できません",
  "vue/valid-v-show.help": "v-showディレクティブに式を追加してください",
  "vue/valid-v-slot.description": "有効なv-slotディレクティブを強制する",
  "vue/valid-v-slot.invalid_location": "v-slotはコンポーネントまたはtemplate要素でのみ使用できます",
  "vue/valid-v-slot.help": "コンポーネント内のコンポーネントまたはtemplate要素でv-slotを使用してください",
  "vue/no-use-v-if-with-v-for.description": "v-forと同じ要素でのv-ifの使用を禁止する",
  "vue/no-use-v-if-with-v-for.message_access": "同じ要素でv-ifとv-forを使用しないでください。v-if条件からv-forスコープ変数にアクセスできません",
  "vue/no-use-v-if-with-v-for.message_perf": "同じ要素でv-ifとv-forを使用しないでください。先にcomputedプロパティでリストをフィルタリングしてください",
  "vue/no-use-v-if-with-v-for.help": "v-ifをラッパー要素に移動するか、computedプロパティを使用してください",
  "vue/no-unused-vars.description": "v-forディレクティブで未使用の変数定義を禁止する",
  "vue/no-unused-vars.message": "変数'{name}'は定義されていますが使用されていません",
  "vue/no-unused-vars.help": "未使用の変数を削除するか、意図的に使用しないことを示すために_を接頭辞として付けてください",
  "vue/no-duplicate-attributes.description": "重複する属性を禁止する",
  "vue/no-duplicate-attributes.message": "属性'{attr}'が重複しています",
  "vue/no-duplicate-attributes.help": "重複する属性を削除してください",
  "vue/no-template-key.description": "template要素でのkey属性を禁止する",
  "vue/no-template-key.message": "<template>要素にはkey属性を指定できません",
  "vue/no-template-key.help": "keyをtemplate内の最初の子要素に移動してください",
  "vue/no-textarea-mustache.description": "textareaでのマスタッシュ補間を禁止する",
  "vue/no-textarea-mustache.message": "textarea内でのマスタッシュ補間は許可されていません",
  "vue/no-textarea-mustache.help": "textareaではマスタッシュ補間の代わりにv-modelを使用してください",
  "vue/no-dupe-v-else-if.description": "v-ifチェーンでの重複条件を禁止する",
  "vue/no-dupe-v-else-if.message": "この条件は同じv-if/v-else-ifチェーン内の条件と重複しています",
  "vue/no-dupe-v-else-if.help": "重複する条件を削除または変更してください",
  "vue/no-reserved-component-names.description": "予約されたコンポーネント名を禁止する",
  "vue/no-reserved-component-names.message": "'{name}'は予約されたHTML要素名であり、コンポーネント名として使用できません",
  "vue/no-reserved-component-names.help": "予約名を避けるためにコンポーネント名を変更してください",
  "vue/no-template-shadow.description": "v-forでの変数シャドーイングを禁止する",
  "vue/no-template-shadow.message": "変数'{name}'は外側のスコープの変数をシャドーイングしています",
  "vue/no-template-shadow.help": "シャドーイングを避けるために変数名を変更してください",
  "vue/no-inline-style.description": "インラインスタイル属性の使用を非推奨にする",
  "vue/no-inline-style.message": "インラインスタイルの使用を避けてください",
  "vue/no-inline-style.help": "CSSクラスまたはスコープ付きスタイルを使用してください",
  "vue/no-multi-spaces.description": "複数の連続したスペースを禁止する",
  "vue/no-multi-spaces.message": "複数の連続したスペースが見つかりました",
  "vue/no-multi-spaces.help": "複数のスペースを1つのスペースに置き換えてください",
  "vue/v-bind-style.description": "v-bindディレクティブのスタイルを強制する",
  "vue/v-bind-style.prefer_shorthand": "'v-bind:'の代わりに省略形':'を使用してください",
  "vue/v-bind-style.prefer_longform": "省略形':'の代わりに'v-bind:'を使用してください",
  "vue/v-bind-style.help": "推奨されるスタイルに置き換えてください",
  "vue/v-on-style.description": "v-onディレクティブのスタイルを強制する",
  "vue/v-on-style.prefer_shorthand": "'v-on:'の代わりに省略形'@'を使用してください",
  "vue/v-on-style.prefer_longform": "省略形'@'の代わりに'v-on:'を使用してください",
  "vue/v-on-style.help": "推奨されるスタイルに置き換えてください",
  "vue/multi-word-component-names.description": "コンポーネント名を複数単語にすることを要求する",
  "vue/multi-word-component-names.message": "コンポーネント名\"{name}\"はHTML要素との衝突を避けるために複数単語にする必要があります",
  "vue/multi-word-component-names.help": "複数の単語を使用するようにコンポーネント名を変更してください(例: \"Item\"の代わりに\"TodoItem\")",
  "vue/a11y-img-alt.description": "アクセシビリティのために画像にalt属性を必須にする",
  "vue/a11y-img-alt.message": "<img>要素にはアクセシビリティのためにalt属性が必要です",
  "vue/a11y-img-alt.help": "説明的な画像にはalt=\"説明\"を、装飾的な画像にはalt=\"\"を追加してください",
  "vue/no-unsafe-url.description": "安全でないURLバインディングについて警告する",
  "vue/no-unsafe-url.message": "動的な:{attr}バインディングはjavascript:プロトコル経由でXSSに脆弱な可能性があります",
  "vue/no-unsafe-url.static_message": "静的URL属性に安全でない可能性のあるプロトコルまたは実行可能なdata URLが使われています",
  "vue/no-unsafe-url.static_help": "http(s)、相対URL、または実行可能でないdata URLを使用してください。javascript:、vbscript:、text/html data URL、SVG data URLは避けてください",
  "vue/no-unsafe-url.help_href": "<router-link :to=\"...\">を使用するか、@braintree/sanitize-urlでURLをサニタイズすることを検討してください",
  "vue/no-unsafe-url.help_src": "バインディング前にURLがサニタイズされていることを確認してください。検証には@braintree/sanitize-urlを使用してください",
  "vue/no-unsafe-url.help": "javascript:プロトコルによるXSSを防ぐため、バインディング前にURLをサニタイズしてください",
  "vue/no-v-html.description": "XSS攻撃を防ぐためにv-htmlの使用を禁止する",
  "vue/no-v-html.message": "v-htmlはXSS攻撃につながる可能性があります。ユーザー提供のコンテンツでの使用は避けてください",
  "vue/no-v-html.help": "テキスト補間{{ }}またはサニタイゼーションライブラリの使用を検討してください",
  "vue/html-self-closing.description": "セルフクロージングスタイルを強制する",
  "vue/html-self-closing.void": "void要素はセルフクロージングにしてください",
  "vue/html-self-closing.empty": "空の要素はセルフクロージングにしてください",
  "vue/html-self-closing.component": "空のコンポーネントはセルフクロージングにしてください",
  "vue/html-self-closing.help": "セルフクロージング構文を使用してください",
  "vue/prefer-props-shorthand.description": "同名propsバインディングに省略構文を強制する",
  "vue/prefer-props-shorthand.message": "同名propsバインディングには省略構文を使用してください",
  "vue/prefer-props-shorthand.help": "propsの省略構文を使用してください",
  "vue/attribute-hyphenation.description": "テンプレートでの属性名のケーシングを強制する",
  "vue/attribute-hyphenation.message": "属性はハイフネーションする必要があります",
  "vue/attribute-hyphenation.help": "属性名にはケバブケースを使用してください",
  "vue/attribute-order.description": "テンプレートでの属性の順序を強制する",
  "vue/attribute-order.message": "属性は正しい順序で配置してください",
  "vue/attribute-order.help": "推奨される順序に属性を並び替えてください",
  "vue/no-lone-template.description": "不要なtemplate使用を禁止する",
  "vue/no-lone-template.message": "ディレクティブなしの`<template>`は不要です",
  "vue/no-lone-template.help": "`<template>`ラッパーを削除するか、ディレクティブ(v-if、v-for、v-slot)を追加してください",
  "vue/mustache-interpolation-spacing.description": "マスタッシュ補間のスペーシングを強制する",
  "vue/mustache-interpolation-spacing.expected": "マスタッシュ補間内にスペースが必要です",
  "vue/mustache-interpolation-spacing.unexpected": "マスタッシュ補間内に不要なスペースがあります",
  "vue/mustache-interpolation-spacing.help_expected": "スペースを追加: {{ value }}",
  "vue/mustache-interpolation-spacing.help_unexpected": "スペースを削除: {{value}}",
  "vue/scoped-event-names.description": "整理のためにスコープ付きイベント名を提案する",
  "vue/scoped-event-names.message": "整理のためにスコープ付きイベント名の使用を検討してください",
  "vue/scoped-event-names.help": "汎用的な名前の代わりに'update:modelValue'のようなスコープ付きイベント名を使用してください",
  "vue/component-name-in-template-casing.description": "テンプレートでのコンポーネント名のスタイルを強制する",
  "vue/component-name-in-template-casing.pascal": "コンポーネントはPascalCaseを使用してください",
  "vue/component-name-in-template-casing.kebab": "コンポーネントはkebab-caseを使用してください",
  "vue/component-name-in-template-casing.help_pascal": "コンポーネント名にはPascalCaseを使用してください",
  "vue/component-name-in-template-casing.help_kebab": "コンポーネント名にはkebab-caseを使用してください",
  "vue/no-undefined-refs.description": "テンプレート内の未定義参照を禁止する",
  "vue/no-undefined-refs.message": "'{name}'は定義されていません",
  "vue/no-undefined-refs.help": "変数がインポートされているか、<script setup>で定義されていることを確認してください",
  "vue/require-scoped-style.description": "styleブロックにscoped属性を必須にする",
  "vue/require-scoped-style.message": "styleブロックはスタイルの漏れを防ぐためにscoped属性を使用する必要があります",
  "vue/require-scoped-style.help": "styleブロックに'scoped'属性を追加してください",
  "vapor/no-inline-template.description": "非推奨のinline-template属性を禁止する",
  "vapor/no-inline-template.message": "inline-templateは非推奨であり、Vaporではサポートされていません",
  "vapor/no-inline-template.help": "inline-templateの代わりにスロットを使用してください",
  "vapor/prefer-static-class.description": "動的バインディングよりも静的クラスを優先する",
  "vapor/prefer-static-class.message": "定数値には動的な:classバインディングよりも静的なclass属性を優先してください",
  "vapor/prefer-static-class.help": "静的なクラスをclass属性に移動してください",
  "vapor/no-vue-lifecycle-events.description": "@vue:xxxの要素ごとのライフサイクルイベントを禁止する",
  "vapor/no-vue-lifecycle-events.message": "@vue:{event}ライフサイクルイベントはVaporではサポートされていません",
  "vapor/no-vue-lifecycle-events.help": "代わりにコンポーネントライフサイクルフックを使用してください",
  "script/no-options-api.description": "Options APIパターンを禁止する",
  "script/no-options-api.message": "Options APIはVaporではサポートされていません。代わりにComposition APIを使用してください",
  "script/no-options-api.help": "<script setup>とComposition APIを使用するようにリファクタリングしてください",
  "script/no-get-current-instance.description": "getCurrentInstance()を禁止する",
  "script/no-get-current-instance.message": "getCurrentInstance()はVaporコンポーネントではnullを返します",
  "script/no-get-current-instance.help": "代わりにprovide/injectまたはcomposablesを使用してください",
  "script/no-async-in-computed.description": "computedプロパティでの非同期関数を禁止する",
  "script/no-async-in-computed.message": "computedプロパティは非同期にできません。値を同期的に返す必要があります",
  "script/no-async-in-computed.help": "非同期操作にはrefとcleanup付きのwatch()を使用し、結果を書き込む前に古い処理を中断または無視してください",
  "script/no-deep-destructure-in-props.description": "definePropsでの深くネストした分割代入を禁止する",
  "script/no-deep-destructure-in-props.message": "definePropsでの深くネストした分割代入を避けてください(最大深度: {depth})",
  "script/no-deep-destructure-in-props.help": "シンプルな分割代入を使用し、ネストしたプロパティにはcomputedまたは直接のpropアクセス経由でアクセスしてください: `const props = defineProps<...>(); const nested = computed(() => props.parent.child)`",
  "musea/require-title.description": "artブロックにtitle属性を必須にする",
  "musea/require-title.message": "Artコンポーネントにはtitle属性が必要です",
  "musea/require-title.help": "コンポーネントを説明するtitle属性を追加してください",
  "a11y/img-alt.description": "画像にalt属性を必須にする",
  "a11y/img-alt.message": "<img>要素にはアクセシビリティのためにalt属性が必要です",
  "a11y/img-alt.help": "情報を伝える画像にはalt=\"説明\"を、装飾的な画像にはalt=\"\"を追加してください",
  "a11y/anchor-has-content.description": "アンカー要素にアクセシブルなコンテンツを必須にする",
  "a11y/anchor-has-content.message": "<a>要素にはアクセシブルなコンテンツが必要です",
  "a11y/anchor-has-content.help": "テキストコンテンツ、alt属性を持つ画像、またはaria-label属性を追加してください",
  "a11y/heading-has-content.description": "見出し要素にアクセシブルなコンテンツを必須にする",
  "a11y/heading-has-content.message": "<{tag}>要素にはアクセシブルなコンテンツが必要です",
  "a11y/heading-has-content.help": "テキストコンテンツまたはaria-label属性を追加してください",
  "a11y/iframe-has-title.description": "iframe要素にtitle属性を必須にする",
  "a11y/iframe-has-title.message": "<iframe>要素にはtitle属性が必要です",
  "a11y/iframe-has-title.help": "スクリーンリーダー用にiframeの内容を説明するtitle=\"...\"を追加してください",
  "a11y/no-distracting-elements.description": "<marquee>や<blink>などの注意散漫な要素を禁止する",
  "a11y/no-distracting-elements.message": "<{tag}>要素は注意散漫であり、使用すべきではありません",
  "a11y/no-distracting-elements.help": "この要素を削除するか、動きを抑制したCSSアニメーションを使用してください",
  "a11y/tabindex-no-positive.description": "正のtabindex値を禁止する",
  "a11y/tabindex-no-positive.message": "正のtabindex値の使用を避けてください",
  "a11y/tabindex-no-positive.help": "フォーカス可能な要素にはtabindex=\"0\"を、プログラムによるフォーカスのみにはtabindex=\"-1\"を使用してください",
  "a11y/click-events-have-key-events.description": "クリックイベントとともにキーボードイベントハンドラを必須にする",
  "a11y/click-events-have-key-events.message": "@clickを持つ非インタラクティブ要素にはキーボードイベントハンドラも必要です",
  "a11y/click-events-have-key-events.help": "@keydownまたは@keyupハンドラを追加するか、<button>のようなインタラクティブ要素を使用してください",
  "a11y/form-control-has-label.description": "フォームコントロールに関連付けられたラベルを必須にする",
  "a11y/form-control-has-label.message": "<{tag}>要素には関連付けられたラベルが必要です",
  "a11y/form-control-has-label.help": "aria-label、aria-labelledby、またはfor/idが一致する<label>要素を追加してください",
  "a11y/form-control-has-label.help_placeholder": "aria-label、aria-labelledby、または<label>要素を追加してください。プレースホルダーだけではアクセシブルではありません",
  "a11y/aria-props.description": "無効なARIA属性を禁止する",
  "a11y/aria-props.message": "無効なARIA属性 '{attr}'",
  "a11y/aria-props.help": "**理由:** 無効なARIA属性は、支援技術がユーザーに意図した意味を伝えることを妨げます。\n\n**有効なARIA属性**はWAI-ARIA仕様で定義されています:\nhttps://www.w3.org/TR/wai-aria/#state_prop_def\n\n**よく使うARIA属性:**\n```vue\n<!-- ラベル付け -->\n<input aria-label=\"検索\" />\n<div aria-labelledby=\"title-id\">\n\n<!-- 状態 -->\n<button aria-expanded=\"false\">\n<input aria-invalid=\"true\">\n\n<!-- 関係性 -->\n<input aria-describedby=\"hint-id\">\n<div aria-controls=\"panel-id\">\n```\n\n**注意:** カスタム`aria-*`属性は許可されていません。WAI-ARIA仕様の属性のみを使用してください。",
  "a11y/aria-props.help_suggestion": "**無効な属性:** `{invalid}`\n\n**もしかして:** `{valid}`?\n\nこれはよくあるタイプミスです。ARIA属性はWAI-ARIA仕様の特定の命名規則に従います。",
  "a11y/aria-role.description": "ARIA roleを持つ要素は、有効で非抽象的なARIA roleを使用する必要がある",
  "a11y/aria-role.message": "'{role}' は有効なARIA roleではありません",
  "a11y/aria-role.message_abstract": "'{role}' は抽象的なARIA roleであり、直接使用できません",
  "a11y/aria-role.help": "**理由:** 無効なARIA roleは、支援技術がユーザーに意図した意味を伝えることを妨げます。\n\n**有効なARIA role**はWAI-ARIA仕様で定義されています:\nhttps://www.w3.org/TR/wai-aria/#role_definitions\n\n**よく使うrole:**\n```vue\n<!-- ウィジェットrole -->\n<div role=\"button\">クリック</div>\n<div role=\"dialog\">モーダル内容</div>\n<div role=\"checkbox\">トグル</div>\n\n<!-- ランドマークrole -->\n<nav role=\"navigation\">...</nav>\n<main role=\"main\">...</main>\n<aside role=\"complementary\">...</aside>\n\n<!-- ドキュメント構造role -->\n<div role=\"heading\" aria-level=\"2\">タイトル</div>\n<div role=\"list\">...</div>\n```",
  "a11y/aria-role.help_abstract": "**抽象的なrole**はARIA仕様の基本概念であり、直接使用できません。\n\n**抽象的なrole一覧:**\n`command`, `composite`, `input`, `landmark`, `range`, `roletype`, `section`, `sectionhead`, `select`, `structure`, `widget`, `window`\n\n**代わりに具体的なroleを使用:**\n```vue\n<!-- role=\"range\" の代わりに -->\n<div role=\"slider\">...</div>\n<div role=\"progressbar\">...</div>\n\n<!-- role=\"input\" の代わりに -->\n<div role=\"textbox\">...</div>\n<div role=\"checkbox\">...</div>\n```",
  "a11y/aria-role.help_suggestion": "**無効なrole:** `{invalid}`\n\n**もしかして:** `{valid}`?\n\n有効なroleの完全なリストはWAI-ARIA仕様を参照してください。",
  "a11y/no-aria-hidden-on-focusable.description": "フォーカス可能な要素でのaria-hidden=\"true\"を禁止する",
  "a11y/no-aria-hidden-on-focusable.message": "フォーカス可能な要素にaria-hidden=\"true\"を使用してはいけません",
  "a11y/no-aria-hidden-on-focusable.help": "aria-hidden=\"true\"を削除するか、tabindex=\"-1\"で要素をフォーカス不可にしてください",
  "a11y/no-access-key.description": "accesskey属性の使用を禁止する",
  "a11y/no-access-key.message": "accesskey属性は使用すべきではありません。キーボードショートカットの競合を引き起こします",
  "a11y/no-access-key.help": "accesskey属性を削除してください。アクセスキーはプラットフォーム間で不一致なキーボードショートカットを作成し、支援技術のショートカットと競合します",
  "a11y/no-autofocus.description": "autofocus属性の使用を禁止する",
  "a11y/no-autofocus.message": "autofocus属性は使用すべきではありません。スクリーンリーダーユーザーのナビゲーションを妨げる可能性があります",
  "a11y/no-autofocus.help": "autofocus属性を削除してください。必要な場合はrefとfocus()を使用してプログラムでフォーカスを管理してください",
  "a11y/no-role-presentation-on-focusable.description": "フォーカス可能な要素でのrole=\"presentation\"またはrole=\"none\"を禁止する",
  "a11y/no-role-presentation-on-focusable.message": "フォーカス可能な要素にrole=\"presentation\"またはrole=\"none\"を使用してはいけません",
  "a11y/no-role-presentation-on-focusable.help": "role属性を削除するか、要素をフォーカス不可にしてください。presentationロールは要素がフォーカス可能なまま意味的な意味を削除します",
  "a11y/aria-unsupported-elements.description": "ARIA属性をサポートしない要素でのARIA属性を禁止する",
  "a11y/aria-unsupported-elements.message": "<{tag}>は'{attr}'属性をサポートしていません",
  "a11y/aria-unsupported-elements.help": "ARIA属性またはroleを削除してください。<meta>、<html>、<script>、<style>などの要素はレンダリングされず、ARIAをサポートしません",
  "a11y/no-redundant-roles.description": "冗長なARIAロールを禁止する",
  "a11y/no-redundant-roles.message": "<{tag}>は暗黙のロール'{role}'を持っています。role属性は冗長です",
  "a11y/no-redundant-roles.help": "冗長なrole属性を削除してください。この要素はHTMLのセマンティクスから既にこのロールを暗黙的に持っています",
  "a11y/mouse-events-have-key-events.description": "マウスイベントにフォーカス/ブラーイベントを要求する",
  "a11y/mouse-events-have-key-events.message_enter": "@mouseenter/@mouseoverにはキーボードアクセシビリティのため@focusが必要です",
  "a11y/mouse-events-have-key-events.message_leave": "@mouseleave/@mouseoutにはキーボードアクセシビリティのため@blurが必要です",
  "a11y/mouse-events-have-key-events.help": "**理由:** キーボード・タッチユーザーはマウスイベントを発火できません。\n\n**修正:**\n```vue\n<div\n  @mouseenter=\"show\"\n  @mouseleave=\"hide\"\n  @focus=\"show\"\n  @blur=\"hide\"\n  tabindex=\"0\"\n>\n  ホバーまたはフォーカスしてください\n</div>\n```",
  "a11y/alt-text.description": "メディア要素に代替テキストを要求する",
  "a11y/alt-text.message_img": "<img>要素にはalt属性が必要です",
  "a11y/alt-text.message_area": "<area>要素にはalt、aria-label、またはaria-labelledbyが必要です",
  "a11y/alt-text.message_input_image": "<input type=\"image\">にはalt、aria-label、またはaria-labelledbyが必要です",
  "a11y/alt-text.message_object": "<object>要素にはtitle、aria-label、またはaria-labelledbyが必要です",
  "a11y/alt-text.help_img": "alt属性を追加してください: `<img alt=\"説明\">` または装飾的な画像には `<img alt=\"\">`",
  "a11y/alt-text.help_area": "<area>要素にalt、aria-label、またはaria-labelledbyを追加してください",
  "a11y/alt-text.help_input_image": "<input type=\"image\">にalt、aria-label、またはaria-labelledbyを追加してください",
  "a11y/alt-text.help_object": "<object>要素にtitle、aria-label、またはaria-labelledbyを追加してください",
  "a11y/anchor-is-valid.description": "アンカー要素に有効なhrefを強制する",
  "a11y/anchor-is-valid.message_empty": "<a>要素のhref属性が空です",
  "a11y/anchor-is-valid.message_hash": "<a>要素のhref=\"#\"は有効なナビゲーション先ではありません",
  "a11y/anchor-is-valid.message_javascript": "<a>要素のjavascript: hrefは推奨されません",
  "a11y/anchor-is-valid.message_missing": "<a>要素にhref属性がありません",
  "a11y/anchor-is-valid.help": "**修正:**\n```vue\n<!-- 有効なURLを使用 -->\n<a href=\"/about\">About</a>\n\n<!-- クリックハンドラには<button>を使用 -->\n<button @click=\"handleClick\">アクション</button>\n\n<!-- 動的URLの場合 -->\n<a :href=\"url\">リンク</a>\n```",
  "a11y/label-has-for.description": "ラベルに関連するフォームコントロールを要求する",
  "a11y/label-has-for.message": "<label>にはfor属性またはフォームコントロール(input、select、textarea)のラップが必要です",
  "a11y/label-has-for.help": "**修正方法:**\n\n1. for属性を使用:\n```vue\n<label for=\"name\">名前</label>\n<input id=\"name\" type=\"text\">\n```\n\n2. フォームコントロールをラップ:\n```vue\n<label>名前 <input type=\"text\"></label>\n```",
  "a11y/interactive-supports-focus.description": "インタラクティブロール要素にフォーカス可能であることを要求する",
  "a11y/interactive-supports-focus.message": "role=\"{role}\"を持つ要素はフォーカス可能でなければなりません(tabindex=\"0\"を追加)",
  "a11y/interactive-supports-focus.help": "**理由:** インタラクティブロールはキーボードユーザーが操作できることを意味します。\n\n**修正:**\n```vue\n<div role=\"button\" tabindex=\"0\" @click=\"handle\">\n  クリック\n</div>\n```\n\n**より良い方法:** ネイティブのインタラクティブ要素を使用:\n```vue\n<button @click=\"handle\">クリック</button>\n```",
  "a11y/role-has-required-aria-props.description": "ARIAロールに必須プロパティを要求する",
  "a11y/role-has-required-aria-props.message": "role=\"{role}\"を持つ要素には'{prop}'属性が必要です",
  "a11y/role-has-required-aria-props.help": "**ロール`{role}`の必須属性:** {props}\n\n**例:**\n```vue\n<div role=\"{role}\" {props}=\"...\">\n  コンテンツ\n</div>\n```",
  "a11y/media-has-caption.description": "メディア要素にキャプションを要求する",
  "a11y/media-has-caption.message": "<{tag}>要素にはアクセシビリティのため<track kind=\"captions\">が必要です",
  "a11y/media-has-caption.help": "**修正:**\n```vue\n<video src=\"movie.mp4\">\n  <track kind=\"captions\" src=\"captions.vtt\" />\n</video>\n```\n\n**代替手段:**\n- 装飾的なメディアには`muted`属性を追加\n- 説明付きメディアには`aria-label`を追加",
  "a11y/no-static-element-interactions.description": "静的要素のイベントハンドラを禁止する",
  "a11y/no-static-element-interactions.message": "<{tag}>は静的要素であり、インタラクティブなイベントハンドラを持つべきではありません",
  "a11y/no-static-element-interactions.help": "**理由:** 非インタラクティブ要素(div、spanなど)はroleなしでクリック/キーボードハンドラを持つべきではありません。\n\n**修正方法:**\n\n1. ネイティブのインタラクティブ要素を使用:\n```vue\n<button @click=\"handle\">クリック</button>\n```\n\n2. roleとtabindexを追加:\n```vue\n<div role=\"button\" tabindex=\"0\" @click=\"handle\">\n  クリック\n</div>\n```",
  "vue/use-unique-element-ids.description": "静的リテラルの代わりにuseId()を使用してユニークな要素IDを強制する",
  "vue/use-unique-element-ids.message": "静的な id=\"{value}\" は、コンポーネントが複数回レンダリングされると重複IDを引き起こす可能性があります",
  "vue/use-unique-element-ids.message_reference": "静的なID参照 '{value}' は一意でないIDを参照する可能性があります",
  "vue/use-unique-element-ids.help": "**理由:** 静的な`id`属性は、コンポーネントが複数回レンダリングされると重複IDを引き起こし、アクセシビリティの問題や機能の破損(例:label-input関連付け)につながります。\n\n**修正:** Vue 3.5+ の `useId()` を使用:\n```vue\n<script setup>\nimport { useId } from 'vue'\n\nconst id = useId()\n</script>\n\n<template>\n  <label :for=\"id\">名前:</label>\n  <input :id=\"id\" type=\"text\">\n</template>\n```\n\n**メリット:**\n- 各コンポーネントインスタンスにユニークなIDを生成\n- サーバーとクライアントのレンダリング間で安定(SSR対応)\n- label、ARIA属性、フォーム関連付けに対応",
  "vue/use-unique-element-ids.help_has_use_id": "**良い:** すでに `useId()` を使用しています。生成されたIDをテンプレートで使用してください:\n```vue\n<label :for=\"id\">名前:</label>\n<input :id=\"id\" type=\"text\">\n```\n\n静的な `id`、`for`、ARIA ID参照を動的な値に置き換えてください。",
  "vue/no-child-content.description": "v-htmlまたはv-text使用時に子コンテンツを禁止する",
  "vue/no-child-content.message": "v-{directive}を持つ要素の子コンテンツは上書きされます",
  "vue/no-child-content.help": "`v-html`または`v-text`を使用する場合、子コンテンツは無視されます。子コンテンツを削除してください",
  "vue/valid-attribute-name.description": "有効な属性名を必須にする",
  "vue/valid-attribute-name.message": "属性名 '{name}' は無効です",
  "vue/valid-attribute-name.help": "属性名にスペース、引用符、`>`、`/`、`=`、制御文字を含めることはできません",
  "vue/no-v-text-v-html-on-component.description": "コンポーネント要素でのv-text/v-htmlを禁止する",
  "vue/no-v-text-v-html-on-component.message": "v-{directive}はコンポーネント<{tag}>では使用できません",
  "vue/no-v-text-v-html-on-component.help": "コンポーネントは独自のレンダリングロジックを持っています。propsまたはスロット経由でコンテンツを渡してください",
  "vue/require-component-is.description": "`<component>`要素に`v-bind:is`を必須にする",
  "vue/require-component-is.message": "<component>には`:is`または`is`属性が必要です",
  "vue/require-component-is.help": "`<component>`は動的コンポーネントであり、レンダリングするコンポーネントを決定するために`is`属性が必要です",
  "vue/no-useless-template-attributes.description": "<template>要素の不要な属性を禁止する",
  "vue/no-useless-template-attributes.message": "'{attr}'は<template>では無意味です — 無視されます",
  "vue/no-useless-template-attributes.help": "`<template>`はDOMにレンダリングされません。構造的ディレクティブ(v-if、v-for、v-slot)と`:key`のみが有効です",
  "vue/valid-v-memo.description": "有効なv-memoディレクティブを強制する",
  "vue/valid-v-memo.missing_expression": "v-memoには依存配列の式が必要です",
  "vue/valid-v-memo.unexpected_argument": "v-memoは引数を受け付けません",
  "vue/valid-v-memo.unexpected_modifier": "v-memoは修飾子を受け付けません",
  "vue/valid-v-memo.help": "v-memo=\"[valueA, valueB]\"のように依存配列を指定してください",
  "vue/use-v-on-exact.description": "システム修飾子使用時にv-onに.exact修飾子を強制する",
  "vue/use-v-on-exact.message": ".exactなしの@{event}はシステム修飾子が押されている時も発火します",
  "vue/use-v-on-exact.help": "`@click`はCtrl/Shift/Alt/Metaが押されている時も発火します。`.exact`を追加してシステム修飾子なしの場合のみ発火するようにしてください",
  "vue/v-slot-style.description": "v-slotディレクティブのスタイルを強制する",
  "vue/v-slot-style.message_shorthand": "`v-slot:name`の代わりに省略記法`#name`を使用してください",
  "vue/v-slot-style.message_longform": "`#name`の代わりに`v-slot:name`を使用してください",
  "vue/v-slot-style.help": "**省略記法:** `<template #header>` (デフォルト)\n**完全記法:** `<template v-slot:header>`\n\n一貫したスタイルを選択してください。",
  "vue/prop-name-casing.description": "テンプレートでのprop名にkebab-caseを強制する",
  "vue/prop-name-casing.message": "prop '{name}'は'{kebab}'(kebab-case)にすべきです",
  "vue/prop-name-casing.help": "テンプレートではprop名にkebab-caseを使用してください:\n```vue\n<!-- 悪い例 -->\n<MyComponent myProp=\"value\" />\n\n<!-- 良い例 -->\n<MyComponent my-prop=\"value\" />\n```",
  "vue/html-quotes.description": "HTML属性の引用符スタイルを強制する",
  "vue/html-quotes.message_double": "シングルクォートではなくダブルクォートを使用してください",
  "vue/html-quotes.message_single": "ダブルクォートではなくシングルクォートを使用してください",
  "vue/html-quotes.help": "HTML属性値に一貫した引用符スタイルを使用してください。",
  "vue/component-definition-name-casing.description": "コンポーネントファイル名にPascalCaseを強制する",
  "vue/component-definition-name-casing.message": "コンポーネントファイル名'{name}'はPascalCaseにすべきです",
  "vue/component-definition-name-casing.help": "ファイル名をPascalCaseに変更してください:\n```\nmy-component.vue -> MyComponent.vue\nmyComponent.vue  -> MyComponent.vue\n```",
  "compiler.parse_error": "パースエラー: {message}",
  "compiler.unexpected_token": "予期しないトークン'{token}'",
  "compiler.unclosed_tag": "閉じられていないタグ<{tag}>",
  "compiler.invalid_directive": "無効なディレクティブ構文: {directive}",
  "compiler.missing_end_tag": "<{tag}>の終了タグがありません",
  "cli.compiling": "{count}ファイルをコンパイル中...",
  "cli.compiled": "{count}ファイルを{time}msでコンパイルしました",
  "cli.error_count": "{count}個のエラーが見つかりました",
  "cli.warning_count": "{count}個の警告が見つかりました",
  "cli.slow_file_warning": "{file}のコンパイルが遅いです({time}ms)",
  "cli.suggest_split": "大きなコンポーネントを小さなものに分割することを検討してください",
  "cli.suggest_template": "大きなテンプレートが検出されました({size}バイト)。一部を子コンポーネントに抽出することを検討してください",
  "ssr/no-browser-globals-in-ssr.description": "SSRコンテキストでブラウザ専用グローバルを禁止する",
  "ssr/no-browser-globals-in-ssr.message": "'{name}'はブラウザ専用グローバルであり、SSRでは利用できません",
  "ssr/no-browser-globals-in-ssr.help": "ブラウザ専用のコードはonMounted()などのクライアントライフサイクルフックに移動するか、<ClientOnly>を使用してください",
  "ssr/no-hydration-mismatch.description": "ハイドレーションミスマッチを引き起こす非決定的な値を禁止する",
  "ssr/no-hydration-mismatch.message": "'{pattern}'はサーバーとクライアント間でハイドレーションミスマッチを引き起こす可能性があります",
  "ssr/no-hydration-mismatch.message-attr": "属性バインディングの'{pattern}'はハイドレーションミスマッチを引き起こす可能性があります",
  "ssr/no-hydration-mismatch.help": "一意のIDにはuseId()を使用するか、クライアント専用の値には<ClientOnly>でラップしてください",
  "ts/2304.message": "'{name}'が見つかりません",
  "ts/2304.help": "**`{name}`** が定義されていません。\n\n**考えられる原因:**\n- 変数がインポートまたは宣言されていない\n- 名前にタイプミスがある\n- 変数が別のスコープで定義されている\n\n**解決方法:**\n```ts\n// 1. モジュールからインポート\nimport { {name} } from './module';\n\n// 2. script setupで宣言\nconst {name} = ...;\n\n// 3. 名前のタイプミスを確認\n```",
  "ts/2322.message": "型'{source}'を型'{target}'に割り当てることはできません",
  "ts/2322.help": "**型の不一致が検出されました。**\n\n`{target}`を期待する場所に`{source}`型の値を割り当てようとしています。\n\n**一般的な修正方法:**\n- 値が期待される型と一致するか確認\n- 確信がある場合は型アサーションを使用: `value as {target}`\n- 実際の型を受け入れるように型定義を更新\n\n**例:**\n```ts\n// targetが'number'でsourceが'string'の場合\nconst value = parseInt(stringValue); // stringをnumberに変換\n```",
  "ts/2339.message": "プロパティ'{name}'は型'{type}'に存在しません",
  "ts/2339.help": "**プロパティ`{name}`が`{type}`に見つかりません。**\n\n**考えられる原因:**\n- プロパティ名のスペルミス\n- この型にプロパティが存在しない\n- 先に型を絞り込む必要がある\n\n**解決方法:**\n```ts\n// 1. プロパティの存在確認\nif ('{name}' in obj) {\n  obj.{name};\n}\n\n// 2. オプショナルチェーンを使用\nobj?.{name};\n\n// 3. 型定義にプロパティを追加\ninterface MyType {\n  {name}: SomeType;\n}\n```",
  "ts/2345.message": "型'{source}'の引数を型'{target}'のパラメータに割り当てることはできません",
  "ts/2345.help": "**引数の型が一致しません。**\n\n関数は`{target}`を期待していますが、`{source}`を受け取りました。\n\n**解決方法:**\n- 値を期待される型に変換\n- 正しい引数を渡しているか確認\n- 必要に応じて関数のシグネチャを更新\n\n```ts\n// 例: 関数がnumberを期待する場合\nfunc(Number(value)); // numberに変換\n```",
  "ts/2349.message": "この式は呼び出し可能ではありません",
  "ts/2349.help": "**関数ではない値を呼び出そうとしています。**\n\n関数ではないものを呼び出そうとしています。\n\n**一般的な原因:**\n- 値が`undefined`または`null`\n- 関数ではなくオブジェクト\n- プロパティがメソッドではなく値を返す\n\n**解決方法:**\n```ts\n// 呼び出す前に関数かどうか確認\nif (typeof maybeFunc === 'function') {\n  maybeFunc();\n}\n\n// またはオプショナルチェーンを使用\nmaybeFunc?.();\n```",
  "ts/2531.message": "オブジェクトは'null'である可能性があります",
  "ts/2531.help": "**null値の可能性が検出されました。**\n\nTypeScriptはこの値が`null`である可能性を警告しています。\n\n**解決方法:**\n```ts\n// 1. オプショナルチェーンを使用\nobj?.property;\n\n// 2. Null合体演算子を使用\nconst value = obj ?? defaultValue;\n\n// 3. nullチェックを追加\nif (obj !== null) {\n  obj.property;\n}\n\n// 4. 非nullアサーション(確実な場合のみ)\nobj!.property; // 100%確実な場合のみ\n```",
  "ts/2532.message": "オブジェクトは'undefined'である可能性があります",
  "ts/2532.help": "**undefined値の可能性が検出されました。**\n\nTypeScriptはこの値が`undefined`である可能性を警告しています。\n\n**解決方法:**\n```ts\n// 1. オプショナルチェーンを使用\nobj?.property;\n\n// 2. デフォルト値を提供\nconst value = obj ?? defaultValue;\n\n// 3. undefinedチェックを追加\nif (obj !== undefined) {\n  obj.property;\n}\n\n// 4. 値を初期化\nconst obj = ref<Type>(initialValue);\n```",
  "ts/2554.message": "{expected}個の引数が必要ですが、{actual}個指定されました",
  "ts/2554.help": "**引数の数が間違っています。**\n\n関数は**{expected}**個の引数を期待していますが、**{actual}**個指定されました。\n\n**解決方法:**\n- 不足している引数を追加\n- 余分な引数を削除\n- 関数のシグネチャを確認\n\n```ts\n// 関数定義を確認\nfunction example(a: string, b?: number) { }\n// 必須: a (string)\n// オプション: b (number)\n```",
  "ts/2555.message": "{expected}個の引数が必要ですが、{actual}個指定されました",
  "ts/2555.help": "**引数が多すぎます。**\n\n関数は**{expected}**個の引数のみ受け付けますが、**{actual}**個渡されました。\n\n**解決方法:**\n余分な引数を削除するか、関数を更新してより多くのパラメータを受け入れるようにしてください。",
  "ts/2307.message": "モジュール'{module}'またはその型宣言が見つかりません",
  "ts/2307.help": "**モジュールが見つかりません: `{module}`**\n\n**考えられる原因:**\n- パッケージがインストールされていない\n- インポートパスが間違っている\n- 型宣言が不足している\n\n**解決方法:**\n```bash\n# 1. パッケージをインストール\nnpm install {module}\n\n# 2. 型宣言をインストール(別パッケージの場合)\nnpm install -D @types/{module}\n```\n\n**ローカルモジュールの場合:**\n- ファイルパスが正しいか確認\n- 相対パスを使用: `./` または `../`\n- ファイル拡張子を確認",
  "ts/2300.message": "識別子'{name}'が重複しています",
  "ts/2300.help": "**`{name}`の宣言が重複しています。**\n\nこの識別子は既にこのスコープで宣言されています。\n\n**解決方法:**\n- いずれかの宣言の名前を変更\n- 重複を削除\n- 同じものを2回インポートしていないか確認",
  "ts/2451.message": "ブロックスコープの変数'{name}'を再宣言できません",
  "ts/2451.help": "**変数`{name}`は既に宣言されています。**\n\n同じスコープで`let`または`const`変数を再宣言することはできません。\n\n**解決方法:**\n```ts\n// 1. 変数名を変更\nconst {name}2 = ...;\n\n// 2. 再宣言ではなく代入(letの場合)\n{name} = newValue;\n\n// 3. 別のスコープを使用\n{\n  const {name} = ...; // 新しいブロックではOK\n}\n```",
  "ts/7006.message": "パラメータ'{name}'の型は暗黙的に'any'になります",
  "ts/7006.help": "**`{name}`の型注釈がありません。**\n\nTypeScriptはこのパラメータの型を推論できません。\n\n**解決方法 - 明示的な型を追加:**\n```ts\n// 変更前\nfunction example({name}) { }\n\n// 変更後\nfunction example({name}: string) { }\n\n// デフォルト値あり(型推論される)\nfunction example({name} = 'default') { }\n```",
  "ts/2741.message": "プロパティ'{name}'は型'{source}'にありませんが、型'{target}'では必須です",
  "ts/2741.help": "**必須プロパティがありません: `{name}`**\n\n型`{target}`はプロパティ`{name}`を必要としていますが、`{source}`には存在しません。\n\n**解決方法:**\n```ts\n// 1. 不足しているプロパティを追加\nconst obj: {target} = {\n  ...existingProps,\n  {name}: value,\n};\n\n// 2. 型定義でプロパティをオプショナルに\ninterface {target} {\n  {name}?: Type; // オプショナル\n}\n```",
  "ts/2344.message": "型'{type}'は制約'{constraint}'を満たしていません",
  "ts/2344.help": "**型制約違反です。**\n\n型`{type}`は`{constraint}`の要件を満たしていません。\n\n**解決方法:**\n型が必要な制約を拡張または実装していることを確認してください:\n```ts\n// 例: TはSomeBaseを拡張する必要がある\nfunction example<T extends SomeBase>(value: T) { }\n```",
  "ts/2351.message": "この式はコンストラクト可能ではありません",
  "ts/2351.help": "**この値に`new`を使用できません。**\n\nこの式は`new`と一緒に使用できません。\n\n**一般的な原因:**\n- クラスやコンストラクタ関数ではない\n- クラスではなく型をインスタンス化しようとしている\n\n**例:**\n```ts\n// ❌ 間違い: 型エイリアスはクラスではない\ntype MyType = { x: number };\nnew MyType(); // エラー!\n\n// ✅ 正しい: クラスを使用\nclass MyClass { x: number = 0; }\nnew MyClass(); // OK\n```",
  "ts/vue/9001.message": "'{name}'のprop型が無効です",
  "ts/vue/9001.help": "**`{name}`のprop型が一致しません。**\n\npropの値が`defineProps`で定義された期待される型と一致しません。\n\n**解決方法:**\n```ts\n// prop定義を確認\ndefineProps<{\n  {name}: string; // 期待される型\n}>();\n\n// 親が正しい型を渡しているか確認\n<MyComponent :{name}=\"stringValue\" />\n```",
  "ts/vue/9002.message": "無効なemit呼び出し: '{event}'",
  "ts/vue/9002.help": "**`{event}`のemit使用が無効です。**\n\nemit呼び出しが定義されたイベントと一致しません。\n\n**解決方法:**\n```ts\n// emit定義を確認\nconst emit = defineEmits<{\n  {event}: [payload: PayloadType];\n}>();\n\n// 正しいペイロードで呼び出し\nemit('{event}', payload);\n```",
  "ts/vue/9003.message": "不明なコンポーネント: '{name}'",
  "ts/vue/9003.help": "**コンポーネント`{name}`が見つかりません。**\n\n**考えられる原因:**\n- コンポーネントがインポートされていない\n- コンポーネント名のスペルミス\n- ケバブケースとパスカルケースの違い\n\n**解決方法:**\n```ts\n// コンポーネントをインポート\nimport {name} from './components/{name}.vue';\n\n// またはグローバルに登録\napp.component('{name}', {name});\n```",
  "ts/vue/9004.message": "無効なslot使用: '{name}'",
  "ts/vue/9004.help": "**スロット`{name}`の使用エラー。**\n\n**一般的な問題:**\n- コンポーネントにスロットが存在しない\n- スロットpropsが間違っている\n\n**使用方法:**\n```vue\n<template>\n  <MyComponent>\n    <template #{name}=\"{ prop }\">\n      <!-- スロットコンテンツ -->\n    </template>\n  </MyComponent>\n</template>\n```",
  "ts/vue/9005.message": "無効なディレクティブ: '{name}'",
  "ts/vue/9005.help": "**ディレクティブ`{name}`エラー。**\n\n**一般的な原因:**\n- ディレクティブが登録されていない\n- ディレクティブの構文が間違っている\n\n**解決方法:**\n```ts\n// ローカルにディレクティブを登録\nimport { v{name} } from './directives';\n\n// またはグローバルに\napp.directive('{name}', {\n  mounted(el, binding) { ... }\n});\n```",
  "ts/vue/9006.message": "リアクティビティの問題が検出されました",
  "ts/vue/9006.help": "**リアクティビティが失われる可能性があります。**\n\n値のアクセス方法や分割代入の方法により、リアクティビティが失われる可能性があります。\n\n**一般的な問題と修正:**\n```ts\n// ❌ 分割代入でリアクティビティが失われる\nconst { count } = props;\n\n// ✅ toRefsを使用\nconst { count } = toRefs(props);\n\n// ❌ refの値を代入\nlet x = ref(0).value;\n\n// ✅ refを保持\nconst x = ref(0);\n```",

  "a11y/no-i-for-icon.description": "<i>要素をアイコンとして使用することを禁止",
  "a11y/no-i-for-icon.message": "アイコンCSSクラスが付与された<i>要素はアイコンとして使用すべきではありません。セマンティックな要素を使用してください",
  "a11y/no-i-for-icon.help": "**理由:** `<i>`要素はHTMLでは*イタリック体テキスト*を意味します。アイコンフォントとして使用するとアクセシビリティの問題が生じます。スクリーンリーダーが意味のないコンテンツを読み上げる可能性があります。\n\n**修正:** `<span>`と`aria-hidden=\"true\"`を使用してください:\n```vue\n<span class=\"fas fa-home\" aria-hidden=\"true\"></span>\n<span class=\"sr-only\">ホーム</span>\n```\n\nまたはSVGアイコンコンポーネントを使用してください。",

  "a11y/no-refer-to-non-existent-id.description": "存在しないIDへの参照を禁止",
  "a11y/no-refer-to-non-existent-id.message": "{kind}属性が参照するid=\"{id}\"はテンプレート内に存在しません",
  "a11y/no-refer-to-non-existent-id.help": "**理由:** `for`、`aria-labelledby`、`aria-describedby`等のID参照属性は、そのIDを持つ要素が存在する必要があります。参照が壊れると関連付けが無効になります。\n\n**修正:** 参照先のIDがテンプレート内に存在することを確認してください:\n```vue\n<label for=\"name\">名前:</label>\n<input id=\"name\" type=\"text\">\n```",

  "vue/use-unique-element-ids.message_form": "フォーム要素に静的id=\"{value}\"が指定されています。ラベル/入力の関連付けが正しく機能するようuseId()を使用してください",
  "vue/use-unique-element-ids.message_aria_ref": "ARIA参照を持つ要素に静的id=\"{value}\"が指定されています。ARIA関連付けの一意性を保つためuseId()を使用してください",

  "vue/permitted-contents.description": "HTMLコンテンツモデルルールを強制",
  "vue/permitted-contents.block_in_inline": "<{child}>(ブロック要素)は<{parent}>(フレージングコンテンツのみ許可)内に配置できません",
  "vue/permitted-contents.interactive_nesting": "<{tag}>はインタラクティブ要素であり、他のインタラクティブ要素内にネストできません",
  "vue/permitted-contents.invalid_child": "<{child}>は<{parent}>の直接の子要素として許可されていません",
  "vue/permitted-contents.help": "**理由:** HTMLにはコンテンツモデルルールがあり、どの要素をどの要素内にネストできるかが定義されています。これらのルールに違反すると、ブラウザがDOMを自動修正し、予期しない表示になります。\n\n**主なルール:**\n- `<p>`、`<span>`、`<a>`にはフレージング(インライン)コンテンツのみ配置可能\n- `<a>`と`<button>`は互いにネスト不可\n- `<ul>/<ol>`の直接の子は`<li>`のみ\n- `<table>`の直接の子は`<thead>`、`<tbody>`、`<tfoot>`、`<tr>`、`<caption>`のみ",

  "category.html_conformance": "HTML準拠",

  "html/deprecated-element.message": "<{tag}>は非推奨のHTML要素です",
  "html/deprecated-element.help": "この要素はHTML Living Standardで廃止されています。CSSを使用したモダンなHTML要素を代わりに使用してください。",

  "html/deprecated-attr.message": "<{tag}>の\"{attr}\"属性は非推奨です",
  "html/deprecated-attr.help": "代わりに{suggestion}を使用してください。",

  "html/no-consecutive-br.message": "連続する<br>要素が検出されました",
  "html/no-consecutive-br.help": "複数の<br>タグの代わりに、<p>要素やCSSのmargin/paddingを使用してください。",

  "html/id-duplication.message": "テンプレート内にid=\"{id}\"が重複しています",
  "html/id-duplication.help": "要素のIDはドキュメント内で一意でなければなりません。IDの重複はlabel関連付け、ARIA参照、getElementById()を壊します。",

  "html/require-datetime.message": "<time>要素にはコンテンツが有効な日時文字列でない場合、datetime属性が必要です",
  "html/require-datetime.help": "機械可読な日時値を持つdatetime属性を追加してください。例: <time datetime=\"2024-12-25\">クリスマス</time>",

  "html/no-empty-palpable-content.message": "<{tag}>要素は空ですが、表示コンテンツが期待されています",
  "html/no-empty-palpable-content.help": "テキストコンテンツ、子要素を追加するか、アクセシブルなコンテンツにはaria-labelを使用してください。",

  "html/no-duplicate-dt.message": "<dl>内に重複する<dt>用語「{term}」があります",
  "html/no-duplicate-dt.help": "定義リスト内の各用語は一意であるべきです。1つの<dt>に定義をまとめるか、異なる用語を使用してください。",

  "a11y/heading-levels.message": "見出しレベルが<{from}>から<{to}>にスキップされています",
  "a11y/heading-levels.help": "見出しレベルは1つずつ増加すべきです。スクリーンリーダーのユーザーは見出しレベルでナビゲートするため、レベルのスキップはドキュメント構造を混乱させます。",

  "a11y/use-list.message": "テキストがリスト項目のように見えます。適切なリストセマンティクスには<ul>または<ol>を使用してください",
  "a11y/use-list.help": "スクリーンリーダーは箇条書き文字をリスト項目として識別できません。代わりにセマンティックな<ul>/<ol>と<li>要素を使用してください。",

  "a11y/placeholder-label-option.message": "プレースホルダー<option>にはdisabledまたはhidden属性が必要です",
  "a11y/placeholder-label-option.help": "プレースホルダー<option>にdisabledまたはhiddenを追加して、選択されないようにしてください:\n<option value=\"\" disabled>選択してください</option>",

  "a11y/landmark-roles.duplicate_main": "ページごとに<main>ランドマークは1つのみ許可されます",
  "a11y/landmark-roles.help_duplicate_main": "ページには<main>ランドマークが1つだけ必要です。重複する<main>要素を削除するか、role=\"main\"を1つの要素にのみ使用してください。",
  "a11y/landmark-roles.missing_label": "複数の\"{role}\"ランドマークがラベルなしで存在します",
  "a11y/landmark-roles.help_missing_label": "同じ種類のランドマークが複数ある場合、ユーザーが区別できるようにそれぞれにaria-labelまたはaria-labelledbyを付けてください。",

  "vue/no-boolean-attr-value.message": "ブール属性\"{attr}\"に値\"{value}\"を指定すべきではありません",
  "vue/no-boolean-attr-value.help": "値を削除してください。{attr}=\"...\"ではなく{attr}のみを使用してください。"
}