@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,14 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { driveDirectLink } 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 driveDirectLink.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: 'Download files from Google Drive (Google Workspace)', url: 'https://support.google.com/drive/answer/2423534' },
5
+ { name: 'Google Drive API: Download Files', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
6
+ ];
@@ -19,7 +19,7 @@
19
19
  margin: 0 auto;
20
20
  }
21
21
 
22
- :global(.theme-dark) .gdl-root {
22
+ .theme-dark .gdl-root {
23
23
  --gdl-card-bg: #1e293b;
24
24
  --gdl-card-border: #334155;
25
25
  --gdl-field-bg: #0f172a;
@@ -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 { DriveDirectLinkUI } from '../ui';
@@ -70,14 +71,11 @@ export const content: ToolLocaleContent<DriveDirectLinkUI> = {
70
71
  title: 'Google Drive Direktlink Generator',
71
72
  description: 'Konvertieren Sie ganz einfach jeden Google Drive-Freigabelink mit einem Klick in einen Direkt-Download-Link und umgehen Sie die Dateivorschau. Kostenloses Tool.',
72
73
  ui,
73
- faqTitle: 'Häufig gestellte Fragen',
74
+
74
75
  faq: faqData,
75
76
  howTo: howToData,
76
- bibliographyTitle: 'Referenzen',
77
- bibliography: [
78
- { name: 'Dateien von Google Drive herunterladen (Google Workspace)', url: 'https://support.google.com/drive/answer/2423534' },
79
- { name: 'Google Drive API: Dateien herunterladen', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
80
- ],
77
+
78
+ bibliography,
81
79
  schemas: [faqSchema, howToSchema, appSchema],
82
80
  seo: [
83
81
  { type: 'title', level: 2, text: 'Konvertieren Sie Google Drive-Freigabelinks in Direkt-Download-Links' },
@@ -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 { DriveDirectLinkUI } from '../ui';
@@ -70,14 +71,11 @@ export const content: ToolLocaleContent<DriveDirectLinkUI> = {
70
71
  title: 'Google Drive Direct Download Link Generator',
71
72
  description: 'Easily convert any Google Drive share link into a direct download link with one click, bypassing the file preview. Free tool.',
72
73
  ui,
73
- faqTitle: 'Frequently Asked Questions',
74
+
74
75
  faq: faqData,
75
76
  howTo: howToData,
76
- bibliographyTitle: 'References',
77
- bibliography: [
78
- { name: 'Download files from Google Drive (Google Workspace)', url: 'https://support.google.com/drive/answer/2423534' },
79
- { name: 'Google Drive API: Download Files', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
80
- ],
77
+
78
+ bibliography,
81
79
  schemas: [faqSchema, howToSchema, appSchema],
82
80
  seo: [
83
81
  { type: 'title', level: 2, text: 'Convert Google Drive share links to direct download links' },
@@ -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 { DriveDirectLinkUI } from '../ui';
@@ -70,14 +71,11 @@ export const content: ToolLocaleContent<DriveDirectLinkUI> = {
70
71
  title: 'Generador de Enlace de Descarga Directa para Google Drive',
71
72
  description: 'Convierte fácilmente cualquier enlace de compartir de Google Drive en un enlace de descarga directa en un solo clic, sin pasar por la vista previa del archivo, gratis.',
72
73
  ui,
73
- faqTitle: 'Preguntas Frecuentes',
74
+
74
75
  faq: faqData,
75
76
  howTo: howToData,
76
- bibliographyTitle: 'Referencias',
77
- bibliography: [
78
- { name: 'Descargar archivos de Google Drive (Google Workspace)', url: 'https://support.google.com/drive/answer/2423534' },
79
- { name: 'Google Drive API: Download Files', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
80
- ],
77
+
78
+ bibliography,
81
79
  schemas: [faqSchema, howToSchema, appSchema],
82
80
  seo: [
83
81
  { type: 'title', level: 2, text: 'Conversor de enlaces de Google Drive a descarga directa' },
@@ -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 { DriveDirectLinkUI } from '../ui';
@@ -70,14 +71,11 @@ export const content: ToolLocaleContent<DriveDirectLinkUI> = {
70
71
  title: 'Générateur de Lien de Téléchargement Direct Google Drive',
71
72
  description: 'Convertissez facilement n\'importe quel lien de partage Google Drive en un lien de téléchargement direct en un seul clic, sans passer par la prévisualisation du fichier.',
72
73
  ui,
73
- faqTitle: 'Questions Fréquentes',
74
+
74
75
  faq: faqData,
75
76
  howTo: howToData,
76
- bibliographyTitle: 'Références',
77
- bibliography: [
78
- { name: 'Télécharger des fichiers depuis Google Drive (Google Workspace)', url: 'https://support.google.com/drive/answer/2423534' },
79
- { name: 'Google Drive API : téléchargement de fichiers', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
80
- ],
77
+
78
+ bibliography,
81
79
  schemas: [faqSchema, howToSchema, appSchema],
82
80
  seo: [
83
81
  { type: 'title', level: 2, text: 'Convertir des liens Google Drive en liens de téléchargement direct' },
@@ -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 { DriveDirectLinkUI } from '../ui';
@@ -70,14 +71,11 @@ export const content: ToolLocaleContent<DriveDirectLinkUI> = {
70
71
  title: 'Pembuat Tautan Unduhan Langsung Google Drive',
71
72
  description: 'Konversi tautan bagikan Google Drive apa pun dengan mudah menjadi tautan unduhan langsung hanya dengan satu klik, tanpa melalui pratinjau berkas. Alat gratis.',
72
73
  ui,
73
- faqTitle: 'Pertanyaan yang Sering Diajukan',
74
+
74
75
  faq: faqData,
75
76
  howTo: howToData,
76
- bibliographyTitle: 'Referensi',
77
- bibliography: [
78
- { name: 'Unduh berkas dari Google Drive (Google Workspace)', url: 'https://support.google.com/drive/answer/2423534' },
79
- { name: 'Google Drive API: Unduh Berkas', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
80
- ],
77
+
78
+ bibliography,
81
79
  schemas: [faqSchema, howToSchema, appSchema],
82
80
  seo: [
83
81
  { type: 'title', level: 2, text: 'Konversi tautan bagikan Google Drive ke tautan unduhan langsung' },
@@ -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 { DriveDirectLinkUI } from '../ui';
@@ -70,14 +71,11 @@ export const content: ToolLocaleContent<DriveDirectLinkUI> = {
70
71
  title: 'Generatore di Link di Download Diretto Google Drive',
71
72
  description: 'Converti facilmente qualsiasi link di condivisione di Google Drive in un link di download diretto con un clic, saltando l\'anteprima del file. Strumento gratuito.',
72
73
  ui,
73
- faqTitle: 'Domande Frequenti',
74
+
74
75
  faq: faqData,
75
76
  howTo: howToData,
76
- bibliographyTitle: 'Riferimenti',
77
- bibliography: [
78
- { name: 'Scaricare file da Google Drive (Google Workspace)', url: 'https://support.google.com/drive/answer/2423534' },
79
- { name: 'Google Drive API: Scaricare file', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
80
- ],
77
+
78
+ bibliography,
81
79
  schemas: [faqSchema, howToSchema, appSchema],
82
80
  seo: [
83
81
  { type: 'title', level: 2, text: 'Converti i link di condivisione di Google Drive in link di download diretto' },
@@ -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 { DriveDirectLinkUI } from '../ui';
@@ -70,14 +71,11 @@ export const content: ToolLocaleContent<DriveDirectLinkUI> = {
70
71
  title: 'Googleドライブ直通ダウンロードリンク・ジェネレーター',
71
72
  description: 'Googleドライブの共有リンクをワンクリックで直通ダウンロードリンクに変換し、プレビューをスキップします。無料ツール。',
72
73
  ui,
73
- faqTitle: 'よくある質問',
74
+
74
75
  faq: faqData,
75
76
  howTo: howToData,
76
- bibliographyTitle: '参考文献',
77
- bibliography: [
78
- { name: 'Googleドライブからファイルをダウンロードする(Google Workspace)', url: 'https://support.google.com/drive/answer/2423534' },
79
- { name: 'Google Drive API: ファイルをダウンロードする', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
80
- ],
77
+
78
+ bibliography,
81
79
  schemas: [faqSchema, howToSchema, appSchema],
82
80
  seo: [
83
81
  { type: 'title', level: 2, text: 'Googleドライブの共有リンクを直通ダウンロードリンクに変換' },
@@ -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 { DriveDirectLinkUI } from '../ui';
@@ -70,14 +71,11 @@ export const content: ToolLocaleContent<DriveDirectLinkUI> = {
70
71
  title: 'Google 드라이브 직통 다운로드 링크 생성기',
71
72
  description: 'Google 드라이브 공유 링크를 원클릭으로 직통 다운로드 링크로 쉽게 변환하여 미리보기를 건너뜁니다. 무료 도구.',
72
73
  ui,
73
- faqTitle: '자주 묻는 질문',
74
+
74
75
  faq: faqData,
75
76
  howTo: howToData,
76
- bibliographyTitle: '참고 문헌',
77
- bibliography: [
78
- { name: 'Google 드라이브에서 파일 다운로드(Google Workspace)', url: 'https://support.google.com/drive/answer/2423534' },
79
- { name: 'Google Drive API: 파일 다운로드', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
80
- ],
77
+
78
+ bibliography,
81
79
  schemas: [faqSchema, howToSchema, appSchema],
82
80
  seo: [
83
81
  { type: 'title', level: 2, text: 'Google 드라이브 공유 링크를 직통 다운로드 링크로 변환' },
@@ -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 { DriveDirectLinkUI } from '../ui';
@@ -70,14 +71,11 @@ export const content: ToolLocaleContent<DriveDirectLinkUI> = {
70
71
  title: 'Google Drive Directe Downloadlink Generator',
71
72
  description: 'Converteer eenvoudig elke Google Drive-deellink met één klik naar een directe downloadlink, waarbij u de bestandsweergave omzeilt. Gratis tool.',
72
73
  ui,
73
- faqTitle: 'Veelgestelde Vragen',
74
+
74
75
  faq: faqData,
75
76
  howTo: howToData,
76
- bibliographyTitle: 'Referenties',
77
- bibliography: [
78
- { name: 'Bestanden downloaden van Google Drive (Google Workspace)', url: 'https://support.google.com/drive/answer/2423534' },
79
- { name: 'Google Drive API: Bestanden downloaden', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
80
- ],
77
+
78
+ bibliography,
81
79
  schemas: [faqSchema, howToSchema, appSchema],
82
80
  seo: [
83
81
  { type: 'title', level: 2, text: 'Converteer Google Drive-deellinks naar directe downloadlinks' },
@@ -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 { DriveDirectLinkUI } from '../ui';
@@ -70,14 +71,11 @@ export const content: ToolLocaleContent<DriveDirectLinkUI> = {
70
71
  title: 'Generator Bezpośrednich Linków do Pobierania z Google Drive',
71
72
  description: 'Łatwo konwertuj dowolny link do udostępniania na Dysku Google na bezpośredni link do pobrania jednym kliknięciem, pomijając podgląd pliku. Darmowe narzędzie.',
72
73
  ui,
73
- faqTitle: 'Często zadawane pytania',
74
+
74
75
  faq: faqData,
75
76
  howTo: howToData,
76
- bibliographyTitle: 'Źródła',
77
- bibliography: [
78
- { name: 'Pobieranie plików z Dysku Google (Google Workspace)', url: 'https://support.google.com/drive/answer/2423534' },
79
- { name: 'Google Drive API: Pobieranie plików', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
80
- ],
77
+
78
+ bibliography,
81
79
  schemas: [faqSchema, howToSchema, appSchema],
82
80
  seo: [
83
81
  { type: 'title', level: 2, text: 'Konwertuj linki udostępniania Google Drive na bezpośrednie linki do pobrania' },
@@ -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 { DriveDirectLinkUI } from '../ui';
@@ -70,14 +71,11 @@ export const content: ToolLocaleContent<DriveDirectLinkUI> = {
70
71
  title: 'Gerador de Links de Transferência Direta do Google Drive',
71
72
  description: 'Converta facilmente qualquer link de partilha do Google Drive num link de transferência direta com um clique, ignorando a pré-visualização do ficheiro. Ferramenta gratuita.',
72
73
  ui,
73
- faqTitle: 'Perguntas Frequentes',
74
+
74
75
  faq: faqData,
75
76
  howTo: howToData,
76
- bibliographyTitle: 'Referências',
77
- bibliography: [
78
- { name: 'Transferir ficheiros do Google Drive (Google Workspace)', url: 'https://support.google.com/drive/answer/2423534' },
79
- { name: 'Google Drive API: Transferir Ficheiros', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
80
- ],
77
+
78
+ bibliography,
81
79
  schemas: [faqSchema, howToSchema, appSchema],
82
80
  seo: [
83
81
  { type: 'title', level: 2, text: 'Converter links de partilha do Google Drive em links de transferência direta' },
@@ -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 { DriveDirectLinkUI } from '../ui';
@@ -70,14 +71,11 @@ export const content: ToolLocaleContent<DriveDirectLinkUI> = {
70
71
  title: 'Генератор прямых ссылок на скачивание с Google Диска',
71
72
  description: 'Легко преобразуйте любую ссылку «Поделиться» с Google Диска в прямую ссылку на скачивание одним щелчком мыши, минуя предварительный просмотр файла. Бесплатный инструмент.',
72
73
  ui,
73
- faqTitle: 'Часто задаваемые вопросы',
74
+
74
75
  faq: faqData,
75
76
  howTo: howToData,
76
- bibliographyTitle: 'Источники',
77
- bibliography: [
78
- { name: 'Скачивание файлов с Google Диска (Google Workspace)', url: 'https://support.google.com/drive/answer/2423534' },
79
- { name: 'API Google Диска: скачивание файлов', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
80
- ],
77
+
78
+ bibliography,
81
79
  schemas: [faqSchema, howToSchema, appSchema],
82
80
  seo: [
83
81
  { type: 'title', level: 2, text: 'Преобразование ссылок Google Диска в прямые ссылки на скачивание' },
@@ -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 { DriveDirectLinkUI } from '../ui';
@@ -70,14 +71,11 @@ export const content: ToolLocaleContent<DriveDirectLinkUI> = {
70
71
  title: 'Google Drive direktlänkgenerator för nedladdning',
71
72
  description: 'Konvertera enkelt vilken Google Drive-delningslänk som helst till en direkt nedladdningslänk med ett klick, och kringgå filförhandsgranskningen. Gratis verktyg.',
72
73
  ui,
73
- faqTitle: 'Vanliga frågor',
74
+
74
75
  faq: faqData,
75
76
  howTo: howToData,
76
- bibliographyTitle: 'Referenser',
77
- bibliography: [
78
- { name: 'Ladda ner filer från Google Drive (Google Workspace)', url: 'https://support.google.com/drive/answer/2423534' },
79
- { name: 'Google Drive API: Ladda ner filer', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
80
- ],
77
+
78
+ bibliography,
81
79
  schemas: [faqSchema, howToSchema, appSchema],
82
80
  seo: [
83
81
  { type: 'title', level: 2, text: 'Konvertera Google Drive-delningslänkar till direkta nedladdningslänkar' },
@@ -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 { DriveDirectLinkUI } from '../ui';
@@ -70,14 +71,11 @@ export const content: ToolLocaleContent<DriveDirectLinkUI> = {
70
71
  title: 'Google Drive Doğrudan İndirme Bağlantısı Oluşturucu',
71
72
  description: 'Herhangi bir Google Drive paylaşım bağlantısını dosya önizlemesini atlayarak tek bir tıklamayla doğrudan indirme bağlantısına kolayca dönüştürün. Ücretsiz araç.',
72
73
  ui,
73
- faqTitle: 'Sıkça Sorulan Sorular',
74
+
74
75
  faq: faqData,
75
76
  howTo: howToData,
76
- bibliographyTitle: 'Kaynaklar',
77
- bibliography: [
78
- { name: "Google Drive'dan dosya indirme (Google Workspace)", url: 'https://support.google.com/drive/answer/2423534' },
79
- { name: 'Google Drive API: Dosyaları İndirme', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
80
- ],
77
+
78
+ bibliography,
81
79
  schemas: [faqSchema, howToSchema, appSchema],
82
80
  seo: [
83
81
  { type: 'title', level: 2, text: 'Google Drive paylaşım bağlantılarını doğrudan indirme bağlantılarına dönüştürü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 { DriveDirectLinkUI } from '../ui';
@@ -70,14 +71,11 @@ export const content: ToolLocaleContent<DriveDirectLinkUI> = {
70
71
  title: 'Google 云端硬盘直接下载链接生成器',
71
72
  description: '只需点击一下,即可轻松将任何 Google 云端硬盘共享链接转换为直接下载链接,跳过文件预览。免费工具。',
72
73
  ui,
73
- faqTitle: '常见问题',
74
+
74
75
  faq: faqData,
75
76
  howTo: howToData,
76
- bibliographyTitle: '参考文献',
77
- bibliography: [
78
- { name: '从 Google 云端硬盘下载文件 (Google Workspace)', url: 'https://support.google.com/drive/answer/2423534' },
79
- { name: 'Google Drive API:下载文件', url: 'https://developers.google.com/drive/api/guides/manage-downloads' },
80
- ],
77
+
78
+ bibliography,
81
79
  schemas: [faqSchema, howToSchema, appSchema],
82
80
  seo: [
83
81
  { type: 'title', level: 2, text: '将 Google 云端硬盘共享链接转换为直接下载链接' },
@@ -9,6 +9,7 @@ interface Props {
9
9
 
10
10
  const { locale = 'es' } = Astro.props;
11
11
  const content = await driveDirectLink.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 { emailListCleaner } 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 emailListCleaner.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,7 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ { name: 'RFC 5322: Internet Message Format', url: 'https://datatracker.ietf.org/doc/html/rfc5322' },
5
+ { name: 'Google: Email sender guidelines', url: 'https://support.google.com/a/answer/81126' },
6
+ { name: 'Wikipedia: Email spam', url: 'https://en.wikipedia.org/wiki/Email_spam' },
7
+ ];
@@ -20,7 +20,7 @@
20
20
  margin: 0 auto;
21
21
  }
22
22
 
23
- :global(.theme-dark) .elc-root {
23
+ .theme-dark .elc-root {
24
24
  --elc-card-bg: rgba(15, 23, 42, 0.6);
25
25
  --elc-card-border: rgba(255, 255, 255, 0.1);
26
26
  --elc-field-bg: #1e293b;
@@ -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 { EmailListCleanerUI } from '../ui';
@@ -76,15 +77,11 @@ export const content: ToolLocaleContent<EmailListCleanerUI> = {
76
77
  title: 'Email Listen Bereiniger',
77
78
  description: 'Bereinigen Sie E-Mail-Listen kostenlos. Entfernen Sie Duplikate, korrigieren Sie Leerzeichen und validieren Sie Formate in Sekunden. Sparen Sie Kosten und verbessern Sie Ihre Zustellbarkeit.',
78
79
  ui,
79
- faqTitle: 'Häufig gestellte Fragen',
80
+
80
81
  faq: faqData,
81
82
  howTo: howToData,
82
- bibliographyTitle: 'Referenzen',
83
- bibliography: [
84
- { name: 'RFC 5322: Internet Message Format', url: 'https://datatracker.ietf.org/doc/html/rfc5322' },
85
- { name: 'Google: Richtlinien für E-Mail-Absender', url: 'https://support.google.com/a/answer/81126' },
86
- { name: 'Wikipedia: E-Mail-Spam', url: 'https://de.wikipedia.org/wiki/E-Mail-Spam' },
87
- ],
83
+
84
+ bibliography,
88
85
  schemas: [faqSchema, howToSchema, appSchema],
89
86
  seo: [
90
87
  { type: 'title', level: 2, text: 'Warum ist die Verwendung eines E-Mail-Listen-Bereinigers unerlässlich?' },
@@ -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 { EmailListCleanerUI } from '../ui';
@@ -76,15 +77,11 @@ export const content: ToolLocaleContent<EmailListCleanerUI> = {
76
77
  title: 'Email List Cleaner',
77
78
  description: 'Clean email lists for free. Remove duplicates, fix whitespace and validate formats in seconds. Save costs and improve your deliverability.',
78
79
  ui,
79
- faqTitle: 'Frequently Asked Questions',
80
+
80
81
  faq: faqData,
81
82
  howTo: howToData,
82
- bibliographyTitle: 'References',
83
- bibliography: [
84
- { name: 'RFC 5322: Internet Message Format', url: 'https://datatracker.ietf.org/doc/html/rfc5322' },
85
- { name: 'Google: Email sender guidelines', url: 'https://support.google.com/a/answer/81126' },
86
- { name: 'Wikipedia: Email spam', url: 'https://en.wikipedia.org/wiki/Email_spam' },
87
- ],
83
+
84
+ bibliography,
88
85
  schemas: [faqSchema, howToSchema, appSchema],
89
86
  seo: [
90
87
  { type: 'title', level: 2, text: 'Why is using an email list cleaner essential?' },
@@ -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 { EmailListCleanerUI } from '../ui';
@@ -76,15 +77,11 @@ export const content: ToolLocaleContent<EmailListCleanerUI> = {
76
77
  title: 'Limpiador de Listas de Emails',
77
78
  description: 'Limpia listas de correos electrónicos gratis. Elimina duplicados, corrige espacios y valida formatos en segundos. Ahorra costes y mejora tu entregabilidad.',
78
79
  ui,
79
- faqTitle: 'Preguntas Frecuentes',
80
+
80
81
  faq: faqData,
81
82
  howTo: howToData,
82
- bibliographyTitle: 'Referencias',
83
- bibliography: [
84
- { name: 'RFC 5322: Internet Message Format', url: 'https://datatracker.ietf.org/doc/html/rfc5322' },
85
- { name: 'Google: Guía de entregabilidad de correo electrónico', url: 'https://support.google.com/a/answer/81126' },
86
- { name: 'Wikipedia: Correo electrónico no solicitado', url: 'https://es.wikipedia.org/wiki/Spam' },
87
- ],
83
+
84
+ bibliography,
88
85
  schemas: [faqSchema, howToSchema, appSchema],
89
86
  seo: [
90
87
  { type: 'title', level: 2, text: '¿Por qué es fundamental utilizar un limpiador de listas de emails?' },
@@ -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 { EmailListCleanerUI } from '../ui';
@@ -76,15 +77,11 @@ export const content: ToolLocaleContent<EmailListCleanerUI> = {
76
77
  title: 'Nettoyeur de Listes d\'E-mails',
77
78
  description: 'Nettoyez vos listes d\'e-mails gratuitement. Supprimez les doublons, corrigez les espaces et validez les formats en quelques secondes. Économisez et améliorez votre délivrabilité.',
78
79
  ui,
79
- faqTitle: 'Questions Fréquentes',
80
+
80
81
  faq: faqData,
81
82
  howTo: howToData,
82
- bibliographyTitle: 'Références',
83
- bibliography: [
84
- { name: 'RFC 5322 : Format des messages Internet', url: 'https://datatracker.ietf.org/doc/html/rfc5322' },
85
- { name: 'Google : Directives pour les expéditeurs d\'e-mails', url: 'https://support.google.com/a/answer/81126' },
86
- { name: 'Wikipedia : Spam (courrier électronique)', url: 'https://fr.wikipedia.org/wiki/Spam' },
87
- ],
83
+
84
+ bibliography,
88
85
  schemas: [faqSchema, howToSchema, appSchema],
89
86
  seo: [
90
87
  { type: 'title', level: 2, text: 'Pourquoi utiliser un nettoyeur de listes d\'e-mails est-il essentiel ?' },
@@ -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 { EmailListCleanerUI } from '../ui';
@@ -76,15 +77,11 @@ export const content: ToolLocaleContent<EmailListCleanerUI> = {
76
77
  title: 'Pembersih Daftar Email',
77
78
  description: 'Bersihkan daftar email secara gratis. Hapus duplikat, perbaiki spasi, dan validasi format dalam hitungan detik. Hemat biaya dan tingkatkan keterkiriman Anda.',
78
79
  ui,
79
- faqTitle: 'Pertanyaan yang Sering Diajukan',
80
+
80
81
  faq: faqData,
81
82
  howTo: howToData,
82
- bibliographyTitle: 'Referensi',
83
- bibliography: [
84
- { name: 'RFC 5322: Internet Message Format', url: 'https://datatracker.ietf.org/doc/html/rfc5322' },
85
- { name: 'Google: Pedoman pengirim email', url: 'https://support.google.com/a/answer/81126' },
86
- { name: 'Wikipedia: Email spam', url: 'https://id.wikipedia.org/wiki/Spam_elektronik' },
87
- ],
83
+
84
+ bibliography,
88
85
  schemas: [faqSchema, howToSchema, appSchema],
89
86
  seo: [
90
87
  { type: 'title', level: 2, text: 'Mengapa menggunakan pembersih daftar email sangat penting?' },
@@ -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 { EmailListCleanerUI } from '../ui';
@@ -76,15 +77,11 @@ export const content: ToolLocaleContent<EmailListCleanerUI> = {
76
77
  title: 'Pulitore di Liste Email',
77
78
  description: 'Pulisci le liste email gratuitamente. Rimuovi i duplicati, correggi gli spazi e convalida i formati in pochi secondi. Risparmia sui costi e migliora la tua deliverability.',
78
79
  ui,
79
- faqTitle: 'Domande Frequenti',
80
+
80
81
  faq: faqData,
81
82
  howTo: howToData,
82
- bibliographyTitle: 'Riferimenti',
83
- bibliography: [
84
- { name: 'RFC 5322: Internet Message Format', url: 'https://datatracker.ietf.org/doc/html/rfc5322' },
85
- { name: 'Google: Linee guida per i mittenti di email', url: 'https://support.google.com/a/answer/81126' },
86
- { name: 'Wikipedia: Spam (posta elettronica)', url: 'https://it.wikipedia.org/wiki/Spam' },
87
- ],
83
+
84
+ bibliography,
88
85
  schemas: [faqSchema, howToSchema, appSchema],
89
86
  seo: [
90
87
  { type: 'title', level: 2, text: 'Perché usare un pulitore di liste email è essenziale?' },
@@ -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 { EmailListCleanerUI } from '../ui';
@@ -76,15 +77,11 @@ export const content: ToolLocaleContent<EmailListCleanerUI> = {
76
77
  title: 'メールリスト・クリーナー',
77
78
  description: 'メールリストを無料でクリーニング。重複の削除、空白の修正、形式の検証を数秒で行います。コストを削減し、到達率を向上させます。',
78
79
  ui,
79
- faqTitle: 'よくある質問',
80
+
80
81
  faq: faqData,
81
82
  howTo: howToData,
82
- bibliographyTitle: '参考文献',
83
- bibliography: [
84
- { name: 'RFC 5322: Internet Message Format', url: 'https://datatracker.ietf.org/doc/html/rfc5322' },
85
- { name: 'Google: メール送信者のガイドライン', url: 'https://support.google.com/a/answer/81126' },
86
- { name: 'Wikipedia: メールスパム', url: 'https://ja.wikipedia.org/wiki/電子メールスパム' },
87
- ],
83
+
84
+ bibliography,
88
85
  schemas: [faqSchema, howToSchema, appSchema],
89
86
  seo: [
90
87
  { type: 'title', level: 2, text: 'メールリスト・クリーナーの使用が不可欠な理由は?' },