@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 { 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' },
@@ -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ą' },
@@ -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' },
@@ -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: 'Формула-1 в чтении: разблокируйте свою ментальную пропускную способность' },
@@ -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' },
@@ -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: '阅读的方程式:释放您的精神带宽' },
@@ -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 }} />}
@@ -31,7 +31,7 @@
31
31
  gap: 1rem;
32
32
  }
33
33
 
34
- :global(.theme-dark) .sr-root {
34
+ .theme-dark .sr-root {
35
35
  --sr-panel-bg: #0f172a;
36
36
  --sr-panel-border: #1e293b;
37
37
  --sr-field-bg: rgba(30, 41, 59, 0.5);
@@ -57,7 +57,7 @@
57
57
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
58
58
  }
59
59
 
60
- :global(.sr-stage-active) {
60
+ .sr-stage-active {
61
61
  transform: scale(1.02);
62
62
  border-color: rgba(79, 70, 229, 0.4);
63
63
  }
@@ -98,7 +98,7 @@
98
98
  transition: background 0.2s;
99
99
  }
100
100
 
101
- :global(.sr-led-active) {
101
+ .sr-led-active {
102
102
  background: var(--sr-led-active);
103
103
  animation: sr-pulse 1s ease-in-out infinite;
104
104
  }
@@ -227,12 +227,12 @@
227
227
  transform: scale(0.95);
228
228
  }
229
229
 
230
- :global(.sr-play-btn-active) {
230
+ .sr-play-btn-active {
231
231
  background: #1e293b;
232
232
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.3);
233
233
  }
234
234
 
235
- :global(.sr-play-btn-active):hover {
235
+ .sr-play-btn-active:hover {
236
236
  background: #0f172a;
237
237
  }
238
238
 
@@ -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';
@@ -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' },
@@ -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' },
@@ -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: 'Calculateur de Largeur de Texte en Pixels',
81
82
  description: 'Calculez avec précision l\'espace horizontal occupé par votre texte en pixels. Outil gratuit pour designers et développeurs.',
82
83
  ui,
83
- faqTitle: 'Questions Fréquentes',
84
+
84
85
  faq: faqData,
85
86
  howTo: howToData,
86
- bibliographyTitle: 'Références',
87
- bibliography: [
88
- { name: 'W3C : Module CSS Text niveau 3', url: 'https://www.w3.org/TR/css-text-3/' },
89
- { name: 'Google Fonts : Comprendre les polices 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: 'Mesurez la largeur exacte en pixels de n\'importe quel texte' },
@@ -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: 'Kalkulator Lebar Piksel Teks',
81
82
  description: 'Hitung secara akurat seberapa lebar teks apa pun dalam piksel berdasarkan font, ukuran, dan gaya. Alat gratis untuk desainer dan pengembang.',
82
83
  ui,
83
- faqTitle: 'Pertanyaan yang Sering Diajukan',
84
+
84
85
  faq: faqData,
85
86
  howTo: howToData,
86
- bibliographyTitle: 'Referensi',
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: 'Ukur lebar piksel yang tepat dari teks apa pun' },
@@ -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: 'Calcolatore di larghezza pixel del testo',
81
82
  description: 'Calcola accuratamente quanto è largo qualsiasi testo in pixel in base al carattere, alle dimensioni e allo stile. Strumento gratuito per designer e sviluppatori.',
82
83
  ui,
83
- faqTitle: 'Domande Frequenti',
84
+
84
85
  faq: faqData,
85
86
  howTo: howToData,
86
- bibliographyTitle: 'Riferimenti',
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: 'Misura l\'esatta larghezza in pixel di qualsiasi testo' },
@@ -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: 'テキストピクセル幅計算機',
81
82
  description: 'フォント、サイズ、スタイルに基づいて、テキストがピクセル単位でどれくらいの幅になるかを正確に計算します。デザイナーや開発者のための無料ツールです。',
82
83
  ui,
83
- faqTitle: 'よくある質問',
84
+
84
85
  faq: faqData,
85
86
  howTo: howToData,
86
- bibliographyTitle: '参考文献',
87
- bibliography: [
88
- { name: 'W3C: CSS Text Module Level 3', url: 'https://www.w3.org/TR/css-text-3/' },
89
- { name: 'Google 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: 'あらゆるテキストの正確なピクセル幅を測定' },
@@ -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: '텍스트 픽셀 너비 계산기',
81
82
  description: '글꼴, 크기 및 스타일에 따라 텍스트가 픽셀 단위로 얼마나 넓은지 정확하게 계산합니다. 디자이너와 개발자를 위한 무료 도구입니다.',
82
83
  ui,
83
- faqTitle: '자주 묻는 질문',
84
+
84
85
  faq: faqData,
85
86
  howTo: howToData,
86
- bibliographyTitle: '참고 문헌',
87
- bibliography: [
88
- { name: 'W3C: CSS Text Module Level 3', url: 'https://www.w3.org/TR/css-text-3/' },
89
- { name: 'Google 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: '모든 텍스트의 정확한 픽셀 너비 측정' },
@@ -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: 'Tekst Pixelbreedte Calculator',
81
82
  description: 'Bereken nauwkeurig hoe breed een tekst in pixels is op basis van lettertype, grootte en stijl. Gratis tool voor ontwerpers en ontwikkelaars.',
82
83
  ui,
83
- faqTitle: 'Veelgestelde Vragen',
84
+
84
85
  faq: faqData,
85
86
  howTo: howToData,
86
- bibliographyTitle: 'Referenties',
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: 'Meet de exacte pixelbreedte van elke tekst' },
@@ -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: 'Kalkulator szerokości pikseli tekstu',
81
82
  description: 'Dokładnie oblicz, jak szeroki jest dowolny tekst w pikselach na podstawie czcionki, rozmiaru i stylu. Darmowe narzędzie dla projektantów i programistów.',
82
83
  ui,
83
- faqTitle: 'Często zadawane pytania',
84
+
84
85
  faq: faqData,
85
86
  howTo: howToData,
86
- bibliographyTitle: 'Źródła',
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: 'Zmierz dokładną szerokość dowolnego tekstu w pikselach' },
@@ -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 Largura de Píxeis de Texto',
81
82
  description: 'Calcule com precisão a largura de qualquer texto em píxeis com base na fonte, tamanho e estilo. Ferramenta gratuita para designers e programadores.',
82
83
  ui,
83
- faqTitle: 'Perguntas Frequentes',
84
+
84
85
  faq: faqData,
85
86
  howTo: howToData,
86
- bibliographyTitle: 'Referências',
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: 'Meça a largura exata em píxeis de qualquer texto' },
@@ -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: 'Калькулятор ширины текста в пикселях',
81
82
  description: 'Точно рассчитайте ширину любого текста в пикселях на основе шрифта, размера и стиля. Бесплатный инструмент для дизайнеров и разработчиков.',
82
83
  ui,
83
- faqTitle: 'Часто задаваемые вопросы',
84
+
84
85
  faq: faqData,
85
86
  howTo: howToData,
86
- bibliographyTitle: 'Источники',
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: 'Измерьте точную ширину любого текста в пикселях' },
@@ -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 Beräknare',
81
82
  description: 'Beräkna exakt hur bred en text är i pixlar baserat på typsnitt, storlek och stil. Gratis verktyg för designers och utvecklare.',
82
83
  ui,
83
- faqTitle: 'Vanliga frågor',
84
+
84
85
  faq: faqData,
85
86
  howTo: howToData,
86
- bibliographyTitle: 'Referenser',
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: 'Mät den exakta pixelbredden för valfri text' },