@jjlmoya/utils-nature 1.3.0 → 1.4.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 (56) hide show
  1. package/package.json +2 -1
  2. package/src/tests/i18n_coverage.test.ts +36 -0
  3. package/src/tests/slug_uniqueness.test.ts +81 -0
  4. package/src/tests/tool_validation.test.ts +1 -2
  5. package/src/tool/cricketThermometer/i18n/de.ts +181 -0
  6. package/src/tool/cricketThermometer/i18n/id.ts +181 -0
  7. package/src/tool/cricketThermometer/i18n/it.ts +181 -0
  8. package/src/tool/cricketThermometer/i18n/ja.ts +181 -0
  9. package/src/tool/cricketThermometer/i18n/ko.ts +181 -0
  10. package/src/tool/cricketThermometer/i18n/nl.ts +181 -0
  11. package/src/tool/cricketThermometer/i18n/pl.ts +181 -0
  12. package/src/tool/cricketThermometer/i18n/pt.ts +181 -0
  13. package/src/tool/cricketThermometer/i18n/ru.ts +181 -0
  14. package/src/tool/cricketThermometer/i18n/sv.ts +181 -0
  15. package/src/tool/cricketThermometer/i18n/tr.ts +181 -0
  16. package/src/tool/cricketThermometer/i18n/zh.ts +181 -0
  17. package/src/tool/cricketThermometer/index.ts +15 -7
  18. package/src/tool/digitalCarbon/i18n/de.ts +235 -0
  19. package/src/tool/digitalCarbon/i18n/id.ts +235 -0
  20. package/src/tool/digitalCarbon/i18n/it.ts +235 -0
  21. package/src/tool/digitalCarbon/i18n/ja.ts +235 -0
  22. package/src/tool/digitalCarbon/i18n/ko.ts +235 -0
  23. package/src/tool/digitalCarbon/i18n/nl.ts +235 -0
  24. package/src/tool/digitalCarbon/i18n/pl.ts +235 -0
  25. package/src/tool/digitalCarbon/i18n/pt.ts +235 -0
  26. package/src/tool/digitalCarbon/i18n/ru.ts +235 -0
  27. package/src/tool/digitalCarbon/i18n/sv.ts +235 -0
  28. package/src/tool/digitalCarbon/i18n/tr.ts +235 -0
  29. package/src/tool/digitalCarbon/i18n/zh.ts +235 -0
  30. package/src/tool/digitalCarbon/index.ts +15 -7
  31. package/src/tool/rainHarvester/i18n/de.ts +185 -0
  32. package/src/tool/rainHarvester/i18n/id.ts +185 -0
  33. package/src/tool/rainHarvester/i18n/it.ts +185 -0
  34. package/src/tool/rainHarvester/i18n/ja.ts +185 -0
  35. package/src/tool/rainHarvester/i18n/ko.ts +185 -0
  36. package/src/tool/rainHarvester/i18n/nl.ts +185 -0
  37. package/src/tool/rainHarvester/i18n/pl.ts +185 -0
  38. package/src/tool/rainHarvester/i18n/pt.ts +185 -0
  39. package/src/tool/rainHarvester/i18n/ru.ts +185 -0
  40. package/src/tool/rainHarvester/i18n/sv.ts +185 -0
  41. package/src/tool/rainHarvester/i18n/tr.ts +185 -0
  42. package/src/tool/rainHarvester/i18n/zh.ts +185 -0
  43. package/src/tool/rainHarvester/index.ts +15 -7
  44. package/src/tool/seedCalculator/i18n/de.ts +213 -0
  45. package/src/tool/seedCalculator/i18n/id.ts +213 -0
  46. package/src/tool/seedCalculator/i18n/it.ts +213 -0
  47. package/src/tool/seedCalculator/i18n/ja.ts +213 -0
  48. package/src/tool/seedCalculator/i18n/ko.ts +213 -0
  49. package/src/tool/seedCalculator/i18n/nl.ts +213 -0
  50. package/src/tool/seedCalculator/i18n/pl.ts +213 -0
  51. package/src/tool/seedCalculator/i18n/pt.ts +213 -0
  52. package/src/tool/seedCalculator/i18n/ru.ts +213 -0
  53. package/src/tool/seedCalculator/i18n/sv.ts +213 -0
  54. package/src/tool/seedCalculator/i18n/tr.ts +213 -0
  55. package/src/tool/seedCalculator/i18n/zh.ts +213 -0
  56. package/src/tool/seedCalculator/index.ts +15 -7
@@ -0,0 +1,185 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { RainHarvesterLocaleContent } from '../index';
3
+
4
+ const slug = 'calcolatore-acqua-piovana';
5
+ const title = 'Calcolatore per il Recupero dell\'Acqua Piovana';
6
+ const description = 'Calcola quanta acqua piovana puoi raccogliere dal tuo tetto e dimensiona il tuo serbatoio di accumulo.';
7
+
8
+ const faqData = [
9
+ {
10
+ question: 'Quanta acqua posso effettivamente raccogliere dal mio tetto?',
11
+ answer: 'La regola generale è che per ogni metro quadrato di tetto e ogni millimetro di pioggia, puoi raccogliere circa 1 litro d\'acqua. Esistono però perdite per evaporazione e filtrazione regolate dal "coefficiente di deflusso".',
12
+ },
13
+ {
14
+ question: 'Cos\'è il coefficiente di deflusso?',
15
+ answer: 'È una percentuale che indica quanta acqua viene persa a seconda del materiale del tetto. Un tetto in metallo o tegole è molto efficiente (0,85-0,95), mentre un tetto in ghiaia o terra è molto meno efficiente (0,1-0,3).',
16
+ },
17
+ {
18
+ question: 'Come dimensiono il serbatoio di accumulo?',
19
+ answer: 'Dovresti calcolare il volume massimo di pioggia previsto in un mese e incrociarlo con il tuo consumo mensile stimato. Un serbatoio troppo piccolo traboccherà durante i temporali, e uno troppo grande sarà inutilmente costoso.',
20
+ },
21
+ {
22
+ question: 'È sicuro bere l\'acqua piovana raccolta?',
23
+ answer: 'Non direttamente. L\'acqua trasporta polvere, escrementi di uccelli e frammenti trasportati dall\'aria. Per il consumo umano, deve passare attraverso filtri per sedimenti, carboni attivi e disinfezione tramite luce UV o cloro.',
24
+ },
25
+ ];
26
+
27
+ const howToData = [
28
+ {
29
+ name: 'Misura la superficie orizzontale',
30
+ text: 'Misura la lunghezza e la larghezza della base del tuo tetto (non la superficie inclinata, ma l\'area che proietta l\'ombra sul terreno).',
31
+ },
32
+ {
33
+ name: 'Controlla la piovosità locale',
34
+ text: 'Cerca nel servizio meteorologico nazionale la precipitazione media annuale o mensile nella tua zona in millimetri (mm).',
35
+ },
36
+ {
37
+ name: 'Applica l\'efficienza del materiale',
38
+ text: 'Seleziona il materiale del tuo tetto nel nostro calcolatore per detrarre l\'acqua che andrà persa per assorbimento o calore.',
39
+ },
40
+ {
41
+ name: 'Calcola il volume richiesto',
42
+ text: 'Usa il risultato dei litri annuali per scegliere un serbatoio che possa contenere almeno il 20-30% del raccolto totale per i periodi di siccità.',
43
+ },
44
+ ];
45
+
46
+ const faqSchema: WithContext<FAQPage> = {
47
+ '@context': 'https://schema.org',
48
+ '@type': 'FAQPage',
49
+ mainEntity: faqData.map((item) => ({
50
+ '@type': 'Question',
51
+ name: item.question,
52
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
53
+ })),
54
+ };
55
+
56
+ const howToSchema: WithContext<HowToThing> = {
57
+ '@context': 'https://schema.org',
58
+ '@type': 'HowTo',
59
+ name: title,
60
+ description,
61
+ step: howToData.map((step, i) => ({
62
+ '@type': 'HowToStep',
63
+ position: i + 1,
64
+ name: step.name,
65
+ text: step.text,
66
+ })),
67
+ };
68
+
69
+ const appSchema: WithContext<SoftwareApplication> = {
70
+ '@context': 'https://schema.org',
71
+ '@type': 'SoftwareApplication',
72
+ name: title,
73
+ description,
74
+ applicationCategory: 'UtilityApplication',
75
+ operatingSystem: 'All',
76
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
77
+ inLanguage: 'it',
78
+ };
79
+
80
+ export const content: RainHarvesterLocaleContent = {
81
+ slug,
82
+ title,
83
+ description,
84
+ ui: {
85
+ headInputs: 'Impostazioni Tetto',
86
+ headResults: 'Potenziale di Raccolta',
87
+ labelArea: 'Area del Tetto',
88
+ labelRainfall: 'Precipitazioni Annuali',
89
+ labelMaterial: 'Materiale del Tetto',
90
+ unitM2: 'm²',
91
+ unitMm: 'mm',
92
+ unitLiters: 'Litri',
93
+ helpRainfall: 'Non lo sai? Cerca "precipitazioni medie annuali [tua città]" su Google.',
94
+ efficiencyTitle: 'Fattore di Efficienza',
95
+ efficiencyNote: 'Viene applicata una perdita del 10% per filtri ed evaporazione.',
96
+ resultTitle: 'Potenziale di Raccolta Annuale',
97
+ equivalenciesTitle: 'Equivalenti Pratici',
98
+ labelFlushes: 'Scarichi del WC',
99
+ labelShowers: 'Docce (10 min)',
100
+ labelGarden: 'Irrigazione Giardino',
101
+ gardenArea: '(50m²)',
102
+ materialMetal: 'Metallo / Tegole Smaltate',
103
+ materialClay: 'Tegole in cotto / Argilla',
104
+ materialConcrete: 'Cemento / Asfalto',
105
+ materialGravel: 'Ghiaia / Tetto Verde',
106
+ },
107
+ seo: [
108
+ {
109
+ type: 'title',
110
+ text: 'Recupero dell\'Acqua Piovana: Autonomia e Sostenibilità',
111
+ level: 2,
112
+ },
113
+ {
114
+ type: 'paragraph',
115
+ html: 'La maggior parte dei proprietari di case non è consapevole del potenziale del proprio tetto. Un tetto standard può catturare migliaia di litri di acqua gratuita ogni anno. Questo strumento quantifica tale potenziale, permettendoti di calcolare esattamente quanta acqua puoi "raccogliere" e determinare la dimensione ideale del serbatoio per l\'accumulo.',
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'Logica di Calcolo',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'La formula base per la raccolta dell\'acqua piovana è semplice ma potente:',
125
+ },
126
+ {
127
+ type: 'paragraph',
128
+ html: '<code style="display:block;padding:1rem;background:var(--bg-alt);border-radius:0.5rem;margin:1rem 0;font-family:monospace;">Volume = Area × Precipitazioni × Coefficiente di Deflusso × Efficienza Filtro</code>',
129
+ },
130
+ {
131
+ type: 'list',
132
+ items: [
133
+ '<strong>Area:</strong> L\'ingombro del tetto (lunghezza × larghezza proiettata).',
134
+ '<strong>Precipitazioni:</strong> Pioggia caduta in millimetri.',
135
+ '<strong>Coefficiente:</strong> Quanta acqua perde il tuo tetto (es. assorbimento).',
136
+ '<strong>Efficienza:</strong> Perdite nei filtri pre-serbatoio (~10%).',
137
+ ],
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: 'Perché Raccogliere l\'Acqua Piovana?',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'list',
146
+ items: [
147
+ '<strong>Risparmio:</strong> Riduci significativamente la bolletta dell\'acqua.',
148
+ '<strong>Giardinaggio:</strong> Le piante amano l\'acqua senza cloro o calcare.',
149
+ '<strong>Resilienza:</strong> Mantieni una riserva di emergenza in caso di interruzioni.',
150
+ ],
151
+ },
152
+ {
153
+ type: 'title',
154
+ text: 'Dimensionamento del Serbatoio',
155
+ level: 2,
156
+ },
157
+ {
158
+ type: 'paragraph',
159
+ html: 'L\'errore più comune è acquistare un serbatoio basandosi solo sul budget. Se è troppo piccolo, sprecherai migliaia di litri a causa del troppo pieno. Se è troppo grande, spenderai soldi inutilmente. Una regola generale è di avere una capacità per conservare <strong>3 mesi</strong> di piovosità media nella tua zona, permettendoti di superare le stagioni secche.',
160
+ },
161
+ ],
162
+ faqTitle: 'Domande Frequenti',
163
+ faq: faqData,
164
+ howTo: howToData,
165
+ bibliographyTitle: 'Riferimenti Scientifici',
166
+ bibliography: [
167
+ {
168
+ name: 'FAO - Rainwater Harvesting and Storage',
169
+ url: 'https://www.fao.org/3/a1348s/a1348s.pdf',
170
+ },
171
+ {
172
+ name: 'Texas A&M AgriLife Extension - Rainwater Harvesting',
173
+ url: 'https://rainwaterharvesting.tamu.edu/',
174
+ },
175
+ {
176
+ name: 'Brad Lancaster - Rainwater Harvesting for Drylands',
177
+ url: 'https://www.harvestingrainwater.com/',
178
+ },
179
+ {
180
+ name: 'European Environment Agency - Water Resources',
181
+ url: 'https://www.eea.europa.eu/en/topics/in-depth/water',
182
+ },
183
+ ],
184
+ schemas: [faqSchema, howToSchema, appSchema],
185
+ };
@@ -0,0 +1,185 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { RainHarvesterLocaleContent } from '../index';
3
+
4
+ const slug = 'rainwater-calculator';
5
+ const title = '雨水貯留量計算機';
6
+ const description = '屋根からどれくらいの雨水を集められるかを計算し、適切な貯水タンクのサイズを判定します。';
7
+
8
+ const faqData = [
9
+ {
10
+ question: '屋根から実際にどれくらいの水を集められますか?',
11
+ answer: '一般的なルールとして、屋根1平方メートルあたり、降水量1ミリにつき約1リットルの水を集めることができます。ただし、蒸発や濾過による損失があり、「流出係数」で調整されます。',
12
+ },
13
+ {
14
+ question: '流出係数とは何ですか?',
15
+ answer: '屋根の材質によってどれだけの水が失われるかを示す割合です。金属や瓦の屋根は非常に効率的(0.85~0.95)ですが、砂利や土の屋根は効率が大幅に低下します(0.1~0.3)。',
16
+ },
17
+ {
18
+ question: '貯水タンクのサイズはどう決めればよいですか?',
19
+ answer: '1ヶ月に予想される最大降水量を計算し、推定される月間消費量と照らし合わせて検討する必要があります。小さすぎると大雨の際に溢れてしまい、大きすぎると不必要にコストがかかります。',
20
+ },
21
+ {
22
+ question: '集めた雨水は飲んでも安全ですか?',
23
+ answer: 'そのままでは安全ではありません。雨水には埃、鳥の糞、空気中の微粒子が含まれています。飲用にする場合は、沈殿フィルター、活性炭、およびUVライトや塩素による消毒を通す必要があります。',
24
+ },
25
+ ];
26
+
27
+ const howToData = [
28
+ {
29
+ name: '水平投影面積を測定する',
30
+ text: '屋根の土台の長さと幅を測定します(斜面の面積ではなく、地面に落ちる影の面積です)。',
31
+ },
32
+ {
33
+ name: '地域の降水量を確認する',
34
+ text: '気象庁などのデータで、お住まいの地域の年間または月間の平均降水量(ミリメートル単位)を確認します。',
35
+ },
36
+ {
37
+ name: '材質の効率を適用する',
38
+ text: '計算機で屋根の材質を選択し、吸収や熱で失われる水の分を差し引きます。',
39
+ },
40
+ {
41
+ name: '必要な容量を計算する',
42
+ text: '年間収穫量の結果を参考に、乾季のために総収穫量の少なくとも20~30%を貯蔵できるタンクを選びます。',
43
+ },
44
+ ];
45
+
46
+ const faqSchema: WithContext<FAQPage> = {
47
+ '@context': 'https://schema.org',
48
+ '@type': 'FAQPage',
49
+ mainEntity: faqData.map((item) => ({
50
+ '@type': 'Question',
51
+ name: item.question,
52
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
53
+ })),
54
+ };
55
+
56
+ const howToSchema: WithContext<HowToThing> = {
57
+ '@context': 'https://schema.org',
58
+ '@type': 'HowTo',
59
+ name: title,
60
+ description,
61
+ step: howToData.map((step, i) => ({
62
+ '@type': 'HowToStep',
63
+ position: i + 1,
64
+ name: step.name,
65
+ text: step.text,
66
+ })),
67
+ };
68
+
69
+ const appSchema: WithContext<SoftwareApplication> = {
70
+ '@context': 'https://schema.org',
71
+ '@type': 'SoftwareApplication',
72
+ name: title,
73
+ description,
74
+ applicationCategory: 'UtilityApplication',
75
+ operatingSystem: 'All',
76
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
77
+ inLanguage: 'ja',
78
+ };
79
+
80
+ export const content: RainHarvesterLocaleContent = {
81
+ slug,
82
+ title,
83
+ description,
84
+ ui: {
85
+ headInputs: '屋根の設定',
86
+ headResults: '収穫ポテンシャル',
87
+ labelArea: '屋根面積',
88
+ labelRainfall: '年間降水量',
89
+ labelMaterial: '屋根の材質',
90
+ unitM2: 'm²',
91
+ unitMm: 'mm',
92
+ unitLiters: 'リットル',
93
+ helpRainfall: '分からない場合は、Googleで「(お住まいの都市名) 年間平均降水量」を検索してください。',
94
+ efficiencyTitle: '効率係数',
95
+ efficiencyNote: 'フィルターや蒸発による損失として10%を差し引いています。',
96
+ resultTitle: '年間に集められる水の量',
97
+ equivalenciesTitle: '活用例(目安)',
98
+ labelFlushes: 'トイレの洗浄回数',
99
+ labelShowers: 'シャワー(10分間)',
100
+ labelGarden: '庭への散水',
101
+ gardenArea: '(50m²)',
102
+ materialMetal: '金属 / 釉薬瓦',
103
+ materialClay: '素焼き瓦 / 粘土',
104
+ materialConcrete: 'コンクリート / アスファルト',
105
+ materialGravel: '砂利 / 屋上緑化',
106
+ },
107
+ seo: [
108
+ {
109
+ type: 'title',
110
+ text: '雨水利用:自立とサステナビリティ',
111
+ level: 2,
112
+ },
113
+ {
114
+ type: 'paragraph',
115
+ html: '多くの住宅所有者は、自分の屋根が持つポテンシャルに気づいていません。標準的な屋根は、毎年何千リットルもの無料の水をキャッチすることができます。このツールはそのポテンシャルを数値化し、どれくらいの水を「収穫」できるかを正確に計算することで、理想的な貯水タンクのサイズを決定する助けとなります。',
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: '計算のロジック',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: '雨水収集の基本式はシンプルですが強力です:',
125
+ },
126
+ {
127
+ type: 'paragraph',
128
+ html: '<code style="display:block;padding:1rem;background:var(--bg-alt);border-radius:0.5rem;margin:1rem 0;font-family:monospace;">容量 = 面積 × 降水量 × 流出係数 × フィルター効率</code>',
129
+ },
130
+ {
131
+ type: 'list',
132
+ items: [
133
+ '<strong>面積:</strong> 屋根の設置面積(投影された長さ × 幅)。',
134
+ '<strong>降水量:</strong> ミリメートル単位の降雨量。',
135
+ '<strong>係数:</strong> 屋根でどれだけの水が失われるか(吸収など)。',
136
+ '<strong>効率:</strong> タンク前のフィルターでの損失(約10%)。',
137
+ ],
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: 'なぜ雨水を集めるのか?',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'list',
146
+ items: [
147
+ '<strong>節約:</strong> 水道料金を大幅に削減できます。',
148
+ '<strong>ガーデニング:</strong> 植物は塩素や石灰を含まない水を好みます。',
149
+ '<strong>レジリエンス:</strong> 断水時の非常用備蓄として活用できます。',
150
+ ],
151
+ },
152
+ {
153
+ type: 'title',
154
+ text: 'タンクのサイズ選定',
155
+ level: 2,
156
+ },
157
+ {
158
+ type: 'paragraph',
159
+ html: '最も多い間違いは、予算だけでタンクを購入することです。小さすぎると大雨の際に溢れて無駄になり、大きすぎると不必要なコストがかかります。一般的なルールは、乾季を乗り切るために地域の平均降水量の<strong>3ヶ月分</strong>を貯蔵できる容量を持つことです。',
160
+ },
161
+ ],
162
+ faqTitle: 'よくある質問',
163
+ faq: faqData,
164
+ howTo: howToData,
165
+ bibliographyTitle: '科学的参考文献',
166
+ bibliography: [
167
+ {
168
+ name: 'FAO - Rainwater Harvesting and Storage',
169
+ url: 'https://www.fao.org/3/a1348s/a1348s.pdf',
170
+ },
171
+ {
172
+ name: 'Texas A&M AgriLife Extension - Rainwater Harvesting',
173
+ url: 'https://rainwaterharvesting.tamu.edu/',
174
+ },
175
+ {
176
+ name: 'Brad Lancaster - Rainwater Harvesting for Drylands',
177
+ url: 'https://www.harvestingrainwater.com/',
178
+ },
179
+ {
180
+ name: 'European Environment Agency - Water Resources',
181
+ url: 'https://www.eea.europa.eu/en/topics/in-depth/water',
182
+ },
183
+ ],
184
+ schemas: [faqSchema, howToSchema, appSchema],
185
+ };
@@ -0,0 +1,185 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { RainHarvesterLocaleContent } from '../index';
3
+
4
+ const slug = 'rainwater-calculator';
5
+ const title = '빗물 수집 계산기';
6
+ const description = '지붕에서 수집할 수 있는 빗물의 양을 계산하고 적절한 저장 탱크 용량을 산정해 보세요.';
7
+
8
+ const faqData = [
9
+ {
10
+ question: '지붕에서 실제로 얼마나 많은 물을 모을 수 있나요?',
11
+ answer: '일반적인 규칙은 지붕 면적 1제곱미터당 강수량 1밀리미터당 약 1리터의 물을 모을 수 있다는 것입니다. 다만 증발이나 여과 과정에서 발생하는 손실을 "유출 계수"로 조정해야 합니다.',
12
+ },
13
+ {
14
+ question: '유출 계수란 무엇인가요?',
15
+ answer: '지붕 재질에 따라 물이 얼마나 손실되는지를 나타내는 백분율입니다. 금속이나 기와 지붕은 효율이 매우 높지만(0.85-0.95), 자갈이나 흙 지붕은 효율이 훨씬 낮습니다(0.1-0.3).',
16
+ },
17
+ {
18
+ question: '저장 탱크의 크기는 어떻게 결정하나요?',
19
+ answer: '한 달 동안 예상되는 최대 강수량을 계산하고 이를 예상 월간 소비량과 비교해야 합니다. 탱크가 너무 작으면 폭우 시 넘쳐흐르고, 너무 크면 불필요한 비용이 발생합니다.',
20
+ },
21
+ {
22
+ question: '수집된 빗물을 마셔도 안전한가요?',
23
+ answer: '직접 마시는 것은 안전하지 않습니다. 빗물에는 먼지, 새의 배설물, 공기 중의 입자가 포함되어 있습니다. 식용으로 사용하려면 침전 필터, 활성탄, UV 광선 또는 염소를 이용한 소독 과정을 거쳐야 합니다.',
24
+ },
25
+ ];
26
+
27
+ const howToData = [
28
+ {
29
+ name: '수평 면적 측정하기',
30
+ text: '지붕 바닥의 가로와 세로 길이를 측정합니다(경사면의 넓이가 아니라 바닥에 투영되는 넓이 기준).',
31
+ },
32
+ {
33
+ name: '지역 강수량 확인하기',
34
+ text: '기상청 홈페이지 등을 통해 해당 지역의 연간 또는 월간 평균 강수량(mm)을 확인합니다.',
35
+ },
36
+ {
37
+ name: '재질 효율 적용하기',
38
+ text: '계산기에서 지붕 재질을 선택하여 흡수나 열로 인해 손실될 물의 양을 차감합니다.',
39
+ },
40
+ {
41
+ name: '필요한 용량 계산하기',
42
+ text: '연간 리터 결과를 바탕으로 가뭄 시기에 대비해 전체 수확량의 최소 20-30%를 저장할 수 있는 탱크를 선택합니다.',
43
+ },
44
+ ];
45
+
46
+ const faqSchema: WithContext<FAQPage> = {
47
+ '@context': 'https://schema.org',
48
+ '@type': 'FAQPage',
49
+ mainEntity: faqData.map((item) => ({
50
+ '@type': 'Question',
51
+ name: item.question,
52
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
53
+ })),
54
+ };
55
+
56
+ const howToSchema: WithContext<HowToThing> = {
57
+ '@context': 'https://schema.org',
58
+ '@type': 'HowTo',
59
+ name: title,
60
+ description,
61
+ step: howToData.map((step, i) => ({
62
+ '@type': 'HowToStep',
63
+ position: i + 1,
64
+ name: step.name,
65
+ text: step.text,
66
+ })),
67
+ };
68
+
69
+ const appSchema: WithContext<SoftwareApplication> = {
70
+ '@context': 'https://schema.org',
71
+ '@type': 'SoftwareApplication',
72
+ name: title,
73
+ description,
74
+ applicationCategory: 'UtilityApplication',
75
+ operatingSystem: 'All',
76
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
77
+ inLanguage: 'ko',
78
+ };
79
+
80
+ export const content: RainHarvesterLocaleContent = {
81
+ slug,
82
+ title,
83
+ description,
84
+ ui: {
85
+ headInputs: '지붕 설정',
86
+ headResults: '수집 잠재량',
87
+ labelArea: '지붕 면적',
88
+ labelRainfall: '연간 강수량',
89
+ labelMaterial: '지붕 재질',
90
+ unitM2: 'm²',
91
+ unitMm: 'mm',
92
+ unitLiters: '리터',
93
+ helpRainfall: '잘 모르시나요? 구글에 "(해당 도시명) 연평균 강수량"을 검색해 보세요.',
94
+ efficiencyTitle: '효율 계수',
95
+ efficiencyNote: '필터 및 증발로 인한 10%의 손실이 적용됩니다.',
96
+ resultTitle: '연간 수집 잠재량',
97
+ equivalenciesTitle: '실질적 활용 예시',
98
+ labelFlushes: '변기 물 내림 횟수',
99
+ labelShowers: '샤워 횟수(10분 기준)',
100
+ labelGarden: '정원 물 주기',
101
+ gardenArea: '(50m²)',
102
+ materialMetal: '금속 / 유약 기와',
103
+ materialClay: '전통 기와 / 점토',
104
+ materialConcrete: '콘크리트 / 아스팔트',
105
+ materialGravel: '자갈 / 녹색 지붕',
106
+ },
107
+ seo: [
108
+ {
109
+ type: 'title',
110
+ text: '빗물 수집: 자급자족과 지속 가능성',
111
+ level: 2,
112
+ },
113
+ {
114
+ type: 'paragraph',
115
+ html: '많은 주택 소유자들이 자신의 지붕이 가진 잠재력을 알지 못합니다. 표준 지붕은 매년 수천 리터의 물을 무료로 모을 수 있습니다. 이 도구는 그 잠재력을 수치화하여 여러분이 정확히 얼마나 많은 물을 "수확"할 수 있는지 계산하고 저장에 필요한 이상적인 탱크 크기를 결정할 수 있게 해줍니다.',
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: '계산 로직',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: '빗물 수집을 위한 기본 공식은 간단하지만 강력합니다.',
125
+ },
126
+ {
127
+ type: 'paragraph',
128
+ html: '<code style="display:block;padding:1rem;background:var(--bg-alt);border-radius:0.5rem;margin:1rem 0;font-family:monospace;">용량 = 면적 × 강수량 × 유출 계수 × 필터 효율</code>',
129
+ },
130
+ {
131
+ type: 'list',
132
+ items: [
133
+ '<strong>면적:</strong> 지붕 투영 면적(가로 × 세로).',
134
+ '<strong>강수량:</strong> 밀리미터 단위의 강우량.',
135
+ '<strong>계수:</strong> 지붕에서 흡수 등으로 손실되는 물의 양.',
136
+ '<strong>효율:</strong> 탱크 도달 전 필터에서 발생하는 손실(약 10%).',
137
+ ],
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: '왜 빗물을 수집하나요?',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'list',
146
+ items: [
147
+ '<strong>절약:</strong> 수도 요금을 크게 줄일 수 있습니다.',
148
+ '<strong>원예:</strong> 식물은 염소나 석회가 없는 물을 좋아합니다.',
149
+ '<strong>회복력:</strong> 단수 시 비상용 물을 확보할 수 있습니다.',
150
+ ],
151
+ },
152
+ {
153
+ type: 'title',
154
+ text: '탱크 용량 산정',
155
+ level: 2,
156
+ },
157
+ {
158
+ type: 'paragraph',
159
+ html: '가장 흔한 실수는 예산에만 맞춰 탱크를 사는 것입니다. 너무 작으면 넘쳐서 물을 낭비하게 되고, 너무 크면 불필요한 비용을 쓰게 됩니다. 일반적인 규칙은 해당 지역 평균 강수량의 <strong>3개월분</strong>을 저장할 수 있는 용량을 확보하여 건기를 대비하는 것입니다.',
160
+ },
161
+ ],
162
+ faqTitle: '자주 묻는 질문',
163
+ faq: faqData,
164
+ howTo: howToData,
165
+ bibliographyTitle: '과학적 참고 문헌',
166
+ bibliography: [
167
+ {
168
+ name: 'FAO - Rainwater Harvesting and Storage',
169
+ url: 'https://www.fao.org/3/a1348s/a1348s.pdf',
170
+ },
171
+ {
172
+ name: 'Texas A&M AgriLife Extension - Rainwater Harvesting',
173
+ url: 'https://rainwaterharvesting.tamu.edu/',
174
+ },
175
+ {
176
+ name: 'Brad Lancaster - Rainwater Harvesting for Drylands',
177
+ url: 'https://www.harvestingrainwater.com/',
178
+ },
179
+ {
180
+ name: 'European Environment Agency - Water Resources',
181
+ url: 'https://www.eea.europa.eu/en/topics/in-depth/water',
182
+ },
183
+ ],
184
+ schemas: [faqSchema, howToSchema, appSchema],
185
+ };