@jjlmoya/utils-home 1.15.0 → 1.17.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 +5 -3
- package/scripts/postinstall.mjs +27 -0
- package/src/pages/[locale]/[slug].astro +28 -12
- package/src/tests/locale_completeness.test.ts +2 -20
- package/src/tests/shared-test-helpers.ts +56 -0
- package/src/tests/tool_exports.test.ts +34 -0
- package/src/tool/dewPointCalculator/bibliography.ts +10 -0
- package/src/tool/dewPointCalculator/component.astro +0 -232
- package/src/tool/dewPointCalculator/dew-point-calculator.css +230 -0
- package/src/tool/dewPointCalculator/i18n/de.ts +2 -12
- package/src/tool/dewPointCalculator/i18n/en.ts +2 -12
- package/src/tool/dewPointCalculator/i18n/es.ts +2 -12
- package/src/tool/dewPointCalculator/i18n/fr.ts +2 -12
- package/src/tool/dewPointCalculator/i18n/id.ts +2 -12
- package/src/tool/dewPointCalculator/i18n/it.ts +2 -12
- package/src/tool/dewPointCalculator/i18n/ja.ts +2 -12
- package/src/tool/dewPointCalculator/i18n/ko.ts +2 -12
- package/src/tool/dewPointCalculator/i18n/nl.ts +2 -12
- package/src/tool/dewPointCalculator/i18n/pl.ts +2 -12
- package/src/tool/dewPointCalculator/i18n/pt.ts +2 -12
- package/src/tool/dewPointCalculator/i18n/ru.ts +2 -12
- package/src/tool/dewPointCalculator/i18n/sv.ts +2 -12
- package/src/tool/dewPointCalculator/i18n/tr.ts +2 -12
- package/src/tool/dewPointCalculator/i18n/zh.ts +2 -12
- package/src/tool/dewPointCalculator/seo.astro +2 -1
- package/src/tool/heatingComparator/bibliography.ts +14 -0
- package/src/tool/heatingComparator/component.astro +0 -269
- package/src/tool/heatingComparator/heating-consumption-comparator.css +267 -0
- package/src/tool/heatingComparator/i18n/de.ts +2 -16
- package/src/tool/heatingComparator/i18n/en.ts +2 -12
- package/src/tool/heatingComparator/i18n/es.ts +2 -16
- package/src/tool/heatingComparator/i18n/fr.ts +2 -12
- package/src/tool/heatingComparator/i18n/id.ts +2 -16
- package/src/tool/heatingComparator/i18n/it.ts +2 -16
- package/src/tool/heatingComparator/i18n/ja.ts +296 -310
- package/src/tool/heatingComparator/i18n/ko.ts +296 -306
- package/src/tool/heatingComparator/i18n/nl.ts +2 -16
- package/src/tool/heatingComparator/i18n/pl.ts +2 -16
- package/src/tool/heatingComparator/i18n/pt.ts +2 -16
- package/src/tool/heatingComparator/i18n/ru.ts +2 -12
- package/src/tool/heatingComparator/i18n/sv.ts +2 -16
- package/src/tool/heatingComparator/i18n/tr.ts +2 -16
- package/src/tool/heatingComparator/i18n/zh.ts +296 -306
- package/src/tool/heatingComparator/seo.astro +3 -3
- package/src/tool/ledSavingCalculator/bibliography.ts +14 -0
- package/src/tool/ledSavingCalculator/component.astro +0 -305
- package/src/tool/ledSavingCalculator/i18n/de.ts +2 -12
- package/src/tool/ledSavingCalculator/i18n/en.ts +2 -16
- package/src/tool/ledSavingCalculator/i18n/es.ts +2 -16
- package/src/tool/ledSavingCalculator/i18n/fr.ts +2 -16
- package/src/tool/ledSavingCalculator/i18n/id.ts +2 -12
- package/src/tool/ledSavingCalculator/i18n/it.ts +2 -12
- package/src/tool/ledSavingCalculator/i18n/ja.ts +2 -12
- package/src/tool/ledSavingCalculator/i18n/ko.ts +2 -12
- package/src/tool/ledSavingCalculator/i18n/nl.ts +2 -12
- package/src/tool/ledSavingCalculator/i18n/pl.ts +2 -12
- package/src/tool/ledSavingCalculator/i18n/pt.ts +2 -12
- package/src/tool/ledSavingCalculator/i18n/ru.ts +2 -12
- package/src/tool/ledSavingCalculator/i18n/sv.ts +2 -12
- package/src/tool/ledSavingCalculator/i18n/tr.ts +2 -12
- package/src/tool/ledSavingCalculator/i18n/zh.ts +2 -12
- package/src/tool/ledSavingCalculator/led-saving-calculator.css +303 -0
- package/src/tool/ledSavingCalculator/seo.astro +2 -1
- package/src/tool/projectorCalculator/bibliography.ts +5 -0
- package/src/tool/projectorCalculator/component.astro +0 -359
- package/src/tool/projectorCalculator/i18n/de.ts +2 -6
- package/src/tool/projectorCalculator/i18n/en.ts +2 -7
- package/src/tool/projectorCalculator/i18n/es.ts +2 -7
- package/src/tool/projectorCalculator/i18n/fr.ts +2 -7
- package/src/tool/projectorCalculator/i18n/id.ts +2 -7
- package/src/tool/projectorCalculator/i18n/it.ts +2 -6
- package/src/tool/projectorCalculator/i18n/ja.ts +175 -179
- package/src/tool/projectorCalculator/i18n/ko.ts +175 -179
- package/src/tool/projectorCalculator/i18n/nl.ts +2 -6
- package/src/tool/projectorCalculator/i18n/pl.ts +2 -6
- package/src/tool/projectorCalculator/i18n/pt.ts +2 -6
- package/src/tool/projectorCalculator/i18n/ru.ts +2 -6
- package/src/tool/projectorCalculator/i18n/sv.ts +2 -6
- package/src/tool/projectorCalculator/i18n/tr.ts +2 -6
- package/src/tool/projectorCalculator/i18n/zh.ts +175 -179
- package/src/tool/projectorCalculator/projector-throw-calculator.css +357 -0
- package/src/tool/projectorCalculator/seo.astro +2 -1
- package/src/tool/qrGenerator/bibliography.ts +14 -0
- package/src/tool/qrGenerator/component.astro +0 -266
- package/src/tool/qrGenerator/i18n/de.ts +192 -202
- package/src/tool/qrGenerator/i18n/en.ts +2 -16
- package/src/tool/qrGenerator/i18n/es.ts +2 -16
- package/src/tool/qrGenerator/i18n/fr.ts +2 -16
- package/src/tool/qrGenerator/i18n/id.ts +146 -150
- package/src/tool/qrGenerator/i18n/it.ts +169 -173
- package/src/tool/qrGenerator/i18n/ja.ts +146 -150
- package/src/tool/qrGenerator/i18n/ko.ts +146 -150
- package/src/tool/qrGenerator/i18n/nl.ts +146 -150
- package/src/tool/qrGenerator/i18n/pl.ts +146 -150
- package/src/tool/qrGenerator/i18n/pt.ts +146 -150
- package/src/tool/qrGenerator/i18n/ru.ts +146 -150
- package/src/tool/qrGenerator/i18n/sv.ts +146 -150
- package/src/tool/qrGenerator/i18n/tr.ts +146 -150
- package/src/tool/qrGenerator/i18n/zh.ts +146 -150
- package/src/tool/qrGenerator/qr-generator.css +264 -0
- package/src/tool/qrGenerator/seo.astro +2 -1
- package/src/tool/solarCalculator/bibliography.ts +5 -0
- package/src/tool/solarCalculator/component.astro +0 -298
- package/src/tool/solarCalculator/i18n/de.ts +141 -145
- package/src/tool/solarCalculator/i18n/en.ts +2 -7
- package/src/tool/solarCalculator/i18n/es.ts +2 -7
- package/src/tool/solarCalculator/i18n/fr.ts +2 -7
- package/src/tool/solarCalculator/i18n/id.ts +2 -6
- package/src/tool/solarCalculator/i18n/it.ts +2 -6
- package/src/tool/solarCalculator/i18n/ja.ts +121 -125
- package/src/tool/solarCalculator/i18n/ko.ts +116 -120
- package/src/tool/solarCalculator/i18n/nl.ts +2 -5
- package/src/tool/solarCalculator/i18n/pl.ts +2 -6
- package/src/tool/solarCalculator/i18n/pt.ts +2 -6
- package/src/tool/solarCalculator/i18n/ru.ts +2 -5
- package/src/tool/solarCalculator/i18n/sv.ts +2 -5
- package/src/tool/solarCalculator/i18n/tr.ts +2 -5
- package/src/tool/solarCalculator/i18n/zh.ts +116 -120
- package/src/tool/solarCalculator/seo.astro +2 -1
- package/src/tool/solarCalculator/solar-panel-calculator.css +296 -0
- package/src/tool/tariffComparator/bibliography.ts +7 -0
- package/src/tool/tariffComparator/component.astro +0 -337
- package/src/tool/tariffComparator/electricity-tariff-comparator.css +335 -0
- package/src/tool/tariffComparator/i18n/de.ts +129 -132
- package/src/tool/tariffComparator/i18n/en.ts +2 -9
- package/src/tool/tariffComparator/i18n/es.ts +2 -9
- package/src/tool/tariffComparator/i18n/fr.ts +2 -9
- package/src/tool/tariffComparator/i18n/id.ts +2 -5
- package/src/tool/tariffComparator/i18n/it.ts +2 -5
- package/src/tool/tariffComparator/i18n/ja.ts +129 -132
- package/src/tool/tariffComparator/i18n/ko.ts +129 -132
- package/src/tool/tariffComparator/i18n/nl.ts +2 -5
- package/src/tool/tariffComparator/i18n/pl.ts +2 -5
- package/src/tool/tariffComparator/i18n/pt.ts +2 -5
- package/src/tool/tariffComparator/i18n/ru.ts +2 -5
- package/src/tool/tariffComparator/i18n/sv.ts +2 -5
- package/src/tool/tariffComparator/i18n/tr.ts +2 -5
- package/src/tool/tariffComparator/i18n/zh.ts +129 -132
- package/src/tool/tariffComparator/seo.astro +2 -1
- package/src/types.ts +0 -2
|
@@ -1,133 +1,130 @@
|
|
|
1
|
-
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
-
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
-
import type { TariffComparatorUI } from '../ui';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
'@
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
'@
|
|
56
|
-
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { TariffComparatorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'electricity-tariff-comparator';
|
|
7
|
+
const title = '电费套餐对比:自由市场 vs 监管市场';
|
|
8
|
+
const description =
|
|
9
|
+
'了解哪种电费套餐最适合您。根据您的实际用电量对比自由市场套餐与监管市场套餐。';
|
|
10
|
+
|
|
11
|
+
const faqData = [
|
|
12
|
+
{
|
|
13
|
+
question: '固定价格和动态价格哪个更好?',
|
|
14
|
+
answer:
|
|
15
|
+
'固定价格提供可预测性。动态价格(如监管市场)在发电量充沛时可能极低,但存在波动风险。本计算器可帮您做出选择。',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
question: '如何获取我的年用电量?',
|
|
19
|
+
answer:
|
|
20
|
+
'您可以在最新的电费账单中找到“年用电量”(kWh) 这一数值。',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: '什么是合同功率?',
|
|
24
|
+
answer:
|
|
25
|
+
'指您可以同时使用的最大电力负荷 (kW)。',
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
const howToData = [
|
|
30
|
+
{
|
|
31
|
+
name: '查看账单',
|
|
32
|
+
text: '查找年用电量 (kWh) 和合同功率 (kW)。',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: '调整数值',
|
|
36
|
+
text: '根据您的实际数据调节滑块。',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: '对比结果',
|
|
40
|
+
text: '查看两种模式下的预估年支出差异。',
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
|
|
44
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
45
|
+
'@context': 'https://schema.org',
|
|
46
|
+
'@type': 'FAQPage',
|
|
47
|
+
mainEntity: faqData.map((item) => ({
|
|
48
|
+
'@type': 'Question',
|
|
49
|
+
name: item.question,
|
|
50
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
51
|
+
})),
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const howToSchema: WithContext<HowTo> = {
|
|
55
|
+
'@context': 'https://schema.org',
|
|
56
|
+
'@type': 'HowTo',
|
|
57
|
+
name: title,
|
|
58
|
+
description,
|
|
59
|
+
step: howToData.map((step) => ({
|
|
60
|
+
'@type': 'HowToStep',
|
|
61
|
+
name: step.name,
|
|
62
|
+
text: step.text,
|
|
63
|
+
})),
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
67
|
+
'@context': 'https://schema.org',
|
|
68
|
+
'@type': 'SoftwareApplication',
|
|
69
|
+
name: title,
|
|
70
|
+
description,
|
|
71
|
+
applicationCategory: 'UtilityApplication',
|
|
72
|
+
operatingSystem: 'All',
|
|
73
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'CNY' },
|
|
74
|
+
inLanguage: 'zh',
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export const content: ToolLocaleContent<TariffComparatorUI> = {
|
|
78
|
+
slug,
|
|
79
|
+
title,
|
|
57
80
|
description,
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
ui: {
|
|
109
|
-
labelConsumption: '年用电量',
|
|
110
|
-
unitKwhYear: 'kWh/年',
|
|
111
|
-
labelPower: '合同功率',
|
|
112
|
-
unitKw: 'kW',
|
|
113
|
-
labelMarket: '监管市场 (动态)',
|
|
114
|
-
labelFree: '自由市场 (固定)',
|
|
115
|
-
labelAnnualEst: '预估年支出',
|
|
116
|
-
labelPowerTerm: '功率费 (固定)',
|
|
117
|
-
labelEnergyTerm: '电费 (变量)',
|
|
118
|
-
labelDashboard: '能源面板',
|
|
119
|
-
labelMaxPower: '峰值功率',
|
|
120
|
-
labelMaxPowerEst: '预估峰值',
|
|
121
|
-
labelCo2: '碳足迹',
|
|
122
|
-
labelCo2Est: '预估年排放量',
|
|
123
|
-
labelSimulator: '方案模拟器',
|
|
124
|
-
labelSolar: '太阳能自用',
|
|
125
|
-
labelSolarDesc: '模拟安装电池板后的节省(默认减少 30% 用电)',
|
|
126
|
-
labelShift: '低谷时段转移',
|
|
127
|
-
labelShiftDesc: '转移至低谷时段的比例:',
|
|
128
|
-
badgeBetter: '更佳性价比',
|
|
129
|
-
badgeWorseYear: '年',
|
|
130
|
-
currencySign: '¥',
|
|
131
|
-
monthLabels: '1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月',
|
|
132
|
-
},
|
|
133
|
-
};
|
|
81
|
+
faq: faqData,
|
|
82
|
+
bibliography,
|
|
83
|
+
howTo: howToData,
|
|
84
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
85
|
+
seo: [
|
|
86
|
+
{
|
|
87
|
+
type: 'title',
|
|
88
|
+
text: '节省您的电力开支',
|
|
89
|
+
level: 2,
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
type: 'paragraph',
|
|
93
|
+
html: '选择合适的套餐每年可节省数百元。利用我们的对比工具做出决定。',
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
type: 'summary',
|
|
97
|
+
title: '省钱策略',
|
|
98
|
+
items: [
|
|
99
|
+
'定期对比市场上的新套餐。',
|
|
100
|
+
'合理设定合同功率,避免不必要的月租费。',
|
|
101
|
+
'尽量将大功率用电安排在低谷时段。',
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
ui: {
|
|
106
|
+
labelConsumption: '年用电量',
|
|
107
|
+
unitKwhYear: 'kWh/年',
|
|
108
|
+
labelPower: '合同功率',
|
|
109
|
+
unitKw: 'kW',
|
|
110
|
+
labelMarket: '监管市场 (动态)',
|
|
111
|
+
labelFree: '自由市场 (固定)',
|
|
112
|
+
labelAnnualEst: '预估年支出',
|
|
113
|
+
labelPowerTerm: '功率费 (固定)',
|
|
114
|
+
labelEnergyTerm: '电费 (变量)',
|
|
115
|
+
labelDashboard: '能源面板',
|
|
116
|
+
labelMaxPower: '峰值功率',
|
|
117
|
+
labelMaxPowerEst: '预估峰值',
|
|
118
|
+
labelCo2: '碳足迹',
|
|
119
|
+
labelCo2Est: '预估年排放量',
|
|
120
|
+
labelSimulator: '方案模拟器',
|
|
121
|
+
labelSolar: '太阳能自用',
|
|
122
|
+
labelSolarDesc: '模拟安装电池板后的节省(默认减少 30% 用电)',
|
|
123
|
+
labelShift: '低谷时段转移',
|
|
124
|
+
labelShiftDesc: '转移至低谷时段的比例:',
|
|
125
|
+
badgeBetter: '更佳性价比',
|
|
126
|
+
badgeWorseYear: '年',
|
|
127
|
+
currencySign: '¥',
|
|
128
|
+
monthLabels: '1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月',
|
|
129
|
+
},
|
|
130
|
+
};
|
|
@@ -11,4 +11,5 @@ const { locale = 'es' } = Astro.props;
|
|
|
11
11
|
const content = await tariffComparator.i18n[locale]?.();
|
|
12
12
|
if (!content) return null;
|
|
13
13
|
---
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|
package/src/types.ts
CHANGED
|
@@ -29,9 +29,7 @@ export interface ToolLocaleContent<TUI extends Record<string, string> = Record<s
|
|
|
29
29
|
description: string;
|
|
30
30
|
ui: TUI;
|
|
31
31
|
seo: SEOSection[];
|
|
32
|
-
faqTitle?: string;
|
|
33
32
|
faq: FAQItem[];
|
|
34
|
-
bibliographyTitle?: string;
|
|
35
33
|
bibliography: BibliographyEntry[];
|
|
36
34
|
howTo: HowToStep[];
|
|
37
35
|
schemas: WithContext<Thing>[];
|