@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,183 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ClayCalculatorUI } from '../ui';
4
+
5
+ const slug = 'lerkrympskalkylator';
6
+ const title = 'Lerkrympskalkylator: Exakta dimensioner för keramik';
7
+ const description =
8
+ 'Beräkna lerkrympning under torkning och bränning. Designa keramikföremål med exakta slutdimensioner.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Varför krymper lera?',
13
+ answer:
14
+ 'Lera krymper främst på grund av vattenförlust. Först sker torkning (avdunstning av vatten mellan partiklar) och sedan bränning (avlägsnande av kemiskt bundet vatten och sintring av partiklar).',
15
+ },
16
+ {
17
+ question: 'Vad är en normal krympprocent?',
18
+ answer:
19
+ 'Det beror på lermassan. Lergods krymper vanligtvis mellan 5-10 %, medan stengods och porslin kan nå 12-15 % på grund av sin högre grad av vitrifiering (förglasning).',
20
+ },
21
+ {
22
+ question: 'Hur mäter jag krympningen på min egen lera?',
23
+ answer:
24
+ 'Skapa en testplatta på exakt 10 cm. Låt den torka och mät den (torkkrympning). Bränn den till sluttemperaturen och mät igen (totalkrympning). Skillnaden ger dig den exakta procentsatsen.',
25
+ },
26
+ {
27
+ question: 'Vad händer om mitt föremål spricker vid torkning?',
28
+ answer:
29
+ 'Det tyder oftast på en för snabb eller ojämn torkprocess. Tunna delar förlorar vatten snabbare än tjocka, vilket skapar spänningar. Täck föremålen med plast för att sakta ner processen.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Mät föremålet när det är vått',
36
+ text: 'Registrera de exakta måtten på ditt föremål direkt efter drejning eller modellering, när det fortfarande har all sin fukt.',
37
+ },
38
+ {
39
+ name: 'Ange krympkoefficient',
40
+ text: 'Leta på lerans förpackning efter den totala krympprocenten (torkning + bränning) som tillhandahålls av tillverkaren.',
41
+ },
42
+ {
43
+ name: 'Få förväntade slutdimensioner',
44
+ text: 'Använd kalkylatorn för att veta hur stort ditt föremål kommer att vara efter ugnen och planera passningar eller lock därefter.',
45
+ },
46
+ {
47
+ name: 'Omvänd beräkning för mål',
48
+ text: 'Om du behöver att ditt föremål ska mäta exakt X cm i slutet, använd den omvända beräkningen för att veta vilken storlek det ska ha på drejskivan.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowToThing> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: 'sv',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<ClayCalculatorUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: 'Vanliga frågor',
91
+ faq: faqData,
92
+ bibliographyTitle: 'Referenser',
93
+ bibliography: [
94
+ {
95
+ name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
+ url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
+ },
98
+ {
99
+ name: 'Ceramic Arts Network - Understanding Shrinkage',
100
+ url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
101
+ },
102
+ ],
103
+ howTo: howToData,
104
+ schemas: [faqSchema, howToSchema, appSchema],
105
+ seo: [
106
+ {
107
+ type: 'title',
108
+ text: 'Lerans fysik: Krympning och expansion',
109
+ level: 2,
110
+ },
111
+ {
112
+ type: 'paragraph',
113
+ html: 'Lera är ett levande material som ändrar storlek under hela keramikprocessen. Från det ögonblick du formar ett vått föremål tills det kommer ut ur ugnen kan det förlora mellan 8 % och 15 % av sin ursprungliga storlek. Att beräkna denna krympning är grundläggande för att skapa föremål med de exakta dimensioner du behöver.',
114
+ },
115
+ {
116
+ type: 'grid',
117
+ columns: [
118
+ {
119
+ type: 'card',
120
+ title: 'Krympfaser',
121
+ html: '<p><strong>1. Torkning (Vått → Torrt):</strong> Genom att förlora vatten kommer lerpartiklarna närmare varandra. Detta är den största krympningen (4-8 %). Tjockväggiga föremål kan spricka om de torkar för snabbt.</p><p><strong>2. Bränning (Torrt → Skröj):</strong> Mellan 900-1000 °C genomgår leran oåterkalleliga kemiska förändringar. Ytterligare krympning på 2-4 %. Föremålet blir poröst men hållbart.</p><p><strong>3. Vitrifiering (Hög temperatur):</strong> Vid 1200-1300 °C förglasas leran. Slutlig krympning på 1-3 %. Stengods och porslin når sin maximala densitet.</p>',
122
+ },
123
+ {
124
+ type: 'card',
125
+ title: 'Variabler som påverkar',
126
+ html: '<ul><li><strong>Lertyp:</strong> Rödlerkrympning är mindre (8-10 %) än porslin (12-15 %).</li><li><strong>Väggtjocklek:</strong> Tunna väggar krymper mer enhetligt än tjocka.</li><li><strong>Bränntemperatur:</strong> Ju högre temperatur, desto större blir krympningen och vitrifieringen.</li><li><strong>Chamottinnehåll:</strong> Att tillsätta chamotte (krossad, redan bränd lera) minskar krympningen.</li></ul>',
127
+ },
128
+ ],
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Praktiska tillämpningar',
133
+ level: 2,
134
+ },
135
+ {
136
+ type: 'title',
137
+ text: 'Design av formar',
138
+ level: 3,
139
+ },
140
+ {
141
+ type: 'paragraph',
142
+ html: 'Om du behöver en kopp med en slutdiameter på 8 cm, och din lera krymper 12 %, måste du göra formen <strong>9,1 cm</strong>. Denna omvända beräkning är kritisk vid serieproduktion.',
143
+ },
144
+ {
145
+ type: 'title',
146
+ text: 'Lock och montering',
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'paragraph',
151
+ html: 'När du skapar delar som ska passa ihop (tekanna + lock, burk + lock), måste båda göras av samma lera och brännas tillsammans för att garantera att de krymper lika mycket. En skillnad på bara 1 % kan förstöra passformen.',
152
+ },
153
+ {
154
+ type: 'title',
155
+ text: 'Monumental skulptur',
156
+ level: 3,
157
+ },
158
+ {
159
+ type: 'paragraph',
160
+ html: 'I stora föremål kan skillnaden i krympning mellan tjocka och tunna sektioner orsaka sprickor. Erfarna keramiker kompenserar genom att lämna väggarna tjockare i zoner som de vet kommer att krympa mer.',
161
+ },
162
+ ],
163
+ ui: {
164
+ labelInitialSize: 'Ursprunglig storlek (mm)',
165
+ labelShrinkage: 'Krympprocent (%)',
166
+ labelLow: 'Låg (Terrakotta)',
167
+ labelMedium: 'Mellan (Stengods)',
168
+ labelHigh: 'Hög (Porslin)',
169
+ presetTerracota: 'Terrakotta (8%)',
170
+ presetGres: 'Stengods (12%)',
171
+ presetPorcelana: 'Porslin (15%)',
172
+ labelResult: 'Resultat',
173
+ labelFinalSize: 'Slutlig storlek:',
174
+ labelLoss: 'Total förlust:',
175
+ tipText:
176
+ 'För att beräkna den ursprungliga storleken som behövs för att få en specifik slutstorlek, dela den önskade storleken med (1 - krympning/100).',
177
+ labelInitialBadge: 'Ursprunglig:',
178
+ labelFinalBadge: 'mm slutlig',
179
+ labelLossBadge: 'Förlust:',
180
+ labelInitialArea: 'Ursprungligt område',
181
+ labelFinalArea: 'Slutområde',
182
+ },
183
+ };
@@ -0,0 +1,183 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ClayCalculatorUI } from '../ui';
4
+
5
+ const slug = 'kil-cekme-hesaplama';
6
+ const title = 'Kil Çekme Hesaplayıcı: Seramik İçin Tam Boyutlar';
7
+ const description =
8
+ 'Kurutma ve pişirme sırasında kilin çekmesini hesaplayın. Seramik parçaları tam nihai boyutlarla tasarlayın.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Kil neden çeker?',
13
+ answer:
14
+ 'Kil esas olarak su kaybı nedeniyle çeker. Önce kuruma (parçacıklar arasındaki suyun buharlaşması) ve ardından pişirme (kimyasal olarak bağlı suyun uzaklaştırılması ve parçacıkların sinterlenmesi) gerçekleşir.',
15
+ },
16
+ {
17
+ question: 'Normal çekme yüzdesi nedir?',
18
+ answer:
19
+ 'Seramik hamuruna bağlıdır. Çömlekçi kili (terrakotta) genellikle %5-10 arasında çekerken, taş çini (stoneware) ve porselen daha yüksek vitrifikasyon (camlaşma) nedeniyle %12-15\'e ulaşabilir.',
20
+ },
21
+ {
22
+ question: 'Kendi kilimin çekmesini nasıl ölçerim?',
23
+ answer:
24
+ 'Tam olarak 10 cm olan bir test plakası oluşturun. Kurumaya bırakın ve ölçün (kuruma çekmesi). Nihai sıcaklıkta pişirin ve tekrar ölçün (toplam çekme). Aradaki fark size tam yüzdeyi verecektir.',
25
+ },
26
+ {
27
+ question: 'Kuruma sırasında parçam çatlarsa ne olur?',
28
+ answer:
29
+ 'Genellikle çok hızlı veya dengesiz kurumayı gösterir. İnce bölgeler kalın bölgelerden daha önce su kaybederek gerilim oluşturur. Süreci yavaşlatmak için parçaları plastik bir örtüyle kapatın.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Parçayı ıslakken ölçün',
36
+ text: 'Tornadan çıktıktan veya modellendikten hemen sonra, henüz tüm nemine sahipken parçanızın tam boyutlarını alın.',
37
+ },
38
+ {
39
+ name: 'Çekme katsayısını girin',
40
+ text: 'Kilinizin paketinde üretici tarafından sağlanan toplam çekme yüzdesini (kuruma + pişirme) arayın.',
41
+ },
42
+ {
43
+ name: 'Beklenen nihai boyutları alın',
44
+ text: 'Fırından çıktıktan sonra parçanızın ne kadar ölçüleceğini bilmek için hesaplayıcıyı kullanın ve geçmelerinizi veya kapaklarınızı buna göre planlayın.',
45
+ },
46
+ {
47
+ name: 'Hedefler için ters hesaplama',
48
+ text: 'Eğer parçanızın sonunda tam olarak X cm olmasını istiyorsanız, tornada hangi boyutta olması gerektiğini bilmek için ters hesaplamayı kullanın.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowToThing> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: 'tr',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<ClayCalculatorUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: 'Sıkça Sorulan Sorular',
91
+ faq: faqData,
92
+ bibliographyTitle: 'Referanslar',
93
+ bibliography: [
94
+ {
95
+ name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
+ url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
+ },
98
+ {
99
+ name: 'Ceramic Arts Network - Understanding Shrinkage',
100
+ url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
101
+ },
102
+ ],
103
+ howTo: howToData,
104
+ schemas: [faqSchema, howToSchema, appSchema],
105
+ seo: [
106
+ {
107
+ type: 'title',
108
+ text: 'Kil Fiziği: Çekme ve Genleşme',
109
+ level: 2,
110
+ },
111
+ {
112
+ type: 'paragraph',
113
+ html: 'Kil, tüm seramik süreci boyunca boyutu değişen canlı bir malzemedir. Islak bir parçayı şekillendirdiğiniz andan fırından çıkana kadar orijinal boyutunun %8 ile %15\'ini kaybedebilir. Bu çekmeyi hesaplamak, ihtiyacınız olan tam boyutlarda parçalar oluşturmak için temeldir.',
114
+ },
115
+ {
116
+ type: 'grid',
117
+ columns: [
118
+ {
119
+ type: 'card',
120
+ title: 'Çekme Aşamaları',
121
+ html: '<p><strong>1. Kuruma (Islak → Kuru):</strong> Su kaybettikçe kil parçacıkları birbirine yaklaşır. Bu en büyük çekmedir (%4-8). Kalın parçalar çok hızlı kururlarsa çatlayabilirler.</p><p><strong>2. Pişirme (Kuru → Bisküvi):</strong> 900-1000°C arasında kil geri dönüşü olmayan kimyasal değişimlere uğrar. %2-4 ek çekme olur. Parça gözenekli hale gelir ancak dayanıklıdır.</p><p><strong>3. Vitrifikasyon (Yüksek Sıcaklık):</strong> 1200-1300°C\'de kil camlaşır. %1-3 son çekme olur. Taş çini ve porselen maksimum yoğunluğuna ulaşır.</p>',
122
+ },
123
+ {
124
+ type: 'card',
125
+ title: 'Etkileyen Değişkenler',
126
+ html: '<ul><li><strong>Kil türü:</strong> Kırmızı killer, porselenlere (%12-15) göre daha az çeker (%8-10).</li><li><strong>Duvar kalınlığı:</strong> İnce duvarlar kalın olanlara göre daha homojen çeker.</li><li><strong>Pişirme sıcaklığı:</strong> Sıcaklık ne kadar yüksekse çekme ve camlaşma o kadar artar.</li><li><strong>Şamot içeriği:</strong> Şamot (ezilmiş, önceden pişirilmiş kil) eklemek çekmeyi azaltır.</li></ul>',
127
+ },
128
+ ],
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: 'Pratik Uygulamalar',
133
+ level: 2,
134
+ },
135
+ {
136
+ type: 'title',
137
+ text: 'Kalıp Tasarımı',
138
+ level: 3,
139
+ },
140
+ {
141
+ type: 'paragraph',
142
+ html: 'Nihai çapı 8 cm olan bir fincana ihtiyacınız varsa ve kiliniz %12 çekiyorsa, kalıbı <strong>9.1 cm</strong> yapmalısınız. Bu ters hesaplama seri üretimde kritiktir.',
143
+ },
144
+ {
145
+ type: 'title',
146
+ text: 'Kapaklar ve Montajlar',
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'paragraph',
151
+ html: 'Birbirine geçmesi gereken parçalar (çaydanlık + kapak, kavanoz + kapak) oluştururken, her ikisi de aynı kilden yapılmalı ve aynı oranda çektiklerinden emin olmak için birlikte pişirilmelidir. %1\'lik bir fark bile geçmeyi bozabilir.',
152
+ },
153
+ {
154
+ type: 'title',
155
+ text: 'Anıtsal Heykel',
156
+ level: 3,
157
+ },
158
+ {
159
+ type: 'paragraph',
160
+ html: 'Büyük parçalarda, kalın ve ince bölümler arasındaki fark çekmesi çatlaklara neden olabilir. Deneyimli seramik sanatçıları, daha fazla çekeceğini bildikleri bölgelerde duvarları daha kalın bırakarak bunu telafi ederler.',
161
+ },
162
+ ],
163
+ ui: {
164
+ labelInitialSize: 'Başlangıç Boyutu (mm)',
165
+ labelShrinkage: 'Çekme Yüzdesi (%)',
166
+ labelLow: 'Düşük (Terrakotta)',
167
+ labelMedium: 'Orta (Stoneware)',
168
+ labelHigh: 'Yüksek (Porselen)',
169
+ presetTerracota: 'Terrakotta (%8)',
170
+ presetGres: 'Stoneware (%12)',
171
+ presetPorcelana: 'Porselen (%15)',
172
+ labelResult: 'Sonuç',
173
+ labelFinalSize: 'Nihai Boyut:',
174
+ labelLoss: 'Toplam Kayıp:',
175
+ tipText:
176
+ 'Belirli bir nihai boyutu elde etmek için gereken başlangıç boyutunu hesaplamak için istenen boyutu (1 - çekme/100) değerine bölün.',
177
+ labelInitialBadge: 'Başlangıç:',
178
+ labelFinalBadge: 'mm nihai',
179
+ labelLossBadge: 'Kayıp:',
180
+ labelInitialArea: 'Başlangıç Alanı',
181
+ labelFinalArea: 'Nihai Alan',
182
+ },
183
+ };
@@ -0,0 +1,183 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ClayCalculatorUI } from '../ui';
4
+
5
+ const slug = 'clay-shrinkage-calculator';
6
+ const title = '粘土缩水率计算器:陶瓷精确尺寸设计';
7
+ const description =
8
+ '计算粘土在干燥和烧成过程中的缩水率。设计具有精确最终尺寸的陶瓷作品。';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '粘土为什么要缩水?',
13
+ answer:
14
+ '粘土缩水主要是因为水分流失。首先是干燥缩水(颗粒间水分蒸发),然后是烧成缩水(去除化学结合水及颗粒烧结)。',
15
+ },
16
+ {
17
+ question: '正常的缩水率是多少?',
18
+ answer:
19
+ '这取决于陶瓷泥料。陶土通常在5-10%之间缩水,而炻器(Gres)和瓷器(Porcelain)由于玻化程度更高,缩水率可达12-15%。',
20
+ },
21
+ {
22
+ question: '如何测量我所用粘土的缩水率?',
23
+ answer:
24
+ '制作一个精确10厘米的测试片。晾干后测量(干燥缩水)。在最终温度下烧制后再次测量(总缩水)。差值即为精确百分比。',
25
+ },
26
+ {
27
+ question: '如果作品在干燥时开裂怎么办?',
28
+ answer:
29
+ '这通常表明干燥过快或不均匀。薄的部分比厚的部分失水更快,从而产生应力。请用塑料薄膜覆盖作品以减缓干燥过程。',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: '测量湿坯尺寸',
36
+ text: '在拉坯或捏塑完成后,趁作品还含有全部水分时,记录其精确尺寸。',
37
+ },
38
+ {
39
+ name: '输入缩水系数',
40
+ text: '在粘土包装上查看制造商提供的总缩水率(干燥+烧成)百分比。',
41
+ },
42
+ {
43
+ name: '获取预期的最终尺寸',
44
+ text: '使用计算器了解作品出窑后的尺寸,并据此规划嵌套件或盖子的尺寸。',
45
+ },
46
+ {
47
+ name: '逆向计算目标尺寸',
48
+ text: '如果您需要作品最终精确达到 X 厘米,请使用逆向计算来确定在陶轮上应制作的尺寸。',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowToThing> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: 'zh',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<ClayCalculatorUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: '常见问题',
91
+ faq: faqData,
92
+ bibliographyTitle: '参考资料',
93
+ bibliography: [
94
+ {
95
+ name: 'The Potter\'s Dictionary - Clay Shrinkage',
96
+ url: 'https://digitalfire.com/glossary/firing+shrinkage',
97
+ },
98
+ {
99
+ name: 'Ceramic Arts Network - Understanding Shrinkage',
100
+ url: 'https://ceramicartsnetwork.org/daily/article/How-to-Determine-Clay-Shrinkage-and-Make-a-Shrink-Rule',
101
+ },
102
+ ],
103
+ howTo: howToData,
104
+ schemas: [faqSchema, howToSchema, appSchema],
105
+ seo: [
106
+ {
107
+ type: 'title',
108
+ text: '粘土物理学:缩水与膨胀',
109
+ level: 2,
110
+ },
111
+ {
112
+ type: 'paragraph',
113
+ html: '粘土是一种在整个陶瓷制作过程中都会改变尺寸的活材料。从您塑造湿坯的那一刻起,直到作品出窑,它可能会失去原始尺寸的8%到15%。计算这一缩水率对于制作具有精确所需尺寸的作品至关重要。',
114
+ },
115
+ {
116
+ type: 'grid',
117
+ columns: [
118
+ {
119
+ type: 'card',
120
+ title: '缩水阶段',
121
+ html: '<p><strong>1. 干燥(湿 → 干):</strong> 随着水分流失,粘土颗粒相互靠近。这是最大的缩水阶段(4-8%)。如果干燥过快,厚壁作品可能会开裂。</p><p><strong>2. 烧成(干 → 素烧):</strong> 在900-1000°C之间,粘土发生不可逆的化学变化。额外的缩水率为2-4%。作品变得多孔但坚固。</p><p><strong>3. 玻化(高温):</strong> 在1200-1300°C时,粘土发生玻化。最终缩水率为1-3%。炻器和瓷器达到最大密度。</p>',
122
+ },
123
+ {
124
+ type: 'card',
125
+ title: '影响变量',
126
+ html: '<ul><li><strong>粘土类型:</strong> 红泥的缩水率(8-10%)通常低于瓷泥(12-15%)。</li><li><strong>壁厚:</strong> 薄壁比厚壁缩水更均匀。</li><li><strong>烧成温度:</strong> 温度越高,缩水和玻化程度越高。</li><li><strong>熟料含量:</strong> 添加熟料(已烧制并研磨的粘土)可以减少缩水。</li></ul>',
127
+ },
128
+ ],
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: '实际应用',
133
+ level: 2,
134
+ },
135
+ {
136
+ type: 'title',
137
+ text: '模具设计',
138
+ level: 3,
139
+ },
140
+ {
141
+ type: 'paragraph',
142
+ html: '如果您需要一个最终直径为8厘米的杯子,而您的粘土缩水率为12%,那么您必须制作<strong>9.1厘米</strong>的模具。这种逆向计算在批量生产中至关重要。',
143
+ },
144
+ {
145
+ type: 'title',
146
+ text: '盖子与组装',
147
+ level: 3,
148
+ },
149
+ {
150
+ type: 'paragraph',
151
+ html: '当您制作需要嵌套的部件(茶壶+盖子,罐子+盖子)时,两者必须使用相同的粘土制作并一起烧制,以确保它们缩水一致。1%的差异就可能破坏配合度。',
152
+ },
153
+ {
154
+ type: 'title',
155
+ text: '大型雕塑',
156
+ level: 3,
157
+ },
158
+ {
159
+ type: 'paragraph',
160
+ html: '在大型作品中,厚薄部分之间的差异缩水会导致裂缝。经验丰富的陶艺家会通过在已知缩水较多的区域保留较厚的壁厚来进行补偿。',
161
+ },
162
+ ],
163
+ ui: {
164
+ labelInitialSize: '初始尺寸 (mm)',
165
+ labelShrinkage: '缩水率百分比 (%)',
166
+ labelLow: '低(陶土/Terracota)',
167
+ labelMedium: '中(炻器/Gres)',
168
+ labelHigh: '高(瓷器/Porcelain)',
169
+ presetTerracota: '陶土 (8%)',
170
+ presetGres: '炻器 (12%)',
171
+ presetPorcelana: '瓷器 (15%)',
172
+ labelResult: '结果',
173
+ labelFinalSize: '最终尺寸:',
174
+ labelLoss: '总缩水量:',
175
+ tipText:
176
+ '要计算获得特定最终尺寸所需的初始尺寸,请将目标尺寸除以 (1 - 缩水率/100)。',
177
+ labelInitialBadge: '初始:',
178
+ labelFinalBadge: 'mm 最终',
179
+ labelLossBadge: '缩小:',
180
+ labelInitialArea: '初始区域',
181
+ labelFinalArea: '最终区域',
182
+ },
183
+ };
@@ -6,10 +6,6 @@ import type { ClayCalculatorUI } from './ui';
6
6
 
7
7
  export type ClayCalculatorLocaleContent = ToolLocaleContent<ClayCalculatorUI>;
8
8
 
9
- import { content as es } from './i18n/es';
10
- import { content as en } from './i18n/en';
11
- import { content as fr } from './i18n/fr';
12
-
13
9
  export const clayCalculator: DiyToolEntry<ClayCalculatorUI> = {
14
10
  id: 'clay-calculator',
15
11
  icons: {
@@ -17,9 +13,21 @@ export const clayCalculator: DiyToolEntry<ClayCalculatorUI> = {
17
13
  fg: 'mdi:resize',
18
14
  },
19
15
  i18n: {
20
- es: async () => es,
21
- en: async () => en,
22
- fr: async () => fr,
16
+ de: () => import('./i18n/de').then((m) => m.content),
17
+ en: () => import('./i18n/en').then((m) => m.content),
18
+ es: () => import('./i18n/es').then((m) => m.content),
19
+ fr: () => import('./i18n/fr').then((m) => m.content),
20
+ id: () => import('./i18n/id').then((m) => m.content),
21
+ it: () => import('./i18n/it').then((m) => m.content),
22
+ ja: () => import('./i18n/ja').then((m) => m.content),
23
+ ko: () => import('./i18n/ko').then((m) => m.content),
24
+ nl: () => import('./i18n/nl').then((m) => m.content),
25
+ pl: () => import('./i18n/pl').then((m) => m.content),
26
+ pt: () => import('./i18n/pt').then((m) => m.content),
27
+ ru: () => import('./i18n/ru').then((m) => m.content),
28
+ sv: () => import('./i18n/sv').then((m) => m.content),
29
+ tr: () => import('./i18n/tr').then((m) => m.content),
30
+ zh: () => import('./i18n/zh').then((m) => m.content),
23
31
  },
24
32
  };
25
33