@jjlmoya/utils-finance 1.14.0 → 1.16.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 (225) hide show
  1. package/package.json +1 -1
  2. package/src/pages/[locale]/[slug].astro +29 -13
  3. package/src/tests/locale_completeness.test.ts +6 -16
  4. package/src/tests/shared-test-helpers.ts +56 -0
  5. package/src/tests/tool_exports.test.ts +34 -0
  6. package/src/tool/compoundInterest/bibliography.ts +20 -0
  7. package/src/tool/compoundInterest/compound-interest-calculator.css +315 -69
  8. package/src/tool/compoundInterest/entry.ts +2 -0
  9. package/src/tool/compoundInterest/i18n/de.ts +3 -16
  10. package/src/tool/compoundInterest/i18n/en.ts +3 -20
  11. package/src/tool/compoundInterest/i18n/es.ts +2 -20
  12. package/src/tool/compoundInterest/i18n/fr.ts +3 -20
  13. package/src/tool/compoundInterest/i18n/id.ts +3 -16
  14. package/src/tool/compoundInterest/i18n/it.ts +3 -16
  15. package/src/tool/compoundInterest/i18n/ja.ts +3 -16
  16. package/src/tool/compoundInterest/i18n/ko.ts +3 -16
  17. package/src/tool/compoundInterest/i18n/nl.ts +3 -16
  18. package/src/tool/compoundInterest/i18n/pl.ts +2 -16
  19. package/src/tool/compoundInterest/i18n/pt.ts +3 -16
  20. package/src/tool/compoundInterest/i18n/ru.ts +3 -16
  21. package/src/tool/compoundInterest/i18n/sv.ts +3 -16
  22. package/src/tool/compoundInterest/i18n/tr.ts +3 -16
  23. package/src/tool/compoundInterest/i18n/zh.ts +3 -16
  24. package/src/tool/compoundInterest/seo.astro +2 -1
  25. package/src/tool/courtFeeCalculator/bibliography.ts +16 -0
  26. package/src/tool/courtFeeCalculator/entry.ts +2 -0
  27. package/src/tool/courtFeeCalculator/i18n/de.ts +2 -18
  28. package/src/tool/courtFeeCalculator/i18n/en.ts +2 -22
  29. package/src/tool/courtFeeCalculator/i18n/es.ts +2 -22
  30. package/src/tool/courtFeeCalculator/i18n/fr.ts +2 -22
  31. package/src/tool/courtFeeCalculator/i18n/id.ts +2 -18
  32. package/src/tool/courtFeeCalculator/i18n/it.ts +2 -18
  33. package/src/tool/courtFeeCalculator/i18n/ja.ts +2 -18
  34. package/src/tool/courtFeeCalculator/i18n/ko.ts +2 -18
  35. package/src/tool/courtFeeCalculator/i18n/nl.ts +2 -18
  36. package/src/tool/courtFeeCalculator/i18n/pl.ts +2 -18
  37. package/src/tool/courtFeeCalculator/i18n/pt.ts +2 -18
  38. package/src/tool/courtFeeCalculator/i18n/ru.ts +2 -18
  39. package/src/tool/courtFeeCalculator/i18n/sv.ts +2 -18
  40. package/src/tool/courtFeeCalculator/i18n/tr.ts +2 -18
  41. package/src/tool/courtFeeCalculator/i18n/zh.ts +2 -18
  42. package/src/tool/courtFeeCalculator/seo.astro +2 -1
  43. package/src/tool/debtSnowball/bibliography.ts +12 -0
  44. package/src/tool/debtSnowball/entry.ts +2 -0
  45. package/src/tool/debtSnowball/i18n/de.ts +2 -14
  46. package/src/tool/debtSnowball/i18n/en.ts +2 -14
  47. package/src/tool/debtSnowball/i18n/es.ts +2 -14
  48. package/src/tool/debtSnowball/i18n/fr.ts +2 -14
  49. package/src/tool/debtSnowball/i18n/id.ts +2 -14
  50. package/src/tool/debtSnowball/i18n/it.ts +2 -14
  51. package/src/tool/debtSnowball/i18n/ja.ts +2 -14
  52. package/src/tool/debtSnowball/i18n/ko.ts +2 -14
  53. package/src/tool/debtSnowball/i18n/nl.ts +2 -14
  54. package/src/tool/debtSnowball/i18n/pl.ts +2 -14
  55. package/src/tool/debtSnowball/i18n/pt.ts +2 -14
  56. package/src/tool/debtSnowball/i18n/ru.ts +2 -14
  57. package/src/tool/debtSnowball/i18n/sv.ts +2 -14
  58. package/src/tool/debtSnowball/i18n/tr.ts +2 -14
  59. package/src/tool/debtSnowball/i18n/zh.ts +2 -14
  60. package/src/tool/debtSnowball/seo.astro +2 -1
  61. package/src/tool/fireCalculator/bibliography.ts +20 -0
  62. package/src/tool/fireCalculator/entry.ts +2 -0
  63. package/src/tool/fireCalculator/i18n/de.ts +2 -22
  64. package/src/tool/fireCalculator/i18n/en.ts +2 -22
  65. package/src/tool/fireCalculator/i18n/es.ts +2 -22
  66. package/src/tool/fireCalculator/i18n/fr.ts +2 -22
  67. package/src/tool/fireCalculator/i18n/id.ts +2 -22
  68. package/src/tool/fireCalculator/i18n/it.ts +2 -22
  69. package/src/tool/fireCalculator/i18n/ja.ts +2 -22
  70. package/src/tool/fireCalculator/i18n/ko.ts +2 -22
  71. package/src/tool/fireCalculator/i18n/nl.ts +2 -22
  72. package/src/tool/fireCalculator/i18n/pl.ts +2 -22
  73. package/src/tool/fireCalculator/i18n/pt.ts +2 -22
  74. package/src/tool/fireCalculator/i18n/ru.ts +2 -22
  75. package/src/tool/fireCalculator/i18n/sv.ts +2 -22
  76. package/src/tool/fireCalculator/i18n/tr.ts +2 -22
  77. package/src/tool/fireCalculator/i18n/zh.ts +2 -22
  78. package/src/tool/fireCalculator/seo.astro +2 -1
  79. package/src/tool/ibanBicSwiftConverter/bibliography.ts +12 -0
  80. package/src/tool/ibanBicSwiftConverter/entry.ts +2 -0
  81. package/src/tool/ibanBicSwiftConverter/i18n/de.ts +2 -14
  82. package/src/tool/ibanBicSwiftConverter/i18n/en.ts +2 -18
  83. package/src/tool/ibanBicSwiftConverter/i18n/es.ts +2 -18
  84. package/src/tool/ibanBicSwiftConverter/i18n/fr.ts +2 -18
  85. package/src/tool/ibanBicSwiftConverter/i18n/id.ts +2 -14
  86. package/src/tool/ibanBicSwiftConverter/i18n/it.ts +2 -14
  87. package/src/tool/ibanBicSwiftConverter/i18n/ja.ts +2 -14
  88. package/src/tool/ibanBicSwiftConverter/i18n/ko.ts +2 -14
  89. package/src/tool/ibanBicSwiftConverter/i18n/nl.ts +2 -14
  90. package/src/tool/ibanBicSwiftConverter/i18n/pl.ts +2 -14
  91. package/src/tool/ibanBicSwiftConverter/i18n/pt.ts +2 -14
  92. package/src/tool/ibanBicSwiftConverter/i18n/ru.ts +2 -14
  93. package/src/tool/ibanBicSwiftConverter/i18n/sv.ts +2 -14
  94. package/src/tool/ibanBicSwiftConverter/i18n/tr.ts +2 -14
  95. package/src/tool/ibanBicSwiftConverter/i18n/zh.ts +2 -14
  96. package/src/tool/ibanBicSwiftConverter/seo.astro +2 -1
  97. package/src/tool/inflation/bibliography.ts +20 -0
  98. package/src/tool/inflation/entry.ts +2 -0
  99. package/src/tool/inflation/i18n/de.ts +3 -16
  100. package/src/tool/inflation/i18n/en.ts +3 -20
  101. package/src/tool/inflation/i18n/es.ts +3 -20
  102. package/src/tool/inflation/i18n/fr.ts +3 -20
  103. package/src/tool/inflation/i18n/id.ts +3 -16
  104. package/src/tool/inflation/i18n/it.ts +3 -16
  105. package/src/tool/inflation/i18n/ja.ts +3 -16
  106. package/src/tool/inflation/i18n/ko.ts +3 -16
  107. package/src/tool/inflation/i18n/nl.ts +3 -16
  108. package/src/tool/inflation/i18n/pl.ts +3 -16
  109. package/src/tool/inflation/i18n/pt.ts +3 -16
  110. package/src/tool/inflation/i18n/ru.ts +3 -16
  111. package/src/tool/inflation/i18n/sv.ts +3 -16
  112. package/src/tool/inflation/i18n/tr.ts +3 -16
  113. package/src/tool/inflation/i18n/zh.ts +3 -16
  114. package/src/tool/inflation/seo.astro +2 -1
  115. package/src/tool/lateInterest/bibliography.ts +16 -0
  116. package/src/tool/lateInterest/entry.ts +2 -0
  117. package/src/tool/lateInterest/i18n/de.ts +3 -16
  118. package/src/tool/lateInterest/i18n/en.ts +3 -16
  119. package/src/tool/lateInterest/i18n/es.ts +3 -16
  120. package/src/tool/lateInterest/i18n/fr.ts +3 -16
  121. package/src/tool/lateInterest/i18n/id.ts +3 -16
  122. package/src/tool/lateInterest/i18n/it.ts +3 -16
  123. package/src/tool/lateInterest/i18n/ja.ts +3 -16
  124. package/src/tool/lateInterest/i18n/ko.ts +3 -16
  125. package/src/tool/lateInterest/i18n/nl.ts +3 -16
  126. package/src/tool/lateInterest/i18n/pl.ts +3 -16
  127. package/src/tool/lateInterest/i18n/pt.ts +3 -16
  128. package/src/tool/lateInterest/i18n/ru.ts +3 -16
  129. package/src/tool/lateInterest/i18n/sv.ts +3 -16
  130. package/src/tool/lateInterest/i18n/tr.ts +3 -16
  131. package/src/tool/lateInterest/i18n/zh.ts +3 -16
  132. package/src/tool/lateInterest/seo.astro +2 -1
  133. package/src/tool/legalInterestRate/bibliography.ts +16 -0
  134. package/src/tool/legalInterestRate/entry.ts +2 -0
  135. package/src/tool/legalInterestRate/i18n/de.ts +2 -18
  136. package/src/tool/legalInterestRate/i18n/en.ts +2 -22
  137. package/src/tool/legalInterestRate/i18n/es.ts +2 -22
  138. package/src/tool/legalInterestRate/i18n/fr.ts +2 -22
  139. package/src/tool/legalInterestRate/i18n/id.ts +2 -18
  140. package/src/tool/legalInterestRate/i18n/it.ts +2 -18
  141. package/src/tool/legalInterestRate/i18n/ja.ts +2 -18
  142. package/src/tool/legalInterestRate/i18n/ko.ts +2 -18
  143. package/src/tool/legalInterestRate/i18n/nl.ts +2 -18
  144. package/src/tool/legalInterestRate/i18n/pl.ts +2 -18
  145. package/src/tool/legalInterestRate/i18n/pt.ts +2 -18
  146. package/src/tool/legalInterestRate/i18n/ru.ts +2 -18
  147. package/src/tool/legalInterestRate/i18n/sv.ts +2 -18
  148. package/src/tool/legalInterestRate/i18n/tr.ts +2 -18
  149. package/src/tool/legalInterestRate/i18n/zh.ts +2 -18
  150. package/src/tool/legalInterestRate/seo.astro +2 -1
  151. package/src/tool/lotteryOptimizer/bibliography.ts +16 -0
  152. package/src/tool/lotteryOptimizer/entry.ts +2 -0
  153. package/src/tool/lotteryOptimizer/i18n/de.ts +2 -18
  154. package/src/tool/lotteryOptimizer/i18n/en.ts +2 -18
  155. package/src/tool/lotteryOptimizer/i18n/es.ts +2 -18
  156. package/src/tool/lotteryOptimizer/i18n/fr.ts +2 -18
  157. package/src/tool/lotteryOptimizer/i18n/id.ts +2 -18
  158. package/src/tool/lotteryOptimizer/i18n/it.ts +2 -18
  159. package/src/tool/lotteryOptimizer/i18n/ja.ts +2 -18
  160. package/src/tool/lotteryOptimizer/i18n/ko.ts +2 -18
  161. package/src/tool/lotteryOptimizer/i18n/nl.ts +2 -18
  162. package/src/tool/lotteryOptimizer/i18n/pl.ts +2 -18
  163. package/src/tool/lotteryOptimizer/i18n/pt.ts +2 -18
  164. package/src/tool/lotteryOptimizer/i18n/ru.ts +2 -18
  165. package/src/tool/lotteryOptimizer/i18n/sv.ts +2 -18
  166. package/src/tool/lotteryOptimizer/i18n/tr.ts +2 -18
  167. package/src/tool/lotteryOptimizer/i18n/zh.ts +2 -18
  168. package/src/tool/lotteryOptimizer/seo.astro +2 -1
  169. package/src/tool/lotteryOptimizer/spain-lottery-optimizer.css +524 -7
  170. package/src/tool/mortgage/bibliography.ts +20 -0
  171. package/src/tool/mortgage/entry.ts +2 -0
  172. package/src/tool/mortgage/i18n/de.ts +3 -16
  173. package/src/tool/mortgage/i18n/en.ts +3 -20
  174. package/src/tool/mortgage/i18n/es.ts +3 -20
  175. package/src/tool/mortgage/i18n/fr.ts +3 -20
  176. package/src/tool/mortgage/i18n/id.ts +3 -12
  177. package/src/tool/mortgage/i18n/it.ts +3 -16
  178. package/src/tool/mortgage/i18n/ja.ts +3 -12
  179. package/src/tool/mortgage/i18n/ko.ts +3 -12
  180. package/src/tool/mortgage/i18n/nl.ts +3 -12
  181. package/src/tool/mortgage/i18n/pl.ts +3 -12
  182. package/src/tool/mortgage/i18n/pt.ts +3 -12
  183. package/src/tool/mortgage/i18n/ru.ts +3 -12
  184. package/src/tool/mortgage/i18n/sv.ts +3 -12
  185. package/src/tool/mortgage/i18n/tr.ts +3 -12
  186. package/src/tool/mortgage/i18n/zh.ts +3 -12
  187. package/src/tool/mortgage/seo.astro +2 -1
  188. package/src/tool/percentageCalculator/bibliography.ts +16 -0
  189. package/src/tool/percentageCalculator/entry.ts +2 -0
  190. package/src/tool/percentageCalculator/i18n/de.ts +3 -12
  191. package/src/tool/percentageCalculator/i18n/en.ts +3 -16
  192. package/src/tool/percentageCalculator/i18n/es.ts +3 -16
  193. package/src/tool/percentageCalculator/i18n/fr.ts +3 -16
  194. package/src/tool/percentageCalculator/i18n/id.ts +3 -12
  195. package/src/tool/percentageCalculator/i18n/it.ts +3 -12
  196. package/src/tool/percentageCalculator/i18n/ja.ts +3 -12
  197. package/src/tool/percentageCalculator/i18n/ko.ts +3 -12
  198. package/src/tool/percentageCalculator/i18n/nl.ts +3 -12
  199. package/src/tool/percentageCalculator/i18n/pl.ts +3 -12
  200. package/src/tool/percentageCalculator/i18n/pt.ts +3 -12
  201. package/src/tool/percentageCalculator/i18n/ru.ts +3 -12
  202. package/src/tool/percentageCalculator/i18n/sv.ts +3 -12
  203. package/src/tool/percentageCalculator/i18n/tr.ts +3 -12
  204. package/src/tool/percentageCalculator/i18n/zh.ts +3 -12
  205. package/src/tool/percentageCalculator/percentage-calculator.css +20 -0
  206. package/src/tool/percentageCalculator/seo.astro +2 -1
  207. package/src/tool/rentIncreaseCalculator/bibliography.ts +16 -0
  208. package/src/tool/rentIncreaseCalculator/entry.ts +2 -0
  209. package/src/tool/rentIncreaseCalculator/i18n/de.ts +2 -18
  210. package/src/tool/rentIncreaseCalculator/i18n/en.ts +2 -18
  211. package/src/tool/rentIncreaseCalculator/i18n/es.ts +2 -18
  212. package/src/tool/rentIncreaseCalculator/i18n/fr.ts +2 -18
  213. package/src/tool/rentIncreaseCalculator/i18n/id.ts +2 -18
  214. package/src/tool/rentIncreaseCalculator/i18n/it.ts +2 -18
  215. package/src/tool/rentIncreaseCalculator/i18n/ja.ts +2 -18
  216. package/src/tool/rentIncreaseCalculator/i18n/ko.ts +2 -18
  217. package/src/tool/rentIncreaseCalculator/i18n/nl.ts +2 -18
  218. package/src/tool/rentIncreaseCalculator/i18n/pl.ts +2 -18
  219. package/src/tool/rentIncreaseCalculator/i18n/pt.ts +2 -18
  220. package/src/tool/rentIncreaseCalculator/i18n/ru.ts +2 -18
  221. package/src/tool/rentIncreaseCalculator/i18n/sv.ts +2 -18
  222. package/src/tool/rentIncreaseCalculator/i18n/tr.ts +2 -18
  223. package/src/tool/rentIncreaseCalculator/i18n/zh.ts +2 -18
  224. package/src/tool/rentIncreaseCalculator/seo.astro +2 -1
  225. package/src/types.ts +0 -2
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { InflationUI } from '../ui';
@@ -92,23 +93,9 @@ export const content: ToolLocaleContent<InflationUI> = {
92
93
  slug,
93
94
  title,
94
95
  description,
95
- faqTitle: 'Часто задаваемые вопросы об инфляции',
96
96
  faq: faqData,
97
- bibliographyTitle: 'Официальные источники и ссылки',
98
- bibliography: [
99
- {
100
- name: 'INE: Индекс потребительских цен (Испания)',
101
- url: 'https://www.ine.es/dyngs/INEsite/es/catalom.htm?cid=1254736116996',
102
- },
103
- {
104
- name: 'Banco de España: Анализ инфляции',
105
- url: 'https://www.bde.es/',
106
- },
107
- {
108
- name: 'ЕЦБ: Денежно-кредитная политика и цены',
109
- url: 'https://www.ecb.europa.eu/',
110
- },
111
- ],
97
+ bibliography,
98
+
112
99
  howTo: howToData,
113
100
  schemas: [faqSchema, howToSchema, appSchema],
114
101
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { InflationUI } from '../ui';
@@ -92,23 +93,9 @@ export const content: ToolLocaleContent<InflationUI> = {
92
93
  slug,
93
94
  title,
94
95
  description,
95
- faqTitle: 'Vanliga frågor om inflation',
96
96
  faq: faqData,
97
- bibliographyTitle: 'Officiella källor och referenser',
98
- bibliography: [
99
- {
100
- name: 'INE: Konsumentprisindex (Spanien)',
101
- url: 'https://www.ine.es/dyngs/INEsite/es/catalom.htm?cid=1254736116996',
102
- },
103
- {
104
- name: 'Banco de España: Inflationsanalys',
105
- url: 'https://www.bde.es/',
106
- },
107
- {
108
- name: 'ECB: Penningpolitik och priser',
109
- url: 'https://www.ecb.europa.eu/',
110
- },
111
- ],
97
+ bibliography,
98
+
112
99
  howTo: howToData,
113
100
  schemas: [faqSchema, howToSchema, appSchema],
114
101
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { InflationUI } from '../ui';
@@ -92,23 +93,9 @@ export const content: ToolLocaleContent<InflationUI> = {
92
93
  slug,
93
94
  title,
94
95
  description,
95
- faqTitle: 'Enflasyon Hakkında Sıkça Sorulan Sorular',
96
96
  faq: faqData,
97
- bibliographyTitle: 'Resmi Kaynaklar ve Referanslar',
98
- bibliography: [
99
- {
100
- name: 'INE: Tüketici Fiyat Endeksi (İspanya)',
101
- url: 'https://www.ine.es/dyngs/INEsite/es/catalom.htm?cid=1254736116996',
102
- },
103
- {
104
- name: 'İspanya Bankası (Banco de España): Enflasyon Analizi',
105
- url: 'https://www.bde.es/',
106
- },
107
- {
108
- name: 'AMB: Para Politikası ve Fiyatlar',
109
- url: 'https://www.ecb.europa.eu/',
110
- },
111
- ],
97
+ bibliography,
98
+
112
99
  howTo: howToData,
113
100
  schemas: [faqSchema, howToSchema, appSchema],
114
101
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { InflationUI } from '../ui';
@@ -92,23 +93,9 @@ export const content: ToolLocaleContent<InflationUI> = {
92
93
  slug,
93
94
  title,
94
95
  description,
95
- faqTitle: '关于通货膨胀的常见问题',
96
96
  faq: faqData,
97
- bibliographyTitle: '官方来源与参考资料',
98
- bibliography: [
99
- {
100
- name: 'INE:消费者物价指数(西班牙)',
101
- url: 'https://www.ine.es/dyngs/INEsite/es/catalom.htm?cid=1254736116996',
102
- },
103
- {
104
- name: '西班牙银行 (Banco de España):通货膨胀分析',
105
- url: 'https://www.bde.es/',
106
- },
107
- {
108
- name: '欧洲央行 (ECB):货币政策与价格',
109
- url: 'https://www.ecb.europa.eu/',
110
- },
111
- ],
97
+ bibliography,
98
+
112
99
  howTo: howToData,
113
100
  schemas: [faqSchema, howToSchema, appSchema],
114
101
  seo: [
@@ -11,4 +11,5 @@ const { locale = 'es' } = Astro.props;
11
11
  const content = await inflation.i18n[locale]?.();
12
12
  if (!content) return null;
13
13
  ---
14
- <SEORenderer content={{ locale: locale as string, sections: content.seo }} />
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,16 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'Ley 3/2004 de Lucha contra la Morosidad',
6
+ url: 'https://www.boe.es/',
7
+ },
8
+ {
9
+ name: 'Banco de España: Tipos de Interés',
10
+ url: 'https://www.bde.es/',
11
+ },
12
+ {
13
+ name: 'Cálculo de Intereses Compuestos',
14
+ url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
15
+ },
16
+ ];
@@ -28,3 +28,5 @@ export const lateInterest: FinanceToolEntry<LateInterestUI> = {
28
28
  zh: () => import('./i18n/zh').then((m) => m.content),
29
29
  },
30
30
  };
31
+
32
+ export { bibliography } from './bibliography';
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { LateInterestUI } from '../ui';
@@ -88,23 +89,9 @@ export const content: ToolLocaleContent<LateInterestUI> = {
88
89
  slug,
89
90
  title,
90
91
  description,
91
- faqTitle: 'Häufig gestellte Fragen',
92
92
  faq: faqData,
93
- bibliographyTitle: 'Quellen und Referenzen',
94
- bibliography: [
95
- {
96
- name: 'Spanisches Gesetz 3/2004 gegen Zahlungsverzug',
97
- url: 'https://www.boe.es/',
98
- },
99
- {
100
- name: 'Banco de España: Zinssätze',
101
- url: 'https://www.bde.es/',
102
- },
103
- {
104
- name: 'Zinseszinsberechnung',
105
- url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
106
- },
107
- ],
93
+ bibliography,
94
+
108
95
  howTo: howToData,
109
96
  schemas: [faqSchema, howToSchema, appSchema],
110
97
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { LateInterestUI } from '../ui';
@@ -88,23 +89,9 @@ export const content: ToolLocaleContent<LateInterestUI> = {
88
89
  slug,
89
90
  title,
90
91
  description,
91
- faqTitle: 'Frequently Asked Questions',
92
92
  faq: faqData,
93
- bibliographyTitle: 'Sources & References',
94
- bibliography: [
95
- {
96
- name: 'Federal Reserve: Interest Rates',
97
- url: 'https://www.federalreserve.gov/',
98
- },
99
- {
100
- name: 'Investopedia: Compound Interest',
101
- url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
102
- },
103
- {
104
- name: 'SEC: Understanding Interest Calculations',
105
- url: 'https://www.sec.gov/',
106
- },
107
- ],
93
+ bibliography,
94
+
108
95
  howTo: howToData,
109
96
  schemas: [faqSchema, howToSchema, appSchema],
110
97
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { LateInterestUI } from '../ui';
@@ -88,23 +89,9 @@ export const content: ToolLocaleContent<LateInterestUI> = {
88
89
  slug,
89
90
  title,
90
91
  description,
91
- faqTitle: 'Preguntas Frecuentes',
92
92
  faq: faqData,
93
- bibliographyTitle: 'Fuentes y Referencias',
94
- bibliography: [
95
- {
96
- name: 'Ley 3/2004 de Lucha contra la Morosidad',
97
- url: 'https://www.boe.es/',
98
- },
99
- {
100
- name: 'Banco de España: Tipos de Interés',
101
- url: 'https://www.bde.es/',
102
- },
103
- {
104
- name: 'Cálculo de Intereses Compuestos',
105
- url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
106
- },
107
- ],
93
+ bibliography,
94
+
108
95
  howTo: howToData,
109
96
  schemas: [faqSchema, howToSchema, appSchema],
110
97
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { LateInterestUI } from '../ui';
@@ -88,23 +89,9 @@ export const content: ToolLocaleContent<LateInterestUI> = {
88
89
  slug,
89
90
  title,
90
91
  description,
91
- faqTitle: 'Questions Fréquemment Posées',
92
92
  faq: faqData,
93
- bibliographyTitle: 'Sources et Références',
94
- bibliography: [
95
- {
96
- name: 'Légifrance: Code du Commerce',
97
- url: 'https://www.legifrance.gouv.fr/',
98
- },
99
- {
100
- name: 'Banque de France: Taux Directeurs',
101
- url: 'https://www.banque-france.fr/',
102
- },
103
- {
104
- name: 'Calcul des Intérêts Composés',
105
- url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
106
- },
107
- ],
93
+ bibliography,
94
+
108
95
  howTo: howToData,
109
96
  schemas: [faqSchema, howToSchema, appSchema],
110
97
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { LateInterestUI } from '../ui';
@@ -88,23 +89,9 @@ export const content: ToolLocaleContent<LateInterestUI> = {
88
89
  slug,
89
90
  title,
90
91
  description,
91
- faqTitle: 'Pertanyaan Umum',
92
92
  faq: faqData,
93
- bibliographyTitle: 'Sumber dan Referensi',
94
- bibliography: [
95
- {
96
- name: 'Undang-Undang Spanyol 3/2004 tentang Keterlambatan Pembayaran',
97
- url: 'https://www.boe.es/',
98
- },
99
- {
100
- name: 'Banco de España: Suku Bunga',
101
- url: 'https://www.bde.es/',
102
- },
103
- {
104
- name: 'Perhitungan Bunga Majemuk',
105
- url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
106
- },
107
- ],
93
+ bibliography,
94
+
108
95
  howTo: howToData,
109
96
  schemas: [faqSchema, howToSchema, appSchema],
110
97
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { LateInterestUI } from '../ui';
@@ -88,23 +89,9 @@ export const content: ToolLocaleContent<LateInterestUI> = {
88
89
  slug,
89
90
  title,
90
91
  description,
91
- faqTitle: 'Domande Frequenti',
92
92
  faq: faqData,
93
- bibliographyTitle: 'Fonti e Riferimenti',
94
- bibliography: [
95
- {
96
- name: 'Legge 3/2004 contro la Morosità (Spagna)',
97
- url: 'https://www.boe.es/',
98
- },
99
- {
100
- name: 'Banco de España: Tassi di interesse',
101
- url: 'https://www.bde.es/',
102
- },
103
- {
104
- name: 'Calcolo dell’Interesse Composto',
105
- url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
106
- },
107
- ],
93
+ bibliography,
94
+
108
95
  howTo: howToData,
109
96
  schemas: [faqSchema, howToSchema, appSchema],
110
97
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { LateInterestUI } from '../ui';
@@ -88,23 +89,9 @@ export const content: ToolLocaleContent<LateInterestUI> = {
88
89
  slug,
89
90
  title,
90
91
  description,
91
- faqTitle: 'よくある質問',
92
92
  faq: faqData,
93
- bibliographyTitle: '情報源とリファレンス',
94
- bibliography: [
95
- {
96
- name: 'スペイン支払遅延防止法 (Ley 3/2004)',
97
- url: 'https://www.boe.es/',
98
- },
99
- {
100
- name: 'スペイン銀行 (Banco de España): 利率推移',
101
- url: 'https://www.bde.es/',
102
- },
103
- {
104
- name: '複利の計算方法について',
105
- url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
106
- },
107
- ],
93
+ bibliography,
94
+
108
95
  howTo: howToData,
109
96
  schemas: [faqSchema, howToSchema, appSchema],
110
97
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { LateInterestUI } from '../ui';
@@ -88,23 +89,9 @@ export const content: ToolLocaleContent<LateInterestUI> = {
88
89
  slug,
89
90
  title,
90
91
  description,
91
- faqTitle: '자주 묻는 질문',
92
92
  faq: faqData,
93
- bibliographyTitle: '출처 및 참고 자료',
94
- bibliography: [
95
- {
96
- name: '스페인 지불 지연 방지법 (Ley 3/2004)',
97
- url: 'https://www.boe.es/',
98
- },
99
- {
100
- name: '스페인 은행 (Banco de España): 이자율 정보',
101
- url: 'https://www.bde.es/',
102
- },
103
- {
104
- name: '복리 계산 방법 안내',
105
- url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
106
- },
107
- ],
93
+ bibliography,
94
+
108
95
  howTo: howToData,
109
96
  schemas: [faqSchema, howToSchema, appSchema],
110
97
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { LateInterestUI } from '../ui';
@@ -88,23 +89,9 @@ export const content: ToolLocaleContent<LateInterestUI> = {
88
89
  slug,
89
90
  title,
90
91
  description,
91
- faqTitle: 'Veelgestelde Vragen',
92
92
  faq: faqData,
93
- bibliographyTitle: 'Bronnen en Referenties',
94
- bibliography: [
95
- {
96
- name: 'Spaanse Wet 3/2004 tegen Betalingsachterstanden',
97
- url: 'https://www.boe.es/',
98
- },
99
- {
100
- name: 'Banco de España: Rentetarieven',
101
- url: 'https://www.bde.es/',
102
- },
103
- {
104
- name: 'Berekening van Samengestelde Rente',
105
- url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
106
- },
107
- ],
93
+ bibliography,
94
+
108
95
  howTo: howToData,
109
96
  schemas: [faqSchema, howToSchema, appSchema],
110
97
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { LateInterestUI } from '../ui';
@@ -88,23 +89,9 @@ export const content: ToolLocaleContent<LateInterestUI> = {
88
89
  slug,
89
90
  title,
90
91
  description,
91
- faqTitle: 'Często Zadawane Pytania',
92
92
  faq: faqData,
93
- bibliographyTitle: 'Źródła i Odniesienia',
94
- bibliography: [
95
- {
96
- name: 'Hiszpańska Ustawa 3/2004 o Zwalczaniu Opóźnień w Płatnościach',
97
- url: 'https://www.boe.es/',
98
- },
99
- {
100
- name: 'Banco de España: Stopy Procentowe',
101
- url: 'https://www.bde.es/',
102
- },
103
- {
104
- name: 'Obliczanie Odsetek Składanych',
105
- url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
106
- },
107
- ],
93
+ bibliography,
94
+
108
95
  howTo: howToData,
109
96
  schemas: [faqSchema, howToSchema, appSchema],
110
97
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { LateInterestUI } from '../ui';
@@ -88,23 +89,9 @@ export const content: ToolLocaleContent<LateInterestUI> = {
88
89
  slug,
89
90
  title,
90
91
  description,
91
- faqTitle: 'Perguntas Frequentes',
92
92
  faq: faqData,
93
- bibliographyTitle: 'Fontes e Referências',
94
- bibliography: [
95
- {
96
- name: 'Lei 3/2004 de Luta contra a Morosidade (Espanha)',
97
- url: 'https://www.boe.es/',
98
- },
99
- {
100
- name: 'Banco de España: Taxas de Juro',
101
- url: 'https://www.bde.es/',
102
- },
103
- {
104
- name: 'Cálculo de Juros Compostos',
105
- url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
106
- },
107
- ],
93
+ bibliography,
94
+
108
95
  howTo: howToData,
109
96
  schemas: [faqSchema, howToSchema, appSchema],
110
97
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { LateInterestUI } from '../ui';
@@ -88,23 +89,9 @@ export const content: ToolLocaleContent<LateInterestUI> = {
88
89
  slug,
89
90
  title,
90
91
  description,
91
- faqTitle: 'Часто задаваемые вопросы',
92
92
  faq: faqData,
93
- bibliographyTitle: 'Источники и ссылки',
94
- bibliography: [
95
- {
96
- name: 'Закон Испании 3/2004 о борьбе с просрочками платежей',
97
- url: 'https://www.boe.es/',
98
- },
99
- {
100
- name: 'Banco de España: Процентные ставки',
101
- url: 'https://www.bde.es/',
102
- },
103
- {
104
- name: 'Расчет сложных процентов',
105
- url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
106
- },
107
- ],
93
+ bibliography,
94
+
108
95
  howTo: howToData,
109
96
  schemas: [faqSchema, howToSchema, appSchema],
110
97
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { LateInterestUI } from '../ui';
@@ -88,23 +89,9 @@ export const content: ToolLocaleContent<LateInterestUI> = {
88
89
  slug,
89
90
  title,
90
91
  description,
91
- faqTitle: 'Vanliga frågor',
92
92
  faq: faqData,
93
- bibliographyTitle: 'Källor och referenser',
94
- bibliography: [
95
- {
96
- name: 'Spansk lag 3/2004 mot sena betalningar',
97
- url: 'https://www.boe.es/',
98
- },
99
- {
100
- name: 'Banco de España: Räntesatser',
101
- url: 'https://www.bde.es/',
102
- },
103
- {
104
- name: 'Beräkning av sammansatt ränta',
105
- url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
106
- },
107
- ],
93
+ bibliography,
94
+
108
95
  howTo: howToData,
109
96
  schemas: [faqSchema, howToSchema, appSchema],
110
97
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { LateInterestUI } from '../ui';
@@ -88,23 +89,9 @@ export const content: ToolLocaleContent<LateInterestUI> = {
88
89
  slug,
89
90
  title,
90
91
  description,
91
- faqTitle: 'Sıkça Sorulan Sorular',
92
92
  faq: faqData,
93
- bibliographyTitle: 'Kaynaklar ve Referanslar',
94
- bibliography: [
95
- {
96
- name: 'İspanya 3/2004 Sayılı Geç Ödemelerle Mücadele Kanunu',
97
- url: 'https://www.boe.es/',
98
- },
99
- {
100
- name: 'İspanya Bankası (Banco de España): Faiz Oranları',
101
- url: 'https://www.bde.es/',
102
- },
103
- {
104
- name: 'Bileşik Faiz Hesaplama',
105
- url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
106
- },
107
- ],
93
+ bibliography,
94
+
108
95
  howTo: howToData,
109
96
  schemas: [faqSchema, howToSchema, appSchema],
110
97
  seo: [
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography'
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { LateInterestUI } from '../ui';
@@ -88,23 +89,9 @@ export const content: ToolLocaleContent<LateInterestUI> = {
88
89
  slug,
89
90
  title,
90
91
  description,
91
- faqTitle: '常见问题',
92
92
  faq: faqData,
93
- bibliographyTitle: '来源与参考资料',
94
- bibliography: [
95
- {
96
- name: '西班牙第 3/2004 号打击逾期付款法',
97
- url: 'https://www.boe.es/',
98
- },
99
- {
100
- name: '西班牙银行 (Banco de España):利率',
101
- url: 'https://www.bde.es/',
102
- },
103
- {
104
- name: '复利计算方法',
105
- url: 'https://www.investopedia.com/terms/c/compoundinterest.asp',
106
- },
107
- ],
93
+ bibliography,
94
+
108
95
  howTo: howToData,
109
96
  schemas: [faqSchema, howToSchema, appSchema],
110
97
  seo: [
@@ -11,4 +11,5 @@ const { locale = 'es' } = Astro.props;
11
11
  const content = await lateInterest.i18n[locale]?.();
12
12
  if (!content) return null;
13
13
  ---
14
- <SEORenderer content={{ locale: locale as string, sections: content.seo }} />
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,16 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'Staatliches Haushaltsgesetz Spanien 2026',
6
+ url: 'https://www.boe.es/',
7
+ },
8
+ {
9
+ name: 'Spanisches Zivilgesetzbuch - Art. 1108 ff.',
10
+ url: 'https://www.boe.es/',
11
+ },
12
+ {
13
+ name: 'Gesetz 3/2004 gegen Zahlungsverzug',
14
+ url: 'https://www.boe.es/',
15
+ },
16
+ ];
@@ -27,3 +27,5 @@ export const legalInterestRate: FinanceToolEntry<LegalInterestRateUI> = {
27
27
  zh: () => import('./i18n/zh').then((m) => m.content),
28
28
  },
29
29
  };
30
+
31
+ export { bibliography } from './bibliography';