@jjlmoya/utils-diy 1.28.0 → 1.29.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 (303) hide show
  1. package/package.json +2 -2
  2. package/src/category/i18n/de.ts +12 -12
  3. package/src/category/i18n/en.ts +110 -110
  4. package/src/category/i18n/es.ts +110 -110
  5. package/src/category/i18n/fr.ts +101 -101
  6. package/src/category/i18n/id.ts +12 -12
  7. package/src/category/i18n/it.ts +12 -12
  8. package/src/category/i18n/ja.ts +12 -12
  9. package/src/category/i18n/ko.ts +12 -12
  10. package/src/category/i18n/nl.ts +12 -12
  11. package/src/category/i18n/pl.ts +12 -12
  12. package/src/category/i18n/pt.ts +12 -12
  13. package/src/category/i18n/ru.ts +12 -12
  14. package/src/category/i18n/sv.ts +12 -12
  15. package/src/category/i18n/tr.ts +12 -12
  16. package/src/category/i18n/zh.ts +12 -12
  17. package/src/category/index.ts +36 -36
  18. package/src/category/seo.astro +1 -1
  19. package/src/components/PreviewNavSidebar.astro +1 -1
  20. package/src/components/PreviewToolbar.astro +1 -1
  21. package/src/data.ts +1 -1
  22. package/src/entries.ts +37 -37
  23. package/src/env.d.ts +1 -1
  24. package/src/index.ts +50 -50
  25. package/src/layouts/PreviewLayout.astro +1 -1
  26. package/src/pages/index.astro +1 -1
  27. package/src/tests/category_seo_quality.test.ts +74 -0
  28. package/src/tests/faq_count.test.ts +1 -1
  29. package/src/tests/mocks/astro_mock.js +1 -1
  30. package/src/tests/no_h1_in_components.test.ts +1 -1
  31. package/src/tests/seo_length.test.ts +1 -1
  32. package/src/tests/seo_parity.test.ts +2 -2
  33. package/src/tests/tool_validation.test.ts +15 -15
  34. package/src/tool/balusterCalculator/bibliography.ts +16 -16
  35. package/src/tool/balusterCalculator/i18n/de.ts +251 -251
  36. package/src/tool/balusterCalculator/i18n/en.ts +251 -251
  37. package/src/tool/balusterCalculator/i18n/es.ts +251 -251
  38. package/src/tool/balusterCalculator/i18n/fr.ts +251 -251
  39. package/src/tool/balusterCalculator/i18n/id.ts +251 -251
  40. package/src/tool/balusterCalculator/i18n/it.ts +251 -251
  41. package/src/tool/balusterCalculator/i18n/ja.ts +251 -251
  42. package/src/tool/balusterCalculator/i18n/ko.ts +251 -251
  43. package/src/tool/balusterCalculator/i18n/nl.ts +251 -251
  44. package/src/tool/balusterCalculator/i18n/pl.ts +251 -251
  45. package/src/tool/balusterCalculator/i18n/pt.ts +251 -251
  46. package/src/tool/balusterCalculator/i18n/ru.ts +251 -251
  47. package/src/tool/balusterCalculator/i18n/sv.ts +251 -251
  48. package/src/tool/balusterCalculator/i18n/tr.ts +251 -251
  49. package/src/tool/balusterCalculator/i18n/zh.ts +251 -251
  50. package/src/tool/balusterCalculator/seo.astro +15 -15
  51. package/src/tool/clayCalculator/bibliography.ts +12 -12
  52. package/src/tool/clayCalculator/i18n/de.ts +174 -174
  53. package/src/tool/clayCalculator/i18n/en.ts +174 -174
  54. package/src/tool/clayCalculator/i18n/es.ts +174 -174
  55. package/src/tool/clayCalculator/i18n/fr.ts +174 -174
  56. package/src/tool/clayCalculator/i18n/id.ts +174 -174
  57. package/src/tool/clayCalculator/i18n/it.ts +174 -174
  58. package/src/tool/clayCalculator/i18n/ja.ts +173 -173
  59. package/src/tool/clayCalculator/i18n/ko.ts +174 -174
  60. package/src/tool/clayCalculator/i18n/nl.ts +174 -174
  61. package/src/tool/clayCalculator/i18n/pl.ts +174 -174
  62. package/src/tool/clayCalculator/i18n/pt.ts +174 -174
  63. package/src/tool/clayCalculator/i18n/ru.ts +174 -174
  64. package/src/tool/clayCalculator/i18n/sv.ts +174 -174
  65. package/src/tool/clayCalculator/i18n/tr.ts +174 -174
  66. package/src/tool/clayCalculator/i18n/zh.ts +174 -174
  67. package/src/tool/clayCalculator/seo.astro +15 -15
  68. package/src/tool/concreteCalculator/bibliography.ts +7 -7
  69. package/src/tool/concreteCalculator/i18n/de.ts +188 -188
  70. package/src/tool/concreteCalculator/i18n/en.ts +188 -188
  71. package/src/tool/concreteCalculator/i18n/es.ts +188 -188
  72. package/src/tool/concreteCalculator/i18n/fr.ts +188 -188
  73. package/src/tool/concreteCalculator/i18n/id.ts +188 -188
  74. package/src/tool/concreteCalculator/i18n/it.ts +188 -188
  75. package/src/tool/concreteCalculator/i18n/ja.ts +188 -188
  76. package/src/tool/concreteCalculator/i18n/ko.ts +188 -188
  77. package/src/tool/concreteCalculator/i18n/nl.ts +188 -188
  78. package/src/tool/concreteCalculator/i18n/pl.ts +188 -188
  79. package/src/tool/concreteCalculator/i18n/pt.ts +188 -188
  80. package/src/tool/concreteCalculator/i18n/ru.ts +188 -188
  81. package/src/tool/concreteCalculator/i18n/sv.ts +188 -188
  82. package/src/tool/concreteCalculator/i18n/tr.ts +188 -188
  83. package/src/tool/concreteCalculator/i18n/zh.ts +188 -188
  84. package/src/tool/concreteCalculator/seo.astro +15 -15
  85. package/src/tool/cutOptimizer/bibliography.ts +12 -12
  86. package/src/tool/cutOptimizer/i18n/de.ts +169 -169
  87. package/src/tool/cutOptimizer/i18n/en.ts +169 -169
  88. package/src/tool/cutOptimizer/i18n/es.ts +169 -169
  89. package/src/tool/cutOptimizer/i18n/fr.ts +169 -169
  90. package/src/tool/cutOptimizer/i18n/id.ts +169 -169
  91. package/src/tool/cutOptimizer/i18n/it.ts +169 -169
  92. package/src/tool/cutOptimizer/i18n/ja.ts +169 -169
  93. package/src/tool/cutOptimizer/i18n/ko.ts +169 -169
  94. package/src/tool/cutOptimizer/i18n/nl.ts +169 -169
  95. package/src/tool/cutOptimizer/i18n/pl.ts +169 -169
  96. package/src/tool/cutOptimizer/i18n/pt.ts +169 -169
  97. package/src/tool/cutOptimizer/i18n/ru.ts +169 -169
  98. package/src/tool/cutOptimizer/i18n/sv.ts +169 -169
  99. package/src/tool/cutOptimizer/i18n/tr.ts +169 -169
  100. package/src/tool/cutOptimizer/i18n/zh.ts +169 -169
  101. package/src/tool/cutOptimizer/seo.astro +15 -15
  102. package/src/tool/drillCalculator/bibliography.ts +12 -12
  103. package/src/tool/drillCalculator/i18n/de.ts +134 -134
  104. package/src/tool/drillCalculator/i18n/en.ts +134 -134
  105. package/src/tool/drillCalculator/i18n/es.ts +134 -134
  106. package/src/tool/drillCalculator/i18n/fr.ts +134 -134
  107. package/src/tool/drillCalculator/i18n/id.ts +134 -134
  108. package/src/tool/drillCalculator/i18n/it.ts +134 -134
  109. package/src/tool/drillCalculator/i18n/ja.ts +134 -134
  110. package/src/tool/drillCalculator/i18n/ko.ts +134 -134
  111. package/src/tool/drillCalculator/i18n/nl.ts +134 -134
  112. package/src/tool/drillCalculator/i18n/pl.ts +134 -134
  113. package/src/tool/drillCalculator/i18n/pt.ts +134 -134
  114. package/src/tool/drillCalculator/i18n/ru.ts +134 -134
  115. package/src/tool/drillCalculator/i18n/sv.ts +134 -134
  116. package/src/tool/drillCalculator/i18n/tr.ts +134 -134
  117. package/src/tool/drillCalculator/i18n/zh.ts +134 -134
  118. package/src/tool/drillCalculator/seo.astro +15 -15
  119. package/src/tool/drillSharpener/bibliography.ts +16 -16
  120. package/src/tool/drillSharpener/i18n/de.ts +117 -117
  121. package/src/tool/drillSharpener/i18n/en.ts +117 -117
  122. package/src/tool/drillSharpener/i18n/es.ts +117 -117
  123. package/src/tool/drillSharpener/i18n/fr.ts +117 -117
  124. package/src/tool/drillSharpener/i18n/id.ts +117 -117
  125. package/src/tool/drillSharpener/i18n/it.ts +117 -117
  126. package/src/tool/drillSharpener/i18n/ja.ts +117 -117
  127. package/src/tool/drillSharpener/i18n/ko.ts +117 -117
  128. package/src/tool/drillSharpener/i18n/nl.ts +117 -117
  129. package/src/tool/drillSharpener/i18n/pl.ts +117 -117
  130. package/src/tool/drillSharpener/i18n/pt.ts +117 -117
  131. package/src/tool/drillSharpener/i18n/ru.ts +117 -117
  132. package/src/tool/drillSharpener/i18n/sv.ts +117 -117
  133. package/src/tool/drillSharpener/i18n/tr.ts +117 -117
  134. package/src/tool/drillSharpener/i18n/zh.ts +117 -117
  135. package/src/tool/drillSharpener/seo.astro +15 -15
  136. package/src/tool/epoxyCalculator/bibliography.ts +20 -20
  137. package/src/tool/epoxyCalculator/i18n/de.ts +116 -116
  138. package/src/tool/epoxyCalculator/i18n/en.ts +178 -178
  139. package/src/tool/epoxyCalculator/i18n/es.ts +178 -178
  140. package/src/tool/epoxyCalculator/i18n/fr.ts +178 -178
  141. package/src/tool/epoxyCalculator/i18n/id.ts +116 -116
  142. package/src/tool/epoxyCalculator/i18n/it.ts +116 -116
  143. package/src/tool/epoxyCalculator/i18n/ja.ts +116 -116
  144. package/src/tool/epoxyCalculator/i18n/ko.ts +116 -116
  145. package/src/tool/epoxyCalculator/i18n/nl.ts +116 -116
  146. package/src/tool/epoxyCalculator/i18n/pl.ts +116 -116
  147. package/src/tool/epoxyCalculator/i18n/pt.ts +116 -116
  148. package/src/tool/epoxyCalculator/i18n/ru.ts +116 -116
  149. package/src/tool/epoxyCalculator/i18n/sv.ts +116 -116
  150. package/src/tool/epoxyCalculator/i18n/tr.ts +116 -116
  151. package/src/tool/epoxyCalculator/i18n/zh.ts +116 -116
  152. package/src/tool/epoxyCalculator/seo.astro +15 -15
  153. package/src/tool/furnitureFit/bibliography.ts +12 -12
  154. package/src/tool/furnitureFit/i18n/de.ts +111 -111
  155. package/src/tool/furnitureFit/i18n/en.ts +149 -149
  156. package/src/tool/furnitureFit/i18n/es.ts +149 -149
  157. package/src/tool/furnitureFit/i18n/fr.ts +149 -149
  158. package/src/tool/furnitureFit/i18n/id.ts +111 -111
  159. package/src/tool/furnitureFit/i18n/it.ts +111 -111
  160. package/src/tool/furnitureFit/i18n/ja.ts +111 -111
  161. package/src/tool/furnitureFit/i18n/ko.ts +111 -111
  162. package/src/tool/furnitureFit/i18n/nl.ts +111 -111
  163. package/src/tool/furnitureFit/i18n/pl.ts +111 -111
  164. package/src/tool/furnitureFit/i18n/pt.ts +111 -111
  165. package/src/tool/furnitureFit/i18n/ru.ts +111 -111
  166. package/src/tool/furnitureFit/i18n/sv.ts +111 -111
  167. package/src/tool/furnitureFit/i18n/tr.ts +111 -111
  168. package/src/tool/furnitureFit/i18n/zh.ts +111 -111
  169. package/src/tool/furnitureFit/seo.astro +15 -15
  170. package/src/tool/mortarCalculator/bibliography.ts +20 -20
  171. package/src/tool/mortarCalculator/i18n/de.ts +130 -130
  172. package/src/tool/mortarCalculator/i18n/en.ts +202 -202
  173. package/src/tool/mortarCalculator/i18n/es.ts +179 -179
  174. package/src/tool/mortarCalculator/i18n/fr.ts +203 -203
  175. package/src/tool/mortarCalculator/i18n/id.ts +130 -130
  176. package/src/tool/mortarCalculator/i18n/it.ts +130 -130
  177. package/src/tool/mortarCalculator/i18n/ja.ts +130 -130
  178. package/src/tool/mortarCalculator/i18n/ko.ts +130 -130
  179. package/src/tool/mortarCalculator/i18n/nl.ts +130 -130
  180. package/src/tool/mortarCalculator/i18n/pl.ts +130 -130
  181. package/src/tool/mortarCalculator/i18n/pt.ts +130 -130
  182. package/src/tool/mortarCalculator/i18n/ru.ts +130 -130
  183. package/src/tool/mortarCalculator/i18n/sv.ts +130 -130
  184. package/src/tool/mortarCalculator/i18n/tr.ts +130 -130
  185. package/src/tool/mortarCalculator/i18n/zh.ts +130 -130
  186. package/src/tool/mortarCalculator/seo.astro +15 -15
  187. package/src/tool/passepartoutCalculator/bibliography.ts +16 -16
  188. package/src/tool/passepartoutCalculator/i18n/de.ts +108 -108
  189. package/src/tool/passepartoutCalculator/i18n/en.ts +165 -165
  190. package/src/tool/passepartoutCalculator/i18n/es.ts +165 -165
  191. package/src/tool/passepartoutCalculator/i18n/fr.ts +165 -165
  192. package/src/tool/passepartoutCalculator/i18n/id.ts +108 -108
  193. package/src/tool/passepartoutCalculator/i18n/it.ts +108 -108
  194. package/src/tool/passepartoutCalculator/i18n/ja.ts +108 -108
  195. package/src/tool/passepartoutCalculator/i18n/ko.ts +108 -108
  196. package/src/tool/passepartoutCalculator/i18n/nl.ts +108 -108
  197. package/src/tool/passepartoutCalculator/i18n/pl.ts +108 -108
  198. package/src/tool/passepartoutCalculator/i18n/pt.ts +108 -108
  199. package/src/tool/passepartoutCalculator/i18n/ru.ts +108 -108
  200. package/src/tool/passepartoutCalculator/i18n/sv.ts +108 -108
  201. package/src/tool/passepartoutCalculator/i18n/tr.ts +108 -108
  202. package/src/tool/passepartoutCalculator/i18n/zh.ts +108 -108
  203. package/src/tool/passepartoutCalculator/seo.astro +15 -15
  204. package/src/tool/pythagoreanRightAngleCalculator/bibliography.ts +12 -12
  205. package/src/tool/pythagoreanRightAngleCalculator/i18n/de.ts +129 -129
  206. package/src/tool/pythagoreanRightAngleCalculator/i18n/en.ts +129 -129
  207. package/src/tool/pythagoreanRightAngleCalculator/i18n/es.ts +129 -129
  208. package/src/tool/pythagoreanRightAngleCalculator/i18n/fr.ts +129 -129
  209. package/src/tool/pythagoreanRightAngleCalculator/i18n/id.ts +129 -129
  210. package/src/tool/pythagoreanRightAngleCalculator/i18n/it.ts +129 -129
  211. package/src/tool/pythagoreanRightAngleCalculator/i18n/ja.ts +129 -129
  212. package/src/tool/pythagoreanRightAngleCalculator/i18n/ko.ts +129 -129
  213. package/src/tool/pythagoreanRightAngleCalculator/i18n/nl.ts +129 -129
  214. package/src/tool/pythagoreanRightAngleCalculator/i18n/pl.ts +129 -129
  215. package/src/tool/pythagoreanRightAngleCalculator/i18n/pt.ts +129 -129
  216. package/src/tool/pythagoreanRightAngleCalculator/i18n/ru.ts +129 -129
  217. package/src/tool/pythagoreanRightAngleCalculator/i18n/sv.ts +129 -129
  218. package/src/tool/pythagoreanRightAngleCalculator/i18n/tr.ts +129 -129
  219. package/src/tool/pythagoreanRightAngleCalculator/i18n/zh.ts +129 -129
  220. package/src/tool/stairCalculator/bibliography.ts +16 -16
  221. package/src/tool/stairCalculator/i18n/de.ts +143 -143
  222. package/src/tool/stairCalculator/i18n/en.ts +145 -145
  223. package/src/tool/stairCalculator/i18n/es.ts +145 -145
  224. package/src/tool/stairCalculator/i18n/fr.ts +145 -145
  225. package/src/tool/stairCalculator/i18n/id.ts +143 -143
  226. package/src/tool/stairCalculator/i18n/it.ts +143 -143
  227. package/src/tool/stairCalculator/i18n/ja.ts +143 -143
  228. package/src/tool/stairCalculator/i18n/ko.ts +143 -143
  229. package/src/tool/stairCalculator/i18n/nl.ts +143 -143
  230. package/src/tool/stairCalculator/i18n/pl.ts +143 -143
  231. package/src/tool/stairCalculator/i18n/pt.ts +143 -143
  232. package/src/tool/stairCalculator/i18n/ru.ts +143 -143
  233. package/src/tool/stairCalculator/i18n/sv.ts +143 -143
  234. package/src/tool/stairCalculator/i18n/tr.ts +143 -143
  235. package/src/tool/stairCalculator/i18n/zh.ts +143 -143
  236. package/src/tool/stairCalculator/seo.astro +15 -15
  237. package/src/tool/thermalExpansionCalculator/bibliography.ts +16 -16
  238. package/src/tool/thermalExpansionCalculator/i18n/de.ts +132 -132
  239. package/src/tool/thermalExpansionCalculator/i18n/en.ts +170 -170
  240. package/src/tool/thermalExpansionCalculator/i18n/es.ts +170 -170
  241. package/src/tool/thermalExpansionCalculator/i18n/fr.ts +170 -170
  242. package/src/tool/thermalExpansionCalculator/i18n/id.ts +132 -132
  243. package/src/tool/thermalExpansionCalculator/i18n/it.ts +132 -132
  244. package/src/tool/thermalExpansionCalculator/i18n/ja.ts +132 -132
  245. package/src/tool/thermalExpansionCalculator/i18n/ko.ts +132 -132
  246. package/src/tool/thermalExpansionCalculator/i18n/nl.ts +132 -132
  247. package/src/tool/thermalExpansionCalculator/i18n/pl.ts +132 -132
  248. package/src/tool/thermalExpansionCalculator/i18n/pt.ts +132 -132
  249. package/src/tool/thermalExpansionCalculator/i18n/ru.ts +132 -132
  250. package/src/tool/thermalExpansionCalculator/i18n/sv.ts +132 -132
  251. package/src/tool/thermalExpansionCalculator/i18n/tr.ts +132 -132
  252. package/src/tool/thermalExpansionCalculator/i18n/zh.ts +132 -132
  253. package/src/tool/thermalExpansionCalculator/seo.astro +15 -15
  254. package/src/tool/twoStrokeMixtureCalculator/bibliography.ts +12 -12
  255. package/src/tool/twoStrokeMixtureCalculator/i18n/de.ts +194 -194
  256. package/src/tool/twoStrokeMixtureCalculator/i18n/en.ts +194 -194
  257. package/src/tool/twoStrokeMixtureCalculator/i18n/es.ts +194 -194
  258. package/src/tool/twoStrokeMixtureCalculator/i18n/fr.ts +194 -194
  259. package/src/tool/twoStrokeMixtureCalculator/i18n/id.ts +194 -194
  260. package/src/tool/twoStrokeMixtureCalculator/i18n/it.ts +194 -194
  261. package/src/tool/twoStrokeMixtureCalculator/i18n/ja.ts +194 -194
  262. package/src/tool/twoStrokeMixtureCalculator/i18n/ko.ts +194 -194
  263. package/src/tool/twoStrokeMixtureCalculator/i18n/nl.ts +194 -194
  264. package/src/tool/twoStrokeMixtureCalculator/i18n/pl.ts +194 -194
  265. package/src/tool/twoStrokeMixtureCalculator/i18n/pt.ts +194 -194
  266. package/src/tool/twoStrokeMixtureCalculator/i18n/ru.ts +194 -194
  267. package/src/tool/twoStrokeMixtureCalculator/i18n/sv.ts +194 -194
  268. package/src/tool/twoStrokeMixtureCalculator/i18n/tr.ts +194 -194
  269. package/src/tool/twoStrokeMixtureCalculator/i18n/zh.ts +194 -194
  270. package/src/tool/voltageDropCalculator/bibliography.ts +16 -16
  271. package/src/tool/voltageDropCalculator/i18n/de.ts +113 -113
  272. package/src/tool/voltageDropCalculator/i18n/en.ts +151 -151
  273. package/src/tool/voltageDropCalculator/i18n/es.ts +151 -151
  274. package/src/tool/voltageDropCalculator/i18n/fr.ts +145 -145
  275. package/src/tool/voltageDropCalculator/i18n/id.ts +113 -113
  276. package/src/tool/voltageDropCalculator/i18n/it.ts +113 -113
  277. package/src/tool/voltageDropCalculator/i18n/ja.ts +113 -113
  278. package/src/tool/voltageDropCalculator/i18n/ko.ts +113 -113
  279. package/src/tool/voltageDropCalculator/i18n/nl.ts +113 -113
  280. package/src/tool/voltageDropCalculator/i18n/pl.ts +113 -113
  281. package/src/tool/voltageDropCalculator/i18n/pt.ts +113 -113
  282. package/src/tool/voltageDropCalculator/i18n/ru.ts +113 -113
  283. package/src/tool/voltageDropCalculator/i18n/sv.ts +113 -113
  284. package/src/tool/voltageDropCalculator/i18n/tr.ts +113 -113
  285. package/src/tool/voltageDropCalculator/i18n/zh.ts +113 -113
  286. package/src/tool/voltageDropCalculator/seo.astro +15 -15
  287. package/src/tool/workshopFractionConverter/bibliography.ts +12 -12
  288. package/src/tool/workshopFractionConverter/i18n/de.ts +147 -147
  289. package/src/tool/workshopFractionConverter/i18n/en.ts +147 -147
  290. package/src/tool/workshopFractionConverter/i18n/es.ts +147 -147
  291. package/src/tool/workshopFractionConverter/i18n/fr.ts +147 -147
  292. package/src/tool/workshopFractionConverter/i18n/id.ts +147 -147
  293. package/src/tool/workshopFractionConverter/i18n/it.ts +147 -147
  294. package/src/tool/workshopFractionConverter/i18n/ja.ts +147 -147
  295. package/src/tool/workshopFractionConverter/i18n/ko.ts +147 -147
  296. package/src/tool/workshopFractionConverter/i18n/nl.ts +147 -147
  297. package/src/tool/workshopFractionConverter/i18n/pl.ts +147 -147
  298. package/src/tool/workshopFractionConverter/i18n/pt.ts +147 -147
  299. package/src/tool/workshopFractionConverter/i18n/ru.ts +147 -147
  300. package/src/tool/workshopFractionConverter/i18n/sv.ts +147 -147
  301. package/src/tool/workshopFractionConverter/i18n/tr.ts +147 -147
  302. package/src/tool/workshopFractionConverter/i18n/zh.ts +147 -147
  303. package/src/tools.ts +20 -20
@@ -1,130 +1,130 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
- import type { ToolLocaleContent } from '../../../types';
3
- import type { MortarCalculatorUI } from '../ui';
4
- import { bibliography } from '../bibliography';
5
-
6
- const slug = 'lime-mortar-calculator';
7
- const title = '传统石灰砂浆比例:粉刷与抹灰';
8
- const description = '石灰和砂浆免费计算器。根据传统方法(维特鲁威)获取粗抹灰、中抹灰和精抹灰的精确比例。';
9
-
10
- const faqData = [
11
- {
12
- question: '为什么要使用石灰而不是水泥?',
13
- answer: '石灰是一种"活的"透气材料,允许水蒸汽排出,防止因冷凝产生的湿气。此外,它比水泥更具柔韧性,可以减少旧墙体裂缝的出现。',
14
- },
15
- {
16
- question: '粗抹灰的理想比例是多少?',
17
- answer: '根据维特鲁威传统,对于干净的河沙,使用 1:3 的比例(一份石灰对三份沙子)。对于矿砂,建议使用 1:2 以确保砂浆的凝聚力。',
18
- },
19
- {
20
- question: '什么是精抹灰或面层抹灰?',
21
- answer: '这是墙壁的最后一层。使用更细的沙子(有时是石灰石粉/大理石粉)和更高比例的石灰,以获得光滑、如丝般平整的效果,可以喷漆或保持自然状态。',
22
- },
23
- {
24
- question: '石灰砂浆需要多长时间硬化?',
25
- answer: '气硬性石灰通过碳化(吸收空气中的二氧化碳)硬化。初始凝固过程需要几天时间,但最大硬度要在数月后达到,并随着时间的推移不断增强强度。',
26
- },
27
- ];
28
-
29
- const howToData = [
30
- { name: '识别基层类型', text: '检查是在石头、旧砖还是砌块上作业。基层必须清洁且略微湿润。' },
31
- { name: '选择沙子的粒径', text: '接着层使用粗沙,装饰面层使用细沙。沙子的纯度决定了砂浆的质量。' },
32
- { name: '组分混合', text: '在加水前先将石灰和沙子干混。稠度应具有塑性,而不是液体。' },
33
- { name: '涂抹与找平', text: '用抹刀铺开砂浆,并在砂浆开始收干(表面变硬)时使用木抹子进行找平。' },
34
- ];
35
-
36
- const faqSchema: WithContext<FAQPage> = {
37
- '@context': 'https://schema.org',
38
- '@type': 'FAQPage',
39
- mainEntity: faqData.map((item) => ({
40
- '@type': 'Question',
41
- name: item.question,
42
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
43
- })),
44
- };
45
-
46
- const howToSchema: WithContext<HowToThing> = {
47
- '@context': 'https://schema.org',
48
- '@type': 'HowTo',
49
- name: title,
50
- description,
51
- step: howToData.map((step, i) => ({
52
- '@type': 'HowToStep',
53
- position: i + 1,
54
- name: step.name,
55
- text: step.text,
56
- })),
57
- };
58
-
59
- const appSchema: WithContext<SoftwareApplication> = {
60
- '@context': 'https://schema.org',
61
- '@type': 'SoftwareApplication',
62
- name: title,
63
- description,
64
- applicationCategory: 'UtilityApplication',
65
- operatingSystem: 'All',
66
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
67
- inLanguage: 'zh',
68
- };
69
-
70
- export const content: ToolLocaleContent<MortarCalculatorUI> = {
71
- slug,
72
- title,
73
- description,
74
- faqTitle: '常见问题',
75
- faq: faqData,
76
- bibliography,
77
- howTo: howToData,
78
- schemas: [faqSchema, howToSchema, appSchema],
79
- seo: [
80
- { type: 'title', text: '砂浆论:维特鲁威的智慧', level: 2 },
81
- { type: 'paragraph', html: '马库斯·维特鲁威·波利奥在其《建筑十书》第七卷中,不仅描述了技术,还阐述了一种哲学。他理解建筑的永恒在于其结合部。砂浆不仅仅是粘合剂;它是结缔组织。其比例(1:3, 1:2, 1:1)是长达数世纪的罗马经验观察的遗产,追求强度与柔韧性之间的完美平衡。' },
82
- { type: 'title', text: '骨料粒径:质量的关键', level: 3 },
83
- { type: 'paragraph', html: '石灰砂浆的质量在很大程度上取决于骨料的粒径。对于 <strong>Trullissatio</strong>(基层粉刷),使用 2-5 毫米的粗河沙。对于 <strong>Arenato</strong>(中层抹灰),使用 0.5-2 毫米的洗净中沙。对于 <strong>Marmorato</strong>(精抹灰),使用小于 0.5 毫米的石灰石粉。' },
84
- { type: 'title', text: '机械嵌锁的奥秘', level: 3 },
85
- { type: 'paragraph', html: '这种结合不是化学性的,而是<strong>机械性</strong>的。想象一下数以百万计的微观根须。砂浆必须渗透到砖块的孔隙中,创造一个物理"锁扣"。没有孔隙,就没有锚固。' },
86
-
87
- { type: 'paragraph', html: "使用前请结合计算器显示的假设一起解读结果。" },
88
- { type: 'paragraph', html: "请检查输入值、单位、四舍五入方式、日期和司法辖区,因为每项都可能改变估算。" },
89
- { type: 'paragraph', html: "结果可用于规划和比较方案,但不能替代官方计算或专业建议。" },
90
- { type: 'paragraph', html: "使用前请结合计算器显示的假设一起解读结果。" },],
91
- ui: {
92
- leftTitle: '维特鲁威系统',
93
- centerTitle: '可用材料',
94
- rightTitle: '估计覆盖面积',
95
- btnCal: '石灰',
96
- btnArena: '沙子',
97
- labelCalPasta: '消石灰膏 (1.30 kg/L)',
98
- labelCalPolvo: 'NHL粉末 (0.65 kg/L)',
99
- labelQuantity: '现有数量:',
100
- labelNeedsAlso: '您还需要:',
101
- labelProportion: '比例:',
102
- labelCoverage: '覆盖面积:',
103
- labelThickness: '总厚度:',
104
- labelLayers: '层数:',
105
- labelWasteFactor: '损耗系数: 20%',
106
- layersSingular: '遍',
107
- layersPlural: '遍',
108
- layersSingularShort: '遍',
109
- layersPluralShort: '遍',
110
- materialCal: '石灰',
111
- materialArena: '沙子',
112
- materialMarmol: '大理石',
113
- phaseDescTrullissatio: '粗糙基层。刷2遍,厚度15mm。比例 1:3(石灰:河沙)。',
114
- phaseDescArenato: '中间层。刷2遍,厚度8mm。比例 1:2(石灰:洗净沙)。',
115
- phaseDescMarmorato: '精细面层。刷1双遍,厚度4mm。比例 1:1(石灰:石灰石粉/大理石粉)。',
116
- granulometryTitle: '骨料粒径',
117
- grainTitleCoarse: '粗沙',
118
- grainSubtitleCoarse: '河沙',
119
- grainUsageCoarse: '基层粉刷',
120
- grainTitleMedium: '中沙',
121
- grainSubtitleMedium: '洗净沙',
122
- grainUsageMedium: '中层抹灰',
123
- grainTitleFine: '细粉',
124
- grainSubtitleFine: '石灰石粉/大理石粉',
125
- grainUsageFine: '精抹灰',
126
- specSize: '尺寸:',
127
- specUse: '用途:',
128
- specDensity: '密度:',
129
- },
130
- };
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { MortarCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'lime-mortar-calculator';
7
+ const title = '传统石灰砂浆比例:粉刷与抹灰';
8
+ const description = '石灰和砂浆免费计算器。根据传统方法(维特鲁威)获取粗抹灰、中抹灰和精抹灰的精确比例。';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '为什么要使用石灰而不是水泥?',
13
+ answer: '石灰是一种"活的"透气材料,允许水蒸汽排出,防止因冷凝产生的湿气。此外,它比水泥更具柔韧性,可以减少旧墙体裂缝的出现。',
14
+ },
15
+ {
16
+ question: '粗抹灰的理想比例是多少?',
17
+ answer: '根据维特鲁威传统,对于干净的河沙,使用 1:3 的比例(一份石灰对三份沙子)。对于矿砂,建议使用 1:2 以确保砂浆的凝聚力。',
18
+ },
19
+ {
20
+ question: '什么是精抹灰或面层抹灰?',
21
+ answer: '这是墙壁的最后一层。使用更细的沙子(有时是石灰石粉/大理石粉)和更高比例的石灰,以获得光滑、如丝般平整的效果,可以喷漆或保持自然状态。',
22
+ },
23
+ {
24
+ question: '石灰砂浆需要多长时间硬化?',
25
+ answer: '气硬性石灰通过碳化(吸收空气中的二氧化碳)硬化。初始凝固过程需要几天时间,但最大硬度要在数月后达到,并随着时间的推移不断增强强度。',
26
+ },
27
+ ];
28
+
29
+ const howToData = [
30
+ { name: '识别基层类型', text: '检查是在石头、旧砖还是砌块上作业。基层必须清洁且略微湿润。' },
31
+ { name: '选择沙子的粒径', text: '接着层使用粗沙,装饰面层使用细沙。沙子的纯度决定了砂浆的质量。' },
32
+ { name: '组分混合', text: '在加水前先将石灰和沙子干混。稠度应具有塑性,而不是液体。' },
33
+ { name: '涂抹与找平', text: '用抹刀铺开砂浆,并在砂浆开始收干(表面变硬)时使用木抹子进行找平。' },
34
+ ];
35
+
36
+ const faqSchema: WithContext<FAQPage> = {
37
+ '@context': 'https://schema.org',
38
+ '@type': 'FAQPage',
39
+ mainEntity: faqData.map((item) => ({
40
+ '@type': 'Question',
41
+ name: item.question,
42
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
43
+ })),
44
+ };
45
+
46
+ const howToSchema: WithContext<HowToThing> = {
47
+ '@context': 'https://schema.org',
48
+ '@type': 'HowTo',
49
+ name: title,
50
+ description,
51
+ step: howToData.map((step, i) => ({
52
+ '@type': 'HowToStep',
53
+ position: i + 1,
54
+ name: step.name,
55
+ text: step.text,
56
+ })),
57
+ };
58
+
59
+ const appSchema: WithContext<SoftwareApplication> = {
60
+ '@context': 'https://schema.org',
61
+ '@type': 'SoftwareApplication',
62
+ name: title,
63
+ description,
64
+ applicationCategory: 'UtilityApplication',
65
+ operatingSystem: 'All',
66
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
67
+ inLanguage: 'zh',
68
+ };
69
+
70
+ export const content: ToolLocaleContent<MortarCalculatorUI> = {
71
+ slug,
72
+ title,
73
+ description,
74
+ faqTitle: '常见问题',
75
+ faq: faqData,
76
+ bibliography,
77
+ howTo: howToData,
78
+ schemas: [faqSchema, howToSchema, appSchema],
79
+ seo: [
80
+ { type: 'title', text: '砂浆论:维特鲁威的智慧', level: 2 },
81
+ { type: 'paragraph', html: '马库斯·维特鲁威·波利奥在其《建筑十书》第七卷中,不仅描述了技术,还阐述了一种哲学。他理解建筑的永恒在于其结合部。砂浆不仅仅是粘合剂;它是结缔组织。其比例(1:3, 1:2, 1:1)是长达数世纪的罗马经验观察的遗产,追求强度与柔韧性之间的完美平衡。' },
82
+ { type: 'title', text: '骨料粒径:质量的关键', level: 3 },
83
+ { type: 'paragraph', html: '石灰砂浆的质量在很大程度上取决于骨料的粒径。对于 <strong>Trullissatio</strong>(基层粉刷),使用 2-5 毫米的粗河沙。对于 <strong>Arenato</strong>(中层抹灰),使用 0.5-2 毫米的洗净中沙。对于 <strong>Marmorato</strong>(精抹灰),使用小于 0.5 毫米的石灰石粉。' },
84
+ { type: 'title', text: '机械嵌锁的奥秘', level: 3 },
85
+ { type: 'paragraph', html: '这种结合不是化学性的,而是<strong>机械性</strong>的。想象一下数以百万计的微观根须。砂浆必须渗透到砖块的孔隙中,创造一个物理"锁扣"。没有孔隙,就没有锚固。' },
86
+
87
+ { type: 'paragraph', html: "使用前请结合计算器显示的假设一起解读结果。" },
88
+ { type: 'paragraph', html: "请检查输入值、单位、四舍五入方式、日期和司法辖区,因为每项都可能改变估算。" },
89
+ { type: 'paragraph', html: "结果可用于规划和比较方案,但不能替代官方计算或专业建议。" },
90
+ { type: 'paragraph', html: "使用前请结合计算器显示的假设一起解读结果。" },],
91
+ ui: {
92
+ leftTitle: '维特鲁威系统',
93
+ centerTitle: '可用材料',
94
+ rightTitle: '估计覆盖面积',
95
+ btnCal: '石灰',
96
+ btnArena: '沙子',
97
+ labelCalPasta: '消石灰膏 (1.30 kg/L)',
98
+ labelCalPolvo: 'NHL粉末 (0.65 kg/L)',
99
+ labelQuantity: '现有数量:',
100
+ labelNeedsAlso: '您还需要:',
101
+ labelProportion: '比例:',
102
+ labelCoverage: '覆盖面积:',
103
+ labelThickness: '总厚度:',
104
+ labelLayers: '层数:',
105
+ labelWasteFactor: '损耗系数: 20%',
106
+ layersSingular: '遍',
107
+ layersPlural: '遍',
108
+ layersSingularShort: '遍',
109
+ layersPluralShort: '遍',
110
+ materialCal: '石灰',
111
+ materialArena: '沙子',
112
+ materialMarmol: '大理石',
113
+ phaseDescTrullissatio: '粗糙基层。刷2遍,厚度15mm。比例 1:3(石灰:河沙)。',
114
+ phaseDescArenato: '中间层。刷2遍,厚度8mm。比例 1:2(石灰:洗净沙)。',
115
+ phaseDescMarmorato: '精细面层。刷1双遍,厚度4mm。比例 1:1(石灰:石灰石粉/大理石粉)。',
116
+ granulometryTitle: '骨料粒径',
117
+ grainTitleCoarse: '粗沙',
118
+ grainSubtitleCoarse: '河沙',
119
+ grainUsageCoarse: '基层粉刷',
120
+ grainTitleMedium: '中沙',
121
+ grainSubtitleMedium: '洗净沙',
122
+ grainUsageMedium: '中层抹灰',
123
+ grainTitleFine: '细粉',
124
+ grainSubtitleFine: '石灰石粉/大理石粉',
125
+ grainUsageFine: '精抹灰',
126
+ specSize: '尺寸:',
127
+ specUse: '用途:',
128
+ specDensity: '密度:',
129
+ },
130
+ };
@@ -1,15 +1,15 @@
1
- ---
2
- import { SEORenderer } from '@jjlmoya/utils-shared';
3
- import { mortarCalculator } from './index';
4
- import type { KnownLocale } from '../../types';
5
-
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
-
10
- const { locale = 'es' } = Astro.props;
11
- const content = await mortarCalculator.i18n[locale]?.();
12
- if (!content) return null;
13
- ---
14
-
15
- {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { mortarCalculator } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'es' } = Astro.props;
11
+ const content = await mortarCalculator.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -1,16 +1,16 @@
1
- import type { BibliographyEntry } from '../../types';
2
-
3
- export const bibliography: BibliographyEntry[] = [
4
- {
5
- name: 'ISO 9706: Permanence of Paper for Documents',
6
- url: 'https://www.iso.org/standard/22495.html',
7
- },
8
- {
9
- name: 'PPFA: Professional Picture Framers Association',
10
- url: 'https://ppfa.com/',
11
- },
12
- {
13
- name: 'Fine Art Trade Guild: Framing Standards',
14
- url: 'https://www.fineart.co.uk/',
15
- },
16
- ];
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'ISO 9706: Permanence of Paper for Documents',
6
+ url: 'https://www.iso.org/standard/22495.html',
7
+ },
8
+ {
9
+ name: 'PPFA: Professional Picture Framers Association',
10
+ url: 'https://ppfa.com/',
11
+ },
12
+ {
13
+ name: 'Fine Art Trade Guild: Framing Standards',
14
+ url: 'https://www.fineart.co.uk/',
15
+ },
16
+ ];
@@ -1,108 +1,108 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
- import type { ToolLocaleContent } from '../../../types';
3
- import type { PassepartoutCalculatorUI } from '../ui';
4
- import { bibliography } from '../bibliography';
5
-
6
- const slug = 'passepartout-rechner';
7
- const title = 'Passepartout Rechner: Ränder mit optischer Korrektur für Einrahmungen';
8
- const description = 'Werkzeug zur Berechnung von Passepartout-Rändern mit optischer Korrektur (Bottom Weighting). Rahmen Sie Ihre Fotografien und Kunstwerke mit Galerie-Proportionen ein.';
9
-
10
- const faqData = [
11
- {
12
- question: 'Was ist die optische Mittenkorrektur (Bottom Weighting)?',
13
- answer: 'Es ist ein Gestaltungsprinzip bei Einrahmungen, bei dem der untere Rand etwas breiter als die anderen gemacht wird. Dies korrigiert die optische Täuschung, die das geometrische Zentrum "abgesackt" erscheinen lässt, wenn ein Werk an der Wand hängt.',
14
- },
15
- {
16
- question: 'Welches Material sollte für das Passepartout verwendet werden?',
17
- answer: 'Für die künstlerische Konservierung sollte es säurefreier oder pH-neutraler Karton sein (Alfa-Zellulose oder Baumwolle). Billige Kartons vergilben mit der Zeit und können das Werk durch Lignin beschädigen.',
18
- },
19
- {
20
- question: 'Wie wähle ich die Farbe des Randes?',
21
- answer: 'Offwhite oder sanftes Creme sind die Standards, die nicht vom Werk ablenken. Ein dunkler Rand kann die Weißtöne einer Fotografie hervorheben, während farbige Ränder vorsichtig eingesetzt werden sollten, um nicht mit den Farbtönen des Stücks zu konkurrieren.',
22
- },
23
- {
24
- question: 'Was ist die ideale Randbreite?',
25
- answer: 'Ein professioneller Standard liegt zwischen 5 und 8 cm. Wenn der Rand zu schmal ist, wirkt das Werk "erstickt". Wenn er sehr breit ist, kann es kleinen Werken eine heroische und minimalistische Ausstrahlung verleihen.',
26
- },
27
- ];
28
-
29
- const howToData = [
30
- { name: 'Kunstwerk messen', text: 'Messen Sie die exakte Breite und Höhe des Papiers oder der Leinwand. Ziehen Sie einige Millimeter ab, wenn das Passepartout das Bild leicht überlappen soll.' },
31
- { name: 'Innenmaß des Rahmens messen', text: 'Nehmen Sie die Innenmaße des Rahmens oder des Falzes, in den der Passepartout-Karton passen wird.' },
32
- { name: 'Optische Korrektur aktivieren', text: 'Wählen Sie die Option in unserem Rechner, wenn der untere Rand für ein professionelles Finish automatisch größer sein soll.' },
33
- { name: 'Karton schneiden', text: 'Verwenden Sie die berechneten Maße zum Schneiden des Fensters und des Außenmaßes, vorzugsweise mit einem 45-Grad-Schrägschnitt für eine saubere Kante.' },
34
- ];
35
-
36
- const faqSchema: WithContext<FAQPage> = {
37
- '@context': 'https://schema.org',
38
- '@type': 'FAQPage',
39
- mainEntity: faqData.map((item) => ({
40
- '@type': 'Question',
41
- name: item.question,
42
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
43
- })),
44
- };
45
-
46
- const howToSchema: WithContext<HowToThing> = {
47
- '@context': 'https://schema.org',
48
- '@type': 'HowTo',
49
- name: title,
50
- description,
51
- step: howToData.map((step, i) => ({
52
- '@type': 'HowToStep',
53
- position: i + 1,
54
- name: step.name,
55
- text: step.text,
56
- })),
57
- };
58
-
59
- const appSchema: WithContext<SoftwareApplication> = {
60
- '@context': 'https://schema.org',
61
- '@type': 'SoftwareApplication',
62
- name: title,
63
- description,
64
- applicationCategory: 'UtilityApplication',
65
- operatingSystem: 'All',
66
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
67
- inLanguage: 'de',
68
- };
69
-
70
- export const content: ToolLocaleContent<PassepartoutCalculatorUI> = {
71
- slug,
72
- title,
73
- description,
74
- faqTitle: 'Häufig gestellte Fragen',
75
- faq: faqData,
76
- bibliography,
77
- howTo: howToData,
78
- schemas: [faqSchema, howToSchema, appSchema],
79
- seo: [
80
- { type: 'title', text: 'Die Wissenschaft der perfekten Einrahmung', level: 2 },
81
- { type: 'paragraph', html: 'Ein <strong>Passepartout</strong> ist nicht nur ein dekorativer Karton; es ist die Lunge, die Ihr Kunstwerk atmen lässt. Dieser Rechner hilft Ihnen, die exakten Maße für den Zuschnitt zu bestimmen, damit das Werk perfekt zentriert oder optisch ausgewogen im Rahmen platziert wird.' },
82
- { type: 'title', text: 'Warum die optische Mittenkorrektur?', level: 3 },
83
- { type: 'card', icon: 'mdi:eye-outline', title: 'Die optische Täuschung der geometrischen Mitte', html: '<p>Das menschliche Auge tendiert dazu, die vertikale geometrische Mitte etwas tiefer wahrzunehmen, als sie tatsächlich ist. Rahmen Sie ein Werk exakt in der Mitte ein, wirkt es, als ob es "absinkt".</p><p>Das <strong>Bottom Weighting</strong> korrigiert diese Täuschung, indem der untere Rand etwas größer gelassen wird, was das Werk visuell anhebt.</p>' },
84
- { type: 'title', text: 'Konservierungsmaterialien für Passepartouts', level: 3 },
85
- { type: 'card', icon: 'mdi:palette-swatch-outline', title: 'Säurefreier Karton für die Konservierung', html: '<p>Suchen Sie beim Kauf immer nach Begriffen wie <strong>"Acid-Free"</strong> (säurefrei) oder <strong>"Museum Quality"</strong>. Billige Kartons aus Holzschliff können vergilben und Säuren freisetzen, die Ihr Kunstwerk irreversibel schädigen (Stockflecken).</p>' },
86
-
87
- { type: 'paragraph', html: "Deuten Sie das Ergebnis gemeinsam mit den angezeigten Annahmen, bevor Sie es verwenden." },
88
- { type: 'paragraph', html: "Prüfen Sie Eingaben, Einheiten, Rundung, Datum und Recht, weil jedes Element die Schätzung verändern kann." },
89
- { type: 'paragraph', html: "Nutzen Sie das Ergebnis zur Planung und zum Szenarienvergleich; es ersetzt keine offizielle Berechnung oder Fachberatung." },
90
- { type: 'paragraph', html: "Deuten Sie das Ergebnis gemeinsam mit den angezeigten Annahmen, bevor Sie es verwenden." },],
91
- ui: {
92
- sectionTitle: 'Abmessungen',
93
- sectionDesc: 'Geben Sie die Maße in Zentimetern ein.',
94
- frameSizeTitle: 'Rahmengröße',
95
- artSizeTitle: 'Größe des Werks',
96
- labelWidth: 'Breite (cm)',
97
- labelHeight: 'Höhe (cm)',
98
- labelBottomWeighting: 'Bottom Weighting',
99
- descBottomWeighting: 'Mehr unterer Rand für visuelles Gleichgewicht',
100
- labelOffset: 'Versatz (%)',
101
- errorMsg: 'Das Werk muss kleiner als der Rahmen sein.',
102
- labelTop: 'Oben',
103
- labelBottom: 'Unten',
104
- labelLeft: 'Links',
105
- labelRight: 'Rechts',
106
- artPlaceholder: 'Ihr Werk',
107
- },
108
- };
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { PassepartoutCalculatorUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'passepartout-rechner';
7
+ const title = 'Passepartout Rechner: Ränder mit optischer Korrektur für Einrahmungen';
8
+ const description = 'Werkzeug zur Berechnung von Passepartout-Rändern mit optischer Korrektur (Bottom Weighting). Rahmen Sie Ihre Fotografien und Kunstwerke mit Galerie-Proportionen ein.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Was ist die optische Mittenkorrektur (Bottom Weighting)?',
13
+ answer: 'Es ist ein Gestaltungsprinzip bei Einrahmungen, bei dem der untere Rand etwas breiter als die anderen gemacht wird. Dies korrigiert die optische Täuschung, die das geometrische Zentrum "abgesackt" erscheinen lässt, wenn ein Werk an der Wand hängt.',
14
+ },
15
+ {
16
+ question: 'Welches Material sollte für das Passepartout verwendet werden?',
17
+ answer: 'Für die künstlerische Konservierung sollte es säurefreier oder pH-neutraler Karton sein (Alfa-Zellulose oder Baumwolle). Billige Kartons vergilben mit der Zeit und können das Werk durch Lignin beschädigen.',
18
+ },
19
+ {
20
+ question: 'Wie wähle ich die Farbe des Randes?',
21
+ answer: 'Offwhite oder sanftes Creme sind die Standards, die nicht vom Werk ablenken. Ein dunkler Rand kann die Weißtöne einer Fotografie hervorheben, während farbige Ränder vorsichtig eingesetzt werden sollten, um nicht mit den Farbtönen des Stücks zu konkurrieren.',
22
+ },
23
+ {
24
+ question: 'Was ist die ideale Randbreite?',
25
+ answer: 'Ein professioneller Standard liegt zwischen 5 und 8 cm. Wenn der Rand zu schmal ist, wirkt das Werk "erstickt". Wenn er sehr breit ist, kann es kleinen Werken eine heroische und minimalistische Ausstrahlung verleihen.',
26
+ },
27
+ ];
28
+
29
+ const howToData = [
30
+ { name: 'Kunstwerk messen', text: 'Messen Sie die exakte Breite und Höhe des Papiers oder der Leinwand. Ziehen Sie einige Millimeter ab, wenn das Passepartout das Bild leicht überlappen soll.' },
31
+ { name: 'Innenmaß des Rahmens messen', text: 'Nehmen Sie die Innenmaße des Rahmens oder des Falzes, in den der Passepartout-Karton passen wird.' },
32
+ { name: 'Optische Korrektur aktivieren', text: 'Wählen Sie die Option in unserem Rechner, wenn der untere Rand für ein professionelles Finish automatisch größer sein soll.' },
33
+ { name: 'Karton schneiden', text: 'Verwenden Sie die berechneten Maße zum Schneiden des Fensters und des Außenmaßes, vorzugsweise mit einem 45-Grad-Schrägschnitt für eine saubere Kante.' },
34
+ ];
35
+
36
+ const faqSchema: WithContext<FAQPage> = {
37
+ '@context': 'https://schema.org',
38
+ '@type': 'FAQPage',
39
+ mainEntity: faqData.map((item) => ({
40
+ '@type': 'Question',
41
+ name: item.question,
42
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
43
+ })),
44
+ };
45
+
46
+ const howToSchema: WithContext<HowToThing> = {
47
+ '@context': 'https://schema.org',
48
+ '@type': 'HowTo',
49
+ name: title,
50
+ description,
51
+ step: howToData.map((step, i) => ({
52
+ '@type': 'HowToStep',
53
+ position: i + 1,
54
+ name: step.name,
55
+ text: step.text,
56
+ })),
57
+ };
58
+
59
+ const appSchema: WithContext<SoftwareApplication> = {
60
+ '@context': 'https://schema.org',
61
+ '@type': 'SoftwareApplication',
62
+ name: title,
63
+ description,
64
+ applicationCategory: 'UtilityApplication',
65
+ operatingSystem: 'All',
66
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
67
+ inLanguage: 'de',
68
+ };
69
+
70
+ export const content: ToolLocaleContent<PassepartoutCalculatorUI> = {
71
+ slug,
72
+ title,
73
+ description,
74
+ faqTitle: 'Häufig gestellte Fragen',
75
+ faq: faqData,
76
+ bibliography,
77
+ howTo: howToData,
78
+ schemas: [faqSchema, howToSchema, appSchema],
79
+ seo: [
80
+ { type: 'title', text: 'Die Wissenschaft der perfekten Einrahmung', level: 2 },
81
+ { type: 'paragraph', html: 'Ein <strong>Passepartout</strong> ist nicht nur ein dekorativer Karton; es ist die Lunge, die Ihr Kunstwerk atmen lässt. Dieser Rechner hilft Ihnen, die exakten Maße für den Zuschnitt zu bestimmen, damit das Werk perfekt zentriert oder optisch ausgewogen im Rahmen platziert wird.' },
82
+ { type: 'title', text: 'Warum die optische Mittenkorrektur?', level: 3 },
83
+ { type: 'card', icon: 'mdi:eye-outline', title: 'Die optische Täuschung der geometrischen Mitte', html: '<p>Das menschliche Auge tendiert dazu, die vertikale geometrische Mitte etwas tiefer wahrzunehmen, als sie tatsächlich ist. Rahmen Sie ein Werk exakt in der Mitte ein, wirkt es, als ob es "absinkt".</p><p>Das <strong>Bottom Weighting</strong> korrigiert diese Täuschung, indem der untere Rand etwas größer gelassen wird, was das Werk visuell anhebt.</p>' },
84
+ { type: 'title', text: 'Konservierungsmaterialien für Passepartouts', level: 3 },
85
+ { type: 'card', icon: 'mdi:palette-swatch-outline', title: 'Säurefreier Karton für die Konservierung', html: '<p>Suchen Sie beim Kauf immer nach Begriffen wie <strong>"Acid-Free"</strong> (säurefrei) oder <strong>"Museum Quality"</strong>. Billige Kartons aus Holzschliff können vergilben und Säuren freisetzen, die Ihr Kunstwerk irreversibel schädigen (Stockflecken).</p>' },
86
+
87
+ { type: 'paragraph', html: "Deuten Sie das Ergebnis gemeinsam mit den angezeigten Annahmen, bevor Sie es verwenden." },
88
+ { type: 'paragraph', html: "Prüfen Sie Eingaben, Einheiten, Rundung, Datum und Recht, weil jedes Element die Schätzung verändern kann." },
89
+ { type: 'paragraph', html: "Nutzen Sie das Ergebnis zur Planung und zum Szenarienvergleich; es ersetzt keine offizielle Berechnung oder Fachberatung." },
90
+ { type: 'paragraph', html: "Deuten Sie das Ergebnis gemeinsam mit den angezeigten Annahmen, bevor Sie es verwenden." },],
91
+ ui: {
92
+ sectionTitle: 'Abmessungen',
93
+ sectionDesc: 'Geben Sie die Maße in Zentimetern ein.',
94
+ frameSizeTitle: 'Rahmengröße',
95
+ artSizeTitle: 'Größe des Werks',
96
+ labelWidth: 'Breite (cm)',
97
+ labelHeight: 'Höhe (cm)',
98
+ labelBottomWeighting: 'Bottom Weighting',
99
+ descBottomWeighting: 'Mehr unterer Rand für visuelles Gleichgewicht',
100
+ labelOffset: 'Versatz (%)',
101
+ errorMsg: 'Das Werk muss kleiner als der Rahmen sein.',
102
+ labelTop: 'Oben',
103
+ labelBottom: 'Unten',
104
+ labelLeft: 'Links',
105
+ labelRight: 'Rechts',
106
+ artPlaceholder: 'Ihr Werk',
107
+ },
108
+ };