@jjlmoya/utils-nature 1.22.0 → 1.24.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 (68) hide show
  1. package/package.json +2 -2
  2. package/src/category/i18n/es.ts +1 -1
  3. package/src/category/i18n/fr.ts +110 -110
  4. package/src/category/i18n/it.ts +1 -1
  5. package/src/category/i18n/pl.ts +1 -1
  6. package/src/category/i18n/pt.ts +1 -1
  7. package/src/category/i18n/ru.ts +110 -110
  8. package/src/category/seo.astro +1 -1
  9. package/src/components/PreviewNavSidebar.astro +1 -1
  10. package/src/components/PreviewToolbar.astro +1 -1
  11. package/src/data.ts +1 -1
  12. package/src/env.d.ts +1 -1
  13. package/src/layouts/PreviewLayout.astro +117 -117
  14. package/src/pages/[locale]/[slug].astro +164 -164
  15. package/src/pages/index.astro +1 -1
  16. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  17. package/src/tests/category_seo_quality.test.ts +74 -0
  18. package/src/tests/faq_count.test.ts +19 -19
  19. package/src/tests/mocks/astro_mock.js +1 -1
  20. package/src/tests/no_en_dash.test.ts +71 -71
  21. package/src/tests/no_h1_in_components.test.ts +1 -1
  22. package/src/tests/seo_length.test.ts +23 -23
  23. package/src/tests/seo_parity.test.ts +2 -2
  24. package/src/tests/seo_wellformed_export.test.ts +65 -0
  25. package/src/tests/spanish_leakage.test.ts +175 -175
  26. package/src/tool/compostBinVolumeRatioCalculator/bibliography.astro +2 -14
  27. package/src/tool/compostBinVolumeRatioCalculator/seo.astro +6 -14
  28. package/src/tool/cricketThermometer/i18n/de.ts +169 -169
  29. package/src/tool/cricketThermometer/i18n/en.ts +169 -169
  30. package/src/tool/cricketThermometer/i18n/es.ts +169 -169
  31. package/src/tool/cricketThermometer/i18n/fr.ts +169 -169
  32. package/src/tool/cricketThermometer/i18n/id.ts +169 -169
  33. package/src/tool/cricketThermometer/i18n/it.ts +169 -169
  34. package/src/tool/cricketThermometer/i18n/ja.ts +169 -169
  35. package/src/tool/cricketThermometer/i18n/ko.ts +169 -169
  36. package/src/tool/cricketThermometer/i18n/nl.ts +169 -169
  37. package/src/tool/cricketThermometer/i18n/pl.ts +169 -169
  38. package/src/tool/cricketThermometer/i18n/pt.ts +169 -169
  39. package/src/tool/cricketThermometer/i18n/ru.ts +169 -169
  40. package/src/tool/cricketThermometer/i18n/sv.ts +169 -169
  41. package/src/tool/cricketThermometer/i18n/tr.ts +169 -169
  42. package/src/tool/cricketThermometer/i18n/zh.ts +169 -169
  43. package/src/tool/cricketThermometer/seo.astro +15 -15
  44. package/src/tool/digitalCarbon/i18n/de.ts +229 -229
  45. package/src/tool/digitalCarbon/i18n/fr.ts +229 -229
  46. package/src/tool/digitalCarbon/i18n/ru.ts +229 -229
  47. package/src/tool/digitalCarbon/seo.astro +15 -15
  48. package/src/tool/rainHarvester/i18n/de.ts +167 -167
  49. package/src/tool/rainHarvester/i18n/en.ts +167 -167
  50. package/src/tool/rainHarvester/i18n/es.ts +167 -167
  51. package/src/tool/rainHarvester/i18n/fr.ts +167 -167
  52. package/src/tool/rainHarvester/i18n/id.ts +167 -167
  53. package/src/tool/rainHarvester/i18n/it.ts +167 -167
  54. package/src/tool/rainHarvester/i18n/ja.ts +167 -167
  55. package/src/tool/rainHarvester/i18n/ko.ts +167 -167
  56. package/src/tool/rainHarvester/i18n/nl.ts +167 -167
  57. package/src/tool/rainHarvester/i18n/pl.ts +167 -167
  58. package/src/tool/rainHarvester/i18n/pt.ts +167 -167
  59. package/src/tool/rainHarvester/i18n/ru.ts +167 -167
  60. package/src/tool/rainHarvester/i18n/sv.ts +167 -167
  61. package/src/tool/rainHarvester/i18n/tr.ts +167 -167
  62. package/src/tool/rainHarvester/i18n/zh.ts +167 -167
  63. package/src/tool/rainHarvester/seo.astro +15 -15
  64. package/src/tool/seedCalculator/i18n/fr.ts +197 -197
  65. package/src/tool/seedCalculator/i18n/pl.ts +197 -197
  66. package/src/tool/seedCalculator/i18n/ru.ts +197 -197
  67. package/src/tool/seedCalculator/seo.astro +15 -15
  68. package/src/types.ts +1 -1
@@ -1,167 +1,167 @@
1
- import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
- import { bibliography } from '../bibliography';
3
- import type { RainHarvesterLocaleContent } from '../index';
4
-
5
- const slug = 'kalkulator-wody-deszczowej';
6
- const title = 'Kalkulator Pozyskiwania Wody Deszczowej';
7
- const description = 'Oblicz, ile wody deszczowej możesz zebrać ze swojego dachu i dobierz odpowiedni zbiornik retencyjny.';
8
-
9
- const faqData = [
10
- {
11
- question: 'Ile wody mogę faktycznie zebrać ze swojego dachu?',
12
- answer: 'Ogólna zasada mówi, że z każdego metra kwadratowego dachu i na każdy milimetr deszczu można zebrać około 1 litra wody. Istnieją jednak straty wynikające z parowania i filtracji, korygowane przez "współczynnik spływu".',
13
- },
14
- {
15
- question: 'Co to jest współczynnik spływu?',
16
- answer: 'Jest to wartość procentowa wskazująca, ile wody tracimy w zależności od materiału, z którego wykonany jest dach. Dach metalowy lub ceramiczny jest bardzo wydajny (0,85-0,95), podczas gdy dach żwirowy lub zielony jest znacznie mniej wydajny (0,1-0,3).',
17
- },
18
- {
19
- question: 'Jak dobrać wielkość zbiornika?',
20
- answer: 'Należy obliczyć maksymalną spodziewaną objętość opadów w miesiącu i zestawić ją z szacowanym miesięcznym zużyciem. Zbyt mały zbiornik będzie przelewał się podczas ulew, a zbyt duży będzie niepotrzebnie kosztowny.',
21
- },
22
- {
23
- question: 'Czy zebrana woda deszczowa jest zdatna do picia?',
24
- answer: 'Nie bezpośrednio. Woda przenosi kurz, odchody ptaków i pyły z powietrza. Aby nadawała się do spożycia przez ludzi, musi przejść przez filtry osadowe, węgiel aktywny oraz dezynfekcję światłem UV lub chlorem.',
25
- },
26
- ];
27
-
28
- const howToData = [
29
- {
30
- name: 'Zmierz powierzchnię w rzucie',
31
- text: 'Zmierz długość i szerokość podstawy dachu (nie powierzchnię skośną, lecz obszar, który rzuca cień na ziemię).',
32
- },
33
- {
34
- name: 'Sprawdź lokalne opady',
35
- text: 'Znajdź w serwisie meteorologicznym średnie roczne lub miesięczne opady w Twojej okolicy podane w milimetrach (mm).',
36
- },
37
- {
38
- name: 'Uwzględnij wydajność materiału',
39
- text: 'Wybierz materiał dachu w naszym kalkulatorze, aby odliczyć wodę, która zostanie utracona przez wchłanianie lub parowanie.',
40
- },
41
- {
42
- name: 'Oblicz wymaganą objętość',
43
- text: 'Użyj wyniku rocznego w litrach, aby dobrać zbiornik, który pomieści co najmniej 20-30% całkowitego rocznego uzysku na okresy suszy.',
44
- },
45
- ];
46
-
47
- const faqSchema: WithContext<FAQPage> = {
48
- '@context': 'https://schema.org',
49
- '@type': 'FAQPage',
50
- mainEntity: faqData.map((item) => ({
51
- '@type': 'Question',
52
- name: item.question,
53
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
54
- })),
55
- };
56
-
57
- const howToSchema: WithContext<HowTo> = {
58
- '@context': 'https://schema.org',
59
- '@type': 'HowTo',
60
- name: title,
61
- description,
62
- step: howToData.map((step, i) => ({
63
- '@type': 'HowToStep',
64
- position: i + 1,
65
- name: step.name,
66
- text: step.text,
67
- })),
68
- };
69
-
70
- const appSchema: WithContext<SoftwareApplication> = {
71
- '@context': 'https://schema.org',
72
- '@type': 'SoftwareApplication',
73
- name: title,
74
- description,
75
- applicationCategory: 'UtilityApplication',
76
- operatingSystem: 'All',
77
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
78
- inLanguage: 'pl',
79
- };
80
-
81
- export const content: RainHarvesterLocaleContent = {
82
- slug,
83
- title,
84
- description,
85
- ui: {
86
- headInputs: 'Ustawienia Dachu',
87
- headResults: 'Potencjał Uzysku',
88
- labelArea: 'Powierzchnia Dachu',
89
- labelRainfall: 'Roczne Opady',
90
- labelMaterial: 'Materiał Dachu',
91
- unitM2: 'm²',
92
- unitMm: 'mm',
93
- unitLiters: 'Litry',
94
- helpRainfall: 'Nie wiesz? Wyszukaj w Google "średnie roczne opady [Twoje miasto]".',
95
- efficiencyTitle: 'Współczynnik Wydajności',
96
- efficiencyNote: 'Uwzględniono 10% strat na filtry i parowanie.',
97
- resultTitle: 'Roczny Potencjał Uzysku',
98
- equivalenciesTitle: 'Praktyczne Przeliczniki',
99
- labelFlushes: 'Spłukania Toalety',
100
- labelShowers: 'Prysznice (10 min)',
101
- labelGarden: 'Podlewanie Ogrodu',
102
- gardenArea: '(50m²)',
103
- materialMetal: 'Metal / Dachówka Szkliwiona',
104
- materialClay: 'Dachówka Ceramiczna / Gliniana',
105
- materialConcrete: 'Beton / Asfalt',
106
- materialGravel: 'Żwir / Zielony Dach',
107
- },
108
- seo: [
109
- {
110
- type: 'title',
111
- text: 'Pozyskiwanie Wody Deszczowej: Autonomia i Ekologia',
112
- level: 2,
113
- },
114
- {
115
- type: 'paragraph',
116
- html: 'Większość właścicieli domów nie zdaje sobie sprawy z potencjału własnego dachu. Standardowy dach może zebrać tysiące litrów darmowej wody każdego roku. To narzędzie pozwala oszacować ten potencjał, obliczyć dokładnie, ile wody możesz "zebrać" i dobrać idealny zbiornik do jej przechowywania.',
117
- },
118
- {
119
- type: 'title',
120
- text: 'Logika Obliczeń',
121
- level: 3,
122
- },
123
- {
124
- type: 'paragraph',
125
- html: 'Podstawowy wzór na zbieranie wody deszczowej jest prosty, ale skuteczny:',
126
- },
127
- {
128
- type: 'paragraph',
129
- html: '<code style="display:block;padding:1rem;background:var(-bg-alt);border-radius:0.5rem;margin:1rem 0;font-family:monospace;">Objętość = Powierzchnia × Opady × Współczynnik Spływu × Wydajność Filtrów</code>',
130
- },
131
- {
132
- type: 'list',
133
- items: [
134
- '<strong>Powierzchnia:</strong> Rzut poziomy dachu (długość × szerokość).',
135
- '<strong>Opady:</strong> Deszcz podany w milimetrach.',
136
- '<strong>Współczynnik:</strong> Ile wody traci Twój dach (np. przez nasiąkanie).',
137
- '<strong>Wydajność:</strong> Straty na filtrach przed zbiornikiem (~10%).',
138
- ],
139
- },
140
- {
141
- type: 'title',
142
- text: 'Dlaczego Warto Zbierać Deszczówkę?',
143
- level: 3,
144
- },
145
- {
146
- type: 'list',
147
- items: [
148
- '<strong>Oszczędność:</strong> Znaczne obniżenie rachunków za wodę.',
149
- '<strong>Ogrodnictwo:</strong> Rośliny uwielbiają wodę bez chloru i wapnia.',
150
- '<strong>Niezależność:</strong> Zapas wody na wypadek awarii sieci.',
151
- ],
152
- },
153
- {
154
- type: 'title',
155
- text: 'Dobór Wielkości Zbiornika',
156
- level: 2,
157
- },
158
- {
159
- type: 'paragraph',
160
- html: 'Najczęstszym błędem jest zakup zbiornika wyłącznie w oparciu o budżet. Jeśli będzie za mały, zmarnujesz tysiące litrów przez przelew. Jeśli za duży, wydasz pieniądze niepotrzebnie. Przyjmuje się, że optymalna pojemność powinna pozwalać na zmagazynowanie średnich opadów z <strong>3 miesięcy</strong>, co pozwala przetrwać okresy bezdeszczowe.',
161
- },
162
- ],
163
- faq: faqData,
164
- howTo: howToData,
165
- bibliography,
166
- schemas: [faqSchema, howToSchema, appSchema],
167
- };
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
3
+ import type { RainHarvesterLocaleContent } from '../index';
4
+
5
+ const slug = 'kalkulator-wody-deszczowej';
6
+ const title = 'Kalkulator Pozyskiwania Wody Deszczowej';
7
+ const description = 'Oblicz, ile wody deszczowej możesz zebrać ze swojego dachu i dobierz odpowiedni zbiornik retencyjny.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Ile wody mogę faktycznie zebrać ze swojego dachu?',
12
+ answer: 'Ogólna zasada mówi, że z każdego metra kwadratowego dachu i na każdy milimetr deszczu można zebrać około 1 litra wody. Istnieją jednak straty wynikające z parowania i filtracji, korygowane przez "współczynnik spływu".',
13
+ },
14
+ {
15
+ question: 'Co to jest współczynnik spływu?',
16
+ answer: 'Jest to wartość procentowa wskazująca, ile wody tracimy w zależności od materiału, z którego wykonany jest dach. Dach metalowy lub ceramiczny jest bardzo wydajny (0,85-0,95), podczas gdy dach żwirowy lub zielony jest znacznie mniej wydajny (0,1-0,3).',
17
+ },
18
+ {
19
+ question: 'Jak dobrać wielkość zbiornika?',
20
+ answer: 'Należy obliczyć maksymalną spodziewaną objętość opadów w miesiącu i zestawić ją z szacowanym miesięcznym zużyciem. Zbyt mały zbiornik będzie przelewał się podczas ulew, a zbyt duży będzie niepotrzebnie kosztowny.',
21
+ },
22
+ {
23
+ question: 'Czy zebrana woda deszczowa jest zdatna do picia?',
24
+ answer: 'Nie bezpośrednio. Woda przenosi kurz, odchody ptaków i pyły z powietrza. Aby nadawała się do spożycia przez ludzi, musi przejść przez filtry osadowe, węgiel aktywny oraz dezynfekcję światłem UV lub chlorem.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Zmierz powierzchnię w rzucie',
31
+ text: 'Zmierz długość i szerokość podstawy dachu (nie powierzchnię skośną, lecz obszar, który rzuca cień na ziemię).',
32
+ },
33
+ {
34
+ name: 'Sprawdź lokalne opady',
35
+ text: 'Znajdź w serwisie meteorologicznym średnie roczne lub miesięczne opady w Twojej okolicy podane w milimetrach (mm).',
36
+ },
37
+ {
38
+ name: 'Uwzględnij wydajność materiału',
39
+ text: 'Wybierz materiał dachu w naszym kalkulatorze, aby odliczyć wodę, która zostanie utracona przez wchłanianie lub parowanie.',
40
+ },
41
+ {
42
+ name: 'Oblicz wymaganą objętość',
43
+ text: 'Użyj wyniku rocznego w litrach, aby dobrać zbiornik, który pomieści co najmniej 20-30% całkowitego rocznego uzysku na okresy suszy.',
44
+ },
45
+ ];
46
+
47
+ const faqSchema: WithContext<FAQPage> = {
48
+ '@context': 'https://schema.org',
49
+ '@type': 'FAQPage',
50
+ mainEntity: faqData.map((item) => ({
51
+ '@type': 'Question',
52
+ name: item.question,
53
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
54
+ })),
55
+ };
56
+
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howToData.map((step, i) => ({
63
+ '@type': 'HowToStep',
64
+ position: i + 1,
65
+ name: step.name,
66
+ text: step.text,
67
+ })),
68
+ };
69
+
70
+ const appSchema: WithContext<SoftwareApplication> = {
71
+ '@context': 'https://schema.org',
72
+ '@type': 'SoftwareApplication',
73
+ name: title,
74
+ description,
75
+ applicationCategory: 'UtilityApplication',
76
+ operatingSystem: 'All',
77
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
78
+ inLanguage: 'pl',
79
+ };
80
+
81
+ export const content: RainHarvesterLocaleContent = {
82
+ slug,
83
+ title,
84
+ description,
85
+ ui: {
86
+ headInputs: 'Ustawienia Dachu',
87
+ headResults: 'Potencjał Uzysku',
88
+ labelArea: 'Powierzchnia Dachu',
89
+ labelRainfall: 'Roczne Opady',
90
+ labelMaterial: 'Materiał Dachu',
91
+ unitM2: 'm²',
92
+ unitMm: 'mm',
93
+ unitLiters: 'Litry',
94
+ helpRainfall: 'Nie wiesz? Wyszukaj w Google "średnie roczne opady [Twoje miasto]".',
95
+ efficiencyTitle: 'Współczynnik Wydajności',
96
+ efficiencyNote: 'Uwzględniono 10% strat na filtry i parowanie.',
97
+ resultTitle: 'Roczny Potencjał Uzysku',
98
+ equivalenciesTitle: 'Praktyczne Przeliczniki',
99
+ labelFlushes: 'Spłukania Toalety',
100
+ labelShowers: 'Prysznice (10 min)',
101
+ labelGarden: 'Podlewanie Ogrodu',
102
+ gardenArea: '(50m²)',
103
+ materialMetal: 'Metal / Dachówka Szkliwiona',
104
+ materialClay: 'Dachówka Ceramiczna / Gliniana',
105
+ materialConcrete: 'Beton / Asfalt',
106
+ materialGravel: 'Żwir / Zielony Dach',
107
+ },
108
+ seo: [
109
+ {
110
+ type: 'title',
111
+ text: 'Pozyskiwanie Wody Deszczowej: Autonomia i Ekologia',
112
+ level: 2,
113
+ },
114
+ {
115
+ type: 'paragraph',
116
+ html: 'Większość właścicieli domów nie zdaje sobie sprawy z potencjału własnego dachu. Standardowy dach może zebrać tysiące litrów darmowej wody każdego roku. To narzędzie pozwala oszacować ten potencjał, obliczyć dokładnie, ile wody możesz "zebrać" i dobrać idealny zbiornik do jej przechowywania.',
117
+ },
118
+ {
119
+ type: 'title',
120
+ text: 'Logika Obliczeń',
121
+ level: 3,
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'Podstawowy wzór na zbieranie wody deszczowej jest prosty, ale skuteczny:',
126
+ },
127
+ {
128
+ type: 'paragraph',
129
+ html: '<code style="display:block;padding:1rem;background:var(-bg-alt);border-radius:0.5rem;margin:1rem 0;font-family:monospace;">Objętość = Powierzchnia × Opady × Współczynnik Spływu × Wydajność Filtrów</code>',
130
+ },
131
+ {
132
+ type: 'list',
133
+ items: [
134
+ '<strong>Powierzchnia:</strong> Rzut poziomy dachu (długość × szerokość).',
135
+ '<strong>Opady:</strong> Deszcz podany w milimetrach.',
136
+ '<strong>Współczynnik:</strong> Ile wody traci Twój dach (np. przez nasiąkanie).',
137
+ '<strong>Wydajność:</strong> Straty na filtrach przed zbiornikiem (~10%).',
138
+ ],
139
+ },
140
+ {
141
+ type: 'title',
142
+ text: 'Dlaczego Warto Zbierać Deszczówkę?',
143
+ level: 3,
144
+ },
145
+ {
146
+ type: 'list',
147
+ items: [
148
+ '<strong>Oszczędność:</strong> Znaczne obniżenie rachunków za wodę.',
149
+ '<strong>Ogrodnictwo:</strong> Rośliny uwielbiają wodę bez chloru i wapnia.',
150
+ '<strong>Niezależność:</strong> Zapas wody na wypadek awarii sieci.',
151
+ ],
152
+ },
153
+ {
154
+ type: 'title',
155
+ text: 'Dobór Wielkości Zbiornika',
156
+ level: 2,
157
+ },
158
+ {
159
+ type: 'paragraph',
160
+ html: 'Najczęstszym błędem jest zakup zbiornika wyłącznie w oparciu o budżet. Jeśli będzie za mały, zmarnujesz tysiące litrów przez przelew. Jeśli za duży, wydasz pieniądze niepotrzebnie. Przyjmuje się, że optymalna pojemność powinna pozwalać na zmagazynowanie średnich opadów z <strong>3 miesięcy</strong>, co pozwala przetrwać okresy bezdeszczowe.',
161
+ },
162
+ ],
163
+ faq: faqData,
164
+ howTo: howToData,
165
+ bibliography,
166
+ schemas: [faqSchema, howToSchema, appSchema],
167
+ };