@jjlmoya/utils-textiles 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 (179) 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 +12 -12
  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_uniqueness.test.ts +81 -0
  20. package/src/tests/title_quality.test.ts +55 -0
  21. package/src/tool/burnTest/i18n/de.ts +225 -0
  22. package/src/tool/burnTest/i18n/id.ts +225 -0
  23. package/src/tool/burnTest/i18n/it.ts +225 -0
  24. package/src/tool/burnTest/i18n/ja.ts +225 -0
  25. package/src/tool/burnTest/i18n/ko.ts +225 -0
  26. package/src/tool/burnTest/i18n/nl.ts +225 -0
  27. package/src/tool/burnTest/i18n/pl.ts +225 -0
  28. package/src/tool/burnTest/i18n/pt.ts +225 -0
  29. package/src/tool/burnTest/i18n/ru.ts +225 -0
  30. package/src/tool/burnTest/i18n/sv.ts +225 -0
  31. package/src/tool/burnTest/i18n/tr.ts +225 -0
  32. package/src/tool/burnTest/i18n/zh.ts +225 -0
  33. package/src/tool/burnTest/index.ts +15 -7
  34. package/src/tool/clothingSizeConverter/i18n/de.ts +356 -0
  35. package/src/tool/clothingSizeConverter/i18n/id.ts +356 -0
  36. package/src/tool/clothingSizeConverter/i18n/it.ts +356 -0
  37. package/src/tool/clothingSizeConverter/i18n/ja.ts +356 -0
  38. package/src/tool/clothingSizeConverter/i18n/ko.ts +356 -0
  39. package/src/tool/clothingSizeConverter/i18n/nl.ts +356 -0
  40. package/src/tool/clothingSizeConverter/i18n/pl.ts +356 -0
  41. package/src/tool/clothingSizeConverter/i18n/pt.ts +356 -0
  42. package/src/tool/clothingSizeConverter/i18n/ru.ts +356 -0
  43. package/src/tool/clothingSizeConverter/i18n/sv.ts +356 -0
  44. package/src/tool/clothingSizeConverter/i18n/tr.ts +356 -0
  45. package/src/tool/clothingSizeConverter/i18n/zh.ts +356 -0
  46. package/src/tool/clothingSizeConverter/index.ts +15 -7
  47. package/src/tool/fabricProjectCalculator/i18n/de.ts +250 -0
  48. package/src/tool/fabricProjectCalculator/i18n/id.ts +250 -0
  49. package/src/tool/fabricProjectCalculator/i18n/it.ts +250 -0
  50. package/src/tool/fabricProjectCalculator/i18n/ja.ts +250 -0
  51. package/src/tool/fabricProjectCalculator/i18n/ko.ts +250 -0
  52. package/src/tool/fabricProjectCalculator/i18n/nl.ts +250 -0
  53. package/src/tool/fabricProjectCalculator/i18n/pl.ts +250 -0
  54. package/src/tool/fabricProjectCalculator/i18n/pt.ts +250 -0
  55. package/src/tool/fabricProjectCalculator/i18n/ru.ts +250 -0
  56. package/src/tool/fabricProjectCalculator/i18n/sv.ts +250 -0
  57. package/src/tool/fabricProjectCalculator/i18n/tr.ts +250 -0
  58. package/src/tool/fabricProjectCalculator/i18n/zh.ts +250 -0
  59. package/src/tool/fabricProjectCalculator/index.ts +15 -7
  60. package/src/tool/fabricTruth/i18n/de.ts +282 -0
  61. package/src/tool/fabricTruth/i18n/en.ts +1 -1
  62. package/src/tool/fabricTruth/i18n/fr.ts +1 -1
  63. package/src/tool/fabricTruth/i18n/id.ts +282 -0
  64. package/src/tool/fabricTruth/i18n/it.ts +282 -0
  65. package/src/tool/fabricTruth/i18n/ja.ts +282 -0
  66. package/src/tool/fabricTruth/i18n/ko.ts +282 -0
  67. package/src/tool/fabricTruth/i18n/nl.ts +282 -0
  68. package/src/tool/fabricTruth/i18n/pl.ts +282 -0
  69. package/src/tool/fabricTruth/i18n/pt.ts +282 -0
  70. package/src/tool/fabricTruth/i18n/ru.ts +282 -0
  71. package/src/tool/fabricTruth/i18n/sv.ts +282 -0
  72. package/src/tool/fabricTruth/i18n/tr.ts +282 -0
  73. package/src/tool/fabricTruth/i18n/zh.ts +286 -0
  74. package/src/tool/fabricTruth/index.ts +15 -7
  75. package/src/tool/fiberPrep/i18n/de.ts +225 -0
  76. package/src/tool/fiberPrep/i18n/id.ts +225 -0
  77. package/src/tool/fiberPrep/i18n/it.ts +225 -0
  78. package/src/tool/fiberPrep/i18n/ja.ts +225 -0
  79. package/src/tool/fiberPrep/i18n/ko.ts +225 -0
  80. package/src/tool/fiberPrep/i18n/nl.ts +225 -0
  81. package/src/tool/fiberPrep/i18n/pl.ts +225 -0
  82. package/src/tool/fiberPrep/i18n/pt.ts +225 -0
  83. package/src/tool/fiberPrep/i18n/ru.ts +225 -0
  84. package/src/tool/fiberPrep/i18n/sv.ts +225 -0
  85. package/src/tool/fiberPrep/i18n/tr.ts +225 -0
  86. package/src/tool/fiberPrep/i18n/zh.ts +225 -0
  87. package/src/tool/fiberPrep/index.ts +15 -7
  88. package/src/tool/knittingGauge/i18n/de.ts +234 -0
  89. package/src/tool/knittingGauge/i18n/id.ts +234 -0
  90. package/src/tool/knittingGauge/i18n/it.ts +234 -0
  91. package/src/tool/knittingGauge/i18n/ja.ts +234 -0
  92. package/src/tool/knittingGauge/i18n/ko.ts +234 -0
  93. package/src/tool/knittingGauge/i18n/nl.ts +234 -0
  94. package/src/tool/knittingGauge/i18n/pl.ts +234 -0
  95. package/src/tool/knittingGauge/i18n/pt.ts +234 -0
  96. package/src/tool/knittingGauge/i18n/ru.ts +234 -0
  97. package/src/tool/knittingGauge/i18n/sv.ts +234 -0
  98. package/src/tool/knittingGauge/i18n/tr.ts +234 -0
  99. package/src/tool/knittingGauge/i18n/zh.ts +234 -0
  100. package/src/tool/knittingGauge/index.ts +15 -7
  101. package/src/tool/laundryGuide/i18n/de.ts +275 -0
  102. package/src/tool/laundryGuide/i18n/id.ts +275 -0
  103. package/src/tool/laundryGuide/i18n/it.ts +275 -0
  104. package/src/tool/laundryGuide/i18n/ja.ts +275 -0
  105. package/src/tool/laundryGuide/i18n/ko.ts +275 -0
  106. package/src/tool/laundryGuide/i18n/nl.ts +275 -0
  107. package/src/tool/laundryGuide/i18n/pl.ts +275 -0
  108. package/src/tool/laundryGuide/i18n/pt.ts +275 -0
  109. package/src/tool/laundryGuide/i18n/ru.ts +275 -0
  110. package/src/tool/laundryGuide/i18n/sv.ts +275 -0
  111. package/src/tool/laundryGuide/i18n/tr.ts +275 -0
  112. package/src/tool/laundryGuide/i18n/zh.ts +275 -0
  113. package/src/tool/laundryGuide/index.ts +15 -7
  114. package/src/tool/needleConverter/i18n/de.ts +212 -0
  115. package/src/tool/needleConverter/i18n/id.ts +212 -0
  116. package/src/tool/needleConverter/i18n/it.ts +212 -0
  117. package/src/tool/needleConverter/i18n/ja.ts +212 -0
  118. package/src/tool/needleConverter/i18n/ko.ts +212 -0
  119. package/src/tool/needleConverter/i18n/nl.ts +212 -0
  120. package/src/tool/needleConverter/i18n/pl.ts +212 -0
  121. package/src/tool/needleConverter/i18n/pt.ts +212 -0
  122. package/src/tool/needleConverter/i18n/ru.ts +212 -0
  123. package/src/tool/needleConverter/i18n/sv.ts +212 -0
  124. package/src/tool/needleConverter/i18n/tr.ts +212 -0
  125. package/src/tool/needleConverter/i18n/zh.ts +212 -0
  126. package/src/tool/needleConverter/index.ts +15 -7
  127. package/src/tool/sewingPatternScaler/i18n/de.ts +227 -0
  128. package/src/tool/sewingPatternScaler/i18n/id.ts +227 -0
  129. package/src/tool/sewingPatternScaler/i18n/it.ts +227 -0
  130. package/src/tool/sewingPatternScaler/i18n/ja.ts +227 -0
  131. package/src/tool/sewingPatternScaler/i18n/ko.ts +227 -0
  132. package/src/tool/sewingPatternScaler/i18n/nl.ts +227 -0
  133. package/src/tool/sewingPatternScaler/i18n/pl.ts +227 -0
  134. package/src/tool/sewingPatternScaler/i18n/pt.ts +227 -0
  135. package/src/tool/sewingPatternScaler/i18n/ru.ts +227 -0
  136. package/src/tool/sewingPatternScaler/i18n/sv.ts +227 -0
  137. package/src/tool/sewingPatternScaler/i18n/tr.ts +227 -0
  138. package/src/tool/sewingPatternScaler/i18n/zh.ts +227 -0
  139. package/src/tool/sewingPatternScaler/index.ts +15 -7
  140. package/src/tool/shoeSizeConverter/i18n/de.ts +184 -0
  141. package/src/tool/shoeSizeConverter/i18n/id.ts +184 -0
  142. package/src/tool/shoeSizeConverter/i18n/it.ts +184 -0
  143. package/src/tool/shoeSizeConverter/i18n/ja.ts +184 -0
  144. package/src/tool/shoeSizeConverter/i18n/ko.ts +184 -0
  145. package/src/tool/shoeSizeConverter/i18n/nl.ts +184 -0
  146. package/src/tool/shoeSizeConverter/i18n/pl.ts +184 -0
  147. package/src/tool/shoeSizeConverter/i18n/pt.ts +184 -0
  148. package/src/tool/shoeSizeConverter/i18n/ru.ts +184 -0
  149. package/src/tool/shoeSizeConverter/i18n/sv.ts +184 -0
  150. package/src/tool/shoeSizeConverter/i18n/tr.ts +184 -0
  151. package/src/tool/shoeSizeConverter/i18n/zh.ts +184 -0
  152. package/src/tool/shoeSizeConverter/index.ts +15 -7
  153. package/src/tool/stainChemistry/i18n/de.ts +300 -0
  154. package/src/tool/stainChemistry/i18n/id.ts +300 -0
  155. package/src/tool/stainChemistry/i18n/it.ts +300 -0
  156. package/src/tool/stainChemistry/i18n/ja.ts +300 -0
  157. package/src/tool/stainChemistry/i18n/ko.ts +297 -0
  158. package/src/tool/stainChemistry/i18n/nl.ts +300 -0
  159. package/src/tool/stainChemistry/i18n/pl.ts +300 -0
  160. package/src/tool/stainChemistry/i18n/pt.ts +300 -0
  161. package/src/tool/stainChemistry/i18n/ru.ts +300 -0
  162. package/src/tool/stainChemistry/i18n/sv.ts +300 -0
  163. package/src/tool/stainChemistry/i18n/tr.ts +300 -0
  164. package/src/tool/stainChemistry/i18n/zh.ts +295 -0
  165. package/src/tool/stainChemistry/index.ts +15 -7
  166. package/src/tool/yarnCalculator/i18n/de.ts +310 -0
  167. package/src/tool/yarnCalculator/i18n/id.ts +310 -0
  168. package/src/tool/yarnCalculator/i18n/it.ts +310 -0
  169. package/src/tool/yarnCalculator/i18n/ja.ts +310 -0
  170. package/src/tool/yarnCalculator/i18n/ko.ts +310 -0
  171. package/src/tool/yarnCalculator/i18n/nl.ts +310 -0
  172. package/src/tool/yarnCalculator/i18n/pl.ts +310 -0
  173. package/src/tool/yarnCalculator/i18n/pt.ts +310 -0
  174. package/src/tool/yarnCalculator/i18n/ru.ts +310 -0
  175. package/src/tool/yarnCalculator/i18n/sv.ts +310 -0
  176. package/src/tool/yarnCalculator/i18n/tr.ts +310 -0
  177. package/src/tool/yarnCalculator/i18n/zh.ts +309 -0
  178. package/src/tool/yarnCalculator/index.ts +15 -7
  179. package/src/types.ts +1 -1
@@ -0,0 +1,297 @@
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 = 'stain-chemical-protocol';
6
+ const title = '섬유 얼룩 제거 화학 프로토콜';
7
+ const description =
8
+ '섬유의 종류와 얼룩의 화학적 성질에 따른 과학적 얼룩 제거 지침입니다. 과탄산염, 효소, 용제 등 상황에 맞는 올바른 방법을 제시합니다.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '과탄산나트륨 대신 염소계 표백제를 사용해도 되나요?',
13
+ answer:
14
+ '염소계 표백제(차아염소산나트륨)는 부식성이 강합니다. 섬유를 손상시켜 황변 현상을 일으키고 섬유를 약하게 만듭니다. 과탄산염은 활성산소로 표백하여 섬유의 자연 구조를 보호합니다.',
15
+ },
16
+ {
17
+ question: '식초가 냄새 제거에 도움이 되는 이유는 무엇인가요?',
18
+ answer:
19
+ '체취는 대개 알칼리성입니다. 식초의 아세트산이 이를 중화하여 무취의 염 상태로 변하게 하며, 헹굼 과정에서 완전히 제거됩니다.',
20
+ },
21
+ {
22
+ question: '피 얼룩에는 항상 찬물을 사용해야 하나요?',
23
+ answer:
24
+ '네. 열은 피 속의 단백질을 응고시켜 섬유에 영구적으로 고착시키기 때문입니다. 찬물은 얼룩을 용해 가능한 상태로 유지하여 효소 세제가 효과적으로 작용하도록 돕습니다.',
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: '사용 약제, 온도, 방법 지침을 따르세요. 특히 "치명적 주의사항"에 주의를 기울여야 합니다.',
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: 'ko',
83
+ };
84
+
85
+ export const content: ToolLocaleContent<StainChemistryUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ ui: {
90
+ toolTitle: '얼룩 제거 화학 프로토콜',
91
+ fiberLabel: '1. 섬유 종류',
92
+ selectFiberPlaceholder: '원단을 선택하세요...',
93
+ stainLabel: '2. 얼룩 원인',
94
+ selectStainPlaceholder: '무슨 일이 일어났나요?',
95
+ molecularDiagnosis: '분자 진단',
96
+ requiredAgent: '필요한 약제',
97
+ thermalCondition: '온도 조건',
98
+ temperature: '온도',
99
+ cleaningInstructions: '세척 가이드',
100
+ criticalWarning: '치명적 주의',
101
+ criticalWarningLabel: '주의',
102
+ technicalNote: '기술 노트',
103
+ technicalNoteText: '전체적인 화학 처리를 하기 전에 반드시 보이지 않는 곳에 색상 견뢰도 테스트를 하세요.',
104
+ systemDiagnosis: '진단 시스템',
105
+ systemDiagnosisDesc: '세척 로드맵을 확인하기 위해 섬유 파라미터를 설정하세요',
106
+ delicatePercarbonateWarning: '분자 손상 위험. 동물성 섬유는 과탄산염에 매우 취약합니다. 보이지 않는 곳에 테스트하십시오.',
107
+ fiberData: {
108
+ cotton: { name: '면 (코튼)', family: 'natural', isNoble: false },
109
+ linen: { name: '마 (리넨)', family: 'natural', isNoble: true },
110
+ wool: { name: '양모 / 메리노', family: 'natural', isNoble: true },
111
+ silk: { name: '견 (실크)', family: 'natural', isNoble: true },
112
+ cashmere: { name: '캐시미어', family: 'natural', isNoble: true },
113
+ mohair: { name: '모헤어', family: 'natural', isNoble: true },
114
+ angora: { name: '앙고라', family: 'natural', isNoble: true },
115
+ alpaca: { name: '알파카', family: 'natural', isNoble: true },
116
+ polyester: { name: '폴리에스터', family: 'synthetic', isNoble: false },
117
+ viscose: { name: '비스코스 / 레이온', family: 'artificial', isNoble: false },
118
+ nylon: { name: '나일론 (폴리아미드)', family: 'synthetic', isNoble: false },
119
+ acrylic: { name: '아크릴', family: 'synthetic', isNoble: false },
120
+ },
121
+ agents: {
122
+ percarbonate: {
123
+ name: '과탄산나트륨',
124
+ description: '생분해성 산소계 표백제. 물에 녹으면서 활성산소를 방출합니다.',
125
+ warning: '고농도 사용 시 단백질 섬유(실크, 울) 사용을 피하세요.',
126
+ },
127
+ isopropyl: {
128
+ name: '이소프로필 알코올',
129
+ description: '색소 및 가벼운 기름때 제거에 효과적인 용제.',
130
+ warning: '희석하지 않고 사용 시 실크의 광택을 손상시키거나 일부 아크릴을 녹일 수 있습니다.',
131
+ },
132
+ acetone: {
133
+ name: '아세톤',
134
+ description: '락커 및 접착제에 강력한 효능을 가진 용제.',
135
+ warning: '아세테이트 및 트리아세테이트 섬유 사용 금지 (섬유를 녹임).',
136
+ },
137
+ enzyme: {
138
+ name: '효소 세제',
139
+ description: '생물학적 얼룩을 분해하는 프로테아제를 함유합니다.',
140
+ warning: '울과 실크(단백질 기반) 사용 시 주의가 필요합니다.',
141
+ },
142
+ vinegar: {
143
+ name: '화이트 식초',
144
+ description: '냄새 중화 및 색상 고정에 도움을 주는 순한 아세트산.',
145
+ },
146
+ },
147
+ stains: [
148
+ {
149
+ id: 'wine',
150
+ name: '레드 와인 / 과일',
151
+ protocols: {
152
+ natural: { agentId: 'percarbonate', temperature: '40–60°C', method: '장시간 담그기' },
153
+ synthetic: { agentId: 'percarbonate', temperature: '40°C', method: '페이스트 직접 도포' },
154
+ delicate: {
155
+ agentId: 'vinegar',
156
+ temperature: '찬물',
157
+ method: '탄산수와 식초로 헹구기',
158
+ notes: '비비지 마십시오',
159
+ },
160
+ },
161
+ },
162
+ {
163
+ id: 'blood',
164
+ name: '혈흔',
165
+ protocols: {
166
+ natural: {
167
+ agentId: 'enzyme',
168
+ temperature: '찬물',
169
+ method: '소금물에 담근 후 효소제 사용',
170
+ },
171
+ synthetic: { agentId: 'enzyme', temperature: '찬물', method: '직접 도포' },
172
+ delicate: {
173
+ agentId: 'vinegar',
174
+ temperature: '찬물',
175
+ method: '즉시 헹구고 열 노출 피하기',
176
+ },
177
+ },
178
+ },
179
+ {
180
+ id: 'grease',
181
+ name: '유지류 / 오일',
182
+ protocols: {
183
+ natural: {
184
+ agentId: 'isopropyl',
185
+ temperature: '40°C',
186
+ method: '알코올로 녹여낸 후 세탁',
187
+ },
188
+ synthetic: {
189
+ agentId: 'isopropyl',
190
+ temperature: '40°C',
191
+ method: '아래에 흡수력이 좋은 종이 받치기',
192
+ },
193
+ delicate: { agentId: 'isopropyl', temperature: '찬물', method: '알코올을 50%로 희석' },
194
+ },
195
+ },
196
+ {
197
+ id: 'ink',
198
+ name: '잉크 / 마커',
199
+ protocols: {
200
+ natural: {
201
+ agentId: 'isopropyl',
202
+ temperature: '상온',
203
+ method: '가장자리에서 안쪽으로 두드리듯 제거',
204
+ },
205
+ synthetic: {
206
+ agentId: 'isopropyl',
207
+ temperature: '상온',
208
+ method: '얼룩 번짐에 주의',
209
+ },
210
+ delicate: {
211
+ agentId: 'isopropyl',
212
+ temperature: '찬물',
213
+ method: '희석 후 안 보이는 곳에 테스트',
214
+ },
215
+ },
216
+ },
217
+ ],
218
+ },
219
+ seo: [
220
+ {
221
+ type: 'title',
222
+ text: '섬유 세척의 화학 원리',
223
+ level: 2,
224
+ },
225
+ {
226
+ type: 'paragraph',
227
+ html: '모든 얼룩은 다르고, 모든 섬유가 같은 화학 약제에 동일하게 반응하지 않습니다. 소중한 옷을 구하느냐 망치느냐의 차이는 얼룩의 분자적 성질과 섬유의 구조를 이해하는 데서 옵니다.',
228
+ },
229
+ {
230
+ type: 'card',
231
+ title: '01 — 조절된 산화 작용',
232
+ icon: 'mdi:atom',
233
+ html: '<strong>과탄산나트륨</strong>은 활성산소를 방출하여 색소 분자(얼룩의 색 원인)의 이중 결합을 끊어 얼룩을 무색화하고 물에 용해되기 쉬운 상태로 만듭니다. 유기물 얼룩에 가장 효과적인 방법입니다.',
234
+ },
235
+ {
236
+ type: 'card',
237
+ title: '02 — 용제에 의한 용해',
238
+ icon: 'mdi:flask-outline',
239
+ html: '기름이나 잉크 같은 얼룩은 물에 녹지 않습니다. <strong>이소프로필 알코올</strong>이나 <strong>아세톤</strong> 같은 용제는 표면 장력을 낮추고 얼룩의 비극성 분자를 끌어당겨 천 등으로 옮겨갈 수 있게 합니다.',
240
+ },
241
+ {
242
+ type: 'title',
243
+ text: '섬유의 성질 파악: 종류가 중요한 이유',
244
+ level: 2,
245
+ },
246
+ {
247
+ type: 'paragraph',
248
+ html: '모든 섬유가 같은 방식으로 분해되지 않습니다. <strong>실크와 울</strong>은 단백질(피브로인과 케라틴)로 이루어져 있습니다. 단백질을 분해하도록 설계된 효소 세제(피나 계란 얼룩용)를 무분별하게 사용하면, 세제가 섬유 자체를 손상시키기 시작하여 광택과 원단 구조가 파괴됩니다.',
249
+ },
250
+ {
251
+ type: 'title',
252
+ text: '열의 위험성',
253
+ level: 2,
254
+ },
255
+ {
256
+ type: 'paragraph',
257
+ html: '가장 흔한 실수 중 하나는 피 얼룩을 "불리기" 위해 뜨거운 물을 사용하는 것입니다. 화학적으로 열은 얼룩의 <strong>단백질을 응고</strong>시켜 섬유의 다공성 구조에 영구적으로 고착시킵니다. 단백질 기반 얼룩은 반드시 찬물로 처리해야 합니다.',
258
+ },
259
+ {
260
+ type: 'tip',
261
+ title: '긴급 조치: 레드 와인',
262
+ html: '<strong>A. 수동적 흡수:</strong> 흡수력이 좋은 종이로 두드리기(번지지 않게 비비지 마십시오).<br><strong>B. 삼투압 중화:</strong> 고운 소금으로 덮어 섬유 내부의 액체를 밖으로 끌어내기.<br><strong>C. 화학적 조치:</strong> 섬유가 열에 견딘다면 40도 정도의 물에 과탄산염 페이스트를 바르기.',
263
+ },
264
+ {
265
+ type: 'title',
266
+ text: '특수 용제 및 주의사항',
267
+ level: 2,
268
+ },
269
+ {
270
+ type: 'paragraph',
271
+ html: '<strong>아세톤</strong>은 매니큐어나 접착제를 제거하는 데 탁월하지만, <strong>아세테이트</strong> 섬유에는 치명적입니다. 셀룰로오스 유래 물질이지만 화학 처리된 이 섬유는 아세톤에 문자 그대로 녹아버립니다.',
272
+ },
273
+ {
274
+ type: 'paragraph',
275
+ html: '<strong>이소프로필 알코올</strong>은 비교적 안정적이지만, 염색된 합성 원단에서는 색상 자체를 빼낼 수 있습니다. 본격적인 처리에 앞서 항상 "안쪽 시접" 부위에 먼저 테스트해보는 것을 권장합니다.',
276
+ },
277
+ ],
278
+ faqTitle: '자주 묻는 질문',
279
+ faq: faqData,
280
+ bibliographyTitle: '참고 문헌',
281
+ bibliography: [
282
+ {
283
+ name: 'AATCC - Association for Advancing Color Technology and Chemistry',
284
+ url: 'https://www.aatcc.org',
285
+ },
286
+ {
287
+ name: 'Kissa, E. — Textile Auxiliaries',
288
+ url: 'https://www.springer.com/gp/book/9783642057328',
289
+ },
290
+ {
291
+ name: 'ISO 105 — Textiles: Tests for Colour Fastness',
292
+ url: 'https://www.iso.org/standard/72682.html',
293
+ },
294
+ ],
295
+ howTo: howToData,
296
+ schemas: [faqSchema, howToSchema, appSchema],
297
+ };
@@ -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 = 'textielvlekken-chemisch-protocol';
6
+ const title = 'Chemisch Protocol voor Textielvlekken';
7
+ const description =
8
+ 'Wetenschappelijke protocollen voor vlekverwijdering op basis van vezeltype en de chemische aard van de vlek. Percarbonaat, enzymen, oplosmiddelen: de juiste methode voor elk geval.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Kan ik bleekmiddel gebruiken in plaats van percarbonaat?',
13
+ answer:
14
+ 'Bleekmiddel (natriumhypochloriet) is zeer corrosief. Het tast de vezels aan, waardoor ze gelig en broos worden. Percarbonaat bleekt met actieve zuurstof en respecteert de natuurlijke moleculaire structuur.',
15
+ },
16
+ {
17
+ question: 'Waarom helpt azijn tegen geurtjes?',
18
+ answer:
19
+ 'Lichaamsgeuren zijn meestal alkalisch. Het azijnzuur in azijn neutraliseert ze en zet ze om in geurloze zouten die tijdens het spoelen volledig worden verwijderd.',
20
+ },
21
+ {
22
+ question: 'Moet ik altijd koud water gebruiken voor bloed?',
23
+ answer:
24
+ 'Ja. Warmte stolt de eiwitten in het bloed, waardoor de vlek permanent aan de vezel hecht. Koud water houdt de vlek vloeibaar en stelt enzymatische middelen in staat effectief te werken.',
25
+ },
26
+ {
27
+ question: 'Wat gebeurt er als ik aceton op een kledingstuk van acetaat aanbreng?',
28
+ answer:
29
+ 'Aceton lost triacetaat en acetaat op. Acetaatvezels zijn cellulose veresterd met azijnzuur en zijn volledig oplosbaar in aceton. Het resultaat is de onherstelbare vernietiging van de stof.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Identificeer het vezeltype',
36
+ text: 'Raadpleeg het label in het kledingstuk om te bepalen of het een natuurlijke vezel, synthetisch of een fijne vezel (wol, zijde, kasjmier) is.',
37
+ },
38
+ {
39
+ name: 'Selecteer de vezel in de tool',
40
+ text: 'Kies het overeenkomstige materiaal in de eerste kiezer.',
41
+ },
42
+ {
43
+ name: 'Selecteer het type vlek',
44
+ text: 'Geef aan of de vlek organisch (wijn, fruit), eiwitrijk (bloed), vet of synthetisch (inkt) is.',
45
+ },
46
+ {
47
+ name: 'Pas het aangegeven protocol toe',
48
+ text: 'Volg de instructies voor middel, temperatuur en methode. Let speciaal op de kritieke veiligheidswaarschuwingen.',
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: 'nl',
83
+ };
84
+
85
+ export const content: ToolLocaleContent<StainChemistryUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ ui: {
90
+ toolTitle: 'Chemisch Vlekkenprotocol',
91
+ fiberLabel: '1. Vezel',
92
+ selectFiberPlaceholder: 'Selecteer stof...',
93
+ stainLabel: '2. Vlek',
94
+ selectStainPlaceholder: 'Wat is er gebeurd?',
95
+ molecularDiagnosis: 'Moleculaire Diagnose',
96
+ requiredAgent: 'Benodigd Middel',
97
+ thermalCondition: 'Thermische Conditie',
98
+ temperature: 'Temperatuur',
99
+ cleaningInstructions: 'Reinigingsinstructies',
100
+ criticalWarning: 'Kritieke Veiligheid',
101
+ criticalWarningLabel: 'LET OP',
102
+ technicalNote: 'Technische noot',
103
+ technicalNoteText:
104
+ 'Valideer altijd de kleurvastheid op een onopvallende plek voordat je doorgaat met de volledige chemische behandeling.',
105
+ systemDiagnosis: 'Diagnosesysteem',
106
+ systemDiagnosisDesc:
107
+ 'Stel de textielparameters in om de reinigingsroutekaart te ontvangen',
108
+ delicatePercarbonateWarning:
109
+ 'RISICO OP MOLECULAIRE DEGRADATIE. Dierlijke vezels zijn zeer gevoelig voor percarbonaat. Test uitvoeren op onopvallende plek.',
110
+ fiberData: {
111
+ cotton: { name: 'Katoen', family: 'natural', isNoble: false },
112
+ linen: { name: 'Linnen', family: 'natural', isNoble: true },
113
+ wool: { name: 'Wol / Merino', family: 'natural', isNoble: true },
114
+ silk: { name: 'Zijde', family: 'natural', isNoble: true },
115
+ cashmere: { name: 'Kasjmier', family: 'natural', isNoble: true },
116
+ mohair: { name: 'Mohair', family: 'natural', isNoble: true },
117
+ angora: { name: 'Angora', family: 'natural', isNoble: true },
118
+ alpaca: { name: 'Alpaca', family: 'natural', isNoble: true },
119
+ polyester: { name: 'Polyester', family: 'synthetic', isNoble: false },
120
+ viscose: { name: 'Viscose / Rayon', family: 'artificial', isNoble: false },
121
+ nylon: { name: 'Nylon (Polyamide)', family: 'synthetic', isNoble: false },
122
+ acrylic: { name: 'Acryl', family: 'synthetic', isNoble: false },
123
+ },
124
+ agents: {
125
+ percarbonate: {
126
+ name: 'Natriumpercarbonaat',
127
+ description: 'Biologisch afbreekbare zuurstofbleekmiddel. Geeft actieve zuurstof af bij het oplossen.',
128
+ warning: 'Vermijd op eiwitvezels (zijde, wol) in hoge concentraties.',
129
+ },
130
+ isopropyl: {
131
+ name: 'Isopropylalcohol',
132
+ description: 'Effectief oplosmiddel voor pigmenten en lichte vetten.',
133
+ warning: 'Kan de glans op zijde beschadigen en sommige acrylstoffen oplossen als het niet wordt verdund.',
134
+ },
135
+ acetone: {
136
+ name: 'Aceton',
137
+ description: 'Krachtig oplosmiddel voor lakken en lijmen.',
138
+ warning: 'VERBODEN op acetaat en triacetaat (lost de vezel op).',
139
+ },
140
+ enzyme: {
141
+ name: 'Enzymatisch Wasmiddel',
142
+ description: 'Bevat proteasen die biologische vlekken afbreken.',
143
+ warning: 'Gebruik met voorzichtigheid op wol en zijde (dit zijn eiwitten).',
144
+ },
145
+ vinegar: {
146
+ name: 'Witte Azijn',
147
+ description: 'Mild azijnzuur om geuren te neutraliseren en kleuren vast te leggen.',
148
+ },
149
+ },
150
+ stains: [
151
+ {
152
+ id: 'wine',
153
+ name: 'Rode Wijn / Fruit',
154
+ protocols: {
155
+ natural: { agentId: 'percarbonate', temperature: '40–60°C', method: 'Langdurig weken' },
156
+ synthetic: { agentId: 'percarbonate', temperature: '40°C', method: 'Rechtstreekse pasta' },
157
+ delicate: {
158
+ agentId: 'vinegar',
159
+ temperature: 'Koud',
160
+ method: 'Spoelen met spuitwater en azijn',
161
+ notes: 'Niet wrijven',
162
+ },
163
+ },
164
+ },
165
+ {
166
+ id: 'blood',
167
+ name: 'Bloed',
168
+ protocols: {
169
+ natural: {
170
+ agentId: 'enzyme',
171
+ temperature: 'Koud',
172
+ method: 'Weken in zout water en daarna enzym',
173
+ },
174
+ synthetic: { agentId: 'enzyme', temperature: 'Koud', method: 'Directe applicatie' },
175
+ delicate: {
176
+ agentId: 'vinegar',
177
+ temperature: 'Koud',
178
+ method: 'Onmiddellijk spoelen, hitte vermijden',
179
+ },
180
+ },
181
+ },
182
+ {
183
+ id: 'grease',
184
+ name: 'Vet / Olie',
185
+ protocols: {
186
+ natural: {
187
+ agentId: 'isopropyl',
188
+ temperature: '40°C',
189
+ method: 'Oplossen met alcohol en dan wassen',
190
+ },
191
+ synthetic: {
192
+ agentId: 'isopropyl',
193
+ temperature: '40°C',
194
+ method: 'Absorberend papier eronder leggen',
195
+ },
196
+ delicate: { agentId: 'isopropyl', temperature: 'Koud', method: 'Alcohol verdunnen tot 50%' },
197
+ },
198
+ },
199
+ {
200
+ id: 'ink',
201
+ name: 'Inkt / Marker',
202
+ protocols: {
203
+ natural: {
204
+ agentId: 'isopropyl',
205
+ temperature: 'Omgeving',
206
+ method: 'Deppen van buiten naar binnen',
207
+ },
208
+ synthetic: {
209
+ agentId: 'isopropyl',
210
+ temperature: 'Omgeving',
211
+ method: 'Voorzichtig met verspreiding',
212
+ },
213
+ delicate: {
214
+ agentId: 'isopropyl',
215
+ temperature: 'Koud',
216
+ method: 'Verdunnen en testen op verborgen plek',
217
+ },
218
+ },
219
+ },
220
+ ],
221
+ },
222
+ seo: [
223
+ {
224
+ type: 'title',
225
+ text: 'De Chemie Achter Textielreiniging',
226
+ level: 2,
227
+ },
228
+ {
229
+ type: 'paragraph',
230
+ html: 'Niet alle vlekken zijn gelijk, en niet alle vezels reageren hetzelfde op dezelfde chemische middelen. Het verschil tussen het redden van een kledingstuk en het vernietigen ervan ligt in het begrijpen van de moleculaire aard van de vlek en de vezelstructuur.',
231
+ },
232
+ {
233
+ type: 'card',
234
+ title: '01 — Gecontroleerde Oxidatie',
235
+ icon: 'mdi:atom',
236
+ html: '<strong>Natriumpercarbonaat</strong> geeft actieve zuurstof af die de dubbele bindingen van chromoforen (de moleculen die verantwoordelijk zijn voor de kleur van de vlek) breekt, waardoor ze kleurloos en in water oplosbaar worden. Het is de meest effectieve methode voor organische vlekken.',
237
+ },
238
+ {
239
+ type: 'card',
240
+ title: '02 — Oplosbaar maken door Oplosmiddelen',
241
+ icon: 'mdi:flask-outline',
242
+ html: 'Vlekken zoals olie of inkt zijn niet oplosbaar in water. Oplosmiddelen zoals <strong>isopropylalcohol</strong> of <strong>aceton</strong> verlagen de oppervlaktespanning en trekken de niet-polaire moleculen van de vlek aan, waardoor ze kunnen worden overgedragen op een drager.',
243
+ },
244
+ {
245
+ type: 'title',
246
+ text: 'Soevereiniteit over Vezels: Waarom het Type Uitmaakt',
247
+ level: 2,
248
+ },
249
+ {
250
+ type: 'paragraph',
251
+ html: 'Niet alle vezels "eten" hetzelfde. <strong>Zijde en wol</strong> zijn eiwitten (fibroïne en keratine). Als je een enzymatisch wasmiddel aanbrengt dat is ontworpen om "eiwitten te eten" (zoals bloedvlekken of ei) zonder controle, zal het wasmiddel de vezel zelf gaan afbreken, waardoor de glans en de structuur van de stof worden vernietigd.',
252
+ },
253
+ {
254
+ type: 'title',
255
+ text: 'Het Gevaar van Hitte',
256
+ level: 2,
257
+ },
258
+ {
259
+ type: 'paragraph',
260
+ html: 'Een van de meest gemaakte fouten is het gebruik van warm water om een bloedvlek "zacht te maken". Chemisch gezien veroorzaakt hitte de <strong>stolling van de eiwitten</strong> van de vlek, waardoor ze permanent aan de poreuze structuur van de vezel worden gefixeerd. Eiwitvlekken moeten altijd met koud water worden behandeld.',
261
+ },
262
+ {
263
+ type: 'tip',
264
+ title: 'Noodprotocol: Rode Wijn',
265
+ html: '<strong>A. Passieve absorptie:</strong> Deppen met absorberend papier, nooit wrijven om mechanische uitbreiding te voorkomen.<br><strong>B. Osmotische neutralisatie:</strong> Bedekken met fijn zout om de vloeistof uit de vezelkern te trekken.<br><strong>C. Chemische actie:</strong> Breng een pasta aan van percarbonaat en water op 40°C als de vezel hittebestendig is.',
266
+ },
267
+ {
268
+ type: 'title',
269
+ text: 'Specifieke Oplosmiddelen en Voorzorgsmaatregelen',
270
+ level: 2,
271
+ },
272
+ {
273
+ type: 'paragraph',
274
+ html: '<strong>Aceton</strong> is een uitzonderlijk oplosmiddel voor nagellak of lijm, maar is destructief voor <strong>acetaat</strong>. Omdat het vezels zijn die afgeleid zijn van cellulose maar chemisch behandeld, lost aceton het weefsel letterlijk op.',
275
+ },
276
+ {
277
+ type: 'paragraph',
278
+ html: '<strong>Isopropylalcohol</strong> is stabieler, maar op geverfde synthetische stoffen kan het het pigment zelf meeslepen. We raden altijd de "zoomtest" aan op een onopvallende plek voor de hoofdbehandeling.',
279
+ },
280
+ ],
281
+ faqTitle: 'Veelgestelde Vragen',
282
+ faq: faqData,
283
+ bibliographyTitle: 'Bibliografie',
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
+ };