@jjlmoya/utils-textiles 1.4.0 → 1.6.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 (181) hide show
  1. package/package.json +59 -58
  2. package/src/category/i18n/de.ts +76 -0
  3. package/src/category/i18n/fr.ts +33 -30
  4. package/src/category/i18n/id.ts +76 -0
  5. package/src/category/i18n/it.ts +76 -0
  6. package/src/category/i18n/ja.ts +76 -0
  7. package/src/category/i18n/ko.ts +76 -0
  8. package/src/category/i18n/nl.ts +76 -0
  9. package/src/category/i18n/pl.ts +76 -0
  10. package/src/category/i18n/pt.ts +76 -0
  11. package/src/category/i18n/ru.ts +76 -0
  12. package/src/category/i18n/sv.ts +76 -0
  13. package/src/category/i18n/tr.ts +76 -0
  14. package/src/category/i18n/zh.ts +76 -0
  15. package/src/category/index.ts +39 -7
  16. package/src/index.ts +1 -1
  17. package/src/tests/i18n_coverage.test.ts +36 -0
  18. package/src/tests/schemas_fulfillment.test.ts +23 -0
  19. package/src/tests/slug_language_code_format.test.ts +23 -0
  20. package/src/tests/slug_uniqueness.test.ts +81 -0
  21. package/src/tests/title_quality.test.ts +55 -0
  22. package/src/tool/burnTest/i18n/de.ts +225 -0
  23. package/src/tool/burnTest/i18n/id.ts +225 -0
  24. package/src/tool/burnTest/i18n/it.ts +225 -0
  25. package/src/tool/burnTest/i18n/ja.ts +225 -0
  26. package/src/tool/burnTest/i18n/ko.ts +225 -0
  27. package/src/tool/burnTest/i18n/nl.ts +225 -0
  28. package/src/tool/burnTest/i18n/pl.ts +225 -0
  29. package/src/tool/burnTest/i18n/pt.ts +225 -0
  30. package/src/tool/burnTest/i18n/ru.ts +225 -0
  31. package/src/tool/burnTest/i18n/sv.ts +225 -0
  32. package/src/tool/burnTest/i18n/tr.ts +225 -0
  33. package/src/tool/burnTest/i18n/zh.ts +225 -0
  34. package/src/tool/burnTest/index.ts +15 -7
  35. package/src/tool/clothingSizeConverter/i18n/de.ts +356 -0
  36. package/src/tool/clothingSizeConverter/i18n/id.ts +356 -0
  37. package/src/tool/clothingSizeConverter/i18n/it.ts +356 -0
  38. package/src/tool/clothingSizeConverter/i18n/ja.ts +356 -0
  39. package/src/tool/clothingSizeConverter/i18n/ko.ts +356 -0
  40. package/src/tool/clothingSizeConverter/i18n/nl.ts +356 -0
  41. package/src/tool/clothingSizeConverter/i18n/pl.ts +356 -0
  42. package/src/tool/clothingSizeConverter/i18n/pt.ts +356 -0
  43. package/src/tool/clothingSizeConverter/i18n/ru.ts +356 -0
  44. package/src/tool/clothingSizeConverter/i18n/sv.ts +356 -0
  45. package/src/tool/clothingSizeConverter/i18n/tr.ts +356 -0
  46. package/src/tool/clothingSizeConverter/i18n/zh.ts +356 -0
  47. package/src/tool/clothingSizeConverter/index.ts +15 -7
  48. package/src/tool/fabricProjectCalculator/i18n/de.ts +250 -0
  49. package/src/tool/fabricProjectCalculator/i18n/id.ts +250 -0
  50. package/src/tool/fabricProjectCalculator/i18n/it.ts +250 -0
  51. package/src/tool/fabricProjectCalculator/i18n/ja.ts +250 -0
  52. package/src/tool/fabricProjectCalculator/i18n/ko.ts +250 -0
  53. package/src/tool/fabricProjectCalculator/i18n/nl.ts +250 -0
  54. package/src/tool/fabricProjectCalculator/i18n/pl.ts +250 -0
  55. package/src/tool/fabricProjectCalculator/i18n/pt.ts +250 -0
  56. package/src/tool/fabricProjectCalculator/i18n/ru.ts +250 -0
  57. package/src/tool/fabricProjectCalculator/i18n/sv.ts +250 -0
  58. package/src/tool/fabricProjectCalculator/i18n/tr.ts +250 -0
  59. package/src/tool/fabricProjectCalculator/i18n/zh.ts +250 -0
  60. package/src/tool/fabricProjectCalculator/index.ts +15 -7
  61. package/src/tool/fabricTruth/i18n/de.ts +282 -0
  62. package/src/tool/fabricTruth/i18n/en.ts +1 -1
  63. package/src/tool/fabricTruth/i18n/fr.ts +1 -1
  64. package/src/tool/fabricTruth/i18n/id.ts +282 -0
  65. package/src/tool/fabricTruth/i18n/it.ts +282 -0
  66. package/src/tool/fabricTruth/i18n/ja.ts +282 -0
  67. package/src/tool/fabricTruth/i18n/ko.ts +282 -0
  68. package/src/tool/fabricTruth/i18n/nl.ts +282 -0
  69. package/src/tool/fabricTruth/i18n/pl.ts +282 -0
  70. package/src/tool/fabricTruth/i18n/pt.ts +282 -0
  71. package/src/tool/fabricTruth/i18n/ru.ts +282 -0
  72. package/src/tool/fabricTruth/i18n/sv.ts +282 -0
  73. package/src/tool/fabricTruth/i18n/tr.ts +282 -0
  74. package/src/tool/fabricTruth/i18n/zh.ts +286 -0
  75. package/src/tool/fabricTruth/index.ts +15 -7
  76. package/src/tool/fiberPrep/i18n/de.ts +225 -0
  77. package/src/tool/fiberPrep/i18n/id.ts +225 -0
  78. package/src/tool/fiberPrep/i18n/it.ts +225 -0
  79. package/src/tool/fiberPrep/i18n/ja.ts +225 -0
  80. package/src/tool/fiberPrep/i18n/ko.ts +225 -0
  81. package/src/tool/fiberPrep/i18n/nl.ts +225 -0
  82. package/src/tool/fiberPrep/i18n/pl.ts +225 -0
  83. package/src/tool/fiberPrep/i18n/pt.ts +225 -0
  84. package/src/tool/fiberPrep/i18n/ru.ts +225 -0
  85. package/src/tool/fiberPrep/i18n/sv.ts +225 -0
  86. package/src/tool/fiberPrep/i18n/tr.ts +225 -0
  87. package/src/tool/fiberPrep/i18n/zh.ts +225 -0
  88. package/src/tool/fiberPrep/index.ts +15 -7
  89. package/src/tool/knittingGauge/i18n/de.ts +234 -0
  90. package/src/tool/knittingGauge/i18n/id.ts +234 -0
  91. package/src/tool/knittingGauge/i18n/it.ts +234 -0
  92. package/src/tool/knittingGauge/i18n/ja.ts +234 -0
  93. package/src/tool/knittingGauge/i18n/ko.ts +234 -0
  94. package/src/tool/knittingGauge/i18n/nl.ts +234 -0
  95. package/src/tool/knittingGauge/i18n/pl.ts +234 -0
  96. package/src/tool/knittingGauge/i18n/pt.ts +234 -0
  97. package/src/tool/knittingGauge/i18n/ru.ts +234 -0
  98. package/src/tool/knittingGauge/i18n/sv.ts +234 -0
  99. package/src/tool/knittingGauge/i18n/tr.ts +234 -0
  100. package/src/tool/knittingGauge/i18n/zh.ts +234 -0
  101. package/src/tool/knittingGauge/index.ts +15 -7
  102. package/src/tool/laundryGuide/i18n/de.ts +275 -0
  103. package/src/tool/laundryGuide/i18n/id.ts +275 -0
  104. package/src/tool/laundryGuide/i18n/it.ts +275 -0
  105. package/src/tool/laundryGuide/i18n/ja.ts +275 -0
  106. package/src/tool/laundryGuide/i18n/ko.ts +275 -0
  107. package/src/tool/laundryGuide/i18n/nl.ts +275 -0
  108. package/src/tool/laundryGuide/i18n/pl.ts +275 -0
  109. package/src/tool/laundryGuide/i18n/pt.ts +275 -0
  110. package/src/tool/laundryGuide/i18n/ru.ts +275 -0
  111. package/src/tool/laundryGuide/i18n/sv.ts +275 -0
  112. package/src/tool/laundryGuide/i18n/tr.ts +275 -0
  113. package/src/tool/laundryGuide/i18n/zh.ts +275 -0
  114. package/src/tool/laundryGuide/index.ts +15 -7
  115. package/src/tool/needleConverter/i18n/de.ts +212 -0
  116. package/src/tool/needleConverter/i18n/id.ts +212 -0
  117. package/src/tool/needleConverter/i18n/it.ts +212 -0
  118. package/src/tool/needleConverter/i18n/ja.ts +212 -0
  119. package/src/tool/needleConverter/i18n/ko.ts +212 -0
  120. package/src/tool/needleConverter/i18n/nl.ts +212 -0
  121. package/src/tool/needleConverter/i18n/pl.ts +212 -0
  122. package/src/tool/needleConverter/i18n/pt.ts +212 -0
  123. package/src/tool/needleConverter/i18n/ru.ts +212 -0
  124. package/src/tool/needleConverter/i18n/sv.ts +212 -0
  125. package/src/tool/needleConverter/i18n/tr.ts +212 -0
  126. package/src/tool/needleConverter/i18n/zh.ts +212 -0
  127. package/src/tool/needleConverter/index.ts +15 -7
  128. package/src/tool/sewingPatternScaler/i18n/de.ts +227 -0
  129. package/src/tool/sewingPatternScaler/i18n/id.ts +227 -0
  130. package/src/tool/sewingPatternScaler/i18n/it.ts +227 -0
  131. package/src/tool/sewingPatternScaler/i18n/ja.ts +227 -0
  132. package/src/tool/sewingPatternScaler/i18n/ko.ts +227 -0
  133. package/src/tool/sewingPatternScaler/i18n/nl.ts +227 -0
  134. package/src/tool/sewingPatternScaler/i18n/pl.ts +227 -0
  135. package/src/tool/sewingPatternScaler/i18n/pt.ts +227 -0
  136. package/src/tool/sewingPatternScaler/i18n/ru.ts +227 -0
  137. package/src/tool/sewingPatternScaler/i18n/sv.ts +227 -0
  138. package/src/tool/sewingPatternScaler/i18n/tr.ts +227 -0
  139. package/src/tool/sewingPatternScaler/i18n/zh.ts +227 -0
  140. package/src/tool/sewingPatternScaler/index.ts +15 -7
  141. package/src/tool/shoeSizeConverter/i18n/de.ts +184 -0
  142. package/src/tool/shoeSizeConverter/i18n/id.ts +184 -0
  143. package/src/tool/shoeSizeConverter/i18n/it.ts +184 -0
  144. package/src/tool/shoeSizeConverter/i18n/ja.ts +184 -0
  145. package/src/tool/shoeSizeConverter/i18n/ko.ts +184 -0
  146. package/src/tool/shoeSizeConverter/i18n/nl.ts +184 -0
  147. package/src/tool/shoeSizeConverter/i18n/pl.ts +184 -0
  148. package/src/tool/shoeSizeConverter/i18n/pt.ts +184 -0
  149. package/src/tool/shoeSizeConverter/i18n/ru.ts +184 -0
  150. package/src/tool/shoeSizeConverter/i18n/sv.ts +184 -0
  151. package/src/tool/shoeSizeConverter/i18n/tr.ts +184 -0
  152. package/src/tool/shoeSizeConverter/i18n/zh.ts +184 -0
  153. package/src/tool/shoeSizeConverter/index.ts +15 -7
  154. package/src/tool/stainChemistry/i18n/de.ts +300 -0
  155. package/src/tool/stainChemistry/i18n/id.ts +300 -0
  156. package/src/tool/stainChemistry/i18n/it.ts +300 -0
  157. package/src/tool/stainChemistry/i18n/ja.ts +300 -0
  158. package/src/tool/stainChemistry/i18n/ko.ts +297 -0
  159. package/src/tool/stainChemistry/i18n/nl.ts +300 -0
  160. package/src/tool/stainChemistry/i18n/pl.ts +300 -0
  161. package/src/tool/stainChemistry/i18n/pt.ts +300 -0
  162. package/src/tool/stainChemistry/i18n/ru.ts +300 -0
  163. package/src/tool/stainChemistry/i18n/sv.ts +300 -0
  164. package/src/tool/stainChemistry/i18n/tr.ts +300 -0
  165. package/src/tool/stainChemistry/i18n/zh.ts +295 -0
  166. package/src/tool/stainChemistry/index.ts +15 -7
  167. package/src/tool/yarnCalculator/i18n/de.ts +310 -0
  168. package/src/tool/yarnCalculator/i18n/id.ts +310 -0
  169. package/src/tool/yarnCalculator/i18n/it.ts +310 -0
  170. package/src/tool/yarnCalculator/i18n/ja.ts +310 -0
  171. package/src/tool/yarnCalculator/i18n/ko.ts +310 -0
  172. package/src/tool/yarnCalculator/i18n/nl.ts +310 -0
  173. package/src/tool/yarnCalculator/i18n/pl.ts +310 -0
  174. package/src/tool/yarnCalculator/i18n/pt.ts +310 -0
  175. package/src/tool/yarnCalculator/i18n/ru.ts +310 -0
  176. package/src/tool/yarnCalculator/i18n/sv.ts +310 -0
  177. package/src/tool/yarnCalculator/i18n/tr.ts +310 -0
  178. package/src/tool/yarnCalculator/i18n/zh.ts +309 -0
  179. package/src/tool/yarnCalculator/index.ts +15 -7
  180. package/src/tools.ts +2 -0
  181. package/src/types.ts +1 -1
@@ -0,0 +1,300 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { StainChemistryUI } from '../ui';
4
+
5
+ const slug = 'textilflecken-chemie-protokoll';
6
+ const title = 'Chemisches Protokoll zur Entfernung von Textilflecken';
7
+ const description =
8
+ 'Wissenschaftliche Protokolle zur Fleckentfernung basierend auf Faserart und chemischer Natur des Flecks. Percarbonat, Enzyme, Lösungsmittel: Die richtige Methode für jeden Fall.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Kann ich Bleichmittel anstelle von Percarbonat verwenden?',
13
+ answer:
14
+ 'Bleichmittel (Natriumhypochlorit) ist hochgradig korrosiv. Es baut die Fasern ab, wodurch sie vergilben und brüchig werden. Percarbonat bleicht durch Aktivsauerstoff und schont dabei die natürliche Molekularstruktur.',
15
+ },
16
+ {
17
+ question: 'Warum hilft Essig gegen Gerüche?',
18
+ answer:
19
+ 'Körpergerüche sind meist alkalisch. Die Essigsäure im Essig neutralisiert sie und wandelt sie in geruchlose Salze um, die beim Ausspülen vollständig entfernt werden.',
20
+ },
21
+ {
22
+ question: 'Sollte ich bei Blut immer kaltes Wasser verwenden?',
23
+ answer:
24
+ 'Ja. Hitze bringt die Blutproteine zum Gerinnen, wodurch sie sich dauerhaft an die Faser binden. Kaltes Wasser hält den Fleck in einem löslichen Zustand und ermöglicht es enzymatischen Wirkstoffen, effektiv zu arbeiten.',
25
+ },
26
+ {
27
+ question: 'Was passiert, wenn ich Aceton auf ein Kleidungsstück aus Acetat auftrage?',
28
+ answer:
29
+ 'Aceton löst Triacetat und Acetat auf. Acetatfasern sind mit Essigsäure veresterte Cellulose und in Aceton vollständig löslich. Das Ergebnis wäre die irreversible Zerstörung des Gewebes.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Faserart identifizieren',
36
+ text: 'Überprüfen Sie das Etikett im Kleidungsstück, um festzustellen, ob es sich um Naturfasern, Synthetik oder Edelfasern (Wolle, Seide, Kaschmir) handelt.',
37
+ },
38
+ {
39
+ name: 'Faser im Tool auswählen',
40
+ text: 'Wählen Sie das entsprechende Material im ersten Auswahlmenü.',
41
+ },
42
+ {
43
+ name: 'Fleckentyp auswählen',
44
+ text: 'Geben Sie an, ob der Fleck organisch (Wein, Obst), proteinhaltig (Blut), fettig oder synthetisch (Tinte) ist.',
45
+ },
46
+ {
47
+ name: 'Angegebenes Protokoll anwenden',
48
+ text: 'Folgen Sie den Anweisungen zu Wirkstoff, Temperatur und Methode. Achten Sie besonders auf die kritischen Warnhinweise.',
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<HowTo> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step) => ({
68
+ '@type': 'HowToStep',
69
+ name: step.name,
70
+ text: step.text,
71
+ })),
72
+ };
73
+
74
+ const appSchema: WithContext<SoftwareApplication> = {
75
+ '@context': 'https://schema.org',
76
+ '@type': 'SoftwareApplication',
77
+ name: title,
78
+ description,
79
+ applicationCategory: 'UtilityApplication',
80
+ operatingSystem: 'All',
81
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
82
+ inLanguage: 'de',
83
+ };
84
+
85
+ export const content: ToolLocaleContent<StainChemistryUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ ui: {
90
+ toolTitle: 'Chemisches Fleckenprotokoll',
91
+ fiberLabel: '1. Faser',
92
+ selectFiberPlaceholder: 'Gewebe auswählen...',
93
+ stainLabel: '2. Fleck',
94
+ selectStainPlaceholder: 'Was ist passiert?',
95
+ molecularDiagnosis: 'Molekulare Diagnose',
96
+ requiredAgent: 'Benötigter Wirkstoff',
97
+ thermalCondition: 'Thermische Bedingung',
98
+ temperature: 'Temperatur',
99
+ cleaningInstructions: 'Reinigungsanweisungen',
100
+ criticalWarning: 'Kritische Vorsicht',
101
+ criticalWarningLabel: 'VORSICHT',
102
+ technicalNote: 'Technischer Hinweis',
103
+ technicalNoteText:
104
+ 'Prüfen Sie vor der vollständigen chemischen Behandlung immer die Farbechtheit an einer unauffälligen Stelle.',
105
+ systemDiagnosis: 'Diagnosesystem',
106
+ systemDiagnosisDesc:
107
+ 'Konfigurieren Sie die Textilparameter, um den Reinigungsleitfaden zu erhalten',
108
+ delicatePercarbonateWarning:
109
+ 'RISIKO DES MOLEKULAREN ABBAUS. Tierische Fasern reagieren hochsensibel auf Percarbonat. Test an unauffälliger Stelle durchführen.',
110
+ fiberData: {
111
+ cotton: { name: 'Baumwolle', family: 'natural', isNoble: false },
112
+ linen: { name: 'Leinen', family: 'natural', isNoble: true },
113
+ wool: { name: 'Wolle / Merino', family: 'natural', isNoble: true },
114
+ silk: { name: 'Seide', family: 'natural', isNoble: true },
115
+ cashmere: { name: 'Kaschmir', family: 'natural', isNoble: true },
116
+ mohair: { name: 'Mohair', family: 'natural', isNoble: true },
117
+ angora: { name: 'Angora', family: 'natural', isNoble: true },
118
+ alpaca: { name: 'Alpaka', family: 'natural', isNoble: true },
119
+ polyester: { name: 'Polyester', family: 'synthetic', isNoble: false },
120
+ viscose: { name: 'Viskose / Rayon', family: 'artificial', isNoble: false },
121
+ nylon: { name: 'Nylon (Polyamid)', family: 'synthetic', isNoble: false },
122
+ acrylic: { name: 'Acryl', family: 'synthetic', isNoble: false },
123
+ },
124
+ agents: {
125
+ percarbonate: {
126
+ name: 'Natriumpercarbonat',
127
+ description: 'Biologisch abbaubares Sauerstoffbleichmittel. Setzt beim Auflösen Aktivsauerstoff frei.',
128
+ warning: 'Bei Proteinfasern (Seide, Wolle) hohe Konzentrationen vermeiden.',
129
+ },
130
+ isopropyl: {
131
+ name: 'Isopropylalkohol',
132
+ description: 'Effektives Lösungsmittel für Pigmente und leichte Fette.',
133
+ warning: 'Kann bei Seide den Glanz beeinträchtigen und einige Kunststoffe lösen, wenn nicht verdünnt.',
134
+ },
135
+ acetone: {
136
+ name: 'Aceton',
137
+ description: 'Starkes Lösungsmittel für Lacke und Klebstoffe.',
138
+ warning: 'VERBOTEN bei Acetat und Triacetat (löst die Faser auf).',
139
+ },
140
+ enzyme: {
141
+ name: 'Enzymatisches Waschmittel',
142
+ description: 'Enthält Proteasen, die biologische Flecken aufspalten.',
143
+ warning: 'Mit Vorsicht bei Wolle und Seide verwenden (diese bestehen aus Protein).',
144
+ },
145
+ vinegar: {
146
+ name: 'Weißer Essig',
147
+ description: 'Milde Essigsäure zur Neutralisierung von Gerüchen und Fixierung von Farben.',
148
+ },
149
+ },
150
+ stains: [
151
+ {
152
+ id: 'wine',
153
+ name: 'Rotwein / Obst',
154
+ protocols: {
155
+ natural: { agentId: 'percarbonate', temperature: '40–60°C', method: 'Langes Einweichen' },
156
+ synthetic: { agentId: 'percarbonate', temperature: '40°C', method: 'Direktes Auftragen als Paste' },
157
+ delicate: {
158
+ agentId: 'vinegar',
159
+ temperature: 'Kalt',
160
+ method: 'Spülen mit Sprudelwasser und Essig',
161
+ notes: 'Nicht reiben',
162
+ },
163
+ },
164
+ },
165
+ {
166
+ id: 'blood',
167
+ name: 'Blut',
168
+ protocols: {
169
+ natural: {
170
+ agentId: 'enzyme',
171
+ temperature: 'Kalt',
172
+ method: 'Einweichen in Salzwasser, dann Enzymreiniger',
173
+ },
174
+ synthetic: { agentId: 'enzyme', temperature: 'Kalt', method: 'Direktes Auftragen' },
175
+ delicate: {
176
+ agentId: 'vinegar',
177
+ temperature: 'Kalt',
178
+ method: 'Sofortiges Ausspülen, Hitze vermeiden',
179
+ },
180
+ },
181
+ },
182
+ {
183
+ id: 'grease',
184
+ name: 'Fett / Öl',
185
+ protocols: {
186
+ natural: {
187
+ agentId: 'isopropyl',
188
+ temperature: '40°C',
189
+ method: 'Mit Alkohol lösen, dann waschen',
190
+ },
191
+ synthetic: {
192
+ agentId: 'isopropyl',
193
+ temperature: '40°C',
194
+ method: 'Saugfähiges Papier unterlegen',
195
+ },
196
+ delicate: { agentId: 'isopropyl', temperature: 'Kalt', method: 'Alkohol zu 50% verdünnen' },
197
+ },
198
+ },
199
+ {
200
+ id: 'ink',
201
+ name: 'Tinte / Marker',
202
+ protocols: {
203
+ natural: {
204
+ agentId: 'isopropyl',
205
+ temperature: 'Raumtemp.',
206
+ method: 'Von außen nach innen abtupfen',
207
+ },
208
+ synthetic: {
209
+ agentId: 'isopropyl',
210
+ temperature: 'Raumtemp.',
211
+ method: 'Vorsicht vor Ausbreitung',
212
+ },
213
+ delicate: {
214
+ agentId: 'isopropyl',
215
+ temperature: 'Kalt',
216
+ method: 'Verdünnen und an verdeckter Stelle testen',
217
+ },
218
+ },
219
+ },
220
+ ],
221
+ },
222
+ seo: [
223
+ {
224
+ type: 'title',
225
+ text: 'Die Chemie hinter der Textilreinigung',
226
+ level: 2,
227
+ },
228
+ {
229
+ type: 'paragraph',
230
+ html: 'Nicht alle Flecken sind gleich, und nicht alle Fasern reagieren gleich auf dieselben chemischen Wirkstoffe. Der Unterschied zwischen der Rettung eines Kleidungsstücks und seiner Zerstörung liegt im Verständnis der molekularen Natur des Flecks und der Faserstruktur.',
231
+ },
232
+ {
233
+ type: 'card',
234
+ title: '01 — Kontrollierte Oxidation',
235
+ icon: 'mdi:atom',
236
+ html: '<strong>Natriumpercarbonat</strong> setzt Aktivsauerstoff frei, der die Doppelbindungen der Chromophore (die Moleküle, die für die Farbe des Flecks verantwortlich sind) aufbricht, wodurch sie farblos und wasserlöslich werden. Es ist die effektivste Methode für organische Flecken.',
237
+ },
238
+ {
239
+ type: 'card',
240
+ title: '02 — Lösung durch Lösungsmittel',
241
+ icon: 'mdi:flask-outline',
242
+ html: 'Flecken wie Öl oder Tinte sind nicht wasserlöslich. Lösungsmittel wie <strong>Isopropylalkohol</strong> oder <strong>Aceton</strong> verringern die Oberflächenspannung und ziehen die unpolaren Moleküle des Flecks an, sodass sie auf ein Trägermedium übertragen werden können.',
243
+ },
244
+ {
245
+ type: 'title',
246
+ text: 'Faserhoheit: Warum die Faserart entscheidend ist',
247
+ level: 2,
248
+ },
249
+ {
250
+ type: 'paragraph',
251
+ html: 'Nicht alle Fasern "verdauen" gleich. <strong>Seide und Wolle</strong> bestehen aus Proteinen (Fibroin und Keratin). Wenn Sie ein enzymatisches Waschmittel verwenden, das darauf ausgelegt ist, Proteine abzubauen (wie bei Blut oder Ei), wird das Waschmittel unkontrolliert anfangen, die Faser selbst anzugreifen und Glanz sowie Struktur des Gewebes zu zerstören.',
252
+ },
253
+ {
254
+ type: 'title',
255
+ text: 'Die Gefahr der Hitze',
256
+ level: 2,
257
+ },
258
+ {
259
+ type: 'paragraph',
260
+ html: 'Einer der häufigsten Fehler ist die Verwendung von heißem Wasser, um einen Blutfleck "aufzuweichen". Chemisch gesehen führt Hitze zur <strong>Koagulation der Proteine</strong> im Fleck, wodurch sie sich dauerhaft in der porösen Struktur der Faser festsetzen. Proteinflecken müssen immer mit kaltem Wasser behandelt werden.',
261
+ },
262
+ {
263
+ type: 'tip',
264
+ title: 'Notfallprotokoll: Rotwein',
265
+ html: '<strong>A. Passive Absorption:</strong> Mit saugfähigem Papier abtupfen, niemals reiben, um mechanische Ausbreitung zu verhindern.<br><strong>B. Osmotische Neutralisierung:</strong> Mit feinem Salz bedecken, um die Flüssigkeit aus dem Faserkern zu ziehen.<br><strong>C. Chemische Aktion:</strong> Eine Paste aus Percarbonat und Wasser bei 40°C auftragen, wenn die Faser hitzebeständig ist.',
266
+ },
267
+ {
268
+ type: 'title',
269
+ text: 'Spezifische Lösungsmittel und Vorsichtsmaßnahmen',
270
+ level: 2,
271
+ },
272
+ {
273
+ type: 'paragraph',
274
+ html: '<strong>Aceton</strong> ist ein hervorragendes Lösungsmittel für Nagellack oder Klebstoff, aber zerstörerisch für <strong>Acetat</strong>. Da es sich um aus Cellulose gewonnene, aber chemisch behandelte Fasern handelt, löst Aceton das Gewebe buchstäblich auf.',
275
+ },
276
+ {
277
+ type: 'paragraph',
278
+ html: '<strong>Isopropylalkohol</strong> ist stabiler, kann aber bei gefärbten Synthetikfasern die Pigmente mitreißen. Wir empfehlen vor der Hauptbehandlung immer den "Saum-Test" an einer unauffälligen Stelle.',
279
+ },
280
+ ],
281
+ faqTitle: 'Häufig gestellte Fragen',
282
+ faq: faqData,
283
+ bibliographyTitle: 'Literaturhinweise',
284
+ bibliography: [
285
+ {
286
+ name: 'AATCC - Association for Advancing Color Technology and Chemistry',
287
+ url: 'https://www.aatcc.org',
288
+ },
289
+ {
290
+ name: 'Kissa, E. — Textile Auxiliaries',
291
+ url: 'https://www.springer.com/gp/book/9783642057328',
292
+ },
293
+ {
294
+ name: 'ISO 105 — Textiles: Tests for Colour Fastness',
295
+ url: 'https://www.iso.org/standard/72682.html',
296
+ },
297
+ ],
298
+ howTo: howToData,
299
+ schemas: [faqSchema, howToSchema, appSchema],
300
+ };
@@ -0,0 +1,300 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { StainChemistryUI } from '../ui';
4
+
5
+ const slug = 'protokol-kimia-noda-tekstil';
6
+ const title = 'Protokol Kimia Penghilang Noda Tekstil';
7
+ const description =
8
+ 'Protokol ilmiah untuk menghilangkan noda berdasarkan jenis serat dan sifat kimia noda. Perkabanat, enzim, pelarut: metode yang tepat untuk setiap kasus.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Bolehkah saya menggunakan pemutih sebagai ganti perkarbonat?',
13
+ answer:
14
+ 'Pemutih (natrium hipoklorit) sangat korosif. Ia mendegradasi serat, menjadikannya kekuningan dan rapuh. Perkarbonat memutihkan melalui oksigen aktif, menjaga struktur molekul alami serat.',
15
+ },
16
+ {
17
+ question: 'Mengapa cuka membantu menghilangkan bau?',
18
+ answer:
19
+ 'Bau badan biasanya bersifat basa. Asam asetat dalam cuka menetralkannya, mengubahnya menjadi garam tak berbau yang akan hilang sepenuhnya saat dibilas.',
20
+ },
21
+ {
22
+ question: 'Haruskah saya selalu menggunakan air dingin untuk noda darah?',
23
+ answer:
24
+ 'Ya. Panas akan membekukan protein darah, sehingga noda menempel permanen pada serat. Air dingin menjaga noda dalam kondisi larut dan memungkinkan agen enzimatik bekerja secara efektif.',
25
+ },
26
+ {
27
+ question: 'Apa yang terjadi jika saya mengoleskan aseton pada kain asetat?',
28
+ answer:
29
+ 'Aseton akan melarutkan triasetat dan asetat. Serat asetat adalah selulosa yang diesterifikasi dengan asam asetat dan sepenuhnya larut dalam aseton. Hasilnya adalah kerusakan kain yang tidak dapat diperbaiki.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Identifikasi jenis serat',
36
+ text: 'Periksa label di dalam pakaian untuk mengetahui pakah itu serat alami, sintetik, atau serat mulia (wol, sutra, cashmere).',
37
+ },
38
+ {
39
+ name: 'Pilih serat di alat',
40
+ text: 'Pilih bahan yang sesuai pada pemilih pertama.',
41
+ },
42
+ {
43
+ name: 'Pilih jenis noda',
44
+ text: 'Tentukan apakah noda tersebut organik (anggur, buah), protein (darah), lemak, atau sintetik (tinta).',
45
+ },
46
+ {
47
+ name: 'Terapkan protokol yang ditunjukkan',
48
+ text: 'Ikuti instruksi mengenai agen, suhu, dan metode. Perhatikan baik-baik peringatan peringatan kritis.',
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<HowTo> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step) => ({
68
+ '@type': 'HowToStep',
69
+ name: step.name,
70
+ text: step.text,
71
+ })),
72
+ };
73
+
74
+ const appSchema: WithContext<SoftwareApplication> = {
75
+ '@context': 'https://schema.org',
76
+ '@type': 'SoftwareApplication',
77
+ name: title,
78
+ description,
79
+ applicationCategory: 'UtilityApplication',
80
+ operatingSystem: 'All',
81
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
82
+ inLanguage: 'id',
83
+ };
84
+
85
+ export const content: ToolLocaleContent<StainChemistryUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ ui: {
90
+ toolTitle: 'Protokol Kimia Noda',
91
+ fiberLabel: '1. Serat',
92
+ selectFiberPlaceholder: 'Pilih kain...',
93
+ stainLabel: '2. Noda',
94
+ selectStainPlaceholder: 'Apa yang terjadi?',
95
+ molecularDiagnosis: 'Diagnosis Molekuler',
96
+ requiredAgent: 'Agen yang Dibutuhkan',
97
+ thermalCondition: 'Kondisi Termal',
98
+ temperature: 'Suhu',
99
+ cleaningInstructions: 'Instruksi Pembersihan',
100
+ criticalWarning: 'Peringatan Kritis',
101
+ criticalWarningLabel: 'PERINGATAN',
102
+ technicalNote: 'Catatan teknis',
103
+ technicalNoteText:
104
+ 'Selalu validasi ketahanan pewarna pada bagian yang tidak terlihat sebelum melakukan perawatan kimia penuh.',
105
+ systemDiagnosis: 'Sistem Diagnosis',
106
+ systemDiagnosisDesc:
107
+ 'Konfigurasikan parameter tekstil untuk mendapatkan panduan pembersihan',
108
+ delicatePercarbonateWarning:
109
+ 'RISIKO DEGRADASI MOLEKULER. Serat hewani sangat sensitif terhadap perkarbonat. Lakukan tes pada bagian yang tidak terlihat.',
110
+ fiberData: {
111
+ cotton: { name: 'Kapas', family: 'natural', isNoble: false },
112
+ linen: { name: 'Linen', family: 'natural', isNoble: true },
113
+ wool: { name: 'Wol / Merino', family: 'natural', isNoble: true },
114
+ silk: { name: 'Sutra', family: 'natural', isNoble: true },
115
+ cashmere: { name: 'Cashmere', family: 'natural', isNoble: true },
116
+ mohair: { name: 'Mohair', family: 'natural', isNoble: true },
117
+ angora: { name: 'Angora', family: 'natural', isNoble: true },
118
+ alpaca: { name: 'Alpaka', family: 'natural', isNoble: true },
119
+ polyester: { name: 'Poliester', family: 'synthetic', isNoble: false },
120
+ viscose: { name: 'Viskosa / Rayon', family: 'artificial', isNoble: false },
121
+ nylon: { name: 'Nilon (Poliamida)', family: 'synthetic', isNoble: false },
122
+ acrylic: { name: 'Akrilik', family: 'synthetic', isNoble: false },
123
+ },
124
+ agents: {
125
+ percarbonate: {
126
+ name: 'Natrium Perkarbonat',
127
+ description: 'Pemutih beroksigen biodegradable. Melepaskan oksigen aktif saat dilarutkan.',
128
+ warning: 'Hindari pada serat protein (sutra, wol) dalam konsentrasi tinggi.',
129
+ },
130
+ isopropyl: {
131
+ name: 'Isopropil Alkohol',
132
+ description: 'Pelarut efektif untuk pigmen dan lemak ringan.',
133
+ warning: 'Dapat merusak kilau pada sutra dan melarutkan beberapa akrilik jika tidak diencerkan.',
134
+ },
135
+ acetone: {
136
+ name: 'Aseton',
137
+ description: 'Pelarut kuat untuk pernis dan lem.',
138
+ warning: 'DILARANG pada asetat dan triasetat (melarutkan serat).',
139
+ },
140
+ enzyme: {
141
+ name: 'Deterjen Enzimtik',
142
+ description: 'Mengandung protease yang memecah noda biologis.',
143
+ warning: 'Gunakan dengan hati-hati pada wol dan sutra (keduanya adalah protein).',
144
+ },
145
+ vinegar: {
146
+ name: 'Cuka Putih',
147
+ description: 'Asam asetat ringan untuk menetralkan bau dan mengunci warna.',
148
+ },
149
+ },
150
+ stains: [
151
+ {
152
+ id: 'wine',
153
+ name: 'Anggur Merah / Buah',
154
+ protocols: {
155
+ natural: { agentId: 'percarbonate', temperature: '40–60°C', method: 'Perendaman lama' },
156
+ synthetic: { agentId: 'percarbonate', temperature: '40°C', method: 'Pasta langsung' },
157
+ delicate: {
158
+ agentId: 'vinegar',
159
+ temperature: 'Dingin',
160
+ method: 'Bilas dengan air soda dan cuka',
161
+ notes: 'Jangan digosok',
162
+ },
163
+ },
164
+ },
165
+ {
166
+ id: 'blood',
167
+ name: 'Darah',
168
+ protocols: {
169
+ natural: {
170
+ agentId: 'enzyme',
171
+ temperature: 'Dingin',
172
+ method: 'Rendam dalam air garam lalu enzim',
173
+ },
174
+ synthetic: { agentId: 'enzyme', temperature: 'Dingin', method: 'Aplikasi langsung' },
175
+ delicate: {
176
+ agentId: 'vinegar',
177
+ temperature: 'Dingin',
178
+ method: 'Segera bilas, hindari panas',
179
+ },
180
+ },
181
+ },
182
+ {
183
+ id: 'grease',
184
+ name: 'Lemak / Minyak',
185
+ protocols: {
186
+ natural: {
187
+ agentId: 'isopropyl',
188
+ temperature: '40°C',
189
+ method: 'Larutkan dengan alkohol lalu cuci',
190
+ },
191
+ synthetic: {
192
+ agentId: 'isopropyl',
193
+ temperature: '40°C',
194
+ method: 'Letakkan kertas penyerap di bawahnya',
195
+ },
196
+ delicate: { agentId: 'isopropyl', temperature: 'Dingin', method: 'Encerkan alkohol hingga 50%' },
197
+ },
198
+ },
199
+ {
200
+ id: 'ink',
201
+ name: 'Tinta / Spidol',
202
+ protocols: {
203
+ natural: {
204
+ agentId: 'isopropyl',
205
+ temperature: 'Suhu Ruang',
206
+ method: 'Seka perlahan dari luar ke dalam',
207
+ },
208
+ synthetic: {
209
+ agentId: 'isopropyl',
210
+ temperature: 'Suhu Ruang',
211
+ method: 'Hati-hati dengan penyebaran noda',
212
+ },
213
+ delicate: {
214
+ agentId: 'isopropyl',
215
+ temperature: 'Dingin',
216
+ method: 'Encerkan dan uji pada bagian tersembunyi',
217
+ },
218
+ },
219
+ },
220
+ ],
221
+ },
222
+ seo: [
223
+ {
224
+ type: 'title',
225
+ text: 'Kimia di Balik Pembersihan Tekstil',
226
+ level: 2,
227
+ },
228
+ {
229
+ type: 'paragraph',
230
+ html: 'Tidak semua noda diciptakan sama, dan tidak semua serat bereaksi sama terhadap agen kimia yang sama. Perbedaan antara menyelamatkan pakaian dan merusaknya terletak pada pemahaman akan sifat molekuler noda dan struktur serat.',
231
+ },
232
+ {
233
+ type: 'card',
234
+ title: '01 — Oksidasi Terkontrol',
235
+ icon: 'mdi:atom',
236
+ html: '<strong>Natrium perkarbonat</strong> melepaskan oksigen aktif yang memecah ikatan rangkap kromofor (molekul yang bertanggung jawab atas warna noda), menjadikannya tidak berwarna dan larut dalam air. Ini adalah metode paling efektif untuk noda organik.',
237
+ },
238
+ {
239
+ type: 'card',
240
+ title: '02 — Kelarutan oleh Pelarut',
241
+ icon: 'mdi:flask-outline',
242
+ html: 'Noda seperti minyak atau tinta tidak larut dalam air. Pelarut seperti <strong>isopropil alkohol</strong> atau <strong>aseton</strong> mengurangi tegangan permukaan dan menarik molekul non-polar noda, memungkinkannya berpindah ke media pendukung.',
243
+ },
244
+ {
245
+ type: 'title',
246
+ text: 'Kedaulatan atas Serat: Mengapa Jenis Itu Penting',
247
+ level: 2,
248
+ },
249
+ {
250
+ type: 'paragraph',
251
+ html: 'Tidak semua serat "makan" dengan cara yang sama. <strong>Sutra dan wol</strong> adalah protein (fibroin dan keratin). Jika Anda menggunakan deterjen enzimatik yang dirancang untuk "memakan protein" (seperti noda darah atau telur) tanpa kontrol, deterjen tersebut akan mulai mendegradasi serat itu sendiri, merusak kilau dan struktur kain.',
252
+ },
253
+ {
254
+ type: 'title',
255
+ text: 'Bahaya Panas',
256
+ level: 2,
257
+ },
258
+ {
259
+ type: 'paragraph',
260
+ html: 'Salah satu kesalahan paling umum adalah menggunakan air panas untuk "melunakkan" noda darah. Secara kimia, panas menyebabkan <strong>koagulasi protein</strong> noda, yang membuatnya menempel permanen pada struktur pori serat. Noda protein harus selalu ditangani dengan air dingin.',
261
+ },
262
+ {
263
+ type: 'tip',
264
+ title: 'Protokol Darurat: Anggur Merah',
265
+ html: '<strong>A. Penyerapan pasif:</strong> Tempelkan kertas penyerap, jangan pernah digosok untuk menghindari penyebaran mekanis.<br><strong>B. Netralisasi osmotik:</strong> Tutup dengan garam halus untuk menarik cairan keluar dari inti serat.<br><strong>C. Tindakan kimia:</strong> Oleskan pasta perkarbonat dan air pada suhu 40°C jika serat tahan panas.',
266
+ },
267
+ {
268
+ type: 'title',
269
+ text: 'Pelarut Spesifik dan Peringatan',
270
+ level: 2,
271
+ },
272
+ {
273
+ type: 'paragraph',
274
+ html: '<strong>Aseton</strong> adalah pelarut yang luar biasa untuk cat kuku atau lem, tetapi merusak untuk <strong>asetat</strong>. Karena asetat adalah serat turunan selulosa yang diproses secara kimia, aseton secara harfiah melarutkan kain tersebut.',
275
+ },
276
+ {
277
+ type: 'paragraph',
278
+ html: '<strong>Isopropil alkohol</strong> lebih stabil, tetapi pada sintetik berwarna dapat menarik pigmen itu sendiri. Kami selalu menyarankan untuk melakukan "tes keliman" pada bagian yang tidak terlihat sebelum perawatan utama.',
279
+ },
280
+ ],
281
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
282
+ faq: faqData,
283
+ bibliographyTitle: 'Referensi',
284
+ bibliography: [
285
+ {
286
+ name: 'AATCC - Association for Advancing Color Technology and Chemistry',
287
+ url: 'https://www.aatcc.org',
288
+ },
289
+ {
290
+ name: 'Kissa, E. — Textile Auxiliaries',
291
+ url: 'https://www.springer.com/gp/book/9783642057328',
292
+ },
293
+ {
294
+ name: 'ISO 105 — Textiles: Tests for Colour Fastness',
295
+ url: 'https://www.iso.org/standard/72682.html',
296
+ },
297
+ ],
298
+ howTo: howToData,
299
+ schemas: [faqSchema, howToSchema, appSchema],
300
+ };