@jjlmoya/utils-tools 1.12.0 → 1.14.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 (240) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/de.ts +3 -3
  3. package/src/category/i18n/en.ts +1 -1
  4. package/src/category/i18n/es.ts +1 -1
  5. package/src/category/i18n/fr.ts +16 -16
  6. package/src/category/i18n/id.ts +1 -1
  7. package/src/category/i18n/nl.ts +1 -1
  8. package/src/category/i18n/pl.ts +1 -1
  9. package/src/category/i18n/pt.ts +1 -1
  10. package/src/category/i18n/ru.ts +10 -10
  11. package/src/category/i18n/sv.ts +1 -1
  12. package/src/category/i18n/tr.ts +1 -1
  13. package/src/category/i18n/zh.ts +4 -4
  14. package/src/layouts/PreviewLayout.astro +7 -2
  15. package/src/pages/[locale]/[slug].astro +30 -13
  16. package/src/tests/diacritics_density.test.ts +118 -0
  17. package/src/tests/inverted_punctuation.test.ts +84 -0
  18. package/src/tests/locale_completeness.test.ts +3 -20
  19. package/src/tests/no_en_dash.test.ts +70 -0
  20. package/src/tests/script_density.test.ts +94 -0
  21. package/src/tests/shared-test-helpers.ts +56 -0
  22. package/src/tests/tool_exports.test.ts +34 -0
  23. package/src/tool/date-diff-calculator/bibliography.astro +2 -10
  24. package/src/tool/date-diff-calculator/bibliography.ts +7 -0
  25. package/src/tool/date-diff-calculator/i18n/de.ts +8 -11
  26. package/src/tool/date-diff-calculator/i18n/en.ts +4 -7
  27. package/src/tool/date-diff-calculator/i18n/es.ts +4 -7
  28. package/src/tool/date-diff-calculator/i18n/fr.ts +4 -7
  29. package/src/tool/date-diff-calculator/i18n/id.ts +4 -7
  30. package/src/tool/date-diff-calculator/i18n/it.ts +4 -7
  31. package/src/tool/date-diff-calculator/i18n/ja.ts +4 -7
  32. package/src/tool/date-diff-calculator/i18n/ko.ts +4 -7
  33. package/src/tool/date-diff-calculator/i18n/nl.ts +4 -7
  34. package/src/tool/date-diff-calculator/i18n/pl.ts +5 -8
  35. package/src/tool/date-diff-calculator/i18n/pt.ts +4 -7
  36. package/src/tool/date-diff-calculator/i18n/ru.ts +8 -11
  37. package/src/tool/date-diff-calculator/i18n/sv.ts +4 -7
  38. package/src/tool/date-diff-calculator/i18n/tr.ts +4 -7
  39. package/src/tool/date-diff-calculator/i18n/zh.ts +7 -10
  40. package/src/tool/date-diff-calculator/seo.astro +2 -1
  41. package/src/tool/drive-direct-link/bibliography.astro +2 -10
  42. package/src/tool/drive-direct-link/bibliography.ts +6 -0
  43. package/src/tool/drive-direct-link/i18n/de.ts +8 -10
  44. package/src/tool/drive-direct-link/i18n/en.ts +4 -6
  45. package/src/tool/drive-direct-link/i18n/es.ts +5 -7
  46. package/src/tool/drive-direct-link/i18n/fr.ts +5 -7
  47. package/src/tool/drive-direct-link/i18n/id.ts +4 -6
  48. package/src/tool/drive-direct-link/i18n/it.ts +4 -6
  49. package/src/tool/drive-direct-link/i18n/ja.ts +4 -6
  50. package/src/tool/drive-direct-link/i18n/ko.ts +4 -6
  51. package/src/tool/drive-direct-link/i18n/nl.ts +4 -6
  52. package/src/tool/drive-direct-link/i18n/pl.ts +8 -10
  53. package/src/tool/drive-direct-link/i18n/pt.ts +4 -6
  54. package/src/tool/drive-direct-link/i18n/ru.ts +12 -14
  55. package/src/tool/drive-direct-link/i18n/sv.ts +4 -6
  56. package/src/tool/drive-direct-link/i18n/tr.ts +4 -6
  57. package/src/tool/drive-direct-link/i18n/zh.ts +8 -10
  58. package/src/tool/drive-direct-link/seo.astro +2 -1
  59. package/src/tool/email-list-cleaner/bibliography.astro +2 -10
  60. package/src/tool/email-list-cleaner/bibliography.ts +7 -0
  61. package/src/tool/email-list-cleaner/i18n/de.ts +6 -9
  62. package/src/tool/email-list-cleaner/i18n/en.ts +4 -7
  63. package/src/tool/email-list-cleaner/i18n/es.ts +4 -7
  64. package/src/tool/email-list-cleaner/i18n/fr.ts +4 -7
  65. package/src/tool/email-list-cleaner/i18n/id.ts +4 -7
  66. package/src/tool/email-list-cleaner/i18n/it.ts +4 -7
  67. package/src/tool/email-list-cleaner/i18n/ja.ts +4 -7
  68. package/src/tool/email-list-cleaner/i18n/ko.ts +4 -7
  69. package/src/tool/email-list-cleaner/i18n/nl.ts +4 -7
  70. package/src/tool/email-list-cleaner/i18n/pl.ts +6 -9
  71. package/src/tool/email-list-cleaner/i18n/pt.ts +4 -7
  72. package/src/tool/email-list-cleaner/i18n/ru.ts +11 -14
  73. package/src/tool/email-list-cleaner/i18n/sv.ts +5 -8
  74. package/src/tool/email-list-cleaner/i18n/tr.ts +4 -7
  75. package/src/tool/email-list-cleaner/i18n/zh.ts +7 -10
  76. package/src/tool/email-list-cleaner/seo.astro +2 -1
  77. package/src/tool/env-badge-spain/bibliography.astro +2 -10
  78. package/src/tool/env-badge-spain/bibliography.ts +6 -0
  79. package/src/tool/env-badge-spain/i18n/de.ts +4 -6
  80. package/src/tool/env-badge-spain/i18n/en.ts +4 -6
  81. package/src/tool/env-badge-spain/i18n/es.ts +4 -6
  82. package/src/tool/env-badge-spain/i18n/fr.ts +4 -6
  83. package/src/tool/env-badge-spain/i18n/id.ts +4 -6
  84. package/src/tool/env-badge-spain/i18n/it.ts +4 -6
  85. package/src/tool/env-badge-spain/i18n/ja.ts +4 -6
  86. package/src/tool/env-badge-spain/i18n/ko.ts +4 -6
  87. package/src/tool/env-badge-spain/i18n/nl.ts +4 -6
  88. package/src/tool/env-badge-spain/i18n/pl.ts +4 -6
  89. package/src/tool/env-badge-spain/i18n/pt.ts +4 -6
  90. package/src/tool/env-badge-spain/i18n/ru.ts +14 -16
  91. package/src/tool/env-badge-spain/i18n/sv.ts +4 -6
  92. package/src/tool/env-badge-spain/i18n/tr.ts +4 -6
  93. package/src/tool/env-badge-spain/i18n/zh.ts +4 -6
  94. package/src/tool/env-badge-spain/seo.astro +2 -1
  95. package/src/tool/morse-beacon/bibliography.astro +2 -10
  96. package/src/tool/morse-beacon/bibliography.ts +7 -0
  97. package/src/tool/morse-beacon/i18n/de.ts +8 -11
  98. package/src/tool/morse-beacon/i18n/en.ts +6 -9
  99. package/src/tool/morse-beacon/i18n/es.ts +6 -9
  100. package/src/tool/morse-beacon/i18n/fr.ts +9 -12
  101. package/src/tool/morse-beacon/i18n/id.ts +6 -9
  102. package/src/tool/morse-beacon/i18n/it.ts +6 -9
  103. package/src/tool/morse-beacon/i18n/ja.ts +6 -9
  104. package/src/tool/morse-beacon/i18n/ko.ts +6 -9
  105. package/src/tool/morse-beacon/i18n/nl.ts +6 -9
  106. package/src/tool/morse-beacon/i18n/pl.ts +7 -10
  107. package/src/tool/morse-beacon/i18n/pt.ts +6 -9
  108. package/src/tool/morse-beacon/i18n/ru.ts +7 -10
  109. package/src/tool/morse-beacon/i18n/sv.ts +6 -9
  110. package/src/tool/morse-beacon/i18n/tr.ts +6 -9
  111. package/src/tool/morse-beacon/i18n/zh.ts +7 -10
  112. package/src/tool/morse-beacon/seo.astro +2 -1
  113. package/src/tool/password-generator/bibliography.astro +2 -10
  114. package/src/tool/password-generator/bibliography.ts +8 -0
  115. package/src/tool/password-generator/i18n/de.ts +9 -13
  116. package/src/tool/password-generator/i18n/en.ts +4 -8
  117. package/src/tool/password-generator/i18n/es.ts +4 -8
  118. package/src/tool/password-generator/i18n/fr.ts +5 -9
  119. package/src/tool/password-generator/i18n/id.ts +4 -8
  120. package/src/tool/password-generator/i18n/it.ts +4 -8
  121. package/src/tool/password-generator/i18n/ja.ts +4 -8
  122. package/src/tool/password-generator/i18n/ko.ts +4 -8
  123. package/src/tool/password-generator/i18n/nl.ts +4 -8
  124. package/src/tool/password-generator/i18n/pl.ts +7 -11
  125. package/src/tool/password-generator/i18n/pt.ts +4 -8
  126. package/src/tool/password-generator/i18n/ru.ts +8 -12
  127. package/src/tool/password-generator/i18n/sv.ts +4 -8
  128. package/src/tool/password-generator/i18n/tr.ts +4 -8
  129. package/src/tool/password-generator/i18n/zh.ts +7 -11
  130. package/src/tool/password-generator/seo.astro +2 -1
  131. package/src/tool/routes/bibliography.astro +2 -10
  132. package/src/tool/routes/bibliography.ts +9 -0
  133. package/src/tool/routes/i18n/de.ts +5 -10
  134. package/src/tool/routes/i18n/en.ts +4 -9
  135. package/src/tool/routes/i18n/es.ts +4 -9
  136. package/src/tool/routes/i18n/fr.ts +7 -12
  137. package/src/tool/routes/i18n/id.ts +4 -9
  138. package/src/tool/routes/i18n/it.ts +4 -9
  139. package/src/tool/routes/i18n/ja.ts +4 -9
  140. package/src/tool/routes/i18n/ko.ts +4 -9
  141. package/src/tool/routes/i18n/nl.ts +4 -9
  142. package/src/tool/routes/i18n/pl.ts +4 -9
  143. package/src/tool/routes/i18n/pt.ts +4 -9
  144. package/src/tool/routes/i18n/ru.ts +7 -12
  145. package/src/tool/routes/i18n/sv.ts +4 -9
  146. package/src/tool/routes/i18n/tr.ts +4 -9
  147. package/src/tool/routes/i18n/zh.ts +5 -10
  148. package/src/tool/routes/seo.astro +2 -1
  149. package/src/tool/rule-of-three/bibliography.astro +2 -10
  150. package/src/tool/rule-of-three/bibliography.ts +6 -0
  151. package/src/tool/rule-of-three/i18n/de.ts +6 -8
  152. package/src/tool/rule-of-three/i18n/en.ts +4 -6
  153. package/src/tool/rule-of-three/i18n/es.ts +4 -6
  154. package/src/tool/rule-of-three/i18n/fr.ts +11 -13
  155. package/src/tool/rule-of-three/i18n/id.ts +4 -6
  156. package/src/tool/rule-of-three/i18n/it.ts +4 -6
  157. package/src/tool/rule-of-three/i18n/ja.ts +4 -6
  158. package/src/tool/rule-of-three/i18n/ko.ts +4 -6
  159. package/src/tool/rule-of-three/i18n/nl.ts +6 -8
  160. package/src/tool/rule-of-three/i18n/pl.ts +6 -8
  161. package/src/tool/rule-of-three/i18n/pt.ts +4 -6
  162. package/src/tool/rule-of-three/i18n/ru.ts +7 -9
  163. package/src/tool/rule-of-three/i18n/sv.ts +4 -6
  164. package/src/tool/rule-of-three/i18n/tr.ts +5 -7
  165. package/src/tool/rule-of-three/i18n/zh.ts +6 -8
  166. package/src/tool/rule-of-three/seo.astro +2 -1
  167. package/src/tool/seo-content-optimizer/bibliography.astro +2 -10
  168. package/src/tool/seo-content-optimizer/bibliography.ts +6 -0
  169. package/src/tool/seo-content-optimizer/i18n/de.ts +4 -6
  170. package/src/tool/seo-content-optimizer/i18n/en.ts +4 -6
  171. package/src/tool/seo-content-optimizer/i18n/es.ts +4 -6
  172. package/src/tool/seo-content-optimizer/i18n/fr.ts +7 -9
  173. package/src/tool/seo-content-optimizer/i18n/id.ts +4 -6
  174. package/src/tool/seo-content-optimizer/i18n/it.ts +4 -6
  175. package/src/tool/seo-content-optimizer/i18n/ja.ts +4 -6
  176. package/src/tool/seo-content-optimizer/i18n/ko.ts +4 -6
  177. package/src/tool/seo-content-optimizer/i18n/nl.ts +4 -6
  178. package/src/tool/seo-content-optimizer/i18n/pl.ts +4 -6
  179. package/src/tool/seo-content-optimizer/i18n/pt.ts +4 -6
  180. package/src/tool/seo-content-optimizer/i18n/ru.ts +5 -7
  181. package/src/tool/seo-content-optimizer/i18n/sv.ts +4 -6
  182. package/src/tool/seo-content-optimizer/i18n/tr.ts +4 -6
  183. package/src/tool/seo-content-optimizer/i18n/zh.ts +4 -6
  184. package/src/tool/seo-content-optimizer/seo.astro +2 -1
  185. package/src/tool/speed-reader/bibliography.astro +2 -10
  186. package/src/tool/speed-reader/bibliography.ts +10 -0
  187. package/src/tool/speed-reader/i18n/de.ts +7 -13
  188. package/src/tool/speed-reader/i18n/en.ts +6 -12
  189. package/src/tool/speed-reader/i18n/es.ts +4 -10
  190. package/src/tool/speed-reader/i18n/fr.ts +13 -19
  191. package/src/tool/speed-reader/i18n/id.ts +6 -12
  192. package/src/tool/speed-reader/i18n/it.ts +6 -12
  193. package/src/tool/speed-reader/i18n/ja.ts +4 -10
  194. package/src/tool/speed-reader/i18n/ko.ts +4 -10
  195. package/src/tool/speed-reader/i18n/nl.ts +6 -12
  196. package/src/tool/speed-reader/i18n/pl.ts +7 -13
  197. package/src/tool/speed-reader/i18n/pt.ts +6 -12
  198. package/src/tool/speed-reader/i18n/ru.ts +14 -20
  199. package/src/tool/speed-reader/i18n/sv.ts +6 -12
  200. package/src/tool/speed-reader/i18n/tr.ts +4 -10
  201. package/src/tool/speed-reader/i18n/zh.ts +8 -14
  202. package/src/tool/speed-reader/seo.astro +2 -1
  203. package/src/tool/text-pixel-calculator/bibliography.astro +2 -10
  204. package/src/tool/text-pixel-calculator/bibliography.ts +6 -0
  205. package/src/tool/text-pixel-calculator/i18n/de.ts +6 -8
  206. package/src/tool/text-pixel-calculator/i18n/en.ts +4 -6
  207. package/src/tool/text-pixel-calculator/i18n/es.ts +4 -6
  208. package/src/tool/text-pixel-calculator/i18n/fr.ts +5 -7
  209. package/src/tool/text-pixel-calculator/i18n/id.ts +4 -6
  210. package/src/tool/text-pixel-calculator/i18n/it.ts +4 -6
  211. package/src/tool/text-pixel-calculator/i18n/ja.ts +4 -6
  212. package/src/tool/text-pixel-calculator/i18n/ko.ts +4 -6
  213. package/src/tool/text-pixel-calculator/i18n/nl.ts +4 -6
  214. package/src/tool/text-pixel-calculator/i18n/pl.ts +7 -9
  215. package/src/tool/text-pixel-calculator/i18n/pt.ts +4 -6
  216. package/src/tool/text-pixel-calculator/i18n/ru.ts +8 -10
  217. package/src/tool/text-pixel-calculator/i18n/sv.ts +4 -6
  218. package/src/tool/text-pixel-calculator/i18n/tr.ts +4 -6
  219. package/src/tool/text-pixel-calculator/i18n/zh.ts +7 -9
  220. package/src/tool/text-pixel-calculator/seo.astro +2 -1
  221. package/src/tool/whatsapp-link/bibliography.astro +2 -10
  222. package/src/tool/whatsapp-link/bibliography.ts +6 -0
  223. package/src/tool/whatsapp-link/i18n/de.ts +8 -10
  224. package/src/tool/whatsapp-link/i18n/en.ts +4 -6
  225. package/src/tool/whatsapp-link/i18n/es.ts +6 -8
  226. package/src/tool/whatsapp-link/i18n/fr.ts +6 -8
  227. package/src/tool/whatsapp-link/i18n/id.ts +4 -6
  228. package/src/tool/whatsapp-link/i18n/it.ts +4 -6
  229. package/src/tool/whatsapp-link/i18n/ja.ts +4 -6
  230. package/src/tool/whatsapp-link/i18n/ko.ts +4 -6
  231. package/src/tool/whatsapp-link/i18n/nl.ts +4 -6
  232. package/src/tool/whatsapp-link/i18n/pl.ts +8 -10
  233. package/src/tool/whatsapp-link/i18n/pt.ts +4 -6
  234. package/src/tool/whatsapp-link/i18n/ru.ts +9 -11
  235. package/src/tool/whatsapp-link/i18n/sv.ts +4 -6
  236. package/src/tool/whatsapp-link/i18n/tr.ts +4 -6
  237. package/src/tool/whatsapp-link/i18n/zh.ts +8 -10
  238. package/src/tool/whatsapp-link/seo.astro +2 -1
  239. package/src/tool/whatsapp-link/whatsapp-link-generator.css +41 -4
  240. 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 { 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' },
@@ -116,7 +110,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
116
110
  icon: 'mdi:speedometer-slow',
117
111
  title: 'Silenzio Cognitivo',
118
112
  highlight: true,
119
- description: 'Sopra le 400-500 WPM, la tua voce interiore tace non riesce a tenere il passo. Smetti di "sentire" ciò che leggi e inizi a "vedere" puri significati e concetti. Questo è lo stato di flow definitivo.',
113
+ description: 'Sopra le 400-500 WPM, la tua voce interiore tace - non riesce a tenere il passo. Smetti di "sentire" ciò che leggi e inizi a "vedere" puri significati e concetti. Questo è lo stato di flow definitivo.',
120
114
  },
121
115
  {
122
116
  icon: 'mdi:brain',
@@ -138,7 +132,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
138
132
  {
139
133
  title: 'Livello 2: Barriera del Suono (da 400 a 500 WPM)',
140
134
  highlight: true,
141
- description: 'Qui è dove accade la magia. Sentirai del disagio. Non rallentare quando perdi una parola il tuo cervello imparerà a colmare le lacune dal contesto.',
135
+ description: 'Qui è dove accade la magia. Sentirai del disagio. Non rallentare quando perdi una parola - il tuo cervello imparerà a colmare le lacune dal contesto.',
142
136
  points: ['La subvocalizzazione scompare', 'Stato di flow mentale', 'Raddoppia la tua velocità di base'],
143
137
  },
144
138
  {
@@ -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:脳の帯域幅を解放する' },
@@ -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 기술. 지적 생산성을 두 배로 높이세요.',
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: 정신적 대역폭을 해제하세요' },
@@ -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 uw leessnelheid tot 1000 woorden per minuut. RSVP-technologie met optimale brandpuntuitlijning. Verdubbel uw intellectuele productiviteit.',
77
78
  ui,
78
- faqTitle: 'Veelgestelde Vragen',
79
+
79
80
  faq: faqData,
80
81
  howTo: howToData,
81
- bibliographyTitle: 'Referenties',
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: 'De Formule 1 van het lezen: Ontgrendel uw mentale bandbreedte' },
@@ -116,7 +110,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
116
110
  icon: 'mdi:speedometer-slow',
117
111
  title: 'Cognitieve stilte',
118
112
  highlight: true,
119
- description: 'Boven de 400-500 WPM wordt uw innerlijke stem stil hij kan het niet bijhouden. U stopt met het "horen" van wat u leest en begint pure betekenissen en concepten te "zien". Dit is de ultieme flow-staat.',
113
+ description: 'Boven de 400-500 WPM wordt uw innerlijke stem stil - hij kan het niet bijhouden. U stopt met het "horen" van wat u leest en begint pure betekenissen en concepten te "zien". Dit is de ultieme flow-staat.',
120
114
  },
121
115
  {
122
116
  icon: 'mdi:brain',
@@ -138,7 +132,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
138
132
  {
139
133
  title: 'Niveau 2: Geluidsbarrière (400 tot 500 WPM)',
140
134
  highlight: true,
141
- description: 'Dit is waar de magie gebeurt. U zult ongemak voelen. Rem niet af wanneer u een woord mist uw hersenen zullen leren om gaten op te vullen vanuit de context.',
135
+ description: 'Dit is waar de magie gebeurt. U zult ongemak voelen. Rem niet af wanneer u een woord mist - uw hersenen zullen leren om gaten op te vullen vanuit de context.',
142
136
  points: ['Subvocalisatie verdwijnt', 'Mentale flow-staat', 'Verdubbel uw basissnelheid'],
143
137
  },
144
138
  {
@@ -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: 'Trenuj prędkość czytania do 1000 słów na minutę. Technologia RSVP z optymalnym wyrównaniem punktu skupienia. Podwój swoją wydajność intelektualną.',
77
78
  ui,
78
- faqTitle: 'Często zadawane pytania',
79
+
79
80
  faq: faqData,
80
81
  howTo: howToData,
81
- bibliographyTitle: 'Źródła',
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: 'Formuła 1 czytania: Odblokuj swoją przepustowość mentalną' },
@@ -116,7 +110,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
116
110
  icon: 'mdi:speedometer-slow',
117
111
  title: 'Cisza poznawcza',
118
112
  highlight: true,
119
- description: 'Powyżej 400-500 WPM Twój wewnętrzny głos cichnie nie nadąża. Przestajesz „słyszeć” to, co czytasz, a zaczynasz „widzieć” czyste znaczenia i pojęcia. To ostateczny stan flow.',
113
+ description: 'Powyżej 400-500 WPM Twój wewnętrzny głos cichnie - nie nadąża. Przestajesz "słyszeć" to, co czytasz, a zaczynasz "widzieć" czyste znaczenia i pojęcia. To ostateczny stan flow.',
120
114
  },
121
115
  {
122
116
  icon: 'mdi:brain',
@@ -132,13 +126,13 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
132
126
  items: [
133
127
  {
134
128
  title: 'Poziom 1: Przebudzenie (200 do 300 WPM)',
135
- description: 'Twoja normalna prędkość czytania. Przyzwyczaj się do interfejsu. Rozluźnij twarz i pozwól słowom do Ciebie przychodzić. Nie próbuj ich „chwytać”.',
129
+ description: 'Twoja normalna prędkość czytania. Przyzwyczaj się do interfejsu. Rozluźnij twarz i pozwól słowom do Ciebie przychodzić. Nie próbuj ich "chwytać".',
136
130
  points: ['Idealne dla początkujących', 'Zapoznanie z ORP', 'Brak zmęczenia oczu'],
137
131
  },
138
132
  {
139
133
  title: 'Poziom 2: Bariera dźwięku (400 do 500 WPM)',
140
134
  highlight: true,
141
- description: 'Tu dzieje się magia. Poczujesz dyskomfort. Nie zwalniaj, gdy umknie Ci słowo Twój mózg nauczy się wypełniać luki z kontekstu.',
135
+ description: 'Tu dzieje się magia. Poczujesz dyskomfort. Nie zwalniaj, gdy umknie Ci słowo - Twój mózg nauczy się wypełniać luki z kontekstu.',
142
136
  points: ['Subwokalizacja znika', 'Stan mentalnego flow', 'Podwojenie prędkości bazowej'],
143
137
  },
144
138
  {
@@ -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: 'Treine a sua velocidade de leitura até 1000 palavras por minuto. Tecnologia RSVP com alinhamento de ponto focal ideal. Duplique a sua produtividade intelectual.',
77
78
  ui,
78
- faqTitle: 'Perguntas Frequentes',
79
+
79
80
  faq: faqData,
80
81
  howTo: howToData,
81
- bibliographyTitle: 'Referências',
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: 'A Fórmula 1 da Leitura: Desbloqueie a sua Largura de Banda Mental' },
@@ -116,7 +110,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
116
110
  icon: 'mdi:speedometer-slow',
117
111
  title: 'Silêncio Cognitivo',
118
112
  highlight: true,
119
- description: 'Acima das 400-500 WPM, a sua voz interior cala-se não consegue acompanhar. Deixa de "ouvir" o que lê e começa a "ver" puros significados e conceitos. Este é o estado de flow definitivo.',
113
+ description: 'Acima das 400-500 WPM, a sua voz interior cala-se - não consegue acompanhar. Deixa de "ouvir" o que lê e começa a "ver" puros significados e conceitos. Este é o estado de flow definitivo.',
120
114
  },
121
115
  {
122
116
  icon: 'mdi:brain',
@@ -138,7 +132,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
138
132
  {
139
133
  title: 'Nível 2: Barreira do Som (400 a 500 WPM)',
140
134
  highlight: true,
141
- description: 'É aqui que a magia acontece. Sentirá desconforto. Não abrande quando perder uma palavra o seu cérebro aprenderá a preencher as lacunas pelo contexto.',
135
+ description: 'É aqui que a magia acontece. Sentirá desconforto. Não abrande quando perder uma palavra - o seu cérebro aprenderá a preencher as lacunas pelo contexto.',
142
136
  points: ['A subvocalização desaparece', 'Estado de flow mental', 'Duplique a sua velocidade base'],
143
137
  },
144
138
  {
@@ -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';
@@ -9,11 +10,11 @@ const faqData = [
9
10
  },
10
11
  {
11
12
  question: 'Снижает ли быстрое чтение понимание текста?',
12
- answer: 'Это зависит от навыка. На умеренных скоростях (350500 слов в минуту) многие пользователи отмечают более высокую концентрацию за счет устранения субвокализации (внутреннего проговаривания). На экстремальных скоростях (800+ слов в минуту) усвоение может снизиться без предварительной практики.',
13
+ answer: 'Это зависит от навыка. На умеренных скоростях (350-500 слов в минуту) многие пользователи отмечают более высокую концентрацию за счет устранения субвокализации (внутреннего проговаривания). На экстремальных скоростях (800+ слов в минуту) усвоение может снизиться без предварительной практики.',
13
14
  },
14
15
  {
15
16
  question: 'Какова средняя скорость чтения?',
16
- answer: 'Средний взрослый человек читает со скоростью от 200 до 250 слов в минуту. С помощью RSVP-ридера и некоторой практики удвоение этой скорости (400500 слов в минуту) при сохранении отличного понимания является обычным делом.',
17
+ answer: 'Средний взрослый человек читает со скоростью от 200 до 250 слов в минуту. С помощью RSVP-ридера и некоторой практики удвоение этой скорости (400-500 слов в минуту) при сохранении отличного понимания является обычным делом.',
17
18
  },
18
19
  {
19
20
  question: 'Вызывает ли RSVP напряжение глаз?',
@@ -75,32 +76,25 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
75
76
  title: 'RSVP Speed Reader',
76
77
  description: 'Тренируйте скорость чтения до 1000 слов в минуту. Технология RSVP с оптимальным выравниванием фокусной точки. Удвойте свою интеллектуальную продуктивность.',
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: 'Формула-1 в чтении: разблокируйте свою ментальную пропускную способность' },
93
87
  {
94
88
  type: 'paragraph',
95
- html: 'Что, если чтение биомеханически является пустой тратой времени? Ваш мозг это суперкомпьютер, ограниченный аналоговым соединением: вашими глазами. <strong>RSVP-ридер</strong> устраняет это узкое место, представляя слова точно в фокусной точке, где ваш разум обрабатывает их быстрее всего.',
89
+ html: 'Что, если чтение биомеханически является пустой тратой времени? Ваш мозг - это суперкомпьютер, ограниченный аналоговым соединением: вашими глазами. <strong>RSVP-ридер</strong> устраняет это узкое место, представляя слова точно в фокусной точке, где ваш разум обрабатывает их быстрее всего.',
96
90
  },
97
91
  {
98
92
  type: 'paragraph',
99
- html: 'Традиционное чтение неэффективный процесс. Ваши глаза работают не как сканер, а как камера в режиме серийной съемки: остановка, фокус, прыжок. Этот прыжок, называемый <strong>саккадой</strong>, означает, что вы тратите большую часть времени чтения просто на движение глаз, а не на поглощение информации.',
93
+ html: 'Традиционное чтение - неэффективный процесс. Ваши глаза работают не как сканер, а как камера в режиме серийной съемки: остановка, фокус, прыжок. Этот прыжок, называемый <strong>саккадой</strong>, означает, что вы тратите большую часть времени чтения просто на движение глаз, а не на поглощение информации.',
100
94
  },
101
95
  {
102
96
  type: 'tip',
103
- html: '«Чтение по методу RSVP это не просто быстрое чтение. Это устранение механического трения между текстом и вашим мозгом».',
97
+ html: '"Чтение по методу RSVP - это не просто быстрое чтение. Это устранение механического трения между текстом и вашим мозгом".',
104
98
  },
105
99
  { type: 'title', level: 3, text: 'Наука инъекции данных' },
106
100
  {
@@ -116,7 +110,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
116
110
  icon: 'mdi:speedometer-slow',
117
111
  title: 'Когнитивная тишина',
118
112
  highlight: true,
119
- description: 'На скорости выше 400500 слов в минуту ваш внутренний голос замолкает он не поспевает. Вы перестаете «слышать» то, что читаете, и начинаете «видеть» голые смыслы и концепции. Это идеальное состояние потока.',
113
+ description: 'На скорости выше 400-500 слов в минуту ваш внутренний голос замолкает - он не поспевает. Вы перестаете "слышать" то, что читаете, и начинаете "видеть" голые смыслы и концепции. Это идеальное состояние потока.',
120
114
  },
121
115
  {
122
116
  icon: 'mdi:brain',
@@ -131,14 +125,14 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
131
125
  columns: 3,
132
126
  items: [
133
127
  {
134
- title: 'Уровень 1: Пробуждение (200300 слов в минуту)',
135
- description: 'Ваша обычная скорость чтения. Привыкните к интерфейсу. Расслабьте лицо и позвольте словам самим приходить к вам. Не пытайтесь их «захватить».',
128
+ title: 'Уровень 1: Пробуждение (от 200 до 300 слов в минуту)',
129
+ description: 'Ваша обычная скорость чтения. Привыкните к интерфейсу. Расслабьте лицо и позвольте словам самим приходить к вам. Не пытайтесь их "захватить".',
136
130
  points: ['Идеально для новичков', 'Ознакомление с ORP', 'Нет напряжения глаз'],
137
131
  },
138
132
  {
139
- title: 'Уровень 2: Звуковой барьер (400500 слов в минуту)',
133
+ title: 'Уровень 2: Звуковой барьер (от 400 до 500 слов в минуту)',
140
134
  highlight: true,
141
- description: 'Здесь происходит магия. Вы почувствуете дискомфорт. Не замедляйтесь, если пропустите слово ваш мозг научится восполнять пробелы из контекста.',
135
+ description: 'Здесь происходит магия. Вы почувствуете дискомфорт. Не замедляйтесь, если пропустите слово - ваш мозг научится восполнять пробелы из контекста.',
142
136
  points: ['Субвокализация исчезает', 'Состояние ментального потока', 'Удвойте свою базовую скорость'],
143
137
  },
144
138
  {
@@ -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: 'Träna din läshastighet upp till 1000 ord per minut. RSVP-teknik med optimal fokuspunktinriktning. Fördubbla din intellektuella produktivitet.',
77
78
  ui,
78
- faqTitle: 'Vanliga frågor',
79
+
79
80
  faq: faqData,
80
81
  howTo: howToData,
81
- bibliographyTitle: 'Referenser',
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: 'Läsningens Formel 1: Lås upp din mentala bandbredd' },
@@ -116,7 +110,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
116
110
  icon: 'mdi:speedometer-slow',
117
111
  title: 'Kognitiv tystnad',
118
112
  highlight: true,
119
- description: 'Över 400-500 WPM tystnar din inre röst den hinner inte med. Du slutar "höra" det du läser och börjar "se" rena betydelser och koncept. Detta är det ultimata flow-tillståndet.',
113
+ description: 'Över 400-500 WPM tystnar din inre röst - den hinner inte med. Du slutar "höra" det du läser och börjar "se" rena betydelser och koncept. Detta är det ultimata flow-tillståndet.',
120
114
  },
121
115
  {
122
116
  icon: 'mdi:brain',
@@ -138,7 +132,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
138
132
  {
139
133
  title: 'Nivå 2: Ljudvallen (400 till 500 WPM)',
140
134
  highlight: true,
141
- description: 'Det är här magin händer. Du kommer att känna obehag. Sänk inte farten när du missar ett ord din hjärna kommer att lära sig att fylla i luckor från sammanhanget.',
135
+ description: 'Det är här magin händer. Du kommer att känna obehag. Sänk inte farten när du missar ett ord - din hjärna kommer att lära sig att fylla i luckor från sammanhanget.',
142
136
  points: ['Subvokalisering försvinner', 'Mentalt flow-tillstånd', 'Fördubbla din bashastighet'],
143
137
  },
144
138
  {
@@ -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: 'Hızlı Okuma RSVP Speed Reader',
76
77
  description: 'Okuma hızınızı dakikada 1000 kelimeye kadar eğitin. Optimal odak noktası hizalamalı RSVP teknolojisi. Entelektüel üretkenliğinizi ikiye katlayın.',
77
78
  ui,
78
- faqTitle: 'Sıkça Sorulan Sorular',
79
+
79
80
  faq: faqData,
80
81
  howTo: howToData,
81
- bibliographyTitle: 'Kaynaklar',
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: 'Okumanın Formula 1\'i: Zihinsel Bant Genişliğinizin Kilidini Açın' },
@@ -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 技术。使您的智力生产力翻倍。',
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: '阅读的方程式:释放您的精神带宽' },
@@ -100,7 +94,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
100
94
  },
101
95
  {
102
96
  type: 'tip',
103
- html: 'RSVP 阅读不仅仅是读得更快。它是消除了文本和大脑之间的机械摩擦。”',
97
+ html: '"RSVP 阅读不仅仅是读得更快。它是消除了文本和大脑之间的机械摩擦。"',
104
98
  },
105
99
  { type: 'title', level: 3, text: '数据注入背后的科学' },
106
100
  {
@@ -116,7 +110,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
116
110
  icon: 'mdi:speedometer-slow',
117
111
  title: '认知静默',
118
112
  highlight: true,
119
- description: '当速度高于 400-500 WPM 时,您的内心声音会保持安静——它跟不上速度。您不再“听到”您所读的内容,而是开始“看到”纯粹的含义和概念。这是终极的心流状态。',
113
+ description: '当速度高于 400-500 WPM 时,您的内心声音会保持安静-它跟不上速度。您不再"听到"您所读的内容,而是开始"看到"纯粹的含义和概念。这是终极的心流状态。',
120
114
  },
121
115
  {
122
116
  icon: 'mdi:brain',
@@ -132,13 +126,13 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
132
126
  items: [
133
127
  {
134
128
  title: '级别 1:觉醒 (200 到 300 WPM)',
135
- description: '您的正常阅读速度。习惯界面。放松脸部,让单词呈现在您面前。不要试图“捕捉”它们。',
129
+ description: '您的正常阅读速度。习惯界面。放松脸部,让单词呈现在您面前。不要试图"捕捉"它们。',
136
130
  points: ['适合初学者', '熟悉 ORP', '无眼部疲劳'],
137
131
  },
138
132
  {
139
133
  title: '级别 2:音障 (400 到 500 WPM)',
140
134
  highlight: true,
141
- description: '这就是奇迹发生的地方。您会感到不适。错过单词时不要慢下来——您的大脑会学会根据上下文填补空白。',
135
+ description: '这就是奇迹发生的地方。您会感到不适。错过单词时不要慢下来-您的大脑会学会根据上下文填补空白。',
142
136
  points: ['默读消失', '精神心流状态', '两倍基础速度'],
143
137
  },
144
138
  {
@@ -9,6 +9,7 @@ interface Props {
9
9
 
10
10
  const { locale = 'es' } = Astro.props;
11
11
  const content = await speedReader.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 { textPixelCalculator } 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 textPixelCalculator.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,6 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ { name: 'W3C: CSS Text Module Level 3', url: 'https://www.w3.org/TR/css-text-3/' },
5
+ { name: 'Google Fonts: Understanding variable fonts', url: 'https://fonts.google.com/knowledge/glossary/variable_fonts' },
6
+ ];
@@ -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 { TextPixelCalculatorUI } from '../ui';
@@ -29,7 +30,7 @@ const howToData = [
29
30
  { name: 'Text eingeben', text: 'Geben Sie den Text, den Sie messen möchten, in den Eingabebereich ein.' },
30
31
  { name: 'Schriftart konfigurieren', text: 'Legen Sie die Schriftfamilie, die Größe in Pixeln, das Gewicht und den Stil (kursiv) fest.' },
31
32
  { name: 'Ergebnis ablesen', text: 'Die Pixelbreite und die Zeichenanzahl werden in Echtzeit aktualisiert.' },
32
- { name: 'Wert kopieren', text: 'Klicken Sie auf Breite kopieren“, um die Pixelanzahl in die Zwischenablage zu speichern.' },
33
+ { name: 'Wert kopieren', text: 'Klicken Sie auf "Breite kopieren", um die Pixelanzahl in die Zwischenablage zu speichern.' },
33
34
  ];
34
35
 
35
36
  const faqSchema: WithContext<FAQPage> = {
@@ -80,14 +81,11 @@ export const content: ToolLocaleContent<TextPixelCalculatorUI> = {
80
81
  title: 'Text Pixelbreitenrechner',
81
82
  description: 'Berechnen Sie genau, wie breit ein beliebiger Text in Pixeln ist, basierend auf Schriftart, Größe und Stil. Kostenloses Tool für Designer und Entwickler.',
82
83
  ui,
83
- faqTitle: 'Häufig gestellte Fragen',
84
+
84
85
  faq: faqData,
85
86
  howTo: howToData,
86
- bibliographyTitle: 'Referenzen',
87
- bibliography: [
88
- { name: 'W3C: CSS Text Module Level 3', url: 'https://www.w3.org/TR/css-text-3/' },
89
- { name: 'Google Fonts: Understanding variable fonts', url: 'https://fonts.google.com/knowledge/glossary/variable_fonts' },
90
- ],
87
+
88
+ bibliography,
91
89
  schemas: [faqSchema, howToSchema, appSchema],
92
90
  seo: [
93
91
  { type: 'title', level: 2, text: 'Messen Sie die exakte Pixelbreite eines beliebigen Textes' },
@@ -98,7 +96,7 @@ export const content: ToolLocaleContent<TextPixelCalculatorUI> = {
98
96
  { type: 'title', level: 3, text: 'Warum das Zählen von Zeichen nicht ausreicht' },
99
97
  {
100
98
  type: 'paragraph',
101
- html: 'Moderne Schriftarten sind <strong>proportional</strong>: Jedes Zeichen hat eine andere Breite. Ein W kann dreimal mehr Platz einnehmen als ein i“. Die Anzahl der Zeichen sagt nichts über den tatsächlichen visuellen Raum aus, den der Text einnimmt.',
99
+ html: 'Moderne Schriftarten sind <strong>proportional</strong>: Jedes Zeichen hat eine andere Breite. Ein "W" kann dreimal mehr Platz einnehmen als ein "i". Die Anzahl der Zeichen sagt nichts über den tatsächlichen visuellen Raum aus, den der Text einnimmt.',
102
100
  },
103
101
  {
104
102
  type: 'list',
@@ -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 { TextPixelCalculatorUI } from '../ui';
@@ -80,14 +81,11 @@ export const content: ToolLocaleContent<TextPixelCalculatorUI> = {
80
81
  title: 'Text Pixel Width Calculator',
81
82
  description: 'Accurately calculate how wide any text is in pixels based on font, size and style. Free tool for designers and developers.',
82
83
  ui,
83
- faqTitle: 'Frequently Asked Questions',
84
+
84
85
  faq: faqData,
85
86
  howTo: howToData,
86
- bibliographyTitle: 'References',
87
- bibliography: [
88
- { name: 'W3C: CSS Text Module Level 3', url: 'https://www.w3.org/TR/css-text-3/' },
89
- { name: 'Google Fonts: Understanding variable fonts', url: 'https://fonts.google.com/knowledge/glossary/variable_fonts' },
90
- ],
87
+
88
+ bibliography,
91
89
  schemas: [faqSchema, howToSchema, appSchema],
92
90
  seo: [
93
91
  { type: 'title', level: 2, text: 'Measure the exact pixel width of any text' },
@@ -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 { TextPixelCalculatorUI } from '../ui';
@@ -80,14 +81,11 @@ export const content: ToolLocaleContent<TextPixelCalculatorUI> = {
80
81
  title: 'Calculadora de Ancho de Texto en Píxeles',
81
82
  description: 'Calcula con precisión cuánto ancho ocupa cualquier texto en píxeles según su tipografía, tamaño y estilo. Herramienta gratuita para diseñadores y desarrolladores.',
82
83
  ui,
83
- faqTitle: 'Preguntas Frecuentes',
84
+
84
85
  faq: faqData,
85
86
  howTo: howToData,
86
- bibliographyTitle: 'Referencias Técnicas',
87
- bibliography: [
88
- { name: 'W3C: Gestión de la tipografía y el renderizado de texto (CSS Text Level 3)', url: 'https://www.w3.org/TR/css-text-3/' },
89
- { name: 'Google Fonts: Entendiendo las fuentes variables', url: 'https://fonts.google.com/knowledge/glossary/variable_fonts' },
90
- ],
87
+
88
+ bibliography,
91
89
  schemas: [faqSchema, howToSchema, appSchema],
92
90
  seo: [
93
91
  { type: 'title', level: 2, text: 'Mide el ancho exacto de cualquier texto en píxeles' },