@jjlmoya/utils-nature 1.12.0 → 1.14.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 (80) hide show
  1. package/package.json +1 -1
  2. package/src/pages/[locale]/[slug].astro +32 -14
  3. package/src/tests/locale_completeness.test.ts +1 -31
  4. package/src/tests/shared-test-helpers.ts +56 -0
  5. package/src/tests/tool_exports.test.ts +34 -0
  6. package/src/tool/cricketThermometer/bibliography.ts +12 -0
  7. package/src/tool/cricketThermometer/cricket-thermometer.css +4 -4
  8. package/src/tool/cricketThermometer/i18n/de.ts +2 -14
  9. package/src/tool/cricketThermometer/i18n/en.ts +2 -14
  10. package/src/tool/cricketThermometer/i18n/es.ts +2 -14
  11. package/src/tool/cricketThermometer/i18n/fr.ts +2 -14
  12. package/src/tool/cricketThermometer/i18n/id.ts +2 -14
  13. package/src/tool/cricketThermometer/i18n/it.ts +2 -14
  14. package/src/tool/cricketThermometer/i18n/ja.ts +2 -14
  15. package/src/tool/cricketThermometer/i18n/ko.ts +2 -14
  16. package/src/tool/cricketThermometer/i18n/nl.ts +2 -14
  17. package/src/tool/cricketThermometer/i18n/pl.ts +2 -14
  18. package/src/tool/cricketThermometer/i18n/pt.ts +2 -14
  19. package/src/tool/cricketThermometer/i18n/ru.ts +2 -14
  20. package/src/tool/cricketThermometer/i18n/sv.ts +2 -14
  21. package/src/tool/cricketThermometer/i18n/tr.ts +2 -14
  22. package/src/tool/cricketThermometer/i18n/zh.ts +2 -14
  23. package/src/tool/cricketThermometer/seo.astro +1 -1
  24. package/src/tool/cricketThermometer/ui.ts +0 -2
  25. package/src/tool/digitalCarbon/bibliography.ts +8 -0
  26. package/src/tool/digitalCarbon/digital-carbon-footprint-calculator.css +11 -11
  27. package/src/tool/digitalCarbon/i18n/de.ts +2 -8
  28. package/src/tool/digitalCarbon/i18n/en.ts +2 -8
  29. package/src/tool/digitalCarbon/i18n/es.ts +2 -8
  30. package/src/tool/digitalCarbon/i18n/fr.ts +2 -8
  31. package/src/tool/digitalCarbon/i18n/id.ts +2 -8
  32. package/src/tool/digitalCarbon/i18n/it.ts +2 -8
  33. package/src/tool/digitalCarbon/i18n/ja.ts +2 -8
  34. package/src/tool/digitalCarbon/i18n/ko.ts +2 -8
  35. package/src/tool/digitalCarbon/i18n/nl.ts +2 -8
  36. package/src/tool/digitalCarbon/i18n/pl.ts +2 -8
  37. package/src/tool/digitalCarbon/i18n/pt.ts +2 -8
  38. package/src/tool/digitalCarbon/i18n/ru.ts +2 -8
  39. package/src/tool/digitalCarbon/i18n/sv.ts +2 -8
  40. package/src/tool/digitalCarbon/i18n/tr.ts +2 -8
  41. package/src/tool/digitalCarbon/i18n/zh.ts +2 -8
  42. package/src/tool/digitalCarbon/seo.astro +1 -1
  43. package/src/tool/rainHarvester/bibliography.ts +20 -0
  44. package/src/tool/rainHarvester/i18n/de.ts +2 -20
  45. package/src/tool/rainHarvester/i18n/en.ts +2 -20
  46. package/src/tool/rainHarvester/i18n/es.ts +2 -20
  47. package/src/tool/rainHarvester/i18n/fr.ts +2 -20
  48. package/src/tool/rainHarvester/i18n/id.ts +2 -20
  49. package/src/tool/rainHarvester/i18n/it.ts +2 -20
  50. package/src/tool/rainHarvester/i18n/ja.ts +2 -20
  51. package/src/tool/rainHarvester/i18n/ko.ts +2 -20
  52. package/src/tool/rainHarvester/i18n/nl.ts +2 -20
  53. package/src/tool/rainHarvester/i18n/pl.ts +2 -20
  54. package/src/tool/rainHarvester/i18n/pt.ts +2 -20
  55. package/src/tool/rainHarvester/i18n/ru.ts +2 -20
  56. package/src/tool/rainHarvester/i18n/sv.ts +2 -20
  57. package/src/tool/rainHarvester/i18n/tr.ts +2 -20
  58. package/src/tool/rainHarvester/i18n/zh.ts +2 -20
  59. package/src/tool/rainHarvester/rainwater-calculator.css +1 -1
  60. package/src/tool/rainHarvester/seo.astro +1 -1
  61. package/src/tool/seedCalculator/bibliography.ts +16 -0
  62. package/src/tool/seedCalculator/i18n/de.ts +2 -18
  63. package/src/tool/seedCalculator/i18n/en.ts +2 -18
  64. package/src/tool/seedCalculator/i18n/es.ts +2 -18
  65. package/src/tool/seedCalculator/i18n/fr.ts +2 -18
  66. package/src/tool/seedCalculator/i18n/id.ts +2 -18
  67. package/src/tool/seedCalculator/i18n/it.ts +2 -18
  68. package/src/tool/seedCalculator/i18n/ja.ts +2 -18
  69. package/src/tool/seedCalculator/i18n/ko.ts +2 -18
  70. package/src/tool/seedCalculator/i18n/nl.ts +2 -18
  71. package/src/tool/seedCalculator/i18n/pl.ts +2 -18
  72. package/src/tool/seedCalculator/i18n/pt.ts +2 -18
  73. package/src/tool/seedCalculator/i18n/ru.ts +2 -18
  74. package/src/tool/seedCalculator/i18n/sv.ts +2 -18
  75. package/src/tool/seedCalculator/i18n/tr.ts +2 -18
  76. package/src/tool/seedCalculator/i18n/zh.ts +2 -18
  77. package/src/tool/seedCalculator/seed-calculator.css +11 -11
  78. package/src/tool/seedCalculator/seo.astro +8 -2
  79. package/src/tool/seedCalculator/ui.ts +0 -2
  80. package/src/types.ts +0 -2
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { DigitalCarbonLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'dijital-karbon-ayak-izi-hesaplayici';
@@ -119,10 +120,8 @@ export const content: DigitalCarbonLocaleContent = {
119
120
  tipFonts: 'Sadece gerçekten kullandığınız yazı tipi ağırlıklarını yükleyin.',
120
121
  tipCache: 'Yeniden indirmeleri önlemek için HTTP önbellek başlıklarını yapılandırın.',
121
122
  },
122
- faqTitle: 'Sıkça Sorulan Sorular',
123
123
  faq: faqData,
124
124
  howTo: howToData,
125
- bibliographyTitle: 'Web Sürdürülebilirliği Referansları',
126
125
  seo: [
127
126
  {
128
127
  type: 'title',
@@ -225,11 +224,6 @@ export const content: DigitalCarbonLocaleContent = {
225
224
  html: 'İnternet, havacılık endüstrisiyle karşılaştırılabilecek bir rakam olan <strong>küresel CO₂ emisyonlarının %2 ile %4\'ünü</strong> temsil etmektedir. Elediğiniz her kilobayt sadece web sitenizi hızlandırmakla kalmaz: dijital kirliliği ölçülebilir şekilde azaltır.',
226
225
  },
227
226
  ],
228
- bibliography: [
229
- { name: 'Sustainable Web Design Model', url: 'https://sustainablewebdesign.org/' },
230
- { name: 'Website Carbon Calculator', url: 'https://www.websitecarbon.com/' },
231
- { name: 'The Green Web Foundation', url: 'https://www.thegreenwebfoundation.org/' },
232
- { name: 'W3C - Web Sustainability Guidelines', url: 'https://w3c.github.io/sustyweb/' },
233
- ],
227
+ bibliography,
234
228
  schemas: [faqSchema, howToSchema, appSchema],
235
229
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { DigitalCarbonLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'digital-carbon-footprint-calculator';
@@ -119,10 +120,8 @@ export const content: DigitalCarbonLocaleContent = {
119
120
  tipFonts: '仅加载您实际使用的字体粗细。',
120
121
  tipCache: '配置 HTTP 缓存标头以避免重复下载。',
121
122
  },
122
- faqTitle: '常见问题',
123
123
  faq: faqData,
124
124
  howTo: howToData,
125
- bibliographyTitle: '网页可持续性参考资料',
126
125
  seo: [
127
126
  {
128
127
  type: 'title',
@@ -225,11 +224,6 @@ export const content: DigitalCarbonLocaleContent = {
225
224
  html: '互联网约占<strong>全球 CO₂ 排放量的 2% 到 4%</strong>,这一数字可与航空业相提并论。您消除的每一个字节不仅让网站变快,更在实实在在地减少数字污染。',
226
225
  },
227
226
  ],
228
- bibliography: [
229
- { name: 'Sustainable Web Design Model', url: 'https://sustainablewebdesign.org/' },
230
- { name: 'Website Carbon Calculator', url: 'https://www.websitecarbon.com/' },
231
- { name: 'The Green Web Foundation', url: 'https://www.thegreenwebfoundation.org/' },
232
- { name: 'W3C - Web Sustainability Guidelines', url: 'https://w3c.github.io/sustyweb/' },
233
- ],
227
+ bibliography,
234
228
  schemas: [faqSchema, howToSchema, appSchema],
235
229
  };
@@ -12,4 +12,4 @@ const content = await digitalCarbon.i18n[locale]?.();
12
12
  if (!content) return null;
13
13
  ---
14
14
 
15
- <SEORenderer content={{ locale: locale as string, sections: content.seo }} />
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,20 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'FAO - Captación y almacenamiento de agua de lluvia',
6
+ url: 'https://www.fao.org/3/a1348s/a1348s.pdf',
7
+ },
8
+ {
9
+ name: 'Texas A&M AgriLife Extension - Rainwater Harvesting',
10
+ url: 'https://rainwaterharvesting.tamu.edu/',
11
+ },
12
+ {
13
+ name: 'Brad Lancaster - Rainwater Harvesting for Drylands',
14
+ url: 'https://www.harvestingrainwater.com/',
15
+ },
16
+ {
17
+ name: 'European Environment Agency - Water Resources',
18
+ url: 'https://www.eea.europa.eu/en/topics/in-depth/water',
19
+ },
20
+ ];
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { RainHarvesterLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'regenwasser-ernte-rechner';
@@ -159,27 +160,8 @@ export const content: RainHarvesterLocaleContent = {
159
160
  html: 'Der häufigste Fehler ist der Kauf eines Tanks, der nur auf dem Budget basiert. Wenn er zu klein ist, verschwenden Sie Tausende Liter durch Überlauf. Wenn er zu groß ist, geben Sie unnötig Geld aus. Eine allgemeine Regel ist, eine Kapazität für die Speicherung von <strong>3 Monaten</strong> des durchschnittlichen Niederschlags in Ihrer Region zu haben, um Trockenperioden zu überbrücken.',
160
161
  },
161
162
  ],
162
- faqTitle: 'Häufig gestellte Fragen',
163
163
  faq: faqData,
164
164
  howTo: howToData,
165
- bibliographyTitle: 'Wissenschaftliche Referenzen',
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
- ],
165
+ bibliography,
184
166
  schemas: [faqSchema, howToSchema, appSchema],
185
167
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { RainHarvesterLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'rainwater-calculator';
@@ -159,27 +160,8 @@ export const content: RainHarvesterLocaleContent = {
159
160
  html: 'The most common mistake is buying a tank based only on budget. If it is too small, you will waste thousands of liters due to overflow. If it is too large, you will spend money unnecessarily. A general rule is to have capacity to store <strong>3 months</strong> of average rainfall in your area, allowing you to bridge dry seasons.',
160
161
  },
161
162
  ],
162
- faqTitle: 'Frequently Asked Questions',
163
163
  faq: faqData,
164
164
  howTo: howToData,
165
- bibliographyTitle: 'Scientific References',
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
- ],
165
+ bibliography,
184
166
  schemas: [faqSchema, howToSchema, appSchema],
185
167
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { RainHarvesterLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'calculadora-agua-lluvia';
@@ -159,27 +160,8 @@ export const content: RainHarvesterLocaleContent = {
159
160
  html: 'El error más común es comprar un tanque basándose solo en el presupuesto. Si es muy pequeño, desperdiciarás miles de litros por desbordamiento. Si es muy grande, gastarás dinero innecesariamente. Una regla general es tener capacidad para almacenar el agua de <strong>3 meses</strong> de lluvia promedio en tu zona, permitiéndote superar las estaciones secas.',
160
161
  },
161
162
  ],
162
- faqTitle: 'Preguntas Frecuentes',
163
163
  faq: faqData,
164
- bibliographyTitle: 'Referencias Científicas',
165
- bibliography: [
166
- {
167
- name: 'FAO - Captación y almacenamiento de agua de lluvia',
168
- url: 'https://www.fao.org/3/a1348s/a1348s.pdf',
169
- },
170
- {
171
- name: 'Texas A&M AgriLife Extension - Rainwater Harvesting',
172
- url: 'https://rainwaterharvesting.tamu.edu/',
173
- },
174
- {
175
- name: 'Brad Lancaster - Rainwater Harvesting for Drylands',
176
- url: 'https://www.harvestingrainwater.com/',
177
- },
178
- {
179
- name: 'European Environment Agency - Water Resources',
180
- url: 'https://www.eea.europa.eu/en/topics/in-depth/water',
181
- },
182
- ],
164
+ bibliography,
183
165
  howTo: howToData,
184
166
  schemas: [faqSchema, howToSchema, appSchema],
185
167
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { RainHarvesterLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'calculateur-eau-pluie';
@@ -159,27 +160,8 @@ export const content: RainHarvesterLocaleContent = {
159
160
  html: 'L\'erreur la plus courante est d\'acheter un réservoir en se basant uniquement sur le budget. S\'il est trop petit, vous perdrez des milliers de litres par débordement. S\'il est trop grand, vous dépenserez de l\'argent inutilement. Une règle générale est d\'avoir une capacité de stockage pour <strong>3 mois</strong> de précipitations moyennes dans votre région, vous permettant de traverser les saisons sèches.',
160
161
  },
161
162
  ],
162
- faqTitle: 'Questions Fréquemment Posées',
163
163
  faq: faqData,
164
164
  howTo: howToData,
165
- bibliographyTitle: 'Références Scientifiques',
166
- bibliography: [
167
- {
168
- name: 'FAO - Collecte et stockage de l\'eau de pluie',
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
- ],
165
+ bibliography,
184
166
  schemas: [faqSchema, howToSchema, appSchema],
185
167
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { RainHarvesterLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'kalkulator-air-hujan';
@@ -159,27 +160,8 @@ export const content: RainHarvesterLocaleContent = {
159
160
  html: 'Kesalahan paling umum adalah membeli tangki hanya berdasarkan anggaran. Jika terlalu kecil, Anda akan membuang ribuan liter karena meluap. Jika terlalu besar, Anda akan menghabiskan uang secara tidak perlu. Aturan umumnya adalah memiliki kapasitas untuk menyimpan <strong>3 bulan</strong> rata-rata curah hujan di daerah Anda, yang memungkinkan Anda menjembatani musim kemarau.',
160
161
  },
161
162
  ],
162
- faqTitle: 'Pertanyaan yang Sering Diajukan',
163
163
  faq: faqData,
164
164
  howTo: howToData,
165
- bibliographyTitle: 'Referensi Ilmiah',
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
- ],
165
+ bibliography,
184
166
  schemas: [faqSchema, howToSchema, appSchema],
185
167
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { RainHarvesterLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'calcolatore-acqua-piovana';
@@ -159,27 +160,8 @@ export const content: RainHarvesterLocaleContent = {
159
160
  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
  },
161
162
  ],
162
- faqTitle: 'Domande Frequenti',
163
163
  faq: faqData,
164
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
- ],
165
+ bibliography,
184
166
  schemas: [faqSchema, howToSchema, appSchema],
185
167
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { RainHarvesterLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'rainwater-calculator';
@@ -159,27 +160,8 @@ export const content: RainHarvesterLocaleContent = {
159
160
  html: '最も多い間違いは、予算だけでタンクを購入することです。小さすぎると大雨の際に溢れて無駄になり、大きすぎると不必要なコストがかかります。一般的なルールは、乾季を乗り切るために地域の平均降水量の<strong>3ヶ月分</strong>を貯蔵できる容量を持つことです。',
160
161
  },
161
162
  ],
162
- faqTitle: 'よくある質問',
163
163
  faq: faqData,
164
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
- ],
165
+ bibliography,
184
166
  schemas: [faqSchema, howToSchema, appSchema],
185
167
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { RainHarvesterLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'rainwater-calculator';
@@ -159,27 +160,8 @@ export const content: RainHarvesterLocaleContent = {
159
160
  html: '가장 흔한 실수는 예산에만 맞춰 탱크를 사는 것입니다. 너무 작으면 넘쳐서 물을 낭비하게 되고, 너무 크면 불필요한 비용을 쓰게 됩니다. 일반적인 규칙은 해당 지역 평균 강수량의 <strong>3개월분</strong>을 저장할 수 있는 용량을 확보하여 건기를 대비하는 것입니다.',
160
161
  },
161
162
  ],
162
- faqTitle: '자주 묻는 질문',
163
163
  faq: faqData,
164
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
- ],
165
+ bibliography,
184
166
  schemas: [faqSchema, howToSchema, appSchema],
185
167
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { RainHarvesterLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'regenwater-opvang-calculator';
@@ -159,27 +160,8 @@ export const content: RainHarvesterLocaleContent = {
159
160
  html: 'De meest gemaakte fout is het kopen van een tank die alleen is gebaseerd op het budget. Als hij te klein is, verspilt u duizenden liters door overloop. Als hij te groot is, geeft u onnodig geld uit. Een algemene regel is om capaciteit te hebben om <strong>3 maanden</strong> aan gemiddelde neerslag in uw regio op te slaan, zodat u drogere periodes kunt overbruggen.',
160
161
  },
161
162
  ],
162
- faqTitle: 'Veelgestelde vragen',
163
163
  faq: faqData,
164
164
  howTo: howToData,
165
- bibliographyTitle: 'Wetenschappelijke bronnen',
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
- ],
165
+ bibliography,
184
166
  schemas: [faqSchema, howToSchema, appSchema],
185
167
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { RainHarvesterLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'kalkulator-wody-deszczowej';
@@ -159,27 +160,8 @@ export const content: RainHarvesterLocaleContent = {
159
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.',
160
161
  },
161
162
  ],
162
- faqTitle: 'Często zadawane pytania',
163
163
  faq: faqData,
164
164
  howTo: howToData,
165
- bibliographyTitle: 'Źródła Naukowe',
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
- ],
165
+ bibliography,
184
166
  schemas: [faqSchema, howToSchema, appSchema],
185
167
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { RainHarvesterLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'calculadora-agua-da-chuva';
@@ -159,27 +160,8 @@ export const content: RainHarvesterLocaleContent = {
159
160
  html: 'O erro mais comum é comprar um tanque baseando-se apenas no orçamento. Se for demasiado pequeno, desperdiçará milhares de litros devido ao transbordo. Se for demasiado grande, gastará dinheiro desnecessariamente. Uma regra geral é ter capacidade para armazenar <strong>3 meses</strong> da pluviosidade média da sua zona, o que lhe permite atravessar as estações secas.',
160
161
  },
161
162
  ],
162
- faqTitle: 'Perguntas Frequentes',
163
163
  faq: faqData,
164
164
  howTo: howToData,
165
- bibliographyTitle: 'Referências Científicas',
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
- ],
165
+ bibliography,
184
166
  schemas: [faqSchema, howToSchema, appSchema],
185
167
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { RainHarvesterLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'kalkulyator-dozhdevoy-vody';
@@ -159,27 +160,8 @@ export const content: RainHarvesterLocaleContent = {
159
160
  html: 'Самая распространенная ошибка — покупка бака, исходя только из бюджета. Если он слишком мал, вы будете терять тысячи литров из-за перелива. Если он слишком велик, вы потратите деньги зря. Общее правило — иметь емкость для хранения среднего количества осадков за <strong>3 месяца</strong> в вашем районе, что позволит вам пережить засушливые сезоны.',
160
161
  },
161
162
  ],
162
- faqTitle: 'Часто задаваемые вопросы',
163
163
  faq: faqData,
164
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
- ],
165
+ bibliography,
184
166
  schemas: [faqSchema, howToSchema, appSchema],
185
167
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { RainHarvesterLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'regnvatten-kalkylator';
@@ -159,27 +160,8 @@ export const content: RainHarvesterLocaleContent = {
159
160
  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
  },
161
162
  ],
162
- faqTitle: 'Vanliga frågor',
163
163
  faq: faqData,
164
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
- ],
165
+ bibliography,
184
166
  schemas: [faqSchema, howToSchema, appSchema],
185
167
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { RainHarvesterLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'yagmur-suyu-hesaplayici';
@@ -159,27 +160,8 @@ export const content: RainHarvesterLocaleContent = {
159
160
  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
  },
161
162
  ],
162
- faqTitle: 'Sıkça Sorulan Sorular',
163
163
  faq: faqData,
164
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
- ],
165
+ bibliography,
184
166
  schemas: [faqSchema, howToSchema, appSchema],
185
167
  };
@@ -1,4 +1,5 @@
1
1
  import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import { bibliography } from '../bibliography';
2
3
  import type { RainHarvesterLocaleContent } from '../index';
3
4
 
4
5
  const slug = 'rainwater-calculator';
@@ -159,27 +160,8 @@ export const content: RainHarvesterLocaleContent = {
159
160
  html: '最常见的错误是仅根据预算购买水箱。如果太小,会因溢出浪费数千升水;如果太大,则会造成不必要的资金支出。一般规则是拥有能储存当地 <strong>3 个月</strong>平均降雨量的容量,以帮助您平稳度过旱季。',
160
161
  },
161
162
  ],
162
- faqTitle: '常见问题',
163
163
  faq: faqData,
164
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
- ],
165
+ bibliography,
184
166
  schemas: [faqSchema, howToSchema, appSchema],
185
167
  };
@@ -18,7 +18,7 @@
18
18
  user-select: none;
19
19
  }
20
20
 
21
- :global(.theme-dark) .rh-wrap {
21
+ .theme-dark .rh-wrap {
22
22
  --rh-bg: #0f172a;
23
23
  --rh-bg-inputs: #1e293b;
24
24
  --rh-border: #334155;
@@ -12,4 +12,4 @@ const content = await rainHarvester.i18n[locale]?.();
12
12
  if (!content) return null;
13
13
  ---
14
14
 
15
- <SEORenderer content={{ locale: locale as string, sections: content.seo }} />
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,16 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'KWS España',
6
+ url: 'https://www.kws.com/es/es/',
7
+ },
8
+ {
9
+ name: 'Ministerio de Agricultura (MAPA)',
10
+ url: 'https://www.mapa.gob.es/es/agricultura/temas/producciones-agricolas/cultivos-herbaceos/',
11
+ },
12
+ {
13
+ name: 'Yara España',
14
+ url: 'https://www.yara.es/nutricion-vegetal/maiz/',
15
+ },
16
+ ];