lighthouse 11.2.0 → 11.3.0

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.
Files changed (106) hide show
  1. package/cli/cli-flags.d.ts +5 -1
  2. package/cli/cli-flags.js +5 -1
  3. package/cli/test/smokehouse/__snapshots__/report-assert-test.js.snap +2 -2
  4. package/cli/test/smokehouse/frontends/smokehouse-bin.js +18 -7
  5. package/cli/test/smokehouse/lighthouse-runners/bundle.d.ts +2 -4
  6. package/cli/test/smokehouse/lighthouse-runners/bundle.js +8 -4
  7. package/cli/test/smokehouse/lighthouse-runners/cli.d.ts +2 -4
  8. package/cli/test/smokehouse/lighthouse-runners/cli.js +5 -3
  9. package/cli/test/smokehouse/lighthouse-runners/devtools.d.ts +2 -1
  10. package/cli/test/smokehouse/lighthouse-runners/devtools.js +3 -1
  11. package/cli/test/smokehouse/smokehouse.d.ts +4 -2
  12. package/cli/test/smokehouse/smokehouse.js +10 -7
  13. package/core/audits/byte-efficiency/legacy-javascript.js +2 -2
  14. package/core/audits/image-size-responsive.js +1 -1
  15. package/core/audits/layout-shift-elements.js +1 -1
  16. package/core/audits/lcp-lazy-loaded.js +2 -2
  17. package/core/audits/long-tasks.js +1 -1
  18. package/core/audits/metrics/cumulative-layout-shift.js +2 -2
  19. package/core/audits/metrics/interaction-to-next-paint.js +2 -2
  20. package/core/audits/metrics/largest-contentful-paint.js +1 -1
  21. package/core/audits/no-unload-listeners.js +1 -1
  22. package/core/audits/preload-fonts.js +1 -1
  23. package/core/audits/prioritize-lcp-image.js +1 -1
  24. package/core/audits/unsized-images.js +1 -1
  25. package/core/audits/work-during-interaction.js +1 -1
  26. package/core/config/config.d.ts +1 -2
  27. package/core/config/config.js +18 -62
  28. package/core/config/constants.d.ts +1 -3
  29. package/core/config/constants.js +4 -18
  30. package/core/config/default-config.js +8 -8
  31. package/core/config/filters.d.ts +0 -8
  32. package/core/config/filters.js +0 -28
  33. package/core/config/validation.d.ts +4 -15
  34. package/core/config/validation.js +18 -63
  35. package/core/gather/base-artifacts.d.ts +2 -2
  36. package/core/gather/base-artifacts.js +5 -5
  37. package/core/gather/driver/navigation.d.ts +1 -1
  38. package/core/gather/driver/navigation.js +1 -1
  39. package/core/gather/driver/prepare.d.ts +3 -18
  40. package/core/gather/driver/prepare.js +21 -43
  41. package/core/gather/driver/storage.d.ts +2 -1
  42. package/core/gather/driver/storage.js +3 -12
  43. package/core/gather/gatherers/inspector-issues.js +1 -0
  44. package/core/gather/navigation-runner.d.ts +3 -31
  45. package/core/gather/navigation-runner.js +46 -113
  46. package/core/lib/navigation-error.d.ts +8 -3
  47. package/core/lib/navigation-error.js +19 -11
  48. package/dist/report/bundle.esm.js +4 -4
  49. package/dist/report/flow.js +7 -7
  50. package/dist/report/standalone.js +5 -5
  51. package/package.json +8 -8
  52. package/report/renderer/performance-category-renderer.js +2 -1
  53. package/shared/localization/locales/ar-XB.json +78 -75
  54. package/shared/localization/locales/ar.json +78 -75
  55. package/shared/localization/locales/bg.json +78 -75
  56. package/shared/localization/locales/ca.json +78 -75
  57. package/shared/localization/locales/cs.json +78 -75
  58. package/shared/localization/locales/da.json +78 -75
  59. package/shared/localization/locales/de.json +81 -78
  60. package/shared/localization/locales/el.json +84 -81
  61. package/shared/localization/locales/en-GB.json +78 -75
  62. package/shared/localization/locales/en-US.json +26 -23
  63. package/shared/localization/locales/en-XA.json +78 -75
  64. package/shared/localization/locales/en-XL.json +26 -23
  65. package/shared/localization/locales/es-419.json +78 -75
  66. package/shared/localization/locales/es.json +78 -75
  67. package/shared/localization/locales/fi.json +79 -76
  68. package/shared/localization/locales/fil.json +78 -75
  69. package/shared/localization/locales/fr.json +78 -75
  70. package/shared/localization/locales/he.json +78 -75
  71. package/shared/localization/locales/hi.json +78 -75
  72. package/shared/localization/locales/hr.json +78 -75
  73. package/shared/localization/locales/hu.json +78 -75
  74. package/shared/localization/locales/id.json +78 -75
  75. package/shared/localization/locales/it.json +79 -76
  76. package/shared/localization/locales/ja.json +78 -75
  77. package/shared/localization/locales/ko.json +78 -75
  78. package/shared/localization/locales/lt.json +78 -75
  79. package/shared/localization/locales/lv.json +78 -75
  80. package/shared/localization/locales/nl.json +78 -75
  81. package/shared/localization/locales/no.json +78 -75
  82. package/shared/localization/locales/pl.json +78 -75
  83. package/shared/localization/locales/pt-PT.json +78 -75
  84. package/shared/localization/locales/pt.json +79 -76
  85. package/shared/localization/locales/ro.json +78 -75
  86. package/shared/localization/locales/ru.json +78 -75
  87. package/shared/localization/locales/sk.json +78 -75
  88. package/shared/localization/locales/sl.json +78 -75
  89. package/shared/localization/locales/sr-Latn.json +78 -75
  90. package/shared/localization/locales/sr.json +78 -75
  91. package/shared/localization/locales/sv.json +78 -75
  92. package/shared/localization/locales/ta.json +78 -75
  93. package/shared/localization/locales/te.json +78 -75
  94. package/shared/localization/locales/th.json +78 -75
  95. package/shared/localization/locales/tr.json +78 -75
  96. package/shared/localization/locales/uk.json +78 -75
  97. package/shared/localization/locales/vi.json +78 -75
  98. package/shared/localization/locales/zh-HK.json +78 -75
  99. package/shared/localization/locales/zh-TW.json +79 -76
  100. package/shared/localization/locales/zh.json +78 -75
  101. package/third-party/chromium-synchronization/inspector-issueAdded-types-test.js +1 -0
  102. package/types/artifacts.d.ts +1 -0
  103. package/types/config.d.ts +0 -38
  104. package/types/internal/rxjs.d.ts +4 -0
  105. package/types/internal/smokehouse.d.ts +10 -5
  106. package/types/lhr/settings.d.ts +13 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "core/audits/accessibility/accesskeys.js | description": {
3
- "message": "Các khoá truy cập cho phép người dùng chuyển nhanh đến một phần của trang. Để điều hướng đúng cách, mỗi khoá truy cập phải là duy nhất. [Tìm hiểu thêm về khoá truy cập](https://dequeuniversity.com/rules/axe/4.7/accesskeys)."
3
+ "message": "Các khoá truy cập cho phép người dùng chuyển nhanh đến một phần của trang. Để điều hướng đúng cách, mỗi khoá truy cập phải là duy nhất. [Tìm hiểu thêm về khoá truy cập](https://dequeuniversity.com/rules/axe/4.8/accesskeys)."
4
4
  },
5
5
  "core/audits/accessibility/accesskeys.js | failureTitle": {
6
6
  "message": "Các giá trị của `[accesskey]` không phải là duy nhất"
@@ -9,7 +9,7 @@
9
9
  "message": "Các giá trị của `[accesskey]` là duy nhất"
10
10
  },
11
11
  "core/audits/accessibility/aria-allowed-attr.js | description": {
12
- "message": "Mỗi `role` của Ứng dụng Internet phong phú dễ dùng (ARIA) hỗ trợ một tập hợp con cụ thể các thuộc tính `aria-*`. Nếu không trùng khớp, các thuộc tính `aria-*` sẽ bị vô hiệu. [Tìm hiểu cách khớp các thuộc tính của Ứng dụng Internet phong phú dễ dùng (ARIA) với vai trò của những thuộc tính này](https://dequeuniversity.com/rules/axe/4.7/aria-allowed-attr)."
12
+ "message": "Mỗi `role` của Ứng dụng Internet phong phú dễ dùng (ARIA) hỗ trợ một tập hợp con cụ thể các thuộc tính `aria-*`. Nếu không trùng khớp, các thuộc tính `aria-*` sẽ bị vô hiệu. [Tìm hiểu cách khớp các thuộc tính của Ứng dụng Internet phong phú dễ dùng (ARIA) với vai trò của những thuộc tính này](https://dequeuniversity.com/rules/axe/4.8/aria-allowed-attr)."
13
13
  },
14
14
  "core/audits/accessibility/aria-allowed-attr.js | failureTitle": {
15
15
  "message": "Các thuộc tính `[aria-*]` không khớp với vai trò tương ứng"
@@ -18,7 +18,7 @@
18
18
  "message": "Các thuộc tính `[aria-*]` khớp với vai trò tương ứng"
19
19
  },
20
20
  "core/audits/accessibility/aria-allowed-role.js | description": {
21
- "message": "`role` ARIA cho phép công nghệ hỗ trợ biết vai trò của từng phần tử trên trang web. Nếu các giá trị `role` bị sai chính tả, là vai trò trừu tượng hoặc không phải giá trị ARIA `role` hiện có, thì mục đích của phần tử này sẽ không được thông báo cho người dùng công nghệ hỗ trợ. [Tìm hiểu thêm về các vai trò ARIA](https://dequeuniversity.com/rules/axe/4.7/aria-allowed-roles)."
21
+ "message": "`role` ARIA cho phép công nghệ hỗ trợ biết vai trò của từng phần tử trên trang web. Nếu các giá trị `role` bị sai chính tả, là vai trò trừu tượng hoặc không phải giá trị ARIA `role` hiện có, thì mục đích của phần tử này sẽ không được thông báo cho người dùng công nghệ hỗ trợ. [Tìm hiểu thêm về các vai trò ARIA](https://dequeuniversity.com/rules/axe/4.8/aria-allowed-roles)."
22
22
  },
23
23
  "core/audits/accessibility/aria-allowed-role.js | failureTitle": {
24
24
  "message": "Giá trị được chỉ định cho `role=\"\"` không phải là vai trò ARIA hợp lệ."
@@ -27,7 +27,7 @@
27
27
  "message": "Giá trị được chỉ định cho `role=\"\"` là vai trò ARIA hợp lệ."
28
28
  },
29
29
  "core/audits/accessibility/aria-command-name.js | description": {
30
- "message": "Khi một phần tử không có tên thành phần hỗ trợ tiếp cận, trình đọc màn hình sẽ gọi phần tử đó bằng một tên gọi chung, dẫn đến việc người dùng trình đọc màn hình không sử dụng được phần tử này. [Tìm hiểu cách giúp các phần tử lệnh dễ tiếp cận hơn](https://dequeuniversity.com/rules/axe/4.7/aria-command-name)."
30
+ "message": "Khi một phần tử không có tên thành phần hỗ trợ tiếp cận, trình đọc màn hình sẽ gọi phần tử đó bằng một tên gọi chung, dẫn đến việc người dùng trình đọc màn hình không sử dụng được phần tử này. [Tìm hiểu cách giúp các phần tử lệnh dễ tiếp cận hơn](https://dequeuniversity.com/rules/axe/4.8/aria-command-name)."
31
31
  },
32
32
  "core/audits/accessibility/aria-command-name.js | failureTitle": {
33
33
  "message": "Các phần tử `button`, `link` và `menuitem` không có tên dễ đọc."
@@ -36,7 +36,7 @@
36
36
  "message": "Các phần tử `button`, `link` và `menuitem` có tên dễ đọc"
37
37
  },
38
38
  "core/audits/accessibility/aria-dialog-name.js | description": {
39
- "message": "Các phần tử hộp thoại của ARIA không có tên thành phần hỗ trợ tiếp cận có thể khiến người dùng trình đọc màn hình không phân biệt được mục đích của các phần tử này. [Tìm hiểu cách giúp các phần tử hộp thoại của ARIA dễ tiếp cận hơn](https://dequeuniversity.com/rules/axe/4.7/aria-dialog-name)."
39
+ "message": "Các phần tử hộp thoại của ARIA không có tên thành phần hỗ trợ tiếp cận có thể khiến người dùng trình đọc màn hình không phân biệt được mục đích của các phần tử này. [Tìm hiểu cách giúp các phần tử hộp thoại của ARIA dễ tiếp cận hơn](https://dequeuniversity.com/rules/axe/4.8/aria-dialog-name)."
40
40
  },
41
41
  "core/audits/accessibility/aria-dialog-name.js | failureTitle": {
42
42
  "message": "Các phần tử có `role=\"dialog\"` hoặc `role=\"alertdialog\"` không có tên thành phần hỗ trợ tiếp cận."
@@ -45,7 +45,7 @@
45
45
  "message": "Các phần tử có `role=\"dialog\"` hoặc `role=\"alertdialog\"` có tên thành phần hỗ trợ tiếp cận."
46
46
  },
47
47
  "core/audits/accessibility/aria-hidden-body.js | description": {
48
- "message": "Các công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, sẽ hoạt động không nhất quán khi đặt `aria-hidden=\"true\"` trên tài liệu `<body>`. [Tìm hiểu ảnh hưởng của `aria-hidden` đối với phần nội dung của tài liệu](https://dequeuniversity.com/rules/axe/4.7/aria-hidden-body)."
48
+ "message": "Các công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, sẽ hoạt động không nhất quán khi đặt `aria-hidden=\"true\"` trên tài liệu `<body>`. [Tìm hiểu ảnh hưởng của `aria-hidden` đối với phần nội dung của tài liệu](https://dequeuniversity.com/rules/axe/4.8/aria-hidden-body)."
49
49
  },
50
50
  "core/audits/accessibility/aria-hidden-body.js | failureTitle": {
51
51
  "message": "Hiện có `[aria-hidden=\"true\"]` trên tài liệu `<body>`"
@@ -54,7 +54,7 @@
54
54
  "message": "Hiện không có `[aria-hidden=\"true\"]` trên tài liệu `<body>`"
55
55
  },
56
56
  "core/audits/accessibility/aria-hidden-focus.js | description": {
57
- "message": "Các phần tử theo thứ tự giảm dần có thể lấy tiêu điểm bên trong một phần tử `[aria-hidden=\"true\"]` sẽ giúp ngăn người dùng công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, tiếp cận với các phần tử tương tác đó. [Tìm hiểu ảnh hưởng của `aria-hidden` đối với các phần tử có thể lấy tiêu điểm](https://dequeuniversity.com/rules/axe/4.7/aria-hidden-focus)."
57
+ "message": "Các phần tử theo thứ tự giảm dần có thể lấy tiêu điểm bên trong một phần tử `[aria-hidden=\"true\"]` sẽ giúp ngăn người dùng công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, tiếp cận với các phần tử tương tác đó. [Tìm hiểu ảnh hưởng của `aria-hidden` đối với các phần tử có thể lấy tiêu điểm](https://dequeuniversity.com/rules/axe/4.8/aria-hidden-focus)."
58
58
  },
59
59
  "core/audits/accessibility/aria-hidden-focus.js | failureTitle": {
60
60
  "message": "Các phần tử `[aria-hidden=\"true\"]` có chứa các phần tử theo thứ tự giảm dần có thể lấy tiêu điểm"
@@ -63,7 +63,7 @@
63
63
  "message": "Các phần tử `[aria-hidden=\"true\"]` không chứa các phần tử theo thứ tự giảm dần có thể lấy tiêu điểm"
64
64
  },
65
65
  "core/audits/accessibility/aria-input-field-name.js | description": {
66
- "message": "Khi một trường nhập dữ liệu không có tên thành phần hỗ trợ tiếp cận, thì trình đọc màn hình sẽ gọi trường đó bằng tên gọi chung, khiến người dùng trình đọc màn hình không dùng được trường này. [Tìm hiểu thêm về nhãn của trường nhập dữ liệu](https://dequeuniversity.com/rules/axe/4.7/aria-input-field-name)."
66
+ "message": "Khi một trường nhập dữ liệu không có tên thành phần hỗ trợ tiếp cận, thì trình đọc màn hình sẽ gọi trường đó bằng tên gọi chung, khiến người dùng trình đọc màn hình không dùng được trường này. [Tìm hiểu thêm về nhãn của trường nhập dữ liệu](https://dequeuniversity.com/rules/axe/4.8/aria-input-field-name)."
67
67
  },
68
68
  "core/audits/accessibility/aria-input-field-name.js | failureTitle": {
69
69
  "message": "Tên các trường nhập của ARIA ở trạng thái không thể tiếp cận"
@@ -72,7 +72,7 @@
72
72
  "message": "Tên các trường nhập của ARIA ở trạng thái có thể tiếp cận"
73
73
  },
74
74
  "core/audits/accessibility/aria-meter-name.js | description": {
75
- "message": "Khi một phần tử thước đo không có tên thành phần hỗ trợ tiếp cận, trình đọc màn hình sẽ gọi phần tử đó bằng một tên gọi chung, dẫn đến việc người dùng trình đọc màn hình không sử dụng được phần tử này. [Tìm hiểu cách đặt tên các phần tử `meter`](https://dequeuniversity.com/rules/axe/4.7/aria-meter-name)."
75
+ "message": "Khi một phần tử thước đo không có tên thành phần hỗ trợ tiếp cận, trình đọc màn hình sẽ gọi phần tử đó bằng một tên gọi chung, dẫn đến việc người dùng trình đọc màn hình không sử dụng được phần tử này. [Tìm hiểu cách đặt tên các phần tử `meter`](https://dequeuniversity.com/rules/axe/4.8/aria-meter-name)."
76
76
  },
77
77
  "core/audits/accessibility/aria-meter-name.js | failureTitle": {
78
78
  "message": "Các phần tử `meter` của ARIA không có tên dễ đọc."
@@ -81,7 +81,7 @@
81
81
  "message": "Các phần tử `meter` của ARIA có tên dễ đọc"
82
82
  },
83
83
  "core/audits/accessibility/aria-progressbar-name.js | description": {
84
- "message": "Khi một phần tử `progressbar` không có tên thành phần hỗ trợ tiếp cận, trình đọc màn hình sẽ gọi phần tử đó bằng một tên gọi chung, dẫn đến việc người dùng trình đọc màn hình không sử dụng được phần tử này. [Tìm hiểu cách gắn nhãn phần tử `progressbar`](https://dequeuniversity.com/rules/axe/4.7/aria-progressbar-name)."
84
+ "message": "Khi một phần tử `progressbar` không có tên thành phần hỗ trợ tiếp cận, trình đọc màn hình sẽ gọi phần tử đó bằng một tên gọi chung, dẫn đến việc người dùng trình đọc màn hình không sử dụng được phần tử này. [Tìm hiểu cách gắn nhãn phần tử `progressbar`](https://dequeuniversity.com/rules/axe/4.8/aria-progressbar-name)."
85
85
  },
86
86
  "core/audits/accessibility/aria-progressbar-name.js | failureTitle": {
87
87
  "message": "Các phần tử `progressbar` của ARIA không có tên dễ đọc."
@@ -90,7 +90,7 @@
90
90
  "message": "Các phần tử `progressbar` của ARIA có tên dễ đọc"
91
91
  },
92
92
  "core/audits/accessibility/aria-required-attr.js | description": {
93
- "message": "Một số vai trò ARIA có các thuộc tính bắt buộc mô tả trạng thái của phần tử cho trình đọc màn hình. [Tìm hiểu thêm về các vai trò và thuộc tính bắt buộc](https://dequeuniversity.com/rules/axe/4.7/aria-required-attr)."
93
+ "message": "Một số vai trò ARIA có các thuộc tính bắt buộc mô tả trạng thái của phần tử cho trình đọc màn hình. [Tìm hiểu thêm về các vai trò và thuộc tính bắt buộc](https://dequeuniversity.com/rules/axe/4.8/aria-required-attr)."
94
94
  },
95
95
  "core/audits/accessibility/aria-required-attr.js | failureTitle": {
96
96
  "message": "`[role]` không có tất cả các thuộc tính `[aria-*]` bắt buộc"
@@ -99,7 +99,7 @@
99
99
  "message": "`[role]` có tất cả các thuộc tính `[aria-*]` bắt buộc"
100
100
  },
101
101
  "core/audits/accessibility/aria-required-children.js | description": {
102
- "message": "Một số vai trò mẹ của Ứng dụng Internet phong phú dễ dùng (ARIA) phải chứa vai trò con cụ thể để thực hiện các chức năng hỗ trợ tiếp cận chủ định tương ứng. [Tìm hiểu thêm về các vai trò và phần tử con bắt buộc](https://dequeuniversity.com/rules/axe/4.7/aria-required-children)."
102
+ "message": "Một số vai trò mẹ của Ứng dụng Internet phong phú dễ dùng (ARIA) phải chứa vai trò con cụ thể để thực hiện các chức năng hỗ trợ tiếp cận chủ định tương ứng. [Tìm hiểu thêm về các vai trò và phần tử con bắt buộc](https://dequeuniversity.com/rules/axe/4.8/aria-required-children)."
103
103
  },
104
104
  "core/audits/accessibility/aria-required-children.js | failureTitle": {
105
105
  "message": "Các phần tử có `[role]` ARIA yêu cầu phần tử con phải chứa một `[role]` cụ thể hiện đang thiếu một số hoặc tất cả các phần tử con bắt buộc đó."
@@ -108,7 +108,7 @@
108
108
  "message": "Các phần tử có `[role]` ARIA yêu cầu phần tử con phải chứa một `[role]` cụ thể có tất cả các phần tử con bắt buộc."
109
109
  },
110
110
  "core/audits/accessibility/aria-required-parent.js | description": {
111
- "message": "Các vai trò mẹ cụ thể phải chứa một số vai trò con của Ứng dụng Internet phong phú dễ dùng (ARIA) để thực hiện đúng cách các chức năng hỗ trợ tiếp cận chủ định tương ứng. [Tìm hiểu thêm về các vai trò của Ứng dụng Internet phong phú dễ dùng (ARIA) và phần tử mẹ bắt buộc](https://dequeuniversity.com/rules/axe/4.7/aria-required-parent)."
111
+ "message": "Các vai trò mẹ cụ thể phải chứa một số vai trò con của Ứng dụng Internet phong phú dễ dùng (ARIA) để thực hiện đúng cách các chức năng hỗ trợ tiếp cận chủ định tương ứng. [Tìm hiểu thêm về các vai trò của Ứng dụng Internet phong phú dễ dùng (ARIA) và phần tử mẹ bắt buộc](https://dequeuniversity.com/rules/axe/4.8/aria-required-parent)."
112
112
  },
113
113
  "core/audits/accessibility/aria-required-parent.js | failureTitle": {
114
114
  "message": "`[role]` không có trong phần tử mẹ bắt buộc tương ứng"
@@ -117,7 +117,7 @@
117
117
  "message": "`[role]` có trong phần tử mẹ bắt buộc tương ứng"
118
118
  },
119
119
  "core/audits/accessibility/aria-roles.js | description": {
120
- "message": "Các vai trò của Ứng dụng Internet phong phú dễ dùng (ARIA) phải có giá trị hợp lệ để thực hiện những chức năng hỗ trợ tiếp cận chủ định tương ứng. [Tìm hiểu thêm về các vai trò của Ứng dụng Internet phong phú dễ dùng (ARIA)](https://dequeuniversity.com/rules/axe/4.7/aria-roles)."
120
+ "message": "Các vai trò của Ứng dụng Internet phong phú dễ dùng (ARIA) phải có giá trị hợp lệ để thực hiện những chức năng hỗ trợ tiếp cận chủ định tương ứng. [Tìm hiểu thêm về các vai trò của Ứng dụng Internet phong phú dễ dùng (ARIA)](https://dequeuniversity.com/rules/axe/4.8/aria-roles)."
121
121
  },
122
122
  "core/audits/accessibility/aria-roles.js | failureTitle": {
123
123
  "message": "Các giá trị của `[role]` là không hợp lệ"
@@ -126,7 +126,7 @@
126
126
  "message": "Các giá trị của `[role]` là hợp lệ"
127
127
  },
128
128
  "core/audits/accessibility/aria-text.js | description": {
129
- "message": "Nếu bạn thêm `role=text` quanh một nút văn bản được phân tách bằng thẻ đánh dấu, VoiceOver có thể coi nút đó là một cụm từ, nhưng con cháu có thể làm tâm điểm của phần tử này sẽ không được công bố. [Tìm hiểu thêm về thuộc tính `role=text`](https://dequeuniversity.com/rules/axe/4.7/aria-text)."
129
+ "message": "Nếu bạn thêm `role=text` quanh một nút văn bản được phân tách bằng thẻ đánh dấu, VoiceOver có thể coi nút đó là một cụm từ, nhưng con cháu có thể làm tâm điểm của phần tử này sẽ không được công bố. [Tìm hiểu thêm về thuộc tính `role=text`](https://dequeuniversity.com/rules/axe/4.8/aria-text)."
130
130
  },
131
131
  "core/audits/accessibility/aria-text.js | failureTitle": {
132
132
  "message": "Các phần tử có thuộc tính `role=text` có con cháu có thể làm tâm điểm."
@@ -135,7 +135,7 @@
135
135
  "message": "Các phần tử có thuộc tính `role=text` không có con cháu có thể làm tâm điểm."
136
136
  },
137
137
  "core/audits/accessibility/aria-toggle-field-name.js | description": {
138
- "message": "Khi một trường chuyển đổi không có tên thành phần hỗ trợ tiếp cận, thì trình đọc màn hình sẽ gọi trường đó bằng tên gọi chung, khiến người dùng trình đọc màn hình không dùng được trường này. [Tìm hiểu thêm về trường chuyển đổi](https://dequeuniversity.com/rules/axe/4.7/aria-toggle-field-name)."
138
+ "message": "Khi một trường chuyển đổi không có tên thành phần hỗ trợ tiếp cận, thì trình đọc màn hình sẽ gọi trường đó bằng tên gọi chung, khiến người dùng trình đọc màn hình không dùng được trường này. [Tìm hiểu thêm về trường chuyển đổi](https://dequeuniversity.com/rules/axe/4.8/aria-toggle-field-name)."
139
139
  },
140
140
  "core/audits/accessibility/aria-toggle-field-name.js | failureTitle": {
141
141
  "message": "Tên các trường chuyển đổi của ARIA ở trạng thái không thể tiếp cận"
@@ -144,7 +144,7 @@
144
144
  "message": "Tên các trường chuyển đổi của ARIA ở trạng thái có thể tiếp cận"
145
145
  },
146
146
  "core/audits/accessibility/aria-tooltip-name.js | description": {
147
- "message": "Khi một phần tử chú giải công cụ không có tên thành phần hỗ trợ tiếp cận, trình đọc màn hình sẽ gọi phần tử đó bằng một tên gọi chung, dẫn đến việc người dùng trình đọc màn hình không sử dụng được phần tử này. [Tìm hiểu cách đặt tên các phần tử `tooltip`](https://dequeuniversity.com/rules/axe/4.7/aria-tooltip-name)."
147
+ "message": "Khi một phần tử chú giải công cụ không có tên thành phần hỗ trợ tiếp cận, trình đọc màn hình sẽ gọi phần tử đó bằng một tên gọi chung, dẫn đến việc người dùng trình đọc màn hình không sử dụng được phần tử này. [Tìm hiểu cách đặt tên các phần tử `tooltip`](https://dequeuniversity.com/rules/axe/4.8/aria-tooltip-name)."
148
148
  },
149
149
  "core/audits/accessibility/aria-tooltip-name.js | failureTitle": {
150
150
  "message": "Các phần tử `tooltip` của ARIA không có tên dễ đọc."
@@ -153,7 +153,7 @@
153
153
  "message": "Các phần tử `tooltip` của ARIA có tên dễ đọc"
154
154
  },
155
155
  "core/audits/accessibility/aria-treeitem-name.js | description": {
156
- "message": "Khi một phần tử `treeitem` không có tên thành phần hỗ trợ tiếp cận, trình đọc màn hình sẽ gọi phần tử đó bằng một tên gọi chung, dẫn đến việc người dùng trình đọc màn hình không sử dụng được phần tử này. [Tìm hiểu thêm về cách gắn nhãn phần tử `treeitem`](https://dequeuniversity.com/rules/axe/4.7/aria-treeitem-name)."
156
+ "message": "Khi một phần tử `treeitem` không có tên thành phần hỗ trợ tiếp cận, trình đọc màn hình sẽ gọi phần tử đó bằng một tên gọi chung, dẫn đến việc người dùng trình đọc màn hình không sử dụng được phần tử này. [Tìm hiểu thêm về cách gắn nhãn phần tử `treeitem`](https://dequeuniversity.com/rules/axe/4.8/aria-treeitem-name)."
157
157
  },
158
158
  "core/audits/accessibility/aria-treeitem-name.js | failureTitle": {
159
159
  "message": "Các phần tử `treeitem` của ARIA không có tên dễ đọc."
@@ -162,7 +162,7 @@
162
162
  "message": "Các phần tử `treeitem` của ARIA có tên dễ đọc"
163
163
  },
164
164
  "core/audits/accessibility/aria-valid-attr-value.js | description": {
165
- "message": "Các công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, không thể diễn giải thuộc tính của Ứng dụng Internet phong phú dễ dùng (ARIA) có giá trị không hợp lệ. [Tìm hiểu thêm về giá trị hợp lệ cho thuộc tính của Ứng dụng Internet phong phú dễ dùng (ARIA)](https://dequeuniversity.com/rules/axe/4.7/aria-valid-attr-value)."
165
+ "message": "Các công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, không thể diễn giải thuộc tính của Ứng dụng Internet phong phú dễ dùng (ARIA) có giá trị không hợp lệ. [Tìm hiểu thêm về giá trị hợp lệ cho thuộc tính của Ứng dụng Internet phong phú dễ dùng (ARIA)](https://dequeuniversity.com/rules/axe/4.8/aria-valid-attr-value)."
166
166
  },
167
167
  "core/audits/accessibility/aria-valid-attr-value.js | failureTitle": {
168
168
  "message": "Giá trị của các thuộc tính `[aria-*]` là không hợp lệ"
@@ -171,7 +171,7 @@
171
171
  "message": "Các thuộc tính `[aria-*]` có giá trị hợp lệ"
172
172
  },
173
173
  "core/audits/accessibility/aria-valid-attr.js | description": {
174
- "message": "Các công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, không thể diễn giải các thuộc tính của Ứng dụng Internet phong phú dễ dùng (ARIA) có tên không hợp lệ. [Tìm hiểu thêm về các thuộc tính hợp lệ của Ứng dụng Internet phong phú dễ dùng (ARIA)](https://dequeuniversity.com/rules/axe/4.7/aria-valid-attr)."
174
+ "message": "Các công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, không thể diễn giải các thuộc tính của Ứng dụng Internet phong phú dễ dùng (ARIA) có tên không hợp lệ. [Tìm hiểu thêm về các thuộc tính hợp lệ của Ứng dụng Internet phong phú dễ dùng (ARIA)](https://dequeuniversity.com/rules/axe/4.8/aria-valid-attr)."
175
175
  },
176
176
  "core/audits/accessibility/aria-valid-attr.js | failureTitle": {
177
177
  "message": "Các thuộc tính `[aria-*]` là không hợp lệ hoặc bị sai chính tả"
@@ -183,7 +183,7 @@
183
183
  "message": "Các phần tử không đạt"
184
184
  },
185
185
  "core/audits/accessibility/button-name.js | description": {
186
- "message": "Khi một nút không có tên thành phần hỗ trợ tiếp cận, trình đọc màn hình sẽ thông báo đó là \"nút\", khiến người dùng trình đọc màn hình không sử dụng được nút này. [Tìm hiểu cách giúp các nút dễ tiếp cận hơn](https://dequeuniversity.com/rules/axe/4.7/button-name)."
186
+ "message": "Khi một nút không có tên thành phần hỗ trợ tiếp cận, trình đọc màn hình sẽ thông báo đó là \"nút\", khiến người dùng trình đọc màn hình không sử dụng được nút này. [Tìm hiểu cách giúp các nút dễ tiếp cận hơn](https://dequeuniversity.com/rules/axe/4.8/button-name)."
187
187
  },
188
188
  "core/audits/accessibility/button-name.js | failureTitle": {
189
189
  "message": "Các nút không có tên có thể tiếp cận được"
@@ -192,7 +192,7 @@
192
192
  "message": "Các nút có tên tiếp cận được"
193
193
  },
194
194
  "core/audits/accessibility/bypass.js | description": {
195
- "message": "Bằng việc thêm các cách bỏ qua nội dung lặp lại, người dùng bàn phím có thể khám phá trang một cách hiệu quả hơn. [Tìm hiểu thêm về cách tránh bị chặn](https://dequeuniversity.com/rules/axe/4.7/bypass)."
195
+ "message": "Bằng việc thêm các cách bỏ qua nội dung lặp lại, người dùng bàn phím có thể khám phá trang một cách hiệu quả hơn. [Tìm hiểu thêm về cách tránh bị chặn](https://dequeuniversity.com/rules/axe/4.8/bypass)."
196
196
  },
197
197
  "core/audits/accessibility/bypass.js | failureTitle": {
198
198
  "message": "Trang này không chứa tiêu đề, đường liên kết bỏ qua hoặc vùng mốc"
@@ -201,7 +201,7 @@
201
201
  "message": "Trang này chứa tiêu đề, phần tử liên kết bỏ qua hoặc vùng mốc"
202
202
  },
203
203
  "core/audits/accessibility/color-contrast.js | description": {
204
- "message": "Nhiều người dùng gặp khó khăn khi đọc hoặc không thể đọc được văn bản có độ tương phản thấp. [Tìm hiểu cách cung cấp độ tương phản màu vừa đủ](https://dequeuniversity.com/rules/axe/4.7/color-contrast)."
204
+ "message": "Nhiều người dùng gặp khó khăn khi đọc hoặc không thể đọc được văn bản có độ tương phản thấp. [Tìm hiểu cách cung cấp độ tương phản màu vừa đủ](https://dequeuniversity.com/rules/axe/4.8/color-contrast)."
205
205
  },
206
206
  "core/audits/accessibility/color-contrast.js | failureTitle": {
207
207
  "message": "Màu nền trước và nền sau không có đủ tỷ lệ tương phản."
@@ -210,7 +210,7 @@
210
210
  "message": "Màu nền trước và nền sau có đủ tỷ lệ tương phản"
211
211
  },
212
212
  "core/audits/accessibility/definition-list.js | description": {
213
- "message": "Khi danh sách định nghĩa không được đánh dấu đúng cách, thì trình đọc màn hình có thể tạo ra thông báo gây nhầm lẫn hoặc không chính xác. [Tìm hiểu cách định cấu trúc danh sách định nghĩa đúng cách](https://dequeuniversity.com/rules/axe/4.7/definition-list)."
213
+ "message": "Khi danh sách định nghĩa không được đánh dấu đúng cách, thì trình đọc màn hình có thể tạo ra thông báo gây nhầm lẫn hoặc không chính xác. [Tìm hiểu cách định cấu trúc danh sách định nghĩa đúng cách](https://dequeuniversity.com/rules/axe/4.8/definition-list)."
214
214
  },
215
215
  "core/audits/accessibility/definition-list.js | failureTitle": {
216
216
  "message": "`<dl>` không chỉ chứa các nhóm `<dt>` và `<dd>` được sắp xếp đúng cách, các phần tử `<script>`, `<template>` hoặc `<div>`."
@@ -219,7 +219,7 @@
219
219
  "message": "`<dl>` chỉ chứa các nhóm `<dt>` và `<dd>` được sắp xếp đúng cách, các phần tử `<script>`, `<template>` hoặc `<div>`."
220
220
  },
221
221
  "core/audits/accessibility/dlitem.js | description": {
222
- "message": "Các mục trong danh sách định nghĩa (`<dt>` và `<dd>`) phải được đưa vào một phần tử `<dl>` mẹ để đảm bảo rằng trình đọc màn hình có thể thông báo đúng cách các mục này. [Tìm hiểu cách định cấu trúc danh sách định nghĩa đúng cách](https://dequeuniversity.com/rules/axe/4.7/dlitem)."
222
+ "message": "Các mục trong danh sách định nghĩa (`<dt>` và `<dd>`) phải được đưa vào một phần tử `<dl>` mẹ để đảm bảo rằng trình đọc màn hình có thể thông báo đúng cách các mục này. [Tìm hiểu cách định cấu trúc danh sách định nghĩa đúng cách](https://dequeuniversity.com/rules/axe/4.8/dlitem)."
223
223
  },
224
224
  "core/audits/accessibility/dlitem.js | failureTitle": {
225
225
  "message": "Các phần tử `<dl>` không bao gồm những mục trong danh sách định nghĩa"
@@ -228,7 +228,7 @@
228
228
  "message": "Các phần tử `<dl>` chứa mục trong danh sách định nghĩa"
229
229
  },
230
230
  "core/audits/accessibility/document-title.js | description": {
231
- "message": "Tiêu đề giúp người dùng trình đọc màn hình nắm được thông tin tổng quan về trang và giúp người dùng công cụ tìm kiếm chủ yếu dựa vào tiêu đề này xác định xem một trang có liên quan đến nội dung tìm kiếm của họ hay không. [Tìm hiểu thêm về tiêu đề tài liệu](https://dequeuniversity.com/rules/axe/4.7/document-title)."
231
+ "message": "Tiêu đề giúp người dùng trình đọc màn hình nắm được thông tin tổng quan về trang và giúp người dùng công cụ tìm kiếm chủ yếu dựa vào tiêu đề này xác định xem một trang có liên quan đến nội dung tìm kiếm của họ hay không. [Tìm hiểu thêm về tiêu đề tài liệu](https://dequeuniversity.com/rules/axe/4.8/document-title)."
232
232
  },
233
233
  "core/audits/accessibility/document-title.js | failureTitle": {
234
234
  "message": "Tài liệu không có phần tử `<title>`"
@@ -237,7 +237,7 @@
237
237
  "message": "Tài liệu có phần tử `<title>`"
238
238
  },
239
239
  "core/audits/accessibility/duplicate-id-active.js | description": {
240
- "message": "Để có thể hiển thị với các công nghệ hỗ trợ, `id` của các phần tử có thể lấy tiêu điểm không được trùng nhau. [Tìm hiểu cách khắc phục các `id` trùng lặp](https://dequeuniversity.com/rules/axe/4.7/duplicate-id-active)."
240
+ "message": "Để có thể hiển thị với các công nghệ hỗ trợ, `id` của các phần tử có thể lấy tiêu điểm không được trùng nhau. [Tìm hiểu cách khắc phục các `id` trùng lặp](https://dequeuniversity.com/rules/axe/4.8/duplicate-id-active)."
241
241
  },
242
242
  "core/audits/accessibility/duplicate-id-active.js | failureTitle": {
243
243
  "message": "Các thuộc tính `[id]` trên những phần tử có thể lấy tiêu điểm đang hoạt động bị trùng nhau"
@@ -246,7 +246,7 @@
246
246
  "message": "Các thuộc tính `[id]` trên những phần tử có thể lấy tiêu điểm đang hoạt động là duy nhất"
247
247
  },
248
248
  "core/audits/accessibility/duplicate-id-aria.js | description": {
249
- "message": "Để các công nghệ hỗ trợ không bỏ qua các phiên bản khác, giá trị mã nhận dạng của Ứng dụng Internet phong phú dễ dùng (ARIA) không được trùng nhau. [Tìm hiểu cách khắc phục mã nhận dạng trùng lặp của Ứng dụng Internet phong phú dễ dùng (ARIA)](https://dequeuniversity.com/rules/axe/4.7/duplicate-id-aria)."
249
+ "message": "Để các công nghệ hỗ trợ không bỏ qua các phiên bản khác, giá trị mã nhận dạng của Ứng dụng Internet phong phú dễ dùng (ARIA) không được trùng nhau. [Tìm hiểu cách khắc phục mã nhận dạng trùng lặp của Ứng dụng Internet phong phú dễ dùng (ARIA)](https://dequeuniversity.com/rules/axe/4.8/duplicate-id-aria)."
250
250
  },
251
251
  "core/audits/accessibility/duplicate-id-aria.js | failureTitle": {
252
252
  "message": "Mã nhận dạng của ARIA bị trùng lặp"
@@ -255,7 +255,7 @@
255
255
  "message": "Mã nhận dạng của Ứng dụng Internet phong phú dễ dùng (ARIA) là duy nhất"
256
256
  },
257
257
  "core/audits/accessibility/empty-heading.js | description": {
258
- "message": "Tiêu đề không có nội dung hoặc có văn bản khó đọc sẽ khiến người dùng trình đọc màn hình không thể truy cập thông tin trên cấu trúc của trang. [Tìm hiểu thêm về tiêu đề](https://dequeuniversity.com/rules/axe/4.7/empty-heading)."
258
+ "message": "Tiêu đề không có nội dung hoặc có văn bản khó đọc sẽ khiến người dùng trình đọc màn hình không thể truy cập thông tin trên cấu trúc của trang. [Tìm hiểu thêm về tiêu đề](https://dequeuniversity.com/rules/axe/4.8/empty-heading)."
259
259
  },
260
260
  "core/audits/accessibility/empty-heading.js | failureTitle": {
261
261
  "message": "Phần tử tiêu đề không chứa nội dung."
@@ -264,7 +264,7 @@
264
264
  "message": "Tất cả phần tử tiêu đề đều chứa nội dung."
265
265
  },
266
266
  "core/audits/accessibility/form-field-multiple-labels.js | description": {
267
- "message": "Các công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, sử dụng nhãn đầu tiên, nhãn cuối cùng hoặc tất cả các nhãn có thể thông báo nhầm các trường biểu mẫu có nhiều nhãn. [Tìm hiểu cách sử dụng nhãn của biểu mẫu](https://dequeuniversity.com/rules/axe/4.7/form-field-multiple-labels)."
267
+ "message": "Các công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, sử dụng nhãn đầu tiên, nhãn cuối cùng hoặc tất cả các nhãn có thể thông báo nhầm các trường biểu mẫu có nhiều nhãn. [Tìm hiểu cách sử dụng nhãn của biểu mẫu](https://dequeuniversity.com/rules/axe/4.8/form-field-multiple-labels)."
268
268
  },
269
269
  "core/audits/accessibility/form-field-multiple-labels.js | failureTitle": {
270
270
  "message": "Các trường biểu mẫu có nhiều nhãn"
@@ -273,7 +273,7 @@
273
273
  "message": "Không có trường biểu mẫu nào có nhiều nhãn"
274
274
  },
275
275
  "core/audits/accessibility/frame-title.js | description": {
276
- "message": "Người dùng trình đọc màn hình dựa vào tiêu đề khung để mô tả nội dung của khung. [Tìm hiểu thêm về tiêu đề khung](https://dequeuniversity.com/rules/axe/4.7/frame-title)."
276
+ "message": "Người dùng trình đọc màn hình dựa vào tiêu đề khung để mô tả nội dung của khung. [Tìm hiểu thêm về tiêu đề khung](https://dequeuniversity.com/rules/axe/4.8/frame-title)."
277
277
  },
278
278
  "core/audits/accessibility/frame-title.js | failureTitle": {
279
279
  "message": "Phần tử `<frame>` hoặc `<iframe>` không có tiêu đề"
@@ -282,7 +282,7 @@
282
282
  "message": "Các phần tử `<frame>` hoặc `<iframe>` có tiêu đề"
283
283
  },
284
284
  "core/audits/accessibility/heading-order.js | description": {
285
- "message": "Nhờ cách thức sắp xếp tiêu đề sao cho không bỏ qua các cấp độ thể hiện cấu trúc ngữ nghĩa của trang, người dùng dễ dàng hiểu được nội dung và thực hiện thao tác bằng công nghệ hỗ trợ hơn. [Tìm hiểu thêm về trình tự tiêu đề](https://dequeuniversity.com/rules/axe/4.7/heading-order)."
285
+ "message": "Nhờ cách thức sắp xếp tiêu đề sao cho không bỏ qua các cấp độ thể hiện cấu trúc ngữ nghĩa của trang, người dùng dễ dàng hiểu được nội dung và thực hiện thao tác bằng công nghệ hỗ trợ hơn. [Tìm hiểu thêm về trình tự tiêu đề](https://dequeuniversity.com/rules/axe/4.8/heading-order)."
286
286
  },
287
287
  "core/audits/accessibility/heading-order.js | failureTitle": {
288
288
  "message": "Các phần tử tiêu đề không tuân theo trình tự giảm dần"
@@ -291,7 +291,7 @@
291
291
  "message": "Các phần tử tiêu đề xuất hiện theo trình tự giảm dần"
292
292
  },
293
293
  "core/audits/accessibility/html-has-lang.js | description": {
294
- "message": "Nếu một trang chưa chỉ định thuộc tính `lang`, thì trình đọc màn hình sẽ xem như trang đó đang hiển thị bằng ngôn ngữ mặc định mà người dùng chọn khi thiết lập trình đọc màn hình. Nếu trên thực tế, trang đó không hiển thị bằng ngôn ngữ mặc định, thì trình đọc màn hình có thể không thông báo văn bản của trang đó một cách chính xác. [Tìm hiểu thêm về thuộc tính `lang`](https://dequeuniversity.com/rules/axe/4.7/html-has-lang)."
294
+ "message": "Nếu một trang chưa chỉ định thuộc tính `lang`, thì trình đọc màn hình sẽ xem như trang đó đang hiển thị bằng ngôn ngữ mặc định mà người dùng chọn khi thiết lập trình đọc màn hình. Nếu trên thực tế, trang đó không hiển thị bằng ngôn ngữ mặc định, thì trình đọc màn hình có thể không thông báo văn bản của trang đó một cách chính xác. [Tìm hiểu thêm về thuộc tính `lang`](https://dequeuniversity.com/rules/axe/4.8/html-has-lang)."
295
295
  },
296
296
  "core/audits/accessibility/html-has-lang.js | failureTitle": {
297
297
  "message": "Phần tử `<html>` chưa có thuộc tính `[lang]`"
@@ -300,7 +300,7 @@
300
300
  "message": "Phần tử `<html>` có thuộc tính `[lang]`"
301
301
  },
302
302
  "core/audits/accessibility/html-lang-valid.js | description": {
303
- "message": "Việc chỉ định [ngôn ngữ BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) hợp lệ sẽ giúp trình đọc màn hình thông báo văn bản đúng cách. [Tìm hiểu cách sử dụng thuộc tính `lang`](https://dequeuniversity.com/rules/axe/4.7/html-lang-valid)."
303
+ "message": "Việc chỉ định [ngôn ngữ BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) hợp lệ sẽ giúp trình đọc màn hình thông báo văn bản đúng cách. [Tìm hiểu cách sử dụng thuộc tính `lang`](https://dequeuniversity.com/rules/axe/4.8/html-lang-valid)."
304
304
  },
305
305
  "core/audits/accessibility/html-lang-valid.js | failureTitle": {
306
306
  "message": "Thuộc tính `[lang]` của phần tử `<html>` không có giá trị hợp lệ."
@@ -309,7 +309,7 @@
309
309
  "message": "Thuộc tính `[lang]` của phần tử `<html>` có giá trị hợp lệ"
310
310
  },
311
311
  "core/audits/accessibility/html-xml-lang-mismatch.js | description": {
312
- "message": "Nếu trang web không chỉ định một ngôn ngữ nhất quán thì trình đọc màn hình có thể không thông báo chính xác văn bản trong trang. [Tìm hiểu thêm về thuộc tính `lang`](https://dequeuniversity.com/rules/axe/4.7/html-xml-lang-mismatch)."
312
+ "message": "Nếu trang web không chỉ định một ngôn ngữ nhất quán thì trình đọc màn hình có thể không thông báo chính xác văn bản trong trang. [Tìm hiểu thêm về thuộc tính `lang`](https://dequeuniversity.com/rules/axe/4.8/html-xml-lang-mismatch)."
313
313
  },
314
314
  "core/audits/accessibility/html-xml-lang-mismatch.js | failureTitle": {
315
315
  "message": "Phần tử `<html>` không sở hữu thuộc tính `[xml:lang]` có cùng ngôn ngữ cơ sở như thuộc tính `[lang]`."
@@ -318,7 +318,7 @@
318
318
  "message": "Phần tử `<html>` sở hữu thuộc tính `[xml:lang]` có cùng ngôn ngữ cơ sở như thuộc tính `[lang]`."
319
319
  },
320
320
  "core/audits/accessibility/identical-links-same-purpose.js | description": {
321
- "message": "Các đường liên kết có cùng một đích đến phải có cùng nội dung mô tả để giúp người dùng hiểu mục đích của đường liên kết và quyết định có nên truy cập hay không. [Tìm hiểu thêm về các đường liên kết giống hệt nhau](https://dequeuniversity.com/rules/axe/4.7/identical-links-same-purpose)."
321
+ "message": "Các đường liên kết có cùng một đích đến phải có cùng nội dung mô tả để giúp người dùng hiểu mục đích của đường liên kết và quyết định có nên truy cập hay không. [Tìm hiểu thêm về các đường liên kết giống hệt nhau](https://dequeuniversity.com/rules/axe/4.8/identical-links-same-purpose)."
322
322
  },
323
323
  "core/audits/accessibility/identical-links-same-purpose.js | failureTitle": {
324
324
  "message": "Các đường liên kết giống hệt nhau không có cùng mục đích."
@@ -327,7 +327,7 @@
327
327
  "message": "Các đường liên kết giống hệt nhau có cùng mục đích."
328
328
  },
329
329
  "core/audits/accessibility/image-alt.js | description": {
330
- "message": "Các phần tử thông tin nên là đoạn văn bản thay thế ngắn, có tính mô tả. Có thể bỏ qua phần tử trang trí bằng một thuộc tính alt trống. [Tìm hiểu thêm về thuộc tính `alt`](https://dequeuniversity.com/rules/axe/4.7/image-alt)."
330
+ "message": "Các phần tử thông tin nên là đoạn văn bản thay thế ngắn, có tính mô tả. Có thể bỏ qua phần tử trang trí bằng một thuộc tính alt trống. [Tìm hiểu thêm về thuộc tính `alt`](https://dequeuniversity.com/rules/axe/4.8/image-alt)."
331
331
  },
332
332
  "core/audits/accessibility/image-alt.js | failureTitle": {
333
333
  "message": "Phần tử hình ảnh không có thuộc tính `[alt]`"
@@ -336,7 +336,7 @@
336
336
  "message": "Các phần tử hình ảnh có thuộc tính `[alt]`"
337
337
  },
338
338
  "core/audits/accessibility/image-redundant-alt.js | description": {
339
- "message": "Các phần tử thông tin nên là đoạn văn bản thay thế ngắn, có tính mô tả. Văn bản thay thế giống hệt với văn bản bên cạnh đường liên kết hoặc hình ảnh có thể khiến người dùng trình đọc màn hình bối rối vì văn bản sẽ được đọc hai lần. [Tìm hiểu thêm về thuộc tính `alt`](https://dequeuniversity.com/rules/axe/4.7/image-redundant-alt)."
339
+ "message": "Các phần tử thông tin nên là đoạn văn bản thay thế ngắn, có tính mô tả. Văn bản thay thế giống hệt với văn bản bên cạnh đường liên kết hoặc hình ảnh có thể khiến người dùng trình đọc màn hình bối rối vì văn bản sẽ được đọc hai lần. [Tìm hiểu thêm về thuộc tính `alt`](https://dequeuniversity.com/rules/axe/4.8/image-redundant-alt)."
340
340
  },
341
341
  "core/audits/accessibility/image-redundant-alt.js | failureTitle": {
342
342
  "message": "Các phần tử hình ảnh có thuộc tính `[alt]` là văn bản thừa."
@@ -345,7 +345,7 @@
345
345
  "message": "Các phần tử hình ảnh không có thuộc tính `[alt]` là văn bản thừa."
346
346
  },
347
347
  "core/audits/accessibility/input-button-name.js | description": {
348
- "message": "Bạn nên thêm văn bản rõ ràng và dễ đọc vào các nút nhập để giúp người dùng trình đọc màn hình hiểu mục đích của nút nhập. [Tìm hiểu thêm về các nút nhập](https://dequeuniversity.com/rules/axe/4.7/input-button-name)."
348
+ "message": "Bạn nên thêm văn bản rõ ràng và dễ đọc vào các nút nhập để giúp người dùng trình đọc màn hình hiểu mục đích của nút nhập. [Tìm hiểu thêm về các nút nhập](https://dequeuniversity.com/rules/axe/4.8/input-button-name)."
349
349
  },
350
350
  "core/audits/accessibility/input-button-name.js | failureTitle": {
351
351
  "message": "Các nút nhập không có văn bản rõ ràng."
@@ -354,7 +354,7 @@
354
354
  "message": "Các nút nhập có văn bản rõ ràng."
355
355
  },
356
356
  "core/audits/accessibility/input-image-alt.js | description": {
357
- "message": "Khi dùng một hình ảnh làm nút `<input>`, thì việc cung cấp văn bản thay thế có thể giúp người dùng trình đọc màn hình hiểu rõ mục đích của nút đó. [Tìm hiểu về văn bản thay thế hình ảnh đầu vào](https://dequeuniversity.com/rules/axe/4.7/input-image-alt)."
357
+ "message": "Khi dùng một hình ảnh làm nút `<input>`, thì việc cung cấp văn bản thay thế có thể giúp người dùng trình đọc màn hình hiểu rõ mục đích của nút đó. [Tìm hiểu về văn bản thay thế hình ảnh đầu vào](https://dequeuniversity.com/rules/axe/4.8/input-image-alt)."
358
358
  },
359
359
  "core/audits/accessibility/input-image-alt.js | failureTitle": {
360
360
  "message": "Các thành phần `<input type=\"image\">` không có văn bản `[alt]`"
@@ -363,7 +363,7 @@
363
363
  "message": "Các thành phần `<input type=\"image\">` có văn bản `[alt]`"
364
364
  },
365
365
  "core/audits/accessibility/label-content-name-mismatch.js | description": {
366
- "message": "Nhãn văn bản hiển thị không khớp với tên thành phần hỗ trợ tiếp cận có thể gây ra trải nghiệm khó hiểu đối với người dùng trình đọc màn hình. [Tìm hiểu thêm về tên thành phần hỗ trợ tiếp cận](https://dequeuniversity.com/rules/axe/4.7/label-content-name-mismatch)."
366
+ "message": "Nhãn văn bản hiển thị không khớp với tên thành phần hỗ trợ tiếp cận có thể gây ra trải nghiệm khó hiểu đối với người dùng trình đọc màn hình. [Tìm hiểu thêm về tên thành phần hỗ trợ tiếp cận](https://dequeuniversity.com/rules/axe/4.8/label-content-name-mismatch)."
367
367
  },
368
368
  "core/audits/accessibility/label-content-name-mismatch.js | failureTitle": {
369
369
  "message": "Các phần tử gắn nhãn văn bản hiển thị không có tên thành phần hỗ trợ tiếp cận trùng khớp."
@@ -372,7 +372,7 @@
372
372
  "message": "Phần tử gắn nhãn văn bản hiển thị có tên thành phần hỗ trợ tiếp cận trùng khớp."
373
373
  },
374
374
  "core/audits/accessibility/label.js | description": {
375
- "message": "Các nhãn đảm bảo rằng những công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, thông báo các biện pháp kiểm soát biểu mẫu đúng cách. [Tìm hiểu thêm về nhãn phần tử biểu mẫu](https://dequeuniversity.com/rules/axe/4.7/label)."
375
+ "message": "Các nhãn đảm bảo rằng những công nghệ hỗ trợ, chẳng hạn như trình đọc màn hình, thông báo các biện pháp kiểm soát biểu mẫu đúng cách. [Tìm hiểu thêm về nhãn phần tử biểu mẫu](https://dequeuniversity.com/rules/axe/4.8/label)."
376
376
  },
377
377
  "core/audits/accessibility/label.js | failureTitle": {
378
378
  "message": "Các phần tử biểu mẫu không có nhãn liên kết"
@@ -381,7 +381,7 @@
381
381
  "message": "Các phần tử biểu mẫu có nhãn liên quan"
382
382
  },
383
383
  "core/audits/accessibility/landmark-one-main.js | description": {
384
- "message": "Điểm mốc chính giúp người dùng trình đọc màn hình dễ dàng thao tác trên trang web. [Tìm hiểu thêm về điểm mốc](https://dequeuniversity.com/rules/axe/4.7/landmark-one-main)."
384
+ "message": "Điểm mốc chính giúp người dùng trình đọc màn hình dễ dàng thao tác trên trang web. [Tìm hiểu thêm về điểm mốc](https://dequeuniversity.com/rules/axe/4.8/landmark-one-main)."
385
385
  },
386
386
  "core/audits/accessibility/landmark-one-main.js | failureTitle": {
387
387
  "message": "Tài liệu không có điểm mốc chính."
@@ -390,7 +390,7 @@
390
390
  "message": "Tài liệu có một điểm mốc chính."
391
391
  },
392
392
  "core/audits/accessibility/link-in-text-block.js | description": {
393
- "message": "Nhiều người dùng gặp khó khăn khi đọc hoặc không thể đọc được văn bản có độ tương phản thấp. Văn bản liên kết rõ ràng sẽ giúp người dùng có thị lực kém dễ đọc hơn. [Tìm hiểu cách giúp các đường liên kết dễ phân biệt](https://dequeuniversity.com/rules/axe/4.7/link-in-text-block)."
393
+ "message": "Nhiều người dùng gặp khó khăn khi đọc hoặc không thể đọc được văn bản có độ tương phản thấp. Văn bản liên kết rõ ràng sẽ giúp người dùng có thị lực kém dễ đọc hơn. [Tìm hiểu cách giúp các đường liên kết dễ phân biệt](https://dequeuniversity.com/rules/axe/4.8/link-in-text-block)."
394
394
  },
395
395
  "core/audits/accessibility/link-in-text-block.js | failureTitle": {
396
396
  "message": "Bạn cần dựa vào màu sắc để phân biệt các đường liên kết."
@@ -399,7 +399,7 @@
399
399
  "message": "Bạn có thể phân biệt được các đường liên kết mà không cần dựa vào màu sắc."
400
400
  },
401
401
  "core/audits/accessibility/link-name.js | description": {
402
- "message": "Văn bản liên kết (và văn bản thay thế cho hình ảnh, khi dùng làm phần tử liên kết) có thể thấy rõ, là duy nhất và có thể lấy tiêu điểm sẽ cải thiện trải nghiệm khám phá cho người dùng trình đọc màn hình. [Tìm hiểu cách giúp các phần tử liên kết trở nên dễ tiếp cận](https://dequeuniversity.com/rules/axe/4.7/link-name)."
402
+ "message": "Văn bản liên kết (và văn bản thay thế cho hình ảnh, khi dùng làm phần tử liên kết) có thể thấy rõ, là duy nhất và có thể lấy tiêu điểm sẽ cải thiện trải nghiệm khám phá cho người dùng trình đọc màn hình. [Tìm hiểu cách giúp các phần tử liên kết trở nên dễ tiếp cận](https://dequeuniversity.com/rules/axe/4.8/link-name)."
403
403
  },
404
404
  "core/audits/accessibility/link-name.js | failureTitle": {
405
405
  "message": "Các phần tử liên kết không có tên có thể nhận rõ"
@@ -408,7 +408,7 @@
408
408
  "message": "Các phần tử liên kết có tên có thể nhận rõ"
409
409
  },
410
410
  "core/audits/accessibility/list.js | description": {
411
- "message": "Các trình đọc màn hình có các cách riêng để thông báo danh sách. Khi danh sách có cấu trúc phù hợp, trình đọc màn hình sẽ thông báo về danh sách chính xác hơn. [Tìm hiểu thêm về cấu trúc phù hợp của danh sách](https://dequeuniversity.com/rules/axe/4.7/list)."
411
+ "message": "Các trình đọc màn hình có các cách riêng để thông báo danh sách. Khi danh sách có cấu trúc phù hợp, trình đọc màn hình sẽ thông báo về danh sách chính xác hơn. [Tìm hiểu thêm về cấu trúc phù hợp của danh sách](https://dequeuniversity.com/rules/axe/4.8/list)."
412
412
  },
413
413
  "core/audits/accessibility/list.js | failureTitle": {
414
414
  "message": "Danh sách không chỉ chứa các phần tử `<li>` và phần tử hỗ trợ tập lệnh (`<script>` và `<template>`)."
@@ -417,7 +417,7 @@
417
417
  "message": "Danh sách chỉ chứa các phần tử `<li>` và phần tử hỗ trợ tập lệnh (`<script>` và `<template>`)."
418
418
  },
419
419
  "core/audits/accessibility/listitem.js | description": {
420
- "message": "Trình đọc màn hình yêu cầu các mục danh sách (`<li>`) phải có trong một `<ul>` `<ol>` hoặc `<menu>` mẹ để được thông báo đúng cách. [Tìm hiểu thêm về cấu trúc phù hợp của danh sách](https://dequeuniversity.com/rules/axe/4.7/listitem)."
420
+ "message": "Trình đọc màn hình yêu cầu các mục danh sách (`<li>`) phải có trong một `<ul>` `<ol>` hoặc `<menu>` mẹ để được thông báo đúng cách. [Tìm hiểu thêm về cấu trúc phù hợp của danh sách](https://dequeuniversity.com/rules/axe/4.8/listitem)."
421
421
  },
422
422
  "core/audits/accessibility/listitem.js | failureTitle": {
423
423
  "message": "Các mục trong danh sách (`<li>`) không có trong phần tử `<ul>` `<ol>` hoặc `<menu>` mẹ."
@@ -426,7 +426,7 @@
426
426
  "message": "Các mục trong danh sách (`<li>`) có trong phần tử mẹ `<ul>`, `<ol>` hoặc `<menu>`"
427
427
  },
428
428
  "core/audits/accessibility/meta-refresh.js | description": {
429
- "message": "Người dùng không muốn một trang tự động làm mới và việc trang tự động làm mới sẽ chuyển tiêu điểm quay về đầu trang. Người dùng có thể cảm thấy khó chịu hoặc bị nhầm lẫn nếu gặp trường hợp này. [Tìm hiểu thêm về thẻ làm mới meta](https://dequeuniversity.com/rules/axe/4.7/meta-refresh)."
429
+ "message": "Người dùng không muốn một trang tự động làm mới và việc trang tự động làm mới sẽ chuyển tiêu điểm quay về đầu trang. Người dùng có thể cảm thấy khó chịu hoặc bị nhầm lẫn nếu gặp trường hợp này. [Tìm hiểu thêm về thẻ làm mới meta](https://dequeuniversity.com/rules/axe/4.8/meta-refresh)."
430
430
  },
431
431
  "core/audits/accessibility/meta-refresh.js | failureTitle": {
432
432
  "message": "Tài liệu này sử dụng `<meta http-equiv=\"refresh\">`"
@@ -435,7 +435,7 @@
435
435
  "message": "Tài liệu này không dùng `<meta http-equiv=\"refresh\">`"
436
436
  },
437
437
  "core/audits/accessibility/meta-viewport.js | description": {
438
- "message": "Việc tắt tính năng thu phóng sẽ gây trở ngại cho những người dùng có thị lực kém bị lệ thuộc vào chức năng phóng to màn hình để thấy rõ nội dung trang web. [Tìm hiểu thêm về thẻ meta cửa sổ xem](https://dequeuniversity.com/rules/axe/4.7/meta-viewport)."
438
+ "message": "Việc tắt tính năng thu phóng sẽ gây trở ngại cho những người dùng có thị lực kém bị lệ thuộc vào chức năng phóng to màn hình để thấy rõ nội dung trang web. [Tìm hiểu thêm về thẻ meta cửa sổ xem](https://dequeuniversity.com/rules/axe/4.8/meta-viewport)."
439
439
  },
440
440
  "core/audits/accessibility/meta-viewport.js | failureTitle": {
441
441
  "message": "`[user-scalable=\"no\"]` được dùng trong phần tử `<meta name=\"viewport\">` hoặc thuộc tính `[maximum-scale]` nhỏ hơn 5."
@@ -444,7 +444,7 @@
444
444
  "message": "`[user-scalable=\"no\"]` không được sử dụng trong phần tử `<meta name=\"viewport\">` và thuộc tính `[maximum-scale]` không nhỏ hơn 5."
445
445
  },
446
446
  "core/audits/accessibility/object-alt.js | description": {
447
- "message": "Trình đọc màn hình không dịch được nội dung không ở dạng văn bản. Bằng việc thêm văn bản thay thế vào các phần tử `<object>`, bạn có thể giúp trình đọc màn hình truyền đạt ý nghĩa cho người dùng. [Tìm hiểu thêm về văn bản thay thế cho `object` phần tử](https://dequeuniversity.com/rules/axe/4.7/object-alt)."
447
+ "message": "Trình đọc màn hình không dịch được nội dung không ở dạng văn bản. Bằng việc thêm văn bản thay thế vào các phần tử `<object>`, bạn có thể giúp trình đọc màn hình truyền đạt ý nghĩa cho người dùng. [Tìm hiểu thêm về văn bản thay thế cho `object` phần tử](https://dequeuniversity.com/rules/axe/4.8/object-alt)."
448
448
  },
449
449
  "core/audits/accessibility/object-alt.js | failureTitle": {
450
450
  "message": "Các thành phần `<object>` không có văn bản thay thế"
@@ -453,7 +453,7 @@
453
453
  "message": "Các thành phần `<object>` có văn bản thay thế"
454
454
  },
455
455
  "core/audits/accessibility/select-name.js | description": {
456
- "message": "Các phần tử biểu mẫu không có nhãn hữu ích có thể khiến người dùng trình đọc màn hình cảm thấy khó chịu. [Tìm hiểu thêm về phần tử `select`](https://dequeuniversity.com/rules/axe/4.7/select-name)."
456
+ "message": "Các phần tử biểu mẫu không có nhãn hữu ích có thể khiến người dùng trình đọc màn hình cảm thấy khó chịu. [Tìm hiểu thêm về phần tử `select`](https://dequeuniversity.com/rules/axe/4.8/select-name)."
457
457
  },
458
458
  "core/audits/accessibility/select-name.js | failureTitle": {
459
459
  "message": "Các phần tử lựa chọn không có phần tử nhãn đi kèm."
@@ -462,7 +462,7 @@
462
462
  "message": "Các phần tử lựa chọn có phần tử nhãn liên kết."
463
463
  },
464
464
  "core/audits/accessibility/skip-link.js | description": {
465
- "message": "Nếu có đường liên kết bỏ qua, người dùng có thể chuyển ngay đến nội dung chính để tiết kiệm thời gian. [Tìm hiểu thêm về đường liên kết bỏ qua](https://dequeuniversity.com/rules/axe/4.7/skip-link)."
465
+ "message": "Nếu có đường liên kết bỏ qua, người dùng có thể chuyển ngay đến nội dung chính để tiết kiệm thời gian. [Tìm hiểu thêm về đường liên kết bỏ qua](https://dequeuniversity.com/rules/axe/4.8/skip-link)."
466
466
  },
467
467
  "core/audits/accessibility/skip-link.js | failureTitle": {
468
468
  "message": "Đường liên kết bỏ qua không thể làm tâm điểm."
@@ -471,7 +471,7 @@
471
471
  "message": "Đường liên kết bỏ qua có thể làm tâm điểm."
472
472
  },
473
473
  "core/audits/accessibility/tabindex.js | description": {
474
- "message": "Giá trị lớn hơn 0 ngụ ý thứ tự điều hướng rõ ràng. Mặc dù hợp lệ về mặt kỹ thuật nhưng điều này thường tạo ra trải nghiệm khó chịu cho những người dùng bị lệ thuộc vào công nghệ hỗ trợ. [Tìm hiểu thêm về thuộc tính `tabindex`](https://dequeuniversity.com/rules/axe/4.7/tabindex)."
474
+ "message": "Giá trị lớn hơn 0 ngụ ý thứ tự điều hướng rõ ràng. Mặc dù hợp lệ về mặt kỹ thuật nhưng điều này thường tạo ra trải nghiệm khó chịu cho những người dùng bị lệ thuộc vào công nghệ hỗ trợ. [Tìm hiểu thêm về thuộc tính `tabindex`](https://dequeuniversity.com/rules/axe/4.8/tabindex)."
475
475
  },
476
476
  "core/audits/accessibility/tabindex.js | failureTitle": {
477
477
  "message": "Một số phần tử có giá trị `[tabindex]` lớn hơn 0"
@@ -480,7 +480,7 @@
480
480
  "message": "Không phần tử nào có giá trị `[tabindex]` lớn hơn 0"
481
481
  },
482
482
  "core/audits/accessibility/table-duplicate-name.js | description": {
483
- "message": "Thuộc tính tóm tắt phải mô tả cấu trúc bảng, còn `<caption>` phải có tiêu đề trên màn hình. Việc đánh dấu bảng chính xác giúp ích cho người dùng trình đọc màn hình. [Tìm hiểu thêm về tóm tắt và chú thích](https://dequeuniversity.com/rules/axe/4.7/table-duplicate-name)."
483
+ "message": "Thuộc tính tóm tắt phải mô tả cấu trúc bảng, còn `<caption>` phải có tiêu đề trên màn hình. Việc đánh dấu bảng chính xác giúp ích cho người dùng trình đọc màn hình. [Tìm hiểu thêm về tóm tắt và chú thích](https://dequeuniversity.com/rules/axe/4.8/table-duplicate-name)."
484
484
  },
485
485
  "core/audits/accessibility/table-duplicate-name.js | failureTitle": {
486
486
  "message": "Các bảng có nội dung giống nhau trong thuộc tính tóm tắt và `<caption>.`"
@@ -489,7 +489,7 @@
489
489
  "message": "Các bảng có nội dung khác nhau trong thuộc tính tóm tắt và `<caption>`."
490
490
  },
491
491
  "core/audits/accessibility/table-fake-caption.js | description": {
492
- "message": "Trình đọc màn hình có các tính năng giúp người dùng dễ dàng sử dụng bảng hơn. Các bảng cần sử dụng phần tử chú thích thực tế thay vì các ô có thuộc tính `[colspan]` để người dùng trình đọc màn hình có trải nghiệm tốt hơn. [Tìm hiểu thêm về chú thích](https://dequeuniversity.com/rules/axe/4.7/table-fake-caption)."
492
+ "message": "Trình đọc màn hình có các tính năng giúp người dùng dễ dàng sử dụng bảng hơn. Các bảng cần sử dụng phần tử chú thích thực tế thay vì các ô có thuộc tính `[colspan]` để người dùng trình đọc màn hình có trải nghiệm tốt hơn. [Tìm hiểu thêm về chú thích](https://dequeuniversity.com/rules/axe/4.8/table-fake-caption)."
493
493
  },
494
494
  "core/audits/accessibility/table-fake-caption.js | failureTitle": {
495
495
  "message": "Bảng không sử dụng `<caption>` thay cho các ô có thuộc tính `[colspan]` để biểu thị chú thích."
@@ -498,7 +498,7 @@
498
498
  "message": "Bảng sử dụng `<caption>` thay vì các ô có thuộc tính `[colspan]` để biểu thị chú thích."
499
499
  },
500
500
  "core/audits/accessibility/target-size.js | description": {
501
- "message": "Đích chạm có kích thước và khoảng giãn cách phù hợp sẽ giúp người dùng kích hoạt mục tiêu nếu họ gặp khó khăn với việc chọn các thành phần điều khiển nhỏ. [Tìm hiểu thêm về đích chạm](https://dequeuniversity.com/rules/axe/4.7/target-size)."
501
+ "message": "Đích chạm có kích thước và khoảng giãn cách phù hợp sẽ giúp người dùng kích hoạt mục tiêu nếu họ gặp khó khăn với việc chọn các thành phần điều khiển nhỏ. [Tìm hiểu thêm về đích chạm](https://dequeuniversity.com/rules/axe/4.8/target-size)."
502
502
  },
503
503
  "core/audits/accessibility/target-size.js | failureTitle": {
504
504
  "message": "Đích chạm có kích thước hoặc khoảng giãn cách chưa phù hợp."
@@ -507,7 +507,7 @@
507
507
  "message": "Đích chạm có kích thước và khoảng giãn cách phù hợp."
508
508
  },
509
509
  "core/audits/accessibility/td-has-header.js | description": {
510
- "message": "Trình đọc màn hình có các tính năng giúp người dùng dễ dàng sử dụng bảng hơn. Các phần tử `<td>` trong bảng lớn (chiều rộng và chiều cao từ 3 ô trở lên) cần có tiêu đề bảng liên kết để người dùng trình đọc màn hình có trải nghiệm tốt hơn. [Tìm hiểu thêm về tiêu đề bảng](https://dequeuniversity.com/rules/axe/4.7/td-has-header)."
510
+ "message": "Trình đọc màn hình có các tính năng giúp người dùng dễ dàng sử dụng bảng hơn. Các phần tử `<td>` trong bảng lớn (chiều rộng và chiều cao từ 3 ô trở lên) cần có tiêu đề bảng liên kết để người dùng trình đọc màn hình có trải nghiệm tốt hơn. [Tìm hiểu thêm về tiêu đề bảng](https://dequeuniversity.com/rules/axe/4.8/td-has-header)."
511
511
  },
512
512
  "core/audits/accessibility/td-has-header.js | failureTitle": {
513
513
  "message": "Các phần tử `<td>` trong `<table>` lớn không có tiêu đề bảng."
@@ -516,7 +516,7 @@
516
516
  "message": "Các phần tử `<td>` trong `<table>` lớn có một hoặc nhiều tiêu đề bảng."
517
517
  },
518
518
  "core/audits/accessibility/td-headers-attr.js | description": {
519
- "message": "Trình đọc màn hình có các tính năng giúp người dùng dễ dàng sử dụng bảng hơn. Việc đảm bảo các ô `<td>` sử dụng thuộc tính `[headers]` chỉ tham chiếu các ô khác trong cùng bảng có thể cải thiện trải nghiệm của người dùng trình đọc màn hình. [Tìm hiểu thêm về thuộc tính `headers`](https://dequeuniversity.com/rules/axe/4.7/td-headers-attr)."
519
+ "message": "Trình đọc màn hình có các tính năng giúp người dùng dễ dàng sử dụng bảng hơn. Việc đảm bảo các ô `<td>` sử dụng thuộc tính `[headers]` chỉ tham chiếu các ô khác trong cùng bảng có thể cải thiện trải nghiệm của người dùng trình đọc màn hình. [Tìm hiểu thêm về thuộc tính `headers`](https://dequeuniversity.com/rules/axe/4.8/td-headers-attr)."
520
520
  },
521
521
  "core/audits/accessibility/td-headers-attr.js | failureTitle": {
522
522
  "message": "Các ô trong phần tử `<table>` sử dụng thuộc tính `[headers]` tham chiếu đến một phần tử `id` không tìm thấy trong cùng một bảng."
@@ -525,7 +525,7 @@
525
525
  "message": "Các ô trong phần tử `<table>` sử dụng thuộc tính `[headers]` tham chiếu đến các ô trong cùng một bảng."
526
526
  },
527
527
  "core/audits/accessibility/th-has-data-cells.js | description": {
528
- "message": "Trình đọc màn hình có các tính năng giúp người dùng dễ dàng sử dụng bảng hơn. Việc đảm bảo tiêu đề bảng luôn tham chiếu đến một nhóm ô nào đó có thể cải thiện trải nghiệm của người dùng trình đọc màn hình. [Tìm hiểu thêm về tiêu đề bảng](https://dequeuniversity.com/rules/axe/4.7/th-has-data-cells)."
528
+ "message": "Trình đọc màn hình có các tính năng giúp người dùng dễ dàng sử dụng bảng hơn. Việc đảm bảo tiêu đề bảng luôn tham chiếu đến một nhóm ô nào đó có thể cải thiện trải nghiệm của người dùng trình đọc màn hình. [Tìm hiểu thêm về tiêu đề bảng](https://dequeuniversity.com/rules/axe/4.8/th-has-data-cells)."
529
529
  },
530
530
  "core/audits/accessibility/th-has-data-cells.js | failureTitle": {
531
531
  "message": "Các phần tử `<th>` và phần tử có `[role=\"columnheader\"/\"rowheader\"]` không chứa các ô dữ liệu mà các phần tử đó mô tả."
@@ -534,7 +534,7 @@
534
534
  "message": "Các phần tử `<th>` và phần tử có `[role=\"columnheader\"/\"rowheader\"]` chứa các ô dữ liệu mà các phần tử này mô tả."
535
535
  },
536
536
  "core/audits/accessibility/valid-lang.js | description": {
537
- "message": "Việc chỉ định một [ngôn ngữ BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) hợp lệ cho các phần tử sẽ giúp trình đọc màn hình phát âm văn bản chính xác. [Tìm hiểu cách sử dụng thuộc tính `lang`](https://dequeuniversity.com/rules/axe/4.7/valid-lang)."
537
+ "message": "Việc chỉ định một [ngôn ngữ BCP 47](https://www.w3.org/International/questions/qa-choosing-language-tags#question) hợp lệ cho các phần tử sẽ giúp trình đọc màn hình phát âm văn bản chính xác. [Tìm hiểu cách sử dụng thuộc tính `lang`](https://dequeuniversity.com/rules/axe/4.8/valid-lang)."
538
538
  },
539
539
  "core/audits/accessibility/valid-lang.js | failureTitle": {
540
540
  "message": "Các thuộc tính `[lang]` không có giá trị hợp lệ"
@@ -543,7 +543,7 @@
543
543
  "message": "Các thuộc tính `[lang]` có giá trị hợp lệ"
544
544
  },
545
545
  "core/audits/accessibility/video-caption.js | description": {
546
- "message": "Khi video có chú thích, người dùng khiếm thính và người dùng bị suy giảm thính lực có thể tiếp cận thông tin trên video đó dễ dàng hơn. [Tìm hiểu thêm về chú thích của video](https://dequeuniversity.com/rules/axe/4.7/video-caption)."
546
+ "message": "Khi video có chú thích, người dùng khiếm thính và người dùng bị suy giảm thính lực có thể tiếp cận thông tin trên video đó dễ dàng hơn. [Tìm hiểu thêm về chú thích của video](https://dequeuniversity.com/rules/axe/4.8/video-caption)."
547
547
  },
548
548
  "core/audits/accessibility/video-caption.js | failureTitle": {
549
549
  "message": "Các phần tử `<video>` không chứa phần tử `<track>` có `[kind=\"captions\"]`."
@@ -774,7 +774,7 @@
774
774
  "message": "Cú pháp"
775
775
  },
776
776
  "core/audits/csp-xss.js | metaTagMessage": {
777
- "message": "Trang này chứa CSP được xác định trong thẻ <meta>. Hãy cân nhắc việc di chuyển Chính sách bảo mật nội dung (CSP) sang tiêu đề HTTP hoặc xác định một CSP nghiêm ngặt khác trong tiêu đề HTTP."
777
+ "message": "Trang này chứa một CSP được xác định trong thẻ `<meta>`. Hãy cân nhắc di chuyển CSP đó sang tiêu đề HTTP hoặc xác định một CSP nghiêm ngặt khác trong tiêu đề HTTP."
778
778
  },
779
779
  "core/audits/csp-xss.js | noCsp": {
780
780
  "message": "Không tìm thấy CSP nào ở chế độ thực thi"
@@ -1026,7 +1026,7 @@
1026
1026
  "message": "Trang được tải trong cửa sổ ẩn danh"
1027
1027
  },
1028
1028
  "core/audits/installable-manifest.js | manifest-display-not-supported": {
1029
- "message": "Thuộc tính \"display\" của tệp kê khai phải là một trong các chế độ \"standalone\", \"fullscreen\" hoặc \"minimal-ui\""
1029
+ "message": "Thuộc tính `display` của tệp kê khai phải là `standalone`, `fullscreen` hoặc `minimal-ui`"
1030
1030
  },
1031
1031
  "core/audits/installable-manifest.js | manifest-display-override-not-supported": {
1032
1032
  "message": "Tệp kê khai chứa trường \"display_override\" và chế độ hiển thị được hỗ trợ đầu tiên phải là một trong các chế độ \"standalone\", \"fullscreen\" hoặc \"minimal-ui\""
@@ -1038,7 +1038,7 @@
1038
1038
  "message": "URL của tệp kê khai đã thay đổi khi đang tìm nạp tệp kê khai đó."
1039
1039
  },
1040
1040
  "core/audits/installable-manifest.js | manifest-missing-name-or-short-name": {
1041
- "message": "Tệp kê khai không chứa trường \"name\" hoặc \"short_name\""
1041
+ "message": "Tệp kê khai không chứa trường `name` hoặc `short_name`"
1042
1042
  },
1043
1043
  "core/audits/installable-manifest.js | manifest-missing-suitable-icon": {
1044
1044
  "message": "Tệp kê khai chứa biểu tượng không phù hợp. Yêu cầu tệp phải ở định dạng PNG, SVG hoặc WebP có kích thước tối thiểu là {value0} px, thuộc tính \"sizes\" phải được đặt, còn thuộc tính \"purpose\" (nếu được đặt) phải bao gồm \"any\"."
@@ -1856,6 +1856,9 @@
1856
1856
  "core/gather/gatherers/link-elements.js | headerParseWarning": {
1857
1857
  "message": "Đã xảy ra lỗi khi phân tích cú pháp tiêu đề `link` ({error}): `{header}`"
1858
1858
  },
1859
+ "core/gather/timespan-runner.js | warningNavigationDetected": {
1860
+ "message": "Đã phát hiện thao tác điều hướng trang trong quá trình chạy. Bạn không nên sử dụng chế độ khoảng thời gian để kiểm tra các thao tác điều hướng trang. Sử dụng chế độ điều hướng để kiểm tra các thao tác điều hướng trang nhằm cải thiện việc phát hiện luồng chính và thuộc tính của bên thứ ba."
1861
+ },
1859
1862
  "core/lib/bf-cache-strings.js | HTTPMethodNotGET": {
1860
1863
  "message": "Chỉ những trang được tải qua yêu cầu GET mới đủ điều kiện dùng bộ nhớ đệm cho thao tác tiến/lùi."
1861
1864
  },
@@ -2208,25 +2211,25 @@
2208
2211
  "message": "Những trang sử dụng WebXR hiện không đủ điều kiện dùng bộ nhớ đệm cho thao tác tiến/lùi."
2209
2212
  },
2210
2213
  "core/lib/csp-evaluator.js | allowlistFallback": {
2211
- "message": "Hãy cân nhắc thêm giao thức URL https: và http: (bị các trình duyệt hỗ trợ \"strict-dynamic\" bỏ qua) để tương thích ngược với những trình duyệt cũ."
2214
+ "message": "Hãy cân nhắc thêm giao thức URL https: và http: (bị các trình duyệt hỗ trợ `'strict-dynamic'` bỏ qua) để đảm bảo khả năng tương thích ngược với những trình duyệt cũ."
2212
2215
  },
2213
2216
  "core/lib/csp-evaluator.js | deprecatedDisownOpener": {
2214
- "message": "Kể từ CSP3, disown-opener sẽ không được dùng nữa. Vui lòng sử dụng tiêu đề Cross-Origin-Opener-Policy."
2217
+ "message": "Kể từ CSP3, `disown-opener` sẽ không được dùng nữa. Vui lòng sử dụng tiêu đề Cross-Origin-Opener-Policy."
2215
2218
  },
2216
2219
  "core/lib/csp-evaluator.js | deprecatedReferrer": {
2217
- "message": "Kể từ CSP2, referrer sẽ không được dùng nữa. Vui lòng sử dụng tiêu đề Referrer-Policy."
2220
+ "message": "Kể từ CSP2, `referrer` sẽ không được dùng nữa. Vui lòng sử dụng tiêu đề Referrer-Policy."
2218
2221
  },
2219
2222
  "core/lib/csp-evaluator.js | deprecatedReflectedXSS": {
2220
- "message": "Kể từ CSP2, reflected-xss sẽ không được dùng nữa. Vui lòng sử dụng tiêu đề X-XSS-Protection."
2223
+ "message": "Kể từ CSP2, `reflected-xss` sẽ không được dùng nữa. Vui lòng sử dụng tiêu đề X-XSS-Protection."
2221
2224
  },
2222
2225
  "core/lib/csp-evaluator.js | missingBaseUri": {
2223
- "message": "Nếu thiếu base-uri, các thẻ <base> có thể được chèn vào để đặt URL cơ sở cho mọi URL tương đối (ví dụ: tập lệnh) đến miền do kẻ tấn công kiểm soát. Hãy cân nhắc đặt base-uri thành \"none\" hoặc \"self\"."
2226
+ "message": "Nếu thiếu `base-uri`, hệ thống sẽ cho phép các thẻ `<base>` được chèn đặt URL cơ sở cho mọi URL tương đối (ví dụ: tập lệnh) thành miền do kẻ tấn công kiểm soát. Hãy cân nhắc đặt `base-uri` thành `'none'` hoặc `'self'`."
2224
2227
  },
2225
2228
  "core/lib/csp-evaluator.js | missingObjectSrc": {
2226
- "message": "Khi thiếu object-src, hệ thống sẽ cho phép hành vi chèn các trình bổ trợ thực thi tập lệnh không an toàn. Hãy cân nhắc đặt object-src thành \"none\" nếu bạn có thể."
2229
+ "message": "Khi thiếu `object-src`, hệ thống sẽ cho phép hành vi chèn các trình bổ trợ thực thi tập lệnh không an toàn. Hãy cân nhắc đặt `object-src` thành `'none'` nếu có thể."
2227
2230
  },
2228
2231
  "core/lib/csp-evaluator.js | missingScriptSrc": {
2229
- "message": "Thiếu lệnh script-src. Khi không có lệnh này, các tập lệnh không an toàn có thể được thực thi."
2232
+ "message": "Thiếu lệnh `script-src`. Khi không có lệnh này, hệ thống có thể cho phép thực thi các tập lệnh không an toàn."
2230
2233
  },
2231
2234
  "core/lib/csp-evaluator.js | missingSemicolon": {
2232
2235
  "message": "Bạn quên dấu chấm phẩy ư? {keyword} có vẻ giống lệnh hơn là từ khóa."
@@ -2244,13 +2247,13 @@
2244
2247
  "message": "Tránh dùng các ký tự đại diện thuần túy ({keyword}) trong lệnh này. Các ký tự đại diện thuần túy cho phép thực thi các tập lệnh từ miền không an toàn."
2245
2248
  },
2246
2249
  "core/lib/csp-evaluator.js | reportToOnly": {
2247
- "message": "Đích báo cáo này chỉ được định cấu hình thông qua lệnh report-to. Chỉ các trình duyệt dựa trên Chromium mới hỗ trợ lệnh này. Do đó, bạn nên dùng cả lệnh report-uri."
2250
+ "message": "Đích báo cáo này chỉ được định cấu hình thông qua lệnh report-to. Chỉ các trình duyệt dựa trên Chromium mới hỗ trợ lệnh này. Do đó, bạn nên dùng cả lệnh `report-uri`."
2248
2251
  },
2249
2252
  "core/lib/csp-evaluator.js | reportingDestinationMissing": {
2250
2253
  "message": "Không có CSP nào định cấu hình đích báo cáo. Điều này sẽ gây khó khăn cho việc duy trì CSP theo thời gian và giám sát mọi sự cố."
2251
2254
  },
2252
2255
  "core/lib/csp-evaluator.js | strictDynamic": {
2253
- "message": "Danh sách máy chủ cho phép có thể thường xuyên bị bỏ qua. Thay vào đó, hãy cân nhắc dùng nonces hoặc hashes của CSP, cùng với \"strict-dynamic\" nếu cần."
2256
+ "message": "Danh sách máy chủ lưu trữ được cho phép có thể thường xuyên bị bỏ qua. Thay vào đó, hãy cân nhắc dùng nonces hoặc hashes của CSP, cùng với `'strict-dynamic'` nếu cần."
2254
2257
  },
2255
2258
  "core/lib/csp-evaluator.js | unknownDirective": {
2256
2259
  "message": "Lệnh CSP không xác định."
@@ -2259,10 +2262,10 @@
2259
2262
  "message": "Có vẻ như {keyword} là một từ khóa không hợp lệ."
2260
2263
  },
2261
2264
  "core/lib/csp-evaluator.js | unsafeInline": {
2262
- "message": "\"unsafe-inline\" cho phép thực thi nhiều trình xử lý sự kiện và tập lệnh không an toàn trong trang. Hãy cân nhắc dùng nonces hoặc hashes của CSP để cho phép thực thi từng tập lệnh."
2265
+ "message": "`'unsafe-inline'` cho phép thực thi nhiều trình xử lý sự kiện và tập lệnh không an toàn trong trang. Hãy cân nhắc dùng nonces hoặc hashes của CSP để cho phép thực thi từng tập lệnh."
2263
2266
  },
2264
2267
  "core/lib/csp-evaluator.js | unsafeInlineFallback": {
2265
- "message": "Hãy cân nhắc thêm \"unsafe-inline\" (bị các trình duyệt hỗ trợ nonces/hashes bỏ qua) để tương thích ngược với những trình duyệt cũ."
2268
+ "message": "Hãy cân nhắc thêm `'unsafe-inline'` (bị các trình duyệt hỗ trợ nonces/hashes bỏ qua) để đảm bảo khả năng tương thích ngược với những trình duyệt cũ."
2266
2269
  },
2267
2270
  "core/lib/deprecation-description.js | feature": {
2268
2271
  "message": "Kiểm tra trang trạng thái của tính năng để biết thêm thông tin."