@jjlmoya/utils-nature 1.3.0 → 1.5.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 (70) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +110 -0
  3. package/src/category/i18n/id.ts +110 -0
  4. package/src/category/i18n/it.ts +110 -0
  5. package/src/category/i18n/ja.ts +110 -0
  6. package/src/category/i18n/ko.ts +110 -0
  7. package/src/category/i18n/nl.ts +110 -0
  8. package/src/category/i18n/pl.ts +110 -0
  9. package/src/category/i18n/pt.ts +110 -0
  10. package/src/category/i18n/ru.ts +110 -0
  11. package/src/category/i18n/sv.ts +110 -0
  12. package/src/category/i18n/tr.ts +110 -0
  13. package/src/category/i18n/zh.ts +110 -0
  14. package/src/category/index.ts +13 -1
  15. package/src/tests/i18n_coverage.test.ts +36 -0
  16. package/src/tests/slug_language_code_format.test.ts +23 -0
  17. package/src/tests/slug_uniqueness.test.ts +81 -0
  18. package/src/tests/tool_validation.test.ts +1 -2
  19. package/src/tool/cricketThermometer/i18n/de.ts +181 -0
  20. package/src/tool/cricketThermometer/i18n/id.ts +181 -0
  21. package/src/tool/cricketThermometer/i18n/it.ts +181 -0
  22. package/src/tool/cricketThermometer/i18n/ja.ts +181 -0
  23. package/src/tool/cricketThermometer/i18n/ko.ts +181 -0
  24. package/src/tool/cricketThermometer/i18n/nl.ts +181 -0
  25. package/src/tool/cricketThermometer/i18n/pl.ts +181 -0
  26. package/src/tool/cricketThermometer/i18n/pt.ts +181 -0
  27. package/src/tool/cricketThermometer/i18n/ru.ts +181 -0
  28. package/src/tool/cricketThermometer/i18n/sv.ts +181 -0
  29. package/src/tool/cricketThermometer/i18n/tr.ts +181 -0
  30. package/src/tool/cricketThermometer/i18n/zh.ts +181 -0
  31. package/src/tool/cricketThermometer/index.ts +15 -7
  32. package/src/tool/digitalCarbon/i18n/de.ts +235 -0
  33. package/src/tool/digitalCarbon/i18n/id.ts +235 -0
  34. package/src/tool/digitalCarbon/i18n/it.ts +235 -0
  35. package/src/tool/digitalCarbon/i18n/ja.ts +235 -0
  36. package/src/tool/digitalCarbon/i18n/ko.ts +235 -0
  37. package/src/tool/digitalCarbon/i18n/nl.ts +235 -0
  38. package/src/tool/digitalCarbon/i18n/pl.ts +235 -0
  39. package/src/tool/digitalCarbon/i18n/pt.ts +235 -0
  40. package/src/tool/digitalCarbon/i18n/ru.ts +235 -0
  41. package/src/tool/digitalCarbon/i18n/sv.ts +235 -0
  42. package/src/tool/digitalCarbon/i18n/tr.ts +235 -0
  43. package/src/tool/digitalCarbon/i18n/zh.ts +235 -0
  44. package/src/tool/digitalCarbon/index.ts +15 -7
  45. package/src/tool/rainHarvester/i18n/de.ts +185 -0
  46. package/src/tool/rainHarvester/i18n/id.ts +185 -0
  47. package/src/tool/rainHarvester/i18n/it.ts +185 -0
  48. package/src/tool/rainHarvester/i18n/ja.ts +185 -0
  49. package/src/tool/rainHarvester/i18n/ko.ts +185 -0
  50. package/src/tool/rainHarvester/i18n/nl.ts +185 -0
  51. package/src/tool/rainHarvester/i18n/pl.ts +185 -0
  52. package/src/tool/rainHarvester/i18n/pt.ts +185 -0
  53. package/src/tool/rainHarvester/i18n/ru.ts +185 -0
  54. package/src/tool/rainHarvester/i18n/sv.ts +185 -0
  55. package/src/tool/rainHarvester/i18n/tr.ts +185 -0
  56. package/src/tool/rainHarvester/i18n/zh.ts +185 -0
  57. package/src/tool/rainHarvester/index.ts +15 -7
  58. package/src/tool/seedCalculator/i18n/de.ts +213 -0
  59. package/src/tool/seedCalculator/i18n/id.ts +213 -0
  60. package/src/tool/seedCalculator/i18n/it.ts +213 -0
  61. package/src/tool/seedCalculator/i18n/ja.ts +213 -0
  62. package/src/tool/seedCalculator/i18n/ko.ts +213 -0
  63. package/src/tool/seedCalculator/i18n/nl.ts +213 -0
  64. package/src/tool/seedCalculator/i18n/pl.ts +213 -0
  65. package/src/tool/seedCalculator/i18n/pt.ts +213 -0
  66. package/src/tool/seedCalculator/i18n/ru.ts +213 -0
  67. package/src/tool/seedCalculator/i18n/sv.ts +213 -0
  68. package/src/tool/seedCalculator/i18n/tr.ts +213 -0
  69. package/src/tool/seedCalculator/i18n/zh.ts +213 -0
  70. 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 = 'kalkulyator-dozhdevoy-vody';
5
+ const title = 'Калькулятор сбора дождевой воды';
6
+ const description = 'Рассчитайте, сколько дождевой воды вы можете собрать со своей крыши, и подберите размер накопительного бака.';
7
+
8
+ const faqData = [
9
+ {
10
+ question: 'Сколько воды я на самом деле могу собрать со своей крыши?',
11
+ answer: 'Общее правило гласит, что на каждый квадратный метр крыши и каждый миллиметр дождя можно собрать примерно 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: 'Не напрямую. Вода переносит пыль, птичий помет и частицы из воздуха. Для употребления человеком она должна пройти через осадочные фильтры, активированный уголь и дезинфекцию с помощью УФ-излучения или хлора.',
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: 'ru',
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: 'м²',
91
+ unitMm: 'мм',
92
+ unitLiters: 'Литры',
93
+ helpRainfall: 'Не знаете? Поищите в Google «среднегодовое количество осадков в [вашем городе]».',
94
+ efficiencyTitle: 'Коэффициент эффективности',
95
+ efficiencyNote: 'Применяется потеря 10% на фильтры и испарение.',
96
+ resultTitle: 'Годовой потенциал сбора',
97
+ equivalenciesTitle: 'Практические эквиваленты',
98
+ labelFlushes: 'Смывы унитаза',
99
+ labelShowers: 'Принятия душа (10 мин)',
100
+ labelGarden: 'Полив сада',
101
+ gardenArea: '(50м²)',
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 = 'regnvatten-kalkylator';
5
+ const title = 'Kalkylator för regnvatteninsamling';
6
+ const description = 'Beräkna hur mycket regnvatten du kan samla in från ditt tak och dimensionera din lagringstank.';
7
+
8
+ const faqData = [
9
+ {
10
+ question: 'Hur mycket vatten kan jag faktiskt samla in från mitt tak?',
11
+ answer: 'Den allmänna regeln är att för varje kvadratmeter tak och varje millimeter regn kan du samla in cirka 1 liter vatten. Det finns dock förluster från avdunstning och filtrering som justeras med en "avrinningskoefficient".',
12
+ },
13
+ {
14
+ question: 'Vad är en avrinningskoefficient?',
15
+ answer: 'Det är en procentsats som anger hur mycket vatten som går förlorat beroende på takmaterialet. Ett plåt- eller tegeltak är mycket effektivt (0,85-0,95), medan ett grus- eller jordtak är mycket mindre effektivt (0,1-0,3).',
16
+ },
17
+ {
18
+ question: 'Hur dimensionerar jag lagringstanken?',
19
+ answer: 'Du bör beräkna den maximala förväntade regnvolymen under en månad och jämföra den med din uppskattade månatliga förbrukning. En tank som är för liten kommer att svämma över vid skyfall, och en som är för stor blir onödigt dyr.',
20
+ },
21
+ {
22
+ question: 'Är det säkert att dricka insamlat regnvatten?',
23
+ answer: 'Inte direkt. Vatten för med sig damm, fågelspillning och luftburna partiklar. För mänsklig konsumtion måste det passera genom sedimentfilter, aktivt kol och desinfektion med UV-ljus eller klor.',
24
+ },
25
+ ];
26
+
27
+ const howToData = [
28
+ {
29
+ name: 'Mät den horisontella ytan',
30
+ text: 'Mät längden och bredden på din takbas (inte den sluttande ytan, utan ytan som projicerar skuggor på marken).',
31
+ },
32
+ {
33
+ name: 'Kontrollera lokal nederbörd',
34
+ text: 'Sök hos den nationella meteorologiska tjänsten efter den genomsnittliga årliga eller månatliga nederbörden i ditt område i millimeter (mm).',
35
+ },
36
+ {
37
+ name: 'Tillämpa materialeffektivitet',
38
+ text: 'Välj ditt takmaterial i vår kalkylator för att dra av det vatten som går förlorat genom absorption eller värme.',
39
+ },
40
+ {
41
+ name: 'Beräkna den erforderliga volymen',
42
+ text: 'Använd det årliga litresultatet för att välja en tank som kan lagra minst 20-30 % av den totala skörden för torra perioder.',
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: 'sv',
78
+ };
79
+
80
+ export const content: RainHarvesterLocaleContent = {
81
+ slug,
82
+ title,
83
+ description,
84
+ ui: {
85
+ headInputs: 'Takinställningar',
86
+ headResults: 'Skördepotential',
87
+ labelArea: 'Takarea',
88
+ labelRainfall: 'Årlig nederbörd',
89
+ labelMaterial: 'Takmaterial',
90
+ unitM2: 'm²',
91
+ unitMm: 'mm',
92
+ unitLiters: 'Liter',
93
+ helpRainfall: 'Vet du inte? Sök på "genomsnittlig årlig nederbörd [din stad]" på Google.',
94
+ efficiencyTitle: 'Effektivitetsfaktor',
95
+ efficiencyNote: 'En förlust på 10 % tillämpas för filter och avdunstning.',
96
+ resultTitle: 'Årlig skördepotential',
97
+ equivalenciesTitle: 'Praktiska motsvarigheter',
98
+ labelFlushes: 'Toalettspolningar',
99
+ labelShowers: 'Duschar (10 min)',
100
+ labelGarden: 'Bevattning av trädgård',
101
+ gardenArea: '(50m²)',
102
+ materialMetal: 'Plåt / Glaserat tegel',
103
+ materialClay: 'Vingtegel / Lera',
104
+ materialConcrete: 'Betong / Asfalt',
105
+ materialGravel: 'Grus / Grönt tak',
106
+ },
107
+ seo: [
108
+ {
109
+ type: 'title',
110
+ text: 'Regnvatteninsamling: Autonomi och hållbarhet',
111
+ level: 2,
112
+ },
113
+ {
114
+ type: 'paragraph',
115
+ html: 'De flesta husägare är omedvetna om potentialen i sina egna tak. Ett standardtak kan fånga in tusentals liter gratis vatten varje år. Detta verktyg kvantifierar den potentialen, så att du kan beräkna exakt hur mycket vatten du kan "skörda" och bestämma den ideala tankstorleken för lagring.',
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'Beräkningslogik',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'Basformeln för regnvatteninsamling är enkel men kraftfull:',
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;">Volym = Area × Nederbörd × Avrinningskoefficient × Filtereffektivitet</code>',
129
+ },
130
+ {
131
+ type: 'list',
132
+ items: [
133
+ '<strong>Area:</strong> Din takyta (projicerad längd × bredd).',
134
+ '<strong>Nederbörd:</strong> Fallande regn i millimeter.',
135
+ '<strong>Koefficient:</strong> Hur mycket vatten ditt tak förlorar (t.ex. absorption).',
136
+ '<strong>Effektivitet:</strong> Förluster i filter före tanken (~10 %).',
137
+ ],
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: 'Varför samla regnvatten?',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'list',
146
+ items: [
147
+ '<strong>Besparingar:</strong> Minska din vattenräkning avsevärt.',
148
+ '<strong>Trädgårdsarbete:</strong> Växter älskar vatten utan klor eller kalk.',
149
+ '<strong>Motståndskraft:</strong> Behåll en reserv för nödsituationer vid avbrott.',
150
+ ],
151
+ },
152
+ {
153
+ type: 'title',
154
+ text: 'Dimensionering av tank',
155
+ level: 2,
156
+ },
157
+ {
158
+ type: 'paragraph',
159
+ html: 'Det vanligaste misstaget är att köpa en tank enbart baserat på budget. Om den är för liten kommer du att slösa bort tusentals liter på grund av överfyllnad. Om den är för stor kommer du att spendera pengar i onödan. En allmän regel är att ha kapacitet att lagra <strong>3 månader</strong> av genomsnittlig nederbörd i ditt område, vilket gör att du kan överbrygga torrperioder.',
160
+ },
161
+ ],
162
+ faqTitle: 'Vanliga frågor',
163
+ faq: faqData,
164
+ howTo: howToData,
165
+ bibliographyTitle: 'Vetenskapliga referenser',
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 = 'yagmur-suyu-hesaplayici';
5
+ const title = 'Yağmur Suyu Hasadı Hesaplayıcı';
6
+ const description = 'Çatınızdan ne kadar yağmur suyu toplayabileceğinizi hesaplayın ve depolama tankınızı boyutlandırın.';
7
+
8
+ const faqData = [
9
+ {
10
+ question: 'Çatımdan gerçekte ne kadar su toplayabilirim?',
11
+ answer: 'Genel kural, her metrekare çatı ve her milimetre yağmur için yaklaşık 1 litre su toplayabileceğinizdir. Ancak, "akış katsayısı" ile ayarlanan buharlaşma ve filtrasyon kaynaklı kayıplar vardır.',
12
+ },
13
+ {
14
+ question: 'Akış katsayısı nedir?',
15
+ answer: 'Çatı malzemesine bağlı olarak ne kadar suyun kaybolduğunu gösteren bir yüzdedir. Metal veya kiremit bir çatı çok verimlidir (0,85-0,95), çakıl veya toprak bir çatı ise çok daha az verimlidir (0,1-0,3).',
16
+ },
17
+ {
18
+ question: 'Depolama tankını nasıl boyutlandırırım?',
19
+ answer: 'Bir ayda beklenen maksimum yağmur hacmini hesaplamalı ve bunu tahmini aylık tüketiminizle karşılaştırmalısınız. Çok küçük bir tank fırtınalarda taşar, çok büyük olanı ise gereksiz yere pahalı olur.',
20
+ },
21
+ {
22
+ question: 'Toplanan yağmur suyunu içmek güvenli midir?',
23
+ answer: 'Doğrudan değil. Su, toz, kuş pisliği ve havadaki partikülleri taşır. İnsan tüketimi için tortu filtrelerinden, aktif karbondan geçmeli ve UV ışığı veya klor kullanılarak dezenfekte edilmelidir.',
24
+ },
25
+ ];
26
+
27
+ const howToData = [
28
+ {
29
+ name: 'Yatay yüzeyi ölçün',
30
+ text: 'Çatı tabanınızın uzunluğunu ve genişliğini ölçün (eğimli yüzeyi değil, yere gölge düşüren alanı).',
31
+ },
32
+ {
33
+ name: 'Yerel yağış miktarını kontrol edin',
34
+ text: 'Bölgenizdeki yıllık veya aylık ortalama yağış miktarını milimetre (mm) cinsinden öğrenmek için ulusal meteoroloji servisini kontrol edin.',
35
+ },
36
+ {
37
+ name: 'Malzeme verimliliğini uygulayın',
38
+ text: 'Emme veya ısı yoluyla kaybolacak suyu düşmek için hesaplayıcımızda çatı malzemenizi seçin.',
39
+ },
40
+ {
41
+ name: 'Gerekli hacmi hesaplayın',
42
+ text: 'Kurak dönemler için toplam hasadın en az %20-30\'unu depolayabilecek bir tank seçmek için yıllık litre sonucunu kullanın.',
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: 'tr',
78
+ };
79
+
80
+ export const content: RainHarvesterLocaleContent = {
81
+ slug,
82
+ title,
83
+ description,
84
+ ui: {
85
+ headInputs: 'Çatı Ayarları',
86
+ headResults: 'Hasat Potansiyeli',
87
+ labelArea: 'Çatı Alanı',
88
+ labelRainfall: 'Yıllık Yağış',
89
+ labelMaterial: 'Çatı Malzemesi',
90
+ unitM2: 'm²',
91
+ unitMm: 'mm',
92
+ unitLiters: 'Litre',
93
+ helpRainfall: 'Bilmiyor musunuz? Google\'da "ortalama yıllık yağış [şehriniz]" diye aratın.',
94
+ efficiencyTitle: 'Verimlilik Faktörü',
95
+ efficiencyNote: 'Filtreler ve buharlaşma için %10\'luk bir kayıp uygulanır.',
96
+ resultTitle: 'Yıllık Hasat Potansiyeli',
97
+ equivalenciesTitle: 'Pratik Karşılıklar',
98
+ labelFlushes: 'Sifon Çekme',
99
+ labelShowers: 'Duş (10 dk)',
100
+ labelGarden: 'Bahçe Sulama',
101
+ gardenArea: '(50m²)',
102
+ materialMetal: 'Metal / Sırlı Kiremit',
103
+ materialClay: 'Alaturka Kiremit / Kil',
104
+ materialConcrete: 'Beton / Asfalt',
105
+ materialGravel: 'Çakıl / Yeşil Çatı',
106
+ },
107
+ seo: [
108
+ {
109
+ type: 'title',
110
+ text: 'Yağmur Suyu Hasadı: Özerklik ve Sürdürülebilirlik',
111
+ level: 2,
112
+ },
113
+ {
114
+ type: 'paragraph',
115
+ html: 'Çoğu ev sahibi kendi çatılarının potansiyelinin farkında değildir. Standart bir çatı her yıl binlerce litre bedava su yakalayabilir. Bu araç, bu potansiyeli sayısallaştırarak ne kadar su "hasat" edebileceğinizi tam olarak hesaplamanıza ve depolama için ideal tank boyutunu belirlemenize olanak tanır.',
116
+ },
117
+ {
118
+ type: 'title',
119
+ text: 'Hesaplama Mantığı',
120
+ level: 3,
121
+ },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'Yağmur suyu toplama için temel formül basit ama güçlüdür:',
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;">Hacim = Alan × Yağış × Akış Katsayısı × Filtre Verimliliği</code>',
129
+ },
130
+ {
131
+ type: 'list',
132
+ items: [
133
+ '<strong>Alan:</strong> Çatı ayak iziniz (izdüşüm uzunluk × genişlik).',
134
+ '<strong>Yağış:</strong> Milimetre cinsinden düşen yağmur.',
135
+ '<strong>Katsayı:</strong> Çatınızın ne kadar su kaybettiği (örneğin emilim).',
136
+ '<strong>Verimlilik:</strong> Tank öncesi filtrelerdeki kayıplar (~%10).',
137
+ ],
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: 'Neden Yağmur Suyu Toplamalıyız?',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'list',
146
+ items: [
147
+ '<strong>Tasarruf:</strong> Su faturanızı önemli ölçüde azaltın.',
148
+ '<strong>Bahçecilik:</strong> Bitkiler klor veya kireç içermeyen suyu sever.',
149
+ '<strong>Dayanıklılık:</strong> Kesintiler durumunda acil durum rezervi bulundurun.',
150
+ ],
151
+ },
152
+ {
153
+ type: 'title',
154
+ text: 'Tank Boyutlandırma',
155
+ level: 2,
156
+ },
157
+ {
158
+ type: 'paragraph',
159
+ html: 'En yaygın hata, sadece bütçeye göre tank almaktır. Çok küçükse, taşma nedeniyle binlerce litreyi boşa harcarsınız. Çok büyükse, gereksiz yere para harcarsınız. Genel kural, bölgenizdeki ortalama yağışın <strong>3 aylık</strong> miktarını depolayacak kapasiteye sahip olmaktır; bu da kurak mevsimleri atlatmanızı sağlar.',
160
+ },
161
+ ],
162
+ faqTitle: 'Sıkça Sorulan Sorular',
163
+ faq: faqData,
164
+ howTo: howToData,
165
+ bibliographyTitle: 'Bilimsel Referanslar',
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
+ };