@jjlmoya/utils-diy 1.26.0 → 1.27.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 (48) 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/locale_completeness.test.ts +2 -3
  5. package/src/tests/seo_translation_completeness.test.ts +69 -0
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/drywallCalculator/i18n/de.ts +1 -1
  8. package/src/tool/drywallCalculator/i18n/id.ts +2 -2
  9. package/src/tool/drywallCalculator/i18n/it.ts +2 -2
  10. package/src/tool/drywallCalculator/i18n/ja.ts +1 -1
  11. package/src/tool/drywallCalculator/i18n/ko.ts +1 -1
  12. package/src/tool/drywallCalculator/i18n/nl.ts +2 -2
  13. package/src/tool/drywallCalculator/i18n/pl.ts +3 -3
  14. package/src/tool/drywallCalculator/i18n/pt.ts +3 -3
  15. package/src/tool/drywallCalculator/i18n/ru.ts +2 -2
  16. package/src/tool/drywallCalculator/i18n/sv.ts +3 -3
  17. package/src/tool/drywallCalculator/i18n/tr.ts +3 -3
  18. package/src/tool/drywallCalculator/i18n/zh.ts +3 -3
  19. package/src/tool/excavationVolumeCalculator/bibliography.astro +6 -0
  20. package/src/tool/excavationVolumeCalculator/bibliography.ts +12 -0
  21. package/src/tool/excavationVolumeCalculator/component.astro +80 -0
  22. package/src/tool/excavationVolumeCalculator/controller.ts +69 -0
  23. package/src/tool/excavationVolumeCalculator/dom-views.ts +63 -0
  24. package/src/tool/excavationVolumeCalculator/entry.ts +26 -0
  25. package/src/tool/excavationVolumeCalculator/evaluator.ts +21 -0
  26. package/src/tool/excavationVolumeCalculator/excavation-volume-calculator.css +442 -0
  27. package/src/tool/excavationVolumeCalculator/i18n/de.ts +120 -0
  28. package/src/tool/excavationVolumeCalculator/i18n/en.ts +120 -0
  29. package/src/tool/excavationVolumeCalculator/i18n/es.ts +120 -0
  30. package/src/tool/excavationVolumeCalculator/i18n/fr.ts +120 -0
  31. package/src/tool/excavationVolumeCalculator/i18n/id.ts +120 -0
  32. package/src/tool/excavationVolumeCalculator/i18n/it.ts +120 -0
  33. package/src/tool/excavationVolumeCalculator/i18n/ja.ts +120 -0
  34. package/src/tool/excavationVolumeCalculator/i18n/ko.ts +120 -0
  35. package/src/tool/excavationVolumeCalculator/i18n/nl.ts +120 -0
  36. package/src/tool/excavationVolumeCalculator/i18n/pl.ts +120 -0
  37. package/src/tool/excavationVolumeCalculator/i18n/pt.ts +120 -0
  38. package/src/tool/excavationVolumeCalculator/i18n/ru.ts +120 -0
  39. package/src/tool/excavationVolumeCalculator/i18n/sv.ts +120 -0
  40. package/src/tool/excavationVolumeCalculator/i18n/tr.ts +120 -0
  41. package/src/tool/excavationVolumeCalculator/i18n/zh.ts +120 -0
  42. package/src/tool/excavationVolumeCalculator/index.ts +11 -0
  43. package/src/tool/excavationVolumeCalculator/logic.test.ts +29 -0
  44. package/src/tool/excavationVolumeCalculator/logic.ts +35 -0
  45. package/src/tool/excavationVolumeCalculator/seo.astro +11 -0
  46. package/src/tool/excavationVolumeCalculator/storage.ts +28 -0
  47. package/src/tool/excavationVolumeCalculator/ui.ts +66 -0
  48. 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 = '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
+ };
@@ -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 = 'calcolatore-volume-scavo-rigonfiamento-terreno';
7
+ const title = 'Calcolatore Volume Scavo e Stima Rigonfiamento Terreno';
8
+ const description = 'Calcola il volume in banco dello scavo e stima il volume di terreno sciolto dopo lo scavo con un intervallo per sabbia, terra vegetale, argilla e ghiaia.';
9
+
10
+ const faq = [
11
+ {
12
+ question: 'Qual è la differenza tra volume in banco e volume sciolto?',
13
+ answer: 'Il volume in banco è il volume del terreno in situ prima di essere scavato. Il volume sciolto è lo spazio stimato occupato dal terreno dopo lo scavo considerando il coefficiente di rigonfiamento.',
14
+ },
15
+ {
16
+ question: 'Come si calcola il volume di uno scavo?',
17
+ answer: 'Moltiplica la lunghezza dello scavo per la larghezza e la profondità. Ad esempio, uno scavo di 4 metri per 3 metri e profondo 0,5 metri ha un volume in banco di 6 metri cubi prima del rigonfiamento.',
18
+ },
19
+ {
20
+ question: 'Perché l\'argilla richiede un intervallo di rigonfiamento più ampio?',
21
+ answer: 'Il comportamento dell\'argilla dipende fortemente dall\'umidità, dalla mineralogia e dalla storia delle tensioni del terreno. Lo strumento applica una forbice più ampia per riflettere questa variabilità.',
22
+ },
23
+ {
24
+ question: 'Questo calcolatore sostituisce un\'indagine geotecnica?',
25
+ answer: 'No. Il risultato è una stima per la gestione della logistica, dei camion e dei cassoni. Per fondazioni o muri di contenimento occorre una relazione geotecnica professionale.',
26
+ },
27
+ ];
28
+
29
+ const howTo = [
30
+ { name: 'Inserire le dimensioni dello scavo', text: 'Inserisci lunghezza, larghezza e profondità del taglio. Scegli tra unità metriche e imperiali.' },
31
+ { name: 'Selezionare il tipo di terreno', text: 'Seleziona sabbia, terra vegetale, argilla o ghiaia per applicare il coefficiente di rigonfiamento stimato.' },
32
+ { name: 'Pianificare il trasporto dei materiali', text: 'Usa il volume in banco per lo scavo e la forbice del volume sciolto per stimare i cassoni e i camion necessari.' },
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: 'it',
58
+ };
59
+
60
+ export const content: ToolLocaleContent<ExcavationCalculatorUI> = {
61
+ slug,
62
+ title,
63
+ description,
64
+ faqTitle: 'Domande Frequenti',
65
+ faq,
66
+ bibliographyTitle: 'Fonti e note tecniche',
67
+ bibliography: excavationVolumeCalculatorBibliography,
68
+ howTo,
69
+ schemas: [faqSchema, howToSchema, appSchema],
70
+ seo: [
71
+ { type: 'title', text: 'Due volumi per due esigenze del cantiere', level: 2 },
72
+ { type: 'paragraph', html: 'Il <strong>volume in banco</strong> rappresenta lo scavo geometrico del terreno non alterato. Il <strong>volume sciolto</strong> rappresenta lo spazio che il terreno estratto occuperà nei cassoni o negli accumuli temporanei. Separare i due valori previene errori nella stima dei trasporti.' },
73
+ { type: 'title', text: 'Usare l\'intervallo sciolto per la logistica', level: 3 },
74
+ { type: 'paragraph', html: 'Seleziona il profilo di terreno e confronta i risultati sciolti minimo e massimo con la capienza dei camion e dei container. L\'intervallo evidenzia la naturale incertezza dovuta all\'umidità e alle modalità di scavo.' },
75
+ { type: 'tip', title: 'Il coefficiente teorico non sostituisce le prove di laboratorio', html: 'Umidità e presenza di falda possono modificare il rigonfiamento reale. Per strutture di fondazione e terre contaminate si richiede un indagine geotecnica.' },
76
+ { type: 'title', text: 'Verificare i dati prima di ordinare i mezzi', level: 3 },
77
+ { type: 'paragraph', html: 'In presenza di terreni misti, esegui il calcolo con due profili differenti e organizza la logistica sul valore più cautelativo.' },
78
+ ],
79
+ ui: {
80
+ unitSystemLabel: 'Sistema di misura',
81
+ unitMetric: 'Metrico',
82
+ unitImperial: 'Imperiale',
83
+ onboarding: 'Inserisci le dimensioni dello scavo, seleziona il terreno e usa i due volumi per pianificare lo scavo e il trasporto.',
84
+ dimensionLabel: 'Dimensioni dello scavo',
85
+ lengthLabel: 'Lunghezza',
86
+ widthLabel: 'Larghezza',
87
+ depthLabel: 'Profondità',
88
+ soilLabel: 'Profilo del terreno',
89
+ soilSand: 'Sabbia',
90
+ soilTopsoil: 'Terra vegetale',
91
+ soilClay: 'Argilla',
92
+ soilGravel: 'Ghiaia',
93
+ soilSandBand: 'Rigonfiamento 10-15%',
94
+ soilTopsoilBand: 'Rigonfiamento 15-25%',
95
+ soilClayBand: 'Rigonfiamento 25-40%',
96
+ soilGravelBand: 'Rigonfiamento 15-25%',
97
+ bankVolumeLabel: 'Volume in banco',
98
+ bankVolumeHelp: 'Terreno in situ non alterato',
99
+ looseVolumeLabel: 'Volume sciolto',
100
+ looseVolumeHelp: 'Intervallo stimato dopo lo scavo',
101
+ expansionLabel: 'Rigonfiamento applicato',
102
+ expansionHelp: 'Intervallo per il terreno scelto',
103
+ sceneTitle: 'Dallo scavo all\'accumulo',
104
+ sceneBank: 'in banco',
105
+ sceneLoose: 'materiale sciolto',
106
+ sceneGround: 'piano di campagna',
107
+ sceneCut: 'scavo eseguito',
108
+ interpretationTitle: 'Come interpretare i risultati.',
109
+ interpretationText: 'Il primo valore misura la cavità scavata. L\'intervallo stimato indica il volume di terreno sciolto da trasportare.',
110
+ warning: 'Stima indicativa per la logistica. Umidità e metodo di scavo modificano il volume sciolto effettivo. Non sostituisce una relazione geotecnica.',
111
+ unitLengthMetric: 'm',
112
+ unitLengthImperial: 'ft',
113
+ unitVolumeMetric: 'm³',
114
+ unitVolumeImperial: 'ft³',
115
+ soilStatusLow: 'rigonfiamento basso',
116
+ soilStatusMedium: 'rigonfiamento moderato',
117
+ soilStatusHigh: 'rigonfiamento alto',
118
+ soilStatusLabel: 'Fascia di stima',
119
+ },
120
+ };