@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 { EmailListCleanerUI } from '../ui';
@@ -76,15 +77,11 @@ export const content: ToolLocaleContent<EmailListCleanerUI> = {
76
77
  title: 'E postlisterensare',
77
78
  description: 'Rensa e-postlistor gratis. Ta bort dubbletter, fixa mellanslag och validera format på några sekunder. Spara kostnader och förbättra din leveransbarhet.',
78
79
  ui,
79
- faqTitle: 'Vanliga frågor',
80
+
80
81
  faq: faqData,
81
82
  howTo: howToData,
82
- bibliographyTitle: 'Referenser',
83
- bibliography: [
84
- { name: 'RFC 5322: Internet Message Format', url: 'https://datatracker.ietf.org/doc/html/rfc5322' },
85
- { name: 'Google: Riktlinjer för e-postavsändare', url: 'https://support.google.com/a/answer/81126' },
86
- { name: 'Wikipedia: E-postspam', url: 'https://sv.wikipedia.org/wiki/Skräppost' },
87
- ],
83
+
84
+ bibliography,
88
85
  schemas: [faqSchema, howToSchema, appSchema],
89
86
  seo: [
90
87
  { type: 'title', level: 2, text: 'Varför är det nödvändigt att använda en e-postlisterensare?' },
@@ -95,7 +92,7 @@ export const content: ToolLocaleContent<EmailListCleanerUI> = {
95
92
  { type: 'title', level: 3, text: 'Riskerna med en smutsig e-postlista' },
96
93
  {
97
94
  type: 'paragraph',
98
- html: 'Att behålla en orensad databas kan få allvarliga konsekvenser. Att skicka e-post till adresser som inte existerar genererar en "hard bounce". Om denna procentsats överstiger 23 % kommer spamfilter att börja granska din domän noggrant och du kan hamna på en internationell svartlista.',
95
+ html: 'Att behålla en orensad databas kan få allvarliga konsekvenser. Att skicka e-post till adresser som inte existerar genererar en "hard bounce". Om denna procentsats överstiger 2-3 % kommer spamfilter att börja granska din domän noggrant och du kan hamna på en internationell svartlista.',
99
96
  },
100
97
  {
101
98
  type: 'tip',
@@ -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: 'E posta Listesi Temizleyici',
77
78
  description: 'E-posta listelerini ücretsiz temizleyin. Kopyaları kaldırın, boşlukları düzeltin ve saniyeler içinde formatları doğrulayın. Maliyetlerden tasarruf edin ve teslim edilebilirliğinizi artırır.',
78
79
  ui,
79
- faqTitle: 'Sıkça Sorulan Sorular',
80
+
80
81
  faq: faqData,
81
82
  howTo: howToData,
82
- bibliographyTitle: 'Kaynaklar',
83
- bibliography: [
84
- { name: 'RFC 5322: Internet Message Format', url: 'https://datatracker.ietf.org/doc/html/rfc5322' },
85
- { name: 'Google: E-posta gönderen yönergeleri', url: 'https://support.google.com/a/answer/81126' },
86
- { name: 'Vikipedi: E-posta spam', url: 'https://tr.wikipedia.org/wiki/E-posta_spam' },
87
- ],
83
+
84
+ bibliography,
88
85
  schemas: [faqSchema, howToSchema, appSchema],
89
86
  seo: [
90
87
  { type: 'title', level: 2, text: 'Neden bir e-posta listesi temizleyici kullanmak esastır?' },
@@ -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';
@@ -23,7 +24,7 @@ const faqData = [
23
24
 
24
25
  const howToData = [
25
26
  { name: '粘贴电子邮件', text: '复制您的电子邮件列表并将其粘贴到文本框中。可以使用换行、逗号或空格进行分隔。' },
26
- { name: '清洗列表', text: '点击“清洗列表”按钮开始验证和去重过程。' },
27
+ { name: '清洗列表', text: '点击"清洗列表"按钮开始验证和去重过程。' },
27
28
  { name: '查看结果', text: '检查显示原始邮件数与最终邮件数的统计信息,并在下方面板查阅清洗后的列表。' },
28
29
  { name: '复制或下载', text: '直接将结果复制到剪贴板,或下载为开箱即用的 .txt 文件。' },
29
30
  ];
@@ -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: '维基百科:垃圾邮件', url: 'https://zh.wikipedia.org/wiki/垃圾郵件' },
87
- ],
83
+
84
+ bibliography,
88
85
  schemas: [faqSchema, howToSchema, appSchema],
89
86
  seo: [
90
87
  { type: 'title', level: 2, text: '为什么使用邮件列表清洗工具至关重要?' },
@@ -92,10 +89,10 @@ export const content: ToolLocaleContent<EmailListCleanerUI> = {
92
89
  type: 'paragraph',
93
90
  html: '在数字营销领域,数据库的质量远比其规模重要。如果你拥有一个包含 50,000 个电子邮件的列表,但其中一半是不存在的地址、包含错别字或者是重复的,那么这个列表就毫无价值。这就是<strong>邮件列表清洗工具</strong>变得不可或缺的原因。',
94
91
  },
95
- { type: 'title', level: 3, text: '“脏”邮件列表的风险' },
92
+ { type: 'title', level: 3, text: '"脏"邮件列表的风险' },
96
93
  {
97
94
  type: 'paragraph',
98
- html: '维护一个未经清洗的数据库可能会导致严重的后果。向不存在的地址发送电子邮件会产生“硬退信”。如果这个比例超过 2-3%,垃圾邮件过滤器就会开始仔细审查您的域名,您最终可能会被列入国际黑名单。',
95
+ html: '维护一个未经清洗的数据库可能会导致严重的后果。向不存在的地址发送电子邮件会产生"硬退信"。如果这个比例超过 2-3%,垃圾邮件过滤器就会开始仔细审查您的域名,您最终可能会被列入国际黑名单。',
99
96
  },
100
97
  {
101
98
  type: 'tip',
@@ -9,6 +9,7 @@ interface Props {
9
9
 
10
10
  const { locale = 'es' } = Astro.props;
11
11
  const content = await emailListCleaner.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 { envBadgeSpain } 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 envBadgeSpain.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: 'DGT Climate Change and Traffic Regulations (Spanish)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
5
+ { name: 'Spanish Climate Change Act and Low Emission Zones (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
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 { EnvBadgeSpainUI } from '../ui';
@@ -113,14 +114,11 @@ export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
113
114
  title: 'Simulator für spanische Umweltplaketten',
114
115
  description: 'Finden Sie kostenlos heraus, welche spanische DGT-Umweltplakette für Ihr Auto, Motorrad oder Ihren Transporter für Umweltzonen (ZBE) in Spanien gilt.',
115
116
  ui,
116
- faqTitle: 'Häufig gestellte Fragen',
117
+
117
118
  faq: faqData,
118
119
  howTo: howToData,
119
- bibliographyTitle: 'Referenzen',
120
- bibliography: [
121
- { name: 'DGT-Vorschriften zu Klimawandel und Verkehr (Spanisch)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
122
- { name: 'Spanisches Klimaschutzgesetz und Umweltzonen (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
123
- ],
120
+
121
+ bibliography,
124
122
  schemas: [faqSchema, howToSchema, appSchema],
125
123
  seo: [
126
124
  { type: 'title', level: 2, text: 'Was ist die spanische DGT-Umweltplakette?' },
@@ -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 { EnvBadgeSpainUI } from '../ui';
@@ -113,14 +114,11 @@ export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
113
114
  title: 'Environmental Badge Simulator Spain',
114
115
  description: 'Find out for free which Spanish DGT environmental badge applies to your car, motorbike or van for Low Emission Zones (ZBE) in Spain.',
115
116
  ui,
116
- faqTitle: 'Frequently Asked Questions',
117
+
117
118
  faq: faqData,
118
119
  howTo: howToData,
119
- bibliographyTitle: 'References',
120
- bibliography: [
121
- { name: 'DGT Climate Change and Traffic Regulations (Spanish)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
122
- { name: 'Spanish Climate Change Act and Low Emission Zones (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
123
- ],
120
+
121
+ bibliography,
124
122
  schemas: [faqSchema, howToSchema, appSchema],
125
123
  seo: [
126
124
  { type: 'title', level: 2, text: 'What is the Spanish DGT environmental badge?' },
@@ -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 { EnvBadgeSpainUI } from '../ui';
@@ -113,14 +114,11 @@ export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
113
114
  title: 'Simulador de Etiqueta Ambiental DGT',
114
115
  description: 'Descubre gratis qué etiqueta medioambiental de la DGT le corresponde a tu coche, moto o furgoneta para las Zonas de Bajas Emisiones (ZBE) en España.',
115
116
  ui,
116
- faqTitle: 'Preguntas Frecuentes',
117
+
117
118
  faq: faqData,
118
119
  howTo: howToData,
119
- bibliographyTitle: 'Referencias',
120
- bibliography: [
121
- { name: 'Normativa sobre Cambio Climático y Tráfico (DGT)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
122
- { name: 'Ley de Cambio Climático y Zonas de Bajas Emisiones (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
123
- ],
120
+
121
+ bibliography,
124
122
  schemas: [faqSchema, howToSchema, appSchema],
125
123
  seo: [
126
124
  { type: 'title', level: 2, text: '¿Qué es el distintivo ambiental de la DGT?' },
@@ -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 { EnvBadgeSpainUI } from '../ui';
@@ -113,14 +114,11 @@ export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
113
114
  title: 'Simulateur de Vignette Environnementale Espagne',
114
115
  description: 'Découvrez gratuitement quelle vignette environnementale DGT espagnole correspond à votre voiture, moto ou camionnette pour les zones à faibles émissions (ZBE) en Espagne.',
115
116
  ui,
116
- faqTitle: 'Questions Fréquentes',
117
+
117
118
  faq: faqData,
118
119
  howTo: howToData,
119
- bibliographyTitle: 'Références',
120
- bibliography: [
121
- { name: 'Réglementation DGT sur le changement climatique et la circulation (espagnol)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
122
- { name: 'Loi espagnole sur le changement climatique et les zones à faibles émissions (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
123
- ],
120
+
121
+ bibliography,
124
122
  schemas: [faqSchema, howToSchema, appSchema],
125
123
  seo: [
126
124
  { type: 'title', level: 2, text: 'Qu\'est-ce que la vignette environnementale espagnole DGT ?' },
@@ -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 { EnvBadgeSpainUI } from '../ui';
@@ -113,14 +114,11 @@ export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
113
114
  title: 'Simulator Lencana Lingkungan Spanyol',
114
115
  description: 'Cari tahu secara gratis lencana lingkungan DGT Spanyol mana yang berlaku untuk mobil, sepeda motor, atau van Anda untuk Zona Emisi Rendah (ZBE) di Spanyol.',
115
116
  ui,
116
- faqTitle: 'Pertanyaan yang Sering Diajukan',
117
+
117
118
  faq: faqData,
118
119
  howTo: howToData,
119
- bibliographyTitle: 'Referensi',
120
- bibliography: [
121
- { name: 'Peraturan DGT tentang Perubahan Iklim dan Lalu Lintas (Spanyol)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
122
- { name: 'UU Perubahan Iklim Spanyol dan Zona Emisi Rendah (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
123
- ],
120
+
121
+ bibliography,
124
122
  schemas: [faqSchema, howToSchema, appSchema],
125
123
  seo: [
126
124
  { type: 'title', level: 2, text: 'Apa itu lencana lingkungan DGT Spanyol?' },
@@ -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 { EnvBadgeSpainUI } from '../ui';
@@ -113,14 +114,11 @@ export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
113
114
  title: 'Simulatore Bollino Ambientale Spagna',
114
115
  description: 'Scopri gratuitamente quale bollino ambientale spagnolo DGT si applica alla tua auto, motocicletta o furgone per le Zone a Basse Emissioni (ZBE) in Spagna.',
115
116
  ui,
116
- faqTitle: 'Domande Frequenti',
117
+
117
118
  faq: faqData,
118
119
  howTo: howToData,
119
- bibliographyTitle: 'Riferimenti',
120
- bibliography: [
121
- { name: 'Regolamenti DGT su Cambiamento Climatico e Traffico (Spagnolo)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
122
- { name: 'Legge spagnola sul cambiamento climatico e zone a basse emissioni (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
123
- ],
120
+
121
+ bibliography,
124
122
  schemas: [faqSchema, howToSchema, appSchema],
125
123
  seo: [
126
124
  { type: 'title', level: 2, text: 'Cos\'è il bollino ambientale spagnolo DGT?' },
@@ -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 { EnvBadgeSpainUI } from '../ui';
@@ -113,14 +114,11 @@ export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
113
114
  title: 'スペイン環境ラベル・シミュレーター',
114
115
  description: 'スペインの低排出ガスゾーン(ZBE)対策として、乗用車、バイク、バンに適用されるスペインDGT環境ラベルを無料で確認できます。',
115
116
  ui,
116
- faqTitle: 'よくある質問',
117
+
117
118
  faq: faqData,
118
119
  howTo: howToData,
119
- bibliographyTitle: '参考文献',
120
- bibliography: [
121
- { name: '気候変動と交通規制に関するDGTの規定(スペイン語)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
122
- { name: 'スペイン気候変動法と低排出ガスゾーン (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
123
- ],
120
+
121
+ bibliography,
124
122
  schemas: [faqSchema, howToSchema, appSchema],
125
123
  seo: [
126
124
  { type: 'title', level: 2, text: 'スペインDGT環境ラベルとは何ですか?' },
@@ -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 { EnvBadgeSpainUI } from '../ui';
@@ -113,14 +114,11 @@ export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
113
114
  title: '스페인 환경 라벨 시뮬레이터',
114
115
  description: '스페인 저배출 구역(ZBE) 진입을 위해 승용차, 오토바이 또는 승합차에 적용되는 스페인 DGT 환경 라벨을 무료로 확인하세요.',
115
116
  ui,
116
- faqTitle: '자주 묻는 질문',
117
+
117
118
  faq: faqData,
118
119
  howTo: howToData,
119
- bibliographyTitle: '참고 문헌',
120
- bibliography: [
121
- { name: '기후 변화 및 교통 규제에 관한 DGT 규정 (스페인어)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
122
- { name: '스페인 기후 변화법 및 저배출 구역 (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
123
- ],
120
+
121
+ bibliography,
124
122
  schemas: [faqSchema, howToSchema, appSchema],
125
123
  seo: [
126
124
  { type: 'title', level: 2, text: '스페인 DGT 환경 라벨이란 무엇인가요?' },
@@ -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 { EnvBadgeSpainUI } from '../ui';
@@ -113,14 +114,11 @@ export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
113
114
  title: 'Milieusticker Simulator Spanje',
114
115
  description: 'Ontdek gratis welke Spaanse DGT-milieusticker van toepassing is op uw auto, motor of bestelwagen voor Lage-Emissiezones (ZBE) in Spanje.',
115
116
  ui,
116
- faqTitle: 'Veelgestelde Vragen',
117
+
117
118
  faq: faqData,
118
119
  howTo: howToData,
119
- bibliographyTitle: 'Referenties',
120
- bibliography: [
121
- { name: 'DGT-regelgeving over klimaatverandering en verkeer (Spaans)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
122
- { name: 'Spaanse Klimaatwet en Lage-Emissiezones (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
123
- ],
120
+
121
+ bibliography,
124
122
  schemas: [faqSchema, howToSchema, appSchema],
125
123
  seo: [
126
124
  { type: 'title', level: 2, text: 'Wat is de Spaanse DGT-milieusticker?' },
@@ -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 { EnvBadgeSpainUI } from '../ui';
@@ -113,14 +114,11 @@ export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
113
114
  title: 'Symulator Hiszpańskiej Plakietki Środowiskowej',
114
115
  description: 'Dowiedz się za darmo, która hiszpańska plakietka środowiskowa DGT dotyczy Twojego samochodu, motocykla lub furgonetki w kontekście Stref Czystego Transportu (ZBE) w Hiszpanii.',
115
116
  ui,
116
- faqTitle: 'Często zadawane pytania',
117
+
117
118
  faq: faqData,
118
119
  howTo: howToData,
119
- bibliographyTitle: 'Źródła',
120
- bibliography: [
121
- { name: 'Przepisy DGT dotyczące zmian klimatycznych i ruchu drogowego (hiszp.)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
122
- { name: 'Hiszpańska ustawa o zmianie klimatu i Strefy Czystego Transportu (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
123
- ],
120
+
121
+ bibliography,
124
122
  schemas: [faqSchema, howToSchema, appSchema],
125
123
  seo: [
126
124
  { type: 'title', level: 2, text: 'Czym jest hiszpańska plakietka środowiskowa DGT?' },
@@ -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 { EnvBadgeSpainUI } from '../ui';
@@ -113,14 +114,11 @@ export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
113
114
  title: 'Simulador de Distintivo Ambiental Espanha',
114
115
  description: 'Descubra gratuitamente qual o distintivo ambiental espanhol da DGT que se aplica ao seu carro, mota ou carrinha para as Zonas de Baixas Emissões (ZBE) em Espanha.',
115
116
  ui,
116
- faqTitle: 'Perguntas Frequentes',
117
+
117
118
  faq: faqData,
118
119
  howTo: howToData,
119
- bibliographyTitle: 'Referências',
120
- bibliography: [
121
- { name: 'Regulamentos da DGT sobre Alterações Climáticas e Trânsito (Espanhol)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
122
- { name: 'Lei Espanhola das Alterações Climáticas e Zonas de Baixas Emissões (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
123
- ],
120
+
121
+ bibliography,
124
122
  schemas: [faqSchema, howToSchema, appSchema],
125
123
  seo: [
126
124
  { type: 'title', level: 2, text: 'O que é o distintivo ambiental espanhol da DGT?' },
@@ -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 { EnvBadgeSpainUI } from '../ui';
@@ -23,7 +24,7 @@ const faqData = [
23
24
 
24
25
  const howToData = [
25
26
  { name: 'Выберите тип транспортного средства', text: 'Выберите, является ли ваш транспорт легковым автомобилем/фургоном, мотоциклом или тяжелым транспортным средством. Каждая категория имеет свою логику классификации в соответствии с правилами дорожного движения Испании.' },
26
- { name: 'Выберите тип топлива или энергии', text: 'Электричество, подзаряжаемый гибрид, обычный гибрид, газ, бензин или дизельное топливо все это приводит к разным типам наклеек. Порог запаса хода для подзаряжаемых гибридов составляет 40 км.' },
27
+ { name: 'Выберите тип топлива или энергии', text: 'Электричество, подзаряжаемый гибрид, обычный гибрид, газ, бензин или дизельное топливо - все это приводит к разным типам наклеек. Порог запаса хода для подзаряжаемых гибридов составляет 40 км.' },
27
28
  { name: 'Введите год регистрации или стандарт Euro', text: 'Для автомобилей с двигателем внутреннего сгорания решающим фактором является стандарт Euro. Дата регистрации в техническом паспорте дает надежное приближение к стандарту.' },
28
29
  ];
29
30
 
@@ -82,20 +83,20 @@ const ui: EnvBadgeSpainUI = {
82
83
 
83
84
  resultTitle: 'Присвоенная наклейка',
84
85
 
85
- badge0Label: 'Наклейка «Ноль выбросов»',
86
+ badge0Label: 'Наклейка "Ноль выбросов"',
86
87
  badge0Letter: '0',
87
88
  badge0Sub: 'ВЫБРОСОВ',
88
89
  badge0Desc: 'Транспортные средства максимальной эффективности. Они пользуются неограниченным доступом в зоны с низким уровнем выбросов (ZBE) в Испании и широкими налоговыми льготами.',
89
90
 
90
- badgeEcoLabel: 'Наклейка «ECO»',
91
+ badgeEcoLabel: 'Наклейка "ECO"',
91
92
  badgeEcoLetter: 'ECO',
92
93
  badgeEcoDesc: 'Транспортные средства с низким уровнем выбросов, такие как гибриды и автомобили на газе. Позволяет въезжать в большинство ZBE и дает скидки на регулируемых парковках.',
93
94
 
94
- badgeCLabel: 'Наклейка «C»',
95
+ badgeCLabel: 'Наклейка "C"',
95
96
  badgeCLetter: 'C',
96
97
  badgeCDesc: 'Современные автомобили с двигателем внутреннего сгорания высокого стандарта Euro. Свободное движение, но с ограничениями на уличную парковку в определенных зонах ZBE.',
97
98
 
98
- badgeBLabel: 'Наклейка «B»',
99
+ badgeBLabel: 'Наклейка "B"',
99
100
  badgeBLetter: 'B',
100
101
  badgeBDesc: 'Более старые автомобили с двигателем внутреннего сгорания. Подпадают под более жесткие ограничения на въезд и парковку в испанских городах.',
101
102
 
@@ -113,29 +114,26 @@ export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
113
114
  title: 'Симулятор экологических наклеек Испании',
114
115
  description: 'Узнайте бесплатно, какая экологическая наклейка DGT Испании подходит для вашего автомобиля, мотоцикла или фургона для въезда в зоны с низким уровнем выбросов (ZBE) в Испании.',
115
116
  ui,
116
- faqTitle: 'Часто задаваемые вопросы',
117
+
117
118
  faq: faqData,
118
119
  howTo: howToData,
119
- bibliographyTitle: 'Источники',
120
- bibliography: [
121
- { name: 'Постановления DGT по изменению климата и дорожному движению (на испанском)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
122
- { name: 'Закон Испании об изменении климата и зонах с низким уровнем выбросов (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
123
- ],
120
+
121
+ bibliography,
124
122
  schemas: [faqSchema, howToSchema, appSchema],
125
123
  seo: [
126
124
  { type: 'title', level: 2, text: 'Что такое экологическая наклейка DGT Испании?' },
127
125
  {
128
126
  type: 'paragraph',
129
- html: '<strong>Экологическая наклейка DGT Испании</strong> (distintivo ambiental) это система классификации транспортных средств, введенная в Испании для предоставления преимуществ наименее загрязняющим автомобилям. Она в основном используется для контроля доступа в зоны с низким уровнем выбросов (ZBE) в испанских городах с населением более 50 000 человек.',
127
+ html: '<strong>Экологическая наклейка DGT Испании</strong> (distintivo ambiental) - это система классификации транспортных средств, введенная в Испании для предоставления преимуществ наименее загрязняющим автомобилям. Она в основном используется для контроля доступа в зоны с низким уровнем выбросов (ZBE) в испанских городах с населением более 50 000 человек.',
130
128
  },
131
129
  { type: 'title', level: 3, text: 'Типы наклеек и их преимущества в Испании' },
132
130
  {
133
131
  type: 'list',
134
132
  items: [
135
- '<strong>Наклейка «Ноль выбросов»:</strong> для чистых электромобилей, подзаряжаемых гибридов с запасом хода на электротяге более 40 км и водородных топливных элементов. Неограниченный доступ в ZBE и налоговые льготы.',
136
- '<strong>Наклейка «ECO»:</strong> обычные гибриды, автомобили на сжиженном или сжатом газе и подзаряжаемые гибриды с запасом хода менее 40 км. Широкий доступ в зоны ограничения движения и скидки на парковку.',
137
- '<strong>Наклейка «C»:</strong> бензиновые автомобили Euro 4 и позже, дизельные Euro 6. Свободное движение, но действуют ограничения на уличную парковку вблизи ZBE.',
138
- '<strong>Наклейка «B»:</strong> бензиновые автомобили Euro 3, дизельные Euro 4 или 5. Усиливающиеся ограничения и периодические запреты на въезд.',
133
+ '<strong>Наклейка "Ноль выбросов":</strong> для чистых электромобилей, подзаряжаемых гибридов с запасом хода на электротяге более 40 км и водородных топливных элементов. Неограниченный доступ в ZBE и налоговые льготы.',
134
+ '<strong>Наклейка "ECO":</strong> обычные гибриды, автомобили на сжиженном или сжатом газе и подзаряжаемые гибриды с запасом хода менее 40 км. Широкий доступ в зоны ограничения движения и скидки на парковку.',
135
+ '<strong>Наклейка "C":</strong> бензиновые автомобили Euro 4 и позже, дизельные Euro 6. Свободное движение, но действуют ограничения на уличную парковку вблизи ZBE.',
136
+ '<strong>Наклейка "B":</strong> бензиновые автомобили Euro 3, дизельные Euro 4 или 5. Усиливающиеся ограничения и периодические запреты на въезд.',
139
137
  '<strong>Без наклейки (категория A):</strong> старые или более загрязняющие транспортные средства, постепенно исключаемые из центров испанских городов с 2024 года.',
140
138
  ],
141
139
  },
@@ -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 { EnvBadgeSpainUI } from '../ui';
@@ -113,14 +114,11 @@ export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
113
114
  title: 'Miljödekalsimulator Spanien',
114
115
  description: 'Ta reda på gratis vilken spansk DGT-miljödekal som gäller för din bil, motorcykel eller skåpbil för lågutsläppszoner (ZBE) i Spanien.',
115
116
  ui,
116
- faqTitle: 'Vanliga frågor',
117
+
117
118
  faq: faqData,
118
119
  howTo: howToData,
119
- bibliographyTitle: 'Referenser',
120
- bibliography: [
121
- { name: 'DGT-föreskrifter om klimatförändringar och trafik (Spanska)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
122
- { name: 'Spansk klimatlag och lågutsläppszoner (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
123
- ],
120
+
121
+ bibliography,
124
122
  schemas: [faqSchema, howToSchema, appSchema],
125
123
  seo: [
126
124
  { type: 'title', level: 2, text: 'Vad är den spanska DGT-miljödekalen?' },
@@ -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 { EnvBadgeSpainUI } from '../ui';
@@ -113,14 +114,11 @@ export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
113
114
  title: 'İspanya Çevre Etiketi Simülatörü',
114
115
  description: 'İspanya\'daki Düşük Emisyon Bölgeleri (ZBE) için aracınızın, motosikletinizin veya kamyonetinizin hangi İspanyol DGT çevre etiketine sahip olduğunu ücretsiz öğrenin.',
115
116
  ui,
116
- faqTitle: 'Sıkça Sorulan Sorular',
117
+
117
118
  faq: faqData,
118
119
  howTo: howToData,
119
- bibliographyTitle: 'Kaynaklar',
120
- bibliography: [
121
- { name: 'İklim Değişikliği ve Trafik Düzenlemeleri Üzerine DGT (İspanyolca)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
122
- { name: 'İspanyol İklim Değişikliği Yasası ve Düşük Emisyon Bölgeleri (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
123
- ],
120
+
121
+ bibliography,
124
122
  schemas: [faqSchema, howToSchema, appSchema],
125
123
  seo: [
126
124
  { type: 'title', level: 2, text: 'İspanyol DGT çevre etiketi nedir?' },
@@ -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 { EnvBadgeSpainUI } from '../ui';
@@ -113,14 +114,11 @@ export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
113
114
  title: '西班牙环保标签模拟器',
114
115
  description: '免费查询适用于您的轿车、摩托车或面包车的西班牙 DGT 环保标签,以应对西班牙的低排放区 (ZBE)。',
115
116
  ui,
116
- faqTitle: '常见问题',
117
+
117
118
  faq: faqData,
118
119
  howTo: howToData,
119
- bibliographyTitle: '参考文献',
120
- bibliography: [
121
- { name: 'DGT 气候变化与交通法规(西班牙语)', url: 'https://www.dgt.es/export/sites/web-DGT/.galleries/downloads/muevete-con-seguridad/normas-de-trafico/MOV-gestion-trafico/2023/INSTRUCCION-recomendaciones-ZBE_fe.pdf' },
122
- { name: '西班牙气候变化法与低排放区 (BOE)', url: 'https://www.boe.es/buscar/act.php?id=BOE-A-2021-8447' },
123
- ],
120
+
121
+ bibliography,
124
122
  schemas: [faqSchema, howToSchema, appSchema],
125
123
  seo: [
126
124
  { type: 'title', level: 2, text: '什么是西班牙 DGT 环保标签?' },
@@ -9,6 +9,7 @@ interface Props {
9
9
 
10
10
  const { locale = 'es' } = Astro.props;
11
11
  const content = await envBadgeSpain.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 { morseBeacon } 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 morseBeacon.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: 'ITU-R M.1677-1 - International Morse Code', url: 'https://www.itu.int/dms_pubrec/itu-r/rec/m/R-REC-M.1677-1-200910-I!!PDF-E.pdf' },
5
+ { name: 'W3C MediaCapture Image - Torch', url: 'https://w3c.github.io/mediacapture-image/#torch' },
6
+ { name: 'Morse code - Wikipedia', url: 'https://en.wikipedia.org/wiki/Morse_code' },
7
+ ];