@jjlmoya/utils-hardware 1.15.0 → 1.17.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 (178) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/ru.ts +5 -5
  3. package/src/category/index.ts +3 -1
  4. package/src/entries.ts +7 -1
  5. package/src/index.ts +2 -0
  6. package/src/pages/[locale]/[slug].astro +28 -12
  7. package/src/tests/locale_completeness.test.ts +7 -21
  8. package/src/tests/no_h1_in_components.test.ts +1 -1
  9. package/src/tests/shared-test-helpers.ts +56 -0
  10. package/src/tests/tool_exports.test.ts +34 -0
  11. package/src/tests/tool_validation.test.ts +2 -2
  12. package/src/tool/batteryHealthEstimator/bibliography.ts +13 -0
  13. package/src/tool/batteryHealthEstimator/i18n/de.ts +3 -13
  14. package/src/tool/batteryHealthEstimator/i18n/en.ts +3 -13
  15. package/src/tool/batteryHealthEstimator/i18n/es.ts +2 -12
  16. package/src/tool/batteryHealthEstimator/i18n/fr.ts +3 -13
  17. package/src/tool/batteryHealthEstimator/i18n/id.ts +3 -13
  18. package/src/tool/batteryHealthEstimator/i18n/it.ts +2 -12
  19. package/src/tool/batteryHealthEstimator/i18n/ja.ts +2 -12
  20. package/src/tool/batteryHealthEstimator/i18n/ko.ts +2 -12
  21. package/src/tool/batteryHealthEstimator/i18n/nl.ts +3 -13
  22. package/src/tool/batteryHealthEstimator/i18n/pl.ts +3 -13
  23. package/src/tool/batteryHealthEstimator/i18n/pt.ts +3 -13
  24. package/src/tool/batteryHealthEstimator/i18n/ru.ts +7 -17
  25. package/src/tool/batteryHealthEstimator/i18n/sv.ts +3 -13
  26. package/src/tool/batteryHealthEstimator/i18n/tr.ts +3 -13
  27. package/src/tool/batteryHealthEstimator/i18n/zh.ts +3 -13
  28. package/src/tool/batteryHealthEstimator/seo.astro +3 -2
  29. package/src/tool/colorAccuracyTest/bibliography.astro +14 -0
  30. package/src/tool/colorAccuracyTest/bibliography.ts +16 -0
  31. package/src/tool/colorAccuracyTest/color-accuracy-test.css +728 -0
  32. package/src/tool/colorAccuracyTest/component.astro +157 -0
  33. package/src/tool/colorAccuracyTest/entry.ts +29 -0
  34. package/src/tool/colorAccuracyTest/i18n/de.ts +284 -0
  35. package/src/tool/colorAccuracyTest/i18n/en.ts +284 -0
  36. package/src/tool/colorAccuracyTest/i18n/es.ts +284 -0
  37. package/src/tool/colorAccuracyTest/i18n/fr.ts +284 -0
  38. package/src/tool/colorAccuracyTest/i18n/id.ts +284 -0
  39. package/src/tool/colorAccuracyTest/i18n/it.ts +284 -0
  40. package/src/tool/colorAccuracyTest/i18n/ja.ts +284 -0
  41. package/src/tool/colorAccuracyTest/i18n/ko.ts +284 -0
  42. package/src/tool/colorAccuracyTest/i18n/nl.ts +284 -0
  43. package/src/tool/colorAccuracyTest/i18n/pl.ts +284 -0
  44. package/src/tool/colorAccuracyTest/i18n/pt.ts +284 -0
  45. package/src/tool/colorAccuracyTest/i18n/ru.ts +284 -0
  46. package/src/tool/colorAccuracyTest/i18n/sv.ts +284 -0
  47. package/src/tool/colorAccuracyTest/i18n/tr.ts +284 -0
  48. package/src/tool/colorAccuracyTest/i18n/zh.ts +284 -0
  49. package/src/tool/colorAccuracyTest/index.ts +9 -0
  50. package/src/tool/colorAccuracyTest/logic.ts +226 -0
  51. package/src/tool/colorAccuracyTest/seo.astro +15 -0
  52. package/src/tool/colorAccuracyTest/ui.ts +27 -0
  53. package/src/tool/deadPixelTest/bibliography.ts +13 -0
  54. package/src/tool/deadPixelTest/i18n/de.ts +2 -12
  55. package/src/tool/deadPixelTest/i18n/en.ts +2 -12
  56. package/src/tool/deadPixelTest/i18n/es.ts +2 -12
  57. package/src/tool/deadPixelTest/i18n/fr.ts +2 -12
  58. package/src/tool/deadPixelTest/i18n/id.ts +2 -12
  59. package/src/tool/deadPixelTest/i18n/it.ts +2 -12
  60. package/src/tool/deadPixelTest/i18n/ja.ts +2 -12
  61. package/src/tool/deadPixelTest/i18n/ko.ts +2 -12
  62. package/src/tool/deadPixelTest/i18n/nl.ts +2 -12
  63. package/src/tool/deadPixelTest/i18n/pl.ts +2 -12
  64. package/src/tool/deadPixelTest/i18n/pt.ts +2 -12
  65. package/src/tool/deadPixelTest/i18n/ru.ts +2 -12
  66. package/src/tool/deadPixelTest/i18n/sv.ts +2 -12
  67. package/src/tool/deadPixelTest/i18n/tr.ts +2 -12
  68. package/src/tool/deadPixelTest/i18n/zh.ts +2 -12
  69. package/src/tool/deadPixelTest/seo.astro +3 -2
  70. package/src/tool/gamepadTest/bibliography.ts +12 -0
  71. package/src/tool/gamepadTest/i18n/de.ts +2 -12
  72. package/src/tool/gamepadTest/i18n/en.ts +2 -12
  73. package/src/tool/gamepadTest/i18n/es.ts +2 -12
  74. package/src/tool/gamepadTest/i18n/fr.ts +2 -12
  75. package/src/tool/gamepadTest/i18n/id.ts +2 -12
  76. package/src/tool/gamepadTest/i18n/it.ts +2 -12
  77. package/src/tool/gamepadTest/i18n/ja.ts +2 -12
  78. package/src/tool/gamepadTest/i18n/ko.ts +2 -12
  79. package/src/tool/gamepadTest/i18n/nl.ts +2 -12
  80. package/src/tool/gamepadTest/i18n/pl.ts +2 -12
  81. package/src/tool/gamepadTest/i18n/pt.ts +2 -12
  82. package/src/tool/gamepadTest/i18n/ru.ts +3 -13
  83. package/src/tool/gamepadTest/i18n/sv.ts +2 -12
  84. package/src/tool/gamepadTest/i18n/tr.ts +2 -12
  85. package/src/tool/gamepadTest/i18n/zh.ts +2 -12
  86. package/src/tool/gamepadTest/seo.astro +3 -2
  87. package/src/tool/gamepadVibrationTester/bibliography.ts +13 -0
  88. package/src/tool/gamepadVibrationTester/i18n/de.ts +2 -12
  89. package/src/tool/gamepadVibrationTester/i18n/en.ts +2 -12
  90. package/src/tool/gamepadVibrationTester/i18n/es.ts +2 -12
  91. package/src/tool/gamepadVibrationTester/i18n/fr.ts +2 -12
  92. package/src/tool/gamepadVibrationTester/i18n/id.ts +2 -12
  93. package/src/tool/gamepadVibrationTester/i18n/it.ts +2 -12
  94. package/src/tool/gamepadVibrationTester/i18n/ja.ts +2 -12
  95. package/src/tool/gamepadVibrationTester/i18n/ko.ts +2 -12
  96. package/src/tool/gamepadVibrationTester/i18n/nl.ts +2 -12
  97. package/src/tool/gamepadVibrationTester/i18n/pl.ts +2 -12
  98. package/src/tool/gamepadVibrationTester/i18n/pt.ts +2 -12
  99. package/src/tool/gamepadVibrationTester/i18n/ru.ts +5 -15
  100. package/src/tool/gamepadVibrationTester/i18n/sv.ts +2 -12
  101. package/src/tool/gamepadVibrationTester/i18n/tr.ts +2 -12
  102. package/src/tool/gamepadVibrationTester/i18n/zh.ts +2 -12
  103. package/src/tool/gamepadVibrationTester/seo.astro +3 -2
  104. package/src/tool/keyboardTest/bibliography.ts +13 -0
  105. package/src/tool/keyboardTest/i18n/de.ts +2 -12
  106. package/src/tool/keyboardTest/i18n/en.ts +2 -12
  107. package/src/tool/keyboardTest/i18n/es.ts +2 -12
  108. package/src/tool/keyboardTest/i18n/fr.ts +2 -12
  109. package/src/tool/keyboardTest/i18n/id.ts +2 -12
  110. package/src/tool/keyboardTest/i18n/it.ts +2 -12
  111. package/src/tool/keyboardTest/i18n/ja.ts +2 -12
  112. package/src/tool/keyboardTest/i18n/ko.ts +2 -12
  113. package/src/tool/keyboardTest/i18n/nl.ts +2 -12
  114. package/src/tool/keyboardTest/i18n/pl.ts +2 -12
  115. package/src/tool/keyboardTest/i18n/pt.ts +2 -12
  116. package/src/tool/keyboardTest/i18n/ru.ts +2 -12
  117. package/src/tool/keyboardTest/i18n/sv.ts +2 -12
  118. package/src/tool/keyboardTest/i18n/tr.ts +2 -12
  119. package/src/tool/keyboardTest/i18n/zh.ts +2 -12
  120. package/src/tool/keyboardTest/seo.astro +3 -2
  121. package/src/tool/mousePollingTest/bibliography.ts +13 -0
  122. package/src/tool/mousePollingTest/i18n/de.ts +3 -13
  123. package/src/tool/mousePollingTest/i18n/en.ts +3 -13
  124. package/src/tool/mousePollingTest/i18n/es.ts +3 -13
  125. package/src/tool/mousePollingTest/i18n/fr.ts +3 -13
  126. package/src/tool/mousePollingTest/i18n/id.ts +3 -13
  127. package/src/tool/mousePollingTest/i18n/it.ts +3 -13
  128. package/src/tool/mousePollingTest/i18n/ja.ts +3 -13
  129. package/src/tool/mousePollingTest/i18n/ko.ts +3 -13
  130. package/src/tool/mousePollingTest/i18n/nl.ts +3 -13
  131. package/src/tool/mousePollingTest/i18n/pl.ts +3 -13
  132. package/src/tool/mousePollingTest/i18n/pt.ts +3 -13
  133. package/src/tool/mousePollingTest/i18n/ru.ts +5 -15
  134. package/src/tool/mousePollingTest/i18n/sv.ts +3 -13
  135. package/src/tool/mousePollingTest/i18n/tr.ts +3 -13
  136. package/src/tool/mousePollingTest/i18n/zh.ts +3 -13
  137. package/src/tool/mousePollingTest/seo.astro +3 -2
  138. package/src/tool/refreshRateDetector/bibliography.astro +14 -0
  139. package/src/tool/refreshRateDetector/bibliography.ts +12 -0
  140. package/src/tool/refreshRateDetector/component.astro +206 -0
  141. package/src/tool/refreshRateDetector/entry.ts +29 -0
  142. package/src/tool/refreshRateDetector/i18n/de.ts +196 -0
  143. package/src/tool/refreshRateDetector/i18n/en.ts +196 -0
  144. package/src/tool/refreshRateDetector/i18n/es.ts +196 -0
  145. package/src/tool/refreshRateDetector/i18n/fr.ts +196 -0
  146. package/src/tool/refreshRateDetector/i18n/id.ts +196 -0
  147. package/src/tool/refreshRateDetector/i18n/it.ts +196 -0
  148. package/src/tool/refreshRateDetector/i18n/ja.ts +196 -0
  149. package/src/tool/refreshRateDetector/i18n/ko.ts +196 -0
  150. package/src/tool/refreshRateDetector/i18n/nl.ts +196 -0
  151. package/src/tool/refreshRateDetector/i18n/pl.ts +196 -0
  152. package/src/tool/refreshRateDetector/i18n/pt.ts +196 -0
  153. package/src/tool/refreshRateDetector/i18n/ru.ts +196 -0
  154. package/src/tool/refreshRateDetector/i18n/sv.ts +196 -0
  155. package/src/tool/refreshRateDetector/i18n/tr.ts +196 -0
  156. package/src/tool/refreshRateDetector/i18n/zh.ts +196 -0
  157. package/src/tool/refreshRateDetector/index.ts +11 -0
  158. package/src/tool/refreshRateDetector/monitor-refresh-rate-detector.css +342 -0
  159. package/src/tool/refreshRateDetector/seo.astro +15 -0
  160. package/src/tool/refreshRateDetector/ui.ts +24 -0
  161. package/src/tool/toneGenerator/bibliography.ts +13 -0
  162. package/src/tool/toneGenerator/i18n/de.ts +3 -13
  163. package/src/tool/toneGenerator/i18n/en.ts +3 -13
  164. package/src/tool/toneGenerator/i18n/es.ts +2 -12
  165. package/src/tool/toneGenerator/i18n/fr.ts +3 -13
  166. package/src/tool/toneGenerator/i18n/id.ts +3 -13
  167. package/src/tool/toneGenerator/i18n/it.ts +3 -13
  168. package/src/tool/toneGenerator/i18n/ja.ts +2 -12
  169. package/src/tool/toneGenerator/i18n/ko.ts +2 -12
  170. package/src/tool/toneGenerator/i18n/nl.ts +3 -13
  171. package/src/tool/toneGenerator/i18n/pl.ts +3 -13
  172. package/src/tool/toneGenerator/i18n/pt.ts +3 -13
  173. package/src/tool/toneGenerator/i18n/ru.ts +6 -16
  174. package/src/tool/toneGenerator/i18n/sv.ts +3 -13
  175. package/src/tool/toneGenerator/i18n/tr.ts +2 -12
  176. package/src/tool/toneGenerator/i18n/zh.ts +2 -12
  177. package/src/tool/toneGenerator/seo.astro +3 -2
  178. package/src/tools.ts +3 -1
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProbadorVibracionMandoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'gamepad-vibration-tester';
6
7
  const title = 'Online Gamepad Vibration Tester';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Frequently Asked Questions',
91
91
  faq: faqData,
92
- bibliographyTitle: 'References',
93
- bibliography: [
94
- {
95
- name: 'How haptic vibration works — HobbyConsolas',
96
- url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
- },
98
- {
99
- name: 'Gamepad API — W3C',
100
- url: 'https://w3c.github.io/gamepad/',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'How to audit your gaming gamepad vibration', level: 2 },
107
97
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProbadorVibracionMandoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'probador-vibracion-mando';
6
7
  const title = 'Probador de Vibración de Mando Online';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Preguntas Frecuentes',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Referencias',
93
- bibliography: [
94
- {
95
- name: 'Cómo funciona la vibración háptica — HobbyConsolas',
96
- url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
- },
98
- {
99
- name: 'Gamepad API — W3C',
100
- url: 'https://w3c.github.io/gamepad/',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Cómo auditar la vibración de tu mando gaming', level: 2 },
107
97
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProbadorVibracionMandoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'testeur-vibration-manette';
6
7
  const title = 'Testeur de Vibration de Manette en Ligne';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Questions Fréquentes',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Références',
93
- bibliography: [
94
- {
95
- name: 'Comment fonctionne la vibration haptique — HobbyConsolas',
96
- url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
- },
98
- {
99
- name: 'Gamepad API — W3C',
100
- url: 'https://w3c.github.io/gamepad/',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Comment auditer la vibration de votre manette gaming', level: 2 },
107
97
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProbadorVibracionMandoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'tes-getaran-gamepad-online';
6
7
  const title = 'Tes Getaran Gamepad Online';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Pertanyaan yang Sering Diajukan',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Referensi',
93
- bibliography: [
94
- {
95
- name: 'Cara kerja getaran haptik — HobbyConsolas',
96
- url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
- },
98
- {
99
- name: 'Gamepad API — W3C',
100
- url: 'https://w3c.github.io/gamepad/',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Cara memeriksa getaran gamepad gaming Anda', level: 2 },
107
97
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProbadorVibracionMandoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'test-vibrazione-gamepad-online';
6
7
  const title = 'Test Vibrazione Gamepad Online';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Domande Frequenti',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Riferimenti',
93
- bibliography: [
94
- {
95
- name: 'Come funziona la vibrazione aptica — HobbyConsolas',
96
- url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
- },
98
- {
99
- name: 'Gamepad API — W3C',
100
- url: 'https://w3c.github.io/gamepad/',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Come verificare la vibrazione del tuo gamepad da gioco', level: 2 },
107
97
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProbadorVibracionMandoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'gamepad-vibration-tester';
6
7
  const title = 'オンライン・ゲームパッド振動テスター';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'よくある質問',
91
91
  faq: faqData,
92
- bibliographyTitle: 'リファレンス',
93
- bibliography: [
94
- {
95
- name: 'ハプティック振動の仕組み — HobbyConsolas',
96
- url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
- },
98
- {
99
- name: 'Gamepad API — W3C',
100
- url: 'https://w3c.github.io/gamepad/',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'ゲーム用パッドの振動を監査する方法', level: 2 },
107
97
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProbadorVibracionMandoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'gamepad-vibration-tester';
6
7
  const title = '온라인 게임패드 진동 테스트';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: '자주 묻는 질문',
91
91
  faq: faqData,
92
- bibliographyTitle: '참조',
93
- bibliography: [
94
- {
95
- name: '햅틱 진동 작동 원리 — HobbyConsolas',
96
- url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
- },
98
- {
99
- name: 'Gamepad API — W3C',
100
- url: 'https://w3c.github.io/gamepad/',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: '게임용 패드 진동을 점검하는 방법', level: 2 },
107
97
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProbadorVibracionMandoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'gamepad-vibratie-test-online';
6
7
  const title = 'Online Gamepad Vibratie Tester';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Veelgestelde Vragen',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Referenties',
93
- bibliography: [
94
- {
95
- name: 'Hoe haptische vibratie werkt — HobbyConsolas',
96
- url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
- },
98
- {
99
- name: 'Gamepad API — W3C',
100
- url: 'https://w3c.github.io/gamepad/',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Hoe examineer je de vibratie van je gamepad', level: 2 },
107
97
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProbadorVibracionMandoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'test-wibracji-pada-online';
6
7
  const title = 'Test Wibracji Pada Online';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Często Zadawane Pytania',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Referencje',
93
- bibliography: [
94
- {
95
- name: 'Jak działają wibracje haptyczne — HobbyConsolas',
96
- url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
- },
98
- {
99
- name: 'Gamepad API — W3C',
100
- url: 'https://w3c.github.io/gamepad/',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Jak sprawdzić wibracje swojego pada do gier', level: 2 },
107
97
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProbadorVibracionMandoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'teste-vibracao-gamepad-online';
6
7
  const title = 'Teste de Vibração de Gamepad Online';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Perguntas Frequentes',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Referências',
93
- bibliography: [
94
- {
95
- name: 'Como funciona a vibração háptica — HobbyConsolas',
96
- url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
- },
98
- {
99
- name: 'Gamepad API — W3C',
100
- url: 'https://w3c.github.io/gamepad/',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Como auditar a vibração do seu comando de jogo', level: 2 },
107
97
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProbadorVibracionMandoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'test-vibracii-gejmpada-online';
6
7
  const title = 'Онлайн тест вибрации геймпада';
@@ -21,12 +22,12 @@ const faqData = [
21
22
  {
22
23
  question: 'Правая сторона моего геймпада вибрирует меньше левой, это нормально?',
23
24
  answer:
24
- 'Да, совершенно нормально. Геймпады обычно имеют асимметричную конструкцию, где одна сторона отвечает за сильную, глубокую вибрацию, а другая за быструю, легкую вибрацию.',
25
+ 'Да, совершенно нормально. Геймпады обычно имеют асимметричную конструкцию, где одна сторона отвечает за сильную, глубокую вибрацию, а другая -за быструю, легкую вибрацию.',
25
26
  },
26
27
  {
27
28
  question: 'Сильно ли эти тесты расходуют заряд батареи?',
28
29
  answer:
29
- 'Вибрация одна из самых энергоемких функций беспроводного геймпада. Проведение непрерывных длительных тестов разрядит батарею быстрее, чем обычно.',
30
+ 'Вибрация -одна из самых энергоемких функций беспроводного геймпада. Проведение непрерывных длительных тестов разрядит батарею быстрее, чем обычно.',
30
31
  },
31
32
  ];
32
33
 
@@ -87,26 +88,15 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Часто задаваемые вопросы',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Ссылки',
93
- bibliography: [
94
- {
95
- name: 'Как работает тактильная вибрация — HobbyConsolas',
96
- url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
- },
98
- {
99
- name: 'Gamepad API — W3C',
100
- url: 'https://w3c.github.io/gamepad/',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Как проверить вибрацию геймпада', level: 2 },
107
97
  {
108
98
  type: 'paragraph',
109
- html: 'Тактильная отдача один из самых захватывающих элементов игрового оборудования. Когда мотор выходит из строя, первыми признаками обычно являются ненормальное жужжание или асимметричная вибрация. Ранняя диагностика предотвращает серьезные поломки.',
99
+ html: 'Тактильная отдача -один из самых захватывающих элементов игрового оборудования. Когда мотор выходит из строя, первыми признаками обычно являются ненормальное жужжание или асимметричная вибрация. Ранняя диагностика предотвращает серьезные поломки.',
110
100
  },
111
101
  { type: 'title', text: 'Зачем проводить тест вибрации?', level: 3 },
112
102
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProbadorVibracionMandoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'vibrationstest-gamepad-online';
6
7
  const title = 'Vibrationstest för Gamepad Online';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Vanliga frågor',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Referenser',
93
- bibliography: [
94
- {
95
- name: 'Hur haptisk vibration fungerar — HobbyConsolas',
96
- url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
- },
98
- {
99
- name: 'Gamepad API — W3C',
100
- url: 'https://w3c.github.io/gamepad/',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Hur du kontrollerar vibrationen på din spelkontroll', level: 2 },
107
97
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProbadorVibracionMandoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'oyun-kolu-titresim-testi-online';
6
7
  const title = 'Çevrimiçi Oyun Kolu Titreşim Testi';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: 'Sıkça Sorulan Sorular',
91
91
  faq: faqData,
92
- bibliographyTitle: 'Referanslar',
93
- bibliography: [
94
- {
95
- name: 'Haptik titreşim nasıl çalışır — HobbyConsolas',
96
- url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
- },
98
- {
99
- name: 'Gamepad API — W3C',
100
- url: 'https://w3c.github.io/gamepad/',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: 'Oyun kolunuzun titreşimini nasıl denetlersiniz', level: 2 },
107
97
  {
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { ProbadorVibracionMandoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'gamepad-vibration-tester';
6
7
  const title = '在线手柄振动测试';
@@ -87,21 +88,10 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
87
88
  slug,
88
89
  title,
89
90
  description,
90
- faqTitle: '常见问题',
91
91
  faq: faqData,
92
- bibliographyTitle: '参考资料',
93
- bibliography: [
94
- {
95
- name: '触感振动的工作原理 — HobbyConsolas',
96
- url: 'https://www.hobbyconsolas.com/reportajes/como-funciona-vibracion-haptica-mando-dualsense-ps5-757673',
97
- },
98
- {
99
- name: 'Gamepad API — W3C',
100
- url: 'https://w3c.github.io/gamepad/',
101
- },
102
- ],
103
92
  howTo: howToData,
104
93
  schemas: [faqSchema, howToSchema, appSchema],
94
+ bibliography,
105
95
  seo: [
106
96
  { type: 'title', text: '如何审计您的游戏手柄振动', level: 2 },
107
97
  {
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  import { SEORenderer } from '@jjlmoya/utils-shared';
3
- import type { KnownLocale } from '../../types';
4
3
  import { probadorVibracionMando } from './index';
4
+ import type { KnownLocale } from '../../types';
5
5
 
6
6
  interface Props {
7
7
  locale?: KnownLocale;
@@ -9,6 +9,7 @@ interface Props {
9
9
 
10
10
  const { locale = 'es' } = Astro.props;
11
11
  const content = await probadorVibracionMando.i18n[locale]?.();
12
+ if (!content) return null;
12
13
  ---
13
14
 
14
- {content && <SEORenderer content={{ locale, sections: content.seo }} />}
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,13 @@
1
+ import type { BibliographyEntry } from '../../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+
5
+ {
6
+ name: 'USB Keyboard/Keypad Page - HID Usage Tables',
7
+ url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
8
+ },
9
+ {
10
+ name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
11
+ url: 'https://deskthority.net/wiki/Rollover',
12
+ },
13
+ ];
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestTecladoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'tastatur-test-online';
6
7
  const title = 'Online Tastatur Test & Ghosting Detektor';
@@ -82,21 +83,10 @@ export const content: ToolLocaleContent<TestTecladoUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Häufig gestellte Fragen',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Technische Referenzen',
88
- bibliography: [
89
- {
90
- name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
- url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
- },
93
- {
94
- name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
- url: 'https://deskthority.net/wiki/Rollover',
96
- },
97
- ],
98
87
  howTo: howToData,
99
88
  schemas: [faqSchema, howToSchema, appSchema],
89
+ bibliography,
100
90
  seo: [
101
91
  {
102
92
  type: 'title',
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestTecladoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'keyboard-test';
6
7
  const title = 'Online Keyboard Test & Ghosting Detector';
@@ -82,21 +83,10 @@ export const content: ToolLocaleContent<TestTecladoUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Frequently Asked Questions',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Technical References',
88
- bibliography: [
89
- {
90
- name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
- url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
- },
93
- {
94
- name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
- url: 'https://deskthority.net/wiki/Rollover',
96
- },
97
- ],
98
87
  howTo: howToData,
99
88
  schemas: [faqSchema, howToSchema, appSchema],
89
+ bibliography,
100
90
  seo: [
101
91
  {
102
92
  type: 'title',
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestTecladoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'test-teclado';
6
7
  const title = 'Test de Teclado y Ghosting Online';
@@ -82,21 +83,10 @@ export const content: ToolLocaleContent<TestTecladoUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Preguntas Frecuentes',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Referencias Técnicas',
88
- bibliography: [
89
- {
90
- name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
- url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
- },
93
- {
94
- name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
- url: 'https://deskthority.net/wiki/Rollover',
96
- },
97
- ],
98
87
  howTo: howToData,
99
88
  schemas: [faqSchema, howToSchema, appSchema],
89
+ bibliography,
100
90
  seo: [
101
91
  {
102
92
  type: 'title',
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestTecladoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'test-clavier';
6
7
  const title = 'Test de Clavier et Détecteur de Ghosting';
@@ -82,21 +83,10 @@ export const content: ToolLocaleContent<TestTecladoUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Questions Fréquemment Posées',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Références Techniques',
88
- bibliography: [
89
- {
90
- name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
- url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
- },
93
- {
94
- name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
- url: 'https://deskthority.net/wiki/Rollover',
96
- },
97
- ],
98
87
  howTo: howToData,
99
88
  schemas: [faqSchema, howToSchema, appSchema],
89
+ bibliography,
100
90
  seo: [
101
91
  {
102
92
  type: 'title',
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TestTecladoUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'tes-keyboard-online';
6
7
  const title = 'Tes Keyboard Online & Detektor Ghosting';
@@ -82,21 +83,10 @@ export const content: ToolLocaleContent<TestTecladoUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Pertanyaan yang Sering Diajukan',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Referensi Teknis',
88
- bibliography: [
89
- {
90
- name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
- url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
- },
93
- {
94
- name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
- url: 'https://deskthority.net/wiki/Rollover',
96
- },
97
- ],
98
87
  howTo: howToData,
99
88
  schemas: [faqSchema, howToSchema, appSchema],
89
+ bibliography,
100
90
  seo: [
101
91
  {
102
92
  type: 'title',