@jjlmoya/utils-tools 1.11.0 → 1.13.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 (234) hide show
  1. package/package.json +1 -1
  2. package/src/pages/[locale]/[slug].astro +30 -13
  3. package/src/tests/locale_completeness.test.ts +3 -20
  4. package/src/tests/shared-test-helpers.ts +56 -0
  5. package/src/tests/tool_exports.test.ts +34 -0
  6. package/src/tool/date-diff-calculator/bibliography.astro +2 -10
  7. package/src/tool/date-diff-calculator/bibliography.ts +7 -0
  8. package/src/tool/date-diff-calculator/date-difference-calculator.css +1 -1
  9. package/src/tool/date-diff-calculator/i18n/de.ts +4 -7
  10. package/src/tool/date-diff-calculator/i18n/en.ts +4 -7
  11. package/src/tool/date-diff-calculator/i18n/es.ts +4 -7
  12. package/src/tool/date-diff-calculator/i18n/fr.ts +4 -7
  13. package/src/tool/date-diff-calculator/i18n/id.ts +4 -7
  14. package/src/tool/date-diff-calculator/i18n/it.ts +4 -7
  15. package/src/tool/date-diff-calculator/i18n/ja.ts +4 -7
  16. package/src/tool/date-diff-calculator/i18n/ko.ts +4 -7
  17. package/src/tool/date-diff-calculator/i18n/nl.ts +4 -7
  18. package/src/tool/date-diff-calculator/i18n/pl.ts +4 -7
  19. package/src/tool/date-diff-calculator/i18n/pt.ts +4 -7
  20. package/src/tool/date-diff-calculator/i18n/ru.ts +4 -7
  21. package/src/tool/date-diff-calculator/i18n/sv.ts +4 -7
  22. package/src/tool/date-diff-calculator/i18n/tr.ts +4 -7
  23. package/src/tool/date-diff-calculator/i18n/zh.ts +4 -7
  24. package/src/tool/date-diff-calculator/seo.astro +2 -1
  25. package/src/tool/drive-direct-link/bibliography.astro +2 -10
  26. package/src/tool/drive-direct-link/bibliography.ts +6 -0
  27. package/src/tool/drive-direct-link/google-drive-direct-download-link.css +1 -1
  28. package/src/tool/drive-direct-link/i18n/de.ts +4 -6
  29. package/src/tool/drive-direct-link/i18n/en.ts +4 -6
  30. package/src/tool/drive-direct-link/i18n/es.ts +4 -6
  31. package/src/tool/drive-direct-link/i18n/fr.ts +4 -6
  32. package/src/tool/drive-direct-link/i18n/id.ts +4 -6
  33. package/src/tool/drive-direct-link/i18n/it.ts +4 -6
  34. package/src/tool/drive-direct-link/i18n/ja.ts +4 -6
  35. package/src/tool/drive-direct-link/i18n/ko.ts +4 -6
  36. package/src/tool/drive-direct-link/i18n/nl.ts +4 -6
  37. package/src/tool/drive-direct-link/i18n/pl.ts +4 -6
  38. package/src/tool/drive-direct-link/i18n/pt.ts +4 -6
  39. package/src/tool/drive-direct-link/i18n/ru.ts +4 -6
  40. package/src/tool/drive-direct-link/i18n/sv.ts +4 -6
  41. package/src/tool/drive-direct-link/i18n/tr.ts +4 -6
  42. package/src/tool/drive-direct-link/i18n/zh.ts +4 -6
  43. package/src/tool/drive-direct-link/seo.astro +2 -1
  44. package/src/tool/email-list-cleaner/bibliography.astro +2 -10
  45. package/src/tool/email-list-cleaner/bibliography.ts +7 -0
  46. package/src/tool/email-list-cleaner/email-list-cleaner.css +1 -1
  47. package/src/tool/email-list-cleaner/i18n/de.ts +4 -7
  48. package/src/tool/email-list-cleaner/i18n/en.ts +4 -7
  49. package/src/tool/email-list-cleaner/i18n/es.ts +4 -7
  50. package/src/tool/email-list-cleaner/i18n/fr.ts +4 -7
  51. package/src/tool/email-list-cleaner/i18n/id.ts +4 -7
  52. package/src/tool/email-list-cleaner/i18n/it.ts +4 -7
  53. package/src/tool/email-list-cleaner/i18n/ja.ts +4 -7
  54. package/src/tool/email-list-cleaner/i18n/ko.ts +4 -7
  55. package/src/tool/email-list-cleaner/i18n/nl.ts +4 -7
  56. package/src/tool/email-list-cleaner/i18n/pl.ts +4 -7
  57. package/src/tool/email-list-cleaner/i18n/pt.ts +4 -7
  58. package/src/tool/email-list-cleaner/i18n/ru.ts +4 -7
  59. package/src/tool/email-list-cleaner/i18n/sv.ts +4 -7
  60. package/src/tool/email-list-cleaner/i18n/tr.ts +4 -7
  61. package/src/tool/email-list-cleaner/i18n/zh.ts +4 -7
  62. package/src/tool/email-list-cleaner/seo.astro +2 -1
  63. package/src/tool/env-badge-spain/bibliography.astro +2 -10
  64. package/src/tool/env-badge-spain/bibliography.ts +6 -0
  65. package/src/tool/env-badge-spain/environmental-badge-simulator-spain.css +17 -17
  66. package/src/tool/env-badge-spain/i18n/de.ts +4 -6
  67. package/src/tool/env-badge-spain/i18n/en.ts +4 -6
  68. package/src/tool/env-badge-spain/i18n/es.ts +4 -6
  69. package/src/tool/env-badge-spain/i18n/fr.ts +4 -6
  70. package/src/tool/env-badge-spain/i18n/id.ts +4 -6
  71. package/src/tool/env-badge-spain/i18n/it.ts +4 -6
  72. package/src/tool/env-badge-spain/i18n/ja.ts +4 -6
  73. package/src/tool/env-badge-spain/i18n/ko.ts +4 -6
  74. package/src/tool/env-badge-spain/i18n/nl.ts +4 -6
  75. package/src/tool/env-badge-spain/i18n/pl.ts +4 -6
  76. package/src/tool/env-badge-spain/i18n/pt.ts +4 -6
  77. package/src/tool/env-badge-spain/i18n/ru.ts +4 -6
  78. package/src/tool/env-badge-spain/i18n/sv.ts +4 -6
  79. package/src/tool/env-badge-spain/i18n/tr.ts +4 -6
  80. package/src/tool/env-badge-spain/i18n/zh.ts +4 -6
  81. package/src/tool/env-badge-spain/seo.astro +2 -1
  82. package/src/tool/morse-beacon/bibliography.astro +2 -10
  83. package/src/tool/morse-beacon/bibliography.ts +7 -0
  84. package/src/tool/morse-beacon/i18n/de.ts +4 -7
  85. package/src/tool/morse-beacon/i18n/en.ts +4 -7
  86. package/src/tool/morse-beacon/i18n/es.ts +4 -7
  87. package/src/tool/morse-beacon/i18n/fr.ts +4 -7
  88. package/src/tool/morse-beacon/i18n/id.ts +4 -7
  89. package/src/tool/morse-beacon/i18n/it.ts +4 -7
  90. package/src/tool/morse-beacon/i18n/ja.ts +4 -7
  91. package/src/tool/morse-beacon/i18n/ko.ts +4 -7
  92. package/src/tool/morse-beacon/i18n/nl.ts +4 -7
  93. package/src/tool/morse-beacon/i18n/pl.ts +4 -7
  94. package/src/tool/morse-beacon/i18n/pt.ts +4 -7
  95. package/src/tool/morse-beacon/i18n/ru.ts +4 -7
  96. package/src/tool/morse-beacon/i18n/sv.ts +4 -7
  97. package/src/tool/morse-beacon/i18n/tr.ts +4 -7
  98. package/src/tool/morse-beacon/i18n/zh.ts +4 -7
  99. package/src/tool/morse-beacon/morse-beacon.css +1 -1
  100. package/src/tool/morse-beacon/seo.astro +2 -1
  101. package/src/tool/password-generator/bibliography.astro +2 -10
  102. package/src/tool/password-generator/bibliography.ts +8 -0
  103. package/src/tool/password-generator/i18n/de.ts +4 -8
  104. package/src/tool/password-generator/i18n/en.ts +4 -8
  105. package/src/tool/password-generator/i18n/es.ts +4 -8
  106. package/src/tool/password-generator/i18n/fr.ts +4 -8
  107. package/src/tool/password-generator/i18n/id.ts +4 -8
  108. package/src/tool/password-generator/i18n/it.ts +4 -8
  109. package/src/tool/password-generator/i18n/ja.ts +4 -8
  110. package/src/tool/password-generator/i18n/ko.ts +4 -8
  111. package/src/tool/password-generator/i18n/nl.ts +4 -8
  112. package/src/tool/password-generator/i18n/pl.ts +4 -8
  113. package/src/tool/password-generator/i18n/pt.ts +4 -8
  114. package/src/tool/password-generator/i18n/ru.ts +4 -8
  115. package/src/tool/password-generator/i18n/sv.ts +4 -8
  116. package/src/tool/password-generator/i18n/tr.ts +4 -8
  117. package/src/tool/password-generator/i18n/zh.ts +4 -8
  118. package/src/tool/password-generator/password-generator.css +4 -4
  119. package/src/tool/password-generator/seo.astro +2 -1
  120. package/src/tool/routes/bibliography.astro +2 -10
  121. package/src/tool/routes/bibliography.ts +9 -0
  122. package/src/tool/routes/i18n/de.ts +4 -9
  123. package/src/tool/routes/i18n/en.ts +4 -9
  124. package/src/tool/routes/i18n/es.ts +4 -9
  125. package/src/tool/routes/i18n/fr.ts +4 -9
  126. package/src/tool/routes/i18n/id.ts +4 -9
  127. package/src/tool/routes/i18n/it.ts +4 -9
  128. package/src/tool/routes/i18n/ja.ts +4 -9
  129. package/src/tool/routes/i18n/ko.ts +4 -9
  130. package/src/tool/routes/i18n/nl.ts +4 -9
  131. package/src/tool/routes/i18n/pl.ts +4 -9
  132. package/src/tool/routes/i18n/pt.ts +4 -9
  133. package/src/tool/routes/i18n/ru.ts +4 -9
  134. package/src/tool/routes/i18n/sv.ts +4 -9
  135. package/src/tool/routes/i18n/tr.ts +4 -9
  136. package/src/tool/routes/i18n/zh.ts +4 -9
  137. package/src/tool/routes/optimal-routes.css +2 -2
  138. package/src/tool/routes/seo.astro +2 -1
  139. package/src/tool/rule-of-three/bibliography.astro +2 -10
  140. package/src/tool/rule-of-three/bibliography.ts +6 -0
  141. package/src/tool/rule-of-three/i18n/de.ts +4 -6
  142. package/src/tool/rule-of-three/i18n/en.ts +4 -6
  143. package/src/tool/rule-of-three/i18n/es.ts +4 -6
  144. package/src/tool/rule-of-three/i18n/fr.ts +4 -6
  145. package/src/tool/rule-of-three/i18n/id.ts +4 -6
  146. package/src/tool/rule-of-three/i18n/it.ts +4 -6
  147. package/src/tool/rule-of-three/i18n/ja.ts +4 -6
  148. package/src/tool/rule-of-three/i18n/ko.ts +4 -6
  149. package/src/tool/rule-of-three/i18n/nl.ts +4 -6
  150. package/src/tool/rule-of-three/i18n/pl.ts +4 -6
  151. package/src/tool/rule-of-three/i18n/pt.ts +4 -6
  152. package/src/tool/rule-of-three/i18n/ru.ts +4 -6
  153. package/src/tool/rule-of-three/i18n/sv.ts +4 -6
  154. package/src/tool/rule-of-three/i18n/tr.ts +4 -6
  155. package/src/tool/rule-of-three/i18n/zh.ts +4 -6
  156. package/src/tool/rule-of-three/rule-of-three.css +2 -2
  157. package/src/tool/rule-of-three/seo.astro +2 -1
  158. package/src/tool/seo-content-optimizer/bibliography.astro +2 -10
  159. package/src/tool/seo-content-optimizer/bibliography.ts +6 -0
  160. package/src/tool/seo-content-optimizer/i18n/de.ts +4 -6
  161. package/src/tool/seo-content-optimizer/i18n/en.ts +4 -6
  162. package/src/tool/seo-content-optimizer/i18n/es.ts +4 -6
  163. package/src/tool/seo-content-optimizer/i18n/fr.ts +4 -6
  164. package/src/tool/seo-content-optimizer/i18n/id.ts +4 -6
  165. package/src/tool/seo-content-optimizer/i18n/it.ts +4 -6
  166. package/src/tool/seo-content-optimizer/i18n/ja.ts +4 -6
  167. package/src/tool/seo-content-optimizer/i18n/ko.ts +4 -6
  168. package/src/tool/seo-content-optimizer/i18n/nl.ts +4 -6
  169. package/src/tool/seo-content-optimizer/i18n/pl.ts +4 -6
  170. package/src/tool/seo-content-optimizer/i18n/pt.ts +4 -6
  171. package/src/tool/seo-content-optimizer/i18n/ru.ts +4 -6
  172. package/src/tool/seo-content-optimizer/i18n/sv.ts +4 -6
  173. package/src/tool/seo-content-optimizer/i18n/tr.ts +4 -6
  174. package/src/tool/seo-content-optimizer/i18n/zh.ts +4 -6
  175. package/src/tool/seo-content-optimizer/seo-content-optimizer.css +10 -10
  176. package/src/tool/seo-content-optimizer/seo.astro +2 -1
  177. package/src/tool/speed-reader/bibliography.astro +2 -10
  178. package/src/tool/speed-reader/bibliography.ts +10 -0
  179. package/src/tool/speed-reader/i18n/de.ts +4 -10
  180. package/src/tool/speed-reader/i18n/en.ts +4 -10
  181. package/src/tool/speed-reader/i18n/es.ts +4 -10
  182. package/src/tool/speed-reader/i18n/fr.ts +4 -10
  183. package/src/tool/speed-reader/i18n/id.ts +4 -10
  184. package/src/tool/speed-reader/i18n/it.ts +4 -10
  185. package/src/tool/speed-reader/i18n/ja.ts +4 -10
  186. package/src/tool/speed-reader/i18n/ko.ts +4 -10
  187. package/src/tool/speed-reader/i18n/nl.ts +4 -10
  188. package/src/tool/speed-reader/i18n/pl.ts +4 -10
  189. package/src/tool/speed-reader/i18n/pt.ts +4 -10
  190. package/src/tool/speed-reader/i18n/ru.ts +4 -10
  191. package/src/tool/speed-reader/i18n/sv.ts +4 -10
  192. package/src/tool/speed-reader/i18n/tr.ts +4 -10
  193. package/src/tool/speed-reader/i18n/zh.ts +4 -10
  194. package/src/tool/speed-reader/seo.astro +2 -1
  195. package/src/tool/speed-reader/speed-reader.css +5 -5
  196. package/src/tool/text-pixel-calculator/bibliography.astro +2 -10
  197. package/src/tool/text-pixel-calculator/bibliography.ts +6 -0
  198. package/src/tool/text-pixel-calculator/i18n/de.ts +4 -6
  199. package/src/tool/text-pixel-calculator/i18n/en.ts +4 -6
  200. package/src/tool/text-pixel-calculator/i18n/es.ts +4 -6
  201. package/src/tool/text-pixel-calculator/i18n/fr.ts +4 -6
  202. package/src/tool/text-pixel-calculator/i18n/id.ts +4 -6
  203. package/src/tool/text-pixel-calculator/i18n/it.ts +4 -6
  204. package/src/tool/text-pixel-calculator/i18n/ja.ts +4 -6
  205. package/src/tool/text-pixel-calculator/i18n/ko.ts +4 -6
  206. package/src/tool/text-pixel-calculator/i18n/nl.ts +4 -6
  207. package/src/tool/text-pixel-calculator/i18n/pl.ts +4 -6
  208. package/src/tool/text-pixel-calculator/i18n/pt.ts +4 -6
  209. package/src/tool/text-pixel-calculator/i18n/ru.ts +4 -6
  210. package/src/tool/text-pixel-calculator/i18n/sv.ts +4 -6
  211. package/src/tool/text-pixel-calculator/i18n/tr.ts +4 -6
  212. package/src/tool/text-pixel-calculator/i18n/zh.ts +4 -6
  213. package/src/tool/text-pixel-calculator/seo.astro +2 -1
  214. package/src/tool/text-pixel-calculator/text-pixel-width-calculator.css +1 -1
  215. package/src/tool/whatsapp-link/bibliography.astro +2 -10
  216. package/src/tool/whatsapp-link/bibliography.ts +6 -0
  217. package/src/tool/whatsapp-link/i18n/de.ts +4 -6
  218. package/src/tool/whatsapp-link/i18n/en.ts +4 -6
  219. package/src/tool/whatsapp-link/i18n/es.ts +4 -6
  220. package/src/tool/whatsapp-link/i18n/fr.ts +4 -6
  221. package/src/tool/whatsapp-link/i18n/id.ts +4 -6
  222. package/src/tool/whatsapp-link/i18n/it.ts +4 -6
  223. package/src/tool/whatsapp-link/i18n/ja.ts +4 -6
  224. package/src/tool/whatsapp-link/i18n/ko.ts +4 -6
  225. package/src/tool/whatsapp-link/i18n/nl.ts +4 -6
  226. package/src/tool/whatsapp-link/i18n/pl.ts +4 -6
  227. package/src/tool/whatsapp-link/i18n/pt.ts +4 -6
  228. package/src/tool/whatsapp-link/i18n/ru.ts +4 -6
  229. package/src/tool/whatsapp-link/i18n/sv.ts +4 -6
  230. package/src/tool/whatsapp-link/i18n/tr.ts +4 -6
  231. package/src/tool/whatsapp-link/i18n/zh.ts +4 -6
  232. package/src/tool/whatsapp-link/seo.astro +2 -1
  233. package/src/tool/whatsapp-link/whatsapp-link-generator.css +2 -2
  234. package/src/types.ts +0 -2
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SeoContentOptimizerUI } from '../ui';
@@ -89,14 +90,11 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
89
90
  title: 'Optimizador de Contenido SEO',
90
91
  description: 'Analiza la densidad de palabras clave, legibilidad y estructura técnica HTML de tus textos en tiempo real. Herramienta SEO privada y gratuita.',
91
92
  ui,
92
- faqTitle: 'Preguntas Frecuentes',
93
+
93
94
  faq: faqData,
94
95
  howTo: howToData,
95
- bibliographyTitle: 'Referencias',
96
- bibliography: [
97
- { name: 'Guía de inicio de SEO de Google', url: 'https://developers.google.com/search/docs/fundamentals/seo-starter-guide' },
98
- { name: 'Criterios de legibilidad Yoast SEO', url: 'https://yoast.com/what-is-readability/' },
99
- ],
96
+
97
+ bibliography,
100
98
  schemas: [faqSchema, howToSchema, appSchema],
101
99
  seo: [
102
100
  { type: 'title', level: 2, text: 'Optimizador de Contenido SEO: Keywords, Legibilidad y Estructura' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SeoContentOptimizerUI } from '../ui';
@@ -89,14 +90,11 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
89
90
  title: 'Optimiseur de Contenu SEO',
90
91
  description: "Analysez la densité des mots-clés, la lisibilité et la structure HTML technique de vos textes en temps réel. Outil SEO gratuit et privé.",
91
92
  ui,
92
- faqTitle: 'Questions Fréquentes',
93
+
93
94
  faq: faqData,
94
95
  howTo: howToData,
95
- bibliographyTitle: 'Références',
96
- bibliography: [
97
- { name: 'Guide de démarrage SEO de Google', url: 'https://developers.google.com/search/docs/fundamentals/seo-starter-guide' },
98
- { name: 'Critères de lisibilité Yoast SEO', url: 'https://yoast.com/what-is-readability/' },
99
- ],
96
+
97
+ bibliography,
100
98
  schemas: [faqSchema, howToSchema, appSchema],
101
99
  seo: [
102
100
  { type: 'title', level: 2, text: 'Optimiseur de Contenu SEO : Mots-Clés, Lisibilité et Structure' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SeoContentOptimizerUI } from '../ui';
@@ -89,14 +90,11 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
89
90
  title: 'Pengoptimal Konten SEO',
90
91
  description: 'Analisis kepadatan kata kunci, keterbacaan, dan struktur HTML teknis teks Anda secara real-time. Alat SEO gratis dan pribadi.',
91
92
  ui,
92
- faqTitle: 'Pertanyaan yang Sering Diajukan',
93
+
93
94
  faq: faqData,
94
95
  howTo: howToData,
95
- bibliographyTitle: 'Referensi',
96
- bibliography: [
97
- { name: "Panduan Memulai SEO dari Google", url: 'https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=id' },
98
- { name: 'Kriteria keterbacaan Yoast SEO', url: 'https://yoast.com/what-is-readability/' },
99
- ],
96
+
97
+ bibliography,
100
98
  schemas: [faqSchema, howToSchema, appSchema],
101
99
  seo: [
102
100
  { type: 'title', level: 2, text: 'Pengoptimal Konten SEO: Kata Kunci, Keterbacaan, dan Struktur' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SeoContentOptimizerUI } from '../ui';
@@ -89,14 +90,11 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
89
90
  title: 'Ottimizzatore di Contenuti SEO',
90
91
  description: 'Analizza la densità delle parole chiave, la leggibilità e la struttura HTML tecnica dei tuoi testi in tempo reale. Strumento SEO gratuito e privato.',
91
92
  ui,
92
- faqTitle: 'Domande Frequenti',
93
+
93
94
  faq: faqData,
94
95
  howTo: howToData,
95
- bibliographyTitle: 'Riferimenti',
96
- bibliography: [
97
- { name: "Guida introduttiva di Google alla SEO", url: 'https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=it' },
98
- { name: 'Criteri di leggibilità Yoast SEO', url: 'https://yoast.com/what-is-readability/' },
99
- ],
96
+
97
+ bibliography,
100
98
  schemas: [faqSchema, howToSchema, appSchema],
101
99
  seo: [
102
100
  { type: 'title', level: 2, text: 'Ottimizzatore di Contenuti SEO: Parole Chiave, Leggibilità e Struttura' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SeoContentOptimizerUI } from '../ui';
@@ -89,14 +90,11 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
89
90
  title: 'SEOコンテンツ最適化ツール',
90
91
  description: 'テキストのキーワード密度、読みやすさ、テクニカルHTML構造をリアルタイムで分析します。サーバーにデータを送信しない、無料でプライバシーに配慮したSEOツールです。',
91
92
  ui,
92
- faqTitle: 'よくある質問',
93
+
93
94
  faq: faqData,
94
95
  howTo: howToData,
95
- bibliographyTitle: '参考文献',
96
- bibliography: [
97
- { name: 'Google SEOスターターガイド', url: 'https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=ja' },
98
- { name: 'Yoast SEOの読みやすさ基準', url: 'https://yoast.com/what-is-readability/' },
99
- ],
96
+
97
+ bibliography,
100
98
  schemas: [faqSchema, howToSchema, appSchema],
101
99
  seo: [
102
100
  { type: 'title', level: 2, text: 'SEOコンテンツ最適化:キーワード、読みやすさ、階層構造' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SeoContentOptimizerUI } from '../ui';
@@ -89,14 +90,11 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
89
90
  title: 'SEO 콘텐츠 최적화 도구',
90
91
  description: '텍스트의 키워드 밀도, 가독성 및 기술 HTML 구조를 실시간으로 분석하세요. 무료로 제공되는 개인정보 보호 SEO 도구입니다.',
91
92
  ui,
92
- faqTitle: '자주 묻는 질문',
93
+
93
94
  faq: faqData,
94
95
  howTo: howToData,
95
- bibliographyTitle: '참고 문헌',
96
- bibliography: [
97
- { name: 'Google 검색 엔진 최적화(SEO) 기본 가이드', url: 'https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=ko' },
98
- { name: 'Yoast SEO 가독성 기준', url: 'https://yoast.com/what-is-readability/' },
99
- ],
96
+
97
+ bibliography,
100
98
  schemas: [faqSchema, howToSchema, appSchema],
101
99
  seo: [
102
100
  { type: 'title', level: 2, text: 'SEO 콘텐츠 최적화: 키워드, 가독성 및 구조' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SeoContentOptimizerUI } from '../ui';
@@ -89,14 +90,11 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
89
90
  title: 'SEO Content Optimizer',
90
91
  description: 'Analyseer de zoekwoorddichtheid, leesbaarheid en technische HTML-structuur van uw teksten in realtime. Gratis en privé SEO-tool.',
91
92
  ui,
92
- faqTitle: 'Veelgestelde Vragen',
93
+
93
94
  faq: faqData,
94
95
  howTo: howToData,
95
- bibliographyTitle: 'Referenties',
96
- bibliography: [
97
- { name: "Google's SEO-starthandleiding", url: 'https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=nl' },
98
- { name: 'Yoast SEO leesbaarheidscriteria', url: 'https://yoast.com/what-is-readability/' },
99
- ],
96
+
97
+ bibliography,
100
98
  schemas: [faqSchema, howToSchema, appSchema],
101
99
  seo: [
102
100
  { type: 'title', level: 2, text: 'SEO Content Optimizer: Zoekwoorden, Leesbaarheid en Structuur' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SeoContentOptimizerUI } from '../ui';
@@ -89,14 +90,11 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
89
90
  title: 'Optymalizator Treści SEO',
90
91
  description: 'Analizuj gęstość słów kluczowych, czytelność i techniczną strukturę HTML swoich tekstów w czasie rzeczywistym. Darmowe i prywatne narzędzie SEO.',
91
92
  ui,
92
- faqTitle: 'Często zadawane pytania',
93
+
93
94
  faq: faqData,
94
95
  howTo: howToData,
95
- bibliographyTitle: 'Źródła',
96
- bibliography: [
97
- { name: "Wprowadzenie Google do SEO", url: 'https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=pl' },
98
- { name: 'Kryteria czytelności Yoast SEO', url: 'https://yoast.com/what-is-readability/' },
99
- ],
96
+
97
+ bibliography,
100
98
  schemas: [faqSchema, howToSchema, appSchema],
101
99
  seo: [
102
100
  { type: 'title', level: 2, text: 'Optymalizator treści SEO: słowa kluczowe, czytelność i struktura' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SeoContentOptimizerUI } from '../ui';
@@ -89,14 +90,11 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
89
90
  title: 'Otimizador de Conteúdo SEO',
90
91
  description: 'Analise a densidade de palavras-chave, legibilidade e estrutura HTML técnica dos seus textos em tempo real. Ferramenta de SEO gratuita e privada.',
91
92
  ui,
92
- faqTitle: 'Perguntas Frequentes',
93
+
93
94
  faq: faqData,
94
95
  howTo: howToData,
95
- bibliographyTitle: 'Referências',
96
- bibliography: [
97
- { name: "Guia de SEO para iniciantes do Google", url: 'https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=pt-br' },
98
- { name: 'Critérios de legibilidade Yoast SEO', url: 'https://yoast.com/what-is-readability/' },
99
- ],
96
+
97
+ bibliography,
100
98
  schemas: [faqSchema, howToSchema, appSchema],
101
99
  seo: [
102
100
  { type: 'title', level: 2, text: 'Otimizador de Conteúdo SEO: Palavras-Chave, Legibilidade e Estrutura' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SeoContentOptimizerUI } from '../ui';
@@ -89,14 +90,11 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
89
90
  title: 'Оптимизатор SEO контента',
90
91
  description: 'Анализируйте плотность ключевых слов, читабельность и техническую структуру HTML ваших текстов в режиме реального времени. Бесплатный и приватный SEO-инструмент.',
91
92
  ui,
92
- faqTitle: 'Часто задаваемые вопросы',
93
+
93
94
  faq: faqData,
94
95
  howTo: howToData,
95
- bibliographyTitle: 'Источники',
96
- bibliography: [
97
- { name: 'Руководство Google по поисковой оптимизации для начинающих', url: 'https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=ru' },
98
- { name: 'Критерии читабельности Yoast SEO', url: 'https://yoast.com/what-is-readability/' },
99
- ],
96
+
97
+ bibliography,
100
98
  schemas: [faqSchema, howToSchema, appSchema],
101
99
  seo: [
102
100
  { type: 'title', level: 2, text: 'Оптимизатор SEO-контента: ключевые слова, читабельность и структура' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SeoContentOptimizerUI } from '../ui';
@@ -89,14 +90,11 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
89
90
  title: 'SEO Content Optimizer',
90
91
  description: 'Analysera sökordsdensitet, läsbarhet och teknisk HTML-struktur i dina texter i realtid. Gratis och privat SEO-verktyg.',
91
92
  ui,
92
- faqTitle: 'Vanliga frågor',
93
+
93
94
  faq: faqData,
94
95
  howTo: howToData,
95
- bibliographyTitle: 'Referenser',
96
- bibliography: [
97
- { name: "Googles startguide för SEO", url: 'https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=sv' },
98
- { name: 'Yoast SEO läsbarhetskriterier', url: 'https://yoast.com/what-is-readability/' },
99
- ],
96
+
97
+ bibliography,
100
98
  schemas: [faqSchema, howToSchema, appSchema],
101
99
  seo: [
102
100
  { type: 'title', level: 2, text: 'SEO Content Optimizer: Sökord, läsbarhet och struktur' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SeoContentOptimizerUI } from '../ui';
@@ -89,14 +90,11 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
89
90
  title: 'SEO İçerik Optimize Edici',
90
91
  description: 'Metinlerinizin anahtar kelime yoğunluğunu, okunabilirliğini ve teknik HTML yapısını gerçek zamanlı olarak analiz edin. Ücretsiz ve gizlilik odaklı SEO aracı.',
91
92
  ui,
92
- faqTitle: 'Sıkça Sorulan Sorular',
93
+
93
94
  faq: faqData,
94
95
  howTo: howToData,
95
- bibliographyTitle: 'Kaynaklar',
96
- bibliography: [
97
- { name: "Google'ın SEO Başlangıç Kılavuzu", url: 'https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=tr' },
98
- { name: 'Yoast SEO okunabilirlik kriterleri', url: 'https://yoast.com/what-is-readability/' },
99
- ],
96
+
97
+ bibliography,
100
98
  schemas: [faqSchema, howToSchema, appSchema],
101
99
  seo: [
102
100
  { type: 'title', level: 2, text: 'SEO İçerik Optimize Edici: Anahtar Kelimeler, Okunabilirlik ve Yapı' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SeoContentOptimizerUI } from '../ui';
@@ -89,14 +90,11 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
89
90
  title: 'SEO 内容优化工具',
90
91
  description: '实时分析文本的关键词密度、可读性和技术 HTML 结构。免费且私密的 SEO 工具。',
91
92
  ui,
92
- faqTitle: '常见问题',
93
+
93
94
  faq: faqData,
94
95
  howTo: howToData,
95
- bibliographyTitle: '参考文献',
96
- bibliography: [
97
- { name: 'Google SEO 入门指南', url: 'https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=zh-cn' },
98
- { name: 'Yoast SEO 可读性标准', url: 'https://yoast.com/what-is-readability/' },
99
- ],
96
+
97
+ bibliography,
100
98
  schemas: [faqSchema, howToSchema, appSchema],
101
99
  seo: [
102
100
  { type: 'title', level: 2, text: 'SEO 内容优化:关键词、可读性和结构' },
@@ -26,7 +26,7 @@
26
26
  gap: 2rem;
27
27
  }
28
28
 
29
- :global(.theme-dark) .sco-root {
29
+ .theme-dark .sco-root {
30
30
  --sco-tab-bg: rgba(15, 23, 42, 0.5);
31
31
  --sco-tab-active-bg: #1e293b;
32
32
  --sco-tab-active-color: #60a5fa;
@@ -172,7 +172,7 @@
172
172
  gap: 0.75rem;
173
173
  }
174
174
 
175
- :global(.sco-check-item) {
175
+ .sco-check-item {
176
176
  display: flex;
177
177
  gap: 0.75rem;
178
178
  align-items: flex-start;
@@ -184,7 +184,7 @@
184
184
  color: inherit;
185
185
  }
186
186
 
187
- :global(.sco-check-status) {
187
+ .sco-check-status {
188
188
  width: 20px;
189
189
  height: 20px;
190
190
  border-radius: 50%;
@@ -196,17 +196,17 @@
196
196
  font-weight: 900;
197
197
  }
198
198
 
199
- :global(.sco-success) {
199
+ .sco-success {
200
200
  background: #dcfce7;
201
201
  color: #15803d;
202
202
  }
203
203
 
204
- :global(.sco-warning) {
204
+ .sco-warning {
205
205
  background: #fef9c3;
206
206
  color: #a16207;
207
207
  }
208
208
 
209
- :global(.sco-error) {
209
+ .sco-error {
210
210
  background: #fee2e2;
211
211
  color: #b91c1c;
212
212
  }
@@ -217,7 +217,7 @@
217
217
  gap: 0.5rem;
218
218
  }
219
219
 
220
- :global(.sco-keyword-item) {
220
+ .sco-keyword-item {
221
221
  display: flex;
222
222
  justify-content: space-between;
223
223
  padding: 0.5rem 0.75rem;
@@ -226,12 +226,12 @@
226
226
  font-size: 0.9rem;
227
227
  }
228
228
 
229
- :global(.sco-keyword-name) {
229
+ .sco-keyword-name {
230
230
  font-weight: 600;
231
231
  color: var(--sco-keyword-name, #1e293b);
232
232
  }
233
233
 
234
- :global(.sco-keyword-count) {
234
+ .sco-keyword-count {
235
235
  font-weight: 700;
236
236
  }
237
237
 
@@ -242,7 +242,7 @@
242
242
  padding: 0.5rem;
243
243
  }
244
244
 
245
- :global(.sco-empty-injected) {
245
+ .sco-empty-injected {
246
246
  font-size: 0.875rem;
247
247
  color: var(--sco-muted, #64748b);
248
248
  text-align: center;
@@ -9,6 +9,7 @@ interface Props {
9
9
 
10
10
  const { locale = 'es' } = Astro.props;
11
11
  const content = await seoContentOptimizer.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 }} />}
@@ -1,14 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { speedReader } from './index';
4
- import type { KnownLocale } from '../../types';
5
-
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
-
10
- const { locale = 'es' } = Astro.props;
11
- const content = await speedReader.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,10 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ { name: 'Rayner, K., et al. (2016). So much to read, so little time. Psychological Science in the Public Interest.', url: 'https://journals.sagepub.com/doi/full/10.1177/1529100615623267' },
5
+ { name: 'Forster, K. I. (1970). Visual perception of rapidly presented word sequences. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03212522' },
6
+ { name: 'Öquist, G., & Goldstein, M. (2003). Towards an improved readability on mobile devices. Mobile HCI.', url: 'https://www.researchgate.net/publication/221063852_Towards_an_improved_readability_on_mobile_devices' },
7
+ { name: 'Juola, J. F., et al. (1982). Visual search and reading of rapid serial visual presentations. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03202598' },
8
+ { name: 'Masson, M. E. J. (1983). Conceptual processing of text during rapid serial visual presentation. Journal of Educational Psychology.', url: 'https://psycnet.apa.org/record/1984-08638-001' },
9
+ { name: 'Saldana, D., & Greene, R. (2022). Reading effectiveness with RSVP apps. Reading Psychology.', url: 'https://www.tandfonline.com/doi/abs/10.1080/02702711.2022.2030000' },
10
+ ];
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SpeedReaderUI } from '../ui';
@@ -75,18 +76,11 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
75
76
  title: 'RSVP Speed Reader',
76
77
  description: 'Trainieren Sie Ihre Lesegeschwindigkeit auf bis zu 1000 Wörter pro Minute. RSVP-Technologie mit optimaler Fokuspunkt-Ausrichtung. Verdoppeln Sie Ihre intellektuelle Produktivität.',
77
78
  ui,
78
- faqTitle: 'Häufig gestellte Fragen',
79
+
79
80
  faq: faqData,
80
81
  howTo: howToData,
81
- bibliographyTitle: 'Referenzen',
82
- bibliography: [
83
- { name: 'Rayner, K., et al. (2016). So much to read, so little time. Psychological Science in the Public Interest.', url: 'https://journals.sagepub.com/doi/full/10.1177/1529100615623267' },
84
- { name: 'Forster, K. I. (1970). Visual perception of rapidly presented word sequences. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03212522' },
85
- { name: 'Öquist, G., & Goldstein, M. (2003). Towards an improved readability on mobile devices. Mobile HCI.', url: 'https://www.researchgate.net/publication/221063852_Towards_an_improved_readability_on_mobile_devices' },
86
- { name: 'Juola, J. F., et al. (1982). Visual search and reading of rapid serial visual presentations. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03202598' },
87
- { name: 'Masson, M. E. J. (1983). Conceptual processing of text during rapid serial visual presentation. Journal of Educational Psychology.', url: 'https://psycnet.apa.org/record/1984-08638-001' },
88
- { name: 'Saldana, D., & Greene, R. (2022). Reading effectiveness with RSVP apps. Reading Psychology.', url: 'https://www.tandfonline.com/doi/abs/10.1080/02702711.2022.2030000' },
89
- ],
82
+
83
+ bibliography,
90
84
  schemas: [faqSchema, howToSchema, appSchema],
91
85
  seo: [
92
86
  { type: 'title', level: 2, text: 'Die Formel 1 des Lesens: Schalten Sie Ihre mentale Bandbreite frei' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SpeedReaderUI } from '../ui';
@@ -75,18 +76,11 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
75
76
  title: 'RSVP Speed Reader',
76
77
  description: 'Train your reading speed up to 1000 words per minute. RSVP technology with optimal focal point alignment. Double your intellectual productivity.',
77
78
  ui,
78
- faqTitle: 'Frequently Asked Questions',
79
+
79
80
  faq: faqData,
80
81
  howTo: howToData,
81
- bibliographyTitle: 'References',
82
- bibliography: [
83
- { name: 'Rayner, K., et al. (2016). So much to read, so little time. Psychological Science in the Public Interest.', url: 'https://journals.sagepub.com/doi/full/10.1177/1529100615623267' },
84
- { name: 'Forster, K. I. (1970). Visual perception of rapidly presented word sequences. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03212522' },
85
- { name: 'Öquist, G., & Goldstein, M. (2003). Towards an improved readability on mobile devices. Mobile HCI.', url: 'https://www.researchgate.net/publication/221063852_Towards_an_improved_readability_on_mobile_devices' },
86
- { name: 'Juola, J. F., et al. (1982). Visual search and reading of rapid serial visual presentations. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03202598' },
87
- { name: 'Masson, M. E. J. (1983). Conceptual processing of text during rapid serial visual presentation. Journal of Educational Psychology.', url: 'https://psycnet.apa.org/record/1984-08638-001' },
88
- { name: 'Saldana, D., & Greene, R. (2022). Reading effectiveness with RSVP apps. Reading Psychology.', url: 'https://www.tandfonline.com/doi/abs/10.1080/02702711.2022.2030000' },
89
- ],
82
+
83
+ bibliography,
90
84
  schemas: [faqSchema, howToSchema, appSchema],
91
85
  seo: [
92
86
  { type: 'title', level: 2, text: 'The Formula 1 of Reading: Unlock Your Mental Bandwidth' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SpeedReaderUI } from '../ui';
@@ -75,18 +76,11 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
75
76
  title: 'RSVP Lector Rápido',
76
77
  description: 'Entrena tu velocidad de lectura hasta 1000 palabras por minuto. Tecnología RSVP con alineación de punto focal óptimo. Dobla tu productividad intelectual.',
77
78
  ui,
78
- faqTitle: 'Preguntas Frecuentes',
79
+
79
80
  faq: faqData,
80
81
  howTo: howToData,
81
- bibliographyTitle: 'Referencias',
82
- bibliography: [
83
- { name: 'Rayner, K., et al. (2016). So much to read, so little time. Psychological Science in the Public Interest.', url: 'https://journals.sagepub.com/doi/full/10.1177/1529100615623267' },
84
- { name: 'Forster, K. I. (1970). Visual perception of rapidly presented word sequences. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03212522' },
85
- { name: 'Öquist, G., & Goldstein, M. (2003). Towards an improved readability on mobile devices. Mobile HCI.', url: 'https://www.researchgate.net/publication/221063852_Towards_an_improved_readability_on_mobile_devices' },
86
- { name: 'Juola, J. F., et al. (1982). Visual search and reading of rapid serial visual presentations. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03202598' },
87
- { name: 'Masson, M. E. J. (1983). Conceptual processing of text during rapid serial visual presentation. Journal of Educational Psychology.', url: 'https://psycnet.apa.org/record/1984-08638-001' },
88
- { name: 'Saldana, D., & Greene, R. (2022). Reading effectiveness with RSVP apps. Reading Psychology.', url: 'https://www.tandfonline.com/doi/abs/10.1080/02702711.2022.2030000' },
89
- ],
82
+
83
+ bibliography,
90
84
  schemas: [faqSchema, howToSchema, appSchema],
91
85
  seo: [
92
86
  { type: 'title', level: 2, text: 'La Fórmula 1 de la Lectura: Desbloquea tu Ancho de Banda Mental' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SpeedReaderUI } from '../ui';
@@ -75,18 +76,11 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
75
76
  title: 'RSVP Lecteur Rapide',
76
77
  description: "Entraînez votre vitesse de lecture jusqu'à 1000 mots par minute. Technologie RSVP avec alignement du point focal optimal. Doublez votre productivité intellectuelle.",
77
78
  ui,
78
- faqTitle: 'Questions Fréquentes',
79
+
79
80
  faq: faqData,
80
81
  howTo: howToData,
81
- bibliographyTitle: 'Références',
82
- bibliography: [
83
- { name: 'Rayner, K., et al. (2016). So much to read, so little time. Psychological Science in the Public Interest.', url: 'https://journals.sagepub.com/doi/full/10.1177/1529100615623267' },
84
- { name: 'Forster, K. I. (1970). Visual perception of rapidly presented word sequences. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03212522' },
85
- { name: 'Öquist, G., & Goldstein, M. (2003). Towards an improved readability on mobile devices. Mobile HCI.', url: 'https://www.researchgate.net/publication/221063852_Towards_an_improved_readability_on_mobile_devices' },
86
- { name: 'Juola, J. F., et al. (1982). Visual search and reading of rapid serial visual presentations. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03202598' },
87
- { name: 'Masson, M. E. J. (1983). Conceptual processing of text during rapid serial visual presentation. Journal of Educational Psychology.', url: 'https://psycnet.apa.org/record/1984-08638-001' },
88
- { name: 'Saldana, D., & Greene, R. (2022). Reading effectiveness with RSVP apps. Reading Psychology.', url: 'https://www.tandfonline.com/doi/abs/10.1080/02702711.2022.2030000' },
89
- ],
82
+
83
+ bibliography,
90
84
  schemas: [faqSchema, howToSchema, appSchema],
91
85
  seo: [
92
86
  { type: 'title', level: 2, text: 'La Formule 1 de la Lecture : Débloquez Votre Bande Passante Mentale' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SpeedReaderUI } from '../ui';
@@ -75,18 +76,11 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
75
76
  title: 'RSVP Speed Reader',
76
77
  description: 'Latih kecepatan membaca Anda hingga 1000 kata per menit. Teknologi RSVP dengan penyelarasan titik fokus yang optimal. Gandakan produktivitas intelektual Anda.',
77
78
  ui,
78
- faqTitle: 'Pertanyaan yang Sering Diajukan',
79
+
79
80
  faq: faqData,
80
81
  howTo: howToData,
81
- bibliographyTitle: 'Referensi',
82
- bibliography: [
83
- { name: 'Rayner, K., et al. (2016). So much to read, so little time. Psychological Science in the Public Interest.', url: 'https://journals.sagepub.com/doi/full/10.1177/1529100615623267' },
84
- { name: 'Forster, K. I. (1970). Visual perception of rapidly presented word sequences. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03212522' },
85
- { name: 'Öquist, G., & Goldstein, M. (2003). Towards an improved readability on mobile devices. Mobile HCI.', url: 'https://www.researchgate.net/publication/221063852_Towards_an_improved_readability_on_mobile_devices' },
86
- { name: 'Juola, J. F., et al. (1982). Visual search and reading of rapid serial visual presentations. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03202598' },
87
- { name: 'Masson, M. E. J. (1983). Conceptual processing of text during rapid serial visual presentation. Journal of Educational Psychology.', url: 'https://psycnet.apa.org/record/1984-08638-001' },
88
- { name: 'Saldana, D., & Greene, R. (2022). Reading effectiveness with RSVP apps. Reading Psychology.', url: 'https://www.tandfonline.com/doi/abs/10.1080/02702711.2022.2030000' },
89
- ],
82
+
83
+ bibliography,
90
84
  schemas: [faqSchema, howToSchema, appSchema],
91
85
  seo: [
92
86
  { type: 'title', level: 2, text: 'Formula 1 dalam Membaca: Buka Bandwidth Mental Anda' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SpeedReaderUI } from '../ui';
@@ -75,18 +76,11 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
75
76
  title: 'RSVP Speed Reader',
76
77
  description: 'Allena la tua velocità di lettura fino a 1000 parole al minuto. Tecnologia RSVP con allineamento ottimale del punto focale. Raddoppia la tua produttività intellettuale.',
77
78
  ui,
78
- faqTitle: 'Domande Frequenti',
79
+
79
80
  faq: faqData,
80
81
  howTo: howToData,
81
- bibliographyTitle: 'Riferimenti',
82
- bibliography: [
83
- { name: 'Rayner, K., et al. (2016). So much to read, so little time. Psychological Science in the Public Interest.', url: 'https://journals.sagepub.com/doi/full/10.1177/1529100615623267' },
84
- { name: 'Forster, K. I. (1970). Visual perception of rapidly presented word sequences. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03212522' },
85
- { name: 'Öquist, G., & Goldstein, M. (2003). Towards an improved readability on mobile devices. Mobile HCI.', url: 'https://www.researchgate.net/publication/221063852_Towards_an_improved_readability_on_mobile_devices' },
86
- { name: 'Juola, J. F., et al. (1982). Visual search and reading of rapid serial visual presentations. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03202598' },
87
- { name: 'Masson, M. E. J. (1983). Conceptual processing of text during rapid serial visual presentation. Journal of Educational Psychology.', url: 'https://psycnet.apa.org/record/1984-08638-001' },
88
- { name: 'Saldana, D., & Greene, R. (2022). Reading effectiveness with RSVP apps. Reading Psychology.', url: 'https://www.tandfonline.com/doi/abs/10.1080/02702711.2022.2030000' },
89
- ],
82
+
83
+ bibliography,
90
84
  schemas: [faqSchema, howToSchema, appSchema],
91
85
  seo: [
92
86
  { type: 'title', level: 2, text: 'La Formula 1 della Lettura: Sblocca la tua Larghezza di Banda Mentale' },
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ToolLocaleContent } from '../../../types';
2
3
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
3
4
  import type { SpeedReaderUI } from '../ui';
@@ -75,18 +76,11 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
75
76
  title: 'RSVP Speed Reader',
76
77
  description: '読書速度を分速最大1000語までトレーニング。最適な焦点調整を備えたRSVP技術。知的生産性を2倍にしましょう。',
77
78
  ui,
78
- faqTitle: 'よくある質問',
79
+
79
80
  faq: faqData,
80
81
  howTo: howToData,
81
- bibliographyTitle: '参考文献',
82
- bibliography: [
83
- { name: 'Rayner, K., et al. (2016). So much to read, so little time. Psychological Science in the Public Interest.', url: 'https://journals.sagepub.com/doi/full/10.1177/1529100615623267' },
84
- { name: 'Forster, K. I. (1970). Visual perception of rapidly presented word sequences. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03212522' },
85
- { name: 'Öquist, G., & Goldstein, M. (2003). Towards an improved readability on mobile devices. Mobile HCI.', url: 'https://www.researchgate.net/publication/221063852_Towards_an_improved_readability_on_mobile_devices' },
86
- { name: 'Juola, J. F., et al. (1982). Visual search and reading of rapid serial visual presentations. Perception & Psychophysics.', url: 'https://link.springer.com/article/10.3758/BF03202598' },
87
- { name: 'Masson, M. E. J. (1983). Conceptual processing of text during rapid serial visual presentation. Journal of Educational Psychology.', url: 'https://psycnet.apa.org/record/1984-08638-001' },
88
- { name: 'Saldana, D., & Greene, R. (2022). Reading effectiveness with RSVP apps. Reading Psychology.', url: 'https://www.tandfonline.com/doi/abs/10.1080/02702711.2022.2030000' },
89
- ],
82
+
83
+ bibliography,
90
84
  schemas: [faqSchema, howToSchema, appSchema],
91
85
  seo: [
92
86
  { type: 'title', level: 2, text: '読書のF1:脳の帯域幅を解放する' },