@jjlmoya/utils-finance 1.4.0 → 1.7.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 (179) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +158 -0
  3. package/src/category/i18n/id.ts +158 -0
  4. package/src/category/i18n/it.ts +158 -0
  5. package/src/category/i18n/ja.ts +158 -0
  6. package/src/category/i18n/ko.ts +158 -0
  7. package/src/category/i18n/nl.ts +158 -0
  8. package/src/category/i18n/pl.ts +158 -0
  9. package/src/category/i18n/pt.ts +158 -0
  10. package/src/category/i18n/ru.ts +158 -0
  11. package/src/category/i18n/sv.ts +158 -0
  12. package/src/category/i18n/tr.ts +158 -0
  13. package/src/category/i18n/zh.ts +158 -0
  14. package/src/category/index.ts +13 -1
  15. package/src/tests/category_validation.test.ts +73 -0
  16. package/src/tests/faq_count.test.ts +1 -1
  17. package/src/tests/i18n_coverage.test.ts +36 -0
  18. package/src/tests/locale_completeness.test.ts +3 -0
  19. package/src/tests/slug_language_code_format.test.ts +23 -0
  20. package/src/tests/slug_uniqueness.test.ts +81 -0
  21. package/src/tests/title_quality.test.ts +1 -1
  22. package/src/tool/compoundInterest/i18n/de.ts +208 -0
  23. package/src/tool/compoundInterest/i18n/id.ts +208 -0
  24. package/src/tool/compoundInterest/i18n/it.ts +208 -0
  25. package/src/tool/compoundInterest/i18n/ja.ts +207 -0
  26. package/src/tool/compoundInterest/i18n/ko.ts +207 -0
  27. package/src/tool/compoundInterest/i18n/nl.ts +208 -0
  28. package/src/tool/compoundInterest/i18n/pl.ts +208 -0
  29. package/src/tool/compoundInterest/i18n/pt.ts +208 -0
  30. package/src/tool/compoundInterest/i18n/ru.ts +208 -0
  31. package/src/tool/compoundInterest/i18n/sv.ts +208 -0
  32. package/src/tool/compoundInterest/i18n/tr.ts +208 -0
  33. package/src/tool/compoundInterest/i18n/zh.ts +202 -0
  34. package/src/tool/compoundInterest/index.ts +15 -7
  35. package/src/tool/courtFeeCalculator/i18n/de.ts +152 -0
  36. package/src/tool/courtFeeCalculator/i18n/fr.ts +1 -1
  37. package/src/tool/courtFeeCalculator/i18n/id.ts +152 -0
  38. package/src/tool/courtFeeCalculator/i18n/it.ts +152 -0
  39. package/src/tool/courtFeeCalculator/i18n/ja.ts +152 -0
  40. package/src/tool/courtFeeCalculator/i18n/ko.ts +152 -0
  41. package/src/tool/courtFeeCalculator/i18n/nl.ts +152 -0
  42. package/src/tool/courtFeeCalculator/i18n/pl.ts +152 -0
  43. package/src/tool/courtFeeCalculator/i18n/pt.ts +152 -0
  44. package/src/tool/courtFeeCalculator/i18n/ru.ts +152 -0
  45. package/src/tool/courtFeeCalculator/i18n/sv.ts +152 -0
  46. package/src/tool/courtFeeCalculator/i18n/tr.ts +152 -0
  47. package/src/tool/courtFeeCalculator/i18n/zh.ts +152 -0
  48. package/src/tool/courtFeeCalculator/index.ts +16 -8
  49. package/src/tool/debtSnowball/i18n/de.ts +160 -0
  50. package/src/tool/debtSnowball/i18n/id.ts +160 -0
  51. package/src/tool/debtSnowball/i18n/it.ts +160 -0
  52. package/src/tool/debtSnowball/i18n/ja.ts +157 -0
  53. package/src/tool/debtSnowball/i18n/ko.ts +160 -0
  54. package/src/tool/debtSnowball/i18n/nl.ts +160 -0
  55. package/src/tool/debtSnowball/i18n/pl.ts +160 -0
  56. package/src/tool/debtSnowball/i18n/pt.ts +160 -0
  57. package/src/tool/debtSnowball/i18n/ru.ts +160 -0
  58. package/src/tool/debtSnowball/i18n/sv.ts +160 -0
  59. package/src/tool/debtSnowball/i18n/tr.ts +160 -0
  60. package/src/tool/debtSnowball/i18n/zh.ts +160 -0
  61. package/src/tool/debtSnowball/index.ts +17 -9
  62. package/src/tool/fireCalculator/i18n/de.ts +261 -0
  63. package/src/tool/fireCalculator/i18n/id.ts +261 -0
  64. package/src/tool/fireCalculator/i18n/it.ts +261 -0
  65. package/src/tool/fireCalculator/i18n/ja.ts +261 -0
  66. package/src/tool/fireCalculator/i18n/ko.ts +261 -0
  67. package/src/tool/fireCalculator/i18n/nl.ts +261 -0
  68. package/src/tool/fireCalculator/i18n/pl.ts +261 -0
  69. package/src/tool/fireCalculator/i18n/pt.ts +261 -0
  70. package/src/tool/fireCalculator/i18n/ru.ts +261 -0
  71. package/src/tool/fireCalculator/i18n/sv.ts +261 -0
  72. package/src/tool/fireCalculator/i18n/tr.ts +261 -0
  73. package/src/tool/fireCalculator/i18n/zh.ts +261 -0
  74. package/src/tool/fireCalculator/index.ts +15 -7
  75. package/src/tool/ibanBicSwiftConverter/i18n/de.ts +128 -0
  76. package/src/tool/ibanBicSwiftConverter/i18n/id.ts +128 -0
  77. package/src/tool/ibanBicSwiftConverter/i18n/it.ts +128 -0
  78. package/src/tool/ibanBicSwiftConverter/i18n/ja.ts +128 -0
  79. package/src/tool/ibanBicSwiftConverter/i18n/ko.ts +128 -0
  80. package/src/tool/ibanBicSwiftConverter/i18n/nl.ts +128 -0
  81. package/src/tool/ibanBicSwiftConverter/i18n/pl.ts +128 -0
  82. package/src/tool/ibanBicSwiftConverter/i18n/pt.ts +128 -0
  83. package/src/tool/ibanBicSwiftConverter/i18n/ru.ts +128 -0
  84. package/src/tool/ibanBicSwiftConverter/i18n/sv.ts +128 -0
  85. package/src/tool/ibanBicSwiftConverter/i18n/tr.ts +128 -0
  86. package/src/tool/ibanBicSwiftConverter/i18n/zh.ts +128 -0
  87. package/src/tool/ibanBicSwiftConverter/index.ts +15 -7
  88. package/src/tool/inflation/i18n/de.ts +297 -0
  89. package/src/tool/inflation/i18n/id.ts +297 -0
  90. package/src/tool/inflation/i18n/it.ts +297 -0
  91. package/src/tool/inflation/i18n/ja.ts +297 -0
  92. package/src/tool/inflation/i18n/ko.ts +297 -0
  93. package/src/tool/inflation/i18n/nl.ts +297 -0
  94. package/src/tool/inflation/i18n/pl.ts +297 -0
  95. package/src/tool/inflation/i18n/pt.ts +297 -0
  96. package/src/tool/inflation/i18n/ru.ts +297 -0
  97. package/src/tool/inflation/i18n/sv.ts +297 -0
  98. package/src/tool/inflation/i18n/tr.ts +297 -0
  99. package/src/tool/inflation/i18n/zh.ts +297 -0
  100. package/src/tool/inflation/index.ts +17 -9
  101. package/src/tool/lateInterest/i18n/de.ts +224 -0
  102. package/src/tool/lateInterest/i18n/id.ts +224 -0
  103. package/src/tool/lateInterest/i18n/it.ts +224 -0
  104. package/src/tool/lateInterest/i18n/ja.ts +224 -0
  105. package/src/tool/lateInterest/i18n/ko.ts +224 -0
  106. package/src/tool/lateInterest/i18n/nl.ts +224 -0
  107. package/src/tool/lateInterest/i18n/pl.ts +224 -0
  108. package/src/tool/lateInterest/i18n/pt.ts +224 -0
  109. package/src/tool/lateInterest/i18n/ru.ts +224 -0
  110. package/src/tool/lateInterest/i18n/sv.ts +224 -0
  111. package/src/tool/lateInterest/i18n/tr.ts +224 -0
  112. package/src/tool/lateInterest/i18n/zh.ts +224 -0
  113. package/src/tool/lateInterest/index.ts +17 -9
  114. package/src/tool/legalInterestRate/i18n/de.ts +143 -0
  115. package/src/tool/legalInterestRate/i18n/id.ts +143 -0
  116. package/src/tool/legalInterestRate/i18n/it.ts +143 -0
  117. package/src/tool/legalInterestRate/i18n/ja.ts +143 -0
  118. package/src/tool/legalInterestRate/i18n/ko.ts +143 -0
  119. package/src/tool/legalInterestRate/i18n/nl.ts +143 -0
  120. package/src/tool/legalInterestRate/i18n/pl.ts +143 -0
  121. package/src/tool/legalInterestRate/i18n/pt.ts +143 -0
  122. package/src/tool/legalInterestRate/i18n/ru.ts +143 -0
  123. package/src/tool/legalInterestRate/i18n/sv.ts +143 -0
  124. package/src/tool/legalInterestRate/i18n/tr.ts +143 -0
  125. package/src/tool/legalInterestRate/i18n/zh.ts +143 -0
  126. package/src/tool/legalInterestRate/index.ts +17 -9
  127. package/src/tool/lotteryOptimizer/i18n/de.ts +177 -0
  128. package/src/tool/lotteryOptimizer/i18n/id.ts +177 -0
  129. package/src/tool/lotteryOptimizer/i18n/it.ts +177 -0
  130. package/src/tool/lotteryOptimizer/i18n/ja.ts +177 -0
  131. package/src/tool/lotteryOptimizer/i18n/ko.ts +177 -0
  132. package/src/tool/lotteryOptimizer/i18n/nl.ts +177 -0
  133. package/src/tool/lotteryOptimizer/i18n/pl.ts +177 -0
  134. package/src/tool/lotteryOptimizer/i18n/pt.ts +177 -0
  135. package/src/tool/lotteryOptimizer/i18n/ru.ts +177 -0
  136. package/src/tool/lotteryOptimizer/i18n/sv.ts +177 -0
  137. package/src/tool/lotteryOptimizer/i18n/tr.ts +177 -0
  138. package/src/tool/lotteryOptimizer/i18n/zh.ts +177 -0
  139. package/src/tool/lotteryOptimizer/index.ts +17 -9
  140. package/src/tool/mortgage/i18n/de.ts +223 -0
  141. package/src/tool/mortgage/i18n/id.ts +219 -0
  142. package/src/tool/mortgage/i18n/it.ts +223 -0
  143. package/src/tool/mortgage/i18n/ja.ts +219 -0
  144. package/src/tool/mortgage/i18n/ko.ts +219 -0
  145. package/src/tool/mortgage/i18n/nl.ts +219 -0
  146. package/src/tool/mortgage/i18n/pl.ts +219 -0
  147. package/src/tool/mortgage/i18n/pt.ts +219 -0
  148. package/src/tool/mortgage/i18n/ru.ts +219 -0
  149. package/src/tool/mortgage/i18n/sv.ts +219 -0
  150. package/src/tool/mortgage/i18n/tr.ts +219 -0
  151. package/src/tool/mortgage/i18n/zh.ts +219 -0
  152. package/src/tool/mortgage/index.ts +15 -7
  153. package/src/tool/percentageCalculator/i18n/de.ts +229 -0
  154. package/src/tool/percentageCalculator/i18n/id.ts +229 -0
  155. package/src/tool/percentageCalculator/i18n/it.ts +229 -0
  156. package/src/tool/percentageCalculator/i18n/ja.ts +229 -0
  157. package/src/tool/percentageCalculator/i18n/ko.ts +229 -0
  158. package/src/tool/percentageCalculator/i18n/nl.ts +229 -0
  159. package/src/tool/percentageCalculator/i18n/pl.ts +229 -0
  160. package/src/tool/percentageCalculator/i18n/pt.ts +229 -0
  161. package/src/tool/percentageCalculator/i18n/ru.ts +229 -0
  162. package/src/tool/percentageCalculator/i18n/sv.ts +229 -0
  163. package/src/tool/percentageCalculator/i18n/tr.ts +229 -0
  164. package/src/tool/percentageCalculator/i18n/zh.ts +229 -0
  165. package/src/tool/percentageCalculator/index.ts +15 -7
  166. package/src/tool/rentIncreaseCalculator/i18n/de.ts +136 -0
  167. package/src/tool/rentIncreaseCalculator/i18n/id.ts +136 -0
  168. package/src/tool/rentIncreaseCalculator/i18n/it.ts +136 -0
  169. package/src/tool/rentIncreaseCalculator/i18n/ja.ts +136 -0
  170. package/src/tool/rentIncreaseCalculator/i18n/ko.ts +136 -0
  171. package/src/tool/rentIncreaseCalculator/i18n/nl.ts +136 -0
  172. package/src/tool/rentIncreaseCalculator/i18n/pl.ts +136 -0
  173. package/src/tool/rentIncreaseCalculator/i18n/pt.ts +136 -0
  174. package/src/tool/rentIncreaseCalculator/i18n/ru.ts +136 -0
  175. package/src/tool/rentIncreaseCalculator/i18n/sv.ts +136 -0
  176. package/src/tool/rentIncreaseCalculator/i18n/tr.ts +136 -0
  177. package/src/tool/rentIncreaseCalculator/i18n/zh.ts +136 -0
  178. package/src/tool/rentIncreaseCalculator/index.ts +17 -9
  179. package/src/types.ts +1 -1
@@ -0,0 +1,160 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { DebtSnowballUI } from '../ui';
4
+
5
+ const slug = 'sneeuwbalmethode-schuldenrekenmachine';
6
+ const title = 'Schulden Sneeuwbal Calculator: Afbetalingsplan 2026';
7
+ const description = 'Bereken uw datum voor financiële vrijheid met de sneeuwbalmethode van Dave Ramsey. Organiseer uw schulden en visualiseer uw maandelijks afbetalingsplan.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Wat is de sneeuwbalmethode?',
12
+ answer: 'Het is een strategie om schulden af te betalen waarbij u schulden afbetaalt in volgorde van kleinste naar grootste saldo, ongeacht de rentevoet. Het richt sich op de psychologische overwinning van het snel elimineren van kleine rekeningen.',
13
+ },
14
+ {
15
+ question: 'Waarom niet sorteren op rentevoet (Lawinemethode)?',
16
+ answer: 'Wiskundig gezien bespaart het eerst afbetalen van de hoogste rente meer geld. Veel mensen haken echter af omdat ze geen onmiddellijk resultaat zien. De Sneeuwbal geeft prioriteit aan motivatie.',
17
+ },
18
+ {
19
+ question: 'Moet ik spaargeld hebben voordat ik met het plan begin?',
20
+ answer: 'Het wordt aanbevolen om een klein noodfonds (ongeveer €1.000) te hebben voordat u de schulden aanpakt. Dit voorkomt dat u bij onvoorziene gebeurtenissen weer de creditcard moet gebruiken.',
21
+ },
22
+ {
23
+ question: 'Welke schulden moet ik opnemen in de calculator?',
24
+ answer: 'Alle consumentenschulden: creditcards, persoonlijke leningen, autoleningen, openstaande rekeningen. De hypotheek wordt meestal voor een latere fase bewaard.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Lijst uw schulden op',
31
+ text: 'Noteer al uw schulden met het huidige openstaande saldo en de minimale maandelijkse betaling.',
32
+ },
33
+ {
34
+ name: 'Bepaal uw extra budget',
35
+ text: 'Bereken hoeveel extra geld u elke maand kunt besteden bovenop de minimale betalingen.',
36
+ },
37
+ {
38
+ name: 'Sorteer en prioriteer',
39
+ text: 'De calculator sorteert automatisch van laagste naar hoogste saldo. Betaal het minimum op alles behalve de kleinste.',
40
+ },
41
+ {
42
+ name: 'Voer de cascade uit',
43
+ text: 'Wanneer u de kleinste schuld heeft afbetaald, neemt u al het geld dat u daarvoor gebruikte en voegt u dit toe aan de betaling van de volgende.',
44
+ },
45
+ ];
46
+
47
+ const bibliographyData = [
48
+ {
49
+ name: 'Investopedia — Debt Snowball vs. Debt Avalanche',
50
+ url: 'https://www.investopedia.com/',
51
+ },
52
+ {
53
+ name: 'Harvard Business Review — Research on Debt Payoff Strategies',
54
+ url: 'https://hbr.org/',
55
+ },
56
+ ];
57
+
58
+ const faqSchema: WithContext<FAQPage> = {
59
+ '@context': 'https://schema.org',
60
+ '@type': 'FAQPage',
61
+ mainEntity: faqData.map((item) => ({
62
+ '@type': 'Question',
63
+ name: item.question,
64
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
65
+ })),
66
+ };
67
+
68
+ const howToSchema: WithContext<HowTo> = {
69
+ '@context': 'https://schema.org',
70
+ '@type': 'HowTo',
71
+ name: title,
72
+ description,
73
+ step: howToData.map((step, i) => ({
74
+ '@type': 'HowToStep',
75
+ position: i + 1,
76
+ name: step.name,
77
+ text: step.text,
78
+ })),
79
+ };
80
+
81
+ const appSchema: WithContext<SoftwareApplication> = {
82
+ '@context': 'https://schema.org',
83
+ '@type': 'SoftwareApplication',
84
+ name: title,
85
+ description,
86
+ applicationCategory: 'FinanceApplication',
87
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
88
+ };
89
+
90
+ export const content: ToolLocaleContent<DebtSnowballUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ faqTitle: 'Veelgestelde Vragen',
95
+ faq: faqData,
96
+ bibliographyTitle: 'Referenties en Bronnen',
97
+ bibliography: bibliographyData,
98
+ howTo: howToData,
99
+ schemas: [faqSchema, howToSchema, appSchema],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: 'Schulden Sneeuwbal Calculator: Gids 2026',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Leven met schulden is zwaar. De <strong>sneeuwbalmethode</strong> is bewezen als een van de meest effectieve strategieën om uw financiële vrijheid terug te krijgen.',
109
+ },
110
+ ],
111
+ ui: {
112
+ labelTitle: 'Totale vrijheid',
113
+ labelDescription: 'Begin uw pad naar financiële vrijheid met de psychologisch meest effectieve methode.',
114
+ labelExtraBudget: 'MAANDELIJKS EXTRA BUDGET',
115
+ labelExtraBudgetHelp: 'Extra geld bovenop de minimale betalingen.',
116
+ labelSnowballMethod: 'SNEEUWBAL',
117
+ labelAvalancheMethod: 'LAWINEMETHODE',
118
+ labelAddNewDebt: 'NIEUWE SCHULD TOEVOEGEN',
119
+ labelDebtName: 'Naam',
120
+ labelDebtNamePlaceholder: 'Bijv: Visa',
121
+ labelDebtBalance: 'HOEVEEL U VERSCHULDIGD BENT',
122
+ labelDebtBalancePlaceholder: '0',
123
+ labelMinPayment: 'MINIMALE BETALING',
124
+ labelInterestRate: 'RENTEVOET',
125
+ labelInterestHelp: 'JAARLIJKS',
126
+ labelAddButton: 'TOEVOEGEN AAN PLAN',
127
+ labelClearData: 'Instellingen wissen',
128
+ labelClearDataConfirm: 'Plan leegmaken?',
129
+ labelDeleteDebt: 'Verwijderen',
130
+ labelDebtInventory: 'Schuldenoverzicht',
131
+ labelFreedomDate: 'DATUM FINANCIËLE VRIJHEID',
132
+ labelActiveMethod: 'METHODE',
133
+ labelMonthsRemaining: 'RESTERENDE MAANDEN',
134
+ labelTotalInterest: 'TOTALE RENTE',
135
+ labelTotalPaid: 'TOTALE BETALING',
136
+ labelInterestSaved: 'RENTE BESPAARD',
137
+ labelYourStrategy: 'Uw strategie stap voor stap',
138
+ labelStrategyHelp: 'Elke stap toont uw totale betaling.',
139
+ labelPriority: 'HOOGSTE PRIORITEIT',
140
+ labelStep: 'STAP',
141
+ labelAfterPaying: 'NA HET AFBETALEN VAN DE VORIGE',
142
+ labelMonthlyPayment: 'Maandelijkse betaling',
143
+ labelDetailedAmortization: 'Gedetailleerde Amortisatie',
144
+ labelExportCSV: 'Exporteer .CSV',
145
+ labelDate: 'Datum',
146
+ labelStartingBalance: 'Beginsaldo',
147
+ labelInterest: 'Rente',
148
+ labelAmortization: 'Afgerekend',
149
+ labelTotalMonth: 'Totaal Maand',
150
+ labelRemaining: 'Resterend',
151
+ labelFree: 'VRIJ',
152
+ labelDebtInfinite: 'ONEINDIGE SCHULD',
153
+ labelInvalidInput: 'Geef totaalsaldo en minimale betaling op',
154
+ labelEmptyStateTitle: 'Start uw plan',
155
+ labelEmptyStateDescription: 'Uw schulden zijn niet voor altijd. Voeg uw schulden toe.',
156
+ currencySymbol: '€',
157
+ currencyCode: 'EUR',
158
+ currencyLocale: 'nl-NL',
159
+ },
160
+ };
@@ -0,0 +1,160 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { DebtSnowballUI } from '../ui';
4
+
5
+ const slug = 'metoda-kuli-snieznej-kalkulator-dlugow';
6
+ const title = 'Kalkulator Metody Kuli Śnieżnej: Plan Spłaty Zadłużenia 2026';
7
+ const description = 'Oblicz datę swojej wolności finansowej za pomocą metody kuli śnieżnej Dave’a Ramseya. Uporządkuj swoje długi i zwizualizuj miesięczny plan spłat.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Co to jest metoda kuli śnieżnej?',
12
+ answer: 'Jest to strategia spłaty zadłużenia polegająca na spłacaniu długów w kolejności od najmniejszego do największego salda, niezależnie od stopy procentowej. Koncentruje się na psychologicznym zwycięstwie płynącym z szybkiego pozbywania się małych zobowiązań.',
13
+ },
14
+ {
15
+ question: 'Dlaczego nie sortować według stopy procentowej (Metoda Lawiny)?',
16
+ answer: 'Matematycznie spłacanie najpierw najwyższych odsetek pozwala zaoszczędzić więcej pieniędzy. Jednak wiele osób poddaje się, bo nie widzi natychmiastowych efektów. Kula Śnieżna priorytetyzuje motywację.',
17
+ },
18
+ {
19
+ question: 'Czy powinienem mieć oszczędności przed rozpoczęciem planu?',
20
+ answer: 'Zaleca się posiadanie "Początkowego Funduszu Awaryjnego" (około 1000 €) przed atakiem na długi. Zapobiega to konieczności ponownego użycia karty kredytowej w razie nieprzewidzianych wydatków.',
21
+ },
22
+ {
23
+ question: 'Jakie długi powinienem uwzględnić w kalkulatorze?',
24
+ answer: 'Wszystkie długi konsumenckie: karty kredytowe, pożyczki gotówkowe, kredyty samochodowe, zaległe rachunki. Hipotekę zazwyczaj zostawia się na późniejszy etap ze względu na jej dużą wartość.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Wypisz swoje długi',
31
+ text: 'Zapisz wszystkie swoje długi, podając aktualne saldo pozostałe do spłaty oraz minimalną miesięczną ratę.',
32
+ },
33
+ {
34
+ name: 'Zdefiniuj dodatkowy budżet',
35
+ text: 'Oblicz, ile dodatkowych pieniędzy możesz przeznaczyć każdego miesiąca ponad minimalne wpłaty.',
36
+ },
37
+ {
38
+ name: 'Uporządkuj i ustal priorytety',
39
+ text: 'Kalkulator automatycznie posortuje długi od najmniejszego do największego salda. Płać minimum we wszystkich prócz najmniejszego.',
40
+ },
41
+ {
42
+ name: 'Uruchom kaskadę',
43
+ text: 'Gdy spłacisz najmniejszy dług, weź wszystkie pieniądze, które na niego przeznaczałeś i dodaj je do spłaty kolejnego długu na liście.',
44
+ },
45
+ ];
46
+
47
+ const bibliographyData = [
48
+ {
49
+ name: 'Investopedia — Debt Snowball vs. Debt Avalanche',
50
+ url: 'https://www.investopedia.com/',
51
+ },
52
+ {
53
+ name: 'Harvard Business Review — Research on Debt Payoff Strategies',
54
+ url: 'https://hbr.org/',
55
+ },
56
+ ];
57
+
58
+ const faqSchema: WithContext<FAQPage> = {
59
+ '@context': 'https://schema.org',
60
+ '@type': 'FAQPage',
61
+ mainEntity: faqData.map((item) => ({
62
+ '@type': 'Question',
63
+ name: item.question,
64
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
65
+ })),
66
+ };
67
+
68
+ const howToSchema: WithContext<HowTo> = {
69
+ '@context': 'https://schema.org',
70
+ '@type': 'HowTo',
71
+ name: title,
72
+ description,
73
+ step: howToData.map((step, i) => ({
74
+ '@type': 'HowToStep',
75
+ position: i + 1,
76
+ name: step.name,
77
+ text: step.text,
78
+ })),
79
+ };
80
+
81
+ const appSchema: WithContext<SoftwareApplication> = {
82
+ '@context': 'https://schema.org',
83
+ '@type': 'SoftwareApplication',
84
+ name: title,
85
+ description,
86
+ applicationCategory: 'FinanceApplication',
87
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
88
+ };
89
+
90
+ export const content: ToolLocaleContent<DebtSnowballUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ faqTitle: 'Często zadawane pytania',
95
+ faq: faqData,
96
+ bibliographyTitle: 'Referencje i źródła',
97
+ bibliography: bibliographyData,
98
+ howTo: howToData,
99
+ schemas: [faqSchema, howToSchema, appSchema],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: 'Kalkulator Długów Metodą Kuli Śnieżnej: Przewodnik 2026',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Życie z długami jest trudne. <strong>Metoda kuli śnieżnej</strong> udowodniła, że jest jedną z najskuteczniejszych strategii odzyskiwania wolności finansowej.',
109
+ },
110
+ ],
111
+ ui: {
112
+ labelTitle: 'Całkowita wolność',
113
+ labelDescription: 'Rozpocznij swoją drogę do wolności finansowej z psychologicznie najskuteczniejszą metodą.',
114
+ labelExtraBudget: 'DODATKOWY BUDŻET MIESIĘCZNY',
115
+ labelExtraBudgetHelp: 'Dodatkowe pieniądze ponad minimalne wpłaty.',
116
+ labelSnowballMethod: 'KULA ŚNIEŻNA',
117
+ labelAvalancheMethod: 'LAWINA',
118
+ labelAddNewDebt: 'DODAJ NOWY DŁUG',
119
+ labelDebtName: 'Nazwa',
120
+ labelDebtNamePlaceholder: 'Np: Visa',
121
+ labelDebtBalance: 'ILE JESTEŚ WINIEN',
122
+ labelDebtBalancePlaceholder: '0',
123
+ labelMinPayment: 'WPŁATA MINIMALNA',
124
+ labelInterestRate: 'STOPA PROCENTOWA',
125
+ labelInterestHelp: 'ROCZNIE',
126
+ labelAddButton: 'DODAJ DO PLANU',
127
+ labelClearData: 'Wyczyść ustawienia',
128
+ labelClearDataConfirm: 'Opróżnić plan?',
129
+ labelDeleteDebt: 'Usuń',
130
+ labelDebtInventory: 'Inwentarz Długów',
131
+ labelFreedomDate: 'DATA WOLNOŚCI FINANSOWEJ',
132
+ labelActiveMethod: 'METODA',
133
+ labelMonthsRemaining: 'POZOSTAŁE MIESIĄCE',
134
+ labelTotalInterest: 'SUMA ODSETEK',
135
+ labelTotalPaid: 'SUMA WPŁAT KOŃCOWYCH',
136
+ labelInterestSaved: 'ZAOSZCZĘDZONE ODSETKI',
137
+ labelYourStrategy: 'Twoja strategia krok po kroku',
138
+ labelStrategyHelp: 'Każdy krok pokazuje Twoją całkowitą wpłatę.',
139
+ labelPriority: 'NAJWYŻSZY PRIORYTET',
140
+ labelStep: 'KROK',
141
+ labelAfterPaying: 'PO SPŁACIE POPRZEDNIEGO',
142
+ labelMonthlyPayment: 'Miesięczna wpłata',
143
+ labelDetailedAmortization: 'Szczegółowa Amortyzacja',
144
+ labelExportCSV: 'Eksportuj .CSV',
145
+ labelDate: 'Data',
146
+ labelStartingBalance: 'Saldo Początkowe',
147
+ labelInterest: 'Odsetki',
148
+ labelAmortization: 'Amortyzacja',
149
+ labelTotalMonth: 'Suma Miesiąca',
150
+ labelRemaining: 'Pozostało',
151
+ labelFree: 'WOLNY',
152
+ labelDebtInfinite: 'DŁUG NIESKOŃCZONY',
153
+ labelInvalidInput: 'Podaj saldo całkowite i wpłatę minimalną',
154
+ labelEmptyStateTitle: 'Rozpocznij swój plan',
155
+ labelEmptyStateDescription: 'Twoje długi nie trwają wiecznie. Dodaj swoje zobowiązania.',
156
+ currencySymbol: '€',
157
+ currencyCode: 'EUR',
158
+ currencyLocale: 'pl-PL',
159
+ },
160
+ };
@@ -0,0 +1,160 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { DebtSnowballUI } from '../ui';
4
+
5
+ const slug = 'metodo-bola-de-neve-calculadora-dividas';
6
+ const title = 'Calculadora Método Bola de Neve: Plano de Pagamento de Dívidas 2026';
7
+ const description = 'Calcule a sua data de liberdade financeira com o método bola de neve. Organize as suas dívidas e visualize o seu plano de pagamentos mensal gratuito.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'O que é o método da bola de neve?',
12
+ answer: 'É uma estratégia de pagamento de dívidas que consiste em pagar as dívidas por ordem do menor para o maior saldo, independentemente da taxa de juro. Foca-se na vitória psicológica de eliminar pequenas contas rapidamente.',
13
+ },
14
+ {
15
+ question: 'Porquê não ordenar pela taxa de juro (Avalanche)?',
16
+ answer: 'Matematicamente, pagar primeiro o juro mais alto poupa mais dinheiro. No entanto, muitas pessoas desistem porque não veem resultados imediatos. A Bola de Neve prioriza a motivação.',
17
+ },
18
+ {
19
+ question: 'Devo ter poupanças antes de começar o plano?',
20
+ answer: 'Recomenda-se ter um "Fundo de Emergência Inicial" (cerca de 1.000€) antes de atacar as dívidas. Isto evita que tenha de voltar a usar o cartão de crédito em caso de imprevistos.',
21
+ },
22
+ {
23
+ question: 'Que dívidas devo incluir na calculadora?',
24
+ answer: 'Todas as dívidas de consumo: cartões de crédito, empréstimos pessoais, créditos automóveis, faturas em atraso. A hipoteca costuma ser deixada para uma fase posterior.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Liste as suas dívidas',
31
+ text: 'Aponte todas as suas dívidas indicando o saldo em dívida e o pagamento mínimo mensal.',
32
+ },
33
+ {
34
+ name: 'Defina o seu orçamento extra',
35
+ text: 'Calcule quanto dinheiro adicional pode destinar cada mês além dos pagamentos mínimos.',
36
+ },
37
+ {
38
+ name: 'Ordene e priorize',
39
+ text: 'A calculadora ordenará automaticamente do menor para o maior saldo. Pague o mínimo em todas exceto na mais pequena.',
40
+ },
41
+ {
42
+ name: 'Execute a cascata',
43
+ text: 'Quando liquidar a dívida mais pequena, pegue em todo o dinheiro que destinava a ela e some-o ao pagamento da dívida seguinte.',
44
+ },
45
+ ];
46
+
47
+ const bibliographyData = [
48
+ {
49
+ name: 'Investopedia — Debt Snowball vs. Debt Avalanche',
50
+ url: 'https://www.investopedia.com/',
51
+ },
52
+ {
53
+ name: 'Harvard Business Review — Research on Debt Payoff Strategies',
54
+ url: 'https://hbr.org/',
55
+ },
56
+ ];
57
+
58
+ const faqSchema: WithContext<FAQPage> = {
59
+ '@context': 'https://schema.org',
60
+ '@type': 'FAQPage',
61
+ mainEntity: faqData.map((item) => ({
62
+ '@type': 'Question',
63
+ name: item.question,
64
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
65
+ })),
66
+ };
67
+
68
+ const howToSchema: WithContext<HowTo> = {
69
+ '@context': 'https://schema.org',
70
+ '@type': 'HowTo',
71
+ name: title,
72
+ description,
73
+ step: howToData.map((step, i) => ({
74
+ '@type': 'HowToStep',
75
+ position: i + 1,
76
+ name: step.name,
77
+ text: step.text,
78
+ })),
79
+ };
80
+
81
+ const appSchema: WithContext<SoftwareApplication> = {
82
+ '@context': 'https://schema.org',
83
+ '@type': 'SoftwareApplication',
84
+ name: title,
85
+ description,
86
+ applicationCategory: 'FinanceApplication',
87
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
88
+ };
89
+
90
+ export const content: ToolLocaleContent<DebtSnowballUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ faqTitle: 'Perguntas Frequentes',
95
+ faq: faqData,
96
+ bibliographyTitle: 'Referências e Fontes',
97
+ bibliography: bibliographyData,
98
+ howTo: howToData,
99
+ schemas: [faqSchema, howToSchema, appSchema],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: 'Calculadora de Dívida Método Bola de Neve: Guia 2026',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Viver com dívidas é difícil. O <strong>método da bola de neve</strong> tem demonstrado ser uma das estratégias mais eficazes para recuperar a liberdade financeira.',
109
+ },
110
+ ],
111
+ ui: {
112
+ labelTitle: 'Liberdade total',
113
+ labelDescription: 'Inicie o seu caminho para a liberdade financeira com o método psicologicamente mais eficaz.',
114
+ labelExtraBudget: 'ORÇAMENTO EXTRA MENSAL',
115
+ labelExtraBudgetHelp: 'Dinheiro adicional além dos pagamentos mínimos.',
116
+ labelSnowballMethod: 'BOLA DE NEVE',
117
+ labelAvalancheMethod: 'AVALANCHE',
118
+ labelAddNewDebt: 'ADICIONAR NOVA DÍVIDA',
119
+ labelDebtName: 'Nome',
120
+ labelDebtNamePlaceholder: 'Ex: Visa',
121
+ labelDebtBalance: 'QUANTO DEVE',
122
+ labelDebtBalancePlaceholder: '0',
123
+ labelMinPayment: 'PAGAMENTO MÍNIMO',
124
+ labelInterestRate: 'TAXA DE JURO',
125
+ labelInterestHelp: 'ANUAL',
126
+ labelAddButton: 'ADICIONAR AO PLANO',
127
+ labelClearData: 'Limpar definições',
128
+ labelClearDataConfirm: 'Esvaziar plano?',
129
+ labelDeleteDebt: 'Eliminar',
130
+ labelDebtInventory: 'Inventário de Dívidas',
131
+ labelFreedomDate: 'DATA DE LIBERDADE FINANCEIRA',
132
+ labelActiveMethod: 'MÉTODO',
133
+ labelMonthsRemaining: 'MESES RESTANTES',
134
+ labelTotalInterest: 'JUROS TOTAIS',
135
+ labelTotalPaid: 'PAGAMENTO TOTAL FINAL',
136
+ labelInterestSaved: 'JUROS POUPADOS',
137
+ labelYourStrategy: 'A sua estratégia passo a passo',
138
+ labelStrategyHelp: 'Cada passo mostra o seu pagamento total.',
139
+ labelPriority: 'PRIORIDADE MÁXIMA',
140
+ labelStep: 'PASSO',
141
+ labelAfterPaying: 'APÓS LIQUIDAR ANTERIOR',
142
+ labelMonthlyPayment: 'Pagamento mensal',
143
+ labelDetailedAmortization: 'Amortização Detalhada',
144
+ labelExportCSV: 'Exportar .CSV',
145
+ labelDate: 'Data',
146
+ labelStartingBalance: 'Saldo Inicial',
147
+ labelInterest: 'Juro',
148
+ labelAmortization: 'Amortizado',
149
+ labelTotalMonth: 'Total Mês',
150
+ labelRemaining: 'Restante',
151
+ labelFree: 'LIVRE',
152
+ labelDebtInfinite: 'DÍVIDA INFINITA',
153
+ labelInvalidInput: 'Indique saldo total e pagamento mínimo',
154
+ labelEmptyStateTitle: 'Comece o seu plano',
155
+ labelEmptyStateDescription: 'As suas dívidas não são para sempre. Adicione as suas dívidas.',
156
+ currencySymbol: '€',
157
+ currencyCode: 'EUR',
158
+ currencyLocale: 'pt-PT',
159
+ },
160
+ };
@@ -0,0 +1,160 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { DebtSnowballUI } from '../ui';
4
+
5
+ const slug = 'metod-snezhnogo-koma-kalkulyator-dolgov';
6
+ const title = 'Калькулятор метода "Снежного кома": План погашения долгов 2026';
7
+ const description = 'Рассчитайте дату своей финансовой свободы с помощью метода "снежного кома" Дейва Рамзи. Организуйте свои долги и визуализируйте план ежемесячных платежей.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Что такое метод "снежного кома"?',
12
+ answer: 'Это стратегия погашения долгов, которая заключается в выплате долгов в порядке от самого маленького до самого большого баланса, независимо от процентной ставки. Она фокусируется на психологической победе от быстрого закрытия небольших счетов.',
13
+ },
14
+ {
15
+ question: 'Почему бы не сортировать по процентной ставке (метод "Лавины")?',
16
+ answer: 'Математически, выплата сначала самого высокого процента экономит больше денег. Однако многие люди бросают, потому что не видят мгновенных результатов. "Снежный ком" ставит в приоритет мотивацию.',
17
+ },
18
+ {
19
+ question: 'Нужно ли иметь сбережения перед началом плана?',
20
+ answer: 'Рекомендуется иметь "Начальный чрезвычайный фонд" (около 1000 евро) перед тем, как атаковать долги. Это предотвратит повторное использование кредитной карты в случае непредвиденных обстоятельств.',
21
+ },
22
+ {
23
+ question: 'Какие долги мне следует включить в калькулятор?',
24
+ answer: 'Все потребительские долги: кредитные карты, потребительские кредиты, автокредиты, просроченные счета. Ипотеку обычно оставляют на более поздний этап.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Составьте список долгов',
31
+ text: 'Запишите все свои долги, указав текущий остаток баланса и минимальный ежемесячный платеж.',
32
+ },
33
+ {
34
+ name: 'Определите дополнительный бюджет',
35
+ text: 'Рассчитайте, сколько дополнительных денег вы можете выделять каждый месяц сверх минимальных платежей.',
36
+ },
37
+ {
38
+ name: 'Сортируйте и расставляйте приоритеты',
39
+ text: 'Калькулятор автоматически отсортирует долги от меньшего к большему. Платите минимум по всем, кроме самого маленького.',
40
+ },
41
+ {
42
+ name: 'Запустите "каскад"',
43
+ text: 'Когда вы закроете самый маленький долг, возьмите все деньги, которые вы направляли на него, и добавьте их к платежу по следующему долгу в списке.',
44
+ },
45
+ ];
46
+
47
+ const bibliographyData = [
48
+ {
49
+ name: 'Investopedia — Debt Snowball vs. Debt Avalanche',
50
+ url: 'https://www.investopedia.com/',
51
+ },
52
+ {
53
+ name: 'Harvard Business Review — Research on Debt Payoff Strategies',
54
+ url: 'https://hbr.org/',
55
+ },
56
+ ];
57
+
58
+ const faqSchema: WithContext<FAQPage> = {
59
+ '@context': 'https://schema.org',
60
+ '@type': 'FAQPage',
61
+ mainEntity: faqData.map((item) => ({
62
+ '@type': 'Question',
63
+ name: item.question,
64
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
65
+ })),
66
+ };
67
+
68
+ const howToSchema: WithContext<HowTo> = {
69
+ '@context': 'https://schema.org',
70
+ '@type': 'HowTo',
71
+ name: title,
72
+ description,
73
+ step: howToData.map((step, i) => ({
74
+ '@type': 'HowToStep',
75
+ position: i + 1,
76
+ name: step.name,
77
+ text: step.text,
78
+ })),
79
+ };
80
+
81
+ const appSchema: WithContext<SoftwareApplication> = {
82
+ '@context': 'https://schema.org',
83
+ '@type': 'SoftwareApplication',
84
+ name: title,
85
+ description,
86
+ applicationCategory: 'FinanceApplication',
87
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
88
+ };
89
+
90
+ export const content: ToolLocaleContent<DebtSnowballUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ faqTitle: 'Часто задаваемые вопросы',
95
+ faq: faqData,
96
+ bibliographyTitle: 'Ссылки и источники',
97
+ bibliography: bibliographyData,
98
+ howTo: howToData,
99
+ schemas: [faqSchema, howToSchema, appSchema],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: 'Калькулятор долгов методом "Снежного кома": Руководство 2026',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Жить в долгах тяжело. <strong>Метод "снежного кома"</strong> доказал свою эффективность как одна из лучших стратегий для восстановления финансовой свободы.',
109
+ },
110
+ ],
111
+ ui: {
112
+ labelTitle: 'Полная свобода',
113
+ labelDescription: 'Начните свой путь к финансовой свободе с помощью самого эффективного психологического метода.',
114
+ labelExtraBudget: 'ЕЖЕМЕСЯЧНЫЙ ДОП. БЮДЖЕТ',
115
+ labelExtraBudgetHelp: 'Дополнительные деньги сверх минимальных платежей.',
116
+ labelSnowballMethod: 'СНЕЖНЫЙ КОМ',
117
+ labelAvalancheMethod: 'ЛАВИНА',
118
+ labelAddNewDebt: 'ДОБАВИТЬ НОВЫЙ ДОЛГ',
119
+ labelDebtName: 'Название',
120
+ labelDebtNamePlaceholder: 'Напр: Visa',
121
+ labelDebtBalance: 'СКОЛЬКО ВЫ ДОЛЖНЫ',
122
+ labelDebtBalancePlaceholder: '0',
123
+ labelMinPayment: 'МИН. ПЛАТЕЖ',
124
+ labelInterestRate: 'ПРОЦЕНТНАЯ СТАВКА',
125
+ labelInterestHelp: 'ГОДОВАЯ',
126
+ labelAddButton: 'ДОБАВИТЬ В ПЛАН',
127
+ labelClearData: 'Очистить настройки',
128
+ labelClearDataConfirm: 'Очистить план?',
129
+ labelDeleteDebt: 'Удалить',
130
+ labelDebtInventory: 'Инвентарь долгов',
131
+ labelFreedomDate: 'ДАТА ФИНАНСОВОЙ СВОБОДЫ',
132
+ labelActiveMethod: 'МЕТОД',
133
+ labelMonthsRemaining: 'ОСТАЛОСЬ МЕСЯЦЕВ',
134
+ labelTotalInterest: 'ИТОГО ПРОЦЕНТОВ',
135
+ labelTotalPaid: 'ИТОГО ВЫПЛАЧЕНО',
136
+ labelInterestSaved: 'ЭКОНОМИЯ НА ПРОЦЕНТАХ',
137
+ labelYourStrategy: 'Ваша пошаговая стратегия',
138
+ labelStrategyHelp: 'На каждом шаге отображается общая сумма платежа.',
139
+ labelPriority: 'ВЫСШИЙ ПРИОРИТЕТ',
140
+ labelStep: 'ШАГ',
141
+ labelAfterPaying: 'ПОСЛЕ ПОКАШЕНИЯ ПРЕДЫДУЩЕГО',
142
+ labelMonthlyPayment: 'Ежемесячный платеж',
143
+ labelDetailedAmortization: 'Детализация амортизации',
144
+ labelExportCSV: 'Экспорт в .CSV',
145
+ labelDate: 'Дата',
146
+ labelStartingBalance: 'Начальный баланс',
147
+ labelInterest: 'Проценты',
148
+ labelAmortization: 'Амортизация',
149
+ labelTotalMonth: 'Итого за месяц',
150
+ labelRemaining: 'Остаток',
151
+ labelFree: 'СВОБОДЕН',
152
+ labelDebtInfinite: 'БЕСКОНЕЧНЫЙ ДОЛГ',
153
+ labelInvalidInput: 'Укажите общий баланс и мин. платеж',
154
+ labelEmptyStateTitle: 'Начните свой план',
155
+ labelEmptyStateDescription: 'Ваши долги не навсегда. Добавьте свои долги.',
156
+ currencySymbol: '€',
157
+ currencyCode: 'EUR',
158
+ currencyLocale: 'ru-RU',
159
+ },
160
+ };