@jjlmoya/utils-nature 1.1.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 (61) hide show
  1. package/package.json +60 -0
  2. package/src/category/i18n/en.ts +110 -0
  3. package/src/category/i18n/es.ts +127 -0
  4. package/src/category/i18n/fr.ts +110 -0
  5. package/src/category/index.ts +14 -0
  6. package/src/category/seo.astro +15 -0
  7. package/src/components/PreviewNavSidebar.astro +116 -0
  8. package/src/components/PreviewToolbar.astro +143 -0
  9. package/src/data.ts +11 -0
  10. package/src/env.d.ts +5 -0
  11. package/src/index.ts +30 -0
  12. package/src/layouts/PreviewLayout.astro +117 -0
  13. package/src/pages/[locale]/[slug].astro +146 -0
  14. package/src/pages/[locale].astro +251 -0
  15. package/src/pages/index.astro +4 -0
  16. package/src/tests/faq_count.test.ts +19 -0
  17. package/src/tests/locale_completeness.test.ts +42 -0
  18. package/src/tests/mocks/astro_mock.js +2 -0
  19. package/src/tests/no_h1_in_components.test.ts +48 -0
  20. package/src/tests/schemas_fulfillment.test.ts +23 -0
  21. package/src/tests/seo_length.test.ts +22 -0
  22. package/src/tests/title_quality.test.ts +55 -0
  23. package/src/tests/tool_validation.test.ts +17 -0
  24. package/src/tool/cricketThermometer/bibliography.astro +14 -0
  25. package/src/tool/cricketThermometer/component.astro +549 -0
  26. package/src/tool/cricketThermometer/i18n/en.ts +181 -0
  27. package/src/tool/cricketThermometer/i18n/es.ts +181 -0
  28. package/src/tool/cricketThermometer/i18n/fr.ts +181 -0
  29. package/src/tool/cricketThermometer/index.ts +34 -0
  30. package/src/tool/cricketThermometer/logic.ts +6 -0
  31. package/src/tool/cricketThermometer/seo.astro +15 -0
  32. package/src/tool/cricketThermometer/ui.ts +11 -0
  33. package/src/tool/digitalCarbon/bibliography.astro +9 -0
  34. package/src/tool/digitalCarbon/component.astro +582 -0
  35. package/src/tool/digitalCarbon/i18n/en.ts +235 -0
  36. package/src/tool/digitalCarbon/i18n/es.ts +235 -0
  37. package/src/tool/digitalCarbon/i18n/fr.ts +235 -0
  38. package/src/tool/digitalCarbon/index.ts +33 -0
  39. package/src/tool/digitalCarbon/logic.ts +107 -0
  40. package/src/tool/digitalCarbon/seo.astro +14 -0
  41. package/src/tool/digitalCarbon/ui.ts +38 -0
  42. package/src/tool/rainHarvester/bibliography.astro +9 -0
  43. package/src/tool/rainHarvester/component.astro +559 -0
  44. package/src/tool/rainHarvester/i18n/en.ts +185 -0
  45. package/src/tool/rainHarvester/i18n/es.ts +185 -0
  46. package/src/tool/rainHarvester/i18n/fr.ts +185 -0
  47. package/src/tool/rainHarvester/index.ts +33 -0
  48. package/src/tool/rainHarvester/logic.ts +12 -0
  49. package/src/tool/rainHarvester/seo.astro +14 -0
  50. package/src/tool/rainHarvester/ui.ts +23 -0
  51. package/src/tool/seedCalculator/bibliography.astro +8 -0
  52. package/src/tool/seedCalculator/component.astro +812 -0
  53. package/src/tool/seedCalculator/i18n/en.ts +213 -0
  54. package/src/tool/seedCalculator/i18n/es.ts +213 -0
  55. package/src/tool/seedCalculator/i18n/fr.ts +213 -0
  56. package/src/tool/seedCalculator/index.ts +34 -0
  57. package/src/tool/seedCalculator/logic.ts +19 -0
  58. package/src/tool/seedCalculator/seo.astro +9 -0
  59. package/src/tool/seedCalculator/ui.ts +39 -0
  60. package/src/tools.ts +12 -0
  61. package/src/types.ts +72 -0
@@ -0,0 +1,213 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { SeedCalculatorUI } from '../ui';
4
+
5
+ const slug = 'seed-calculator';
6
+ const title = 'Seed Spacing and Planter Calibration Calculator';
7
+ const description =
8
+ 'Precision tool for farmers. Calculate the ideal spacing between seeds based on target population and row width, and analyse planter stress at different working speeds.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'How is seed spacing calculated?',
13
+ answer:
14
+ 'One hectare (10,000 m²) is divided by the row width to get the total linear metres of sowing. The target population is then divided by those metres to determine how many seeds to place per linear metre.',
15
+ },
16
+ {
17
+ question: 'What is the target population per hectare?',
18
+ answer:
19
+ 'It is the ideal number of plants per 10,000 square metres. It depends on crop type, soil fertility and water availability. For example, irrigated maize typically requires 85,000 to 95,000 seeds per hectare.',
20
+ },
21
+ {
22
+ question: 'How does germination percentage affect the calculation?',
23
+ answer:
24
+ 'Not all seeds that are sown will emerge. If a seed batch has 95% germination, you must increase the seeding rate by 5% to achieve the desired final plant population.',
25
+ },
26
+ {
27
+ question: 'Why is planter calibration so important?',
28
+ answer:
29
+ 'A seeding rate that is too dense causes competition between plants and smaller grains. A rate that is too sparse wastes space and yield potential. Precision is the key to profitability.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Enter target population',
36
+ text: 'Define how many seeds or plants you want per hectare according to the technical recommendation for your variety.',
37
+ },
38
+ {
39
+ name: 'Set row width',
40
+ text: 'Measure the distance between the discs or boots of your planter (typically 50, 70 or 75 cm).',
41
+ },
42
+ {
43
+ name: 'Adjust germination rate',
44
+ text: 'Enter the expected emergence percentage to compensate for natural losses in the field.',
45
+ },
46
+ {
47
+ name: 'Obtain mechanical adjustment',
48
+ text: 'Use the seeds per metre or cm between seeds value to adjust the sprockets or monitor on your machine.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowToThing> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: 'en',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<SeedCalculatorUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: 'Frequently Asked Questions',
91
+ faq: faqData,
92
+ bibliographyTitle: 'Scientific References',
93
+ bibliography: [
94
+ {
95
+ name: 'KWS Spain',
96
+ url: 'https://www.kws.com/es/es/',
97
+ },
98
+ {
99
+ name: 'Spanish Ministry of Agriculture (MAPA)',
100
+ url: 'https://www.mapa.gob.es/es/agricultura/temas/producciones-agricolas/cultivos-herbaceos/',
101
+ },
102
+ {
103
+ name: 'Yara Spain',
104
+ url: 'https://www.yara.es/nutricion-vegetal/maiz/',
105
+ },
106
+ ],
107
+ howTo: howToData,
108
+ schemas: [faqSchema, howToSchema, appSchema],
109
+ seo: [
110
+ {
111
+ type: 'title',
112
+ text: 'Technical Guide to Precision Sowing',
113
+ level: 2,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Adjusting a planter transmission requires knowing exactly how many seeds must fall per linear metre of furrow. Machine manuals usually give approximate tables, but factors such as <strong>drive wheel slippage</strong> or seed size can alter reality. This tool gives you the perfect theoretical value: the <strong>target spacing between seeds</strong>.',
118
+ },
119
+ {
120
+ type: 'tip',
121
+ title: 'The Mathematical Formula',
122
+ html: '<p>For agronomists and the curious, here is the basis of the calculation:</p><pre>Spacing (cm) = 10,000,000 / (Population × Row Width)</pre><ul><li><strong>10,000,000:</strong> Conversion factor from Ha to cm².</li><li><strong>Population:</strong> Seeds per hectare.</li><li><strong>Row Width:</strong> Distance between rows in cm.</li></ul>',
123
+ },
124
+ {
125
+ type: 'title',
126
+ text: 'Why Use This Calculator?',
127
+ level: 2,
128
+ },
129
+ {
130
+ type: 'paragraph',
131
+ html: 'If you measure in the field and your seeds are closer together or further apart than the target spacing, your machine is <strong>poorly calibrated</strong>. This tool also analyses the dosing frequency (Hz) of the seed disc at different working speeds, alerting you to the risk of singulation loss.',
132
+ },
133
+ {
134
+ type: 'title',
135
+ text: 'Keys to Quality Sowing',
136
+ level: 2,
137
+ },
138
+ {
139
+ type: 'list',
140
+ items: [
141
+ '<strong>Singulation:</strong> Avoid doubles and skips. 99% singulation keeps competition between plants balanced.',
142
+ '<strong>Uniform Spacing:</strong> The coefficient of variation should be less than 0.3. Deviations greater than 5 cm reduce yield potential.',
143
+ '<strong>Depth:</strong> Critical for uniform emergence. Adjust press wheel load according to soil moisture.',
144
+ ],
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: 'Field Verification Methods',
149
+ level: 2,
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: '<strong>1/1000 Hectare Method:</strong> Measure a specific distance along a furrow representing 1/1000 of a hectare. Count the seeds and multiply by 1,000. For 70 cm rows the distance is 14.28 m; for 52.5 cm rows it is 19.05 m.',
154
+ },
155
+ {
156
+ type: 'paragraph',
157
+ html: '<strong>Drive Wheel Method:</strong> Lift the machine, mark the drive wheel and turn it the equivalent of 1/100 of a hectare. Collect the seeds in a bucket and weigh or count them to verify calibration.',
158
+ },
159
+ {
160
+ type: 'title',
161
+ text: 'Reference Table by Crop',
162
+ level: 2,
163
+ },
164
+ {
165
+ type: 'list',
166
+ items: [
167
+ '<strong>Maize:</strong> 60,000 to 95,000 seeds/Ha. High response to density in modern hybrids.',
168
+ '<strong>Soybean:</strong> 250,000 to 450,000 seeds/Ha. Great compensation capacity at low densities.',
169
+ '<strong>Sunflower:</strong> 40,000 to 55,000 seeds/Ha. Very sensitive to density; excess reduces head diameter.',
170
+ '<strong>Rapeseed:</strong> 300,000 to 600,000 seeds/Ha. Very small seed; requires excellent soil contact.',
171
+ ],
172
+ },
173
+ ],
174
+ ui: {
175
+ headCrop: 'Select your Crop',
176
+ headParams: 'Parameters',
177
+ headAnalysis: 'Real Time Analysis',
178
+ labelPopulation: 'Population',
179
+ unitSeedsHa: 'Seeds/Ha',
180
+ labelRowWidth: 'Row Width',
181
+ unitCm: 'Centimetres',
182
+ labelWorkSpeed: 'Working Speed',
183
+ unitKmh: 'km/h',
184
+ labelCalibration: 'Plate Calibration',
185
+ labelSpacingDesc: 'Exact distance between each seed in the row.',
186
+ labelMachineStress: 'Machine Stress',
187
+ labelSeedsM: 'Seeds / Metre',
188
+ labelPlantsM2: 'Plants / m²',
189
+ labelSpeedMs: 'Metres / Sec',
190
+ labelHaBag: 'Ha / Bag (80k)',
191
+ statusStandby: 'STANDBY',
192
+ statusVolumetric: 'VOLUMETRIC FLOW',
193
+ statusOptimal: 'OPTIMAL DOSING',
194
+ statusHighSpeed: 'HIGH SPEED',
195
+ statusPlateLimiter: 'PLATE LIMIT',
196
+ cropCorn: 'Grain Maize',
197
+ cropSilage: 'Silage Maize',
198
+ cropSunflower: 'Sunflower',
199
+ cropSorghum: 'Sorghum',
200
+ cropSoy: 'Soybean',
201
+ cropBeet: 'Sugar Beet',
202
+ cropRapeseed: 'Rapeseed',
203
+ noteCorn: 'High precision required',
204
+ noteSilage: 'Medium high density',
205
+ noteSunflower: 'Speed sensitive',
206
+ noteSorghum: 'Continuous flow or disc',
207
+ noteSoy: 'High population',
208
+ noteBeet: 'Critical shallow sowing',
209
+ noteRapeseed: 'Very small seed',
210
+ faqTitle: 'Frequently Asked Questions',
211
+ bibliographyTitle: 'Scientific References',
212
+ },
213
+ };
@@ -0,0 +1,213 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { SeedCalculatorUI } from '../ui';
4
+
5
+ const slug = 'calculadora-siembra';
6
+ const title = 'Calculadora de Siembra y Calibración de Sembradora';
7
+ const description =
8
+ 'Herramienta de precisión para agricultores. Calcula la distancia ideal entre semillas según la población objetivo y el ancho de surco, y analiza el estrés de la sembradora a distintas velocidades.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '¿Cómo se calcula el espaciado entre semillas?',
13
+ answer:
14
+ 'Se divide la superficie de una hectárea (10.000 m²) por el ancho de surco para obtener los metros lineales de siembra. Luego se divide la población objetivo entre esos metros para determinar cuántas semillas poner por metro lineal.',
15
+ },
16
+ {
17
+ question: '¿Qué es la población objetivo por hectárea?',
18
+ answer:
19
+ 'Es el número ideal de plantas que se desea tener por cada 10.000 metros cuadrados. Depende del tipo de cultivo, la fertilidad del suelo y la disponibilidad de agua. Por ejemplo, el maíz de regadío requiere entre 85.000 y 95.000 semillas por hectárea.',
20
+ },
21
+ {
22
+ question: '¿Cómo influye el porcentaje de germinación?',
23
+ answer:
24
+ 'No todas las semillas sembradas nacen. Si una semilla tiene un 95% de germinación, debes aumentar la tasa de siembra un 5% para alcanzar la población de plantas final deseada.',
25
+ },
26
+ {
27
+ question: '¿Por qué es vital calibrar la sembradora?',
28
+ answer:
29
+ 'Una siembra demasiado densa causa competencia entre plantas y granos pequeños. Una siembra demasiado rala desperdicia espacio y potencial de rendimiento. La precisión es la clave de la rentabilidad.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Introducir población objetivo',
36
+ text: 'Define cuántas semillas o plantas quieres por hectárea según la recomendación técnica de tu variedad.',
37
+ },
38
+ {
39
+ name: 'Configurar ancho de surco',
40
+ text: 'Mide la distancia entre los discos o botas de tu sembradora (habitualmente 50, 70 o 75 cm).',
41
+ },
42
+ {
43
+ name: 'Ajustar poder germinativo',
44
+ text: 'Introduce el porcentaje de nacencia esperado para compensar las bajas naturales en el campo.',
45
+ },
46
+ {
47
+ name: 'Obtener ajuste mecánico',
48
+ text: 'Usa el valor de semillas por metro o cm entre semillas para ajustar los piñones o el monitor de tu máquina.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowToThing> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: 'es',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<SeedCalculatorUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: 'Preguntas Frecuentes',
91
+ faq: faqData,
92
+ bibliographyTitle: 'Referencias Científicas',
93
+ bibliography: [
94
+ {
95
+ name: 'KWS España',
96
+ url: 'https://www.kws.com/es/es/',
97
+ },
98
+ {
99
+ name: 'Ministerio de Agricultura (MAPA)',
100
+ url: 'https://www.mapa.gob.es/es/agricultura/temas/producciones-agricolas/cultivos-herbaceos/',
101
+ },
102
+ {
103
+ name: 'Yara España',
104
+ url: 'https://www.yara.es/nutricion-vegetal/maiz/',
105
+ },
106
+ ],
107
+ howTo: howToData,
108
+ schemas: [faqSchema, howToSchema, appSchema],
109
+ seo: [
110
+ {
111
+ type: 'title',
112
+ text: 'Guía Técnica de Siembra de Precisión',
113
+ level: 2,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Ajustar la transmisión de una sembradora requiere conocer exactamente cuántas semillas deben caer por cada metro lineal de surco. Los manuales de las máquinas suelen dar tablas aproximadas, pero factores como el <strong>patinamiento de la rueda de mando</strong> o el tamaño de la semilla pueden alterar la realidad. Esta herramienta te da el valor teórico perfecto: el <strong>espaciado objetivo entre semillas</strong>.',
118
+ },
119
+ {
120
+ type: 'tip',
121
+ title: 'La Fórmula de Cálculo',
122
+ html: '<p>Para ingenieros agrónomos y curiosos, aquí está la base del cálculo:</p><pre>Espaciado (cm) = 10.000.000 / (Población × Ancho de Surco)</pre><ul><li><strong>10.000.000:</strong> Factor de conversión de Ha a cm².</li><li><strong>Población:</strong> Semillas por hectárea.</li><li><strong>Ancho Surco:</strong> Distancia entre hileras en cm.</li></ul>',
123
+ },
124
+ {
125
+ type: 'title',
126
+ text: '¿Por qué usar esta calculadora?',
127
+ level: 2,
128
+ },
129
+ {
130
+ type: 'paragraph',
131
+ html: 'Si mides en el campo y tus semillas están más juntas o más separadas que el espaciado objetivo, tu máquina está <strong>mal calibrada</strong>. Esta herramienta también analiza la frecuencia de dosificación (Hz) del plato sembrador en función de la velocidad de avance, alertando sobre el riesgo de pérdida de singulación.',
132
+ },
133
+ {
134
+ type: 'title',
135
+ text: 'Claves de la Siembra de Calidad',
136
+ level: 2,
137
+ },
138
+ {
139
+ type: 'list',
140
+ items: [
141
+ '<strong>Singulación:</strong> Evita los dobles y saltos. Un 99% de singulación mantiene la competencia entre plantas equilibrada.',
142
+ '<strong>Espaciado Uniforme:</strong> El coeficiente de variación debe ser menor a 0,3. Desviaciones mayores a 5 cm reducen el potencial de rinde.',
143
+ '<strong>Profundidad:</strong> Crítica para una emergencia uniforme. Ajusta la carga de las ruedas tapadoras según la humedad del suelo.',
144
+ ],
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: 'Métodos de Verificación en Campo',
149
+ level: 2,
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: '<strong>Método 1/1000 de Hectárea:</strong> Mide una distancia específica a lo largo de un surco que represente 1/1000 de una hectárea. Cuenta las semillas y multiplícalas por 1.000. Para surcos de 70 cm la distancia es 14,28 metros; para 52,5 cm son 19,05 metros.',
154
+ },
155
+ {
156
+ type: 'paragraph',
157
+ html: '<strong>Método de la Rueda Motriz:</strong> Levanta la máquina, marca la rueda motriz y gírala el equivalente a 1/100 de hectárea. Recoge las semillas en un balde y pésalas o cuéntalas para verificar la calibración.',
158
+ },
159
+ {
160
+ type: 'title',
161
+ text: 'Tabla de Referencia por Cultivo',
162
+ level: 2,
163
+ },
164
+ {
165
+ type: 'list',
166
+ items: [
167
+ '<strong>Maíz:</strong> 60.000 a 95.000 semillas/Ha. Alta respuesta a la densidad en híbridos modernos.',
168
+ '<strong>Soja:</strong> 250.000 a 450.000 semillas/Ha. Gran capacidad de compensación a densidades bajas.',
169
+ '<strong>Girasol:</strong> 40.000 a 55.000 semillas/Ha. Muy sensible a la densidad; el exceso reduce el diámetro del capítulo.',
170
+ '<strong>Colza:</strong> 300.000 a 600.000 semillas/Ha. Semilla muy pequeña, requiere excelente contacto suelo.',
171
+ ],
172
+ },
173
+ ],
174
+ ui: {
175
+ headCrop: 'Selecciona tu Cultivo',
176
+ headParams: 'Parámetros',
177
+ headAnalysis: 'Análisis en Tiempo Real',
178
+ labelPopulation: 'Población',
179
+ unitSeedsHa: 'Semillas/Ha',
180
+ labelRowWidth: 'Entre Surcos',
181
+ unitCm: 'Centímetros',
182
+ labelWorkSpeed: 'Velocidad de Trabajo',
183
+ unitKmh: 'km/h',
184
+ labelCalibration: 'Calibración Placa',
185
+ labelSpacingDesc: 'Distancia exacta entre cada semilla en la línea.',
186
+ labelMachineStress: 'Estrés de Máquina',
187
+ labelSeedsM: 'Semillas / Metro',
188
+ labelPlantsM2: 'Plantas / m²',
189
+ labelSpeedMs: 'Metros / Seg',
190
+ labelHaBag: 'Ha / Saco (80k)',
191
+ statusStandby: 'STANDBY',
192
+ statusVolumetric: 'FLUJO VOLUMÉTRICO',
193
+ statusOptimal: 'DOSIFICACIÓN ÓPTIMA',
194
+ statusHighSpeed: 'ALTA VELOCIDAD',
195
+ statusPlateLimiter: 'LÍMITE DE PLACA',
196
+ cropCorn: 'Maíz Grano',
197
+ cropSilage: 'Maíz Silo',
198
+ cropSunflower: 'Girasol',
199
+ cropSorghum: 'Sorgo',
200
+ cropSoy: 'Soja',
201
+ cropBeet: 'Remolacha',
202
+ cropRapeseed: 'Colza',
203
+ noteCorn: 'Alta precisión requerida',
204
+ noteSilage: 'Densidad media alta',
205
+ noteSunflower: 'Sensible a velocidad',
206
+ noteSorghum: 'Flujo continuo o plato',
207
+ noteSoy: 'Alta población',
208
+ noteBeet: 'Siembra crítica superficial',
209
+ noteRapeseed: 'Semilla muy pequeña',
210
+ faqTitle: 'Preguntas Frecuentes',
211
+ bibliographyTitle: 'Referencias Científicas',
212
+ },
213
+ };
@@ -0,0 +1,213 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { SeedCalculatorUI } from '../ui';
4
+
5
+ const slug = 'calculatrice-semis';
6
+ const title = 'Calculatrice de Semis et Calibration du Semoir';
7
+ const description =
8
+ 'Outil de précision pour les agriculteurs. Calculez la distance idéale entre les graines selon la population cible et la largeur de rang, et analysez le stress du semoir à différentes vitesses.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: "Comment calcule-t-on l'espacement entre les graines ?",
13
+ answer:
14
+ "On divise la superficie d'un hectare (10 000 m²) par la largeur de rang pour obtenir les mètres linéaires de semis. Ensuite, on divise la population cible par ces mètres pour déterminer combien de graines placer par mètre linéaire.",
15
+ },
16
+ {
17
+ question: "Qu'est-ce que la population cible par hectare ?",
18
+ answer:
19
+ "C'est le nombre idéal de plantes souhaité pour 10 000 mètres carrés. Il dépend du type de culture, de la fertilité du sol et de la disponibilité en eau. Par exemple, le maïs irrigué nécessite entre 85 000 et 95 000 graines par hectare.",
20
+ },
21
+ {
22
+ question: 'Quel est le rôle du pourcentage de germination ?',
23
+ answer:
24
+ "Toutes les graines semées ne lèvent pas. Si un lot de semences a 95 % de germination, vous devez augmenter le taux de semis de 5 % pour atteindre la population finale de plantes souhaitée.",
25
+ },
26
+ {
27
+ question: 'Pourquoi la calibration du semoir est-elle essentielle ?',
28
+ answer:
29
+ "Un semis trop dense entraîne une compétition entre les plantes et de petits grains. Un semis trop clairsemé gaspille de l'espace et le potentiel de rendement. La précision est la clé de la rentabilité.",
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Saisir la population cible',
36
+ text: "Définissez le nombre de graines ou de plantes souhaité par hectare selon la recommandation technique de votre variété.",
37
+ },
38
+ {
39
+ name: 'Configurer la largeur de rang',
40
+ text: 'Mesurez la distance entre les disques ou les bottes de votre semoir (généralement 50, 70 ou 75 cm).',
41
+ },
42
+ {
43
+ name: 'Ajuster le pouvoir germinatif',
44
+ text: "Saisissez le pourcentage de levée attendu pour compenser les pertes naturelles au champ.",
45
+ },
46
+ {
47
+ name: "Obtenir le réglage mécanique",
48
+ text: "Utilisez la valeur de graines par mètre ou de cm entre graines pour régler les pignons ou le moniteur de votre machine.",
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowToThing> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: 'fr',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<SeedCalculatorUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: 'Questions Fréquentes',
91
+ faq: faqData,
92
+ bibliographyTitle: 'Références Scientifiques',
93
+ bibliography: [
94
+ {
95
+ name: 'KWS Espagne',
96
+ url: 'https://www.kws.com/es/es/',
97
+ },
98
+ {
99
+ name: 'Ministère de l\'Agriculture espagnol (MAPA)',
100
+ url: 'https://www.mapa.gob.es/es/agricultura/temas/producciones-agricolas/cultivos-herbaceos/',
101
+ },
102
+ {
103
+ name: 'Yara Espagne',
104
+ url: 'https://www.yara.es/nutricion-vegetal/maiz/',
105
+ },
106
+ ],
107
+ howTo: howToData,
108
+ schemas: [faqSchema, howToSchema, appSchema],
109
+ seo: [
110
+ {
111
+ type: 'title',
112
+ text: 'Guide Technique du Semis de Précision',
113
+ level: 2,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: "Régler la transmission d'un semoir nécessite de savoir exactement combien de graines doivent tomber par mètre linéaire de sillon. Les manuels des machines donnent souvent des tables approximatives, mais des facteurs comme le <strong>patinage de la roue motrice</strong> ou la taille de la semence peuvent modifier la réalité. Cet outil vous donne la valeur théorique parfaite : l'<strong>espacement cible entre graines</strong>.",
118
+ },
119
+ {
120
+ type: 'tip',
121
+ title: 'La formule de calcul',
122
+ html: '<p>Pour les agronomes et les curieux, voici la base du calcul :</p><pre>Espacement (cm) = 10 000 000 / (Population × Largeur de rang)</pre><ul><li><strong>10 000 000 :</strong> Facteur de conversion de Ha en cm².</li><li><strong>Population :</strong> Graines par hectare.</li><li><strong>Largeur de rang :</strong> Distance entre rangs en cm.</li></ul>',
123
+ },
124
+ {
125
+ type: 'title',
126
+ text: 'Pourquoi utiliser cette calculatrice ?',
127
+ level: 2,
128
+ },
129
+ {
130
+ type: 'paragraph',
131
+ html: "Si vous mesurez au champ et que vos graines sont plus proches ou plus éloignées que l'espacement cible, votre machine est <strong>mal calibrée</strong>. Cet outil analyse également la fréquence de dosage (Hz) du plateau semeur en fonction de la vitesse d'avancement, vous alertant sur le risque de perte de singulation.",
132
+ },
133
+ {
134
+ type: 'title',
135
+ text: 'Les Clés du Semis de Qualité',
136
+ level: 2,
137
+ },
138
+ {
139
+ type: 'list',
140
+ items: [
141
+ '<strong>Singulation :</strong> Évitez les doubles et les sauts. Une singulation à 99 % maintient la compétition entre plantes équilibrée.',
142
+ "<strong>Espacement uniforme :</strong> Le coefficient de variation doit être inférieur à 0,3. Des écarts supérieurs à 5 cm réduisent le potentiel de rendement.",
143
+ "<strong>Profondeur :</strong> Critique pour une levée uniforme. Ajustez la charge des roues plombeuses selon l'humidité du sol.",
144
+ ],
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: 'Méthodes de Vérification au Champ',
149
+ level: 2,
150
+ },
151
+ {
152
+ type: 'paragraph',
153
+ html: "<strong>Méthode du 1/1000 d'hectare :</strong> Mesurez une distance spécifique le long d'un rang représentant 1/1000 d'hectare. Comptez les graines et multipliez par 1 000. Pour des rangs de 70 cm la distance est de 14,28 m ; pour 52,5 cm elle est de 19,05 m.",
154
+ },
155
+ {
156
+ type: 'paragraph',
157
+ html: "<strong>Méthode de la roue motrice :</strong> Soulevez la machine, marquez la roue motrice et faites-la tourner l'équivalent de 1/100 d'hectare. Récupérez les graines dans un seau et pesez-les ou comptez-les pour vérifier la calibration.",
158
+ },
159
+ {
160
+ type: 'title',
161
+ text: 'Tableau de Référence par Culture',
162
+ level: 2,
163
+ },
164
+ {
165
+ type: 'list',
166
+ items: [
167
+ '<strong>Maïs :</strong> 60 000 à 95 000 graines/Ha. Forte réponse à la densité dans les hybrides modernes.',
168
+ '<strong>Soja :</strong> 250 000 à 450 000 graines/Ha. Grande capacité de compensation à faibles densités.',
169
+ '<strong>Tournesol :</strong> 40 000 à 55 000 graines/Ha. Très sensible à la densité ; l\'excès réduit le diamètre du capitule.',
170
+ '<strong>Colza :</strong> 300 000 à 600 000 graines/Ha. Très petite graine ; nécessite un excellent contact avec le sol.',
171
+ ],
172
+ },
173
+ ],
174
+ ui: {
175
+ headCrop: 'Sélectionnez votre Culture',
176
+ headParams: 'Paramètres',
177
+ headAnalysis: 'Analyse en Temps Réel',
178
+ labelPopulation: 'Population',
179
+ unitSeedsHa: 'Graines/Ha',
180
+ labelRowWidth: 'Entre Rangs',
181
+ unitCm: 'Centimètres',
182
+ labelWorkSpeed: 'Vitesse de Travail',
183
+ unitKmh: 'km/h',
184
+ labelCalibration: 'Calibration Plateau',
185
+ labelSpacingDesc: 'Distance exacte entre chaque graine dans le rang.',
186
+ labelMachineStress: 'Stress Machine',
187
+ labelSeedsM: 'Graines / Mètre',
188
+ labelPlantsM2: 'Plantes / m²',
189
+ labelSpeedMs: 'Mètres / Sec',
190
+ labelHaBag: 'Ha / Sac (80k)',
191
+ statusStandby: 'EN ATTENTE',
192
+ statusVolumetric: 'FLUX VOLUMÉTRIQUE',
193
+ statusOptimal: 'DOSAGE OPTIMAL',
194
+ statusHighSpeed: 'HAUTE VITESSE',
195
+ statusPlateLimiter: 'LIMITE PLATEAU',
196
+ cropCorn: 'Maïs Grain',
197
+ cropSilage: 'Maïs Ensilage',
198
+ cropSunflower: 'Tournesol',
199
+ cropSorghum: 'Sorgho',
200
+ cropSoy: 'Soja',
201
+ cropBeet: 'Betterave',
202
+ cropRapeseed: 'Colza',
203
+ noteCorn: 'Haute précision requise',
204
+ noteSilage: 'Densité moyenne haute',
205
+ noteSunflower: 'Sensible à la vitesse',
206
+ noteSorghum: 'Flux continu ou plateau',
207
+ noteSoy: 'Haute population',
208
+ noteBeet: 'Semis superficiel critique',
209
+ noteRapeseed: 'Très petite graine',
210
+ faqTitle: 'Questions Fréquentes',
211
+ bibliographyTitle: 'Références Scientifiques',
212
+ },
213
+ };
@@ -0,0 +1,34 @@
1
+ import type { NatureToolEntry, ToolLocaleContent, ToolDefinition } from '../../types';
2
+ import SeedCalculatorComponent from './component.astro';
3
+ import SeedCalculatorSEO from './seo.astro';
4
+ import SeedCalculatorBibliography from './bibliography.astro';
5
+
6
+ import type { SeedCalculatorUI } from './ui';
7
+
8
+ export type SeedCalculatorLocaleContent = ToolLocaleContent<SeedCalculatorUI>;
9
+
10
+ import { content as es } from './i18n/es';
11
+ import { content as en } from './i18n/en';
12
+ import { content as fr } from './i18n/fr';
13
+
14
+ export const seedCalculator: NatureToolEntry<SeedCalculatorUI> = {
15
+ id: 'seed-calculator',
16
+ icons: {
17
+ bg: 'mdi:tractor',
18
+ fg: 'mdi:sprout',
19
+ },
20
+ i18n: {
21
+ es: async () => es,
22
+ en: async () => en,
23
+ fr: async () => fr,
24
+ },
25
+ };
26
+
27
+ export { SeedCalculatorComponent, SeedCalculatorSEO, SeedCalculatorBibliography };
28
+
29
+ export const SEED_CALCULATOR_TOOL: ToolDefinition = {
30
+ entry: seedCalculator,
31
+ Component: SeedCalculatorComponent,
32
+ SEOComponent: SeedCalculatorSEO,
33
+ BibliographyComponent: SeedCalculatorBibliography,
34
+ };