@jjlmoya/utils-diy 1.2.0 → 1.4.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 (189) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +12 -0
  3. package/src/category/i18n/id.ts +12 -0
  4. package/src/category/i18n/it.ts +12 -0
  5. package/src/category/i18n/ja.ts +12 -0
  6. package/src/category/i18n/ko.ts +12 -0
  7. package/src/category/i18n/nl.ts +12 -0
  8. package/src/category/i18n/pl.ts +12 -0
  9. package/src/category/i18n/pt.ts +12 -0
  10. package/src/category/i18n/ru.ts +12 -0
  11. package/src/category/i18n/sv.ts +12 -0
  12. package/src/category/i18n/tr.ts +12 -0
  13. package/src/category/i18n/zh.ts +12 -0
  14. package/src/category/index.ts +13 -1
  15. package/src/tests/faq_count.test.ts +1 -1
  16. package/src/tests/i18n_coverage.test.ts +36 -0
  17. package/src/tests/locale_completeness.test.ts +2 -2
  18. package/src/tests/seo_length.test.ts +3 -0
  19. package/src/tests/slug_uniqueness.test.ts +58 -0
  20. package/src/tool/balusterCalculator/i18n/de.ts +264 -0
  21. package/src/tool/balusterCalculator/i18n/id.ts +264 -0
  22. package/src/tool/balusterCalculator/i18n/it.ts +264 -0
  23. package/src/tool/balusterCalculator/i18n/ja.ts +264 -0
  24. package/src/tool/balusterCalculator/i18n/ko.ts +264 -0
  25. package/src/tool/balusterCalculator/i18n/nl.ts +264 -0
  26. package/src/tool/balusterCalculator/i18n/pl.ts +264 -0
  27. package/src/tool/balusterCalculator/i18n/pt.ts +264 -0
  28. package/src/tool/balusterCalculator/i18n/ru.ts +264 -0
  29. package/src/tool/balusterCalculator/i18n/sv.ts +264 -0
  30. package/src/tool/balusterCalculator/i18n/tr.ts +264 -0
  31. package/src/tool/balusterCalculator/i18n/zh.ts +264 -0
  32. package/src/tool/balusterCalculator/index.ts +15 -7
  33. package/src/tool/clayCalculator/i18n/de.ts +183 -0
  34. package/src/tool/clayCalculator/i18n/id.ts +183 -0
  35. package/src/tool/clayCalculator/i18n/it.ts +183 -0
  36. package/src/tool/clayCalculator/i18n/ja.ts +182 -0
  37. package/src/tool/clayCalculator/i18n/ko.ts +183 -0
  38. package/src/tool/clayCalculator/i18n/nl.ts +183 -0
  39. package/src/tool/clayCalculator/i18n/pl.ts +183 -0
  40. package/src/tool/clayCalculator/i18n/pt.ts +183 -0
  41. package/src/tool/clayCalculator/i18n/ru.ts +183 -0
  42. package/src/tool/clayCalculator/i18n/sv.ts +183 -0
  43. package/src/tool/clayCalculator/i18n/tr.ts +183 -0
  44. package/src/tool/clayCalculator/i18n/zh.ts +183 -0
  45. package/src/tool/clayCalculator/index.ts +15 -7
  46. package/src/tool/concreteCalculator/i18n/de.ts +201 -0
  47. package/src/tool/concreteCalculator/i18n/id.ts +201 -0
  48. package/src/tool/concreteCalculator/i18n/it.ts +201 -0
  49. package/src/tool/concreteCalculator/i18n/ja.ts +201 -0
  50. package/src/tool/concreteCalculator/i18n/ko.ts +201 -0
  51. package/src/tool/concreteCalculator/i18n/nl.ts +201 -0
  52. package/src/tool/concreteCalculator/i18n/pl.ts +201 -0
  53. package/src/tool/concreteCalculator/i18n/pt.ts +201 -0
  54. package/src/tool/concreteCalculator/i18n/ru.ts +201 -0
  55. package/src/tool/concreteCalculator/i18n/sv.ts +201 -0
  56. package/src/tool/concreteCalculator/i18n/tr.ts +201 -0
  57. package/src/tool/concreteCalculator/i18n/zh.ts +201 -0
  58. package/src/tool/concreteCalculator/index.ts +17 -5
  59. package/src/tool/cutOptimizer/i18n/de.ts +178 -0
  60. package/src/tool/cutOptimizer/i18n/id.ts +178 -0
  61. package/src/tool/cutOptimizer/i18n/it.ts +178 -0
  62. package/src/tool/cutOptimizer/i18n/ja.ts +178 -0
  63. package/src/tool/cutOptimizer/i18n/ko.ts +178 -0
  64. package/src/tool/cutOptimizer/i18n/nl.ts +178 -0
  65. package/src/tool/cutOptimizer/i18n/pl.ts +178 -0
  66. package/src/tool/cutOptimizer/i18n/pt.ts +178 -0
  67. package/src/tool/cutOptimizer/i18n/ru.ts +178 -0
  68. package/src/tool/cutOptimizer/i18n/sv.ts +178 -0
  69. package/src/tool/cutOptimizer/i18n/tr.ts +178 -0
  70. package/src/tool/cutOptimizer/i18n/zh.ts +178 -0
  71. package/src/tool/cutOptimizer/index.ts +17 -5
  72. package/src/tool/drillCalculator/i18n/de.ts +137 -0
  73. package/src/tool/drillCalculator/i18n/id.ts +137 -0
  74. package/src/tool/drillCalculator/i18n/it.ts +137 -0
  75. package/src/tool/drillCalculator/i18n/ja.ts +137 -0
  76. package/src/tool/drillCalculator/i18n/ko.ts +137 -0
  77. package/src/tool/drillCalculator/i18n/nl.ts +137 -0
  78. package/src/tool/drillCalculator/i18n/pl.ts +137 -0
  79. package/src/tool/drillCalculator/i18n/pt.ts +137 -0
  80. package/src/tool/drillCalculator/i18n/ru.ts +137 -0
  81. package/src/tool/drillCalculator/i18n/sv.ts +137 -0
  82. package/src/tool/drillCalculator/i18n/tr.ts +137 -0
  83. package/src/tool/drillCalculator/i18n/zh.ts +137 -0
  84. package/src/tool/drillCalculator/index.ts +17 -5
  85. package/src/tool/drillSharpener/i18n/de.ts +120 -0
  86. package/src/tool/drillSharpener/i18n/id.ts +120 -0
  87. package/src/tool/drillSharpener/i18n/it.ts +120 -0
  88. package/src/tool/drillSharpener/i18n/ja.ts +120 -0
  89. package/src/tool/drillSharpener/i18n/ko.ts +120 -0
  90. package/src/tool/drillSharpener/i18n/nl.ts +120 -0
  91. package/src/tool/drillSharpener/i18n/pl.ts +120 -0
  92. package/src/tool/drillSharpener/i18n/pt.ts +120 -0
  93. package/src/tool/drillSharpener/i18n/ru.ts +120 -0
  94. package/src/tool/drillSharpener/i18n/sv.ts +120 -0
  95. package/src/tool/drillSharpener/i18n/tr.ts +120 -0
  96. package/src/tool/drillSharpener/i18n/zh.ts +120 -0
  97. package/src/tool/drillSharpener/index.ts +17 -5
  98. package/src/tool/epoxyCalculator/i18n/de.ts +118 -0
  99. package/src/tool/epoxyCalculator/i18n/id.ts +118 -0
  100. package/src/tool/epoxyCalculator/i18n/it.ts +118 -0
  101. package/src/tool/epoxyCalculator/i18n/ja.ts +118 -0
  102. package/src/tool/epoxyCalculator/i18n/ko.ts +118 -0
  103. package/src/tool/epoxyCalculator/i18n/nl.ts +118 -0
  104. package/src/tool/epoxyCalculator/i18n/pl.ts +118 -0
  105. package/src/tool/epoxyCalculator/i18n/pt.ts +118 -0
  106. package/src/tool/epoxyCalculator/i18n/ru.ts +118 -0
  107. package/src/tool/epoxyCalculator/i18n/sv.ts +118 -0
  108. package/src/tool/epoxyCalculator/i18n/tr.ts +118 -0
  109. package/src/tool/epoxyCalculator/i18n/zh.ts +118 -0
  110. package/src/tool/epoxyCalculator/index.ts +15 -7
  111. package/src/tool/furnitureFit/i18n/de.ts +113 -0
  112. package/src/tool/furnitureFit/i18n/id.ts +113 -0
  113. package/src/tool/furnitureFit/i18n/it.ts +113 -0
  114. package/src/tool/furnitureFit/i18n/ja.ts +113 -0
  115. package/src/tool/furnitureFit/i18n/ko.ts +113 -0
  116. package/src/tool/furnitureFit/i18n/nl.ts +113 -0
  117. package/src/tool/furnitureFit/i18n/pl.ts +113 -0
  118. package/src/tool/furnitureFit/i18n/pt.ts +113 -0
  119. package/src/tool/furnitureFit/i18n/ru.ts +113 -0
  120. package/src/tool/furnitureFit/i18n/sv.ts +113 -0
  121. package/src/tool/furnitureFit/i18n/tr.ts +113 -0
  122. package/src/tool/furnitureFit/i18n/zh.ts +113 -0
  123. package/src/tool/furnitureFit/index.ts +17 -5
  124. package/src/tool/mortarCalculator/i18n/de.ts +129 -0
  125. package/src/tool/mortarCalculator/i18n/id.ts +129 -0
  126. package/src/tool/mortarCalculator/i18n/it.ts +129 -0
  127. package/src/tool/mortarCalculator/i18n/ja.ts +129 -0
  128. package/src/tool/mortarCalculator/i18n/ko.ts +129 -0
  129. package/src/tool/mortarCalculator/i18n/nl.ts +129 -0
  130. package/src/tool/mortarCalculator/i18n/pl.ts +129 -0
  131. package/src/tool/mortarCalculator/i18n/pt.ts +129 -0
  132. package/src/tool/mortarCalculator/i18n/ru.ts +129 -0
  133. package/src/tool/mortarCalculator/i18n/sv.ts +129 -0
  134. package/src/tool/mortarCalculator/i18n/tr.ts +129 -0
  135. package/src/tool/mortarCalculator/i18n/zh.ts +129 -0
  136. package/src/tool/mortarCalculator/index.ts +17 -5
  137. package/src/tool/passepartoutCalculator/i18n/de.ts +108 -0
  138. package/src/tool/passepartoutCalculator/i18n/id.ts +108 -0
  139. package/src/tool/passepartoutCalculator/i18n/it.ts +108 -0
  140. package/src/tool/passepartoutCalculator/i18n/ja.ts +108 -0
  141. package/src/tool/passepartoutCalculator/i18n/ko.ts +108 -0
  142. package/src/tool/passepartoutCalculator/i18n/nl.ts +108 -0
  143. package/src/tool/passepartoutCalculator/i18n/pl.ts +108 -0
  144. package/src/tool/passepartoutCalculator/i18n/pt.ts +108 -0
  145. package/src/tool/passepartoutCalculator/i18n/ru.ts +108 -0
  146. package/src/tool/passepartoutCalculator/i18n/sv.ts +108 -0
  147. package/src/tool/passepartoutCalculator/i18n/tr.ts +108 -0
  148. package/src/tool/passepartoutCalculator/i18n/zh.ts +108 -0
  149. package/src/tool/passepartoutCalculator/index.ts +17 -5
  150. package/src/tool/stairCalculator/i18n/de.ts +144 -0
  151. package/src/tool/stairCalculator/i18n/id.ts +144 -0
  152. package/src/tool/stairCalculator/i18n/it.ts +144 -0
  153. package/src/tool/stairCalculator/i18n/ja.ts +144 -0
  154. package/src/tool/stairCalculator/i18n/ko.ts +144 -0
  155. package/src/tool/stairCalculator/i18n/nl.ts +144 -0
  156. package/src/tool/stairCalculator/i18n/pl.ts +144 -0
  157. package/src/tool/stairCalculator/i18n/pt.ts +144 -0
  158. package/src/tool/stairCalculator/i18n/ru.ts +144 -0
  159. package/src/tool/stairCalculator/i18n/sv.ts +144 -0
  160. package/src/tool/stairCalculator/i18n/tr.ts +144 -0
  161. package/src/tool/stairCalculator/i18n/zh.ts +144 -0
  162. package/src/tool/stairCalculator/index.ts +17 -5
  163. package/src/tool/thermalExpansionCalculator/i18n/de.ts +132 -0
  164. package/src/tool/thermalExpansionCalculator/i18n/id.ts +130 -0
  165. package/src/tool/thermalExpansionCalculator/i18n/it.ts +130 -0
  166. package/src/tool/thermalExpansionCalculator/i18n/ja.ts +130 -0
  167. package/src/tool/thermalExpansionCalculator/i18n/ko.ts +130 -0
  168. package/src/tool/thermalExpansionCalculator/i18n/nl.ts +130 -0
  169. package/src/tool/thermalExpansionCalculator/i18n/pl.ts +130 -0
  170. package/src/tool/thermalExpansionCalculator/i18n/pt.ts +130 -0
  171. package/src/tool/thermalExpansionCalculator/i18n/ru.ts +130 -0
  172. package/src/tool/thermalExpansionCalculator/i18n/sv.ts +130 -0
  173. package/src/tool/thermalExpansionCalculator/i18n/tr.ts +130 -0
  174. package/src/tool/thermalExpansionCalculator/i18n/zh.ts +130 -0
  175. package/src/tool/thermalExpansionCalculator/index.ts +17 -5
  176. package/src/tool/voltageDropCalculator/i18n/de.ts +112 -0
  177. package/src/tool/voltageDropCalculator/i18n/id.ts +110 -0
  178. package/src/tool/voltageDropCalculator/i18n/it.ts +110 -0
  179. package/src/tool/voltageDropCalculator/i18n/ja.ts +110 -0
  180. package/src/tool/voltageDropCalculator/i18n/ko.ts +110 -0
  181. package/src/tool/voltageDropCalculator/i18n/nl.ts +110 -0
  182. package/src/tool/voltageDropCalculator/i18n/pl.ts +110 -0
  183. package/src/tool/voltageDropCalculator/i18n/pt.ts +110 -0
  184. package/src/tool/voltageDropCalculator/i18n/ru.ts +110 -0
  185. package/src/tool/voltageDropCalculator/i18n/sv.ts +110 -0
  186. package/src/tool/voltageDropCalculator/i18n/tr.ts +110 -0
  187. package/src/tool/voltageDropCalculator/i18n/zh.ts +110 -0
  188. package/src/tool/voltageDropCalculator/index.ts +17 -5
  189. package/src/types.ts +1 -1
@@ -0,0 +1,201 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ConcreteCalculatorUI } from '../ui';
4
+
5
+ const slug = 'beton-mortel-calculator';
6
+ const title = 'Beton en Mortelcalculator: Exacte Hoeveelheden Cement, Zand en Water';
7
+ const description =
8
+ 'Bereken hoeveel zakken cement, scheppen zand en liters water je nodig hebt per m³. Voor funderingen, vloeren, muren en dekvloeren. Technische doseergids.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Hoeveel zakken cement van 25kg gaan er in een kubieke meter?',
13
+ answer:
14
+ 'Voor een standaard beton (sterkteklasse C20/25) heb je ongeveer 14 zakken van 25kg (350kg) nodig om één kubieke meter verdicht mengsel te maken.',
15
+ },
16
+ {
17
+ question: 'Wat is sterker, beton of mortel?',
18
+ answer:
19
+ 'Beton (met grind) is structureel sterker om grote belastingen te dragen. Mortel (alleen zand) is ideaal voor het metselen van stenen of het stucen van oppervlakken.',
20
+ },
21
+ {
22
+ question: 'Hoeveel scheppen gaan er in een kubieke meter?',
23
+ answer:
24
+ 'Dit hangt af van de grootte van de schep, maar over het algemeen rekent men met 180-200 scheppen zand per m³. Onze calculator vertaalt de m³ naar voorgestelde scheppen.',
25
+ },
26
+ {
27
+ question: 'Kan ik het mengsel met de hand maken zonder betonmolen?',
28
+ answer:
29
+ 'Ja, hoewel het veel meer fysieke inspanning vereist. Het is ideaal om dit op een schone en waterdichte ondergrond te doen (metalen plaat oder bak) om geen water te verliezen.',
30
+ },
31
+ {
32
+ question: 'Waarom scheurt beton tijdens het drogen?',
33
+ answer:
34
+ 'Dit komt vaak door een gebrek aan vocht tijdens het uitharden (snelle verdamping van water) of te veel water in het mengsel. Het wordt aanbevolen om het beton in de dagen na het storten te bevochtigen.',
35
+ },
36
+ ];
37
+
38
+ const howToData = [
39
+ {
40
+ name: 'Kies het Type Mengsel',
41
+ text: 'Selecteer of je beton gaat maken voor funderingen of mortel voor muren.',
42
+ },
43
+ {
44
+ name: 'Geef het Volume in m³ op',
45
+ text: 'Voer het totale volume in. Vermenigvuldig lengte x breedte x dikte.',
46
+ },
47
+ {
48
+ name: 'Raadpleeg de Hoeveelheden',
49
+ text: 'Bekijk hoeveel zakken, scheppen en liters je moet kopen.',
50
+ },
51
+ {
52
+ name: 'Pas de Verhoudingen toe',
53
+ text: 'Volg de visuele gids voor cement, zand en grind voor een perfect mengsel.',
54
+ },
55
+ ];
56
+
57
+ const faqSchema: WithContext<FAQPage> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'FAQPage',
60
+ mainEntity: faqData.map((item) => ({
61
+ '@type': 'Question',
62
+ name: item.question,
63
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
64
+ })),
65
+ };
66
+
67
+ const howToSchema: WithContext<HowToThing> = {
68
+ '@context': 'https://schema.org',
69
+ '@type': 'HowTo',
70
+ name: title,
71
+ description,
72
+ step: howToData.map((step, i) => ({
73
+ '@type': 'HowToStep',
74
+ position: i + 1,
75
+ name: step.name,
76
+ text: step.text,
77
+ })),
78
+ };
79
+
80
+ const appSchema: WithContext<SoftwareApplication> = {
81
+ '@context': 'https://schema.org',
82
+ '@type': 'SoftwareApplication',
83
+ name: title,
84
+ description,
85
+ applicationCategory: 'UtilityApplication',
86
+ operatingSystem: 'All',
87
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
88
+ inLanguage: 'nl',
89
+ };
90
+
91
+ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
92
+ slug,
93
+ title,
94
+ description,
95
+ faqTitle: 'Veelgestelde Vragen',
96
+ faq: faqData,
97
+ bibliographyTitle: 'Technische Referenties',
98
+ bibliography: [
99
+ {
100
+ name: 'NEN-EN 206: Beton - Specificatie, eigenschappen, vervaardiging en conformiteit',
101
+ url: 'https://www.nen.nl/',
102
+ },
103
+ {
104
+ name: 'Concrete Mix Proportioning Standards (ASTM)',
105
+ url: 'https://store.astm.org/astm-bos-04.02.html',
106
+ },
107
+ {
108
+ name: 'Doseergids voor Cementmortels',
109
+ url: 'https://nl.wikipedia.org/wiki/Mortel',
110
+ },
111
+ ],
112
+ howTo: howToData,
113
+ schemas: [faqSchema, howToSchema, appSchema],
114
+ seo: [
115
+ {
116
+ type: 'title',
117
+ text: 'Doseergids voor Beton en Mortel',
118
+ level: 2,
119
+ },
120
+ {
121
+ type: 'paragraph',
122
+ html: 'Bij een verbouwing of nieuwbouw is een van de meest gestelde vragen: <strong>hoeveel zakken cement heb ik nodig voor een kubieke meter beton?</strong>. Het gaat niet alleen om het mengen van ingrediënten; de uiteindelijke sterkte van de constructie hangt direct af van de precisie in de verhoudingen van cement, zand, grind en water. Onze calculator vertaalt industriële maten naar praktische bouwplaats-eenheden: zakken van 25kg, scheppen en liters.',
123
+ },
124
+ {
125
+ type: 'card',
126
+ icon: 'mdi:water-alert',
127
+ title: 'Te veel water verzwakt het beton',
128
+ html: '<p>Een veelvoorkomende fout is het toevoegen van te veel water zodat het beton beter vloeit. Overtollig water creëert poriën bij verdamping tijdens het uitharden, wat de uiteindelijke sterkte drastisch vermindert. De ideale consistentie moet zijn als die van een <strong>dikke pasta, niet vloeibaar</strong>. Gebruik zo min mogelijk water.</p>',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Standaard Verhoudingen naar Gebruik',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'De <strong>dosering van beton</strong> varieert per gebruik. Voor <strong>Beton C20/25</strong> (funderingen en vloeren) is de verhouding 1 deel cement, 2.5 delen zand en 3 delen grind. Voor <strong>Metselmortel</strong> (muren) is het 1 deel cement en 4 delen zand. Voor <strong>Vloermortel</strong> (dekvloeren) is het 1 deel cement en 3 delen zand. Beton met grind kan meer belasting dragen; mortel met alleen zand is ideaal voor metselen en stucen.',
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: 'Hoe bereken je de m³ die je nodig hebt',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'card',
146
+ icon: 'mdi:calculator-variant',
147
+ title: 'Voorbeeld van Berekening voor een Vloer',
148
+ html: '<p>Voor een tuinvloer van 4m lang, 3m breed en 15cm dik: <strong>4 × 3 × 0.15 = 1.80 m³</strong>. Onze calculator voert deze bewerking automatisch uit als je de afmetingen invoert in de sectie "Op Maat".</p><p>Vergeet niet om altijd <strong>10% extra te kopen</strong> om verliezen door morsen of variaties in het terrein te compenseren.</p>',
149
+ },
150
+ {
151
+ type: 'title',
152
+ text: 'Mengvolgorde en Dosering per Zak',
153
+ level: 3,
154
+ },
155
+ {
156
+ type: 'paragraph',
157
+ html: 'Op de bouw spreekt men vaak over een <strong>"300 kg mengsel"</strong>: 300kg cement per kubieke meter gereed beton. Voor correct mengen in een betonmolen: eerst het water, dan grind en zand (om klonten te breken), en als laatste het cement geleidelijk toevoegen.',
158
+ },
159
+ {
160
+ type: 'card',
161
+ icon: 'mdi:package-variant-closed',
162
+ title: 'De 10% regel om niet tekort te komen',
163
+ html: '<p>Koop altijd <strong>10% meer materiaal</strong> dan berekend om verliezen door morsen, onregelmatigheden in het terrein of variaties in het werkelijke volume van de vochtige aggregaten te compenseren. Het is veel goedkoper dan een tweede bestelling moeten plaatsen terwijl de bouw stilligt.</p>',
164
+ },
165
+ ],
166
+ ui: {
167
+ mixH200Label: 'Standaard Beton',
168
+ mixH200Hint: 'Ideaal voor funderingen en vloeren',
169
+ mixM40Label: 'Metselmortel',
170
+ mixM40Hint: 'Voor muren en tussenwanden',
171
+ mixM80Label: 'Sterke Dekvloer',
172
+ mixM80Hint: 'Voor vloeren en sterk stucwerk',
173
+ modeDimsLabel: 'Op Maat',
174
+ modeDirectLabel: 'Directe m³',
175
+ labelLength: 'Lengte',
176
+ labelWidth: 'Breedte',
177
+ labelThickness: 'Dikte',
178
+ labelVolume: 'Totaal Volume (m³)',
179
+ binderCementLabel: 'Cement',
180
+ binderLimeLabel: 'Kalk',
181
+ summaryLabel: 'Totaal te vullen:',
182
+ resUnitSacks: 'Zakken (25kg)',
183
+ resUnitShovels: 'Scheppen',
184
+ resUnitLitres: 'Liter',
185
+ resLabelCement: 'Portlandcement',
186
+ resLabelLime: 'Hydraulische Kalk',
187
+ resLabelSand: 'Zand / Aggregaten',
188
+ resLabelWater: 'Drinkwater',
189
+ proportionsTitle: 'Verhoudingen van het Geselecteerde Mengsel',
190
+ propLabelSand: 'Zand',
191
+ propLabelGravel: 'Grind',
192
+ adviceH200: 'Ideaal voor kolommen, vloeren en dragende structuren.',
193
+ adviceM40: 'Perfect voor het optrekken van bakstenen of blokken muren.',
194
+ adviceM80: 'Gebruik dit voor zeer sterke vloerafwerkingen.',
195
+ adviceLimeH200: 'Kalkbeton is flexibeler maar doet er langer over om uit te harden.',
196
+ priceTotalLabel: 'Geschat Budget',
197
+ priceSackLabel: 'Zak',
198
+ priceSandLabel: 'Zand (m³)',
199
+ priceDisclaimer: 'Indicatieve marktprijzen. Pas aan volgens je lokale leverancier.',
200
+ },
201
+ };
@@ -0,0 +1,201 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ConcreteCalculatorUI } from '../ui';
4
+
5
+ const slug = 'kalkulator-betonu-zaprawy';
6
+ const title = 'Kalkulator Betonu i Zaprawy: Dokładne Ilości Cementu, Piasku i Wody';
7
+ const description =
8
+ 'Oblicz ile worków cementu, łopat piasku i litrów wody potrzebujesz na 1 m³. Do fundamentów, wylewek, murów i szlichty. Przewodnik dozowania technicznego.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Ile worków cementu 25kg wchodzi w metr sześcienny?',
13
+ answer:
14
+ 'Dla standardowego betonu (klasa wytrzymałości C20/25) potrzeba około 14 worków po 25kg (350kg) do przygotowania jednego metra sześciennego zagęszczonej mieszanki.',
15
+ },
16
+ {
17
+ question: 'Co jest mocniejsze, beton czy zaprawa?',
18
+ answer:
19
+ 'Beton (z żwirem) jest mocniejszy strukturalnie i służy do przenoszenia dużych obciążeń. Zaprawa (tylko piasek) jest idealna do łączenia elementów lub tynkowania powierzchni.',
20
+ },
21
+ {
22
+ question: 'Ile łopat to jeden metr sześcienny?',
23
+ answer:
24
+ 'Zależy to od rozmiaru łopaty, ale zazwyczaj przyjmuje się 180-200 łopat piasku na m³. Nasz kalkulator przelicza m³ na sugerowaną liczbę łopat.',
25
+ },
26
+ {
27
+ question: 'Czy mogę przygotować mieszankę ręcznie bez betoniarki?',
28
+ answer:
29
+ 'Tak, choć wymaga to znacznie większego wysiłku fizycznego. Najlepiej robić to na czystej i szczelnej powierzchni (blacha lub kastra), aby nie stracić wody.',
30
+ },
31
+ {
32
+ question: 'Dlaczego beton pęka podczas wysychania?',
33
+ answer:
34
+ 'Często wynika to z braku wilgoci podczas wiązania (zbyt szybkie parowanie wody) lub nadmiaru wody w mieszance. Zaleca się podlewanie betonu w kolejnych dniach.',
35
+ },
36
+ ];
37
+
38
+ const howToData = [
39
+ {
40
+ name: 'Wybierz typ mieszanki',
41
+ text: 'Wybierz, czy przygotowujesz beton na fundamenty czy zaprawę do murowania.',
42
+ },
43
+ {
44
+ name: 'Podaj objętość w m³',
45
+ text: 'Wprowadź całkowitą objętość. Pomnóż długość x szerokość x grubość.',
46
+ },
47
+ {
48
+ name: 'Sprawdź ilości',
49
+ text: 'Zobacz ile worków, łopat i litrów musisz kupić.',
50
+ },
51
+ {
52
+ name: 'Zastosuj proporcje',
53
+ text: 'Postępuj zgodnie z wizualnym przewodnikiem dotyczącym cementu, piasku i żwiru.',
54
+ },
55
+ ];
56
+
57
+ const faqSchema: WithContext<FAQPage> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'FAQPage',
60
+ mainEntity: faqData.map((item) => ({
61
+ '@type': 'Question',
62
+ name: item.question,
63
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
64
+ })),
65
+ };
66
+
67
+ const howToSchema: WithContext<HowToThing> = {
68
+ '@context': 'https://schema.org',
69
+ '@type': 'HowTo',
70
+ name: title,
71
+ description,
72
+ step: howToData.map((step, i) => ({
73
+ '@type': 'HowToStep',
74
+ position: i + 1,
75
+ name: step.name,
76
+ text: step.text,
77
+ })),
78
+ };
79
+
80
+ const appSchema: WithContext<SoftwareApplication> = {
81
+ '@context': 'https://schema.org',
82
+ '@type': 'SoftwareApplication',
83
+ name: title,
84
+ description,
85
+ applicationCategory: 'UtilityApplication',
86
+ operatingSystem: 'All',
87
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
88
+ inLanguage: 'pl',
89
+ };
90
+
91
+ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
92
+ slug,
93
+ title,
94
+ description,
95
+ faqTitle: 'Często Zadawane Pytania',
96
+ faq: faqData,
97
+ bibliographyTitle: 'Referencje Techniczne',
98
+ bibliography: [
99
+ {
100
+ name: 'Norma PN-EN 206: Beton – Wymagania, właściwości, produkcja i zgodność',
101
+ url: 'https://www.pkn.pl/',
102
+ },
103
+ {
104
+ name: 'Concrete Mix Proportioning Standards (ASTM)',
105
+ url: 'https://store.astm.org/astm-bos-04.02.html',
106
+ },
107
+ {
108
+ name: 'Przewodnik po dozowaniu zapraw cementowych',
109
+ url: 'https://pl.wikipedia.org/wiki/Zaprawa_murarska',
110
+ },
111
+ ],
112
+ howTo: howToData,
113
+ schemas: [faqSchema, howToSchema, appSchema],
114
+ seo: [
115
+ {
116
+ type: 'title',
117
+ text: 'Przewodnik po dozowaniu betonu i zaprawy',
118
+ level: 2,
119
+ },
120
+ {
121
+ type: 'paragraph',
122
+ html: 'Podczas remontu lub budowy jednym z najczęstszych pytań jest <strong>ile worków cementu potrzebuję na metr sześcienny betonu?</strong>. To nie tylko kwestia zmieszania składników; końcowa wytrzymałość konstrukcji zależy bezpośrednio od precyzji proporcji cementu, piasku, żwiru i wody. Nasz kalkulator przelicza wymiary przemysłowe na praktyczne jednostki budowlane: worki 25kg, łopaty i litry.',
123
+ },
124
+ {
125
+ type: 'card',
126
+ icon: 'mdi:water-alert',
127
+ title: 'Nadmiar wody osłabia beton',
128
+ html: '<p>Częstym błędem jest dodawanie zbyt dużej ilości wody, aby beton lepiej płynął. Nadmiar wody tworzy pory podczas parowania w trakcie wiązania, co drastycznie zmniejsza wytrzymałość końcową. Idealna konsystencja powinna przypominać <strong>gęstą pastę, a nie ciecz</strong>. Używaj minimalnej możliwej ilości wody.</p>',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Standardowe proporcje według zastosowania',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: '<strong>Dozowanie betonu</strong> różni się w zależności od zastosowania. Dla <strong>Betonu C20/25</strong> (fundamenty i wylewki) proporcja to 1 część cementu, 2.5 części piasku i 3 części żwiru. Dla <strong>Zaprawy Murarskiej</strong> (mury) to 1 część cementu i 4 części piasku. Dla <strong>Zaprawy do Szlichty</strong> to 1 część cementu i 3 części piasku. Beton ze żwirem wytrzymuje większe obciążenia; zaprawa z samym piaskiem idealnie nadaje się do spoinowania i tynkowania.',
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: 'Jak obliczyć m³ których potrzebujesz',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'card',
146
+ icon: 'mdi:calculator-variant',
147
+ title: 'Przykład obliczenia dla wylewki',
148
+ html: '<p>Dla wylewki ogrodowej o długości 4m, szerokości 3m i grubości 15cm: <strong>4 × 3 × 0.15 = 1.80 m³</strong>. Nasz kalkulator wykonuje tę operację automatycznie po wprowadzeniu wymiarów w sekcji "Według Wymiarów".</p><p>Pamiętaj, aby zawsze <strong>kupić o 10% więcej materiału</strong>, aby zrekompensować straty przez rozlanie lub nierówności terenu.</p>',
149
+ },
150
+ {
151
+ type: 'title',
152
+ text: 'Kolejność mieszania i dozowanie na worki',
153
+ level: 3,
154
+ },
155
+ {
156
+ type: 'paragraph',
157
+ html: 'Na budowach często mówi się o <strong>"mieszance na 300 kilo"</strong>: 300kg cementu na każdy metr sześcienny gotowego betonu. Dla poprawnego wymieszania w betoniarce: najpierw woda, potem żwir i piasek (aby rozbić grudki), a na końcu cement dodawany stopniowo.',
158
+ },
159
+ {
160
+ type: 'card',
161
+ icon: 'mdi:package-variant-closed',
162
+ title: 'Zasada 10% aby uniknąć braku materiału',
163
+ html: '<p>Zawsze kupuj <strong>o 10% więcej materiału</strong> niż wyliczono, aby zrekompensować straty, nierówności terenu lub różnice w rzeczywistej objętości wilgotnych kruszyw. Jest to znacznie tańsze niż konieczność składania drugiego zamówienia przy wstrzymanych pracach.</p>',
164
+ },
165
+ ],
166
+ ui: {
167
+ mixH200Label: 'Beton Standardowy',
168
+ mixH200Hint: 'Idealny do fundamentów i wylewek',
169
+ mixM40Label: 'Zaprawa Murarska',
170
+ mixM40Hint: 'Do murów i ścianek działowych',
171
+ mixM80Label: 'Mocna Szlichta',
172
+ mixM80Hint: 'Do podłóg i mocnych tynków',
173
+ modeDimsLabel: 'Według Wymiarów',
174
+ modeDirectLabel: 'm³ Bezpośrednio',
175
+ labelLength: 'Długość',
176
+ labelWidth: 'Szerokość',
177
+ labelThickness: 'Grubość',
178
+ labelVolume: 'Całkowita Objętość (m³)',
179
+ binderCementLabel: 'Cement',
180
+ binderLimeLabel: 'Wapno',
181
+ summaryLabel: 'Razem do wypełnienia:',
182
+ resUnitSacks: 'Worki (25kg)',
183
+ resUnitShovels: 'Łopaty',
184
+ resUnitLitres: 'Litry',
185
+ resLabelCement: 'Cement Portlandzki',
186
+ resLabelLime: 'Wapno Hydrauliczne',
187
+ resLabelSand: 'Piasek / Kruszywo',
188
+ resLabelWater: 'Woda Pitna',
189
+ proportionsTitle: 'Proporcje wybranej mieszanki',
190
+ propLabelSand: 'Piasek',
191
+ propLabelGravel: 'Żwir',
192
+ adviceH200: 'Idealny do słupów, wylewek i konstrukcji nośnych.',
193
+ adviceM40: 'Doskonały do wznoszenia murów z cegły lub bloczków.',
194
+ adviceM80: 'Użyj tego do bardzo wytrzymałych szlicht podłogowych.',
195
+ adviceLimeH200: 'Beton wapienny jest bardziej elastyczny, ale wiąże dłużej.',
196
+ priceTotalLabel: 'Szacowany budżet',
197
+ priceSackLabel: 'Worek',
198
+ priceSandLabel: 'Piasek (m³)',
199
+ priceDisclaimer: 'Orientacyjne ceny rynkowe. Dostosuj według lokalnego dostawcy.',
200
+ },
201
+ };
@@ -0,0 +1,201 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ConcreteCalculatorUI } from '../ui';
4
+
5
+ const slug = 'calculadora-betao-argamassa';
6
+ const title = 'Calculadora de Betão e Argamassa: Quantidades Exatas de Cimento, Areia e Água';
7
+ const description =
8
+ 'Calcule quantos sacos de cimento, pás de areia e litros de água precisa por m³. Para alicerces, lajes, muros e betonilhas. Guia de dosagem técnica.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Quantos sacos de cimento de 25kg cabem num metro cúbico?',
13
+ answer:
14
+ 'Para um betão padrão (resistência C20/25), são necessários aproximadamente 14 sacos de 25kg (350kg) para fabricar um metro cúbico de mistura compactada.',
15
+ },
16
+ {
17
+ question: 'O que é mais forte, o betão ou a argamassa?',
18
+ answer:
19
+ 'O betão (com brita/gravilha) é estruturalmente mais forte para suportar grandes cargas. A argamassa (apenas areia) é ideal para unir tijolos ou rebocar superfícies.',
20
+ },
21
+ {
22
+ question: 'Quantas pás são um metro cúbico?',
23
+ answer:
24
+ 'Depende do tamanho da pá, mas geralmente calculam-se 180-200 pás de areia por m³. A nossa calculadora traduz os m³ em pás sugeridas.',
25
+ },
26
+ {
27
+ question: 'Posso fazer a mistura à mão sem betoneira?',
28
+ answer:
29
+ 'Sim, embora exija muito mais esforço físico. O ideal é fazê-lo sobre uma superfície limpa e estanque (chapa metálica ou masseira) para não perder água.',
30
+ },
31
+ {
32
+ question: 'Por que é que o betão racha ao secar?',
33
+ answer:
34
+ 'Geralmente deve-se à falta de humidade durante a cura (perda rápida de água) ou excesso de água na mistura. Recomenda-se regar o betão nos dias posteriores.',
35
+ },
36
+ ];
37
+
38
+ const howToData = [
39
+ {
40
+ name: 'Escolha o Tipo de Mistura',
41
+ text: 'Selecione se vai fazer betão para alicerces ou argamassa para muros.',
42
+ },
43
+ {
44
+ name: 'Indique o Volume em m³',
45
+ text: 'Introduza o volume total. Multiplique comprimento x largura x espessura.',
46
+ },
47
+ {
48
+ name: 'Consulte as Quantidades',
49
+ text: 'Veja quantos sacos, pás e litros precisa de comprar.',
50
+ },
51
+ {
52
+ name: 'Aplique as Proporções',
53
+ text: 'Siga o guia visual de cimento, areia e brita para uma mistura perfeita.',
54
+ },
55
+ ];
56
+
57
+ const faqSchema: WithContext<FAQPage> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'FAQPage',
60
+ mainEntity: faqData.map((item) => ({
61
+ '@type': 'Question',
62
+ name: item.question,
63
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
64
+ })),
65
+ };
66
+
67
+ const howToSchema: WithContext<HowToThing> = {
68
+ '@context': 'https://schema.org',
69
+ '@type': 'HowTo',
70
+ name: title,
71
+ description,
72
+ step: howToData.map((step, i) => ({
73
+ '@type': 'HowToStep',
74
+ position: i + 1,
75
+ name: step.name,
76
+ text: step.text,
77
+ })),
78
+ };
79
+
80
+ const appSchema: WithContext<SoftwareApplication> = {
81
+ '@context': 'https://schema.org',
82
+ '@type': 'SoftwareApplication',
83
+ name: title,
84
+ description,
85
+ applicationCategory: 'UtilityApplication',
86
+ operatingSystem: 'All',
87
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
88
+ inLanguage: 'pt',
89
+ };
90
+
91
+ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
92
+ slug,
93
+ title,
94
+ description,
95
+ faqTitle: 'Perguntas Frequentes',
96
+ faq: faqData,
97
+ bibliographyTitle: 'Referências Técnicas',
98
+ bibliography: [
99
+ {
100
+ name: 'Regulamento de Estruturas de Betão Armado e Pré-Esforçado (REBAP) - Portugal',
101
+ url: 'http://www.lnec.pt/',
102
+ },
103
+ {
104
+ name: 'Concrete Mix Proportioning Standards (ASTM)',
105
+ url: 'https://store.astm.org/astm-bos-04.02.html',
106
+ },
107
+ {
108
+ name: 'Guia de Dosagem de Argamassas de Cimento',
109
+ url: 'https://pt.wikipedia.org/wiki/Argamassa',
110
+ },
111
+ ],
112
+ howTo: howToData,
113
+ schemas: [faqSchema, howToSchema, appSchema],
114
+ seo: [
115
+ {
116
+ type: 'title',
117
+ text: 'Guia de Dosagem para Betão e Argamassa',
118
+ level: 2,
119
+ },
120
+ {
121
+ type: 'paragraph',
122
+ html: 'Ao enfrentar uma renovação ou construção, uma das perguntas mais recorrentes é <strong>quantos sacos de cimento preciso para um metro cúbico de betão?</strong>. Não se trata apenas de misturar ingredientes; a resistência final da estrutura depende diretamente da precisão nas proporções de cimento, areia, brita e água. A nossa calculadora traduz medidas industriais para unidades práticas de obra: sacos de 25kg, pás e litros.',
123
+ },
124
+ {
125
+ type: 'card',
126
+ icon: 'mdi:water-alert',
127
+ title: 'O Excesso de Água Enfraquece o Betão',
128
+ html: '<p>Um erro muito comum é adicionar demasiada água para que o betão flua melhor. O excesso de água cria poros ao evaporar durante a cura, reduzindo drasticamente a resistência final. A consistência ideal deve ser como a de uma <strong>pasta espessa, não líquida</strong>. Use a mínima quantidade de água possível.</p>',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Proporções Padrão segundo o Uso',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: 'A <strong>dosagem do betão</strong> varia segundo o uso. Para um <strong>Betão C20/25</strong> (alicerces e lajes) a proporção é 1 parte de cimento, 2.5 de areia e 3 de brita. Para a <strong>Argamassa de Alvenaria</strong> (muros e divisórias) é 1 parte de cimento e 4 de areia. Para a <strong>Betonilha</strong> (enchimentos de solo) é 1 parte de cimento e 3 de areia. O betão com brita suporta mais carga; a argamassa de apenas areia é ideal para unir e rebocar.',
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: 'Como Calcular os m³ que Necessita',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'card',
146
+ icon: 'mdi:calculator-variant',
147
+ title: 'Exemplo de Cálculo para uma Laje',
148
+ html: '<p>Para uma laje de jardim com 4m de comprimento, 3m de largura e 15cm de espessura: <strong>4 × 3 × 0.15 = 1.80 m³</strong>. A nossa calculadora realiza esta operação automaticamente se introduzir as dimensões na secção "Por Medidas".</p><p>Lembre-se sempre de <strong>comprar 10% adicional</strong> para compensar perdas por derramamento ou variações no terreno.</p>',
149
+ },
150
+ {
151
+ type: 'title',
152
+ text: 'Ordem de Mistura e Dosagem por Sacos',
153
+ level: 3,
154
+ },
155
+ {
156
+ type: 'paragraph',
157
+ html: 'Nas obras fala-se de <strong>"mistura a 300 quilos"</strong>: 300kg de cimento por cada metro cúbico de betão terminado. Para uma mistura correta em betoneira: primeiro a água, depois brita e areia (para desfazer grumos), e por último o cimento adicionado gradualmente.',
158
+ },
159
+ {
160
+ type: 'card',
161
+ icon: 'mdi:package-variant-closed',
162
+ title: 'A Regra dos 10% para Evitar Faltas',
163
+ html: '<p>Compre sempre <strong>10% mais de material</strong> do calculado para compensar perdas por derramamento, irregularidades no terreno ou variações no volume real dos inertes húmidos. É muito mais barato do que ter de fazer um segundo pedido com a obra parada.</p>',
164
+ },
165
+ ],
166
+ ui: {
167
+ mixH200Label: 'Betão Padrão',
168
+ mixH200Hint: 'Ideal para alicerces e lajes',
169
+ mixM40Label: 'Argamassa de Alvenaria',
170
+ mixM40Hint: 'Para muros e divisórias',
171
+ mixM80Label: 'Betonilha Forte',
172
+ mixM80Hint: 'Para solos e rebocos fortes',
173
+ modeDimsLabel: 'Por Medidas',
174
+ modeDirectLabel: 'm³ Diretos',
175
+ labelLength: 'Comprimento',
176
+ labelWidth: 'Largura',
177
+ labelThickness: 'Espessura',
178
+ labelVolume: 'Volume Total (m³)',
179
+ binderCementLabel: 'Cimento',
180
+ binderLimeLabel: 'Cal',
181
+ summaryLabel: 'Total a preencher:',
182
+ resUnitSacks: 'Sacos (25kg)',
183
+ resUnitShovels: 'Pás',
184
+ resUnitLitres: 'Litros',
185
+ resLabelCement: 'Cimento Portland',
186
+ resLabelLime: 'Cal Hidráulica',
187
+ resLabelSand: 'Areia / Inertes',
188
+ resLabelWater: 'Água Potável',
189
+ proportionsTitle: 'Proporções da Mistura Selecionada',
190
+ propLabelSand: 'Areia',
191
+ propLabelGravel: 'Brita / Gravilha',
192
+ adviceH200: 'Ideal para pilares, lajes e estruturas que suportam carga.',
193
+ adviceM40: 'Perfeito para levantar muros de tijolo ou bloco.',
194
+ adviceM80: 'Use isto para betonilhas de solo muito resistentes.',
195
+ adviceLimeH200: 'O betão de cal é mais flexível mas demora mais tempo a secar.',
196
+ priceTotalLabel: 'Orçamento Estimado',
197
+ priceSackLabel: 'Saco',
198
+ priceSandLabel: 'Areia (m³)',
199
+ priceDisclaimer: 'Preços de mercado orientativos. Ajuste segundo o seu fornecedor local.',
200
+ },
201
+ };