@jjlmoya/utils-home 1.16.0 → 1.23.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 (174) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/de.ts +10 -10
  3. package/src/category/i18n/en.ts +8 -8
  4. package/src/category/i18n/es.ts +2 -2
  5. package/src/category/i18n/fr.ts +15 -15
  6. package/src/category/i18n/id.ts +8 -8
  7. package/src/category/i18n/it.ts +7 -7
  8. package/src/category/i18n/nl.ts +8 -8
  9. package/src/category/i18n/pl.ts +10 -10
  10. package/src/category/i18n/pt.ts +8 -8
  11. package/src/category/i18n/ru.ts +10 -10
  12. package/src/category/i18n/sv.ts +8 -8
  13. package/src/category/i18n/tr.ts +4 -4
  14. package/src/category/i18n/zh.ts +8 -8
  15. package/src/entries.ts +4 -1
  16. package/src/pages/[locale]/[slug].astro +28 -12
  17. package/src/tests/locale_completeness.test.ts +4 -22
  18. package/src/tests/no_en_dash.test.ts +70 -0
  19. package/src/tests/shared-test-helpers.ts +56 -0
  20. package/src/tests/tool_exports.test.ts +34 -0
  21. package/src/tests/tool_validation.test.ts +2 -2
  22. package/src/tool/dewPointCalculator/bibliography.ts +10 -0
  23. package/src/tool/dewPointCalculator/i18n/de.ts +7 -17
  24. package/src/tool/dewPointCalculator/i18n/en.ts +8 -18
  25. package/src/tool/dewPointCalculator/i18n/es.ts +7 -17
  26. package/src/tool/dewPointCalculator/i18n/fr.ts +8 -18
  27. package/src/tool/dewPointCalculator/i18n/id.ts +7 -17
  28. package/src/tool/dewPointCalculator/i18n/it.ts +7 -17
  29. package/src/tool/dewPointCalculator/i18n/ja.ts +6 -16
  30. package/src/tool/dewPointCalculator/i18n/ko.ts +6 -16
  31. package/src/tool/dewPointCalculator/i18n/nl.ts +7 -17
  32. package/src/tool/dewPointCalculator/i18n/pl.ts +7 -17
  33. package/src/tool/dewPointCalculator/i18n/pt.ts +7 -17
  34. package/src/tool/dewPointCalculator/i18n/ru.ts +13 -23
  35. package/src/tool/dewPointCalculator/i18n/sv.ts +7 -17
  36. package/src/tool/dewPointCalculator/i18n/tr.ts +6 -16
  37. package/src/tool/dewPointCalculator/i18n/zh.ts +7 -17
  38. package/src/tool/dewPointCalculator/seo.astro +2 -1
  39. package/src/tool/heatingComparator/bibliography.ts +14 -0
  40. package/src/tool/heatingComparator/i18n/de.ts +10 -24
  41. package/src/tool/heatingComparator/i18n/en.ts +3 -13
  42. package/src/tool/heatingComparator/i18n/es.ts +3 -17
  43. package/src/tool/heatingComparator/i18n/fr.ts +9 -19
  44. package/src/tool/heatingComparator/i18n/id.ts +3 -17
  45. package/src/tool/heatingComparator/i18n/it.ts +3 -17
  46. package/src/tool/heatingComparator/i18n/ja.ts +296 -310
  47. package/src/tool/heatingComparator/i18n/ko.ts +296 -306
  48. package/src/tool/heatingComparator/i18n/nl.ts +3 -17
  49. package/src/tool/heatingComparator/i18n/pl.ts +3 -17
  50. package/src/tool/heatingComparator/i18n/pt.ts +3 -17
  51. package/src/tool/heatingComparator/i18n/ru.ts +14 -24
  52. package/src/tool/heatingComparator/i18n/sv.ts +6 -20
  53. package/src/tool/heatingComparator/i18n/tr.ts +2 -16
  54. package/src/tool/heatingComparator/i18n/zh.ts +296 -306
  55. package/src/tool/heatingComparator/seo.astro +3 -3
  56. package/src/tool/ledSavingCalculator/bibliography.ts +14 -0
  57. package/src/tool/ledSavingCalculator/i18n/de.ts +6 -16
  58. package/src/tool/ledSavingCalculator/i18n/en.ts +6 -20
  59. package/src/tool/ledSavingCalculator/i18n/es.ts +6 -20
  60. package/src/tool/ledSavingCalculator/i18n/fr.ts +10 -24
  61. package/src/tool/ledSavingCalculator/i18n/id.ts +5 -15
  62. package/src/tool/ledSavingCalculator/i18n/it.ts +6 -16
  63. package/src/tool/ledSavingCalculator/i18n/ja.ts +5 -15
  64. package/src/tool/ledSavingCalculator/i18n/ko.ts +4 -14
  65. package/src/tool/ledSavingCalculator/i18n/nl.ts +5 -15
  66. package/src/tool/ledSavingCalculator/i18n/pl.ts +5 -15
  67. package/src/tool/ledSavingCalculator/i18n/pt.ts +5 -15
  68. package/src/tool/ledSavingCalculator/i18n/ru.ts +8 -18
  69. package/src/tool/ledSavingCalculator/i18n/sv.ts +5 -15
  70. package/src/tool/ledSavingCalculator/i18n/tr.ts +5 -15
  71. package/src/tool/ledSavingCalculator/i18n/zh.ts +6 -16
  72. package/src/tool/ledSavingCalculator/seo.astro +2 -1
  73. package/src/tool/projectorCalculator/bibliography.ts +5 -0
  74. package/src/tool/projectorCalculator/i18n/de.ts +4 -8
  75. package/src/tool/projectorCalculator/i18n/en.ts +3 -8
  76. package/src/tool/projectorCalculator/i18n/es.ts +4 -9
  77. package/src/tool/projectorCalculator/i18n/fr.ts +6 -11
  78. package/src/tool/projectorCalculator/i18n/id.ts +4 -9
  79. package/src/tool/projectorCalculator/i18n/it.ts +4 -8
  80. package/src/tool/projectorCalculator/i18n/ja.ts +175 -179
  81. package/src/tool/projectorCalculator/i18n/ko.ts +175 -179
  82. package/src/tool/projectorCalculator/i18n/nl.ts +4 -8
  83. package/src/tool/projectorCalculator/i18n/pl.ts +5 -9
  84. package/src/tool/projectorCalculator/i18n/pt.ts +4 -8
  85. package/src/tool/projectorCalculator/i18n/ru.ts +7 -11
  86. package/src/tool/projectorCalculator/i18n/sv.ts +4 -8
  87. package/src/tool/projectorCalculator/i18n/tr.ts +4 -8
  88. package/src/tool/projectorCalculator/i18n/zh.ts +175 -179
  89. package/src/tool/projectorCalculator/seo.astro +2 -1
  90. package/src/tool/qrGenerator/bibliography.ts +14 -0
  91. package/src/tool/qrGenerator/i18n/de.ts +192 -202
  92. package/src/tool/qrGenerator/i18n/en.ts +3 -17
  93. package/src/tool/qrGenerator/i18n/es.ts +2 -16
  94. package/src/tool/qrGenerator/i18n/fr.ts +3 -17
  95. package/src/tool/qrGenerator/i18n/id.ts +146 -150
  96. package/src/tool/qrGenerator/i18n/it.ts +169 -173
  97. package/src/tool/qrGenerator/i18n/ja.ts +146 -150
  98. package/src/tool/qrGenerator/i18n/ko.ts +146 -150
  99. package/src/tool/qrGenerator/i18n/nl.ts +146 -150
  100. package/src/tool/qrGenerator/i18n/pl.ts +146 -150
  101. package/src/tool/qrGenerator/i18n/pt.ts +146 -150
  102. package/src/tool/qrGenerator/i18n/ru.ts +146 -150
  103. package/src/tool/qrGenerator/i18n/sv.ts +146 -150
  104. package/src/tool/qrGenerator/i18n/tr.ts +146 -150
  105. package/src/tool/qrGenerator/i18n/zh.ts +146 -150
  106. package/src/tool/qrGenerator/seo.astro +2 -1
  107. package/src/tool/solarCalculator/bibliography.ts +5 -0
  108. package/src/tool/solarCalculator/i18n/de.ts +141 -145
  109. package/src/tool/solarCalculator/i18n/en.ts +7 -12
  110. package/src/tool/solarCalculator/i18n/es.ts +5 -10
  111. package/src/tool/solarCalculator/i18n/fr.ts +8 -13
  112. package/src/tool/solarCalculator/i18n/id.ts +4 -8
  113. package/src/tool/solarCalculator/i18n/it.ts +4 -8
  114. package/src/tool/solarCalculator/i18n/ja.ts +121 -125
  115. package/src/tool/solarCalculator/i18n/ko.ts +116 -120
  116. package/src/tool/solarCalculator/i18n/nl.ts +4 -7
  117. package/src/tool/solarCalculator/i18n/pl.ts +5 -9
  118. package/src/tool/solarCalculator/i18n/pt.ts +4 -8
  119. package/src/tool/solarCalculator/i18n/ru.ts +7 -10
  120. package/src/tool/solarCalculator/i18n/sv.ts +4 -7
  121. package/src/tool/solarCalculator/i18n/tr.ts +4 -7
  122. package/src/tool/solarCalculator/i18n/zh.ts +116 -120
  123. package/src/tool/solarCalculator/seo.astro +2 -1
  124. package/src/tool/tariffComparator/bibliography.ts +7 -0
  125. package/src/tool/tariffComparator/i18n/de.ts +129 -132
  126. package/src/tool/tariffComparator/i18n/en.ts +5 -12
  127. package/src/tool/tariffComparator/i18n/es.ts +5 -12
  128. package/src/tool/tariffComparator/i18n/fr.ts +8 -15
  129. package/src/tool/tariffComparator/i18n/id.ts +2 -5
  130. package/src/tool/tariffComparator/i18n/it.ts +2 -5
  131. package/src/tool/tariffComparator/i18n/ja.ts +129 -132
  132. package/src/tool/tariffComparator/i18n/ko.ts +129 -132
  133. package/src/tool/tariffComparator/i18n/nl.ts +2 -5
  134. package/src/tool/tariffComparator/i18n/pl.ts +3 -6
  135. package/src/tool/tariffComparator/i18n/pt.ts +2 -5
  136. package/src/tool/tariffComparator/i18n/ru.ts +2 -5
  137. package/src/tool/tariffComparator/i18n/sv.ts +2 -5
  138. package/src/tool/tariffComparator/i18n/tr.ts +2 -5
  139. package/src/tool/tariffComparator/i18n/zh.ts +129 -132
  140. package/src/tool/tariffComparator/seo.astro +2 -1
  141. package/src/tool/wifiRangeSimulator/bibliography.astro +14 -0
  142. package/src/tool/wifiRangeSimulator/bibliography.ts +14 -0
  143. package/src/tool/wifiRangeSimulator/component.astro +170 -0
  144. package/src/tool/wifiRangeSimulator/entry.ts +29 -0
  145. package/src/tool/wifiRangeSimulator/i18n/de.ts +477 -0
  146. package/src/tool/wifiRangeSimulator/i18n/en.ts +477 -0
  147. package/src/tool/wifiRangeSimulator/i18n/es.ts +477 -0
  148. package/src/tool/wifiRangeSimulator/i18n/fr.ts +477 -0
  149. package/src/tool/wifiRangeSimulator/i18n/id.ts +477 -0
  150. package/src/tool/wifiRangeSimulator/i18n/it.ts +477 -0
  151. package/src/tool/wifiRangeSimulator/i18n/ja.ts +477 -0
  152. package/src/tool/wifiRangeSimulator/i18n/ko.ts +477 -0
  153. package/src/tool/wifiRangeSimulator/i18n/nl.ts +477 -0
  154. package/src/tool/wifiRangeSimulator/i18n/pl.ts +477 -0
  155. package/src/tool/wifiRangeSimulator/i18n/pt.ts +477 -0
  156. package/src/tool/wifiRangeSimulator/i18n/ru.ts +477 -0
  157. package/src/tool/wifiRangeSimulator/i18n/sv.ts +477 -0
  158. package/src/tool/wifiRangeSimulator/i18n/tr.ts +477 -0
  159. package/src/tool/wifiRangeSimulator/i18n/zh.ts +477 -0
  160. package/src/tool/wifiRangeSimulator/i18n-utils.ts +14 -0
  161. package/src/tool/wifiRangeSimulator/index.ts +8 -0
  162. package/src/tool/wifiRangeSimulator/logic.ts +220 -0
  163. package/src/tool/wifiRangeSimulator/seo.astro +15 -0
  164. package/src/tool/wifiRangeSimulator/sketch-actions.ts +168 -0
  165. package/src/tool/wifiRangeSimulator/sketch-events.ts +138 -0
  166. package/src/tool/wifiRangeSimulator/sketch-render-dash.ts +170 -0
  167. package/src/tool/wifiRangeSimulator/sketch-render-device.ts +42 -0
  168. package/src/tool/wifiRangeSimulator/sketch-render.ts +155 -0
  169. package/src/tool/wifiRangeSimulator/sketch-state.ts +186 -0
  170. package/src/tool/wifiRangeSimulator/sketch.ts +100 -0
  171. package/src/tool/wifiRangeSimulator/ui.ts +69 -0
  172. package/src/tool/wifiRangeSimulator/wifi-range-simulator.css +583 -0
  173. package/src/tools.ts +2 -0
  174. package/src/types.ts +0 -2
@@ -1,9 +1,10 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TariffComparatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'comparateur-tarifs-electricite';
6
- const title = 'Comparateur de Tarifs d\'Électricité : Prix Fixe vs Prix Variable';
7
+ const title = 'Comparateur de Tarifs d\'Électricité: Prix Fixe vs Prix Variable';
7
8
  const description =
8
9
  'Découvrez quel tarif d\'électricité vous convient le mieux. Comparez le marché régulé (PVPC) et le marché libre selon votre consommation et économisez des centaines d\'euros sur votre facture.';
9
10
 
@@ -86,22 +87,14 @@ export const content: ToolLocaleContent<TariffComparatorUI> = {
86
87
  slug,
87
88
  title,
88
89
  description,
89
- faqTitle: 'Questions Fréquentes',
90
90
  faq: faqData,
91
- bibliographyTitle: 'Bibliographie',
92
- bibliography: [
93
- { name: 'Red Eléctrica de España (REE) — ESIOS : Suivi du PVPC', url: 'https://www.esios.ree.es/es' },
94
- { name: 'CNMC : Portail de comparaison des offres d\'énergie', url: 'https://comparador.cnmc.gob.es/' },
95
- { name: 'MITECO : Bonus Social et législation énergétique', url: 'https://www.miteco.gob.es/' },
96
- { name: 'IDAE : Guides pratiques d\'économies et d\'autoconsommation', url: 'https://www.idae.es/' },
97
- { name: 'OMIE : Prix horaires du marché journalier de l\'électricité', url: 'https://www.omie.es/' },
98
- ],
91
+ bibliography,
99
92
  howTo: howToData,
100
93
  schemas: [faqSchema, howToSchema, appSchema],
101
94
  seo: [
102
95
  {
103
96
  type: 'title',
104
- text: 'Comparateur de Tarifs Électriques : Marché Libre vs Marché Régulé',
97
+ text: 'Comparateur de Tarifs Électriques: Marché Libre vs Marché Régulé',
105
98
  level: 2,
106
99
  },
107
100
  {
@@ -121,13 +114,13 @@ export const content: ToolLocaleContent<TariffComparatorUI> = {
121
114
  type: 'comparative',
122
115
  items: [
123
116
  {
124
- title: 'PVPC Marché Régulé',
117
+ title: 'PVPC: Marché Régulé',
125
118
  description: 'Le prix de l\'énergie change chaque heure selon le marché de gros. Les jours de forte production renouvelable, il peut descendre à des niveaux très bas.',
126
119
  icon: 'mdi:lightning-bolt',
127
120
  points: ['Sans engagement, changement libre', 'Accès au Bonus Social pour les personnes vulnérables', 'Tarification horaire Pointe/Standard/Creuses'],
128
121
  },
129
122
  {
130
- title: 'Marché Libre Prix Fixe',
123
+ title: 'Marché Libre: Prix Fixe',
131
124
  description: 'Les fournisseurs d\'énergie fixent un prix par kWh qui reste stable tout au long de l\'année, indépendamment du marché de gros.',
132
125
  icon: 'mdi:tag-outline',
133
126
  points: ['Stabilité et prévisibilité', 'Pas de mauvaises surprises sur la facture', 'Peut inclure des services supplémentaires'],
@@ -142,7 +135,7 @@ export const content: ToolLocaleContent<TariffComparatorUI> = {
142
135
  },
143
136
  {
144
137
  type: 'paragraph',
145
- html: '<strong>Pointe (plus cher) :</strong> LunVen de 10h00 à 14h00 et de 18h00 à 22h00. <strong>Standard (intermédiaire) :</strong> LunVen de 08h00 à 10h00, de 14h00 à 18h00 et de 22h00 à 00h00. <strong>Heures creuses (moins cher) :</strong> LunVen de 00h00 à 08h00 et toute la journée le samedi, dimanche et jours fériés. Planifier les machines à laver, lave-vaisselle et la recharge de voiture électrique aux heures creuses est la clé des économies maximales.',
138
+ html: '<strong>Pointe (plus cher) :</strong> Lun-Ven de 10h00 à 14h00 et de 18h00 à 22h00. <strong>Standard (intermédiaire) :</strong> Lun-Ven de 08h00 à 10h00, de 14h00 à 18h00 et de 22h00 à 00h00. <strong>Heures creuses (moins cher) :</strong> Lun-Ven de 00h00 à 08h00 et toute la journée le samedi, dimanche et jours fériés. Planifier les machines à laver, lave-vaisselle et la recharge de voiture électrique aux heures creuses est la clé des économies maximales.',
146
139
  },
147
140
  {
148
141
  type: 'diagnostic',
@@ -160,7 +153,7 @@ export const content: ToolLocaleContent<TariffComparatorUI> = {
160
153
  'Si vous appréciez la stabilité et ne voulez pas surveiller l\'horloge, choisissez un prix fixe.',
161
154
  'Avec des panneaux solaires, le PVPC permet de compenser les surplus au prix horaire du marché.',
162
155
  'Réduire la puissance souscrite est souvent le moyen le plus rapide de diminuer la facture.',
163
- 'Le PVPC n\'a pas d\'engagement : vous pouvez revenir à tout moment.',
156
+ 'Le PVPC n\'a pas d\'engagement: vous pouvez revenir à tout moment.',
164
157
  ],
165
158
  },
166
159
  ],
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TariffComparatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'perbandingan-tarif-listrik';
6
7
  const title = 'Perbandingan Tarif Listrik: Pasar Bebas vs Teratur';
@@ -77,12 +78,8 @@ export const content: ToolLocaleContent<TariffComparatorUI> = {
77
78
  slug,
78
79
  title,
79
80
  description,
80
- faqTitle: 'Pertanyaan Umum',
81
81
  faq: faqData,
82
- bibliographyTitle: 'Daftar Pustaka',
83
- bibliography: [
84
- { name: 'Portal Energi Nasional', url: 'https://www.esdm.go.id' },
85
- ],
82
+ bibliography,
86
83
  howTo: howToData,
87
84
  schemas: [faqSchema, howToSchema, appSchema],
88
85
  seo: [
@@ -1,6 +1,7 @@
1
1
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { TariffComparatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
4
5
 
5
6
  const slug = 'confronto-tariffe-luce';
6
7
  const title = 'Confrontatore Tariffe Luce: Mercato Libero vs Tutelato';
@@ -77,12 +78,8 @@ export const content: ToolLocaleContent<TariffComparatorUI> = {
77
78
  slug,
78
79
  title,
79
80
  description,
80
- faqTitle: 'Domande Frequenti',
81
81
  faq: faqData,
82
- bibliographyTitle: 'Bibliografia',
83
- bibliography: [
84
- { name: 'ARERA — Portale Offerte', url: 'https://www.arera.it' },
85
- ],
82
+ bibliography,
86
83
  howTo: howToData,
87
84
  schemas: [faqSchema, howToSchema, appSchema],
88
85
  seo: [
@@ -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
- const slug = 'electricity-tariff-comparator';
6
- const title = '電気料金比較:自由市場 vs 規制料金';
7
- const description =
8
- 'どちらの電気料金プランがあなたに最適かを見つけましょう。消費電力に基づいて自由市場プランと規制プランを比較します。';
9
-
10
- const faqData = [
11
- {
12
- question: '固定料金プランと市場連動型プラン、どちらが良いですか?',
13
- answer:
14
- '固定料金は価格の安定性を提供します。市場連動型は市場価格が安い時に有利ですが、高騰するリスクもあります。このツールでシミュレーションを行ってください。',
15
- },
16
- {
17
- question: '年間消費電力はどこでわかりますか?',
18
- answer:
19
- '検針票や電力会社のマイページに記載されている年間使用量(kWh)を確認してください。',
20
- },
21
- {
22
- question: '契約電力とは何ですか?',
23
- answer:
24
- '一度に使える電気の上限(kWまたはA)です。高すぎると基本料金が無駄になり、低すぎるとブレーカーが落ちやすくなります。',
25
- },
26
- ];
27
-
28
- const howToData = [
29
- {
30
- name: '検針票を確認',
31
- text: '前年1年間の消費量(kWh)と現在の契約容量を確認します。',
32
- },
33
- {
34
- name: '値を入力',
35
- text: 'スライダーをご自身の実際のデータに合わせます。',
36
- },
37
- {
38
- name: '結果を比較',
39
- text: '2つのプランの年間推定金額を確認します。',
40
- },
41
- ];
42
-
43
- const faqSchema: WithContext<FAQPage> = {
44
- '@context': 'https://schema.org',
45
- '@type': 'FAQPage',
46
- mainEntity: faqData.map((item) => ({
47
- '@type': 'Question',
48
- name: item.question,
49
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
50
- })),
51
- };
52
-
53
- const howToSchema: WithContext<HowTo> = {
54
- '@context': 'https://schema.org',
55
- '@type': 'HowTo',
56
- name: title,
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またはA)です。高すぎると基本料金が無駄になり、低すぎるとブレーカーが落ちやすくなります。',
26
+ },
27
+ ];
28
+
29
+ const howToData = [
30
+ {
31
+ name: '検針票を確認',
32
+ text: '前年1年間の消費量(kWh)と現在の契約容量を確認します。',
33
+ },
34
+ {
35
+ name: '値を入力',
36
+ text: 'スライダーをご自身の実際のデータに合わせます。',
37
+ },
38
+ {
39
+ name: '結果を比較',
40
+ text: '2つのプランの年間推定金額を確認します。',
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: 'JPY' },
74
+ inLanguage: 'ja',
75
+ };
76
+
77
+ export const content: ToolLocaleContent<TariffComparatorUI> = {
78
+ slug,
79
+ title,
57
80
  description,
58
- step: howToData.map((step) => ({
59
- '@type': 'HowToStep',
60
- name: step.name,
61
- text: step.text,
62
- })),
63
- };
64
-
65
- const appSchema: WithContext<SoftwareApplication> = {
66
- '@context': 'https://schema.org',
67
- '@type': 'SoftwareApplication',
68
- name: title,
69
- description,
70
- applicationCategory: 'UtilityApplication',
71
- operatingSystem: 'All',
72
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'JPY' },
73
- inLanguage: 'ja',
74
- };
75
-
76
- export const content: ToolLocaleContent<TariffComparatorUI> = {
77
- slug,
78
- title,
79
- description,
80
- faqTitle: 'よくある質問',
81
- faq: faqData,
82
- bibliographyTitle: '参考文献',
83
- bibliography: [
84
- { name: '資源エネルギー庁 — 料金プラン比較', url: 'https://www.enecho.meti.go.jp' },
85
- ],
86
- howTo: howToData,
87
- schemas: [faqSchema, howToSchema, appSchema],
88
- seo: [
89
- {
90
- type: 'title',
91
- text: '電気代を節約するために',
92
- level: 2,
93
- },
94
- {
95
- type: 'paragraph',
96
- html: '適切なプランを選択することで、年間で大きな節約が可能になります。',
97
- },
98
- {
99
- type: 'summary',
100
- title: '節約のヒント',
101
- items: [
102
- '定期的に他社のプランと比較する。',
103
- '無理のない範囲で契約容量を適正化する。',
104
- '可能であれば安い時間帯に電力をシフトする。',
105
- ],
106
- },
107
- ],
108
- ui: {
109
- labelConsumption: '年間消費電力',
110
- unitKwhYear: 'kWh/年',
111
- labelPower: '契約容量',
112
- unitKw: 'kW/A',
113
- labelMarket: '市場連動・規制プラン',
114
- labelFree: '固定料金プラン',
115
- labelAnnualEst: '年間推定金額',
116
- labelPowerTerm: '基本料金 (固定分)',
117
- labelEnergyTerm: '電力量料金 (従量分)',
118
- labelDashboard: 'エネルギーダッシュボード',
119
- labelMaxPower: '最大使用電力',
120
- labelMaxPowerEst: '推定ピーク',
121
- labelCo2: 'CO₂排出量',
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/A',
110
+ labelMarket: '市場連動・規制プラン',
111
+ labelFree: '固定料金プラン',
112
+ labelAnnualEst: '年間推定金額',
113
+ labelPowerTerm: '基本料金 (固定分)',
114
+ labelEnergyTerm: '電力量料金 (従量分)',
115
+ labelDashboard: 'エネルギーダッシュボード',
116
+ labelMaxPower: '最大使用電力',
117
+ labelMaxPowerEst: '推定ピーク',
118
+ labelCo2: 'CO₂排出量',
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
+ };
@@ -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
- const slug = 'electricity-tariff-comparator';
6
- const title = '전기 요금 비교: 고정 요금 vs 변동 요금';
7
- const description =
8
- '나에게 어떤 전기 요금제가 가장 유리한지 확인해 보세요. 연간 사용량을 기준으로 고정 요금제와 변동 요금제를 비교합니다.';
9
-
10
- const faqData = [
11
- {
12
- question: '고정 요금과 변동 요금 중 무엇이 더 좋나요?',
13
- answer:
14
- '고정 요금은 가격 예측이 가능합니다. 변동 요금은 시장 가격이 낮을 때 매우 저렴할 수 있지만 변동성이 큽니다. 시뮬레이터를 통해 결정해 보세요.',
15
- },
16
- {
17
- question: '연간 소비량은 어떻게 확인하나요?',
18
- answer:
19
- '최근 전기 요금 고지서의 "연간 사용량"(kWh) 항목에서 확인할 수 있습니다.',
20
- },
21
- {
22
- question: '계약 전력이란 무엇인가요?',
23
- answer:
24
- '동시에 사용할 수 있는 최대 전기 부하(kW)를 말합니다.',
25
- },
26
- ];
27
-
28
- const howToData = [
29
- {
30
- name: '고지서 확인',
31
- text: '연간 소비량(kWh)과 계약 전력(kW)을 확인합니다.',
32
- },
33
- {
34
- name: '수치 설정',
35
- text: '실제 데이터에 맞게 슬라이더를 조정합니다.',
36
- },
37
- {
38
- name: '결과 비교',
39
- text: ' 방식의 연간 예상 비용 차이를 확인합니다.',
40
- },
41
- ];
42
-
43
- const faqSchema: WithContext<FAQPage> = {
44
- '@context': 'https://schema.org',
45
- '@type': 'FAQPage',
46
- mainEntity: faqData.map((item) => ({
47
- '@type': 'Question',
48
- name: item.question,
49
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
50
- })),
51
- };
52
-
53
- const howToSchema: WithContext<HowTo> = {
54
- '@context': 'https://schema.org',
55
- '@type': 'HowTo',
56
- name: title,
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: 'KRW' },
74
+ inLanguage: 'ko',
75
+ };
76
+
77
+ export const content: ToolLocaleContent<TariffComparatorUI> = {
78
+ slug,
79
+ title,
57
80
  description,
58
- step: howToData.map((step) => ({
59
- '@type': 'HowToStep',
60
- name: step.name,
61
- text: step.text,
62
- })),
63
- };
64
-
65
- const appSchema: WithContext<SoftwareApplication> = {
66
- '@context': 'https://schema.org',
67
- '@type': 'SoftwareApplication',
68
- name: title,
69
- description,
70
- applicationCategory: 'UtilityApplication',
71
- operatingSystem: 'All',
72
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'KRW' },
73
- inLanguage: 'ko',
74
- };
75
-
76
- export const content: ToolLocaleContent<TariffComparatorUI> = {
77
- slug,
78
- title,
79
- description,
80
- faqTitle: '자주 묻는 질문',
81
- faq: faqData,
82
- bibliographyTitle: '참고 자료',
83
- bibliography: [
84
- { name: '한국전력공사 — 전기요금 안내', url: 'https://cyber.kepco.co.kr' },
85
- ],
86
- howTo: howToData,
87
- schemas: [faqSchema, howToSchema, appSchema],
88
- seo: [
89
- {
90
- type: 'title',
91
- text: '전기 요금 절약하기',
92
- level: 2,
93
- },
94
- {
95
- type: 'paragraph',
96
- html: '나에게 맞는 요금제를 선택하면 연간 수십만 원을 절약할 수 있습니다.',
97
- },
98
- {
99
- type: 'summary',
100
- title: '절약 ',
101
- items: [
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
+ };