@jjlmoya/utils-finance 1.3.0 → 1.6.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 (168) hide show
  1. package/package.json +2 -1
  2. package/src/tests/faq_count.test.ts +1 -1
  3. package/src/tests/i18n_coverage.test.ts +36 -0
  4. package/src/tests/locale_completeness.test.ts +3 -0
  5. package/src/tests/slug_uniqueness.test.ts +81 -0
  6. package/src/tests/title_quality.test.ts +1 -1
  7. package/src/tool/compoundInterest/i18n/de.ts +208 -0
  8. package/src/tool/compoundInterest/i18n/id.ts +208 -0
  9. package/src/tool/compoundInterest/i18n/it.ts +208 -0
  10. package/src/tool/compoundInterest/i18n/ja.ts +207 -0
  11. package/src/tool/compoundInterest/i18n/ko.ts +207 -0
  12. package/src/tool/compoundInterest/i18n/nl.ts +208 -0
  13. package/src/tool/compoundInterest/i18n/pl.ts +208 -0
  14. package/src/tool/compoundInterest/i18n/pt.ts +208 -0
  15. package/src/tool/compoundInterest/i18n/ru.ts +208 -0
  16. package/src/tool/compoundInterest/i18n/sv.ts +208 -0
  17. package/src/tool/compoundInterest/i18n/tr.ts +208 -0
  18. package/src/tool/compoundInterest/i18n/zh.ts +202 -0
  19. package/src/tool/compoundInterest/index.ts +15 -7
  20. package/src/tool/courtFeeCalculator/i18n/de.ts +152 -0
  21. package/src/tool/courtFeeCalculator/i18n/fr.ts +1 -1
  22. package/src/tool/courtFeeCalculator/i18n/id.ts +152 -0
  23. package/src/tool/courtFeeCalculator/i18n/it.ts +152 -0
  24. package/src/tool/courtFeeCalculator/i18n/ja.ts +152 -0
  25. package/src/tool/courtFeeCalculator/i18n/ko.ts +152 -0
  26. package/src/tool/courtFeeCalculator/i18n/nl.ts +152 -0
  27. package/src/tool/courtFeeCalculator/i18n/pl.ts +152 -0
  28. package/src/tool/courtFeeCalculator/i18n/pt.ts +152 -0
  29. package/src/tool/courtFeeCalculator/i18n/ru.ts +152 -0
  30. package/src/tool/courtFeeCalculator/i18n/sv.ts +152 -0
  31. package/src/tool/courtFeeCalculator/i18n/tr.ts +152 -0
  32. package/src/tool/courtFeeCalculator/i18n/zh.ts +152 -0
  33. package/src/tool/courtFeeCalculator/index.ts +16 -8
  34. package/src/tool/debtSnowball/i18n/de.ts +160 -0
  35. package/src/tool/debtSnowball/i18n/id.ts +160 -0
  36. package/src/tool/debtSnowball/i18n/it.ts +160 -0
  37. package/src/tool/debtSnowball/i18n/ja.ts +157 -0
  38. package/src/tool/debtSnowball/i18n/ko.ts +160 -0
  39. package/src/tool/debtSnowball/i18n/nl.ts +160 -0
  40. package/src/tool/debtSnowball/i18n/pl.ts +160 -0
  41. package/src/tool/debtSnowball/i18n/pt.ts +160 -0
  42. package/src/tool/debtSnowball/i18n/ru.ts +160 -0
  43. package/src/tool/debtSnowball/i18n/sv.ts +160 -0
  44. package/src/tool/debtSnowball/i18n/tr.ts +160 -0
  45. package/src/tool/debtSnowball/i18n/zh.ts +160 -0
  46. package/src/tool/debtSnowball/index.ts +17 -9
  47. package/src/tool/fireCalculator/component.astro +12 -3
  48. package/src/tool/fireCalculator/i18n/de.ts +261 -0
  49. package/src/tool/fireCalculator/i18n/en.ts +5 -5
  50. package/src/tool/fireCalculator/i18n/es.ts +2 -2
  51. package/src/tool/fireCalculator/i18n/fr.ts +5 -5
  52. package/src/tool/fireCalculator/i18n/id.ts +261 -0
  53. package/src/tool/fireCalculator/i18n/it.ts +261 -0
  54. package/src/tool/fireCalculator/i18n/ja.ts +261 -0
  55. package/src/tool/fireCalculator/i18n/ko.ts +261 -0
  56. package/src/tool/fireCalculator/i18n/nl.ts +261 -0
  57. package/src/tool/fireCalculator/i18n/pl.ts +261 -0
  58. package/src/tool/fireCalculator/i18n/pt.ts +261 -0
  59. package/src/tool/fireCalculator/i18n/ru.ts +261 -0
  60. package/src/tool/fireCalculator/i18n/sv.ts +261 -0
  61. package/src/tool/fireCalculator/i18n/tr.ts +261 -0
  62. package/src/tool/fireCalculator/i18n/zh.ts +261 -0
  63. package/src/tool/fireCalculator/index.ts +15 -7
  64. package/src/tool/ibanBicSwiftConverter/i18n/de.ts +128 -0
  65. package/src/tool/ibanBicSwiftConverter/i18n/id.ts +128 -0
  66. package/src/tool/ibanBicSwiftConverter/i18n/it.ts +128 -0
  67. package/src/tool/ibanBicSwiftConverter/i18n/ja.ts +128 -0
  68. package/src/tool/ibanBicSwiftConverter/i18n/ko.ts +128 -0
  69. package/src/tool/ibanBicSwiftConverter/i18n/nl.ts +128 -0
  70. package/src/tool/ibanBicSwiftConverter/i18n/pl.ts +128 -0
  71. package/src/tool/ibanBicSwiftConverter/i18n/pt.ts +128 -0
  72. package/src/tool/ibanBicSwiftConverter/i18n/ru.ts +128 -0
  73. package/src/tool/ibanBicSwiftConverter/i18n/sv.ts +128 -0
  74. package/src/tool/ibanBicSwiftConverter/i18n/tr.ts +128 -0
  75. package/src/tool/ibanBicSwiftConverter/i18n/zh.ts +128 -0
  76. package/src/tool/ibanBicSwiftConverter/index.ts +15 -7
  77. package/src/tool/inflation/i18n/de.ts +297 -0
  78. package/src/tool/inflation/i18n/id.ts +297 -0
  79. package/src/tool/inflation/i18n/it.ts +297 -0
  80. package/src/tool/inflation/i18n/ja.ts +297 -0
  81. package/src/tool/inflation/i18n/ko.ts +297 -0
  82. package/src/tool/inflation/i18n/nl.ts +297 -0
  83. package/src/tool/inflation/i18n/pl.ts +297 -0
  84. package/src/tool/inflation/i18n/pt.ts +297 -0
  85. package/src/tool/inflation/i18n/ru.ts +297 -0
  86. package/src/tool/inflation/i18n/sv.ts +297 -0
  87. package/src/tool/inflation/i18n/tr.ts +297 -0
  88. package/src/tool/inflation/i18n/zh.ts +297 -0
  89. package/src/tool/inflation/index.ts +17 -9
  90. package/src/tool/lateInterest/i18n/de.ts +224 -0
  91. package/src/tool/lateInterest/i18n/id.ts +224 -0
  92. package/src/tool/lateInterest/i18n/it.ts +224 -0
  93. package/src/tool/lateInterest/i18n/ja.ts +224 -0
  94. package/src/tool/lateInterest/i18n/ko.ts +224 -0
  95. package/src/tool/lateInterest/i18n/nl.ts +224 -0
  96. package/src/tool/lateInterest/i18n/pl.ts +224 -0
  97. package/src/tool/lateInterest/i18n/pt.ts +224 -0
  98. package/src/tool/lateInterest/i18n/ru.ts +224 -0
  99. package/src/tool/lateInterest/i18n/sv.ts +224 -0
  100. package/src/tool/lateInterest/i18n/tr.ts +224 -0
  101. package/src/tool/lateInterest/i18n/zh.ts +224 -0
  102. package/src/tool/lateInterest/index.ts +17 -9
  103. package/src/tool/legalInterestRate/i18n/de.ts +143 -0
  104. package/src/tool/legalInterestRate/i18n/id.ts +143 -0
  105. package/src/tool/legalInterestRate/i18n/it.ts +143 -0
  106. package/src/tool/legalInterestRate/i18n/ja.ts +143 -0
  107. package/src/tool/legalInterestRate/i18n/ko.ts +143 -0
  108. package/src/tool/legalInterestRate/i18n/nl.ts +143 -0
  109. package/src/tool/legalInterestRate/i18n/pl.ts +143 -0
  110. package/src/tool/legalInterestRate/i18n/pt.ts +143 -0
  111. package/src/tool/legalInterestRate/i18n/ru.ts +143 -0
  112. package/src/tool/legalInterestRate/i18n/sv.ts +143 -0
  113. package/src/tool/legalInterestRate/i18n/tr.ts +143 -0
  114. package/src/tool/legalInterestRate/i18n/zh.ts +143 -0
  115. package/src/tool/legalInterestRate/index.ts +17 -9
  116. package/src/tool/lotteryOptimizer/i18n/de.ts +177 -0
  117. package/src/tool/lotteryOptimizer/i18n/id.ts +177 -0
  118. package/src/tool/lotteryOptimizer/i18n/it.ts +177 -0
  119. package/src/tool/lotteryOptimizer/i18n/ja.ts +177 -0
  120. package/src/tool/lotteryOptimizer/i18n/ko.ts +177 -0
  121. package/src/tool/lotteryOptimizer/i18n/nl.ts +177 -0
  122. package/src/tool/lotteryOptimizer/i18n/pl.ts +177 -0
  123. package/src/tool/lotteryOptimizer/i18n/pt.ts +177 -0
  124. package/src/tool/lotteryOptimizer/i18n/ru.ts +177 -0
  125. package/src/tool/lotteryOptimizer/i18n/sv.ts +177 -0
  126. package/src/tool/lotteryOptimizer/i18n/tr.ts +177 -0
  127. package/src/tool/lotteryOptimizer/i18n/zh.ts +177 -0
  128. package/src/tool/lotteryOptimizer/index.ts +17 -9
  129. package/src/tool/mortgage/i18n/de.ts +223 -0
  130. package/src/tool/mortgage/i18n/id.ts +219 -0
  131. package/src/tool/mortgage/i18n/it.ts +223 -0
  132. package/src/tool/mortgage/i18n/ja.ts +219 -0
  133. package/src/tool/mortgage/i18n/ko.ts +219 -0
  134. package/src/tool/mortgage/i18n/nl.ts +219 -0
  135. package/src/tool/mortgage/i18n/pl.ts +219 -0
  136. package/src/tool/mortgage/i18n/pt.ts +219 -0
  137. package/src/tool/mortgage/i18n/ru.ts +219 -0
  138. package/src/tool/mortgage/i18n/sv.ts +219 -0
  139. package/src/tool/mortgage/i18n/tr.ts +219 -0
  140. package/src/tool/mortgage/i18n/zh.ts +219 -0
  141. package/src/tool/mortgage/index.ts +15 -7
  142. package/src/tool/percentageCalculator/i18n/de.ts +229 -0
  143. package/src/tool/percentageCalculator/i18n/id.ts +229 -0
  144. package/src/tool/percentageCalculator/i18n/it.ts +229 -0
  145. package/src/tool/percentageCalculator/i18n/ja.ts +229 -0
  146. package/src/tool/percentageCalculator/i18n/ko.ts +229 -0
  147. package/src/tool/percentageCalculator/i18n/nl.ts +229 -0
  148. package/src/tool/percentageCalculator/i18n/pl.ts +229 -0
  149. package/src/tool/percentageCalculator/i18n/pt.ts +229 -0
  150. package/src/tool/percentageCalculator/i18n/ru.ts +229 -0
  151. package/src/tool/percentageCalculator/i18n/sv.ts +229 -0
  152. package/src/tool/percentageCalculator/i18n/tr.ts +229 -0
  153. package/src/tool/percentageCalculator/i18n/zh.ts +229 -0
  154. package/src/tool/percentageCalculator/index.ts +15 -7
  155. package/src/tool/rentIncreaseCalculator/i18n/de.ts +136 -0
  156. package/src/tool/rentIncreaseCalculator/i18n/id.ts +136 -0
  157. package/src/tool/rentIncreaseCalculator/i18n/it.ts +136 -0
  158. package/src/tool/rentIncreaseCalculator/i18n/ja.ts +136 -0
  159. package/src/tool/rentIncreaseCalculator/i18n/ko.ts +136 -0
  160. package/src/tool/rentIncreaseCalculator/i18n/nl.ts +136 -0
  161. package/src/tool/rentIncreaseCalculator/i18n/pl.ts +136 -0
  162. package/src/tool/rentIncreaseCalculator/i18n/pt.ts +136 -0
  163. package/src/tool/rentIncreaseCalculator/i18n/ru.ts +136 -0
  164. package/src/tool/rentIncreaseCalculator/i18n/sv.ts +136 -0
  165. package/src/tool/rentIncreaseCalculator/i18n/tr.ts +136 -0
  166. package/src/tool/rentIncreaseCalculator/i18n/zh.ts +136 -0
  167. package/src/tool/rentIncreaseCalculator/index.ts +17 -9
  168. 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 = 'metodo-palla-di-neve-calcolatore-debiti';
6
+ const title = 'Calcolatore Metodo Palla di Neve: Piano di Pagamento Debiti 2026';
7
+ const description = 'Calcola la tua data di libertà finanziaria con il metodo palla di neve di Dave Ramsey. Organizza i tuoi debiti e visualizza il tuo piano di pagamenti mensile.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Cos’è il metodo della palla di neve?',
12
+ answer: 'È una strategia di pagamento dei debiti che consiste nel pagare i debiti in ordine dal saldo più basso al più alto, indipendentemente dal tasso di interesse. Si concentra sulla vittoria psicologica di eliminare velocemente i piccoli debiti.',
13
+ },
14
+ {
15
+ question: 'Perché non ordinare per tasso di interesse (Metodo Valanga)?',
16
+ answer: 'Matematicamente, pagare prima l’interesse più alto fa risparmiare più soldi. Tuttavia, molte persone abbandonano perché non vedono risultati immediati. La Palla di Neve dà priorità alla motivazione: vedere sparire un debito velocemente dà l’energia per affrontare quelli grandi.',
17
+ },
18
+ {
19
+ question: 'Devo avere dei risparmi prima di iniziare il piano?',
20
+ answer: 'Si raccomanda di avere un piccolo "Fondo di Emergenza" (circa 1.000€) prima di attaccare i debiti. Questo evita di dover usare di nuovo la carta di credito in caso di imprevisti.',
21
+ },
22
+ {
23
+ question: 'Quali debiti devo includere nel calcolatore?',
24
+ answer: 'Tutti i debiti di consumo: carte di credito, prestiti personali, finanziamenti auto, fatture scadute. Il mutuo viene solitamente lasciato per una fase successiva.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Elenca i tuoi debiti',
31
+ text: 'Segna tutti i tuoi debiti indicando il saldo residuo e il pagamento minimo mensile.',
32
+ },
33
+ {
34
+ name: 'Definisci il tuo budget extra',
35
+ text: 'Calcola quanto denaro aggiuntivo puoi destinare ogni mese oltre i pagamenti minimi.',
36
+ },
37
+ {
38
+ name: 'Ordina e dai priorità',
39
+ text: 'Il calcolatore ordinerà automaticamente dal saldo più basso al più alto. Paga il minimo su tutti tranne quello più piccolo.',
40
+ },
41
+ {
42
+ name: 'Esegui la cascata',
43
+ text: 'Quando estingui il debito più piccolo, prendi tutto il denaro che destinavi ad esso e aggiungilo al pagamento del debito successivo.',
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: 'Domande Frequenti',
95
+ faq: faqData,
96
+ bibliographyTitle: 'Riferimenti e Fonti',
97
+ bibliography: bibliographyData,
98
+ howTo: howToData,
99
+ schemas: [faqSchema, howToSchema, appSchema],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: 'Calcolatore Debiti Metodo Palla di Neve: Guida 2026',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Vivere con i debiti è faticoso. Il <strong>metodo della palla di neve</strong> ha dimostrato di essere una delle strategie più efficaci per recuperare la libertà finanziaria.',
109
+ },
110
+ ],
111
+ ui: {
112
+ labelTitle: 'Libertà totale',
113
+ labelDescription: 'Inizia il tuo percorso verso la libertà finanziaria con il metodo psicologicamente più efficace.',
114
+ labelExtraBudget: 'BUDGET EXTRA MENSILE',
115
+ labelExtraBudgetHelp: 'Denaro aggiuntivo oltre i pagamenti minimi.',
116
+ labelSnowballMethod: 'PALLA DI NEVE',
117
+ labelAvalancheMethod: 'VALANGA',
118
+ labelAddNewDebt: 'AGGIUNGI NUOVO DEBITO',
119
+ labelDebtName: 'Nome',
120
+ labelDebtNamePlaceholder: 'Es: Visa',
121
+ labelDebtBalance: 'QUANTO DEVI',
122
+ labelDebtBalancePlaceholder: '0',
123
+ labelMinPayment: 'PAGAMENTO MINIMO',
124
+ labelInterestRate: 'TASSO DI INTERESSE',
125
+ labelInterestHelp: 'ANNUALE',
126
+ labelAddButton: 'AGGIUNGI AL PIANO',
127
+ labelClearData: 'Cancella impostazioni',
128
+ labelClearDataConfirm: 'Svuotare il piano?',
129
+ labelDeleteDebt: 'Elimina',
130
+ labelDebtInventory: 'Inventario Debiti',
131
+ labelFreedomDate: 'DATA DI LIBERTÀ FINANZIARIA',
132
+ labelActiveMethod: 'METODO',
133
+ labelMonthsRemaining: 'MESI RIMANENTI',
134
+ labelTotalInterest: 'INTERESSI TOTALI',
135
+ labelTotalPaid: 'PAGAMENTO TOTALE FINALE',
136
+ labelInterestSaved: 'INTERESSI RISPARMIATI',
137
+ labelYourStrategy: 'La tua strategia passo dopo passo',
138
+ labelStrategyHelp: 'Ogni passaggio mostra il tuo pagamento totale.',
139
+ labelPriority: 'MASSIMA PRIORITÀ',
140
+ labelStep: 'PASSO',
141
+ labelAfterPaying: 'DOPO AVER ESTINTO IL PRECEDENTE',
142
+ labelMonthlyPayment: 'Pagamento mensile',
143
+ labelDetailedAmortization: 'Ammortamento Dettagliato',
144
+ labelExportCSV: 'Esporta .CSV',
145
+ labelDate: 'Data',
146
+ labelStartingBalance: 'Saldo Iniziale',
147
+ labelInterest: 'Interesse',
148
+ labelAmortization: 'Ammortizzato',
149
+ labelTotalMonth: 'Totale Mese',
150
+ labelRemaining: 'Rimanente',
151
+ labelFree: 'LIBERO',
152
+ labelDebtInfinite: 'DEBITO INFINITO',
153
+ labelInvalidInput: 'Indica saldo totale e pagamento minimo',
154
+ labelEmptyStateTitle: 'Inizia il tuo piano',
155
+ labelEmptyStateDescription: 'I tuoi debiti non sono per sempre. Aggiungi i tuoi debiti.',
156
+ currencySymbol: '€',
157
+ currencyCode: 'EUR',
158
+ currencyLocale: 'it-IT',
159
+ },
160
+ };
@@ -0,0 +1,157 @@
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 = 'debt-snowball-calculator';
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: '負債を攻撃し始める前に、小さな「初期緊急資金」(約1,000ユーロ程度)を用意することをお勧めします。これにより、予期せぬ出費で再びクレジットカードに頼ることを防げます。',
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', position: i + 1, name: step.name, text: step.text,
75
+ })),
76
+ };
77
+
78
+ const appSchema: WithContext<SoftwareApplication> = {
79
+ '@context': 'https://schema.org',
80
+ '@type': 'SoftwareApplication',
81
+ name: title,
82
+ description,
83
+ applicationCategory: 'FinanceApplication',
84
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
85
+ };
86
+
87
+ export const content: ToolLocaleContent<DebtSnowballUI> = {
88
+ slug,
89
+ title,
90
+ description,
91
+ faqTitle: 'よくある質問',
92
+ faq: faqData,
93
+ bibliographyTitle: '参考文献と出典',
94
+ bibliography: bibliographyData,
95
+ howTo: howToData,
96
+ schemas: [faqSchema, howToSchema, appSchema],
97
+ seo: [
98
+ {
99
+ type: 'title',
100
+ text: '債務スノーボール計算機:2026年ガイド',
101
+ level: 2,
102
+ },
103
+ {
104
+ type: 'paragraph',
105
+ html: '借金のある生活は重い荷物を背負ってマラソンをするようなものです。<strong>スノーボール・メソッド</strong>は、経済的自由を取り戻すための最も効果的な戦略の一つであることが証明されています。',
106
+ },
107
+ ],
108
+ ui: {
109
+ labelTitle: '完全な自由',
110
+ labelDescription: '心理的に最も効果的な方法で、経済的自由への道を歩み始めましょう。',
111
+ labelExtraBudget: '毎月の追加予算',
112
+ labelExtraBudgetHelp: '最低支払額に上乗せして支払える金額。',
113
+ labelSnowballMethod: 'スノーボール',
114
+ labelAvalancheMethod: 'アバランチ',
115
+ labelAddNewDebt: '新しい負債を追加',
116
+ labelDebtName: '名称',
117
+ labelDebtNamePlaceholder: '例: Visaカード',
118
+ labelDebtBalance: '現在残高',
119
+ labelDebtBalancePlaceholder: '0',
120
+ labelMinPayment: '最低支払額',
121
+ labelInterestRate: '利率',
122
+ labelInterestHelp: '年率',
123
+ labelAddButton: 'プランに追加',
124
+ labelClearData: '設定をクリア',
125
+ labelClearDataConfirm: 'プランを空にしますか?',
126
+ labelDeleteDebt: '削除',
127
+ labelDebtInventory: '負債インベントリ',
128
+ labelFreedomDate: '完済予定日',
129
+ labelActiveMethod: 'メソッド',
130
+ labelMonthsRemaining: '残り月数',
131
+ labelTotalInterest: '支払利息合計',
132
+ labelTotalPaid: '最終支払総額',
133
+ labelInterestSaved: '節約できる利息',
134
+ labelYourStrategy: 'ステップバイステップ戦略',
135
+ labelStrategyHelp: '各ステップで支払総額が表示されます。',
136
+ labelPriority: '最優先',
137
+ labelStep: 'ステップ',
138
+ labelAfterPaying: '前の負債を完済後',
139
+ labelMonthlyPayment: '毎月の支払額',
140
+ labelDetailedAmortization: '詳細な返済シミュレーション',
141
+ labelExportCSV: '.CSVで書き出し',
142
+ labelDate: '日付',
143
+ labelStartingBalance: '開始残高',
144
+ labelInterest: '利息',
145
+ labelAmortization: '元金返済額',
146
+ labelTotalMonth: '月間合計',
147
+ labelRemaining: '残高',
148
+ labelFree: '完済',
149
+ labelDebtInfinite: '無限の債務',
150
+ labelInvalidInput: '残高と最低支払額を入力してください',
151
+ labelEmptyStateTitle: 'プランを開始',
152
+ labelEmptyStateDescription: '借金は永遠ではありません。負債を追加して完済までの道筋を確認しましょう。',
153
+ currencySymbol: '€',
154
+ currencyCode: 'EUR',
155
+ currencyLocale: 'ja-JP',
156
+ },
157
+ };
@@ -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 = 'debt-snowball-calculator';
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: '부채 상환을 시작하기 전에 약 1,000유로 정도의 "기초 비상금"을 마련해 두는 것을 권장합니다. 이는 예상치 못한 지출이 생겼을 때 다시 빚을 지게 되는 것을 방지해 줍니다.',
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: '예: 신용카드',
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: 'ko-KR',
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 = '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
+ };