@jjlmoya/utils-nature 1.20.0 → 1.22.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.
- package/package.json +1 -1
- package/src/category/index.ts +3 -2
- package/src/entries.ts +5 -1
- package/src/index.ts +4 -0
- package/src/pages/[locale]/[slug].astro +5 -4
- package/src/tests/diacritics_density.test.ts +1 -1
- package/src/tests/inverted_punctuation.test.ts +1 -1
- package/src/tests/script_density.test.ts +1 -1
- package/src/tests/seo_length.test.ts +1 -0
- package/src/tests/seo_translation_completeness.test.ts +69 -0
- package/src/tests/title_quality.test.ts +1 -1
- package/src/tests/tool_validation.test.ts +2 -3
- package/src/tests/translation_copy.test.ts +2 -2
- package/src/tool/compostBinVolumeRatioCalculator/bibliography.astro +18 -0
- package/src/tool/compostBinVolumeRatioCalculator/bibliography.ts +12 -0
- package/src/tool/compostBinVolumeRatioCalculator/component.astro +77 -0
- package/src/tool/compostBinVolumeRatioCalculator/compost-bin-volume-ratio-calculator.css +509 -0
- package/src/tool/compostBinVolumeRatioCalculator/controller.ts +189 -0
- package/src/tool/compostBinVolumeRatioCalculator/dom-views.ts +162 -0
- package/src/tool/compostBinVolumeRatioCalculator/entry.ts +28 -0
- package/src/tool/compostBinVolumeRatioCalculator/evaluator.ts +26 -0
- package/src/tool/compostBinVolumeRatioCalculator/i18n/de.ts +193 -0
- package/src/tool/compostBinVolumeRatioCalculator/i18n/en.ts +193 -0
- package/src/tool/compostBinVolumeRatioCalculator/i18n/es.ts +193 -0
- package/src/tool/compostBinVolumeRatioCalculator/i18n/fr.ts +193 -0
- package/src/tool/compostBinVolumeRatioCalculator/i18n/id.ts +185 -0
- package/src/tool/compostBinVolumeRatioCalculator/i18n/it.ts +193 -0
- package/src/tool/compostBinVolumeRatioCalculator/i18n/ja.ts +190 -0
- package/src/tool/compostBinVolumeRatioCalculator/i18n/ko.ts +190 -0
- package/src/tool/compostBinVolumeRatioCalculator/i18n/nl.ts +190 -0
- package/src/tool/compostBinVolumeRatioCalculator/i18n/pl.ts +190 -0
- package/src/tool/compostBinVolumeRatioCalculator/i18n/pt.ts +190 -0
- package/src/tool/compostBinVolumeRatioCalculator/i18n/ru.ts +190 -0
- package/src/tool/compostBinVolumeRatioCalculator/i18n/sv.ts +190 -0
- package/src/tool/compostBinVolumeRatioCalculator/i18n/tr.ts +190 -0
- package/src/tool/compostBinVolumeRatioCalculator/i18n/zh.ts +190 -0
- package/src/tool/compostBinVolumeRatioCalculator/index.ts +11 -0
- package/src/tool/compostBinVolumeRatioCalculator/logic.test.ts +55 -0
- package/src/tool/compostBinVolumeRatioCalculator/logic.ts +165 -0
- package/src/tool/compostBinVolumeRatioCalculator/seo.astro +23 -0
- package/src/tool/compostBinVolumeRatioCalculator/storage.ts +25 -0
- package/src/tool/compostBinVolumeRatioCalculator/ui.ts +54 -0
- package/src/tool/cricketThermometer/component.astro +1 -1
- package/src/tool/cricketThermometer/i18n/de.ts +2 -2
- package/src/tool/cricketThermometer/i18n/en.ts +2 -2
- package/src/tool/cricketThermometer/i18n/es.ts +2 -2
- package/src/tool/cricketThermometer/i18n/fr.ts +2 -2
- package/src/tool/cricketThermometer/i18n/id.ts +2 -2
- package/src/tool/cricketThermometer/i18n/it.ts +2 -2
- package/src/tool/cricketThermometer/i18n/ja.ts +2 -2
- package/src/tool/cricketThermometer/i18n/ko.ts +2 -2
- package/src/tool/cricketThermometer/i18n/nl.ts +2 -2
- package/src/tool/cricketThermometer/i18n/pl.ts +2 -2
- package/src/tool/cricketThermometer/i18n/pt.ts +2 -2
- package/src/tool/cricketThermometer/i18n/ru.ts +2 -2
- package/src/tool/cricketThermometer/i18n/sv.ts +2 -2
- package/src/tool/cricketThermometer/i18n/tr.ts +2 -2
- package/src/tool/cricketThermometer/i18n/zh.ts +2 -2
- package/src/tool/cricketThermometer/index.ts +1 -0
- package/src/tool/digitalCarbon/component.astro +3 -3
- package/src/tool/digitalCarbon/i18n/de.ts +2 -2
- package/src/tool/digitalCarbon/i18n/en.ts +2 -2
- package/src/tool/digitalCarbon/i18n/es.ts +2 -2
- package/src/tool/digitalCarbon/i18n/fr.ts +2 -2
- package/src/tool/digitalCarbon/i18n/id.ts +2 -2
- package/src/tool/digitalCarbon/i18n/it.ts +2 -2
- package/src/tool/digitalCarbon/i18n/ja.ts +2 -2
- package/src/tool/digitalCarbon/i18n/ko.ts +2 -2
- package/src/tool/digitalCarbon/i18n/nl.ts +2 -2
- package/src/tool/digitalCarbon/i18n/pl.ts +2 -2
- package/src/tool/digitalCarbon/i18n/pt.ts +2 -2
- package/src/tool/digitalCarbon/i18n/ru.ts +2 -2
- package/src/tool/digitalCarbon/i18n/sv.ts +2 -2
- package/src/tool/digitalCarbon/i18n/tr.ts +2 -2
- package/src/tool/digitalCarbon/i18n/zh.ts +2 -2
- package/src/tool/digitalCarbon/index.ts +1 -0
- package/src/tool/rainHarvester/i18n/de.ts +2 -2
- package/src/tool/rainHarvester/i18n/en.ts +2 -2
- package/src/tool/rainHarvester/i18n/es.ts +2 -2
- package/src/tool/rainHarvester/i18n/fr.ts +2 -2
- package/src/tool/rainHarvester/i18n/id.ts +2 -2
- package/src/tool/rainHarvester/i18n/it.ts +2 -2
- package/src/tool/rainHarvester/i18n/ja.ts +2 -2
- package/src/tool/rainHarvester/i18n/ko.ts +2 -2
- package/src/tool/rainHarvester/i18n/nl.ts +2 -2
- package/src/tool/rainHarvester/i18n/pl.ts +2 -2
- package/src/tool/rainHarvester/i18n/pt.ts +2 -2
- package/src/tool/rainHarvester/i18n/ru.ts +2 -2
- package/src/tool/rainHarvester/i18n/sv.ts +2 -2
- package/src/tool/rainHarvester/i18n/tr.ts +2 -2
- package/src/tool/rainHarvester/i18n/zh.ts +2 -2
- package/src/tool/rainHarvester/index.ts +1 -0
- package/src/tool/seedCalculator/i18n/de.ts +2 -2
- package/src/tool/seedCalculator/i18n/en.ts +2 -2
- package/src/tool/seedCalculator/i18n/es.ts +2 -2
- package/src/tool/seedCalculator/i18n/fr.ts +2 -2
- package/src/tool/seedCalculator/i18n/id.ts +2 -2
- package/src/tool/seedCalculator/i18n/it.ts +2 -2
- package/src/tool/seedCalculator/i18n/ja.ts +2 -2
- package/src/tool/seedCalculator/i18n/ko.ts +2 -2
- package/src/tool/seedCalculator/i18n/nl.ts +2 -2
- package/src/tool/seedCalculator/i18n/pl.ts +2 -2
- package/src/tool/seedCalculator/i18n/pt.ts +2 -2
- package/src/tool/seedCalculator/i18n/ru.ts +2 -2
- package/src/tool/seedCalculator/i18n/sv.ts +2 -2
- package/src/tool/seedCalculator/i18n/tr.ts +2 -2
- package/src/tool/seedCalculator/i18n/zh.ts +2 -2
- package/src/tool/seedCalculator/index.ts +1 -0
- package/src/tool/urbanGardenPlanner/bibliography.astro +9 -0
- package/src/tool/urbanGardenPlanner/bibliography.ts +16 -0
- package/src/tool/urbanGardenPlanner/component.astro +131 -0
- package/src/tool/urbanGardenPlanner/controller.ts +88 -0
- package/src/tool/urbanGardenPlanner/dom-views.ts +84 -0
- package/src/tool/urbanGardenPlanner/entry.ts +29 -0
- package/src/tool/urbanGardenPlanner/evaluator.ts +27 -0
- package/src/tool/urbanGardenPlanner/i18n/de.ts +50 -0
- package/src/tool/urbanGardenPlanner/i18n/en.ts +179 -0
- package/src/tool/urbanGardenPlanner/i18n/es.ts +50 -0
- package/src/tool/urbanGardenPlanner/i18n/fr.ts +50 -0
- package/src/tool/urbanGardenPlanner/i18n/id.ts +50 -0
- package/src/tool/urbanGardenPlanner/i18n/it.ts +45 -0
- package/src/tool/urbanGardenPlanner/i18n/ja.ts +39 -0
- package/src/tool/urbanGardenPlanner/i18n/ko.ts +39 -0
- package/src/tool/urbanGardenPlanner/i18n/nl.ts +39 -0
- package/src/tool/urbanGardenPlanner/i18n/pl.ts +39 -0
- package/src/tool/urbanGardenPlanner/i18n/pt.ts +39 -0
- package/src/tool/urbanGardenPlanner/i18n/ru.ts +39 -0
- package/src/tool/urbanGardenPlanner/i18n/sv.ts +39 -0
- package/src/tool/urbanGardenPlanner/i18n/tr.ts +104 -0
- package/src/tool/urbanGardenPlanner/i18n/zh.ts +104 -0
- package/src/tool/urbanGardenPlanner/index.ts +11 -0
- package/src/tool/urbanGardenPlanner/logic.test.ts +45 -0
- package/src/tool/urbanGardenPlanner/logic.ts +55 -0
- package/src/tool/urbanGardenPlanner/seo.astro +15 -0
- package/src/tool/urbanGardenPlanner/storage.ts +25 -0
- package/src/tool/urbanGardenPlanner/ui.ts +38 -0
- package/src/tool/urbanGardenPlanner/urban-garden-rainwater-and-soil-planner.css +531 -0
- package/src/tools.ts +5 -2
- package/src/types.ts +4 -4
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { UrbanGardenPlannerLocaleContent } from '../entry';
|
|
4
|
+
|
|
5
|
+
const slug = 'gartenboden-und-regenwasser-planer';
|
|
6
|
+
const title = 'Planer für Gartenboden und Regenwasser';
|
|
7
|
+
const description = 'Berechne das Substratvolumen für Hochbeete und schätze die Regenwassermenge für kleine Stadtgärten.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{ question: 'Wie viel Erde brauche ich für ein Hochbeet?', answer: 'Gib die Anbaufläche und die Substrattiefe ein. Der Planer multipliziert beide Werte und rechnet das Ergebnis in Liter um, damit du Erde oder Kompost besser bestellen kannst.' },
|
|
11
|
+
{ question: 'Wie berechne ich Regenwasser für einen Garten?', answer: 'Gib die Sammelfläche und die Niederschlagshöhe ein. Der Planer wendet danach einen Abflussfaktor von 85 Prozent und einen Sammelfaktor von 90 Prozent als vorsichtige Planungsschätzung an.' },
|
|
12
|
+
{ question: 'Funktioniert der Planer für einen Balkon?', answer: 'Ja. Verwende die Fläche des Pflanzbereichs, die geplante Substrattiefe und die Dach- oder Vordachfläche, die deinen Behälter speist.' },
|
|
13
|
+
{ question: 'Ist gesammeltes Regenwasser für essbare Pflanzen sicher?', answer: 'Nicht automatisch. Prüfe Sammelfläche und Behälter, sorge für geeignete Filter und Entwässerung und beachte die örtlichen Hinweise.' },
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
const howToData = [
|
|
17
|
+
{ name: 'Anbaufläche messen', text: 'Gib die Fläche des Beets, Balkons oder Pflanzgefäßes ein, die das Substrat aufnehmen soll.' },
|
|
18
|
+
{ name: 'Substrattiefe festlegen', text: 'Trage die geplante Tiefe in Zentimetern ein, einschließlich möglicher Setzung.' },
|
|
19
|
+
{ name: 'Sammelfläche eintragen', text: 'Gib die Dach-, Vordach- oder andere Fläche ein, die Wasser in den Behälter leitet.' },
|
|
20
|
+
{ name: 'Regenereignis testen', text: 'Trage eine Niederschlagshöhe in Millimetern ein und vergleiche das Wasser mit der Gartengröße.' },
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const faqSchema: WithContext<FAQPage> = { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faqData.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
|
|
24
|
+
const howToSchema: WithContext<HowTo> = { '@context': 'https://schema.org', '@type': 'HowTo', name: title, description, step: howToData.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })) };
|
|
25
|
+
const appSchema: WithContext<SoftwareApplication> = { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description, applicationCategory: 'UtilityApplication', operatingSystem: 'All', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' }, inLanguage: 'de' };
|
|
26
|
+
|
|
27
|
+
export const content: UrbanGardenPlannerLocaleContent = {
|
|
28
|
+
slug,
|
|
29
|
+
title,
|
|
30
|
+
description,
|
|
31
|
+
ui: {
|
|
32
|
+
eyebrow: 'Ein kleiner Garten, in lebendigen Schichten gemessen', headInputs: 'Gartenszene festlegen', headScene: 'Die Landschaft lesen', labelGardenArea: 'Anbaufläche', labelDepth: 'Substrattiefe', labelCollectionArea: 'Sammelfläche', labelRainfall: 'Regenereignis', unitSquareMeters: 'm²', unitCentimeters: 'cm', unitMillimeters: 'mm', unitLiters: 'L', helpGardenArea: 'Fläche von Beet, Balkon oder Pflanzgefäß.', helpDepth: 'Die Bodenschicht, die du auffüllen möchtest.', helpCollectionArea: 'Fläche, die Wasser in deinen Behälter leitet.', helpRainfall: 'Teste einen Schauer oder ein örtliches Planungsereignis.', presetsTitle: 'Mit einer Form beginnen', presetBalcony: 'Balkonbeet', presetRaisedBed: 'Hochbeet', presetCommunity: 'Gemeinschaftsgarten', labelSoilNeeded: 'Benötigtes Substrat', labelWaterCaptured: 'Gesammeltes Wasser', labelGardenDepth: 'Auf dieser Gartenfläche', labelWateringArea: 'Bei 10 mm Wasser', sceneCatchment: 'Sammelfläche', sceneGardenBed: 'Anbaufläche', sceneSoil: 'Bodenschicht', sceneWater: 'Gesammeltes Wasser', statusBalanced: 'Eine brauchbare Planungskombination', statusLightCapture: 'Ein kleines Regenereignis', statusDeepBed: 'Ein tiefes Bodenprofil', statusNoRain: 'Warte auf ein Regenereignis', statusNote: 'Nutze diese Momentaufnahme zum Vergleichen von Materialien und Szenarien. Sie ist keine Bewässerungsempfehlung.', assumptionTitle: 'Planungsannahmen', assumptionText: 'Die Schätzung rechnet mit 85 Prozent Abfluss und 90 Prozent nach Verlusten bei der Sammlung. Ein Liter auf einem Quadratmeter entspricht einem Millimeter Wasser.', limitationTitle: 'Garten sicher nutzen', limitationText: 'Sorge für Entwässerung, vermeide belastete Sammelflächen und prüfe örtliche Regeln, bevor du Regenwasser für essbare Pflanzen verwendest.',
|
|
33
|
+
},
|
|
34
|
+
seo: [
|
|
35
|
+
{ type: 'title', text: 'Gartenboden und Regenwasser für kleine Flächen berechnen', level: 2 },
|
|
36
|
+
{ type: 'paragraph', html: 'Ein Hochbeet, ein Balkon und ein Gemeinschaftsgarten brauchen dieselbe praktische Klarheit: Wie viel Substrat wird benötigt und wie viel Regenwasser kann eine verfügbare Fläche ungefähr sammeln? Dieser Planer stellt beide Schätzungen nebeneinander.' },
|
|
37
|
+
{ type: 'title', text: 'Formel für das Substratvolumen', level: 3 },
|
|
38
|
+
{ type: 'paragraph', html: 'Die Rechnung lautet <code>Fläche in m² × Tiefe in cm × 10 = Liter Substrat</code>. Ein Beet mit 12 m² Fläche und 30 cm Tiefe benötigt damit 3.600 Liter, bevor Setzung, Drainageschichten oder die konkrete Bepflanzung berücksichtigt werden.' },
|
|
39
|
+
{ type: 'list', items: ['<strong>Anbaufläche:</strong> Grundfläche von Beet, Balkon oder Pflanzgefäß.', '<strong>Substrattiefe:</strong> geplante Höhe der Bodenschicht.', '<strong>Sammelfläche:</strong> Dach, Vordach oder andere Zuflussfläche.', '<strong>Regenereignis:</strong> Niederschlagshöhe in Millimetern.'] },
|
|
40
|
+
{ type: 'title', text: 'Regenwasser für den Garten schätzen', level: 3 },
|
|
41
|
+
{ type: 'paragraph', html: 'Die Wassermenge beginnt mit <code>Sammelfläche × Niederschlag</code>. Danach werden 85 Prozent für Abflussverluste und 90 Prozent für Verluste bei der Sammlung angesetzt. So entsteht eine nachvollziehbare Schätzung statt eines Versprechens über die tatsächlich verfügbare Wassermenge.' },
|
|
42
|
+
{ type: 'title', text: 'Szenarien offline vergleichen', level: 3 },
|
|
43
|
+
{ type: 'paragraph', html: 'Teste ein Balkonbeet, ein Hochbeet und eine größere Gemeinschaftsfläche mit den Presets und ersetze sie danach durch deine Messwerte. Der Planer benötigt keine Adresse, Karte oder Wetterverbindung und bleibt im Browser.' },
|
|
44
|
+
{ type: 'tip', title: 'Wichtige Grenzen', html: 'Entwässerung, Wasserqualität, Verdunstung, Pflanzenwahl und örtliche Vorschriften brauchen weiterhin eine menschliche Entscheidung. Belastete Dächer oder Behälter sind für essbare Pflanzen nicht automatisch geeignet.' },
|
|
45
|
+
],
|
|
46
|
+
faq: faqData,
|
|
47
|
+
howTo: howToData,
|
|
48
|
+
bibliography,
|
|
49
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
50
|
+
};
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { UrbanGardenPlannerLocaleContent } from '../entry';
|
|
4
|
+
|
|
5
|
+
const slug = 'urban-garden-rainwater-and-soil-planner';
|
|
6
|
+
const title = 'Urban Garden Rainwater and Soil Planner';
|
|
7
|
+
const description = 'Calculate raised bed soil volume and estimate rainwater collection for a balcony, container garden, or urban growing space.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'How much soil do I need for a raised bed?',
|
|
12
|
+
answer: 'Enter the growing area and substrate depth. The planner multiplies them and converts the result to liters, so you can estimate how much soil or compost to order for a raised bed or planter.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'How do I calculate rainwater collection for a garden?',
|
|
16
|
+
answer: 'Enter the collection area and rainfall depth. The planner multiplies them, then applies an 85 percent runoff factor and a 90 percent collection factor to create a cautious planning estimate in liters.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Can I use this for a balcony planter?',
|
|
20
|
+
answer: 'Yes. Use the floor or planter footprint as the growing area, the planned soil depth in centimeters, and the roof or awning surface that feeds your collection vessel.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Is captured rainwater safe for edible plants?',
|
|
24
|
+
answer: 'Not automatically. Check the collection surface and vessel, provide appropriate filtration and drainage, and follow local guidance before using harvested water on edible crops.',
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const howToData = [
|
|
29
|
+
{
|
|
30
|
+
name: 'Measure the growing space',
|
|
31
|
+
text: 'Enter the bed, balcony, or container area that will receive the substrate.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Choose a substrate depth',
|
|
35
|
+
text: 'Enter the planned depth in centimeters, including the part that will settle over time.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Add the collection surface',
|
|
39
|
+
text: 'Enter the roof, awning, or other surface that feeds the collection vessel.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Test a rainfall event',
|
|
43
|
+
text: 'Enter a rainfall amount in millimeters to compare the water captured with the size of the garden.',
|
|
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, index) => ({
|
|
63
|
+
'@type': 'HowToStep',
|
|
64
|
+
position: index + 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: 'en',
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export const content: UrbanGardenPlannerLocaleContent = {
|
|
82
|
+
slug,
|
|
83
|
+
title,
|
|
84
|
+
description,
|
|
85
|
+
ui: {
|
|
86
|
+
eyebrow: 'A small garden, measured in living layers',
|
|
87
|
+
headInputs: 'Set your garden scene',
|
|
88
|
+
headScene: 'Read the landscape',
|
|
89
|
+
labelGardenArea: 'Growing area',
|
|
90
|
+
labelDepth: 'Substrate depth',
|
|
91
|
+
labelCollectionArea: 'Collection area',
|
|
92
|
+
labelRainfall: 'Rainfall event',
|
|
93
|
+
unitSquareMeters: 'm²',
|
|
94
|
+
unitCentimeters: 'cm',
|
|
95
|
+
unitMillimeters: 'mm',
|
|
96
|
+
unitLiters: 'L',
|
|
97
|
+
helpGardenArea: 'The bed, balcony, or planter footprint.',
|
|
98
|
+
helpDepth: 'The soil layer you want to fill.',
|
|
99
|
+
helpCollectionArea: 'The surface sending water to your tank.',
|
|
100
|
+
helpRainfall: 'Try a recent shower or a local design storm.',
|
|
101
|
+
presetsTitle: 'Start with a shape',
|
|
102
|
+
presetBalcony: 'Balcony bed',
|
|
103
|
+
presetRaisedBed: 'Raised bed',
|
|
104
|
+
presetCommunity: 'Community plot',
|
|
105
|
+
labelSoilNeeded: 'Substrate needed',
|
|
106
|
+
labelWaterCaptured: 'Water captured',
|
|
107
|
+
labelGardenDepth: 'Across this garden',
|
|
108
|
+
labelWateringArea: 'At 10 mm of water',
|
|
109
|
+
sceneCatchment: 'Catchment',
|
|
110
|
+
sceneGardenBed: 'Growing space',
|
|
111
|
+
sceneSoil: 'Soil layer',
|
|
112
|
+
sceneWater: 'Captured water',
|
|
113
|
+
statusBalanced: 'A useful planning match',
|
|
114
|
+
statusLightCapture: 'A light capture event',
|
|
115
|
+
statusDeepBed: 'A deep soil profile',
|
|
116
|
+
statusNoRain: 'Waiting for a rain event',
|
|
117
|
+
statusNote: 'Use this snapshot to size materials and compare scenarios. It is not an irrigation prescription.',
|
|
118
|
+
assumptionTitle: 'Planning assumptions',
|
|
119
|
+
assumptionText: 'The estimate keeps 85% of rainfall as runoff and 90% after collection losses. One liter spread over one square meter equals one millimeter of water.',
|
|
120
|
+
limitationTitle: 'Keep the garden safe',
|
|
121
|
+
limitationText: 'Provide drainage, avoid contaminated collection surfaces, and check local rules before using harvested water on edible crops.',
|
|
122
|
+
},
|
|
123
|
+
seo: [
|
|
124
|
+
{
|
|
125
|
+
type: 'title',
|
|
126
|
+
text: 'Calculate Garden Soil Volume and Rainwater Collection',
|
|
127
|
+
level: 2,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: 'paragraph',
|
|
131
|
+
html: 'A raised bed soil calculator answers one practical question: how many liters of substrate will fill the growing space? A rainwater collection calculator answers another: how much water could a roof, awning, or balcony catch during a rainfall event? This planner puts both estimates side by side for small gardens, containers, balconies, and community plots.',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'title',
|
|
135
|
+
text: 'Raised Bed Soil Volume Formula',
|
|
136
|
+
level: 3,
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'paragraph',
|
|
140
|
+
html: 'Soil volume is calculated locally with <code>area in square meters × depth in centimeters × 10 = liters of substrate</code>. For example, a 12 m² bed at 30 cm deep needs 3,600 liters before settling, drainage layers, or any planting design changes.',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
type: 'list',
|
|
144
|
+
items: [
|
|
145
|
+
'<strong>Growing area:</strong> the bed, balcony, or planter footprint.',
|
|
146
|
+
'<strong>Substrate depth:</strong> the soil layer you plan to fill.',
|
|
147
|
+
'<strong>Collection area:</strong> the roof, awning, or surface feeding the vessel.',
|
|
148
|
+
'<strong>Rainfall event:</strong> the rainfall depth you want to model in millimeters.',
|
|
149
|
+
],
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'title',
|
|
153
|
+
text: 'Rainwater Collection Estimate',
|
|
154
|
+
level: 3,
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'paragraph',
|
|
158
|
+
html: 'The water estimate starts with <code>collection area × rainfall</code>, then keeps 85 percent for runoff and 90 percent after collection losses. One liter spread over one square meter equals one millimeter of water, which makes the result easy to compare with the growing area.',
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: 'title',
|
|
162
|
+
text: 'Compare Garden Scenarios Offline',
|
|
163
|
+
level: 3,
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
type: 'paragraph',
|
|
167
|
+
html: 'Try a balcony shower, a raised bed, and a community plot with the quick presets, then replace them with your measurements. The planner does not use an address, map, forecast, or official climate dataset. It stays in the browser so you can test assumptions before buying substrate or a storage vessel.',
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
type: 'tip',
|
|
171
|
+
title: 'Important limits',
|
|
172
|
+
html: 'Drainage, water quality, evaporation, plant choice, and local rules still need a human decision. Do not use a contaminated roof or storage vessel for edible crops without appropriate treatment and advice.',
|
|
173
|
+
},
|
|
174
|
+
],
|
|
175
|
+
faq: faqData,
|
|
176
|
+
howTo: howToData,
|
|
177
|
+
bibliography,
|
|
178
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
179
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { UrbanGardenPlannerLocaleContent } from '../entry';
|
|
4
|
+
|
|
5
|
+
const slug = 'calculadora-sustrato-y-captacion-agua-lluvia';
|
|
6
|
+
const title = 'Planificador de sustrato y agua de lluvia para huertos urbanos';
|
|
7
|
+
const description = 'Calcula el volumen de sustrato para bancales y estima la captación de agua de lluvia para huertos urbanos.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{ question: '¿Cuánta tierra necesito para un bancal?', answer: 'Introduce la superficie de cultivo y la profundidad del sustrato. La herramienta multiplica ambos valores y convierte el resultado a litros para estimar el pedido de tierra o compost.' },
|
|
11
|
+
{ question: '¿Cómo calculo el agua de lluvia para un huerto?', answer: 'Introduce la superficie de captación y la lluvia en milímetros. La herramienta aplica después un factor de escorrentía del 85 % y otro de captación del 90 % para obtener una estimación prudente.' },
|
|
12
|
+
{ question: '¿Puedo usarlo para una jardinera de balcón?', answer: 'Sí. Usa como superficie de cultivo el espacio de la jardinera, añade la profundidad prevista y escribe la superficie de tejado o toldo que alimenta el depósito.' },
|
|
13
|
+
{ question: '¿Es segura el agua de lluvia para plantas comestibles?', answer: 'No automáticamente. Revisa la superficie de captación y el depósito, garantiza filtrado y drenaje adecuados y consulta las normas locales antes de usarla en cultivos comestibles.' },
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
const howToData = [
|
|
17
|
+
{ name: 'Mide la superficie de cultivo', text: 'Introduce el área del bancal, balcón o recipiente que recibirá el sustrato.' },
|
|
18
|
+
{ name: 'Elige la profundidad', text: 'Escribe la profundidad prevista en centímetros, incluida la posible compactación del material.' },
|
|
19
|
+
{ name: 'Añade la superficie de captación', text: 'Introduce el tejado, toldo u otra superficie que conduce el agua al depósito.' },
|
|
20
|
+
{ name: 'Prueba una lluvia', text: 'Escribe la precipitación en milímetros y compara el agua captada con el tamaño del huerto.' },
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const faqSchema: WithContext<FAQPage> = { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faqData.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
|
|
24
|
+
const howToSchema: WithContext<HowTo> = { '@context': 'https://schema.org', '@type': 'HowTo', name: title, description, step: howToData.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })) };
|
|
25
|
+
const appSchema: WithContext<SoftwareApplication> = { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description, applicationCategory: 'UtilityApplication', operatingSystem: 'All', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' }, inLanguage: 'es' };
|
|
26
|
+
|
|
27
|
+
export const content: UrbanGardenPlannerLocaleContent = {
|
|
28
|
+
slug,
|
|
29
|
+
title,
|
|
30
|
+
description,
|
|
31
|
+
ui: {
|
|
32
|
+
eyebrow: 'Un huerto pequeño, medido en capas vivas', headInputs: 'Define tu escena de huerto', headScene: 'Lee el paisaje', labelGardenArea: 'Superficie de cultivo', labelDepth: 'Profundidad del sustrato', labelCollectionArea: 'Superficie de captación', labelRainfall: 'Episodio de lluvia', unitSquareMeters: 'm²', unitCentimeters: 'cm', unitMillimeters: 'mm', unitLiters: 'L', helpGardenArea: 'La superficie del bancal, balcón o jardinera.', helpDepth: 'La capa de tierra que quieres rellenar.', helpCollectionArea: 'La superficie que envía agua al depósito.', helpRainfall: 'Prueba con un chubasco reciente o una lluvia de diseño local.', presetsTitle: 'Empieza con una forma', presetBalcony: 'Jardinera de balcón', presetRaisedBed: 'Bancal elevado', presetCommunity: 'Huerto comunitario', labelSoilNeeded: 'Sustrato necesario', labelWaterCaptured: 'Agua captada', labelGardenDepth: 'Sobre este huerto', labelWateringArea: 'Con 10 mm de agua', sceneCatchment: 'Captación', sceneGardenBed: 'Zona de cultivo', sceneSoil: 'Capa de suelo', sceneWater: 'Agua captada', statusBalanced: 'Una combinación útil para planificar', statusLightCapture: 'Un episodio de lluvia ligero', statusDeepBed: 'Un perfil de suelo profundo', statusNoRain: 'Esperando un episodio de lluvia', statusNote: 'Usa esta instantánea para dimensionar materiales y comparar escenarios. No es una receta de riego.', assumptionTitle: 'Supuestos de planificación', assumptionText: 'La estimación conserva el 85 % de la lluvia como escorrentía y el 90 % después de las pérdidas de captación. Un litro sobre un metro cuadrado equivale a un milímetro de agua.', limitationTitle: 'Usa el huerto con seguridad', limitationText: 'Prepara el drenaje, evita superficies de captación contaminadas y consulta las normas locales antes de usar agua recogida en cultivos comestibles.',
|
|
33
|
+
},
|
|
34
|
+
seo: [
|
|
35
|
+
{ type: 'title', text: 'Calcula el sustrato y el agua de lluvia de tu huerto urbano', level: 2 },
|
|
36
|
+
{ type: 'paragraph', html: 'Un bancal elevado, una terraza o un huerto comunitario plantean dos preguntas prácticas: ¿cuántos litros de sustrato hacen falta y cuánta lluvia puede recoger una superficie cercana? Este planificador pone ambas estimaciones en la misma escena.' },
|
|
37
|
+
{ type: 'title', text: 'Fórmula del volumen de sustrato', level: 3 },
|
|
38
|
+
{ type: 'paragraph', html: 'La cuenta es <code>superficie en m² × profundidad en cm × 10 = litros de sustrato</code>. Por ejemplo, un bancal de 12 m² con 30 cm de profundidad necesita 3.600 litros antes de considerar asentamiento, drenaje o diseño de plantación.' },
|
|
39
|
+
{ type: 'list', items: ['<strong>Superficie de cultivo:</strong> huerto, bancal, balcón o jardinera.', '<strong>Profundidad:</strong> altura prevista de la capa de sustrato.', '<strong>Captación:</strong> tejado, toldo u otra superficie de entrada.', '<strong>Lluvia:</strong> precipitación que quieres modelar en milímetros.'] },
|
|
40
|
+
{ type: 'title', text: 'Estimación de captación de agua de lluvia', level: 3 },
|
|
41
|
+
{ type: 'paragraph', html: 'El cálculo empieza con <code>superficie de captación × lluvia</code>. Después conserva el 85 % por pérdidas de escorrentía y el 90 % por pérdidas de recogida. El resultado es una estimación transparente para comparar escenarios, no una garantía de litros disponibles.' },
|
|
42
|
+
{ type: 'title', text: 'Compara escenarios sin conexión', level: 3 },
|
|
43
|
+
{ type: 'paragraph', html: 'Prueba una jardinera de balcón, un bancal y un huerto comunitario con los presets y reemplázalos por tus medidas. No necesitas dirección, mapa, previsión meteorológica ni conexión externa: los datos permanecen en el navegador.' },
|
|
44
|
+
{ type: 'tip', title: 'Límites importantes', html: 'El drenaje, la calidad del agua, la evaporación, las plantas y las normas locales siguen requiriendo una decisión humana. Un tejado o depósito contaminado no es automáticamente adecuado para cultivos comestibles.' },
|
|
45
|
+
],
|
|
46
|
+
faq: faqData,
|
|
47
|
+
howTo: howToData,
|
|
48
|
+
bibliography,
|
|
49
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
50
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { UrbanGardenPlannerLocaleContent } from '../entry';
|
|
4
|
+
|
|
5
|
+
const slug = 'calculateur-substrat-et-eau-de-pluie-jardin-urbain';
|
|
6
|
+
const title = 'Planificateur de substrat et de pluie pour jardin urbain';
|
|
7
|
+
const description = 'Calculez le volume de substrat d une jardinière et estimez la récupération d eau de pluie pour un petit jardin.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{ question: 'De combien de terre ai-je besoin pour une plate-bande surélevée ?', answer: 'Saisissez la surface cultivée et la profondeur du substrat. Le planificateur les multiplie et convertit le résultat en litres pour préparer un achat de terre ou de compost.' },
|
|
11
|
+
{ question: 'Comment calculer la récupération de pluie pour un jardin ?', answer: 'Saisissez la surface de collecte et la hauteur de pluie. Le calcul applique ensuite un coefficient de ruissellement de 85 % et un coefficient de collecte de 90 % pour une estimation prudente.' },
|
|
12
|
+
{ question: 'Puis-je utiliser cet outil sur un balcon ?', answer: 'Oui. Utilisez la surface de la jardinière, la profondeur prévue et la surface du toit ou de l auvent qui alimente votre réservoir.' },
|
|
13
|
+
{ question: 'L eau de pluie est-elle sûre pour les plantes comestibles ?', answer: 'Pas automatiquement. Vérifiez la surface de collecte et le réservoir, prévoyez une filtration et un drainage adaptés et respectez les recommandations locales.' },
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
const howToData = [
|
|
17
|
+
{ name: 'Mesurer la zone de culture', text: 'Saisissez la surface de la plate-bande, du balcon ou du bac qui recevra le substrat.' },
|
|
18
|
+
{ name: 'Choisir la profondeur', text: 'Indiquez la profondeur prévue en centimètres, en tenant compte du tassement possible.' },
|
|
19
|
+
{ name: 'Ajouter la surface de collecte', text: 'Indiquez le toit, l auvent ou toute surface qui conduit l eau vers le réservoir.' },
|
|
20
|
+
{ name: 'Tester une pluie', text: 'Saisissez une hauteur de pluie en millimètres et comparez l eau récupérée à la taille du jardin.' },
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const faqSchema: WithContext<FAQPage> = { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faqData.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
|
|
24
|
+
const howToSchema: WithContext<HowTo> = { '@context': 'https://schema.org', '@type': 'HowTo', name: title, description, step: howToData.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })) };
|
|
25
|
+
const appSchema: WithContext<SoftwareApplication> = { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description, applicationCategory: 'UtilityApplication', operatingSystem: 'All', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' }, inLanguage: 'fr' };
|
|
26
|
+
|
|
27
|
+
export const content: UrbanGardenPlannerLocaleContent = {
|
|
28
|
+
slug,
|
|
29
|
+
title,
|
|
30
|
+
description,
|
|
31
|
+
ui: {
|
|
32
|
+
eyebrow: 'Un petit jardin mesuré en couches vivantes', headInputs: 'Définir votre jardin', headScene: 'Lire le paysage', labelGardenArea: 'Surface cultivée', labelDepth: 'Profondeur du substrat', labelCollectionArea: 'Surface de collecte', labelRainfall: 'Épisode pluvieux', unitSquareMeters: 'm²', unitCentimeters: 'cm', unitMillimeters: 'mm', unitLiters: 'L', helpGardenArea: 'Surface de la plate-bande, du balcon ou du bac.', helpDepth: 'Couche de terre à remplir.', helpCollectionArea: 'Surface qui envoie l eau vers le réservoir.', helpRainfall: 'Essayez une averse récente ou une pluie de projet locale.', presetsTitle: 'Commencer par une forme', presetBalcony: 'Bac de balcon', presetRaisedBed: 'Plate-bande surélevée', presetCommunity: 'Jardin partagé', labelSoilNeeded: 'Substrat nécessaire', labelWaterCaptured: 'Eau récupérée', labelGardenDepth: 'Sur ce jardin', labelWateringArea: 'Avec 10 mm d eau', sceneCatchment: 'Collecte', sceneGardenBed: 'Zone cultivée', sceneSoil: 'Couche de sol', sceneWater: 'Eau récupérée', statusBalanced: 'Une combinaison utile à planifier', statusLightCapture: 'Un épisode peu pluvieux', statusDeepBed: 'Un profil de sol profond', statusNoRain: 'En attente d une pluie', statusNote: 'Utilisez cet instantané pour dimensionner les matériaux et comparer des scénarios. Ce n est pas une prescription d arrosage.', assumptionTitle: 'Hypothèses de planification', assumptionText: 'L estimation conserve 85 % de la pluie comme ruissellement et 90 % après les pertes de collecte. Un litre sur un mètre carré équivaut à un millimètre d eau.', limitationTitle: 'Préserver la sécurité du jardin', limitationText: 'Prévoyez le drainage, évitez les surfaces contaminées et vérifiez les règles locales avant d utiliser l eau récupérée sur des cultures comestibles.',
|
|
33
|
+
},
|
|
34
|
+
seo: [
|
|
35
|
+
{ type: 'title', text: 'Calculer le substrat et la pluie pour un jardin urbain', level: 2 },
|
|
36
|
+
{ type: 'paragraph', html: 'Une plate-bande surélevée, un balcon ou un jardin partagé posent deux questions concrètes: combien de litres de substrat faut-il et quelle quantité de pluie une surface voisine peut-elle récupérer? Ce planificateur met les deux estimations en regard.' },
|
|
37
|
+
{ type: 'title', text: 'Formule du volume de substrat', level: 3 },
|
|
38
|
+
{ type: 'paragraph', html: 'Le calcul est <code>surface en m² × profondeur en cm × 10 = litres de substrat</code>. Une plate-bande de 12 m² et de 30 cm de profondeur demande donc 3 600 litres avant le tassement, le drainage ou le plan de plantation.' },
|
|
39
|
+
{ type: 'list', items: ['<strong>Surface cultivée :</strong> plate-bande, balcon ou bac.', '<strong>Profondeur :</strong> hauteur prévue de la couche de substrat.', '<strong>Surface de collecte :</strong> toit, auvent ou autre surface d alimentation.', '<strong>Pluie :</strong> hauteur de précipitation à modéliser en millimètres.'] },
|
|
40
|
+
{ type: 'title', text: 'Estimer la récupération d eau de pluie', level: 3 },
|
|
41
|
+
{ type: 'paragraph', html: 'L estimation commence par <code>surface de collecte × hauteur de pluie</code>, puis conserve 85 % pour le ruissellement et 90 % après les pertes de collecte. Le résultat sert à comparer des scénarios, pas à promettre un volume disponible.' },
|
|
42
|
+
{ type: 'title', text: 'Comparer des scénarios hors ligne', level: 3 },
|
|
43
|
+
{ type: 'paragraph', html: 'Testez un balcon, une plate-bande et un jardin partagé avec les préréglages, puis remplacez-les par vos mesures. Aucune adresse, carte, prévision météo ou donnée personnelle ne quitte le navigateur.' },
|
|
44
|
+
{ type: 'tip', title: 'Limites importantes', html: 'Le drainage, la qualité de l eau, l évaporation, les plantes et les règles locales nécessitent encore une décision humaine. Une toiture ou un réservoir contaminé ne convient pas automatiquement aux cultures comestibles.' },
|
|
45
|
+
],
|
|
46
|
+
faq: faqData,
|
|
47
|
+
howTo: howToData,
|
|
48
|
+
bibliography,
|
|
49
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
50
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { UrbanGardenPlannerLocaleContent } from '../entry';
|
|
4
|
+
|
|
5
|
+
const slug = 'perencana-volume-media-tanam-dan-air-hujan';
|
|
6
|
+
const title = 'Perencana Media Tanam dan Air Hujan untuk Kebun Kota';
|
|
7
|
+
const description = 'Hitung volume media tanam untuk bedeng dan perkirakan air hujan yang dapat ditampung untuk kebun kota kecil.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{ question: 'Berapa banyak tanah yang dibutuhkan untuk bedeng?', answer: 'Masukkan luas tanam dan kedalaman media. Perencana mengalikan keduanya lalu mengubah hasilnya menjadi liter agar pembelian tanah atau kompos lebih mudah.' },
|
|
11
|
+
{ question: 'Bagaimana menghitung air hujan untuk kebun?', answer: 'Masukkan luas tangkapan dan curah hujan. Perencana menggunakan faktor limpasan 85 persen dan faktor pengumpulan 90 persen sebagai perkiraan perencanaan yang hati-hati.' },
|
|
12
|
+
{ question: 'Apakah alat ini cocok untuk balkon?', answer: 'Ya. Gunakan luas pot atau bedeng sebagai area tanam, lalu masukkan kedalaman media dan luas atap atau kanopi yang mengalirkan air ke wadah.' },
|
|
13
|
+
{ question: 'Apakah air hujan aman untuk tanaman pangan?', answer: 'Tidak selalu. Periksa permukaan penangkap dan wadah, sediakan penyaringan serta drainase yang sesuai, dan ikuti panduan setempat.' },
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
const howToData = [
|
|
17
|
+
{ name: 'Ukur area tanam', text: 'Masukkan luas bedeng, balkon, atau wadah yang akan diisi media tanam.' },
|
|
18
|
+
{ name: 'Tentukan kedalaman media', text: 'Masukkan kedalaman yang direncanakan dalam sentimeter, termasuk kemungkinan pemadatan.' },
|
|
19
|
+
{ name: 'Masukkan area tangkapan', text: 'Masukkan luas atap, kanopi, atau permukaan lain yang mengalirkan air ke wadah.' },
|
|
20
|
+
{ name: 'Uji satu kejadian hujan', text: 'Masukkan curah hujan dalam milimeter dan bandingkan air yang tertampung dengan luas kebun.' },
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const faqSchema: WithContext<FAQPage> = { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faqData.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
|
|
24
|
+
const howToSchema: WithContext<HowTo> = { '@context': 'https://schema.org', '@type': 'HowTo', name: title, description, step: howToData.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })) };
|
|
25
|
+
const appSchema: WithContext<SoftwareApplication> = { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description, applicationCategory: 'UtilityApplication', operatingSystem: 'All', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' }, inLanguage: 'id' };
|
|
26
|
+
|
|
27
|
+
export const content: UrbanGardenPlannerLocaleContent = {
|
|
28
|
+
slug,
|
|
29
|
+
title,
|
|
30
|
+
description,
|
|
31
|
+
ui: {
|
|
32
|
+
eyebrow: 'Kebun kecil, diukur dalam lapisan yang hidup', headInputs: 'Atur bentuk kebun', headScene: 'Baca lanskapnya', labelGardenArea: 'Luas tanam', labelDepth: 'Kedalaman media', labelCollectionArea: 'Luas tangkapan', labelRainfall: 'Kejadian hujan', unitSquareMeters: 'm²', unitCentimeters: 'cm', unitMillimeters: 'mm', unitLiters: 'L', helpGardenArea: 'Luas bedeng, balkon, atau wadah.', helpDepth: 'Lapisan media yang ingin diisi.', helpCollectionArea: 'Permukaan yang mengirim air ke wadah.', helpRainfall: 'Coba hujan baru-baru ini atau hujan rencana setempat.', presetsTitle: 'Mulai dari bentuk', presetBalcony: 'Bedeng balkon', presetRaisedBed: 'Bedeng tinggi', presetCommunity: 'Kebun komunitas', labelSoilNeeded: 'Media yang dibutuhkan', labelWaterCaptured: 'Air tertampung', labelGardenDepth: 'Di seluruh kebun ini', labelWateringArea: 'Pada 10 mm air', sceneCatchment: 'Tangkapan', sceneGardenBed: 'Area tanam', sceneSoil: 'Lapisan tanah', sceneWater: 'Air tertampung', statusBalanced: 'Kombinasi yang berguna untuk direncanakan', statusLightCapture: 'Kejadian hujan ringan', statusDeepBed: 'Profil tanah yang dalam', statusNoRain: 'Menunggu kejadian hujan', statusNote: 'Gunakan gambaran ini untuk menentukan bahan dan membandingkan skenario. Ini bukan resep penyiraman.', assumptionTitle: 'Asumsi perencanaan', assumptionText: 'Perkiraan mempertahankan 85 persen hujan sebagai limpasan dan 90 persen setelah kehilangan pengumpulan. Satu liter di atas satu meter persegi sama dengan satu milimeter air.', limitationTitle: 'Jaga kebun tetap aman', limitationText: 'Sediakan drainase, hindari permukaan tangkapan yang tercemar, dan periksa aturan setempat sebelum memakai air tertampung pada tanaman pangan.',
|
|
33
|
+
},
|
|
34
|
+
seo: [
|
|
35
|
+
{ type: 'title', text: 'Hitung Media Tanam dan Air Hujan untuk Kebun Kota', level: 2 },
|
|
36
|
+
{ type: 'paragraph', html: 'Bedeng tinggi, balkon, dan kebun komunitas memiliki dua pertanyaan praktis: berapa liter media tanam yang diperlukan dan berapa banyak hujan yang bisa ditampung oleh permukaan di dekatnya? Perencana ini menampilkan kedua perkiraan secara berdampingan.' },
|
|
37
|
+
{ type: 'title', text: 'Rumus volume media tanam', level: 3 },
|
|
38
|
+
{ type: 'paragraph', html: 'Gunakan <code>luas dalam m² × kedalaman dalam cm × 10 = liter media</code>. Bedeng seluas 12 m² dengan kedalaman 30 cm membutuhkan 3.600 liter sebelum memperhitungkan pemadatan, drainase, atau rancangan tanam.' },
|
|
39
|
+
{ type: 'list', items: ['<strong>Luas tanam:</strong> dasar bedeng, balkon, atau wadah.', '<strong>Kedalaman media:</strong> tinggi lapisan yang akan diisi.', '<strong>Luas tangkapan:</strong> atap, kanopi, atau permukaan pemasok air.', '<strong>Hujan:</strong> curah hujan yang ingin diuji dalam milimeter.'] },
|
|
40
|
+
{ type: 'title', text: 'Perkiraan penampungan air hujan', level: 3 },
|
|
41
|
+
{ type: 'paragraph', html: 'Perhitungan dimulai dari <code>luas tangkapan × curah hujan</code>, lalu mengurangi kehilangan dengan faktor limpasan 85 persen dan faktor pengumpulan 90 persen. Hasilnya membantu membandingkan skenario, bukan menjamin volume yang tersedia.' },
|
|
42
|
+
{ type: 'title', text: 'Bandingkan skenario secara offline', level: 3 },
|
|
43
|
+
{ type: 'paragraph', html: 'Coba preset balkon, bedeng, dan kebun komunitas lalu ganti dengan ukuran sebenarnya. Tidak ada alamat, peta, prakiraan cuaca, atau data pribadi yang dikirim keluar dari browser.' },
|
|
44
|
+
{ type: 'tip', title: 'Batas penting', html: 'Drainase, kualitas air, penguapan, pilihan tanaman, dan aturan setempat tetap membutuhkan keputusan manusia. Atap atau wadah yang tercemar tidak otomatis aman untuk tanaman pangan.' },
|
|
45
|
+
],
|
|
46
|
+
faq: faqData,
|
|
47
|
+
howTo: howToData,
|
|
48
|
+
bibliography,
|
|
49
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
50
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { UrbanGardenPlannerLocaleContent } from '../entry';
|
|
4
|
+
|
|
5
|
+
const slug = 'calcolatore-terriccio-e-raccolta-acqua-piovana';
|
|
6
|
+
const title = 'Pianificatore di terriccio e acqua piovana per orti urbani';
|
|
7
|
+
const description = 'Calcola il volume di terriccio per aiuole rialzate e stima la raccolta di acqua piovana per piccoli orti urbani.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{ question: 'Quanto terriccio serve per un aiuola rialzata?', answer: 'Inserisci la superficie coltivata e la profondità del substrato. Il pianificatore moltiplica i valori e converte il risultato in litri per ordinare meglio terriccio o compost.' },
|
|
11
|
+
{ question: 'Come si calcola l acqua piovana per un orto?', answer: 'Inserisci la superficie di raccolta e la pioggia. Il calcolo applica un fattore di deflusso dell 85 per cento e un fattore di raccolta del 90 per cento per una stima prudente.' },
|
|
12
|
+
{ question: 'Posso usarlo per una fioriera sul balcone?', answer: 'Sì. Usa l area della fioriera come superficie coltivata, aggiungi la profondità prevista e inserisci la superficie del tetto o della tettoia che alimenta il contenitore.' },
|
|
13
|
+
{ question: 'L acqua piovana raccolta è sicura per le piante commestibili?', answer: 'Non automaticamente. Controlla superficie e contenitore, prevedi filtraggio e drenaggio adeguati e segui le indicazioni locali.' },
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
const howToData = [
|
|
17
|
+
{ name: 'Misurare l area coltivata', text: 'Inserisci l area dell aiuola, del balcone o del contenitore che riceverà il substrato.' },
|
|
18
|
+
{ name: 'Scegliere la profondità', text: 'Indica la profondità prevista in centimetri, considerando anche il possibile assestamento.' },
|
|
19
|
+
{ name: 'Aggiungere la superficie di raccolta', text: 'Inserisci il tetto, la tettoia o un altra superficie che convoglia l acqua nel contenitore.' },
|
|
20
|
+
{ name: 'Provare un evento di pioggia', text: 'Inserisci la pioggia in millimetri e confronta l acqua raccolta con la dimensione dell orto.' },
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const faqSchema: WithContext<FAQPage> = { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faqData.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
|
|
24
|
+
const howToSchema: WithContext<HowTo> = { '@context': 'https://schema.org', '@type': 'HowTo', name: title, description, step: howToData.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })) };
|
|
25
|
+
const appSchema: WithContext<SoftwareApplication> = { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description, applicationCategory: 'UtilityApplication', operatingSystem: 'All', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' }, inLanguage: 'it' };
|
|
26
|
+
|
|
27
|
+
export const content: UrbanGardenPlannerLocaleContent = {
|
|
28
|
+
slug, title, description,
|
|
29
|
+
ui: {
|
|
30
|
+
eyebrow: 'Un piccolo orto, misurato in strati vivi', headInputs: 'Imposta il tuo orto', headScene: 'Leggi il paesaggio', labelGardenArea: 'Area coltivata', labelDepth: 'Profondità del substrato', labelCollectionArea: 'Superficie di raccolta', labelRainfall: 'Evento di pioggia', unitSquareMeters: 'm²', unitCentimeters: 'cm', unitMillimeters: 'mm', unitLiters: 'L', helpGardenArea: 'Superficie dell aiuola, del balcone o del contenitore.', helpDepth: 'Lo strato di terra da riempire.', helpCollectionArea: 'La superficie che manda acqua al contenitore.', helpRainfall: 'Prova un acquazzone recente o una pioggia di progetto locale.', presetsTitle: 'Inizia da una forma', presetBalcony: 'Fioriera da balcone', presetRaisedBed: 'Aiuola rialzata', presetCommunity: 'Orto condiviso', labelSoilNeeded: 'Substrato necessario', labelWaterCaptured: 'Acqua raccolta', labelGardenDepth: 'Su questo orto', labelWateringArea: 'Con 10 mm d acqua', sceneCatchment: 'Raccolta', sceneGardenBed: 'Area coltivata', sceneSoil: 'Strato di terra', sceneWater: 'Acqua raccolta', statusBalanced: 'Una combinazione utile da pianificare', statusLightCapture: 'Un evento piovoso leggero', statusDeepBed: 'Un profilo di terra profondo', statusNoRain: 'In attesa della pioggia', statusNote: 'Usa questa istantanea per dimensionare i materiali e confrontare gli scenari. Non è una prescrizione d irrigazione.', assumptionTitle: 'Ipotesi di pianificazione', assumptionText: 'La stima conserva l 85 per cento della pioggia come deflusso e il 90 per cento dopo le perdite di raccolta. Un litro su un metro quadrato equivale a un millimetro d acqua.', limitationTitle: 'Usa l orto in sicurezza', limitationText: 'Prevedi il drenaggio, evita superfici contaminate e verifica le regole locali prima di usare acqua raccolta su colture commestibili.',
|
|
31
|
+
},
|
|
32
|
+
seo: [
|
|
33
|
+
{ type: 'title', text: 'Calcolare terriccio e acqua piovana per un orto urbano', level: 2 },
|
|
34
|
+
{ type: 'paragraph', html: 'Un aiuola rialzata, un balcone o un orto condiviso richiedono due risposte pratiche: quanti litri di substrato servono e quanta pioggia può raccogliere una superficie vicina? Questo pianificatore mostra entrambe le stime insieme.' },
|
|
35
|
+
{ type: 'title', text: 'Formula del volume di terriccio', level: 3 },
|
|
36
|
+
{ type: 'paragraph', html: 'Il calcolo è <code>superficie in m² × profondità in cm × 10 = litri di substrato</code>. Un area di 12 m² profonda 30 cm richiede 3.600 litri prima di considerare assestamento, drenaggio e schema di coltivazione.' },
|
|
37
|
+
{ type: 'list', items: ['<strong>Area coltivata:</strong> base dell aiuola, del balcone o del contenitore.', '<strong>Profondità:</strong> altezza prevista dello strato di substrato.', '<strong>Raccolta:</strong> tetto, tettoia o superficie di ingresso.', '<strong>Pioggia:</strong> precipitazione da provare in millimetri.'] },
|
|
38
|
+
{ type: 'title', text: 'Stima della raccolta di acqua piovana', level: 3 },
|
|
39
|
+
{ type: 'paragraph', html: 'La stima parte da <code>superficie di raccolta × pioggia</code>, poi applica l 85 per cento per il deflusso e il 90 per cento dopo le perdite di raccolta. È un confronto trasparente tra scenari, non una garanzia di disponibilità.' },
|
|
40
|
+
{ type: 'title', text: 'Confrontare scenari senza connessione', level: 3 },
|
|
41
|
+
{ type: 'paragraph', html: 'Prova una fioriera, un aiuola rialzata e un orto condiviso con i preset, poi sostituiscili con le tue misure. Nessun indirizzo, mappa o previsione meteorologica lascia il browser.' },
|
|
42
|
+
{ type: 'tip', title: 'Limiti importanti', html: 'Drenaggio, qualità dell acqua, evaporazione, scelta delle piante e regole locali richiedono ancora una decisione umana. Un tetto o un contenitore contaminato non è automaticamente adatto alle colture commestibili.' },
|
|
43
|
+
],
|
|
44
|
+
faq: faqData, howTo: howToData, bibliography, schemas: [faqSchema, howToSchema, appSchema],
|
|
45
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { UrbanGardenPlannerLocaleContent } from '../entry';
|
|
4
|
+
|
|
5
|
+
const slug = 'urban-garden-rainwater-and-soil-planner';
|
|
6
|
+
const title = '都市の庭の土と雨水プランナー';
|
|
7
|
+
const description = '花壇やプランターに必要な培養土の量と、都市の庭で集められる雨水を見積もります。';
|
|
8
|
+
const faqData = [
|
|
9
|
+
{ question: 'レイズドベッドにはどれくらい土が必要ですか?', answer: '栽培面積と土の深さを入力してください。面積と深さを掛けてリットルに換算するため、土や堆肥の量を見積もれます。' },
|
|
10
|
+
{ question: '庭の雨水利用量はどう計算しますか?', answer: '集水面積と雨量を入力します。表面流出率85パーセント、集水率90パーセントを適用した計画用の控えめな見積もりを表示します。' },
|
|
11
|
+
{ question: 'ベランダのプランターにも使えますか?', answer: '使えます。栽培面積にはプランターの面積を、深さには予定する土の深さを、集水面積には屋根やひさしの面積を入力してください。' },
|
|
12
|
+
{ question: '集めた雨水は食用植物に安全ですか?', answer: '自動的に安全とは限りません。集水面と容器を確認し、適切なろ過と排水を用意して、地域の案内に従ってください。' },
|
|
13
|
+
];
|
|
14
|
+
const howToData = [
|
|
15
|
+
{ name: '栽培スペースを測る', text: '土を入れる花壇、ベランダ、容器の面積を入力します。' },
|
|
16
|
+
{ name: '土の深さを決める', text: '沈下する分も考慮して、予定する深さをセンチメートルで入力します。' },
|
|
17
|
+
{ name: '集水面積を加える', text: '容器へ水を送る屋根、ひさし、その他の面積を入力します。' },
|
|
18
|
+
{ name: '雨の量を試す', text: '雨量をミリメートルで入力し、庭の大きさと集水量を比べます。' },
|
|
19
|
+
];
|
|
20
|
+
const faqSchema: WithContext<FAQPage> = { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faqData.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
|
|
21
|
+
const howToSchema: WithContext<HowTo> = { '@context': 'https://schema.org', '@type': 'HowTo', name: title, description, step: howToData.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })) };
|
|
22
|
+
const appSchema: WithContext<SoftwareApplication> = { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description, applicationCategory: 'UtilityApplication', operatingSystem: 'All', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' }, inLanguage: 'ja' };
|
|
23
|
+
export const content: UrbanGardenPlannerLocaleContent = {
|
|
24
|
+
slug, title, description,
|
|
25
|
+
ui: { eyebrow: '小さな庭を、生きた層として測る', headInputs: '庭の条件を設定', headScene: '景色を読み取る', labelGardenArea: '栽培面積', labelDepth: '土の深さ', labelCollectionArea: '集水面積', labelRainfall: '雨の量', unitSquareMeters: 'm²', unitCentimeters: 'cm', unitMillimeters: 'mm', unitLiters: 'L', helpGardenArea: '花壇、ベランダ、容器の面積です。', helpDepth: '入れたい土の層の深さです。', helpCollectionArea: '容器へ水を送る面積です。', helpRainfall: '最近の雨や地域の計画雨量を試します。', presetsTitle: '形から始める', presetBalcony: 'ベランダ菜園', presetRaisedBed: 'レイズドベッド', presetCommunity: '共同菜園', labelSoilNeeded: '必要な培養土', labelWaterCaptured: '集められる雨水', labelGardenDepth: '庭全体に広げた場合', labelWateringArea: '10 mmの水の場合', sceneCatchment: '集水面', sceneGardenBed: '栽培スペース', sceneSoil: '土の層', sceneWater: '集めた水', statusBalanced: '計画に使いやすい組み合わせ', statusLightCapture: '雨量が少ないケース', statusDeepBed: '深い土の構成', statusNoRain: '雨の入力を待っています', statusNote: '材料の量を考え、条件を比べるための見積もりです。水やりの処方ではありません。', assumptionTitle: '計画上の前提', assumptionText: '雨の85パーセントを流出分、集水後の90パーセントを損失後の水として計算します。1平方メートルに1リットルを広げると1 mmです。', limitationTitle: '安全に庭を使う', limitationText: '排水を確保し、汚染された集水面を避け、食用植物に使う前に地域のルールを確認してください。' },
|
|
26
|
+
seo: [
|
|
27
|
+
{ type: 'title', text: '都市の庭に必要な土と雨水を計算する', level: 2 },
|
|
28
|
+
{ type: 'paragraph', html: 'レイズドベッド、ベランダ、共同菜園では、必要な培養土の量と近くの屋根から集められる雨水の量を知ることが大切です。このプランナーは2つの見積もりを同じ画面で比較します。' },
|
|
29
|
+
{ type: 'title', text: '培養土の量の計算式', level: 3 },
|
|
30
|
+
{ type: 'paragraph', html: '式は <code>面積 m² × 深さ cm × 10 = 培養土 L</code> です。12 m²の面積に深さ30 cmの土を入れる場合、沈下や排水層を除く前で3,600 Lになります。' },
|
|
31
|
+
{ type: 'list', items: ['<strong>栽培面積:</strong> 花壇、ベランダ、容器の底面積。', '<strong>土の深さ:</strong> 入れたい土の層の高さ。', '<strong>集水面積:</strong> 屋根やひさしなどの水の入口。', '<strong>雨の量:</strong> 試したい雨量をミリメートルで入力。'] },
|
|
32
|
+
{ type: 'title', text: '庭の雨水を見積もる', level: 3 },
|
|
33
|
+
{ type: 'paragraph', html: '水の見積もりは <code>集水面積 × 雨量</code> から始め、流出の85パーセントと集水後の90パーセントを使います。実際に使える量を保証するものではなく、条件を比較するための数字です。' },
|
|
34
|
+
{ type: 'title', text: 'オフラインで条件を比べる', level: 3 },
|
|
35
|
+
{ type: 'paragraph', html: 'ベランダ、レイズドベッド、共同菜園のプリセットを試し、次に実測値へ置き換えてください。住所、地図、天気予報、個人データはブラウザの外へ送られません。' },
|
|
36
|
+
{ type: 'tip', title: '大切な制限', html: '排水、水質、蒸発、植物の種類、地域のルールには人による判断が必要です。汚染された屋根や容器は食用植物にそのまま使えません。' },
|
|
37
|
+
],
|
|
38
|
+
faq: faqData, howTo: howToData, bibliography, schemas: [faqSchema, howToSchema, appSchema],
|
|
39
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { UrbanGardenPlannerLocaleContent } from '../entry';
|
|
4
|
+
|
|
5
|
+
const slug = 'urban-garden-rainwater-and-soil-planner';
|
|
6
|
+
const title = '도시 텃밭 흙과 빗물 계획 도구';
|
|
7
|
+
const description = '높은 화단과 화분에 필요한 배양토 양과 작은 도시 텃밭의 빗물 수집량을 계산합니다.';
|
|
8
|
+
const faqData = [
|
|
9
|
+
{ question: '높은 화단에는 흙이 얼마나 필요한가요?', answer: '재배 면적과 흙의 깊이를 입력하세요. 두 값을 곱해 리터로 변환하므로 흙이나 퇴비의 주문량을 가늠할 수 있습니다.' },
|
|
10
|
+
{ question: '텃밭의 빗물 수집량은 어떻게 계산하나요?', answer: '집수 면적과 강수량을 입력합니다. 표면 유출 85퍼센트와 수집 효율 90퍼센트를 적용한 보수적인 계획용 추정치를 보여줍니다.' },
|
|
11
|
+
{ question: '발코니 화분에도 사용할 수 있나요?', answer: '네. 재배 면적에는 화분이나 화단의 면적을, 깊이에는 흙의 깊이를, 집수 면적에는 지붕이나 차양 면적을 입력하세요.' },
|
|
12
|
+
{ question: '모은 빗물은 먹는 작물에 안전한가요?', answer: '자동으로 안전하지는 않습니다. 집수면과 용기를 확인하고 적절한 여과와 배수를 마련한 뒤 지역 안내를 따르세요.' },
|
|
13
|
+
];
|
|
14
|
+
const howToData = [
|
|
15
|
+
{ name: '재배 공간 측정', text: '흙을 채울 화단, 발코니 또는 용기의 면적을 입력합니다.' },
|
|
16
|
+
{ name: '흙 깊이 선택', text: '침하될 부분을 고려해 계획한 깊이를 센티미터로 입력합니다.' },
|
|
17
|
+
{ name: '집수 면적 추가', text: '용기로 물을 보내는 지붕, 차양 또는 다른 면적을 입력합니다.' },
|
|
18
|
+
{ name: '강수량 시험', text: '강수량을 밀리미터로 입력하고 텃밭 크기와 모인 물을 비교합니다.' },
|
|
19
|
+
];
|
|
20
|
+
const faqSchema: WithContext<FAQPage> = { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faqData.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
|
|
21
|
+
const howToSchema: WithContext<HowTo> = { '@context': 'https://schema.org', '@type': 'HowTo', name: title, description, step: howToData.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })) };
|
|
22
|
+
const appSchema: WithContext<SoftwareApplication> = { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description, applicationCategory: 'UtilityApplication', operatingSystem: 'All', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' }, inLanguage: 'ko' };
|
|
23
|
+
export const content: UrbanGardenPlannerLocaleContent = {
|
|
24
|
+
slug, title, description,
|
|
25
|
+
ui: { eyebrow: '작은 텃밭을 살아 있는 층으로 측정합니다', headInputs: '텃밭 조건 설정', headScene: '풍경 읽기', labelGardenArea: '재배 면적', labelDepth: '배양토 깊이', labelCollectionArea: '집수 면적', labelRainfall: '강수량', unitSquareMeters: 'm²', unitCentimeters: 'cm', unitMillimeters: 'mm', unitLiters: 'L', helpGardenArea: '화단, 발코니 또는 용기의 바닥 면적입니다.', helpDepth: '채우려는 흙의 층 깊이입니다.', helpCollectionArea: '물을 용기로 보내는 면적입니다.', helpRainfall: '최근 소나기나 지역 계획 강우량을 시험해 보세요.', presetsTitle: '형태로 시작하기', presetBalcony: '발코니 화단', presetRaisedBed: '높은 화단', presetCommunity: '공동 텃밭', labelSoilNeeded: '필요한 배양토', labelWaterCaptured: '모이는 빗물', labelGardenDepth: '이 텃밭 전체에 펼치면', labelWateringArea: '물 10 mm 기준', sceneCatchment: '집수면', sceneGardenBed: '재배 공간', sceneSoil: '흙 층', sceneWater: '모인 물', statusBalanced: '계획에 유용한 조합', statusLightCapture: '강수량이 적은 경우', statusDeepBed: '깊은 흙 단면', statusNoRain: '강수량을 기다리는 중', statusNote: '재료의 양을 정하고 조건을 비교하기 위한 추정치입니다. 관수 처방은 아닙니다.', assumptionTitle: '계획 가정', assumptionText: '강수량의 85퍼센트를 유출로, 수집 손실 후 90퍼센트를 남는 물로 계산합니다. 1제곱미터에 1리터를 펼치면 1 mm입니다.', limitationTitle: '텃밭을 안전하게 사용하기', limitationText: '배수를 마련하고 오염된 집수면을 피하며 먹는 작물에 사용하기 전에 지역 규정을 확인하세요.' },
|
|
26
|
+
seo: [
|
|
27
|
+
{ type: 'title', text: '도시 텃밭의 흙과 빗물 수집량 계산하기', level: 2 },
|
|
28
|
+
{ type: 'paragraph', html: '높은 화단, 발코니, 공동 텃밭에서는 필요한 배양토의 리터 수와 가까운 지붕에서 모을 수 있는 빗물의 양을 함께 알아야 합니다. 이 도구는 두 추정치를 한 화면에서 비교합니다.' },
|
|
29
|
+
{ type: 'title', text: '배양토 부피 공식', level: 3 },
|
|
30
|
+
{ type: 'paragraph', html: '공식은 <code>면적 m² × 깊이 cm × 10 = 배양토 L</code>입니다. 12 m² 공간에 30 cm 깊이로 채우면 침하와 배수층을 고려하기 전 3,600 L입니다.' },
|
|
31
|
+
{ type: 'list', items: ['<strong>재배 면적:</strong> 화단, 발코니 또는 용기의 바닥.', '<strong>배양토 깊이:</strong> 채우려는 층의 높이.', '<strong>집수 면적:</strong> 지붕, 차양 또는 물이 들어오는 면적.', '<strong>강수량:</strong> 시험할 비의 양을 밀리미터로 입력.'] },
|
|
32
|
+
{ type: 'title', text: '텃밭 빗물 수집량 추정', level: 3 },
|
|
33
|
+
{ type: 'paragraph', html: '물 계산은 <code>집수 면적 × 강수량</code>에서 시작해 유출 85퍼센트와 수집 후 90퍼센트를 적용합니다. 실제 사용 가능량을 보장하지 않고 조건을 비교하는 숫자입니다.' },
|
|
34
|
+
{ type: 'title', text: '오프라인에서 조건 비교', level: 3 },
|
|
35
|
+
{ type: 'paragraph', html: '발코니, 높은 화단, 공동 텃밭 프리셋을 시험한 다음 실제 측정값으로 바꾸세요. 주소, 지도, 일기예보, 개인 데이터는 브라우저 밖으로 나가지 않습니다.' },
|
|
36
|
+
{ type: 'tip', title: '중요한 제한', html: '배수, 수질, 증발, 작물 선택과 지역 규정에는 사람의 판단이 필요합니다. 오염된 지붕이나 용기는 먹는 작물에 바로 사용할 수 없습니다.' },
|
|
37
|
+
],
|
|
38
|
+
faq: faqData, howTo: howToData, bibliography, schemas: [faqSchema, howToSchema, appSchema],
|
|
39
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { UrbanGardenPlannerLocaleContent } from '../entry';
|
|
4
|
+
|
|
5
|
+
const slug = 'berekenaar-potgrond-en-regenwater-stadstuin';
|
|
6
|
+
const title = 'Planner voor potgrond en regenwater in de stadstuin';
|
|
7
|
+
const description = 'Bereken het volume potgrond voor verhoogde bedden en schat regenwater voor een kleine stadstuin.';
|
|
8
|
+
const faqData = [
|
|
9
|
+
{ question: 'Hoeveel aarde heb ik nodig voor een verhoogd bed?', answer: 'Voer het teeltoppervlak en de substraatdiepte in. De planner vermenigvuldigt beide waarden en zet het resultaat om naar liters voor een betere bestelling van aarde of compost.' },
|
|
10
|
+
{ question: 'Hoe bereken ik regenwater voor een tuin?', answer: 'Voer het opvangoppervlak en de regenhoogte in. Daarna gebruikt de planner een afvoerfactor van 85 procent en een opvangfactor van 90 procent voor een voorzichtige planning.' },
|
|
11
|
+
{ question: 'Kan ik dit voor een balkonbak gebruiken?', answer: 'Ja. Gebruik het oppervlak van de bak als teeltoppervlak, vul de geplande diepte in en voeg het dak of de luifel toe die het vat voedt.' },
|
|
12
|
+
{ question: 'Is opgevangen regenwater veilig voor eetbare planten?', answer: 'Niet vanzelf. Controleer het opvangoppervlak en vat, zorg voor geschikte filtering en afvoer en volg plaatselijke richtlijnen.' },
|
|
13
|
+
];
|
|
14
|
+
const howToData = [
|
|
15
|
+
{ name: 'Meet de teeltruimte', text: 'Voer het oppervlak van het bed, balkon of vat in dat het substraat ontvangt.' },
|
|
16
|
+
{ name: 'Kies de substraatdiepte', text: 'Voer de geplande diepte in centimeters in en houd rekening met inklinking.' },
|
|
17
|
+
{ name: 'Voeg het opvangoppervlak toe', text: 'Voer het dak, de luifel of een ander oppervlak in dat water naar het vat leidt.' },
|
|
18
|
+
{ name: 'Test een regenbui', text: 'Voer de regenhoogte in millimeters in en vergelijk het water met de tuingrootte.' },
|
|
19
|
+
];
|
|
20
|
+
const faqSchema: WithContext<FAQPage> = { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faqData.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
|
|
21
|
+
const howToSchema: WithContext<HowTo> = { '@context': 'https://schema.org', '@type': 'HowTo', name: title, description, step: howToData.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })) };
|
|
22
|
+
const appSchema: WithContext<SoftwareApplication> = { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: title, description, applicationCategory: 'UtilityApplication', operatingSystem: 'All', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' }, inLanguage: 'nl' };
|
|
23
|
+
export const content: UrbanGardenPlannerLocaleContent = {
|
|
24
|
+
slug, title, description,
|
|
25
|
+
ui: { eyebrow: 'Een kleine tuin, gemeten in levende lagen', headInputs: 'Stel je tuin in', headScene: 'Lees het landschap', labelGardenArea: 'Teeltoppervlak', labelDepth: 'Substraatdiepte', labelCollectionArea: 'Oppervlak voor opvang', labelRainfall: 'Regenbui', unitSquareMeters: 'm²', unitCentimeters: 'cm', unitMillimeters: 'mm', unitLiters: 'L', helpGardenArea: 'Oppervlak van bed, balkon of plantenbak.', helpDepth: 'De grondlaag die je wilt vullen.', helpCollectionArea: 'Het oppervlak dat water naar je vat stuurt.', helpRainfall: 'Probeer een recente bui of lokale ontwerpregen.', presetsTitle: 'Begin met een vorm', presetBalcony: 'Balkonbak', presetRaisedBed: 'Verhoogd bed', presetCommunity: 'Volkstuin', labelSoilNeeded: 'Benodigd substraat', labelWaterCaptured: 'Opgevangen water', labelGardenDepth: 'Over deze tuin', labelWateringArea: 'Bij 10 mm water', sceneCatchment: 'Opvang', sceneGardenBed: 'Teeltruimte', sceneSoil: 'Grondlaag', sceneWater: 'Opgevangen water', statusBalanced: 'Een bruikbare planningcombinatie', statusLightCapture: 'Een lichte regenbui', statusDeepBed: 'Een diepe grondlaag', statusNoRain: 'Wacht op een regenbui', statusNote: 'Gebruik deze momentopname om materialen te kiezen en scenario s te vergelijken. Het is geen bewateringsadvies.', assumptionTitle: 'Planningsaannames', assumptionText: 'De schatting houdt 85 procent van de regen als afvoer en 90 procent na opvangverliezen over. Een liter over een vierkante meter is één millimeter water.', limitationTitle: 'Houd de tuin veilig', limitationText: 'Voorzie afvoer, vermijd vervuilde opvangoppervlakken en controleer lokale regels voor je opgevangen water op eetbare gewassen gebruikt.' },
|
|
26
|
+
seo: [
|
|
27
|
+
{ type: 'title', text: 'Potgrond en regenwater voor een stadstuin berekenen', level: 2 },
|
|
28
|
+
{ type: 'paragraph', html: 'Een verhoogd bed, balkon of volkstuin roept twee praktische vragen op: hoeveel liter substraat is nodig en hoeveel regen kan een oppervlak in de buurt opvangen? Deze planner zet beide schattingen naast elkaar.' },
|
|
29
|
+
{ type: 'title', text: 'Formule voor het volume potgrond', level: 3 },
|
|
30
|
+
{ type: 'paragraph', html: 'De formule is <code>oppervlak in m² × diepte in cm × 10 = liter substraat</code>. Een bed van 12 m² met 30 cm diepte vraagt 3.600 liter vóór inklinking, drainage en beplantingsplan.' },
|
|
31
|
+
{ type: 'list', items: ['<strong>Teeltoppervlak:</strong> bodem van bed, balkon of plantenbak.', '<strong>Substraatdiepte:</strong> hoogte van de grondlaag.', '<strong>Opvangoppervlak:</strong> dak, luifel of andere toevoer.', '<strong>Regen:</strong> neerslag die je in millimeters test.'] },
|
|
32
|
+
{ type: 'title', text: 'Regenwater voor de tuin schatten', level: 3 },
|
|
33
|
+
{ type: 'paragraph', html: 'De schatting start met <code>opvangoppervlak × regenhoogte</code> en past daarna 85 procent afvoer en 90 procent opvang toe. Het resultaat vergelijkt scenario s en garandeert geen beschikbare hoeveelheid water.' },
|
|
34
|
+
{ type: 'title', text: 'Scenario s offline vergelijken', level: 3 },
|
|
35
|
+
{ type: 'paragraph', html: 'Probeer de presets voor balkon, verhoogd bed en volkstuin en vervang ze daarna door je metingen. Er gaan geen adres, kaart, weersverwachting of persoonsgegevens uit de browser.' },
|
|
36
|
+
{ type: 'tip', title: 'Belangrijke grenzen', html: 'Afvoer, waterkwaliteit, verdamping, plantenkeuze en lokale regels vragen nog steeds om menselijk oordeel. Een vervuild dak of vat is niet vanzelf geschikt voor eetbare gewassen.' },
|
|
37
|
+
],
|
|
38
|
+
faq: faqData, howTo: howToData, bibliography, schemas: [faqSchema, howToSchema, appSchema],
|
|
39
|
+
};
|