@jjlmoya/utils-diy 1.3.0 → 1.5.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 (193) 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/index.ts +1 -1
  16. package/src/tests/category_validation.test.ts +18 -0
  17. package/src/tests/faq_count.test.ts +1 -1
  18. package/src/tests/i18n_coverage.test.ts +36 -0
  19. package/src/tests/locale_completeness.test.ts +2 -2
  20. package/src/tests/seo_length.test.ts +3 -0
  21. package/src/tests/slug_language_code_format.test.ts +23 -0
  22. package/src/tests/slug_uniqueness.test.ts +81 -0
  23. package/src/tool/balusterCalculator/i18n/de.ts +264 -0
  24. package/src/tool/balusterCalculator/i18n/id.ts +264 -0
  25. package/src/tool/balusterCalculator/i18n/it.ts +264 -0
  26. package/src/tool/balusterCalculator/i18n/ja.ts +264 -0
  27. package/src/tool/balusterCalculator/i18n/ko.ts +264 -0
  28. package/src/tool/balusterCalculator/i18n/nl.ts +264 -0
  29. package/src/tool/balusterCalculator/i18n/pl.ts +264 -0
  30. package/src/tool/balusterCalculator/i18n/pt.ts +264 -0
  31. package/src/tool/balusterCalculator/i18n/ru.ts +264 -0
  32. package/src/tool/balusterCalculator/i18n/sv.ts +264 -0
  33. package/src/tool/balusterCalculator/i18n/tr.ts +264 -0
  34. package/src/tool/balusterCalculator/i18n/zh.ts +264 -0
  35. package/src/tool/balusterCalculator/index.ts +15 -7
  36. package/src/tool/clayCalculator/i18n/de.ts +183 -0
  37. package/src/tool/clayCalculator/i18n/id.ts +183 -0
  38. package/src/tool/clayCalculator/i18n/it.ts +183 -0
  39. package/src/tool/clayCalculator/i18n/ja.ts +182 -0
  40. package/src/tool/clayCalculator/i18n/ko.ts +183 -0
  41. package/src/tool/clayCalculator/i18n/nl.ts +183 -0
  42. package/src/tool/clayCalculator/i18n/pl.ts +183 -0
  43. package/src/tool/clayCalculator/i18n/pt.ts +183 -0
  44. package/src/tool/clayCalculator/i18n/ru.ts +183 -0
  45. package/src/tool/clayCalculator/i18n/sv.ts +183 -0
  46. package/src/tool/clayCalculator/i18n/tr.ts +183 -0
  47. package/src/tool/clayCalculator/i18n/zh.ts +183 -0
  48. package/src/tool/clayCalculator/index.ts +15 -7
  49. package/src/tool/concreteCalculator/i18n/de.ts +201 -0
  50. package/src/tool/concreteCalculator/i18n/id.ts +201 -0
  51. package/src/tool/concreteCalculator/i18n/it.ts +201 -0
  52. package/src/tool/concreteCalculator/i18n/ja.ts +201 -0
  53. package/src/tool/concreteCalculator/i18n/ko.ts +201 -0
  54. package/src/tool/concreteCalculator/i18n/nl.ts +201 -0
  55. package/src/tool/concreteCalculator/i18n/pl.ts +201 -0
  56. package/src/tool/concreteCalculator/i18n/pt.ts +201 -0
  57. package/src/tool/concreteCalculator/i18n/ru.ts +201 -0
  58. package/src/tool/concreteCalculator/i18n/sv.ts +201 -0
  59. package/src/tool/concreteCalculator/i18n/tr.ts +201 -0
  60. package/src/tool/concreteCalculator/i18n/zh.ts +201 -0
  61. package/src/tool/concreteCalculator/index.ts +17 -5
  62. package/src/tool/cutOptimizer/i18n/de.ts +178 -0
  63. package/src/tool/cutOptimizer/i18n/id.ts +178 -0
  64. package/src/tool/cutOptimizer/i18n/it.ts +178 -0
  65. package/src/tool/cutOptimizer/i18n/ja.ts +178 -0
  66. package/src/tool/cutOptimizer/i18n/ko.ts +178 -0
  67. package/src/tool/cutOptimizer/i18n/nl.ts +178 -0
  68. package/src/tool/cutOptimizer/i18n/pl.ts +178 -0
  69. package/src/tool/cutOptimizer/i18n/pt.ts +178 -0
  70. package/src/tool/cutOptimizer/i18n/ru.ts +178 -0
  71. package/src/tool/cutOptimizer/i18n/sv.ts +178 -0
  72. package/src/tool/cutOptimizer/i18n/tr.ts +178 -0
  73. package/src/tool/cutOptimizer/i18n/zh.ts +178 -0
  74. package/src/tool/cutOptimizer/index.ts +17 -5
  75. package/src/tool/drillCalculator/i18n/de.ts +137 -0
  76. package/src/tool/drillCalculator/i18n/id.ts +137 -0
  77. package/src/tool/drillCalculator/i18n/it.ts +137 -0
  78. package/src/tool/drillCalculator/i18n/ja.ts +137 -0
  79. package/src/tool/drillCalculator/i18n/ko.ts +137 -0
  80. package/src/tool/drillCalculator/i18n/nl.ts +137 -0
  81. package/src/tool/drillCalculator/i18n/pl.ts +137 -0
  82. package/src/tool/drillCalculator/i18n/pt.ts +137 -0
  83. package/src/tool/drillCalculator/i18n/ru.ts +137 -0
  84. package/src/tool/drillCalculator/i18n/sv.ts +137 -0
  85. package/src/tool/drillCalculator/i18n/tr.ts +137 -0
  86. package/src/tool/drillCalculator/i18n/zh.ts +137 -0
  87. package/src/tool/drillCalculator/index.ts +17 -5
  88. package/src/tool/drillSharpener/i18n/de.ts +120 -0
  89. package/src/tool/drillSharpener/i18n/id.ts +120 -0
  90. package/src/tool/drillSharpener/i18n/it.ts +120 -0
  91. package/src/tool/drillSharpener/i18n/ja.ts +120 -0
  92. package/src/tool/drillSharpener/i18n/ko.ts +120 -0
  93. package/src/tool/drillSharpener/i18n/nl.ts +120 -0
  94. package/src/tool/drillSharpener/i18n/pl.ts +120 -0
  95. package/src/tool/drillSharpener/i18n/pt.ts +120 -0
  96. package/src/tool/drillSharpener/i18n/ru.ts +120 -0
  97. package/src/tool/drillSharpener/i18n/sv.ts +120 -0
  98. package/src/tool/drillSharpener/i18n/tr.ts +120 -0
  99. package/src/tool/drillSharpener/i18n/zh.ts +120 -0
  100. package/src/tool/drillSharpener/index.ts +17 -5
  101. package/src/tool/epoxyCalculator/i18n/de.ts +118 -0
  102. package/src/tool/epoxyCalculator/i18n/id.ts +118 -0
  103. package/src/tool/epoxyCalculator/i18n/it.ts +118 -0
  104. package/src/tool/epoxyCalculator/i18n/ja.ts +118 -0
  105. package/src/tool/epoxyCalculator/i18n/ko.ts +118 -0
  106. package/src/tool/epoxyCalculator/i18n/nl.ts +118 -0
  107. package/src/tool/epoxyCalculator/i18n/pl.ts +118 -0
  108. package/src/tool/epoxyCalculator/i18n/pt.ts +118 -0
  109. package/src/tool/epoxyCalculator/i18n/ru.ts +118 -0
  110. package/src/tool/epoxyCalculator/i18n/sv.ts +118 -0
  111. package/src/tool/epoxyCalculator/i18n/tr.ts +118 -0
  112. package/src/tool/epoxyCalculator/i18n/zh.ts +118 -0
  113. package/src/tool/epoxyCalculator/index.ts +15 -7
  114. package/src/tool/furnitureFit/i18n/de.ts +113 -0
  115. package/src/tool/furnitureFit/i18n/id.ts +113 -0
  116. package/src/tool/furnitureFit/i18n/it.ts +113 -0
  117. package/src/tool/furnitureFit/i18n/ja.ts +113 -0
  118. package/src/tool/furnitureFit/i18n/ko.ts +113 -0
  119. package/src/tool/furnitureFit/i18n/nl.ts +113 -0
  120. package/src/tool/furnitureFit/i18n/pl.ts +113 -0
  121. package/src/tool/furnitureFit/i18n/pt.ts +113 -0
  122. package/src/tool/furnitureFit/i18n/ru.ts +113 -0
  123. package/src/tool/furnitureFit/i18n/sv.ts +113 -0
  124. package/src/tool/furnitureFit/i18n/tr.ts +113 -0
  125. package/src/tool/furnitureFit/i18n/zh.ts +113 -0
  126. package/src/tool/furnitureFit/index.ts +17 -5
  127. package/src/tool/mortarCalculator/i18n/de.ts +129 -0
  128. package/src/tool/mortarCalculator/i18n/id.ts +129 -0
  129. package/src/tool/mortarCalculator/i18n/it.ts +129 -0
  130. package/src/tool/mortarCalculator/i18n/ja.ts +129 -0
  131. package/src/tool/mortarCalculator/i18n/ko.ts +129 -0
  132. package/src/tool/mortarCalculator/i18n/nl.ts +129 -0
  133. package/src/tool/mortarCalculator/i18n/pl.ts +129 -0
  134. package/src/tool/mortarCalculator/i18n/pt.ts +129 -0
  135. package/src/tool/mortarCalculator/i18n/ru.ts +129 -0
  136. package/src/tool/mortarCalculator/i18n/sv.ts +129 -0
  137. package/src/tool/mortarCalculator/i18n/tr.ts +129 -0
  138. package/src/tool/mortarCalculator/i18n/zh.ts +129 -0
  139. package/src/tool/mortarCalculator/index.ts +17 -5
  140. package/src/tool/passepartoutCalculator/i18n/de.ts +108 -0
  141. package/src/tool/passepartoutCalculator/i18n/id.ts +108 -0
  142. package/src/tool/passepartoutCalculator/i18n/it.ts +108 -0
  143. package/src/tool/passepartoutCalculator/i18n/ja.ts +108 -0
  144. package/src/tool/passepartoutCalculator/i18n/ko.ts +108 -0
  145. package/src/tool/passepartoutCalculator/i18n/nl.ts +108 -0
  146. package/src/tool/passepartoutCalculator/i18n/pl.ts +108 -0
  147. package/src/tool/passepartoutCalculator/i18n/pt.ts +108 -0
  148. package/src/tool/passepartoutCalculator/i18n/ru.ts +108 -0
  149. package/src/tool/passepartoutCalculator/i18n/sv.ts +108 -0
  150. package/src/tool/passepartoutCalculator/i18n/tr.ts +108 -0
  151. package/src/tool/passepartoutCalculator/i18n/zh.ts +108 -0
  152. package/src/tool/passepartoutCalculator/index.ts +17 -5
  153. package/src/tool/stairCalculator/i18n/de.ts +144 -0
  154. package/src/tool/stairCalculator/i18n/id.ts +144 -0
  155. package/src/tool/stairCalculator/i18n/it.ts +144 -0
  156. package/src/tool/stairCalculator/i18n/ja.ts +144 -0
  157. package/src/tool/stairCalculator/i18n/ko.ts +144 -0
  158. package/src/tool/stairCalculator/i18n/nl.ts +144 -0
  159. package/src/tool/stairCalculator/i18n/pl.ts +144 -0
  160. package/src/tool/stairCalculator/i18n/pt.ts +144 -0
  161. package/src/tool/stairCalculator/i18n/ru.ts +144 -0
  162. package/src/tool/stairCalculator/i18n/sv.ts +144 -0
  163. package/src/tool/stairCalculator/i18n/tr.ts +144 -0
  164. package/src/tool/stairCalculator/i18n/zh.ts +144 -0
  165. package/src/tool/stairCalculator/index.ts +17 -5
  166. package/src/tool/thermalExpansionCalculator/i18n/de.ts +132 -0
  167. package/src/tool/thermalExpansionCalculator/i18n/id.ts +130 -0
  168. package/src/tool/thermalExpansionCalculator/i18n/it.ts +130 -0
  169. package/src/tool/thermalExpansionCalculator/i18n/ja.ts +130 -0
  170. package/src/tool/thermalExpansionCalculator/i18n/ko.ts +130 -0
  171. package/src/tool/thermalExpansionCalculator/i18n/nl.ts +130 -0
  172. package/src/tool/thermalExpansionCalculator/i18n/pl.ts +130 -0
  173. package/src/tool/thermalExpansionCalculator/i18n/pt.ts +130 -0
  174. package/src/tool/thermalExpansionCalculator/i18n/ru.ts +130 -0
  175. package/src/tool/thermalExpansionCalculator/i18n/sv.ts +130 -0
  176. package/src/tool/thermalExpansionCalculator/i18n/tr.ts +130 -0
  177. package/src/tool/thermalExpansionCalculator/i18n/zh.ts +130 -0
  178. package/src/tool/thermalExpansionCalculator/index.ts +17 -5
  179. package/src/tool/voltageDropCalculator/i18n/de.ts +112 -0
  180. package/src/tool/voltageDropCalculator/i18n/id.ts +110 -0
  181. package/src/tool/voltageDropCalculator/i18n/it.ts +110 -0
  182. package/src/tool/voltageDropCalculator/i18n/ja.ts +110 -0
  183. package/src/tool/voltageDropCalculator/i18n/ko.ts +110 -0
  184. package/src/tool/voltageDropCalculator/i18n/nl.ts +110 -0
  185. package/src/tool/voltageDropCalculator/i18n/pl.ts +110 -0
  186. package/src/tool/voltageDropCalculator/i18n/pt.ts +110 -0
  187. package/src/tool/voltageDropCalculator/i18n/ru.ts +110 -0
  188. package/src/tool/voltageDropCalculator/i18n/sv.ts +110 -0
  189. package/src/tool/voltageDropCalculator/i18n/tr.ts +110 -0
  190. package/src/tool/voltageDropCalculator/i18n/zh.ts +110 -0
  191. package/src/tool/voltageDropCalculator/index.ts +17 -5
  192. package/src/tools.ts +2 -0
  193. 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 = 'betong-bruk-kalkylator';
6
+ const title = 'Betong och brukskalkylator: Exakta mängder cement, sand och vatten';
7
+ const description =
8
+ 'Beräkna hur många säckar cement, skyfflar sand och liter vatten du behöver per m³. För fundament, plattor, murar och avjämningsmassor.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Hur många 25 kg säckar cement går det på en kubikmeter?',
13
+ answer:
14
+ 'För en standardbetong (hållfasthetsklass C20/25) behövs cirka 14 säckar à 25 kg (350 kg) för att framställa en kubikmeter packad blandning.',
15
+ },
16
+ {
17
+ question: 'Vad är starkast, betong eller bruk?',
18
+ answer:
19
+ 'Betong (med grus) är strukturellt starkare för att bära tunga laster. Bruk (endast sand) är idealiskt för att sammanfoga stenar eller putsa ytor.',
20
+ },
21
+ {
22
+ question: 'Hur många skyfflar är en kubikmeter?',
23
+ answer:
24
+ 'Det beror på skyffelns storlek, men i allmänhet räknar man med 180-200 skyfflar sand per m³. Vår kalkylator översätter m³ till föreslagna skyfflar.',
25
+ },
26
+ {
27
+ question: 'Kan jag blanda för hand utan betongblandare?',
28
+ answer:
29
+ 'Ja, även om det kräver betydligt mer fysisk ansträngning. Det är idealiskt att göra det på en ren och vattentät yta (metallplåt eller ho) för att inte förlora vatten.',
30
+ },
31
+ {
32
+ question: 'Varför spricker betong när den torkar?',
33
+ answer:
34
+ 'Det beror ofta på brist på fukt under härdningen (snabb avdunstning av vatten) eller för mycket vatten i blandningen. Det rekommenderas att vattna betongen de efterföljande dagarna.',
35
+ },
36
+ ];
37
+
38
+ const howToData = [
39
+ {
40
+ name: 'Välj blandningstyp',
41
+ text: 'Välj om du ska göra betong för fundament eller bruk för murar.',
42
+ },
43
+ {
44
+ name: 'Ange volym i m³',
45
+ text: 'Ange den totala volymen. Multiplicera längd x bredd x tjocklek.',
46
+ },
47
+ {
48
+ name: 'Se mängderna',
49
+ text: 'Se hur många säckar, skyfflar och liter du behöver köpa.',
50
+ },
51
+ {
52
+ name: 'Tillämpa proportionerna',
53
+ text: 'Följ den visuella guiden för cement, sand och grus för en perfekt blandning.',
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: 'sv',
89
+ };
90
+
91
+ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
92
+ slug,
93
+ title,
94
+ description,
95
+ faqTitle: 'Vanliga frågor',
96
+ faq: faqData,
97
+ bibliographyTitle: 'Tekniska referenser',
98
+ bibliography: [
99
+ {
100
+ name: 'Boverkets konstruktionsregler (EKS) - Sverige',
101
+ url: 'https://www.boverket.se/',
102
+ },
103
+ {
104
+ name: 'Concrete Mix Proportioning Standards (ASTM)',
105
+ url: 'https://store.astm.org/astm-bos-04.02.html',
106
+ },
107
+ {
108
+ name: 'Guide för dosering av cementbruk',
109
+ url: 'https://sv.wikipedia.org/wiki/Murbruk',
110
+ },
111
+ ],
112
+ howTo: howToData,
113
+ schemas: [faqSchema, howToSchema, appSchema],
114
+ seo: [
115
+ {
116
+ type: 'title',
117
+ text: 'Doseringsguide för betong och bruk',
118
+ level: 2,
119
+ },
120
+ {
121
+ type: 'paragraph',
122
+ html: 'När du står inför en renovering eller ett bygge är en av de vanligaste frågorna <strong>hur många säckar cement behöver jag för en kubikmeter betong?</strong>. Det handlar inte bara om att blanda ingredienser; den slutliga hållfastheten hos konstruktionen beror direkt på precisionen i proportionerna av cement, sand, grus och vatten. Vår kalkylator översätter industriella mått till praktiska enheter: 25 kg säckar, skyfflar och liter.',
123
+ },
124
+ {
125
+ type: 'card',
126
+ icon: 'mdi:water-alert',
127
+ title: 'För mycket vatten försvagar betongen',
128
+ html: '<p>Ett mycket vanligt fel är att tillsätta för mycket vatten för att få betongen att flyta bättre. Överskottsvattnet skapar porer när det avdunstar under härdningen, vilket drastiskt minskar den slutliga hållfastheten. Den ideala konsistensen bör vara som en <strong>tjock pasta, inte flytande</strong>. Använd så lite vatten som möjligt.</p>',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Standardproportioner beroende på användning',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: '<strong>Betongdoseringen</strong> varierar beroende på användningsområde. För <strong>Betong C20/25</strong> (fundament och plattor) är proportionen 1 del cement, 2,5 delar sand och 3 delar grus. För <strong>Murbruk</strong> (murar) är det 1 del cement och 4 delar sand. För <strong>Avjämningsmassa</strong> (golv) är det 1 del cement och 3 delar sand. Betong med grus tål mer belastning; bruk med endast sand är idealiskt för sammanfogning och putsning.',
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: 'Så beräknar du m³ som du behöver',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'card',
146
+ icon: 'mdi:calculator-variant',
147
+ title: 'Beräkningsexempel för en platta',
148
+ html: '<p>För en trädgårdsplatta som är 4 m lång, 3 m bred och 15 cm tjock: <strong>4 × 3 × 0,15 = 1,80 m³</strong>. Vår kalkylator utför denna operation automatiskt om du anger måtten i sektionen "Efter mått".</p><p>Kom alltid ihåg att <strong>köpa 10 % extra</strong> för att kompensera för förluster genom spill eller ojämnheter i marken.</p>',
149
+ },
150
+ {
151
+ type: 'title',
152
+ text: 'Blandningsordning och dosering per säck',
153
+ level: 3,
154
+ },
155
+ {
156
+ type: 'paragraph',
157
+ html: 'På byggarbetsplatser pratar man ofta om en <strong>"300 kilos-blandning"</strong>: 300 kg cement för varje färdig kubikmeter betong. För korrekt blandning i betongblandare: först vattnet, sedan grus och sand (för att lösa upp klumpar), och sist cementen som tillsätts gradvis.',
158
+ },
159
+ {
160
+ type: 'card',
161
+ icon: 'mdi:package-variant-closed',
162
+ title: '10 procents regeln för att inte stå utan material',
163
+ html: '<p>Köp alltid <strong>10 % mer material</strong> än beräknat för att kompensera för spill, ojämnheter i terrängen eller variationer i den faktiska volymen av de fuktiga materialen. Det är mycket billigare än att behöva göra en andra beställning med bygget stående stilla.</p>',
164
+ },
165
+ ],
166
+ ui: {
167
+ mixH200Label: 'Standardbetong',
168
+ mixH200Hint: 'Idealisk för fundament och plattor',
169
+ mixM40Label: 'Murbruk',
170
+ mixM40Hint: 'För murar och skiljeväggar',
171
+ mixM80Label: 'Stark avjämningsmassa',
172
+ mixM80Hint: 'För golv och stark puts',
173
+ modeDimsLabel: 'Efter mått',
174
+ modeDirectLabel: 'Direkta m³',
175
+ labelLength: 'Längd',
176
+ labelWidth: 'Bredd',
177
+ labelThickness: 'Tjocklek',
178
+ labelVolume: 'Total volym (m³)',
179
+ binderCementLabel: 'Cement',
180
+ binderLimeLabel: 'Kalk',
181
+ summaryLabel: 'Totalt att fylla:',
182
+ resUnitSacks: 'Säckar (25kg)',
183
+ resUnitShovels: 'Skyfflar',
184
+ resUnitLitres: 'Liter',
185
+ resLabelCement: 'Portlandcement',
186
+ resLabelLime: 'Hydraulisk kalk',
187
+ resLabelSand: 'Sand / Aggregat',
188
+ resLabelWater: 'Dricksvatten',
189
+ proportionsTitle: 'Proportioner för vald blandning',
190
+ propLabelSand: 'Sand',
191
+ propLabelGravel: 'Grus',
192
+ adviceH200: 'Idealisk för pelare, plattor och bärande strukturer.',
193
+ adviceM40: 'Perfekt för att mura tegel- eller blockväggar.',
194
+ adviceM80: 'Använd detta för mycket tåliga golvytor.',
195
+ adviceLimeH200: 'Kalkbetong är mer flexibel men tar längre tid på sig att härda.',
196
+ priceTotalLabel: 'Uppskattad budget',
197
+ priceSackLabel: 'Säck',
198
+ priceSandLabel: 'Sand (m³)',
199
+ priceDisclaimer: 'Vägledande marknadspriser. Justera efter din lokala leverantör.',
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 = 'beton-harc-hesaplama';
6
+ const title = 'Beton ve Harç Hesaplayıcı: Tam Çimento, Kum ve Su Miktarları';
7
+ const description =
8
+ 'm³ başına kaç torba çimento, kürek kum ve litre su gerektiğini hesaplayın. Temeller, döşemeler, duvarlar ve şaplar için. Teknik dozaj kılavuzu.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Bir metreküpte kaç adet 25 kg\'lık çimento torbası bulunur?',
13
+ answer:
14
+ 'Standart bir beton (C20/25 dayanım sınıfı) için, bir metreküp sıkıştırılmış karışım üretmek için yaklaşık 14 torba 25 kg\'lık çimentoya (350 kg) ihtiyaç vardır.',
15
+ },
16
+ {
17
+ question: 'Beton mu yoksa harç mı daha güçlüdür?',
18
+ answer:
19
+ 'Beton (çakıl içeren), büyük yükleri taşımak için yapısal olarak daha güçlüdür. Harç (sadece kum içeren), parçaları birleştirmek veya yüzeyleri sıvamak için idealdir.',
20
+ },
21
+ {
22
+ question: 'Bir metreküp kaç kürek eder?',
23
+ answer:
24
+ 'Kürek boyutuna bağlıdır ancak genellikle m³ başına 180-200 kürek kum hesaplanır. Hesaplayıcımız m³ değerini önerilen kürek sayısına çevirir.',
25
+ },
26
+ {
27
+ question: 'Betonyer olmadan karışımı elle yapabilir miyim?',
28
+ answer:
29
+ 'Evet, ancak çok daha fazla fiziksel çaba gerektirir. Suyu kaybetmemek için temiz ve su sızdırmaz bir yüzey (metal levha veya harç teknesi) üzerinde yapılması idealdir.',
30
+ },
31
+ {
32
+ question: 'Beton kururken neden çatlar?',
33
+ answer:
34
+ 'Genellikle sertleşme sırasında nem eksikliğinden (suyun hızlı buharlaşması) veya karışımdaki aşırı sudan kaynaklanır. Sonraki günlerde betonun sulanması önerilir.',
35
+ },
36
+ ];
37
+
38
+ const howToData = [
39
+ {
40
+ name: 'Karışım Tipini Seçin',
41
+ text: 'Temeller için beton mu yoksa duvarlar için harç mı yapacağınızı seçin.',
42
+ },
43
+ {
44
+ name: 'm³ Cinsinden Hacmi Belirleyin',
45
+ text: 'Toplam hacmi girin. Boy x en x kalınlık değerlerini çarpın.',
46
+ },
47
+ {
48
+ name: 'Miktarları İnceleyin',
49
+ text: 'Kaç torba, kürek ve litre satın almanız gerektiğini görün.',
50
+ },
51
+ {
52
+ name: 'Oranları Uygulayın',
53
+ text: 'Mükemmel bir karışım için çimento, kum ve çakıl görsel kılavuzunu izleyin.',
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: 'tr',
89
+ };
90
+
91
+ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
92
+ slug,
93
+ title,
94
+ description,
95
+ faqTitle: 'Sıkça Sorulan Sorular',
96
+ faq: faqData,
97
+ bibliographyTitle: 'Teknik Referanslar',
98
+ bibliography: [
99
+ {
100
+ name: 'TS EN 206 - Beton - Özellik, performans, imalat ve uygunluk',
101
+ url: 'https://www.tse.org.tr/',
102
+ },
103
+ {
104
+ name: 'Concrete Mix Proportioning Standards (ASTM)',
105
+ url: 'https://store.astm.org/astm-bos-04.02.html',
106
+ },
107
+ {
108
+ name: 'Çimento Harçları Dozaj Kılavuzu',
109
+ url: 'https://tr.wikipedia.org/wiki/Har%C3%A7_(in%C5%9Faat)',
110
+ },
111
+ ],
112
+ howTo: howToData,
113
+ schemas: [faqSchema, howToSchema, appSchema],
114
+ seo: [
115
+ {
116
+ type: 'title',
117
+ text: 'Beton ve Harç İçin Dozaj Kılavuzu',
118
+ level: 2,
119
+ },
120
+ {
121
+ type: 'paragraph',
122
+ html: 'Bir tadilat veya inşaatla karşılaştığınızda en sık sorulan sorulardan biri şudur: <strong>Bir metreküp beton için kaç torba çimentoya ihtiyacım var?</strong>. Bu sadece malzemeleri karıştırmak değildir; yapının nihai dayanımı, çimento, kum, çakıl ve su oranlarındaki hassasiyete doğrudan bağlıdır. Hesaplayıcımız, endüstriyel ölçüleri şantiye birimlerine çevirir: 25 kg\'lık torbalar, kürekler ve litreler.',
123
+ },
124
+ {
125
+ type: 'card',
126
+ icon: 'mdi:water-alert',
127
+ title: 'Aşırı Su Betonu Zayıflatır',
128
+ html: '<p>Çok yaygın bir hata, betonun daha iyi akması için çok fazla su eklemektir. Aşırı su, sertleşme sırasında buharlaşırken gözenekler oluşturarak nihai dayanımı önemli ölçüde azaltır. İdeal kıvam <strong>sıvı değil, koyu bir macun</strong> gibi olmalıdır. Mümkün olduğunca az su kullanın.</p>',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Kullanıma Göre Standart Oranlar',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: '<strong>Beton dozajı</strong> kullanıma göre değişir. <strong>C20/25 Beton</strong> (temeller ve döşemeler) için oran 1 ölçek çimento, 2.5 ölçek kum ve 3 ölçek çakıldır. <strong>Duvar Harcı</strong> için 1 ölçek çimento ve 4 ölçek kumdur. <strong>Zemin Şapı</strong> için 1 ölçek çimento ve 3 ölçek kumdur. Çakıllı beton daha fazla yük taşır; sadece kumlu harç ise birleştirme ve sıva için idealdir.',
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: 'İhtiyacınız Olan m³ Nasıl Hesaplanır?',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'card',
146
+ icon: 'mdi:calculator-variant',
147
+ title: 'Bir Döşeme İçin Hesaplama Örneği',
148
+ html: '<p>4m uzunluğunda, 3m genişliğinde ve 15cm kalınlığında bir bahçe döşemesi için: <strong>4 × 3 × 0.15 = 1.80 m³</strong>. Hesaplayıcımız, "Ölçülere Göre" bölümünde boyutları girdiğinizde bu işlemi otomatik olarak gerçekleştirir.</p><p>Dökülme kayıplarını veya zemin farklarını telafi etmek için her zaman <strong>%10 ek malzeme almayı</strong> unutmayın.</p>',
149
+ },
150
+ {
151
+ type: 'title',
152
+ text: 'Karıştırma Sırası ve Torba Başına Dozaj',
153
+ level: 3,
154
+ },
155
+ {
156
+ type: 'paragraph',
157
+ html: 'Şantiyelerde genellikle <strong>"300 dozlu karışım"</strong> terimi kullanılır: Her metreküp bitmiş beton için 300 kg çimento. Mikserde doğru karıştırma için: önce su, sonra çakıl ve kum (topakları dağıtmak için) ve son olarak kademeli olarak çimento eklenir.',
158
+ },
159
+ {
160
+ type: 'card',
161
+ icon: 'mdi:package-variant-closed',
162
+ title: 'Malzemesiz Kalmamak İçin %10 Kuralı',
163
+ html: '<p>Dökülme kayıplarını, zemin düzensizliklerini veya nemli agregaların gerçek hacim varyasyonlarını telafi etmek için her zaman hesaplanandan <strong>%10 daha fazla malzeme</strong> satın alın. İş durmuşken ikinci bir sipariş vermekten çok daha ucuzdur.</p>',
164
+ },
165
+ ],
166
+ ui: {
167
+ mixH200Label: 'Standart Beton',
168
+ mixH200Hint: 'Temeller ve döşemeler için ideal',
169
+ mixM40Label: 'Duvar Harcı',
170
+ mixM40Hint: 'Duvarlar ve bölmeler için',
171
+ mixM80Label: 'Güçlü Şap',
172
+ mixM80Hint: 'Zeminler ve güçlü sıvalar için',
173
+ modeDimsLabel: 'Ölçülere Göre',
174
+ modeDirectLabel: 'Doğrudan m³',
175
+ labelLength: 'Boy',
176
+ labelWidth: 'En',
177
+ labelThickness: 'Kalınlık',
178
+ labelVolume: 'Toplam Hacim (m³)',
179
+ binderCementLabel: 'Çimento',
180
+ binderLimeLabel: 'Kireç',
181
+ summaryLabel: 'Doldurulacak toplam alan:',
182
+ resUnitSacks: 'Torba (25kg)',
183
+ resUnitShovels: 'Kürek',
184
+ resUnitLitres: 'Litre',
185
+ resLabelCement: 'Portland Çimento',
186
+ resLabelLime: 'Hidrolik Kireç',
187
+ resLabelSand: 'Kum / Agrega',
188
+ resLabelWater: 'İçme Suyu',
189
+ proportionsTitle: 'Seçilen Karışımın Oranları',
190
+ propLabelSand: 'Kum',
191
+ propLabelGravel: 'Çakıl',
192
+ adviceH200: 'Sütunlar, döşemeler ve yük taşıyan yapılar için idealdir.',
193
+ adviceM40: 'Tuğla veya bims duvarlar örmek için mükemmeldir.',
194
+ adviceM80: 'Bunu çok dayanıklı zemin şapları için kullanın.',
195
+ adviceLimeH200: 'Kireç betonu daha esnektir ancak priz alması daha uzun sürer.',
196
+ priceTotalLabel: 'Tahmini Bütçe',
197
+ priceSackLabel: 'Torba',
198
+ priceSandLabel: 'Kum (m³)',
199
+ priceDisclaimer: 'Referans piyasa fiyatlarıdır. Yerel tedarikçinize göre ayarlayın.',
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 = 'concrete-mortar-calculator';
6
+ const title = '混凝土与砂浆计算器:水泥、沙子和水的精确用量';
7
+ const description =
8
+ '计算每立方米所需的水泥袋数、沙铲数和升水。适用于地基、地坪、墙体和找平层。技术配比指南。';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '一立方米混凝土需要多少袋25公斤的水泥?',
13
+ answer:
14
+ '对于标准混凝土(强度等级约 C20/25),制作一立方米密实混合料约需14袋25公斤的水泥(总计350公斤)。',
15
+ },
16
+ {
17
+ question: '混凝土和砂浆哪个更强?',
18
+ answer:
19
+ '含有砂石(碎石)的「混凝土」在结构上更强,能承受巨大载荷。仅含沙子的「砂浆」则非常适合砌筑砖块或表面抹灰。',
20
+ },
21
+ {
22
+ question: '一立方米相当于多少铲沙子?',
23
+ answer:
24
+ '这取决于铁铲的大小,但通常按每立方米180-200铲沙子计算。我们的计算器会将立方米换算为建议的小铁铲数。',
25
+ },
26
+ {
27
+ question: '没有搅拌机可以人工手动搅拌吗?',
28
+ answer:
29
+ '可以,但这需要非常大的体力。理想做法是在清洁且不透水的表面(铁板或灰槽)上进行,以防止水分流失。',
30
+ },
31
+ {
32
+ question: '为什么混凝土干燥时会开裂?',
33
+ answer:
34
+ '通常是由于硬化期间缺乏湿度(水分蒸发过快)或拌合时水灰比过大(水太多)。建议在施工后的几天内进行洒水养护。',
35
+ },
36
+ ];
37
+
38
+ const howToData = [
39
+ {
40
+ name: '选择混合类型',
41
+ text: '选择您是要制作地基用的混凝土,还是砌墙用的砂浆。',
42
+ },
43
+ {
44
+ name: '指定体积 (m³)',
45
+ text: '输入总体积。计算公式:长 × 宽 × 厚。',
46
+ },
47
+ {
48
+ name: '查阅用量',
49
+ text: '查看需要购买的水泥袋数、沙铲数和水升数。',
50
+ },
51
+ {
52
+ name: '应用配比',
53
+ text: '遵循水泥、沙子和碎石的视觉指南进行完美配比。',
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: 'zh',
89
+ };
90
+
91
+ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
92
+ slug,
93
+ title,
94
+ description,
95
+ faqTitle: '常见问题',
96
+ faq: faqData,
97
+ bibliographyTitle: '技术参考',
98
+ bibliography: [
99
+ {
100
+ name: 'GB 50204-2015 混凝土结构工程施工质量验收规范 (中国)',
101
+ url: 'http://www.mohurd.gov.cn/',
102
+ },
103
+ {
104
+ name: 'Concrete Mix Proportioning Standards (ASTM)',
105
+ url: 'https://store.astm.org/astm-bos-04.02.html',
106
+ },
107
+ {
108
+ name: '水泥砂浆配比百科',
109
+ url: 'https://zh.wikipedia.org/wiki/砂浆',
110
+ },
111
+ ],
112
+ howTo: howToData,
113
+ schemas: [faqSchema, howToSchema, appSchema],
114
+ seo: [
115
+ {
116
+ type: 'title',
117
+ text: '混凝土与砂浆配比指南',
118
+ level: 2,
119
+ },
120
+ {
121
+ type: 'paragraph',
122
+ html: '在装修或施工时,最常遇到的问题之一就是<strong>一立方米混凝土需要多少袋水泥?</strong>。这不仅仅是混合材料那么简单;结构的最终强度直接取决于水泥、沙子、碎石和水的精确比例。我们的计算器将工业标准测量值转换为工地常用的单位:25公斤袋、铁铲数和升。',
123
+ },
124
+ {
125
+ type: 'card',
126
+ icon: 'mdi:water-alert',
127
+ title: '水分过多会削弱混凝土强度',
128
+ html: '<p>一个非常常见的错误是为了让混凝土流动性更好而添加过多的水。多余的水在硬化蒸发时会产生孔隙,从而剧烈降低最终强度。理想的稠度应当像<strong>粘稠的糊状,而不是液体</strong>。请尽可能少用水。</p>',
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: '根据用途的标注配比',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'paragraph',
137
+ html: '<strong>混凝土配比</strong>因用途而异。对于<strong>标准混凝土</strong>(地基和地坪),比例为 1份水泥、2.5份沙子、3份碎石。对于<strong>砌筑砂浆</strong>(墙体),比例为 1份水泥和4份沙子。对于<strong>强力找平砂浆</strong>(地面),比例为 1份水泥和3份沙子。含碎石的混凝土承重能力更强;纯沙的砂浆则非常适合粘结和抹灰。',
138
+ },
139
+ {
140
+ type: 'title',
141
+ text: '如何计算所需的立方数 (m³)',
142
+ level: 3,
143
+ },
144
+ {
145
+ type: 'card',
146
+ icon: 'mdi:calculator-variant',
147
+ title: '地坪计算示例',
148
+ html: '<p>对于一个长4米、宽3米、厚15厘米的花园地坪:<strong>4 × 3 × 0.15 = 1.80 m³</strong>。如果您在「按尺寸计算」部分输入相关数值,计算器将自动完成此操作。</p><p>请记住始终<strong>多购买10%</strong>的材料,以弥补泼洒损失或地形不平带来的差额。</p>',
149
+ },
150
+ {
151
+ type: 'title',
152
+ text: '搅拌顺序与按袋配比',
153
+ level: 3,
154
+ },
155
+ {
156
+ type: 'paragraph',
157
+ html: '工地上常说<strong>「300公斤配合比」</strong>:即每立方米成品混凝土含300公斤水泥。在搅拌机中的正确顺序是:先放水,随后放碎石和沙子(以打散团块),最后逐渐加入水泥。',
158
+ },
159
+ {
160
+ type: 'card',
161
+ icon: 'mdi:package-variant-closed',
162
+ title: '防止料不够的10%原则',
163
+ html: '<p>请始终购买比计算值<strong>多10%的材料</strong>,以抵消遗洒损失、地形不规则或潮湿骨材实际体积的变化。这比施工停滞时再补订第二次要划算得多。</p>',
164
+ },
165
+ ],
166
+ ui: {
167
+ mixH200Label: '标准混凝土',
168
+ mixH200Hint: '适用于地基和地坪',
169
+ mixM40Label: '建筑砌筑砂浆',
170
+ mixM40Hint: '适用于墙体和隔断',
171
+ mixM80Label: '强力找平层',
172
+ mixM80Hint: '适用于地面和强力抹灰',
173
+ modeDimsLabel: '按尺寸计算',
174
+ modeDirectLabel: '直填 m³',
175
+ labelLength: '长度',
176
+ labelWidth: '宽度',
177
+ labelThickness: '厚度',
178
+ labelVolume: '总体积 (m³)',
179
+ binderCementLabel: '水泥',
180
+ binderLimeLabel: '石灰',
181
+ summaryLabel: '填补总量:',
182
+ resUnitSacks: '袋 (25kg)',
183
+ resUnitShovels: '铲',
184
+ resUnitLitres: '升',
185
+ resLabelCement: '波特兰水泥',
186
+ resLabelLime: '水硬性石灰',
187
+ resLabelSand: '沙子 / 骨料',
188
+ resLabelWater: '饮用水',
189
+ proportionsTitle: '选中混合类型的配比',
190
+ propLabelSand: '沙子',
191
+ propLabelGravel: '碎石/砂石',
192
+ adviceH200: '适用于支柱、地坪和承重结构。',
193
+ adviceM40: '非常适合砌筑砖墙或砌块墙。',
194
+ adviceM80: '用于高耐受性的地面找平层。',
195
+ adviceLimeH200: '石灰混凝土更具韧性,但硬化时间较长。',
196
+ priceTotalLabel: '估计预算',
197
+ priceSackLabel: '每袋单价',
198
+ priceSandLabel: '沙子 (m³)',
199
+ priceDisclaimer: '参考市场价格。请根据当地供应商进行调整。',
200
+ },
201
+ };
@@ -10,14 +10,26 @@ export {
10
10
  ConcreteCalculatorBibliography,
11
11
  };
12
12
 
13
- const es = async () => (await import('./i18n/es')).content;
14
- const en = async () => (await import('./i18n/en')).content;
15
- const fr = async () => (await import('./i18n/fr')).content;
16
-
17
13
  export const concreteCalculator: DiyToolEntry<ConcreteCalculatorUI> = {
18
14
  id: 'concrete-calculator',
19
15
  icons: { bg: 'mdi:bucket-outline', fg: 'mdi:shovel' },
20
- i18n: { es, en, fr },
16
+ i18n: {
17
+ de: () => import('./i18n/de').then((m) => m.content),
18
+ en: () => import('./i18n/en').then((m) => m.content),
19
+ es: () => import('./i18n/es').then((m) => m.content),
20
+ fr: () => import('./i18n/fr').then((m) => m.content),
21
+ id: () => import('./i18n/id').then((m) => m.content),
22
+ it: () => import('./i18n/it').then((m) => m.content),
23
+ ja: () => import('./i18n/ja').then((m) => m.content),
24
+ ko: () => import('./i18n/ko').then((m) => m.content),
25
+ nl: () => import('./i18n/nl').then((m) => m.content),
26
+ pl: () => import('./i18n/pl').then((m) => m.content),
27
+ pt: () => import('./i18n/pt').then((m) => m.content),
28
+ ru: () => import('./i18n/ru').then((m) => m.content),
29
+ sv: () => import('./i18n/sv').then((m) => m.content),
30
+ tr: () => import('./i18n/tr').then((m) => m.content),
31
+ zh: () => import('./i18n/zh').then((m) => m.content),
32
+ },
21
33
  };
22
34
 
23
35
  export const CONCRETE_CALCULATOR_TOOL: ToolDefinition = {