@jjlmoya/utils-diy 1.26.0 → 1.28.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 (51) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +4 -1
  4. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  5. package/src/tests/locale_completeness.test.ts +2 -3
  6. package/src/tests/seo_translation_completeness.test.ts +69 -0
  7. package/src/tests/seo_wellformed_export.test.ts +65 -0
  8. package/src/tests/tool_validation.test.ts +2 -2
  9. package/src/tool/drywallCalculator/i18n/de.ts +1 -1
  10. package/src/tool/drywallCalculator/i18n/id.ts +2 -2
  11. package/src/tool/drywallCalculator/i18n/it.ts +2 -2
  12. package/src/tool/drywallCalculator/i18n/ja.ts +1 -1
  13. package/src/tool/drywallCalculator/i18n/ko.ts +1 -1
  14. package/src/tool/drywallCalculator/i18n/nl.ts +2 -2
  15. package/src/tool/drywallCalculator/i18n/pl.ts +3 -3
  16. package/src/tool/drywallCalculator/i18n/pt.ts +3 -3
  17. package/src/tool/drywallCalculator/i18n/ru.ts +2 -2
  18. package/src/tool/drywallCalculator/i18n/sv.ts +3 -3
  19. package/src/tool/drywallCalculator/i18n/tr.ts +3 -3
  20. package/src/tool/drywallCalculator/i18n/zh.ts +3 -3
  21. package/src/tool/drywallCalculator/seo.astro +12 -11
  22. package/src/tool/excavationVolumeCalculator/bibliography.astro +6 -0
  23. package/src/tool/excavationVolumeCalculator/bibliography.ts +12 -0
  24. package/src/tool/excavationVolumeCalculator/component.astro +80 -0
  25. package/src/tool/excavationVolumeCalculator/controller.ts +69 -0
  26. package/src/tool/excavationVolumeCalculator/dom-views.ts +63 -0
  27. package/src/tool/excavationVolumeCalculator/entry.ts +26 -0
  28. package/src/tool/excavationVolumeCalculator/evaluator.ts +21 -0
  29. package/src/tool/excavationVolumeCalculator/excavation-volume-calculator.css +442 -0
  30. package/src/tool/excavationVolumeCalculator/i18n/de.ts +120 -0
  31. package/src/tool/excavationVolumeCalculator/i18n/en.ts +120 -0
  32. package/src/tool/excavationVolumeCalculator/i18n/es.ts +120 -0
  33. package/src/tool/excavationVolumeCalculator/i18n/fr.ts +120 -0
  34. package/src/tool/excavationVolumeCalculator/i18n/id.ts +120 -0
  35. package/src/tool/excavationVolumeCalculator/i18n/it.ts +120 -0
  36. package/src/tool/excavationVolumeCalculator/i18n/ja.ts +120 -0
  37. package/src/tool/excavationVolumeCalculator/i18n/ko.ts +120 -0
  38. package/src/tool/excavationVolumeCalculator/i18n/nl.ts +120 -0
  39. package/src/tool/excavationVolumeCalculator/i18n/pl.ts +120 -0
  40. package/src/tool/excavationVolumeCalculator/i18n/pt.ts +120 -0
  41. package/src/tool/excavationVolumeCalculator/i18n/ru.ts +120 -0
  42. package/src/tool/excavationVolumeCalculator/i18n/sv.ts +120 -0
  43. package/src/tool/excavationVolumeCalculator/i18n/tr.ts +120 -0
  44. package/src/tool/excavationVolumeCalculator/i18n/zh.ts +120 -0
  45. package/src/tool/excavationVolumeCalculator/index.ts +11 -0
  46. package/src/tool/excavationVolumeCalculator/logic.test.ts +29 -0
  47. package/src/tool/excavationVolumeCalculator/logic.ts +35 -0
  48. package/src/tool/excavationVolumeCalculator/seo.astro +15 -0
  49. package/src/tool/excavationVolumeCalculator/storage.ts +28 -0
  50. package/src/tool/excavationVolumeCalculator/ui.ts +66 -0
  51. package/src/tools.ts +2 -1
@@ -0,0 +1,120 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ExcavationCalculatorUI } from '../ui';
4
+ import { excavationVolumeCalculatorBibliography } from '../bibliography';
5
+
6
+ const slug = 'aushubvolumen-bodenauflockerungs-rechner';
7
+ const title = 'Aushubvolumen Rechner und Bodenauflockerungs Schätzung';
8
+ const description = 'Berechnen Sie das Festmaß des Aushubs und schätzen Sie das aufgelockerte Bodenvolumen nach dem Ausheben mit einer sichtbaren Planungsbandbreite für Sand, Mutterboden, Ton und Kies.';
9
+
10
+ const faq = [
11
+ {
12
+ question: 'Was ist der Unterschied zwischen Festmaß (Bank Volume) und Lockermaß (Loose Volume)?',
13
+ answer: 'Das Festmaß ist das Volumen des Bodens vor dem Aushub im gewachsenen Zustand, berechnet aus Länge, Breite und Tiefe. Das Lockermaß ist der erwartete Raumbedarf nach dem Ausheben inklusive des geschätzten Auflockerungsfaktors für die gewählte Bodenart.',
14
+ },
15
+ {
16
+ question: 'Wie wird das Aushubvolumen berechnet?',
17
+ answer: 'Multiplizieren Sie die Aushublänge mit der Breite und der Tiefe. Ein Aushub von 4 Metern Länge, 3 Metern Breite und 0,5 Metern Tiefe ergibt beispielsweise ein Festmaß von 6 Kubikmetern vor Berücksichtigung der Bodenauflockerung.',
18
+ },
19
+ {
20
+ question: 'Warum benötigt Ton eine breitere Auflockerungsspanne?',
21
+ answer: 'Das Verhalten von Ton hängt stark von Mineralogie, Feuchtigkeit, Dichte und Vorbelastung ab. Dieser Rechner verwendet ein breiteres Planungsband für Ton, da seine Volumenänderung variabler ist als ein rein geometrischer Schnitt vermuten lässt.',
22
+ },
23
+ {
24
+ question: 'Kann dieser Rechner eine geotechnische Bodenuntersuchung ersetzen?',
25
+ answer: 'Nein. Das Ergebnis ist eine Schätzung für Materialtransport und Lagerung. Ziehen Sie bei Fundamenten, Grundwasser, Stützbauwerken, kontaminiertem Boden oder deponiepflichtigem Aushub stets Fachpersonal hinzu.',
26
+ },
27
+ ];
28
+
29
+ const howTo = [
30
+ { name: 'Aushubabmessungen eingeben', text: 'Geben Sie Länge, Breite und Tiefe der Baugrube ein. Wechseln Sie bei Bedarf zwischen metrischen und imperialen Einheiten.' },
31
+ { name: 'Nächstgelegenes Bodenprofil wählen', text: 'Wählen Sie Sand, Mutterboden, Ton oder Kies, um die passende Auflockerungsspanne für das Lockermaß anzuwenden.' },
32
+ { name: 'Materiallogistik planen', text: 'Nutzen Sie das Festmaß für die ungestörte Baugrube und die Lockermaß-Spanne für Beladung, Lkw-Transport, Container oder Zwischenlagerung.' },
33
+ ];
34
+
35
+ const faqSchema: WithContext<FAQPage> = {
36
+ '@context': 'https://schema.org',
37
+ '@type': 'FAQPage',
38
+ mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
39
+ };
40
+
41
+ const howToSchema: WithContext<HowTo> = {
42
+ '@context': 'https://schema.org',
43
+ '@type': 'HowTo',
44
+ name: title,
45
+ description,
46
+ step: howTo.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })),
47
+ };
48
+
49
+ const appSchema: WithContext<SoftwareApplication> = {
50
+ '@context': 'https://schema.org',
51
+ '@type': 'SoftwareApplication',
52
+ name: title,
53
+ description,
54
+ applicationCategory: 'UtilityApplication',
55
+ operatingSystem: 'All',
56
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
57
+ inLanguage: 'de',
58
+ };
59
+
60
+ export const content: ToolLocaleContent<ExcavationCalculatorUI> = {
61
+ slug,
62
+ title,
63
+ description,
64
+ faqTitle: 'Häufig gestellte Fragen',
65
+ faq,
66
+ bibliographyTitle: 'Quellen und technische Hinweise',
67
+ bibliography: excavationVolumeCalculatorBibliography,
68
+ howTo,
69
+ schemas: [faqSchema, howToSchema, appSchema],
70
+ seo: [
71
+ { type: 'title', text: 'Zwei Volumina beantworten zwei Fragen auf der Baustelle', level: 2 },
72
+ { type: 'paragraph', html: 'Das <strong>Festmaß</strong> beschreibt die Geometrie des ungestörten Bodens: Länge mal Breite mal Tiefe. Das <strong>Lockermaß</strong> ist der Raum, den das gelockerte Material nach dem Ausheben einnimmt. Die Unterscheidung verhindert, dass Container- oder Transportberechnungen auf falschen Bodenzuständen basieren.' },
73
+ { type: 'title', text: 'Lockermaß-Spanne für die Logistikplanung nutzen', level: 3 },
74
+ { type: 'paragraph', html: 'Wählen Sie das passende Bodenprofil und vergleichen Sie die unteren und oberen Lockermaß-Ergebnisse mit Lkw-Ladekapazitäten, Containergrößen, Haufwerksflächen und Zwischenlagern. Die Spanne ist bewusst variabel dargestellt, da Aushebemethode, Feuchte und Dichte das Ergebnis beeinflussen.' },
75
+ { type: 'tip', title: 'Ein Auflockerungswert ersetzt keine Bodenanalyse', html: 'Tonmineralogie, Grundwasser und Vorbelastung können das Abweichungsverhalten verändern. Für Fundamente, Stützmauern, Altlasten und deponiepflichtiges Material ist eine geotechnische Fachprüfung erforderlich.' },
76
+ { type: 'title', text: 'Annahmen vor der Kapazitätsbestellung prüfen', level: 3 },
77
+ { type: 'paragraph', html: 'Wenn die Bodenart unsicher ist, berechnen Sie den Aushub mit zwei plausiblen Profilen und planen Sie mit dem größeren Logistikergebnis, bis genaue Messwerte vorliegen. Das bietet höhere Sicherheit als eine scheinbar exakte Einzelzahl.' },
78
+ ],
79
+ ui: {
80
+ unitSystemLabel: 'Messsystem',
81
+ unitMetric: 'Metrisch',
82
+ unitImperial: 'Imperial',
83
+ onboarding: 'Geben Sie die Abmessungen des Aushubs ein, wählen Sie das Bodenprofil und nutzen Sie die Ergebnisse für die Aushub- und Transportplanung.',
84
+ dimensionLabel: 'Aushubabmessungen',
85
+ lengthLabel: 'Länge',
86
+ widthLabel: 'Breite',
87
+ depthLabel: 'Tiefe',
88
+ soilLabel: 'Bodenprofil',
89
+ soilSand: 'Sand',
90
+ soilTopsoil: 'Mutterboden',
91
+ soilClay: 'Ton / Lehm',
92
+ soilGravel: 'Kies',
93
+ soilSandBand: '10 bis 15% Auflockerung',
94
+ soilTopsoilBand: '15 bis 25% Auflockerung',
95
+ soilClayBand: '25 bis 40% Auflockerung',
96
+ soilGravelBand: '15 bis 25% Auflockerung',
97
+ bankVolumeLabel: 'Festmaß',
98
+ bankVolumeHelp: 'Ungestörter Boden in der Baugrube',
99
+ looseVolumeLabel: 'Lockermaß',
100
+ looseVolumeHelp: 'Planungsbereich nach dem Ausheben',
101
+ expansionLabel: 'Angewendete Bodenauflockerung',
102
+ expansionHelp: 'Spanne für das gewählte Profil',
103
+ sceneTitle: 'Vom Baugrund zum Haufwerk',
104
+ sceneBank: 'im Boden',
105
+ sceneLoose: 'gelockertes Material',
106
+ sceneGround: 'Gelaendekante',
107
+ sceneCut: 'ausgehobene Baugrube',
108
+ interpretationTitle: 'Anwendung der Ergebnisse.',
109
+ interpretationText: 'Die erste Zahl beschreibt die Grube. Die Spanne beschreibt den zusätzlichen Raumbedarf des gelockerten Bodens.',
110
+ warning: 'Nur für Planungs- und Logistikzwecke. Feuchtigkeit, Dichte und Aushebemethode verändern das tatsächliche Lockermaß. Ersetzt keine geotechnische Baugrunduntersuchung.',
111
+ unitLengthMetric: 'm',
112
+ unitLengthImperial: 'ft',
113
+ unitVolumeMetric: 'm³',
114
+ unitVolumeImperial: 'ft³',
115
+ soilStatusLow: 'geringe Auflockerung',
116
+ soilStatusMedium: 'mittlere Auflockerung',
117
+ soilStatusHigh: 'hohe Auflockerung',
118
+ soilStatusLabel: 'Planungsband',
119
+ },
120
+ };
@@ -0,0 +1,120 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ExcavationCalculatorUI } from '../ui';
4
+ import { excavationVolumeCalculatorBibliography } from '../bibliography';
5
+
6
+ const slug = 'excavation-volume-soil-swell-calculator';
7
+ const title = 'Excavation Volume Calculator and Soil Swell Estimate';
8
+ const description = 'Calculate bank excavation volume and estimate loose soil after digging with a visible planning range for sand, topsoil, clay, and gravel.';
9
+
10
+ const faq = [
11
+ {
12
+ question: 'What is the difference between bank volume and loose volume?',
13
+ answer: 'Bank volume is the volume of soil before it is disturbed, calculated from length, width, and depth. Loose volume is the expected space occupied after excavation, including an estimated expansion allowance for the selected soil profile.',
14
+ },
15
+ {
16
+ question: 'How is excavation volume calculated?',
17
+ answer: 'Multiply excavation length by width and depth. For example, a 4 metre by 3 metre excavation that is 0.5 metres deep has a bank volume of 6 cubic metres before soil expansion is considered.',
18
+ },
19
+ {
20
+ question: 'Why does clay need a wider soil swell range?',
21
+ answer: 'Clay behavior depends strongly on mineralogy, moisture, density, and stress history. This calculator uses a wider planning band for clay because its volume response is more variable than a simple geometric cut suggests.',
22
+ },
23
+ {
24
+ question: 'Can this calculator replace a geotechnical measurement?',
25
+ answer: 'No. The result is a planning estimate for material handling and storage. Ask a qualified professional for a site specific measurement when the excavation affects foundations, groundwater, retaining structures, contaminated ground, or regulated disposal.',
26
+ },
27
+ ];
28
+
29
+ const howTo = [
30
+ { name: 'Enter the excavation dimensions', text: 'Enter the length, width, and depth of the cut. Switch between metric and imperial units if needed.' },
31
+ { name: 'Choose the closest soil profile', text: 'Select sand, topsoil, clay, or gravel to apply a visible planning range for loose volume.' },
32
+ { name: 'Plan the material handling', text: 'Use bank volume for the undisturbed cut and the loose volume range for loading, haulage, skips, or temporary storage.' },
33
+ ];
34
+
35
+ const faqSchema: WithContext<FAQPage> = {
36
+ '@context': 'https://schema.org',
37
+ '@type': 'FAQPage',
38
+ mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
39
+ };
40
+
41
+ const howToSchema: WithContext<HowTo> = {
42
+ '@context': 'https://schema.org',
43
+ '@type': 'HowTo',
44
+ name: title,
45
+ description,
46
+ step: howTo.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })),
47
+ };
48
+
49
+ const appSchema: WithContext<SoftwareApplication> = {
50
+ '@context': 'https://schema.org',
51
+ '@type': 'SoftwareApplication',
52
+ name: title,
53
+ description,
54
+ applicationCategory: 'UtilityApplication',
55
+ operatingSystem: 'All',
56
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
57
+ inLanguage: 'en',
58
+ };
59
+
60
+ export const content: ToolLocaleContent<ExcavationCalculatorUI> = {
61
+ slug,
62
+ title,
63
+ description,
64
+ faqTitle: 'Frequently Asked Questions',
65
+ faq,
66
+ bibliographyTitle: 'Sources and technical notes',
67
+ bibliography: excavationVolumeCalculatorBibliography,
68
+ howTo,
69
+ schemas: [faqSchema, howToSchema, appSchema],
70
+ seo: [
71
+ { type: 'title', text: 'Two Volumes Answer Two Site Questions', level: 2 },
72
+ { type: 'paragraph', html: 'The <strong>bank volume</strong> is the geometry of undisturbed ground: length multiplied by width and depth. The <strong>loose volume</strong> is the space the disturbed soil may occupy after it leaves the cut. Keeping them separate prevents a skip or haulage estimate from being based on the wrong state of the soil.' },
73
+ { type: 'title', text: 'Use the Loose Range to Plan Handling', level: 3 },
74
+ { type: 'paragraph', html: 'Choose the closest soil profile and compare the lower and upper loose results with truck capacity, skip size, stockpile footprint, and temporary staging space. The range is deliberately visible because excavation method, moisture, density, and later compaction can change the result.' },
75
+ { type: 'tip', title: 'A soil swell band is not a geotechnical test', html: 'Clay mineralogy, groundwater, stress history, and moisture can produce behavior outside a generic allowance. Foundations, retaining structures, contaminated ground, regulated disposal, and expansive clay need a site specific measurement.' },
76
+ { type: 'title', text: 'Check the Assumption Before Ordering Capacity', level: 3 },
77
+ { type: 'paragraph', html: 'If the selected soil is uncertain, calculate the same cut with two plausible profiles and plan for the larger handling result until the ground is measured. That is more useful than reporting a single precise looking figure that hides the material uncertainty.' },
78
+ ],
79
+ ui: {
80
+ unitSystemLabel: 'Measurement system',
81
+ unitMetric: 'Metric',
82
+ unitImperial: 'Imperial',
83
+ onboarding: 'Enter the current dimensions of the cut, choose the closest soil profile, and use the two results for excavation planning and material handling.',
84
+ dimensionLabel: 'Excavation dimensions',
85
+ lengthLabel: 'Length',
86
+ widthLabel: 'Width',
87
+ depthLabel: 'Depth',
88
+ soilLabel: 'Soil profile',
89
+ soilSand: 'Sand',
90
+ soilTopsoil: 'Topsoil',
91
+ soilClay: 'Clay',
92
+ soilGravel: 'Gravel',
93
+ soilSandBand: '10 to 15% swell',
94
+ soilTopsoilBand: '15 to 25% swell',
95
+ soilClayBand: '25 to 40% swell',
96
+ soilGravelBand: '15 to 25% swell',
97
+ bankVolumeLabel: 'Bank volume',
98
+ bankVolumeHelp: 'Undisturbed soil in the cut',
99
+ looseVolumeLabel: 'Loose volume',
100
+ looseVolumeHelp: 'Planning range after excavation',
101
+ expansionLabel: 'Applied soil expansion',
102
+ expansionHelp: 'Range used for the selected profile',
103
+ sceneTitle: 'From ground to stockpile',
104
+ sceneBank: 'in ground',
105
+ sceneLoose: 'loose material',
106
+ sceneGround: 'ground line',
107
+ sceneCut: 'the excavated cut',
108
+ interpretationTitle: 'How to use it.',
109
+ interpretationText: 'The first number describes the hole. The range describes the extra space the disturbed soil may occupy.',
110
+ warning: 'Planning estimate only. Moisture, density, excavation method, and site conditions can change the actual loose volume. It does not replace a geotechnical measurement.',
111
+ unitLengthMetric: 'm',
112
+ unitLengthImperial: 'ft',
113
+ unitVolumeMetric: 'm³',
114
+ unitVolumeImperial: 'ft³',
115
+ soilStatusLow: 'lower allowance',
116
+ soilStatusMedium: 'moderate allowance',
117
+ soilStatusHigh: 'wide allowance',
118
+ soilStatusLabel: 'Planning band',
119
+ },
120
+ };
@@ -0,0 +1,120 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ExcavationCalculatorUI } from '../ui';
4
+ import { excavationVolumeCalculatorBibliography } from '../bibliography';
5
+
6
+ const slug = 'calculadora-volumen-excavacion-esponjamiento-terreno';
7
+ const title = 'Calculadora de Volumen de Excavación y Esponjamiento del Terreno';
8
+ const description = 'Calcula el volumen en banco de una excavación y estima el volumen esponjado del terreno tras excavar con un rango visual para arena, tierra vegetal, arcilla y grava.';
9
+
10
+ const faq = [
11
+ {
12
+ question: '¿Cuál es la diferencia entre volumen en banco y volumen suelto o esponjado?',
13
+ answer: 'El volumen en banco es el volumen del terreno in situ antes de ser excavado, calculado a partir de longitud, anchura y profundidad. El volumen suelto o esponjado es el espacio estimado que ocupará la tierra tras la excavación, incluyendo el coeficiente de esponjamiento del tipo de suelo.',
14
+ },
15
+ {
16
+ question: '¿Cómo se calcula el volumen de excavación?',
17
+ answer: 'Multiplica la longitud de la excavación por la anchura y la profundidad. Por ejemplo, una zanja de 4 metros de largo por 3 metros de ancho y 0,5 metros de profundidad tiene un volumen en banco de 6 metros cúbicos antes de aplicar el esponjamiento.',
18
+ },
19
+ {
20
+ question: '¿Por qué la arcilla requiere un rango de esponjamiento más amplio?',
21
+ answer: 'El comportamiento de la arcilla depende fuertemente de la mineralogía, la humedad, la densidad y la historia de tensiones del suelo. Esta calculadora utiliza una banda de planificación más ancha para la arcilla porque su expansión volumétrica es más variable que una simple corte geométrico.',
22
+ },
23
+ {
24
+ question: '¿Puede esta calculadora sustituir a un estudio geotécnico?',
25
+ answer: 'No. El resultado es una estimación orientativa para la gestión de materiales, transporte y contenedores. Consulta a un profesional técnico titulado para mediciones geotécnicas precisas en cimentaciones, muros de contención o suelos contaminados.',
26
+ },
27
+ ];
28
+
29
+ const howTo = [
30
+ { name: 'Introducir las dimensiones de la excavación', text: 'Introduce la longitud, anchura y profundidad del vaciado. Cambia entre sistema métrico e imperial si es necesario.' },
31
+ { name: 'Seleccionar el perfil de suelo más cercano', text: 'Elige arena, tierra vegetal, arcilla o grava para aplicar un rango visual estimado de esponjamiento.' },
32
+ { name: 'Planificar la logística de material', text: 'Utiliza el volumen en banco para el vaciado in situ y el rango de volumen suelto para camiones, contenedores o acopios temporales.' },
33
+ ];
34
+
35
+ const faqSchema: WithContext<FAQPage> = {
36
+ '@context': 'https://schema.org',
37
+ '@type': 'FAQPage',
38
+ mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
39
+ };
40
+
41
+ const howToSchema: WithContext<HowTo> = {
42
+ '@context': 'https://schema.org',
43
+ '@type': 'HowTo',
44
+ name: title,
45
+ description,
46
+ step: howTo.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })),
47
+ };
48
+
49
+ const appSchema: WithContext<SoftwareApplication> = {
50
+ '@context': 'https://schema.org',
51
+ '@type': 'SoftwareApplication',
52
+ name: title,
53
+ description,
54
+ applicationCategory: 'UtilityApplication',
55
+ operatingSystem: 'All',
56
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
57
+ inLanguage: 'es',
58
+ };
59
+
60
+ export const content: ToolLocaleContent<ExcavationCalculatorUI> = {
61
+ slug,
62
+ title,
63
+ description,
64
+ faqTitle: 'Preguntas Frecuentes',
65
+ faq,
66
+ bibliographyTitle: 'Fuentes y notas técnicas',
67
+ bibliography: excavationVolumeCalculatorBibliography,
68
+ howTo,
69
+ schemas: [faqSchema, howToSchema, appSchema],
70
+ seo: [
71
+ { type: 'title', text: 'Dos volúmenes responden a dos preguntas de obra', level: 2 },
72
+ { type: 'paragraph', html: 'El <strong>volumen en banco</strong> representa la geometría del terreno in situ sin alterar: longitud multiplicada por anchura y profundidad. El <strong>volumen suelto</strong> es el espacio que ocupará el material excavado una vez extraído. Mantenerlos diferenciados evita calcular contenedores o transporte con el estado de suelo equivocado.' },
73
+ { type: 'title', text: 'Usar el rango suelto para planificar el transporte', level: 3 },
74
+ { type: 'paragraph', html: 'Selecciona el perfil de suelo más representativo y compara los valores inferior y superior de volumen suelto con la capacidad de camiones, tamaño de contenedores y superficie de acopio temporal. El rango se muestra de forma visible porque el método de excavación y la humedad alteran el resultado final.' },
75
+ { type: 'tip', title: 'El coeficiente de esponjamiento no sustituye al ensayo geotécnico', html: 'La mineralogía de la arcilla, el nivel freático y la humedad pueden provocar variaciones fuera de los rangos genéricos. Para cimentaciones, muros de contención y gestión de residuos se requiere informe geotécnico oficial.' },
76
+ { type: 'title', text: 'Verificar hipótesis antes de contratar maquinaria', level: 3 },
77
+ { type: 'paragraph', html: 'Si el tipo de tierra genera dudas, calcula la excavación con dos perfiles plausibles y dimensiona la logística con el resultado más conservador hasta disponer de ensayos de campo. Esto aporta mayor seguridad operativa.' },
78
+ ],
79
+ ui: {
80
+ unitSystemLabel: 'Sistema de medida',
81
+ unitMetric: 'Métrico',
82
+ unitImperial: 'Imperial',
83
+ onboarding: 'Introduce las dimensiones del vaciado, selecciona el perfil de suelo y utiliza los dos resultados para planificar la excavación y el transporte.',
84
+ dimensionLabel: 'Dimensiones de la excavación',
85
+ lengthLabel: 'Longitud',
86
+ widthLabel: 'Anchura',
87
+ depthLabel: 'Profundidad',
88
+ soilLabel: 'Perfil de suelo',
89
+ soilSand: 'Arena',
90
+ soilTopsoil: 'Tierra vegetal',
91
+ soilClay: 'Arcilla',
92
+ soilGravel: 'Grava',
93
+ soilSandBand: '10 a 15% esponjamiento',
94
+ soilTopsoilBand: '15 a 25% esponjamiento',
95
+ soilClayBand: '25 a 40% esponjamiento',
96
+ soilGravelBand: '15 a 25% esponjamiento',
97
+ bankVolumeLabel: 'Volumen en banco',
98
+ bankVolumeHelp: 'Terreno in situ no alterado',
99
+ looseVolumeLabel: 'Volumen suelto',
100
+ looseVolumeHelp: 'Rango estimado tras excavar',
101
+ expansionLabel: 'Esponjamiento aplicado',
102
+ expansionHelp: 'Rango utilizado según el perfil',
103
+ sceneTitle: 'Del terreno al acopio',
104
+ sceneBank: 'en terreno',
105
+ sceneLoose: 'material suelto',
106
+ sceneGround: 'línea de rasante',
107
+ sceneCut: 'vaciado excavado',
108
+ interpretationTitle: 'Cómo interpretar el resultado.',
109
+ interpretationText: 'El primer número indica el volumen del hueco. El rango suelto indica el volumen extra que ocupará la tierra extraída.',
110
+ warning: 'Estimación orientativa para logística. La humedad, densidad y método de excavación modifican el volumen suelto real. No sustituye a un estudio geotécnico.',
111
+ unitLengthMetric: 'm',
112
+ unitLengthImperial: 'ft',
113
+ unitVolumeMetric: 'm³',
114
+ unitVolumeImperial: 'ft³',
115
+ soilStatusLow: 'esponjamiento bajo',
116
+ soilStatusMedium: 'esponjamiento moderado',
117
+ soilStatusHigh: 'esponjamiento alto',
118
+ soilStatusLabel: 'Banda de planificación',
119
+ },
120
+ };
@@ -0,0 +1,120 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ExcavationCalculatorUI } from '../ui';
4
+ import { excavationVolumeCalculatorBibliography } from '../bibliography';
5
+
6
+ const slug = 'calculateur-volume-excavation-foisonnement-terre';
7
+ const title = 'Calculateur de Volume d\'Excavation et Foisonnement de Terre';
8
+ const description = 'Calculez le volume en place de votre excavation et estimez le volume foisonné après terrassement avec une plage de foisonnement pour sable, terre végétale, argile et gravier.';
9
+
10
+ const faq = [
11
+ {
12
+ question: 'Quelle est la différence entre le volume en place et le volume foisonné ?',
13
+ answer: 'Le volume en place (bank volume) est le volume du sol compact in situ avant terrassement. Le volume foisonné (loose volume) est l\'espace occupé par la terre extraite après foisonnement selon la nature du sol.',
14
+ },
15
+ {
16
+ question: 'Comment calculer le volume d\'une fouille ?',
17
+ answer: 'Multipliez la longueur par la largeur et la profondeur de la fouille. Par exemple, une excavation de 4 m sur 3 m et 0,5 m de profondeur donne un volume en place de 6 mètres cubes avant foisonnement.',
18
+ },
19
+ {
20
+ question: 'Pourquoi l\'argile nécessite-t-elle une plage de foisonnement plus large ?',
21
+ answer: 'Le comportement de l\'argile dépend de la minéralogie, de la teneur en eau et de l\'historique des contraintes. Cet outil applique une fourchette plus large car l\'augmentation de volume varie fortement.',
22
+ },
23
+ {
24
+ question: 'Ce calculateur remplace-t-il une étude géotechnique ?',
25
+ answer: 'Non. Le résultat est une estimation pour la gestion des évacuations et bennes. Pour des fondations ou murs de soutènement, faites appel à un bureau d\'études géotechniques qualifié.',
26
+ },
27
+ ];
28
+
29
+ const howTo = [
30
+ { name: 'Saisir les dimensions de la fouille', text: 'Entrez la longueur, la largeur et la profondeur du terrassement. Basculez entre unités métriques et impériales si nécessaire.' },
31
+ { name: 'Sélectionner la nature du sol', text: 'Choisissez le type de sol le plus proche (sable, terre végétale, argile ou gravier) pour appliquer le coefficient de foisonnement.' },
32
+ { name: 'Planifier la gestion des évacuations', text: 'Utilisez le volume en place pour le creusement et la fourchette foisonnée pour les bennes, camions et zones de stockage temporaire.' },
33
+ ];
34
+
35
+ const faqSchema: WithContext<FAQPage> = {
36
+ '@context': 'https://schema.org',
37
+ '@type': 'FAQPage',
38
+ mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
39
+ };
40
+
41
+ const howToSchema: WithContext<HowTo> = {
42
+ '@context': 'https://schema.org',
43
+ '@type': 'HowTo',
44
+ name: title,
45
+ description,
46
+ step: howTo.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })),
47
+ };
48
+
49
+ const appSchema: WithContext<SoftwareApplication> = {
50
+ '@context': 'https://schema.org',
51
+ '@type': 'SoftwareApplication',
52
+ name: title,
53
+ description,
54
+ applicationCategory: 'UtilityApplication',
55
+ operatingSystem: 'All',
56
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
57
+ inLanguage: 'fr',
58
+ };
59
+
60
+ export const content: ToolLocaleContent<ExcavationCalculatorUI> = {
61
+ slug,
62
+ title,
63
+ description,
64
+ faqTitle: 'Foire Aux Questions',
65
+ faq,
66
+ bibliographyTitle: 'Sources et notes techniques',
67
+ bibliography: excavationVolumeCalculatorBibliography,
68
+ howTo,
69
+ schemas: [faqSchema, howToSchema, appSchema],
70
+ seo: [
71
+ { type: 'title', text: 'Deux volumes pour répondre aux besoins du chantier', level: 2 },
72
+ { type: 'paragraph', html: 'Le <strong>volume en place</strong> correspond à la géométrie du terrain non perturbé: longueur fois largeur fois profondeur. Le <strong>volume foisonné</strong> correspond à l\'espace occupé par la terre déblayée. Distinguer ces deux notions évite de sous-dimensionner la rotation des camions ou des bennes.' },
73
+ { type: 'title', text: 'Utiliser la fourchette foisonnée pour la logistique', level: 3 },
74
+ { type: 'paragraph', html: 'Sélectionnez la nature du sol et comparez les limites basse et haute du volume foisonné avec la capacité des camions, des bennes et l\'emprise du stockage temporaire. La plage tient compte des variations d\'humidité et du mode de terrassement.' },
75
+ { type: 'tip', title: 'Le foisonnement théorique ne remplace pas l\'essai géotechnique', html: 'La teneur en eau et la présence de nappes peuvent modifier le foisonnement réel. Pour les fondations et terrains pollués, une étude de sol spécifique reste obligatoire.' },
76
+ { type: 'title', text: 'Vérifier les hypothèses avant de commander le matériel', level: 3 },
77
+ { type: 'paragraph', html: 'En cas de sol hétérogène, effectuez la simulation avec deux profils plausibles et retenez l\'estimation la plus prudente pour l\'évacuation jusqu\'à confirmation du terrain.' },
78
+ ],
79
+ ui: {
80
+ unitSystemLabel: 'Système de mesure',
81
+ unitMetric: 'Métrique',
82
+ unitImperial: 'Impérial',
83
+ onboarding: 'Saisissez les dimensions du terrassement, choisissez la nature du sol et utilisez les deux volumes pour organiser le chantier et l\'évacuation.',
84
+ dimensionLabel: 'Dimensions de l\'excavation',
85
+ lengthLabel: 'Longueur',
86
+ widthLabel: 'Largeur',
87
+ depthLabel: 'Profondeur',
88
+ soilLabel: 'Nature du sol',
89
+ soilSand: 'Sable',
90
+ soilTopsoil: 'Terre végétale',
91
+ soilClay: 'Argile',
92
+ soilGravel: 'Gravier',
93
+ soilSandBand: '10 à 15% de foisonnement',
94
+ soilTopsoilBand: '15 à 25% de foisonnement',
95
+ soilClayBand: '25 à 40% de foisonnement',
96
+ soilGravelBand: '15 à 25% de foisonnement',
97
+ bankVolumeLabel: 'Volume en place',
98
+ bankVolumeHelp: 'Sol compact in situ',
99
+ looseVolumeLabel: 'Volume foisonné',
100
+ looseVolumeHelp: 'Plage estimée après terrassement',
101
+ expansionLabel: 'Foisonnement appliqué',
102
+ expansionHelp: 'Plage utilisée pour ce sol',
103
+ sceneTitle: 'Du sol au dépôt',
104
+ sceneBank: 'en place',
105
+ sceneLoose: 'matériau foisonné',
106
+ sceneGround: 'niveau du sol',
107
+ sceneCut: 'fouille creusée',
108
+ interpretationTitle: 'Comment interpréter les chiffres.',
109
+ interpretationText: 'Le premier chiffre indique le volume de la fouille. La fourchette indique le volume supplémentaire de terre foisonnée à traiter.',
110
+ warning: 'Valeurs indicatives pour la logistique. L\'humidité et la méthode de terrassement modifient le foisonnement réel. Ne remplace pas une étude géotechnique.',
111
+ unitLengthMetric: 'm',
112
+ unitLengthImperial: 'ft',
113
+ unitVolumeMetric: 'm³',
114
+ unitVolumeImperial: 'ft³',
115
+ soilStatusLow: 'foisonnement faible',
116
+ soilStatusMedium: 'foisonnement modéré',
117
+ soilStatusHigh: 'foisonnement élevé',
118
+ soilStatusLabel: 'Plage de planification',
119
+ },
120
+ };
@@ -0,0 +1,120 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ExcavationCalculatorUI } from '../ui';
4
+ import { excavationVolumeCalculatorBibliography } from '../bibliography';
5
+
6
+ const slug = 'kalkulator-volume-galian-pengembangan-tanah';
7
+ const title = 'Kalkulator Volume Galian dan Estimasi Pengembangan Tanah';
8
+ const description = 'Hitung volume tanah asli (bank volume) dan estimasi volume gembur setelah digali dengan rentang pengembangan untuk pasir, tanah subur, tanah liat, dan kerikil.';
9
+
10
+ const faq = [
11
+ {
12
+ question: 'Apa perbedaan antara volume bank (tanah padat) dan volume gembur?',
13
+ answer: 'Volume bank adalah volume tanah dalam kondisi asli sebelum digali, dihitung dari panjang, lebar, dan kedalaman. Volume gembur adalah perkiraan ruang yang dibutuhkan setelah tanah digali termasuk faktor pengembangan.',
14
+ },
15
+ {
16
+ question: 'Bagaimana cara menghitung volume galian tanah?',
17
+ answer: 'Kalikan panjang galian dengan lebar dan kedalaman. Sebagai contoh, galian 4 meter x 3 meter x 0,5 meter memiliki volume bank 6 meter kubik sebelum memperhitungkan faktor pengembangan tanah.',
18
+ },
19
+ {
20
+ question: 'Mengapa tanah liat memiliki rentang pengembangan lebih lebar?',
21
+ answer: 'Sifat tanah liat sangat dipengaruhi oleh kadar air, kepadatan, dan jenis mineralnya. Kalkulator ini menerapkan rentang perencanaan yang lebih luas karena perubahan volumenya sangat bervariasi.',
22
+ },
23
+ {
24
+ question: 'Apakah kalkulator ini dapat menggantikan uji geoteknik?',
25
+ answer: 'Tidak. Hasil ini adalah estimasi untuk perencanaan pengangkutan dan penampungan sementara. Hubungi ahli geoteknik untuk pengujian tanah resmi pada struktur pondasi atau dinding penahan tanah.',
26
+ },
27
+ ];
28
+
29
+ const howTo = [
30
+ { name: 'Masukkan dimensi galian', text: 'Masukkan panjang, lebar, dan kedalaman galian. Pilih sistem satuan metrik atau imperial sesuai kebutuhan.' },
31
+ { name: 'Pilih jenis tanah yang paling sesuai', text: 'Pilih pasir, tanah subur, tanah liat, atau kerikil untuk menerapkan perkiraan persentase pengembangan tanah.' },
32
+ { name: 'Rencanakan pengangkutan dan pembuangan', text: 'Gunakan volume bank untuk pengukuran galian dan volume gembur untuk menentukan kapasitas truk atau wadah penampung.' },
33
+ ];
34
+
35
+ const faqSchema: WithContext<FAQPage> = {
36
+ '@context': 'https://schema.org',
37
+ '@type': 'FAQPage',
38
+ mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
39
+ };
40
+
41
+ const howToSchema: WithContext<HowTo> = {
42
+ '@context': 'https://schema.org',
43
+ '@type': 'HowTo',
44
+ name: title,
45
+ description,
46
+ step: howTo.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })),
47
+ };
48
+
49
+ const appSchema: WithContext<SoftwareApplication> = {
50
+ '@context': 'https://schema.org',
51
+ '@type': 'SoftwareApplication',
52
+ name: title,
53
+ description,
54
+ applicationCategory: 'UtilityApplication',
55
+ operatingSystem: 'All',
56
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
57
+ inLanguage: 'id',
58
+ };
59
+
60
+ export const content: ToolLocaleContent<ExcavationCalculatorUI> = {
61
+ slug,
62
+ title,
63
+ description,
64
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
65
+ faq,
66
+ bibliographyTitle: 'Sumber dan Catatan Teknis',
67
+ bibliography: excavationVolumeCalculatorBibliography,
68
+ howTo,
69
+ schemas: [faqSchema, howToSchema, appSchema],
70
+ seo: [
71
+ { type: 'title', text: 'Dua Angka Volume untuk Dua Kebutuhan Proyek', level: 2 },
72
+ { type: 'paragraph', html: '<strong>Volume bank</strong> adalah geometri lubang galian pada kondisi tanah asli: panjang dikali lebar dan kedalaman. <strong>Volume gembur</strong> adalah perkiraan ruang yang dibutuhkan setelah tanah dibongkar. Memisahkan kedua angka ini mencegah kesalahan perhitungan jumlah armada truk pembuang.' },
73
+ { type: 'title', text: 'Gunakan Rentang Gembur untuk Perencanaan Logistik', level: 3 },
74
+ { type: 'paragraph', html: 'Pilih jenis tanah yang sesuai dan bandingkan estimasi volume gembur batas bawah dan batas atas dengan kapasitas dump truck atau penampungan sementara di lapangan.' },
75
+ { type: 'tip', title: 'Faktor pengembangan tanah bukan pengganti uji laboratorium', html: 'Kadar air dan kepadatan tanah asli dapat mengubah persentase pengembangan. Untuk perencanaan pondasi utama, diperlukan hasil uji laboratorium geoteknik.' },
76
+ { type: 'title', text: 'Konfirmasi Asumsi Sebelum Memesan Armada', level: 3 },
77
+ { type: 'paragraph', html: 'Jika kondisi tanah bervariasi, lakukan simulasi dengan dua jenis profil tanah dan gunakan estimasi volume yang lebih besar untuk armada pengangkut.' },
78
+ ],
79
+ ui: {
80
+ unitSystemLabel: 'Sistem Pengukuran',
81
+ unitMetric: 'Metrik',
82
+ unitImperial: 'Imperial',
83
+ onboarding: 'Masukkan dimensi galian, pilih jenis tanah, dan gunakan kedua hasil volume untuk perencanaan pekerjaan tanah dan logistik.',
84
+ dimensionLabel: 'Dimensi Galian',
85
+ lengthLabel: 'Panjang',
86
+ widthLabel: 'Lebar',
87
+ depthLabel: 'Kedalaman',
88
+ soilLabel: 'Profil Tanah',
89
+ soilSand: 'Pasir',
90
+ soilTopsoil: 'Tanah Subur',
91
+ soilClay: 'Tanah Liat',
92
+ soilGravel: 'Kerikil',
93
+ soilSandBand: 'Pengembangan 10 hingga 15%',
94
+ soilTopsoilBand: 'Pengembangan 15 hingga 25%',
95
+ soilClayBand: 'Pengembangan 25 hingga 40%',
96
+ soilGravelBand: 'Pengembangan 15 hingga 25%',
97
+ bankVolumeLabel: 'Volume Bank (Asli)',
98
+ bankVolumeHelp: 'Kondisi tanah asli sebelum digali',
99
+ looseVolumeLabel: 'Volume Gembur',
100
+ looseVolumeHelp: 'Rentang perkiraan setelah digali',
101
+ expansionLabel: 'Faktor Pengembangan Tanah',
102
+ expansionHelp: 'Persentase yang diterapkan pada profil',
103
+ sceneTitle: 'Dari tanah asli ke lokasi penampungan',
104
+ sceneBank: 'di dalam tanah',
105
+ sceneLoose: 'material gembur',
106
+ sceneGround: 'garis permukaan',
107
+ sceneCut: 'lubang hasil galian',
108
+ interpretationTitle: 'Cara Membaca Hasil.',
109
+ interpretationText: 'Angka pertama menunjukkan ukuran lubang galian. Rentang volume gembur menunjukkan perkiraan ruang tanah hasil galian.',
110
+ warning: 'Hanya untuk estimasi perencanaan logistik. Kadar air dan metode penggalian dapat mengubah volume gembur nyata. Bukan pengganti uji geoteknik.',
111
+ unitLengthMetric: 'm',
112
+ unitLengthImperial: 'ft',
113
+ unitVolumeMetric: 'm³',
114
+ unitVolumeImperial: 'ft³',
115
+ soilStatusLow: 'pengembangan rendah',
116
+ soilStatusMedium: 'pengembangan sedang',
117
+ soilStatusHigh: 'pengembangan tinggi',
118
+ soilStatusLabel: 'Tingkat Pengembangan',
119
+ },
120
+ };