@jjlmoya/utils-finance 1.18.0 → 1.20.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 (93) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/fr.ts +9 -9
  3. package/src/category/i18n/ru.ts +4 -4
  4. package/src/layouts/PreviewLayout.astro +1 -0
  5. package/src/tests/diacritics_density.test.ts +140 -0
  6. package/src/tests/inverted_punctuation.test.ts +95 -0
  7. package/src/tests/no_en_dash.test.ts +70 -0
  8. package/src/tests/script_density.test.ts +94 -0
  9. package/src/tool/compoundInterest/i18n/de.ts +4 -4
  10. package/src/tool/compoundInterest/i18n/fr.ts +9 -9
  11. package/src/tool/compoundInterest/i18n/it.ts +18 -18
  12. package/src/tool/compoundInterest/i18n/pl.ts +2 -2
  13. package/src/tool/compoundInterest/i18n/ru.ts +7 -7
  14. package/src/tool/compoundInterest/i18n/tr.ts +7 -7
  15. package/src/tool/compoundInterest/i18n/zh.ts +4 -4
  16. package/src/tool/courtFeeCalculator/i18n/it.ts +10 -10
  17. package/src/tool/courtFeeCalculator/i18n/ru.ts +2 -2
  18. package/src/tool/courtFeeCalculator/i18n/tr.ts +6 -6
  19. package/src/tool/courtFeeCalculator/spanish-court-fees-calculator.css +47 -2
  20. package/src/tool/debtSnowball/bibliography.ts +2 -2
  21. package/src/tool/debtSnowball/i18n/it.ts +2 -2
  22. package/src/tool/debtSnowball/i18n/pl.ts +1 -1
  23. package/src/tool/debtSnowball/i18n/tr.ts +1 -1
  24. package/src/tool/debtSnowball/i18n/zh.ts +1 -1
  25. package/src/tool/financialFreedom/financial-freedom-calculator.css +89 -0
  26. package/src/tool/financialFreedom/i18n/en.ts +1 -1
  27. package/src/tool/financialFreedom/i18n/fr.ts +3 -3
  28. package/src/tool/financialFreedom/i18n/ru.ts +2 -2
  29. package/src/tool/financialFreedom/i18n/zh.ts +1 -1
  30. package/src/tool/financialFreedom/seo.astro +7 -5
  31. package/src/tool/fireCalculator/i18n/it.ts +14 -14
  32. package/src/tool/fireCalculator/i18n/ru.ts +6 -6
  33. package/src/tool/fireCalculator/i18n/tr.ts +6 -6
  34. package/src/tool/fireCalculator/i18n/zh.ts +3 -3
  35. package/src/tool/ibanBicSwiftConverter/i18n/fr.ts +1 -1
  36. package/src/tool/ibanBicSwiftConverter/i18n/it.ts +7 -7
  37. package/src/tool/ibanBicSwiftConverter/i18n/ru.ts +1 -1
  38. package/src/tool/ibanBicSwiftConverter/i18n/tr.ts +5 -5
  39. package/src/tool/ibanBicSwiftConverter/iban-to-bic-swift-converter.css +61 -3
  40. package/src/tool/inflation/i18n/de.ts +2 -2
  41. package/src/tool/inflation/i18n/fr.ts +1 -1
  42. package/src/tool/inflation/i18n/it.ts +32 -32
  43. package/src/tool/inflation/i18n/nl.ts +7 -7
  44. package/src/tool/inflation/i18n/pl.ts +2 -2
  45. package/src/tool/inflation/i18n/pt.ts +2 -2
  46. package/src/tool/inflation/i18n/ru.ts +6 -6
  47. package/src/tool/inflation/i18n/sv.ts +3 -3
  48. package/src/tool/inflation/i18n/tr.ts +14 -14
  49. package/src/tool/inflation/i18n/zh.ts +2 -2
  50. package/src/tool/lateInterest/i18n/de.ts +2 -2
  51. package/src/tool/lateInterest/i18n/es.ts +5 -5
  52. package/src/tool/lateInterest/i18n/it.ts +14 -14
  53. package/src/tool/lateInterest/i18n/nl.ts +1 -1
  54. package/src/tool/lateInterest/i18n/pl.ts +1 -1
  55. package/src/tool/lateInterest/i18n/pt.ts +1 -1
  56. package/src/tool/lateInterest/i18n/ru.ts +4 -4
  57. package/src/tool/lateInterest/i18n/sv.ts +3 -3
  58. package/src/tool/lateInterest/i18n/tr.ts +7 -7
  59. package/src/tool/lateInterest/i18n/zh.ts +1 -1
  60. package/src/tool/legalInterestRate/i18n/it.ts +15 -15
  61. package/src/tool/legalInterestRate/i18n/ru.ts +1 -1
  62. package/src/tool/legalInterestRate/i18n/tr.ts +8 -8
  63. package/src/tool/lotteryOptimizer/i18n/it.ts +7 -7
  64. package/src/tool/lotteryOptimizer/i18n/pl.ts +1 -1
  65. package/src/tool/lotteryOptimizer/i18n/ru.ts +4 -4
  66. package/src/tool/lotteryOptimizer/i18n/tr.ts +4 -4
  67. package/src/tool/lotteryOptimizer/i18n/zh.ts +3 -3
  68. package/src/tool/mortgage/i18n/de.ts +1 -1
  69. package/src/tool/mortgage/i18n/fr.ts +4 -4
  70. package/src/tool/mortgage/i18n/id.ts +1 -1
  71. package/src/tool/mortgage/i18n/it.ts +12 -12
  72. package/src/tool/mortgage/i18n/nl.ts +2 -2
  73. package/src/tool/mortgage/i18n/pl.ts +1 -1
  74. package/src/tool/mortgage/i18n/ru.ts +5 -5
  75. package/src/tool/mortgage/i18n/tr.ts +6 -6
  76. package/src/tool/mortgage/i18n/zh.ts +1 -1
  77. package/src/tool/mortgage/mortgage-calculator.css +58 -1
  78. package/src/tool/percentageCalculator/i18n/de.ts +4 -4
  79. package/src/tool/percentageCalculator/i18n/en.ts +1 -1
  80. package/src/tool/percentageCalculator/i18n/es.ts +2 -2
  81. package/src/tool/percentageCalculator/i18n/fr.ts +2 -2
  82. package/src/tool/percentageCalculator/i18n/it.ts +22 -22
  83. package/src/tool/percentageCalculator/i18n/pl.ts +4 -4
  84. package/src/tool/percentageCalculator/i18n/ru.ts +9 -9
  85. package/src/tool/percentageCalculator/i18n/tr.ts +18 -18
  86. package/src/tool/percentageCalculator/i18n/zh.ts +6 -6
  87. package/src/tool/profitability/i18n/fr.ts +2 -2
  88. package/src/tool/profitability/i18n/ru.ts +1 -1
  89. package/src/tool/profitability/i18n/zh.ts +2 -2
  90. package/src/tool/profitability/profitability-calculator.css +101 -0
  91. package/src/tool/rentIncreaseCalculator/i18n/it.ts +13 -13
  92. package/src/tool/rentIncreaseCalculator/i18n/tr.ts +5 -5
  93. package/src/tool/rentIncreaseCalculator/rent-increase-calculator.css +44 -2
@@ -18,6 +18,13 @@
18
18
  width: 100%;
19
19
  max-width: 1000px;
20
20
  margin: 0 auto;
21
+ min-width: 0;
22
+ }
23
+
24
+ .ff-root *,
25
+ .ff-root *::before,
26
+ .ff-root *::after {
27
+ box-sizing: border-box;
21
28
  }
22
29
 
23
30
  .theme-dark .ff-root {
@@ -35,6 +42,7 @@
35
42
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
36
43
  position: relative;
37
44
  overflow: hidden;
45
+ min-width: 0;
38
46
  }
39
47
 
40
48
  .ff-card::before {
@@ -52,6 +60,7 @@
52
60
  grid-template-columns: 1fr 1.2fr;
53
61
  gap: 4rem;
54
62
  align-items: start;
63
+ min-width: 0;
55
64
  }
56
65
 
57
66
  @media (max-width: 900px) {
@@ -74,6 +83,8 @@
74
83
  font-weight: 700;
75
84
  color: var(--ff-text);
76
85
  letter-spacing: -0.01em;
86
+ gap: 0.75rem;
87
+ min-width: 0;
77
88
  }
78
89
 
79
90
  .ff-input-field {
@@ -171,6 +182,7 @@
171
182
  padding: 2.5rem;
172
183
  border-radius: 2rem;
173
184
  border: 1px solid var(--ff-border);
185
+ min-width: 0;
174
186
  }
175
187
 
176
188
  .ff-time-hero {
@@ -195,6 +207,7 @@
195
207
  -webkit-background-clip: text;
196
208
  -webkit-text-fill-color: transparent;
197
209
  margin: 1rem 0;
210
+ overflow-wrap: anywhere;
198
211
  }
199
212
 
200
213
  .ff-time-units {
@@ -216,6 +229,7 @@
216
229
  font-size: 2rem;
217
230
  font-weight: 800;
218
231
  color: var(--ff-text);
232
+ overflow-wrap: anywhere;
219
233
  }
220
234
 
221
235
  .ff-unit-name {
@@ -263,6 +277,7 @@
263
277
  font-size: 1.75rem;
264
278
  font-weight: 800;
265
279
  color: var(--ff-brand);
280
+ overflow-wrap: anywhere;
266
281
  }
267
282
 
268
283
  .ff-what-if-card {
@@ -296,6 +311,80 @@
296
311
  border-radius: 1.25rem;
297
312
  display: inline-block;
298
313
  backdrop-filter: blur(5px);
314
+ max-width: 100%;
315
+ overflow-wrap: anywhere;
316
+ }
317
+
318
+ @media (max-width: 768px) {
319
+ .ff-root {
320
+ gap: 1.25rem;
321
+ }
322
+
323
+ .ff-card {
324
+ border-radius: 1.25rem;
325
+ padding: 1.25rem;
326
+ }
327
+
328
+ .ff-calculator-grid {
329
+ gap: 1.5rem;
330
+ }
331
+
332
+ .ff-input-group {
333
+ margin-bottom: 1.5rem;
334
+ }
335
+
336
+ .ff-input-label {
337
+ align-items: flex-start;
338
+ flex-direction: column;
339
+ }
340
+
341
+ .ff-input-field {
342
+ font-size: 1.125rem;
343
+ padding: 0.875rem 1rem;
344
+ }
345
+
346
+ .ff-results-main {
347
+ gap: 1.25rem;
348
+ padding: 1.25rem;
349
+ border-radius: 1.25rem;
350
+ }
351
+
352
+ .ff-time-display {
353
+ font-size: 2.75rem;
354
+ }
355
+
356
+ .ff-time-units,
357
+ .ff-burn-grid {
358
+ grid-template-columns: 1fr;
359
+ }
360
+
361
+ .ff-unit-card,
362
+ .ff-burn-card,
363
+ .ff-what-if-card {
364
+ padding: 1rem;
365
+ border-radius: 1rem;
366
+ }
367
+
368
+ .ff-unit-val {
369
+ font-size: 1.5rem;
370
+ }
371
+
372
+ .ff-burn-val,
373
+ .ff-gain-display {
374
+ font-size: 1.25rem;
375
+ }
376
+
377
+ .ff-what-if-title {
378
+ font-size: 1.25rem;
379
+ }
380
+
381
+ .ff-switch {
382
+ width: 100%;
383
+ }
384
+
385
+ .ff-switch-btn {
386
+ flex: 1;
387
+ }
299
388
  }
300
389
 
301
390
  .ff-currency-select {
@@ -82,7 +82,7 @@ export const content: ToolLocaleContent<FinancialFreedomUI> = {
82
82
  },
83
83
  {
84
84
  type: 'paragraph',
85
- html: 'To find your runway, we divide your total liquid savings by your periodic expenses. Our calculator goes further by breaking this down into years, months, and days, giving you a tangible sense of your financial weight. We also calculate your <strong>Burn Rate</strong>—the precise amount of money that leaves your pocket every single day.',
85
+ html: 'To find your runway, we divide your total liquid savings by your periodic expenses. Our calculator goes further by breaking this down into years, months, and days, giving you a tangible sense of your financial weight. We also calculate your <strong>Burn Rate</strong>-the precise amount of money that leaves your pocket every single day.',
86
86
  },
87
87
  {
88
88
  type: 'comparative',
@@ -14,9 +14,9 @@ export const ui: FinancialFreedomUI = {
14
14
  labelMonthsShort: 'm',
15
15
  labelDaysShort: 'j',
16
16
  labelStatus: 'État de Sécurité Financière',
17
- labelRedZone: 'Zone Rouge : Risque Élevé',
18
- labelYellowZone: 'Zone Jaune : Stable',
19
- labelGreenZone: 'Zone Verte : Liberté Financière',
17
+ labelRedZone: 'Zone Rouge: Risque Élevé',
18
+ labelYellowZone: 'Zone Jaune: Stable',
19
+ labelGreenZone: 'Zone Verte: Liberté Financière',
20
20
  labelBurnRateDaily: 'Taux de Dépense Quotidien',
21
21
  labelBurnRateMonthly: 'Taux de Dépense Mensuel',
22
22
  labelWhatIf: 'Le Pouvoir des 10%',
@@ -41,7 +41,7 @@ const faq = [
41
41
  },
42
42
  {
43
43
  question: 'Что такое "Burn Rate" в личных финансах?',
44
- answer: 'Burn rate (скорость сжигания) — это темп, с которым вы тратите свои сбережения на покрытие расходов.',
44
+ answer: 'Burn rate (скорость сжигания) - это темп, с которым вы тратите свои сбережения на покрытие расходов.',
45
45
  },
46
46
  ];
47
47
 
@@ -73,7 +73,7 @@ export const content: ToolLocaleContent<FinancialFreedomUI> = {
73
73
  },
74
74
  {
75
75
  type: 'paragraph',
76
- html: '<strong>Запас выживания</strong> (runway) — это время, которое вы можете прожить без новых доходов. Это главный показатель финансовой свободы.',
76
+ html: '<strong>Запас выживания</strong> (runway) - это время, которое вы можете прожить без новых доходов. Это главный показатель финансовой свободы.',
77
77
  },
78
78
  ],
79
79
  faq,
@@ -40,7 +40,7 @@ const faq = [
40
40
  answer: '此工具专为流动资产与当前支出的即时计算而设计。',
41
41
  },
42
42
  {
43
- question: '个人财务中的“烧钱率”是什么?',
43
+ question: '个人财务中的"烧钱率"是什么?',
44
44
  answer: '烧钱率是指您消耗储蓄以支付生活费用的速度。',
45
45
  },
46
46
  ];
@@ -1,13 +1,15 @@
1
1
  ---
2
2
  import { SEORenderer } from '@jjlmoya/utils-shared';
3
- import type { FinancialFreedomLocaleContent } from './entry';
3
+ import { financialFreedom } from './entry';
4
+ import type { KnownLocale } from '../../types';
4
5
 
5
6
  interface Props {
6
- content: FinancialFreedomLocaleContent;
7
- locale: string;
7
+ locale?: KnownLocale;
8
8
  }
9
9
 
10
- const { content, locale } = Astro.props;
10
+ const { locale = 'es' } = Astro.props;
11
+ const content = await financialFreedom.i18n[locale]?.();
12
+ if (!content) return null;
11
13
  ---
12
14
 
13
- {content.seo && content.seo.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -5,15 +5,15 @@ import type { FIRECalculatorUI } from '../ui';
5
5
 
6
6
  const slug = 'calcolatore-regola-4-per-cento-fire';
7
7
  const title = 'Calcolatore FIRE: Regola del 4% per la tua Libertà Finanziaria';
8
- const description = 'Calcola il tuo numero magico per l’indipendenza finanziaria usando la regola del 4%. Pianifica il tuo pensionamento anticipato e visualizza il tuo percorso verso la libertà economica.';
8
+ const description = 'Calcola il tuo numero magico per l\'indipendenza finanziaria usando la regola del 4%. Pianifica il tuo pensionamento anticipato e visualizza il tuo percorso verso la libertà economica.';
9
9
 
10
10
  const faqData = [
11
11
  {
12
- question: 'Cos’è la Regola del 4%?',
13
- answer: 'La Regola del 4% è una strategia di prelievo basata sullo Studio Trinity che indica che puoi prelevare il 4% del tuo patrimonio il primo anno di pensionamento, adeguandolo all’inflazione negli anni successivi, senza esaurire i fondi in 30 anni.',
12
+ question: 'Cos\'è la Regola del 4%?',
13
+ answer: 'La Regola del 4% è una strategia di prelievo basata sullo Studio Trinity che indica che puoi prelevare il 4% del tuo patrimonio il primo anno di pensionamento, adeguandolo all\'inflazione negli anni successivi, senza esaurire i fondi in 30 anni.',
14
14
  },
15
15
  {
16
- question: 'Cos’è FIRE?',
16
+ question: 'Cos\'è FIRE?',
17
17
  answer: 'FIRE sta per Financial Independence, Retire Early (Indipendenza Finanziaria, Pensionamento Anticipato). È un movimento che mira a raggiungere la libertà economica attraverso una combinazione aggressiva di risparmio e investimento intelligente.',
18
18
  },
19
19
  {
@@ -21,7 +21,7 @@ const faqData = [
21
21
  answer: 'Il tuo numero magico è il patrimonio totale che devi accumulare per poter vivere di rendita senza lavorare. Si calcola dividendo le tue spese annuali per il tasso di prelievo sicuro (solitamente il 4%).',
22
22
  },
23
23
  {
24
- question: 'Che differenza c’è tra Lean, Barista e Fat FIRE?',
24
+ question: 'Che differenza c\'è tra Lean, Barista e Fat FIRE?',
25
25
  answer: 'Lean FIRE significa vivere con spese minime (70% delle spese attuali), Barista FIRE significa lavorare part-time mentre le rendite coprono il resto (50% delle spese), e Fat FIRE significa avere uno stile di vita agiato (150% delle spese).',
26
26
  },
27
27
  {
@@ -113,16 +113,16 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
113
113
  },
114
114
  {
115
115
  type: 'title',
116
- text: 'Cos’è il Movimento FIRE?',
116
+ text: 'Cos\'è il Movimento FIRE?',
117
117
  level: 3,
118
118
  },
119
119
  {
120
120
  type: 'list',
121
121
  items: [
122
- 'FIRE è l’acronimo di Financial Independence, Retire Early (Indipendenza Finanziaria, Pensionamento Anticipato).',
122
+ 'FIRE è l\'acronimo di Financial Independence, Retire Early (Indipendenza Finanziaria, Pensionamento Anticipato).',
123
123
  'Cerca la libertà di scegliere cosa fare del proprio tempo senza che il denaro sia un vincolo.',
124
- 'Si basa sull’ottimizzazione del risparmio e sull’investimento intelligente.',
125
- 'L’obiettivo è che i tuoi asset generino un flusso di cassa sufficiente a coprire le tue spese.',
124
+ 'Si basa sull\'ottimizzazione del risparmio e sull\'investimento intelligente.',
125
+ 'L\'obiettivo è che i tuoi asset generino un flusso di cassa sufficiente a coprire le tue spese.',
126
126
  ],
127
127
  },
128
128
  {
@@ -162,7 +162,7 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
162
162
  '<strong>Tracciamento Spese:</strong> Analizza le tue spese reali degli ultimi 12 mesi.',
163
163
  '<strong>Definizione SWR:</strong> Scegli il tuo tasso di prelievo sicuro in base al rischio.',
164
164
  '<strong>Patrimonio Attuale:</strong> Inserisci il valore dei tuoi investimenti attuali.',
165
- '<strong>Capacità di Risparmio:</strong> Proietta quanto tempo ti manca all’obiettivo.',
165
+ '<strong>Capacità di Risparmio:</strong> Proietta quanto tempo ti manca all\'obiettivo.',
166
166
  '<strong>Visualizzazione Grafica:</strong> Analizza il grafico di crescita della tua ricchezza.',
167
167
  ],
168
168
  },
@@ -197,17 +197,17 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
197
197
  },
198
198
  {
199
199
  type: 'title',
200
- text: 'Fattore Critico: L’Inflazione',
200
+ text: 'Fattore Critico: L\'Inflazione',
201
201
  level: 3,
202
202
  },
203
203
  {
204
204
  type: 'paragraph',
205
- html: 'Ricorda che 1.000€ oggi non compreranno la stessa cosa in futuro. È vitale usare rendimenti reali (al netto dell’inflazione) affinché le tue proiezioni mantengano il potere d’acquisto attuale. La Regola del 4% assume che tu adegui i tuoi prelievi annualmente all’inflazione.',
205
+ html: 'Ricorda che 1.000€ oggi non compreranno la stessa cosa in futuro. È vitale usare rendimenti reali (al netto dell\'inflazione) affinché le tue proiezioni mantengano il potere d\'acquisto attuale. La Regola del 4% assume che tu adegui i tuoi prelievi annualmente all\'inflazione.',
206
206
  },
207
207
  ],
208
208
  ui: {
209
209
  labelTitle: 'Calcolatore FIRE: Regola del 4%',
210
- labelDescription: 'Calcola il tuo numero magico per l’indipendenza finanziaria usando la regola del 4% e visualizza le tue tappe verso la libertà.',
210
+ labelDescription: 'Calcola il tuo numero magico per l\'indipendenza finanziaria usando la regola del 4% e visualizza le tue tappe verso la libertà.',
211
211
  labelMonthlyExpenses: 'Spese Mensili',
212
212
  labelSWR: 'Tasso di Prelievo (SWR)',
213
213
  labelCurrentWorth: 'Patrimonio Attuale',
@@ -233,7 +233,7 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
233
233
  labelAdded: 'Aggiunto:',
234
234
  labelSavePlan: 'Salva Piano',
235
235
  labelSWRTooltip: 'Safe Withdrawal Rate: Percentuale dei tuoi risparmi che puoi prelevare ogni anno senza esaurire i soldi.',
236
- labelReturnTooltip: 'Rendimento annuale del mercato (già al netto dell’inflazione). Lo standard storico è il 7%.',
236
+ labelReturnTooltip: 'Rendimento annuale del mercato (già al netto dell\'inflazione). Lo standard storico è il 7%.',
237
237
  currencySymbol: '€',
238
238
  currencyCode: 'EUR',
239
239
  currencyLocale: 'it-IT',
@@ -10,7 +10,7 @@ const description = 'Рассчитайте свое магическое чис
10
10
  const faqData = [
11
11
  {
12
12
  question: 'Что такое правило 4%?',
13
- answer: 'Правило 4% — это стратегия снятия средств, основанная на «Исследовании Тринити», которая гласит, что вы можете снимать 4% своего капитала в первый год выхода на пенсию, корректируя эту сумму на инфляцию в последующие годы, не исчерпав при этом свои средства в течение 30 лет.',
13
+ answer: 'Правило 4% - это стратегия снятия средств, основанная на "Исследовании Тринити", которая гласит, что вы можете снимать 4% своего капитала в первый год выхода на пенсию, корректируя эту сумму на инфляцию в последующие годы, не исчерпав при этом свои средства в течение 30 лет.',
14
14
  },
15
15
  {
16
16
  question: 'Что такое FIRE?',
@@ -18,11 +18,11 @@ const faqData = [
18
18
  },
19
19
  {
20
20
  question: 'Каково мое магическое число?',
21
- answer: 'Ваше магическое число — это общий капитал, который вам необходимо накопить, чтобы иметь возможность жить на доходы от него, не работая. Оно рассчитывается путем деления ваших годовых расходов на безопасную ставку снятия (обычно 4%).',
21
+ answer: 'Ваше магическое число - это общий капитал, который вам необходимо накопить, чтобы иметь возможность жить на доходы от него, не работая. Оно рассчитывается путем деления ваших годовых расходов на безопасную ставку снятия (обычно 4%).',
22
22
  },
23
23
  {
24
24
  question: 'В чем разница между Lean, Barista и Fat FIRE?',
25
- answer: 'Lean FIRE — это жизнь с минимальными расходами (70% от текущих расходов), Barista FIRE — это работа на неполный рабочий день, пока доходы от инвестиций покрывают остальное (50% расходов), и Fat FIRE — это обеспеченный образ жизни (150% расходов).',
25
+ answer: 'Lean FIRE - это жизнь с минимальными расходами (70% от текущих расходов), Barista FIRE - это работа на неполный рабочий день, пока доходы от инвестиций покрывают остальное (50% расходов), и Fat FIRE - это обеспеченный образ жизни (150% расходов).',
26
26
  },
27
27
  {
28
28
  question: 'Реалистично ли правило 4%?',
@@ -99,7 +99,7 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
99
99
  },
100
100
  {
101
101
  type: 'paragraph',
102
- html: 'Узнайте, как рассчитать капитал, необходимый для того, чтобы жить на проценты вечно. <strong>Правило 4%</strong> появилось в результате «Исследования Тринити», проведенного в 1998 году тремя профессорами финансов. Они проанализировали исторические данные с 1926 года, чтобы определить, какой процент можно снимать ежегодно, не исчерпав портфель в течение 30 лет.',
102
+ html: 'Узнайте, как рассчитать капитал, необходимый для того, чтобы жить на проценты вечно. <strong>Правило 4%</strong> появилось в результате "Исследования Тринити", проведенного в 1998 году тремя профессорами финансов. Они проанализировали исторические данные с 1926 года, чтобы определить, какой процент можно снимать ежегодно, не исчерпав портфель в течение 30 лет.',
103
103
  },
104
104
  {
105
105
  type: 'stats',
@@ -119,7 +119,7 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
119
119
  {
120
120
  type: 'list',
121
121
  items: [
122
- 'FIRE — это аббревиатура от Financial Independence, Retire Early (Финансовая независимость, ранний выход на пенсию).',
122
+ 'FIRE - это аббревиатура от Financial Independence, Retire Early (Финансовая независимость, ранний выход на пенсию).',
123
123
  'Стремление получить свободу выбора того, что делать со своим временем, не завися от денег.',
124
124
  'Основано на оптимизации сбережений и разумном инвестировании.',
125
125
  'Цель состоит в том, чтобы ваши активы приносили достаточный денежный поток для покрытия ваших расходов.',
@@ -233,7 +233,7 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
233
233
  labelAdded: 'Добавлено:',
234
234
  labelSavePlan: 'Сохранить план',
235
235
  labelSWRTooltip: 'Safe Withdrawal Rate: процент ваших сбережений, который вы можете снимать каждый год, не рискуя остаться без денег.',
236
- labelReturnTooltip: 'Ежегодная доходность рынка (уже за вычетом инфляции). Исторический стандарт — 7%.',
236
+ labelReturnTooltip: 'Ежегодная доходность рынка (уже за вычетом инфляции). Исторический стандарт - 7%.',
237
237
  currencySymbol: '₽',
238
238
  currencyCode: 'RUB',
239
239
  currencyLocale: 'ru-RU',
@@ -10,7 +10,7 @@ const description = '%4 kuralını kullanarak finansal bağımsızlık için sih
10
10
  const faqData = [
11
11
  {
12
12
  question: '%4 Kuralı Nedir?',
13
- answer: '%4 Kuralı, Trinity Çalışması’na dayanan bir çekim stratejisidir; emekliliğin ilk yılında mal varlığınızın %4’ünü çekebileceğinizi ve sonraki yıllarda enflasyona göre ayarlama yaparak fonlarınızı 30 yıl boyunca tüketmeden yaşayabileceğinizi belirtir.',
13
+ answer: '%4 Kuralı, Trinity Çalışması\'na dayanan bir çekim stratejisidir; emekliliğin ilk yılında mal varlığınızın %4\'ünü çekebileceğinizi ve sonraki yıllarda enflasyona göre ayarlama yaparak fonlarınızı 30 yıl boyunca tüketmeden yaşayabileceğinizi belirtir.',
14
14
  },
15
15
  {
16
16
  question: 'FIRE Nedir?',
@@ -22,11 +22,11 @@ const faqData = [
22
22
  },
23
23
  {
24
24
  question: 'Lean, Barista ve Fat FIRE Arasındaki Fark Nedir?',
25
- answer: 'Lean FIRE, minimum giderlerle yaşamak (mevcut giderlerin %70’i), Barista FIRE, getiriler geri kalanını karşılarken yarı zamanlı çalışmak (%50 gider) ve Fat FIRE, lüks bir yaşam tarzına sahip olmaktır (%150 gider).',
25
+ answer: 'Lean FIRE, minimum giderlerle yaşamak (mevcut giderlerin %70\'i), Barista FIRE, getiriler geri kalanını karşılarken yarı zamanlı çalışmak (%50 gider) ve Fat FIRE, lüks bir yaşam tarzına sahip olmaktır (%150 gider).',
26
26
  },
27
27
  {
28
28
  question: '%4 Kuralı Gerçekçi mi?',
29
- answer: '%4 kuralı, 30 yıl boyunca %50 hisse senedi-%50 tahvil portföyünde %95’lik bir tarihsel başarı olasılığına sahiptir. Ancak, getiri dizisi riskini hesaba katmaz ve esas olarak ABD piyasa verilerine dayanır.',
29
+ answer: '%4 kuralı, 30 yıl boyunca %50 hisse senedi-%50 tahvil portföyünde %95\'lik bir tarihsel başarı olasılığına sahiptir. Ancak, getiri dizisi riskini hesaba katmaz ve esas olarak ABD piyasa verilerine dayanır.',
30
30
  },
31
31
  ];
32
32
 
@@ -99,7 +99,7 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
99
99
  },
100
100
  {
101
101
  type: 'paragraph',
102
- html: 'Sonsuza dek getirilerle yaşamak için gereken mal varlığını nasıl hesaplayacağınızı keşfedin. <strong>%4 Kuralı</strong>, 1998 yılında üç finans profesörü tarafından yürütülen Trinity Çalışması’ndan doğmuştur. Portföyü 30 yılda tüketmeden yıllık olarak hangi yüzdenin çekilebileceğini belirlemek için 1926’dan bu yana olan tarihsel verileri analiz ettiler.',
102
+ html: 'Sonsuza dek getirilerle yaşamak için gereken mal varlığını nasıl hesaplayacağınızı keşfedin. <strong>%4 Kuralı</strong>, 1998 yılında üç finans profesörü tarafından yürütülen Trinity Çalışması\'ndan doğmuştur. Portföyü 30 yılda tüketmeden yıllık olarak hangi yüzdenin çekilebileceğini belirlemek için 1926\'dan bu yana olan tarihsel verileri analiz ettiler.',
103
103
  },
104
104
  {
105
105
  type: 'stats',
@@ -202,7 +202,7 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
202
202
  },
203
203
  {
204
204
  type: 'paragraph',
205
- html: 'Bugünkü 1.000 TL’nin gelecekte aynı şeyi satın almayacağını unutmayın. Projeksiyonlarınızın mevcut satın alma gücünü koruması için reel getirileri (enflasyon düşülmüş) kullanmak hayati önem taşır. %4 Kuralı, çekimlerinizi her yıl enflasyona göre ayarladığınızı varsayar.',
205
+ html: 'Bugünkü 1.000 TL\'nin gelecekte aynı şeyi satın almayacağını unutmayın. Projeksiyonlarınızın mevcut satın alma gücünü koruması için reel getirileri (enflasyon düşülmüş) kullanmak hayati önem taşır. %4 Kuralı, çekimlerinizi her yıl enflasyona göre ayarladığınızı varsayar.',
206
206
  },
207
207
  ],
208
208
  ui: {
@@ -233,7 +233,7 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
233
233
  labelAdded: 'Eklendi:',
234
234
  labelSavePlan: 'Planı Kaydet',
235
235
  labelSWRTooltip: 'Safe Withdrawal Rate: Tasarruflarınızın bitme riski olmadan her yıl çekebileceğiniz yüzdesi.',
236
- labelReturnTooltip: 'Yıllık piyasa getirisi (enflasyon düşülmüş hali). Tarihsel standart %7’dir.',
236
+ labelReturnTooltip: 'Yıllık piyasa getirisi (enflasyon düşülmüş hali). Tarihsel standart %7\'dir.',
237
237
  currencySymbol: '₺',
238
238
  currencyCode: 'TRY',
239
239
  currencyLocale: 'tr-TR',
@@ -5,12 +5,12 @@ import type { FIRECalculatorUI } from '../ui';
5
5
 
6
6
  const slug = 'four-percent-rule-fire-calculator';
7
7
  const title = 'FIRE 计算器:实现财务自由的 4% 法则';
8
- const description = '使用 4% 法则计算实现财务独立所需积累的“魔法数字”。规划您的提前退休生活,并可视化通往经济自由的道路。';
8
+ const description = '使用 4% 法则计算实现财务独立所需积累的"魔法数字"。规划您的提前退休生活,并可视化通往经济自由的道路。';
9
9
 
10
10
  const faqData = [
11
11
  {
12
12
  question: '什么是 4% 法则?',
13
- answer: '4% 法则是基于“三一研究”(Trinity Study)的一种提款策略。它指出,如果您在退休的第一年提取资产的 4%,并在随后的几年中根据通货膨胀进行调整,您可以在 30 年内不耗尽资金。',
13
+ answer: '4% 法则是基于"三一研究"(Trinity Study)的一种提款策略。它指出,如果您在退休的第一年提取资产的 4%,并在随后的几年中根据通货膨胀进行调整,您可以在 30 年内不耗尽资金。',
14
14
  },
15
15
  {
16
16
  question: '什么是 FIRE?',
@@ -99,7 +99,7 @@ export const content: ToolLocaleContent<FIRECalculatorUI> = {
99
99
  },
100
100
  {
101
101
  type: 'paragraph',
102
- html: '探索如何计算实现永续投资收益生活所需的资产规模。<strong>4% 法则</strong>源于 1998 年由三位财务教授进行的“三一研究”。他们分析了自 1926 年以来的历史数据,以确定每年可以提取多大比例的资金而不会在 30 年内耗尽投资组合。',
102
+ html: '探索如何计算实现永续投资收益生活所需的资产规模。<strong>4% 法则</strong>源于 1998 年由三位财务教授进行的"三一研究"。他们分析了自 1926 年以来的历史数据,以确定每年可以提取多大比例的资金而不会在 30 年内耗尽投资组合。',
103
103
  },
104
104
  {
105
105
  type: 'stats',
@@ -92,7 +92,7 @@ export const content: ToolLocaleContent<IBANBICSwiftUI> = {
92
92
  seo: [
93
93
  {
94
94
  type: 'title',
95
- text: 'Convertisseur IBAN en BIC/SWIFT : Recherche Instantanée',
95
+ text: 'Convertisseur IBAN en BIC/SWIFT: Recherche Instantanée',
96
96
  level: 2,
97
97
  },
98
98
  {
@@ -9,19 +9,19 @@ const description = 'Ottieni istantaneamente il codice BIC/SWIFT di qualsiasi IB
9
9
 
10
10
  const faqData = [
11
11
  {
12
- question: 'Cos’è il codice BIC o SWIFT?',
13
- answer: 'È l’identificatore internazionale della tua banca. È necessario affinché il denaro sappia verso quale entità deve dirigersi quando viaggia fuori dalla zona SEPA (Europa).',
12
+ question: 'Cos\'è il codice BIC o SWIFT?',
13
+ answer: 'È l\'identificatore internazionale della tua banca. È necessario affinché il denaro sappia verso quale entità deve dirigersi quando viaggia fuori dalla zona SEPA (Europa).',
14
14
  },
15
15
  {
16
16
  question: 'Come faccio a sapere qual è il BIC della mia banca?',
17
- answer: 'Puoi consultarlo nel tuo online banking o usare il nostro convertitore. Per le banche spagnole, inserendo l’IBAN, estraiamo il codice dell’entità e ti forniamo il BIC corrispondente.',
17
+ answer: 'Puoi consultarlo nel tuo online banking o usare il nostro convertitore. Per le banche spagnole, inserendo l\'IBAN, estraiamo il codice dell\'entità e ti forniamo il BIC corrispondente.',
18
18
  },
19
19
  {
20
20
  question: 'È sicuro inserire il mio IBAN qui?',
21
21
  answer: 'Assolutamente sì. Il nostro strumento convalida il codice localmente nel tuo browser. Non salviamo né inviamo i tuoi dati bancari a nessun server esterno.',
22
22
  },
23
23
  {
24
- question: 'Perché l’IBAN ha 24 caratteri in Spagna?',
24
+ question: 'Perché l\'IBAN ha 24 caratteri in Spagna?',
25
25
  answer: 'È una norma standard. I primi 4 identificano il paese e il controllo, e gli altri 20 sono il vecchio numero di conto.',
26
26
  },
27
27
  ];
@@ -37,11 +37,11 @@ const howToData = [
37
37
  },
38
38
  {
39
39
  name: 'Premi il pulsante di conversione',
40
- text: 'Il sistema convaliderà che le cifre di controllo siano corrette mediante l’algoritmo Modulo 97.',
40
+ text: 'Il sistema convaliderà che le cifre di controllo siano corrette mediante l\'algoritmo Modulo 97.',
41
41
  },
42
42
  {
43
43
  name: 'Copia il risultato',
44
- text: 'Otterrai il codice BIC/SWIFT e il nome dell’entità bancaria pronti da copiare e usare.',
44
+ text: 'Otterrai il codice BIC/SWIFT e il nome dell\'entità bancaria pronti da copiare e usare.',
45
45
  },
46
46
  ];
47
47
 
@@ -105,7 +105,7 @@ export const content: ToolLocaleContent<IBANBICSwiftUI> = {
105
105
  labelBIC: 'Codice BIC / SWIFT',
106
106
  labelCountry: 'Paese / Formato',
107
107
  labelBank: 'Entità Bancaria',
108
- labelError: 'L’IBAN inserito non sembra essere valido. Controlla le cifre.',
108
+ labelError: 'L\'IBAN inserito non sembra essere valido. Controlla le cifre.',
109
109
  labelCopyButton: 'Copia',
110
110
  labelCopied: 'Copiato',
111
111
  labelBankNotIdentified: 'Entità non identificata',
@@ -22,7 +22,7 @@ const faqData = [
22
22
  },
23
23
  {
24
24
  question: 'Почему в Испании IBAN состоит из 24 символов?',
25
- answer: 'Это стандартная норма. Первые 4 символа идентифицируют страну и контрольное число, а остальные 20 — это старый номер счета.',
25
+ answer: 'Это стандартная норма. Первые 4 символа идентифицируют страну и контрольное число, а остальные 20 - это старый номер счета.',
26
26
  },
27
27
  ];
28
28
 
@@ -4,8 +4,8 @@ import type { ToolLocaleContent } from '../../../types';
4
4
  import type { IBANBICSwiftUI } from '../ui';
5
5
 
6
6
  const slug = 'iban-bic-swift-donusturucu';
7
- const title = 'IBAN’dan BIC SWIFT’e Dönüştürücü ve Banka Arama';
8
- const description = 'Herhangi bir İspanyol IBAN’ının BIC/SWIFT kodunu anında alın. Transferler için resmi algoritmalı banka hesabı doğrulayıcı.';
7
+ const title = 'IBAN\'dan BIC SWIFT\'e Dönüştürücü ve Banka Arama';
8
+ const description = 'Herhangi bir İspanyol IBAN\'ının BIC/SWIFT kodunu anında alın. Transferler için resmi algoritmalı banka hesabı doğrulayıcı.';
9
9
 
10
10
  const faqData = [
11
11
  {
@@ -21,7 +21,7 @@ const faqData = [
21
21
  answer: 'Tamamen güvenli. Aracımız kodu yerel olarak tarayıcınızda doğrular. Banka verilerinizi kaydetmiyoruz veya harici bir sunucuya göndermiyoruz.',
22
22
  },
23
23
  {
24
- question: 'İspanya’da IBAN neden 24 karakterden oluşur?',
24
+ question: 'İspanya\'da IBAN neden 24 karakterden oluşur?',
25
25
  answer: 'Bu standart bir normdur. İlk 4 karakter ülkeyi ve kontrolü tanımlar, diğer 20 karakter ise eski banka hesap numarasıdır.',
26
26
  },
27
27
  ];
@@ -88,7 +88,7 @@ export const content: ToolLocaleContent<IBANBICSwiftUI> = {
88
88
  seo: [
89
89
  {
90
90
  type: 'title',
91
- text: 'IBAN’dan BIC/SWIFT’e Dönüştürücü: Banka kodlarınız hakkında bilmeniz gereken her şey',
91
+ text: 'IBAN\'dan BIC/SWIFT\'e Dönüştürücü: Banka kodlarınız hakkında bilmeniz gereken her şey',
92
92
  level: 2,
93
93
  },
94
94
  {
@@ -97,7 +97,7 @@ export const content: ToolLocaleContent<IBANBICSwiftUI> = {
97
97
  },
98
98
  ],
99
99
  ui: {
100
- labelTitle: 'IBAN’dan BIC / SWIFT’e Dönüştürücü',
100
+ labelTitle: 'IBAN\'dan BIC / SWIFT\'e Dönüştürücü',
101
101
  labelDescription: 'Herhangi bir İspanyol banka hesabının BIC kodunu anında hesaplayın.',
102
102
  labelInputIBAN: 'IBAN numaranızı girin',
103
103
  labelInputPlaceholder: 'ES00 0000 0000 0000 0000 0000',