@jjlmoya/utils-hardware 1.15.0 → 1.16.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 (152) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +4 -1
  4. package/src/index.ts +1 -0
  5. package/src/pages/[locale]/[slug].astro +28 -12
  6. package/src/tests/locale_completeness.test.ts +6 -20
  7. package/src/tests/shared-test-helpers.ts +56 -0
  8. package/src/tests/tool_exports.test.ts +34 -0
  9. package/src/tests/tool_validation.test.ts +2 -2
  10. package/src/tool/batteryHealthEstimator/bibliography.ts +13 -0
  11. package/src/tool/batteryHealthEstimator/i18n/de.ts +2 -12
  12. package/src/tool/batteryHealthEstimator/i18n/en.ts +2 -12
  13. package/src/tool/batteryHealthEstimator/i18n/es.ts +2 -12
  14. package/src/tool/batteryHealthEstimator/i18n/fr.ts +2 -12
  15. package/src/tool/batteryHealthEstimator/i18n/id.ts +2 -12
  16. package/src/tool/batteryHealthEstimator/i18n/it.ts +2 -12
  17. package/src/tool/batteryHealthEstimator/i18n/ja.ts +2 -12
  18. package/src/tool/batteryHealthEstimator/i18n/ko.ts +2 -12
  19. package/src/tool/batteryHealthEstimator/i18n/nl.ts +2 -12
  20. package/src/tool/batteryHealthEstimator/i18n/pl.ts +2 -12
  21. package/src/tool/batteryHealthEstimator/i18n/pt.ts +2 -12
  22. package/src/tool/batteryHealthEstimator/i18n/ru.ts +2 -12
  23. package/src/tool/batteryHealthEstimator/i18n/sv.ts +2 -12
  24. package/src/tool/batteryHealthEstimator/i18n/tr.ts +2 -12
  25. package/src/tool/batteryHealthEstimator/i18n/zh.ts +2 -12
  26. package/src/tool/batteryHealthEstimator/seo.astro +3 -2
  27. package/src/tool/deadPixelTest/bibliography.ts +13 -0
  28. package/src/tool/deadPixelTest/i18n/de.ts +2 -12
  29. package/src/tool/deadPixelTest/i18n/en.ts +2 -12
  30. package/src/tool/deadPixelTest/i18n/es.ts +2 -12
  31. package/src/tool/deadPixelTest/i18n/fr.ts +2 -12
  32. package/src/tool/deadPixelTest/i18n/id.ts +2 -12
  33. package/src/tool/deadPixelTest/i18n/it.ts +2 -12
  34. package/src/tool/deadPixelTest/i18n/ja.ts +2 -12
  35. package/src/tool/deadPixelTest/i18n/ko.ts +2 -12
  36. package/src/tool/deadPixelTest/i18n/nl.ts +2 -12
  37. package/src/tool/deadPixelTest/i18n/pl.ts +2 -12
  38. package/src/tool/deadPixelTest/i18n/pt.ts +2 -12
  39. package/src/tool/deadPixelTest/i18n/ru.ts +2 -12
  40. package/src/tool/deadPixelTest/i18n/sv.ts +2 -12
  41. package/src/tool/deadPixelTest/i18n/tr.ts +2 -12
  42. package/src/tool/deadPixelTest/i18n/zh.ts +2 -12
  43. package/src/tool/deadPixelTest/seo.astro +3 -2
  44. package/src/tool/gamepadTest/bibliography.ts +12 -0
  45. package/src/tool/gamepadTest/i18n/de.ts +2 -12
  46. package/src/tool/gamepadTest/i18n/en.ts +2 -12
  47. package/src/tool/gamepadTest/i18n/es.ts +2 -12
  48. package/src/tool/gamepadTest/i18n/fr.ts +2 -12
  49. package/src/tool/gamepadTest/i18n/id.ts +2 -12
  50. package/src/tool/gamepadTest/i18n/it.ts +2 -12
  51. package/src/tool/gamepadTest/i18n/ja.ts +2 -12
  52. package/src/tool/gamepadTest/i18n/ko.ts +2 -12
  53. package/src/tool/gamepadTest/i18n/nl.ts +2 -12
  54. package/src/tool/gamepadTest/i18n/pl.ts +2 -12
  55. package/src/tool/gamepadTest/i18n/pt.ts +2 -12
  56. package/src/tool/gamepadTest/i18n/ru.ts +2 -12
  57. package/src/tool/gamepadTest/i18n/sv.ts +2 -12
  58. package/src/tool/gamepadTest/i18n/tr.ts +2 -12
  59. package/src/tool/gamepadTest/i18n/zh.ts +2 -12
  60. package/src/tool/gamepadTest/seo.astro +3 -2
  61. package/src/tool/gamepadVibrationTester/bibliography.ts +13 -0
  62. package/src/tool/gamepadVibrationTester/i18n/de.ts +2 -12
  63. package/src/tool/gamepadVibrationTester/i18n/en.ts +2 -12
  64. package/src/tool/gamepadVibrationTester/i18n/es.ts +2 -12
  65. package/src/tool/gamepadVibrationTester/i18n/fr.ts +2 -12
  66. package/src/tool/gamepadVibrationTester/i18n/id.ts +2 -12
  67. package/src/tool/gamepadVibrationTester/i18n/it.ts +2 -12
  68. package/src/tool/gamepadVibrationTester/i18n/ja.ts +2 -12
  69. package/src/tool/gamepadVibrationTester/i18n/ko.ts +2 -12
  70. package/src/tool/gamepadVibrationTester/i18n/nl.ts +2 -12
  71. package/src/tool/gamepadVibrationTester/i18n/pl.ts +2 -12
  72. package/src/tool/gamepadVibrationTester/i18n/pt.ts +2 -12
  73. package/src/tool/gamepadVibrationTester/i18n/ru.ts +2 -12
  74. package/src/tool/gamepadVibrationTester/i18n/sv.ts +2 -12
  75. package/src/tool/gamepadVibrationTester/i18n/tr.ts +2 -12
  76. package/src/tool/gamepadVibrationTester/i18n/zh.ts +2 -12
  77. package/src/tool/gamepadVibrationTester/seo.astro +3 -2
  78. package/src/tool/keyboardTest/bibliography.ts +13 -0
  79. package/src/tool/keyboardTest/i18n/de.ts +2 -12
  80. package/src/tool/keyboardTest/i18n/en.ts +2 -12
  81. package/src/tool/keyboardTest/i18n/es.ts +2 -12
  82. package/src/tool/keyboardTest/i18n/fr.ts +2 -12
  83. package/src/tool/keyboardTest/i18n/id.ts +2 -12
  84. package/src/tool/keyboardTest/i18n/it.ts +2 -12
  85. package/src/tool/keyboardTest/i18n/ja.ts +2 -12
  86. package/src/tool/keyboardTest/i18n/ko.ts +2 -12
  87. package/src/tool/keyboardTest/i18n/nl.ts +2 -12
  88. package/src/tool/keyboardTest/i18n/pl.ts +2 -12
  89. package/src/tool/keyboardTest/i18n/pt.ts +2 -12
  90. package/src/tool/keyboardTest/i18n/ru.ts +2 -12
  91. package/src/tool/keyboardTest/i18n/sv.ts +2 -12
  92. package/src/tool/keyboardTest/i18n/tr.ts +2 -12
  93. package/src/tool/keyboardTest/i18n/zh.ts +2 -12
  94. package/src/tool/keyboardTest/seo.astro +3 -2
  95. package/src/tool/mousePollingTest/bibliography.ts +13 -0
  96. package/src/tool/mousePollingTest/i18n/de.ts +2 -12
  97. package/src/tool/mousePollingTest/i18n/en.ts +2 -12
  98. package/src/tool/mousePollingTest/i18n/es.ts +2 -12
  99. package/src/tool/mousePollingTest/i18n/fr.ts +2 -12
  100. package/src/tool/mousePollingTest/i18n/id.ts +2 -12
  101. package/src/tool/mousePollingTest/i18n/it.ts +2 -12
  102. package/src/tool/mousePollingTest/i18n/ja.ts +2 -12
  103. package/src/tool/mousePollingTest/i18n/ko.ts +2 -12
  104. package/src/tool/mousePollingTest/i18n/nl.ts +2 -12
  105. package/src/tool/mousePollingTest/i18n/pl.ts +2 -12
  106. package/src/tool/mousePollingTest/i18n/pt.ts +2 -12
  107. package/src/tool/mousePollingTest/i18n/ru.ts +2 -12
  108. package/src/tool/mousePollingTest/i18n/sv.ts +2 -12
  109. package/src/tool/mousePollingTest/i18n/tr.ts +2 -12
  110. package/src/tool/mousePollingTest/i18n/zh.ts +2 -12
  111. package/src/tool/mousePollingTest/seo.astro +3 -2
  112. package/src/tool/refreshRateDetector/bibliography.astro +14 -0
  113. package/src/tool/refreshRateDetector/bibliography.ts +20 -0
  114. package/src/tool/refreshRateDetector/component.astro +206 -0
  115. package/src/tool/refreshRateDetector/entry.ts +29 -0
  116. package/src/tool/refreshRateDetector/i18n/de.ts +196 -0
  117. package/src/tool/refreshRateDetector/i18n/en.ts +196 -0
  118. package/src/tool/refreshRateDetector/i18n/es.ts +196 -0
  119. package/src/tool/refreshRateDetector/i18n/fr.ts +196 -0
  120. package/src/tool/refreshRateDetector/i18n/id.ts +196 -0
  121. package/src/tool/refreshRateDetector/i18n/it.ts +196 -0
  122. package/src/tool/refreshRateDetector/i18n/ja.ts +196 -0
  123. package/src/tool/refreshRateDetector/i18n/ko.ts +196 -0
  124. package/src/tool/refreshRateDetector/i18n/nl.ts +196 -0
  125. package/src/tool/refreshRateDetector/i18n/pl.ts +196 -0
  126. package/src/tool/refreshRateDetector/i18n/pt.ts +196 -0
  127. package/src/tool/refreshRateDetector/i18n/ru.ts +196 -0
  128. package/src/tool/refreshRateDetector/i18n/sv.ts +196 -0
  129. package/src/tool/refreshRateDetector/i18n/tr.ts +196 -0
  130. package/src/tool/refreshRateDetector/i18n/zh.ts +196 -0
  131. package/src/tool/refreshRateDetector/index.ts +11 -0
  132. package/src/tool/refreshRateDetector/monitor-refresh-rate-detector.css +342 -0
  133. package/src/tool/refreshRateDetector/seo.astro +15 -0
  134. package/src/tool/refreshRateDetector/ui.ts +24 -0
  135. package/src/tool/toneGenerator/bibliography.ts +13 -0
  136. package/src/tool/toneGenerator/i18n/de.ts +2 -12
  137. package/src/tool/toneGenerator/i18n/en.ts +2 -12
  138. package/src/tool/toneGenerator/i18n/es.ts +2 -12
  139. package/src/tool/toneGenerator/i18n/fr.ts +2 -12
  140. package/src/tool/toneGenerator/i18n/id.ts +2 -12
  141. package/src/tool/toneGenerator/i18n/it.ts +2 -12
  142. package/src/tool/toneGenerator/i18n/ja.ts +2 -12
  143. package/src/tool/toneGenerator/i18n/ko.ts +2 -12
  144. package/src/tool/toneGenerator/i18n/nl.ts +2 -12
  145. package/src/tool/toneGenerator/i18n/pl.ts +2 -12
  146. package/src/tool/toneGenerator/i18n/pt.ts +2 -12
  147. package/src/tool/toneGenerator/i18n/ru.ts +2 -12
  148. package/src/tool/toneGenerator/i18n/sv.ts +2 -12
  149. package/src/tool/toneGenerator/i18n/tr.ts +2 -12
  150. package/src/tool/toneGenerator/i18n/zh.ts +2 -12
  151. package/src/tool/toneGenerator/seo.astro +3 -2
  152. package/src/tools.ts +2 -1
@@ -0,0 +1,196 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { RefreshRateDetectorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'detector-frecuencia-actualizacion-monitor';
7
+ const title = 'Detector de Frecuencia de Actualización del Monitor';
8
+ const description = 'Detecta instantáneamente la frecuencia de actualización de tu monitor con precisión usando requestAnimationFrame. Prueba la estabilidad de los fotogramas y compárala con los estándares de la industria.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '¿Qué es la frecuencia de actualización (Hz)?',
13
+ answer: 'La frecuencia de actualización es la cantidad de veces por segundo que tu monitor actualiza la imagen. Un monitor de 60Hz se actualiza 60 veces por segundo, mientras que uno de 144Hz lo hace 144 veces. Las frecuencias más altas dan como resultado un movimiento más suave.',
14
+ },
15
+ {
16
+ question: '¿Qué tan preciso es este detector?',
17
+ answer: 'Esta herramienta utiliza requestAnimationFrame, que se sincroniza con el ciclo de actualización de tu monitor. La precisión depende de la carga del sistema. El modo estable mide durante períodos más largos para una mayor precisión.',
18
+ },
19
+ {
20
+ question: '¿Cuál es la diferencia entre el modo Estable y el Rápido?',
21
+ answer: 'El modo Rápido mide durante un tiempo corto (~3 segundos) para obtener una respuesta rápida. El modo Estable tarda más (~10 segundos) para filtrar el ruido del sistema y proporcionar resultados más fiables.',
22
+ },
23
+ {
24
+ question: '¿Por qué mi Hz detectado es diferente de lo que dice mi monitor?',
25
+ answer: 'Esto puede suceder si: la conexión de tu cable está floja, los controladores están desactualizados o el escalado de tu sistema operativo interfiere. Intenta desconectar y volver a conectar el cable de la pantalla, o actualizar los controladores de la GPU.',
26
+ },
27
+ {
28
+ question: '¿Qué frecuencias de actualización admiten los monitores modernos?',
29
+ answer: 'Los estándares comunes son 60Hz (básico), 75Hz, 120Hz, 144Hz (gaming), 240Hz (gaming competitivo) y 360Hz (eSports profesionales).',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Carga la herramienta',
36
+ text: 'Simplemente abre esta página. El detector comienza a medir inmediatamente.',
37
+ },
38
+ {
39
+ name: 'Espera a la estabilización',
40
+ text: 'Elige el modo Estable o Rápido. Deja que la medición se complete sin mover la ventana.',
41
+ },
42
+ {
43
+ name: 'Revisa el velocímetro',
44
+ text: 'La frecuencia de actualización de tu monitor aparece como un dial suave, con estadísticas de referencia (mín/máx/prom).',
45
+ },
46
+ {
47
+ name: 'Compara con los estándares',
48
+ text: 'La herramienta muestra con qué estándar coincide tu monitor (60, 75, 120, 144, 240, 360Hz).',
49
+ },
50
+ {
51
+ name: 'Opcional: prueba de salto de fotogramas',
52
+ text: 'Observa el cuadrado animado cruzando la pantalla para confirmar visualmente la fluidez.',
53
+ },
54
+ ];
55
+
56
+ const faqSchema: WithContext<FAQPage> = {
57
+ '@context': 'https://schema.org',
58
+ '@type': 'FAQPage',
59
+ mainEntity: faqData.map((item) => ({
60
+ '@type': 'Question',
61
+ name: item.question,
62
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
63
+ })),
64
+ };
65
+
66
+ const howToSchema: WithContext<HowTo> = {
67
+ '@context': 'https://schema.org',
68
+ '@type': 'HowTo',
69
+ name: title,
70
+ description,
71
+ step: howToData.map((step, i) => ({
72
+ '@type': 'HowToStep',
73
+ position: i + 1,
74
+ name: step.name,
75
+ text: step.text,
76
+ })),
77
+ };
78
+
79
+ const appSchema: WithContext<SoftwareApplication> = {
80
+ '@context': 'https://schema.org',
81
+ '@type': 'SoftwareApplication',
82
+ name: title,
83
+ description,
84
+ applicationCategory: 'UtilityApplication',
85
+ operatingSystem: 'All',
86
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
87
+ inLanguage: 'es',
88
+ };
89
+
90
+ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ faq: faqData,
95
+ bibliography,
96
+ howTo: howToData,
97
+ schemas: [faqSchema, howToSchema, appSchema],
98
+ seo: [
99
+ {
100
+ type: 'title',
101
+ text: 'Detector de Frecuencia de Actualización del Monitor: Prueba los Hz de tu Pantalla Online',
102
+ level: 2,
103
+ },
104
+ {
105
+ type: 'paragraph',
106
+ html: 'Detecta instantáneamente la frecuencia de actualización de tu monitor (60Hz, 144Hz, 240Hz, etc.) con precisión. Prueba la estabilidad de los fotogramas y verifica que tu pantalla esté funcionando según sus especificaciones nominales.',
107
+ },
108
+ {
109
+ type: 'title',
110
+ text: 'Por qué es Importante la Frecuencia de Actualización del Monitor',
111
+ level: 3,
112
+ },
113
+ {
114
+ type: 'paragraph',
115
+ html: 'La frecuencia de actualización determina qué tan suave aparece el movimiento en tu pantalla. Los jugadores se benefician de monitores de 144Hz+, mientras que los usuarios generales encuentran adecuados los 60Hz. Esta herramienta ayuda a confirmar que tu monitor realmente ofrece su frecuencia de actualización anunciada.',
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'Cómo Detectar tu Frecuencia de Actualización',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'list',
124
+ items: [
125
+ 'Carga este detector: la medición comienza de inmediato',
126
+ 'Elige entre el modo de medición Rápido (3s) o Estable (10s)',
127
+ 'Lee los Hz de tu monitor en el dial del velocímetro',
128
+ 'Compara con los estándares de la industria (60, 75, 120, 144, 240, 360Hz)',
129
+ ],
130
+ },
131
+ {
132
+ type: 'title',
133
+ text: 'Estándares Comunes de Frecuencia de Actualización',
134
+ level: 3,
135
+ },
136
+ {
137
+ type: 'table',
138
+ headers: ['Estándar', 'Caso de Uso', 'Usuario Típico'],
139
+ rows: [
140
+ ['60Hz', 'Informática General', 'Oficina, Navegación Web'],
141
+ ['75Hz', 'Gaming Ligero', 'Jugadores Casuales'],
142
+ ['120Hz', 'Multimedia', 'Consolas, Streaming'],
143
+ ['144Hz', 'Gaming Competitivo', 'FPS, Juegos de Ritmo Rápido'],
144
+ ['240Hz+', 'eSports Profesionales', 'Jugadores Pro, Streamers'],
145
+ ],
146
+ },
147
+ {
148
+ type: 'title',
149
+ text: 'Solución de Problemas: La Pantalla Muestra Menos Hz de los Esperados',
150
+ level: 3,
151
+ },
152
+ {
153
+ type: 'list',
154
+ items: [
155
+ 'Comprueba las conexiones del cable HDMI/DisplayPort; los cables sueltos reducen el ancho de banda',
156
+ 'Actualiza los controladores de tu GPU (NVIDIA, AMD, Intel)',
157
+ 'Comprueba la configuración de pantalla del SO para asegurarte de que la alta frecuencia de actualización esté activada',
158
+ 'Prueba con diferentes cables o puertos en tu monitor',
159
+ 'Reinicia tu ordenador y vuelve a probar',
160
+ ],
161
+ },
162
+ {
163
+ type: 'title',
164
+ text: 'La Tecnología Detrás de este Detector',
165
+ level: 3,
166
+ },
167
+ {
168
+ type: 'paragraph',
169
+ html: 'Esta herramienta utiliza la API requestAnimationFrame del navegador, que se sincroniza directamente con el ciclo de actualización de tu monitor. Al medir el tiempo entre los fotogramas de animación, calculamos tu frecuencia de actualización exacta con alta precisión, sin necesidad de hardware especial.',
170
+ },
171
+ ],
172
+ ui: {
173
+ badge: 'Prueba de Pantalla',
174
+ title: 'Detector de Frecuencia de Actualización',
175
+ description: 'Detecta la frecuencia de actualización de tu pantalla al instante',
176
+ modeStable: 'Estable (10s, preciso)',
177
+ modeFast: 'Rápido (3s, veloz)',
178
+ measurementStatus: 'Midiendo...',
179
+ currentHz: 'Actual',
180
+ averageHz: 'Promedio',
181
+ maxHz: 'Máximo',
182
+ minHz: 'Mínimo',
183
+ standardDetected: 'Estándar Detectado',
184
+ frameSkippingTest: 'Prueba de Salto de Fotogramas',
185
+ startMeasurement: 'Iniciar Medición',
186
+ resetMeasurement: 'Restablecer',
187
+ copyResult: 'Copiar Resultado',
188
+ copiedFeedback: '¡Copiado al portapapeles!',
189
+ optimalConfiguration: '[OK] Configuración Óptima',
190
+ suboptimalConfiguration: '[AVISO] Por debajo de lo Óptimo',
191
+ unstableRefreshRate: '[AVISO] Frecuencia Inestable',
192
+ measurementNotStarted: 'Listo para medir',
193
+ switchMonitorHint: 'Arrastra la ventana a otro monitor para probarlo',
194
+ incompatibleBrowserMsg: 'Tu navegador no admite requestAnimationFrame',
195
+ },
196
+ };
@@ -0,0 +1,196 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { RefreshRateDetectorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'detecteur-taux-rafraichissement-moniteur';
7
+ const title = 'Détecteur de Taux de Rafraîchissement du Moniteur';
8
+ const description = 'Détectez instantanément le taux de rafraîchissement de votre moniteur avec précision grâce à requestAnimationFrame. Testez la stabilité des images et comparez-la aux normes de l\'industrie.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Qu\'est-ce que le taux de rafraîchissement (Hz) ?',
13
+ answer: 'Le taux de rafraîchissement correspond au nombre de fois par seconde où votre moniteur actualise l\'image. Un moniteur 60Hz se rafraîchit 60 fois par seconde, tandis qu\'un 144Hz se rafraîchit 144 fois. Des taux plus élevés permettent un mouvement plus fluide.',
14
+ },
15
+ {
16
+ question: 'Quelle est la précision de ce détecteur ?',
17
+ answer: 'Cet outil utilise requestAnimationFrame, qui se synchronise avec le cycle de rafraîchissement de votre moniteur. La précision dépend de la charge du système. Le mode stable mesure sur des périodes plus longues pour une plus grande précision.',
18
+ },
19
+ {
20
+ question: 'Quelle est la différence entre le mode Stable et Rapide ?',
21
+ answer: 'Le mode Rapide mesure pendant une courte durée (~3 secondes) pour un retour rapide. Le mode Stable prend plus de temps (~10 secondes) pour filtrer le bruit du système et fournir des résultats plus fiables.',
22
+ },
23
+ {
24
+ question: 'Pourquoi mon Hz détecté est-il différent de ce qu\'indique mon moniteur ?',
25
+ answer: 'Cela peut arriver si : votre connexion par câble est lâche, vos pilotes sont obsolètes ou la mise à l\'échelle de votre système d\'exploitation interfère. Essayez de débrancher et de rebrancher votre câble d\'affichage, ou de mettre à jour les pilotes de votre GPU.',
26
+ },
27
+ {
28
+ question: 'Quels taux de rafraîchissement les moniteurs modernes prennent-ils en charge ?',
29
+ answer: 'Les normes courantes sont 60Hz (basique), 75Hz, 120Hz, 144Hz (gaming), 240Hz (gaming compétitif) et 360Hz (eSports professionnels).',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Charger l\'outil',
36
+ text: 'Ouvrez simplement cette page. Le détecteur commence la mesure immédiatement.',
37
+ },
38
+ {
39
+ name: 'Attendre la stabilisation',
40
+ text: 'Choisissez le mode Stable ou Rapide. Laissez la mesure se terminer sans déplacer la fenêtre.',
41
+ },
42
+ {
43
+ name: 'Vérifier le tachymètre',
44
+ text: 'Le taux de rafraîchissement de votre moniteur apparaît sous la forme d\'un cadran fluide, avec des statistiques de référence (min/max/moy).',
45
+ },
46
+ {
47
+ name: 'Comparer avec les normes',
48
+ text: 'L\'outil affiche la norme correspondant à votre moniteur (60, 75, 120, 144, 240, 360Hz).',
49
+ },
50
+ {
51
+ name: 'Optionnel : test de saut d\'images',
52
+ text: 'Observez le carré animé traverser l\'écran pour confirmer visuellement la fluidité.',
53
+ },
54
+ ];
55
+
56
+ const faqSchema: WithContext<FAQPage> = {
57
+ '@context': 'https://schema.org',
58
+ '@type': 'FAQPage',
59
+ mainEntity: faqData.map((item) => ({
60
+ '@type': 'Question',
61
+ name: item.question,
62
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
63
+ })),
64
+ };
65
+
66
+ const howToSchema: WithContext<HowTo> = {
67
+ '@context': 'https://schema.org',
68
+ '@type': 'HowTo',
69
+ name: title,
70
+ description,
71
+ step: howToData.map((step, i) => ({
72
+ '@type': 'HowToStep',
73
+ position: i + 1,
74
+ name: step.name,
75
+ text: step.text,
76
+ })),
77
+ };
78
+
79
+ const appSchema: WithContext<SoftwareApplication> = {
80
+ '@context': 'https://schema.org',
81
+ '@type': 'SoftwareApplication',
82
+ name: title,
83
+ description,
84
+ applicationCategory: 'UtilityApplication',
85
+ operatingSystem: 'All',
86
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
87
+ inLanguage: 'fr',
88
+ };
89
+
90
+ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ faq: faqData,
95
+ bibliography,
96
+ howTo: howToData,
97
+ schemas: [faqSchema, howToSchema, appSchema],
98
+ seo: [
99
+ {
100
+ type: 'title',
101
+ text: 'Détecteur de Taux de Rafraîchissement du Moniteur : Testez les Hz de votre Écran en Ligne',
102
+ level: 2,
103
+ },
104
+ {
105
+ type: 'paragraph',
106
+ html: 'Détectez instantanément le taux de rafraîchissement de votre moniteur (60Hz, 144Hz, 240Hz, etc.) avec précision. Testez la stabilité des images et vérifiez que votre écran fonctionne selon ses spécifications nominales.',
107
+ },
108
+ {
109
+ type: 'title',
110
+ text: 'Pourquoi le Taux de Rafraîchissement du Moniteur est-il Important ?',
111
+ level: 3,
112
+ },
113
+ {
114
+ type: 'paragraph',
115
+ html: 'Le taux de rafraîchissement détermine la fluidité du mouvement sur votre écran. Les joueurs bénéficient de moniteurs de 144Hz+, tandis que les utilisateurs généraux trouvent les 60Hz adéquats. Cet outil aide à confirmer que votre moniteur offre réellement son taux de rafraîchissement annoncé.',
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'Comment Détecter votre Taux de Rafraîchissement',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'list',
124
+ items: [
125
+ 'Chargez ce détecteur — la mesure commence immédiatement',
126
+ 'Choisissez entre le mode de mesure Rapide (3s) ou Stable (10s)',
127
+ 'Lisez les Hz de votre moniteur sur le cadran du tachymètre',
128
+ 'Comparez aux normes de l\'industrie (60, 75, 120, 144, 240, 360Hz)',
129
+ ],
130
+ },
131
+ {
132
+ type: 'title',
133
+ text: 'Normes de Taux de Rafraîchissement Courantes',
134
+ level: 3,
135
+ },
136
+ {
137
+ type: 'table',
138
+ headers: ['Norme', 'Cas d\'Utilisation', 'Utilisateur Typique'],
139
+ rows: [
140
+ ['60Hz', 'Informatique Générale', 'Bureautique, Navigation Web'],
141
+ ['75Hz', 'Gaming Léger', 'Joueurs Occasionnels'],
142
+ ['120Hz', 'Multimédia', 'Consoles, Streaming'],
143
+ ['144Hz', 'Gaming Compétitif', 'FPS, Jeux à Rythme Rapide'],
144
+ ['240Hz+', 'eSports Professionnels', 'Joueurs Pro, Streamers'],
145
+ ],
146
+ },
147
+ {
148
+ type: 'title',
149
+ text: 'Dépannage : L\'Écran Affiche moins de Hz que Prévu',
150
+ level: 3,
151
+ },
152
+ {
153
+ type: 'list',
154
+ items: [
155
+ 'Vérifiez les connexions du câble HDMI/DisplayPort — des câbles lâches réduisent la bande passante',
156
+ 'Mettez à jour vos pilotes GPU (NVIDIA, AMD, Intel)',
157
+ 'Vérifiez les paramètres d\'affichage de l\'OS pour vous assurer que le taux de rafraîchissement élevé est activé',
158
+ 'Essayez différents câbles ou ports sur votre moniteur',
159
+ 'Redémarrez votre ordinateur et testez de nouveau',
160
+ ],
161
+ },
162
+ {
163
+ type: 'title',
164
+ text: 'La Technologie derrière ce Détecteur',
165
+ level: 3,
166
+ },
167
+ {
168
+ type: 'paragraph',
169
+ html: 'Cet outil utilise l\'API requestAnimationFrame du navigateur, qui se synchronise directement avec le cycle de rafraîchissement de votre moniteur. En mesurant le temps entre les images d\'animation, nous calculons votre taux de rafraîchissement exact avec une grande précision — aucun matériel spécial n\'est requis.',
170
+ },
171
+ ],
172
+ ui: {
173
+ badge: 'Test d\'Écran',
174
+ title: 'Détecteur de Taux de Rafraîchissement',
175
+ description: 'Détectez le taux de rafraîchissement de votre écran instantanément',
176
+ modeStable: 'Stable (10s, précis)',
177
+ modeFast: 'Rapide (3s, rapide)',
178
+ measurementStatus: 'Mesure en cours...',
179
+ currentHz: 'Actuel',
180
+ averageHz: 'Moyenne',
181
+ maxHz: 'Maximum',
182
+ minHz: 'Minimum',
183
+ standardDetected: 'Norme Détectée',
184
+ frameSkippingTest: 'Test de Saut d\'Images',
185
+ startMeasurement: 'Démarrer la Mesure',
186
+ resetMeasurement: 'Réinitialiser',
187
+ copyResult: 'Copier le Résultat',
188
+ copiedFeedback: 'Copié dans le presse-papiers !',
189
+ optimalConfiguration: '[OK] Configuration Optimale',
190
+ suboptimalConfiguration: '[AVERTISSEMENT] Sous l\'Optimale',
191
+ unstableRefreshRate: '[AVERTISSEMENT] Taux de Rafraîchissement Instable',
192
+ measurementNotStarted: 'Prêt à mesurer',
193
+ switchMonitorHint: 'Faites glisser la fenêtre vers un autre moniteur pour le tester',
194
+ incompatibleBrowserMsg: 'Votre navigateur ne prend pas en charge requestAnimationFrame',
195
+ },
196
+ };
@@ -0,0 +1,196 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { RefreshRateDetectorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'detektor-refresh-rate-monitor';
7
+ const title = 'Monitor Refresh Rate Detector';
8
+ const description = 'Deteksi refresh rate monitor Anda secara instan dengan presisi menggunakan requestAnimationFrame. Uji stabilitas frame dan bandingkan dengan standar industri.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Apa itu refresh rate (Hz)?',
13
+ answer: 'Refresh rate adalah berapa kali per detik monitor Anda memperbarui gambar. Monitor 60Hz memperbarui 60 kali per detik, sedangkan 144Hz memperbarui 144 kali. Rate yang lebih tinggi menghasilkan gerakan yang lebih mulus.',
14
+ },
15
+ {
16
+ question: 'Seberapa akurat detektor ini?',
17
+ answer: 'Alat ini menggunakan requestAnimationFrame, yang sinkron dengan siklus refresh monitor Anda. Akurasi bergantung pada beban sistem. Mode stabil mengukur untuk periode yang lebih lama demi presisi yang lebih besar.',
18
+ },
19
+ {
20
+ question: 'Apa perbedaan antara mode Stabil dan Cepat?',
21
+ answer: 'Mode Cepat mengukur untuk waktu singkat (~3 detik) untuk umpan balik cepat. Mode Stabil memakan waktu lebih lama (~10 detik) untuk menyaring gangguan sistem dan memberikan hasil yang lebih andal.',
22
+ },
23
+ {
24
+ question: 'Mengapa Hz yang terdeteksi berbeda dengan spesifikasi monitor saya?',
25
+ answer: 'Ini bisa terjadi jika: koneksi kabel longgar, driver sudah usang, atau penskalaan OS mengganggu. Coba cabut dan pasang kembali kabel layar Anda, atau perbarui driver GPU.',
26
+ },
27
+ {
28
+ question: 'Berapa refresh rate yang didukung monitor modern?',
29
+ answer: 'Standar umum adalah 60Hz (dasar), 75Hz, 120Hz, 144Hz (gaming), 240Hz (gaming kompetitif), dan 360Hz (e-sports profesional).',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Buka alat',
36
+ text: 'Cukup buka halaman ini. Detektor mulai mengukur segera.',
37
+ },
38
+ {
39
+ name: 'Tunggu stabilisasi',
40
+ text: 'Pilih mode Stabil atau Cepat. Biarkan pengukuran selesai tanpa menggeser jendela.',
41
+ },
42
+ {
43
+ name: 'Periksa speedometer',
44
+ text: 'Refresh rate monitor Anda muncul sebagai dial yang mulus, dengan statistik benchmark (min/maks/rata-rata).',
45
+ },
46
+ {
47
+ name: 'Bandingkan dengan standar',
48
+ text: 'Alat ini menunjukkan standar mana yang sesuai dengan monitor Anda (60, 75, 120, 144, 240, 360Hz).',
49
+ },
50
+ {
51
+ name: 'Opsional: uji frame skipping',
52
+ text: 'Lihat kotak animasi yang melintasi layar untuk mengonfirmasi fluiditas secara visual.',
53
+ },
54
+ ];
55
+
56
+ const faqSchema: WithContext<FAQPage> = {
57
+ '@context': 'https://schema.org',
58
+ '@type': 'FAQPage',
59
+ mainEntity: faqData.map((item) => ({
60
+ '@type': 'Question',
61
+ name: item.question,
62
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
63
+ })),
64
+ };
65
+
66
+ const howToSchema: WithContext<HowTo> = {
67
+ '@context': 'https://schema.org',
68
+ '@type': 'HowTo',
69
+ name: title,
70
+ description,
71
+ step: howToData.map((step, i) => ({
72
+ '@type': 'HowToStep',
73
+ position: i + 1,
74
+ name: step.name,
75
+ text: step.text,
76
+ })),
77
+ };
78
+
79
+ const appSchema: WithContext<SoftwareApplication> = {
80
+ '@context': 'https://schema.org',
81
+ '@type': 'SoftwareApplication',
82
+ name: title,
83
+ description,
84
+ applicationCategory: 'UtilityApplication',
85
+ operatingSystem: 'All',
86
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
87
+ inLanguage: 'id',
88
+ };
89
+
90
+ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ faq: faqData,
95
+ bibliography,
96
+ howTo: howToData,
97
+ schemas: [faqSchema, howToSchema, appSchema],
98
+ seo: [
99
+ {
100
+ type: 'title',
101
+ text: 'Monitor Refresh Rate Detector: Uji Hz Layar Anda Secara Online',
102
+ level: 2,
103
+ },
104
+ {
105
+ type: 'paragraph',
106
+ html: 'Deteksi refresh rate monitor Anda (60Hz, 144Hz, 240Hz, dll.) secara instan dengan presisi. Uji stabilitas frame dan verifikasi apakah layar Anda berfungsi sesuai spesifikasi teknisnya.',
107
+ },
108
+ {
109
+ type: 'title',
110
+ text: 'Mengapa Refresh Rate Monitor Itu Penting',
111
+ level: 3,
112
+ },
113
+ {
114
+ type: 'paragraph',
115
+ html: 'Refresh rate menentukan seberapa mulus gerakan muncul di layar Anda. Gamer mendapat manfaat dari monitor 144Hz+, sementara pengguna umum merasa 60Hz sudah cukup. Alat ini membantu memastikan monitor Anda benar-benar memberikan refresh rate yang diiklankan.',
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'Cara Mendeteksi Refresh Rate Anda',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'list',
124
+ items: [
125
+ 'Buka detektor ini—pengukuran dimulai segera',
126
+ 'Pilih antara mode pengukuran Cepat (3 detik) atau Stabil (10 detik)',
127
+ 'Baca Hz monitor Anda dari dial speedometer',
128
+ 'Bandingkan dengan standar industri (60, 75, 120, 144, 240, 360Hz)',
129
+ ],
130
+ },
131
+ {
132
+ type: 'title',
133
+ text: 'Standar Refresh Rate Umum',
134
+ level: 3,
135
+ },
136
+ {
137
+ type: 'table',
138
+ headers: ['Standar', 'Kegunaan', 'Pengguna Tipikal'],
139
+ rows: [
140
+ ['60Hz', 'Komputasi Umum', 'Kantor, Menjelajah Web'],
141
+ ['75Hz', 'Gaming Ringan', 'Gamer Kasual'],
142
+ ['120Hz', 'Multimedia', 'Konsol, Streaming'],
143
+ ['144Hz', 'Gaming Kompetitif', 'FPS, Game Cepat'],
144
+ ['240Hz+', 'E-sports Profesional', 'Pro Gamer, Streamer'],
145
+ ],
146
+ },
147
+ {
148
+ type: 'title',
149
+ text: 'Pemecahan Masalah: Layar Menampilkan Hz Lebih Rendah dari yang Diharapkan',
150
+ level: 3,
151
+ },
152
+ {
153
+ type: 'list',
154
+ items: [
155
+ 'Periksa koneksi kabel HDMI/DisplayPort—kabel longgar mengurangi bandwidth',
156
+ 'Perbarui driver GPU Anda (NVIDIA, AMD, Intel)',
157
+ 'Periksa pengaturan layar OS untuk memastikan refresh rate tinggi telah diaktifkan',
158
+ 'Coba kabel atau port yang berbeda pada monitor Anda',
159
+ 'Mulai ulang komputer Anda dan uji kembali',
160
+ ],
161
+ },
162
+ {
163
+ type: 'title',
164
+ text: 'Teknologi di Balik Detektor Ini',
165
+ level: 3,
166
+ },
167
+ {
168
+ type: 'paragraph',
169
+ html: 'Alat ini menggunakan API requestAnimationFrame browser, yang sinkron langsung dengan siklus refresh monitor Anda. Dengan mengukur waktu antar frame animasi, kami menghitung refresh rate Anda yang tepat dengan presisi tinggi—tanpa perlu perangkat keras khusus.',
170
+ },
171
+ ],
172
+ ui: {
173
+ badge: 'Uji Layar',
174
+ title: 'Monitor Refresh Rate Detector',
175
+ description: 'Deteksi refresh rate layar Anda secara instan',
176
+ modeStable: 'Stabil (10 detik, presisi)',
177
+ modeFast: 'Cepat (3 detik, kilat)',
178
+ measurementStatus: 'Mengukur...',
179
+ currentHz: 'Saat Ini',
180
+ averageHz: 'Rata-rata',
181
+ maxHz: 'Maksimum',
182
+ minHz: 'Minimum',
183
+ standardDetected: 'Standar Terdeteksi',
184
+ frameSkippingTest: 'Uji Frame Skipping',
185
+ startMeasurement: 'Mulai Pengukuran',
186
+ resetMeasurement: 'Atur Ulang',
187
+ copyResult: 'Salin Hasil',
188
+ copiedFeedback: 'Berhasil disalin ke papan klip!',
189
+ optimalConfiguration: '[OK] Konfigurasi Optimal',
190
+ suboptimalConfiguration: '[PERINGATAN] Di Bawah Optimal',
191
+ unstableRefreshRate: '[PERINGATAN] Refresh Rate Tidak Stabil',
192
+ measurementNotStarted: 'Siap untuk mengukur',
193
+ switchMonitorHint: 'Seret jendela ke monitor lain untuk mengujinya',
194
+ incompatibleBrowserMsg: 'Browser Anda tidak mendukung requestAnimationFrame',
195
+ },
196
+ };