@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.
- package/package.json +2 -1
- package/src/category/i18n/de.ts +158 -0
- package/src/category/i18n/id.ts +158 -0
- package/src/category/i18n/it.ts +158 -0
- package/src/category/i18n/ja.ts +158 -0
- package/src/category/i18n/ko.ts +158 -0
- package/src/category/i18n/nl.ts +158 -0
- package/src/category/i18n/pl.ts +158 -0
- package/src/category/i18n/pt.ts +158 -0
- package/src/category/i18n/ru.ts +158 -0
- package/src/category/i18n/sv.ts +158 -0
- package/src/category/i18n/tr.ts +158 -0
- package/src/category/i18n/zh.ts +158 -0
- package/src/category/index.ts +13 -1
- package/src/tests/category_validation.test.ts +73 -0
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +3 -0
- package/src/tests/slug_language_code_format.test.ts +23 -0
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tests/title_quality.test.ts +1 -1
- package/src/tool/compoundInterest/i18n/de.ts +208 -0
- package/src/tool/compoundInterest/i18n/id.ts +208 -0
- package/src/tool/compoundInterest/i18n/it.ts +208 -0
- package/src/tool/compoundInterest/i18n/ja.ts +207 -0
- package/src/tool/compoundInterest/i18n/ko.ts +207 -0
- package/src/tool/compoundInterest/i18n/nl.ts +208 -0
- package/src/tool/compoundInterest/i18n/pl.ts +208 -0
- package/src/tool/compoundInterest/i18n/pt.ts +208 -0
- package/src/tool/compoundInterest/i18n/ru.ts +208 -0
- package/src/tool/compoundInterest/i18n/sv.ts +208 -0
- package/src/tool/compoundInterest/i18n/tr.ts +208 -0
- package/src/tool/compoundInterest/i18n/zh.ts +202 -0
- package/src/tool/compoundInterest/index.ts +15 -7
- package/src/tool/courtFeeCalculator/i18n/de.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/fr.ts +1 -1
- package/src/tool/courtFeeCalculator/i18n/id.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/it.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/ja.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/ko.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/nl.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/pl.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/pt.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/ru.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/sv.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/tr.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/zh.ts +152 -0
- package/src/tool/courtFeeCalculator/index.ts +16 -8
- package/src/tool/debtSnowball/i18n/de.ts +160 -0
- package/src/tool/debtSnowball/i18n/id.ts +160 -0
- package/src/tool/debtSnowball/i18n/it.ts +160 -0
- package/src/tool/debtSnowball/i18n/ja.ts +157 -0
- package/src/tool/debtSnowball/i18n/ko.ts +160 -0
- package/src/tool/debtSnowball/i18n/nl.ts +160 -0
- package/src/tool/debtSnowball/i18n/pl.ts +160 -0
- package/src/tool/debtSnowball/i18n/pt.ts +160 -0
- package/src/tool/debtSnowball/i18n/ru.ts +160 -0
- package/src/tool/debtSnowball/i18n/sv.ts +160 -0
- package/src/tool/debtSnowball/i18n/tr.ts +160 -0
- package/src/tool/debtSnowball/i18n/zh.ts +160 -0
- package/src/tool/debtSnowball/index.ts +17 -9
- package/src/tool/fireCalculator/i18n/de.ts +261 -0
- package/src/tool/fireCalculator/i18n/id.ts +261 -0
- package/src/tool/fireCalculator/i18n/it.ts +261 -0
- package/src/tool/fireCalculator/i18n/ja.ts +261 -0
- package/src/tool/fireCalculator/i18n/ko.ts +261 -0
- package/src/tool/fireCalculator/i18n/nl.ts +261 -0
- package/src/tool/fireCalculator/i18n/pl.ts +261 -0
- package/src/tool/fireCalculator/i18n/pt.ts +261 -0
- package/src/tool/fireCalculator/i18n/ru.ts +261 -0
- package/src/tool/fireCalculator/i18n/sv.ts +261 -0
- package/src/tool/fireCalculator/i18n/tr.ts +261 -0
- package/src/tool/fireCalculator/i18n/zh.ts +261 -0
- package/src/tool/fireCalculator/index.ts +15 -7
- package/src/tool/ibanBicSwiftConverter/i18n/de.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/id.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/it.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/ja.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/ko.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/nl.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/pl.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/pt.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/ru.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/sv.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/tr.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/zh.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/index.ts +15 -7
- package/src/tool/inflation/i18n/de.ts +297 -0
- package/src/tool/inflation/i18n/id.ts +297 -0
- package/src/tool/inflation/i18n/it.ts +297 -0
- package/src/tool/inflation/i18n/ja.ts +297 -0
- package/src/tool/inflation/i18n/ko.ts +297 -0
- package/src/tool/inflation/i18n/nl.ts +297 -0
- package/src/tool/inflation/i18n/pl.ts +297 -0
- package/src/tool/inflation/i18n/pt.ts +297 -0
- package/src/tool/inflation/i18n/ru.ts +297 -0
- package/src/tool/inflation/i18n/sv.ts +297 -0
- package/src/tool/inflation/i18n/tr.ts +297 -0
- package/src/tool/inflation/i18n/zh.ts +297 -0
- package/src/tool/inflation/index.ts +17 -9
- package/src/tool/lateInterest/i18n/de.ts +224 -0
- package/src/tool/lateInterest/i18n/id.ts +224 -0
- package/src/tool/lateInterest/i18n/it.ts +224 -0
- package/src/tool/lateInterest/i18n/ja.ts +224 -0
- package/src/tool/lateInterest/i18n/ko.ts +224 -0
- package/src/tool/lateInterest/i18n/nl.ts +224 -0
- package/src/tool/lateInterest/i18n/pl.ts +224 -0
- package/src/tool/lateInterest/i18n/pt.ts +224 -0
- package/src/tool/lateInterest/i18n/ru.ts +224 -0
- package/src/tool/lateInterest/i18n/sv.ts +224 -0
- package/src/tool/lateInterest/i18n/tr.ts +224 -0
- package/src/tool/lateInterest/i18n/zh.ts +224 -0
- package/src/tool/lateInterest/index.ts +17 -9
- package/src/tool/legalInterestRate/i18n/de.ts +143 -0
- package/src/tool/legalInterestRate/i18n/id.ts +143 -0
- package/src/tool/legalInterestRate/i18n/it.ts +143 -0
- package/src/tool/legalInterestRate/i18n/ja.ts +143 -0
- package/src/tool/legalInterestRate/i18n/ko.ts +143 -0
- package/src/tool/legalInterestRate/i18n/nl.ts +143 -0
- package/src/tool/legalInterestRate/i18n/pl.ts +143 -0
- package/src/tool/legalInterestRate/i18n/pt.ts +143 -0
- package/src/tool/legalInterestRate/i18n/ru.ts +143 -0
- package/src/tool/legalInterestRate/i18n/sv.ts +143 -0
- package/src/tool/legalInterestRate/i18n/tr.ts +143 -0
- package/src/tool/legalInterestRate/i18n/zh.ts +143 -0
- package/src/tool/legalInterestRate/index.ts +17 -9
- package/src/tool/lotteryOptimizer/i18n/de.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/id.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/it.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/ja.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/ko.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/nl.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/pl.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/pt.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/ru.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/sv.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/tr.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/zh.ts +177 -0
- package/src/tool/lotteryOptimizer/index.ts +17 -9
- package/src/tool/mortgage/i18n/de.ts +223 -0
- package/src/tool/mortgage/i18n/id.ts +219 -0
- package/src/tool/mortgage/i18n/it.ts +223 -0
- package/src/tool/mortgage/i18n/ja.ts +219 -0
- package/src/tool/mortgage/i18n/ko.ts +219 -0
- package/src/tool/mortgage/i18n/nl.ts +219 -0
- package/src/tool/mortgage/i18n/pl.ts +219 -0
- package/src/tool/mortgage/i18n/pt.ts +219 -0
- package/src/tool/mortgage/i18n/ru.ts +219 -0
- package/src/tool/mortgage/i18n/sv.ts +219 -0
- package/src/tool/mortgage/i18n/tr.ts +219 -0
- package/src/tool/mortgage/i18n/zh.ts +219 -0
- package/src/tool/mortgage/index.ts +15 -7
- package/src/tool/percentageCalculator/i18n/de.ts +229 -0
- package/src/tool/percentageCalculator/i18n/id.ts +229 -0
- package/src/tool/percentageCalculator/i18n/it.ts +229 -0
- package/src/tool/percentageCalculator/i18n/ja.ts +229 -0
- package/src/tool/percentageCalculator/i18n/ko.ts +229 -0
- package/src/tool/percentageCalculator/i18n/nl.ts +229 -0
- package/src/tool/percentageCalculator/i18n/pl.ts +229 -0
- package/src/tool/percentageCalculator/i18n/pt.ts +229 -0
- package/src/tool/percentageCalculator/i18n/ru.ts +229 -0
- package/src/tool/percentageCalculator/i18n/sv.ts +229 -0
- package/src/tool/percentageCalculator/i18n/tr.ts +229 -0
- package/src/tool/percentageCalculator/i18n/zh.ts +229 -0
- package/src/tool/percentageCalculator/index.ts +15 -7
- package/src/tool/rentIncreaseCalculator/i18n/de.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/id.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/it.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/ja.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/ko.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/nl.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/pl.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/pt.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/ru.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/sv.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/tr.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/zh.ts +136 -0
- package/src/tool/rentIncreaseCalculator/index.ts +17 -9
- package/src/types.ts +1 -1
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { RentIncreaseUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const slug = 'rent-increase-calculator';
|
|
6
|
+
const title = '西班牙租金上涨计算器 IPC 3% 上限';
|
|
7
|
+
const description = '根据西班牙《住房法》,使用消费者物价指数 (IPC) 或 3% 的法定上限计算您的租金更新。';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: '2024 年和 2025 年允许的最大租金涨幅是多少?',
|
|
12
|
+
answer: '根据第 12/2023 号《住房权法》,在 2024 年和 2025 年期间,常住住房租赁合同的租金每年最高涨幅被法律限制为 3%。',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: '每年必须根据 IPC 涨房租吗?',
|
|
16
|
+
answer: '并非法律强制。房租如果要涨,租赁合同中必须包含明确提到年度更新的条款。如果合同中没有该条款,则在合同有效期内必须维持最初约定的价格。',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: '房东必须提前多久通知房租上涨?',
|
|
20
|
+
answer: '房东必须至少提前一个月(30 天)以书面形式通知租客,告知新租金开始适用的日期。',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: '如果 IPC 高于 3% 的法定上限会怎样?',
|
|
24
|
+
answer: '即使国家统计局公布的实际 IPC 为 5% 或 6%,在 2024 年和 2025 年期间,常住住房的房东依法也不得要求超过 3% 的涨幅。',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{
|
|
30
|
+
name: '输入您当前的租金',
|
|
31
|
+
text: '输入您目前每月实际支付的租金金额。',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: '选择计算模式',
|
|
35
|
+
text: '选择 3% 的法定上限(推荐)或根据需要手动输入百分比。',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: '查看结果',
|
|
39
|
+
text: '您将立即获得预计的新租金、每月增加额以及每年的额外支出。',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: '复制摘要',
|
|
43
|
+
text: '生成一份快速报告,发送给房东或保存在您的笔记中。',
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
const bibliographyData = [
|
|
48
|
+
{
|
|
49
|
+
name: '第 12/2023 号西班牙住房权法 (BOE.es)',
|
|
50
|
+
url: 'https://www.boe.es/',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: '国家统计局 (INE) IPC 计算器',
|
|
54
|
+
url: 'https://www.ine.es/',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: '城市租赁法 (LAU)',
|
|
58
|
+
url: 'https://www.boe.es/',
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
const seoData = [
|
|
63
|
+
{
|
|
64
|
+
type: 'title',
|
|
65
|
+
text: '2026 年西班牙租金上涨计算器 3% 上限指南',
|
|
66
|
+
level: 2,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
type: 'paragraph',
|
|
70
|
+
html: '在西班牙,<strong>消费者物价指数 (IPC)</strong> 传统上是用于调整房租价格的指标。然而,随着第 <strong>12/2023 号《住房权法》</strong>的实施,引入了每个租客和房东都必须了解的限制。',
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
|
|
74
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
75
|
+
'@context': 'https://schema.org',
|
|
76
|
+
'@type': 'FAQPage',
|
|
77
|
+
mainEntity: faqData.map((item) => ({
|
|
78
|
+
'@type': 'Question',
|
|
79
|
+
name: item.question,
|
|
80
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
81
|
+
})),
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const howToSchema: WithContext<HowTo> = {
|
|
85
|
+
'@context': 'https://schema.org',
|
|
86
|
+
'@type': 'HowTo',
|
|
87
|
+
name: title,
|
|
88
|
+
description,
|
|
89
|
+
step: howToData.map((step, i) => ({
|
|
90
|
+
'@type': 'HowToStep',
|
|
91
|
+
position: i + 1,
|
|
92
|
+
name: step.name,
|
|
93
|
+
text: step.text,
|
|
94
|
+
})),
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
98
|
+
'@context': 'https://schema.org',
|
|
99
|
+
'@type': 'SoftwareApplication',
|
|
100
|
+
name: title,
|
|
101
|
+
description,
|
|
102
|
+
applicationCategory: 'FinanceApplication',
|
|
103
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export const content: ToolLocaleContent<RentIncreaseUI> = {
|
|
107
|
+
slug,
|
|
108
|
+
title,
|
|
109
|
+
description,
|
|
110
|
+
faqTitle: '常见问题',
|
|
111
|
+
bibliographyTitle: '来源与参考资料',
|
|
112
|
+
ui: {
|
|
113
|
+
labelTitle: '租金上涨计算器',
|
|
114
|
+
labelDescription: '根据 IPC 调整您的租金,或安全地应用 3% 的法定上限。',
|
|
115
|
+
labelCurrentRent: '当前租金',
|
|
116
|
+
labelCurrentRentPlaceholder: '例如 800',
|
|
117
|
+
labelIncrementType: '更新模式',
|
|
118
|
+
labelLegalLimit: '住房法上限 (3%)',
|
|
119
|
+
labelManualIncrement: '手动增加 (%)',
|
|
120
|
+
labelManualPercentagePlaceholder: '例如 2.5',
|
|
121
|
+
labelNewRentEstimate: '预计薪租金',
|
|
122
|
+
labelMonthlyIncrease: '每月增加额',
|
|
123
|
+
labelYearlyExtra: '每年额外支出',
|
|
124
|
+
labelLegalBadge: '根据 12/2023 号法律限制为 3%',
|
|
125
|
+
labelCopyButton: '复制发送给房东',
|
|
126
|
+
labelCopySuccess: '已复制!',
|
|
127
|
+
currencySymbol: '€',
|
|
128
|
+
currencyCode: 'EUR',
|
|
129
|
+
currencyLocale: 'zh-CN',
|
|
130
|
+
},
|
|
131
|
+
faq: faqData,
|
|
132
|
+
howTo: howToData,
|
|
133
|
+
bibliography: bibliographyData,
|
|
134
|
+
seo: seoData,
|
|
135
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
136
|
+
};
|
|
@@ -6,20 +6,28 @@ import type { RentIncreaseUI } from './ui';
|
|
|
6
6
|
|
|
7
7
|
export type RentIncreaseLocaleContent = ToolLocaleContent<RentIncreaseUI>;
|
|
8
8
|
|
|
9
|
-
import { content as es } from './i18n/es';
|
|
10
|
-
import { content as en } from './i18n/en';
|
|
11
|
-
import { content as fr } from './i18n/fr';
|
|
12
|
-
|
|
13
9
|
export const rentIncrease: FinanceToolEntry<RentIncreaseUI> = {
|
|
14
10
|
id: 'calculadora-subida-alquiler-ipc',
|
|
15
11
|
icons: {
|
|
16
|
-
bg: 'mdi:home-
|
|
17
|
-
fg: 'mdi:
|
|
12
|
+
bg: 'mdi:home-city',
|
|
13
|
+
fg: 'mdi:chart-bell-curve-cumulative',
|
|
18
14
|
},
|
|
19
15
|
i18n: {
|
|
20
|
-
|
|
21
|
-
en:
|
|
22
|
-
|
|
16
|
+
de: () => import('./i18n/de').then((m) => m.content),
|
|
17
|
+
en: () => import('./i18n/en').then((m) => m.content),
|
|
18
|
+
es: () => import('./i18n/es').then((m) => m.content),
|
|
19
|
+
fr: () => import('./i18n/fr').then((m) => m.content),
|
|
20
|
+
id: () => import('./i18n/id').then((m) => m.content),
|
|
21
|
+
it: () => import('./i18n/it').then((m) => m.content),
|
|
22
|
+
ja: () => import('./i18n/ja').then((m) => m.content),
|
|
23
|
+
ko: () => import('./i18n/ko').then((m) => m.content),
|
|
24
|
+
nl: () => import('./i18n/nl').then((m) => m.content),
|
|
25
|
+
pl: () => import('./i18n/pl').then((m) => m.content),
|
|
26
|
+
pt: () => import('./i18n/pt').then((m) => m.content),
|
|
27
|
+
ru: () => import('./i18n/ru').then((m) => m.content),
|
|
28
|
+
sv: () => import('./i18n/sv').then((m) => m.content),
|
|
29
|
+
tr: () => import('./i18n/tr').then((m) => m.content),
|
|
30
|
+
zh: () => import('./i18n/zh').then((m) => m.content),
|
|
23
31
|
},
|
|
24
32
|
};
|
|
25
33
|
|
package/src/types.ts
CHANGED
|
@@ -5,7 +5,7 @@ export type { SEOSection };
|
|
|
5
5
|
|
|
6
6
|
export type KnownLocale =
|
|
7
7
|
| 'ar' | 'da' | 'de' | 'en' | 'es' | 'fi'
|
|
8
|
-
| 'fr' | 'it' | 'ja' | 'ko' | 'nb' | 'nl'
|
|
8
|
+
| 'fr' | 'id' | 'it' | 'ja' | 'ko' | 'nb' | 'nl'
|
|
9
9
|
| 'pl' | 'pt' | 'ru' | 'sv' | 'tr' | 'zh';
|
|
10
10
|
|
|
11
11
|
export interface FAQItem {
|