@jjlmoya/utils-textiles 1.20.0 → 1.22.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 (209) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/de.ts +76 -76
  3. package/src/category/i18n/en.ts +76 -76
  4. package/src/category/i18n/es.ts +76 -76
  5. package/src/category/i18n/fr.ts +76 -76
  6. package/src/category/i18n/id.ts +76 -76
  7. package/src/category/i18n/it.ts +76 -76
  8. package/src/category/i18n/ja.ts +76 -76
  9. package/src/category/i18n/ko.ts +76 -76
  10. package/src/category/i18n/nl.ts +76 -76
  11. package/src/category/i18n/pl.ts +76 -76
  12. package/src/category/i18n/pt.ts +76 -76
  13. package/src/category/i18n/ru.ts +76 -76
  14. package/src/category/i18n/sv.ts +76 -76
  15. package/src/category/i18n/zh.ts +76 -76
  16. package/src/category/index.ts +2 -0
  17. package/src/category/seo.astro +1 -1
  18. package/src/components/PreviewNavSidebar.astro +1 -1
  19. package/src/components/PreviewToolbar.astro +1 -1
  20. package/src/data.ts +1 -1
  21. package/src/entries.ts +4 -1
  22. package/src/env.d.ts +1 -1
  23. package/src/index.ts +1 -1
  24. package/src/layouts/PreviewLayout.astro +113 -113
  25. package/src/pages/index.astro +1 -1
  26. package/src/tests/faq_count.test.ts +19 -19
  27. package/src/tests/i18n_coverage.test.ts +4 -2
  28. package/src/tests/locale_spelling.test.ts +44 -0
  29. package/src/tests/mocks/astro_mock.js +1 -1
  30. package/src/tests/no_en_dash.test.ts +70 -70
  31. package/src/tests/no_h1_in_components.test.ts +1 -1
  32. package/src/tests/seo_length.test.ts +22 -22
  33. package/src/tests/seo_translation_completeness.test.ts +69 -0
  34. package/src/tests/spanish_leakage.test.ts +175 -153
  35. package/src/tests/tool_validation.test.ts +17 -17
  36. package/src/tool/burnTest/i18n/es.ts +211 -211
  37. package/src/tool/burnTest/i18n/fr.ts +211 -211
  38. package/src/tool/burnTest/i18n/ja.ts +211 -211
  39. package/src/tool/burnTest/i18n/ko.ts +211 -211
  40. package/src/tool/burnTest/i18n/pl.ts +211 -211
  41. package/src/tool/burnTest/i18n/ru.ts +211 -211
  42. package/src/tool/burnTest/i18n/sv.ts +211 -211
  43. package/src/tool/burnTest/i18n/zh.ts +211 -211
  44. package/src/tool/burnTest/seo.astro +15 -15
  45. package/src/tool/clothingSizeConverter/i18n/de.ts +348 -348
  46. package/src/tool/clothingSizeConverter/i18n/en.ts +348 -348
  47. package/src/tool/clothingSizeConverter/i18n/fr.ts +348 -348
  48. package/src/tool/clothingSizeConverter/i18n/ja.ts +348 -348
  49. package/src/tool/clothingSizeConverter/i18n/ko.ts +348 -348
  50. package/src/tool/clothingSizeConverter/i18n/nl.ts +348 -348
  51. package/src/tool/clothingSizeConverter/i18n/pl.ts +348 -348
  52. package/src/tool/clothingSizeConverter/i18n/ru.ts +348 -348
  53. package/src/tool/clothingSizeConverter/i18n/sv.ts +348 -348
  54. package/src/tool/clothingSizeConverter/i18n/tr.ts +348 -348
  55. package/src/tool/clothingSizeConverter/i18n/zh.ts +348 -348
  56. package/src/tool/clothingSizeConverter/seo.astro +15 -15
  57. package/src/tool/embroideryStitchPricingEstimator/bibliography.astro +6 -0
  58. package/src/tool/embroideryStitchPricingEstimator/bibliography.ts +12 -0
  59. package/src/tool/embroideryStitchPricingEstimator/component.astro +111 -0
  60. package/src/tool/embroideryStitchPricingEstimator/controller.ts +111 -0
  61. package/src/tool/embroideryStitchPricingEstimator/dom-views.ts +94 -0
  62. package/src/tool/embroideryStitchPricingEstimator/embroidery-stitch-count-pricing-estimator.css +438 -0
  63. package/src/tool/embroideryStitchPricingEstimator/entry.ts +29 -0
  64. package/src/tool/embroideryStitchPricingEstimator/evaluator.ts +22 -0
  65. package/src/tool/embroideryStitchPricingEstimator/i18n/de.ts +38 -0
  66. package/src/tool/embroideryStitchPricingEstimator/i18n/en.ts +194 -0
  67. package/src/tool/embroideryStitchPricingEstimator/i18n/es.ts +38 -0
  68. package/src/tool/embroideryStitchPricingEstimator/i18n/fr.ts +38 -0
  69. package/src/tool/embroideryStitchPricingEstimator/i18n/id.ts +38 -0
  70. package/src/tool/embroideryStitchPricingEstimator/i18n/it.ts +38 -0
  71. package/src/tool/embroideryStitchPricingEstimator/i18n/ja.ts +38 -0
  72. package/src/tool/embroideryStitchPricingEstimator/i18n/ko.ts +38 -0
  73. package/src/tool/embroideryStitchPricingEstimator/i18n/nl.ts +38 -0
  74. package/src/tool/embroideryStitchPricingEstimator/i18n/pl.ts +38 -0
  75. package/src/tool/embroideryStitchPricingEstimator/i18n/pt.ts +38 -0
  76. package/src/tool/embroideryStitchPricingEstimator/i18n/ru.ts +38 -0
  77. package/src/tool/embroideryStitchPricingEstimator/i18n/sv.ts +38 -0
  78. package/src/tool/embroideryStitchPricingEstimator/i18n/tr.ts +38 -0
  79. package/src/tool/embroideryStitchPricingEstimator/i18n/zh.ts +38 -0
  80. package/src/tool/embroideryStitchPricingEstimator/index.ts +11 -0
  81. package/src/tool/embroideryStitchPricingEstimator/logic.test.ts +40 -0
  82. package/src/tool/embroideryStitchPricingEstimator/logic.ts +86 -0
  83. package/src/tool/embroideryStitchPricingEstimator/seo.astro +15 -0
  84. package/src/tool/embroideryStitchPricingEstimator/storage.ts +20 -0
  85. package/src/tool/embroideryStitchPricingEstimator/ui.ts +53 -0
  86. package/src/tool/fabricProjectCalculator/i18n/de.ts +236 -236
  87. package/src/tool/fabricProjectCalculator/i18n/ja.ts +236 -236
  88. package/src/tool/fabricProjectCalculator/i18n/ko.ts +236 -236
  89. package/src/tool/fabricProjectCalculator/i18n/nl.ts +236 -236
  90. package/src/tool/fabricProjectCalculator/i18n/pl.ts +236 -236
  91. package/src/tool/fabricProjectCalculator/i18n/ru.ts +236 -236
  92. package/src/tool/fabricProjectCalculator/i18n/sv.ts +236 -236
  93. package/src/tool/fabricProjectCalculator/i18n/tr.ts +236 -236
  94. package/src/tool/fabricProjectCalculator/i18n/zh.ts +236 -236
  95. package/src/tool/fabricProjectCalculator/seo.astro +15 -15
  96. package/src/tool/fabricTruth/i18n/de.ts +268 -268
  97. package/src/tool/fabricTruth/i18n/en.ts +268 -268
  98. package/src/tool/fabricTruth/i18n/es.ts +302 -302
  99. package/src/tool/fabricTruth/i18n/fr.ts +268 -268
  100. package/src/tool/fabricTruth/i18n/id.ts +268 -268
  101. package/src/tool/fabricTruth/i18n/it.ts +268 -268
  102. package/src/tool/fabricTruth/i18n/ja.ts +268 -268
  103. package/src/tool/fabricTruth/i18n/ko.ts +268 -268
  104. package/src/tool/fabricTruth/i18n/nl.ts +268 -268
  105. package/src/tool/fabricTruth/i18n/pl.ts +268 -268
  106. package/src/tool/fabricTruth/i18n/pt.ts +268 -268
  107. package/src/tool/fabricTruth/i18n/ru.ts +268 -268
  108. package/src/tool/fabricTruth/i18n/sv.ts +268 -268
  109. package/src/tool/fabricTruth/i18n/tr.ts +268 -268
  110. package/src/tool/fabricTruth/i18n/zh.ts +272 -272
  111. package/src/tool/fabricTruth/seo.astro +15 -15
  112. package/src/tool/fiberPrep/i18n/de.ts +215 -215
  113. package/src/tool/fiberPrep/i18n/fr.ts +215 -215
  114. package/src/tool/fiberPrep/i18n/ja.ts +215 -215
  115. package/src/tool/fiberPrep/i18n/ko.ts +215 -215
  116. package/src/tool/fiberPrep/i18n/nl.ts +215 -215
  117. package/src/tool/fiberPrep/i18n/pl.ts +215 -215
  118. package/src/tool/fiberPrep/i18n/ru.ts +215 -215
  119. package/src/tool/fiberPrep/i18n/sv.ts +215 -215
  120. package/src/tool/fiberPrep/i18n/tr.ts +215 -215
  121. package/src/tool/fiberPrep/i18n/zh.ts +215 -215
  122. package/src/tool/fiberPrep/seo.astro +15 -15
  123. package/src/tool/knittingGauge/i18n/de.ts +224 -224
  124. package/src/tool/knittingGauge/i18n/ja.ts +224 -224
  125. package/src/tool/knittingGauge/i18n/ko.ts +224 -224
  126. package/src/tool/knittingGauge/i18n/pl.ts +224 -224
  127. package/src/tool/knittingGauge/i18n/ru.ts +224 -224
  128. package/src/tool/knittingGauge/i18n/tr.ts +224 -224
  129. package/src/tool/knittingGauge/i18n/zh.ts +224 -224
  130. package/src/tool/knittingGauge/seo.astro +15 -15
  131. package/src/tool/laundryGuide/i18n/de.ts +271 -271
  132. package/src/tool/laundryGuide/i18n/en.ts +271 -271
  133. package/src/tool/laundryGuide/i18n/es.ts +271 -271
  134. package/src/tool/laundryGuide/i18n/fr.ts +255 -255
  135. package/src/tool/laundryGuide/i18n/id.ts +271 -271
  136. package/src/tool/laundryGuide/i18n/it.ts +271 -271
  137. package/src/tool/laundryGuide/i18n/ja.ts +271 -271
  138. package/src/tool/laundryGuide/i18n/ko.ts +271 -271
  139. package/src/tool/laundryGuide/i18n/nl.ts +271 -271
  140. package/src/tool/laundryGuide/i18n/pl.ts +271 -271
  141. package/src/tool/laundryGuide/i18n/pt.ts +271 -271
  142. package/src/tool/laundryGuide/i18n/ru.ts +271 -271
  143. package/src/tool/laundryGuide/i18n/sv.ts +271 -271
  144. package/src/tool/laundryGuide/i18n/tr.ts +271 -271
  145. package/src/tool/laundryGuide/i18n/zh.ts +271 -271
  146. package/src/tool/laundryGuide/seo.astro +15 -15
  147. package/src/tool/needleConverter/i18n/de.ts +202 -202
  148. package/src/tool/needleConverter/i18n/es.ts +207 -207
  149. package/src/tool/needleConverter/i18n/fr.ts +207 -207
  150. package/src/tool/needleConverter/i18n/ja.ts +202 -202
  151. package/src/tool/needleConverter/i18n/ko.ts +202 -202
  152. package/src/tool/needleConverter/i18n/nl.ts +202 -202
  153. package/src/tool/needleConverter/i18n/pl.ts +202 -202
  154. package/src/tool/needleConverter/i18n/ru.ts +202 -202
  155. package/src/tool/needleConverter/i18n/sv.ts +202 -202
  156. package/src/tool/needleConverter/i18n/tr.ts +202 -202
  157. package/src/tool/needleConverter/i18n/zh.ts +202 -202
  158. package/src/tool/needleConverter/seo.astro +15 -15
  159. package/src/tool/sewingPatternScaler/component.astro +236 -236
  160. package/src/tool/sewingPatternScaler/i18n/fr.ts +170 -170
  161. package/src/tool/sewingPatternScaler/i18n/ja.ts +114 -114
  162. package/src/tool/sewingPatternScaler/i18n/ko.ts +114 -114
  163. package/src/tool/sewingPatternScaler/i18n/nl.ts +114 -114
  164. package/src/tool/sewingPatternScaler/i18n/pl.ts +114 -114
  165. package/src/tool/sewingPatternScaler/i18n/ru.ts +114 -114
  166. package/src/tool/sewingPatternScaler/i18n/sv.ts +114 -114
  167. package/src/tool/sewingPatternScaler/i18n/tr.ts +114 -114
  168. package/src/tool/sewingPatternScaler/i18n/zh.ts +114 -114
  169. package/src/tool/sewingPatternScaler/seo.astro +15 -15
  170. package/src/tool/shoeSizeConverter/i18n/fr.ts +183 -183
  171. package/src/tool/shoeSizeConverter/i18n/ja.ts +179 -179
  172. package/src/tool/shoeSizeConverter/i18n/ko.ts +179 -179
  173. package/src/tool/shoeSizeConverter/i18n/nl.ts +179 -179
  174. package/src/tool/shoeSizeConverter/i18n/pl.ts +179 -179
  175. package/src/tool/shoeSizeConverter/i18n/ru.ts +179 -179
  176. package/src/tool/shoeSizeConverter/i18n/sv.ts +179 -179
  177. package/src/tool/shoeSizeConverter/i18n/tr.ts +179 -179
  178. package/src/tool/shoeSizeConverter/i18n/zh.ts +179 -179
  179. package/src/tool/shoeSizeConverter/seo.astro +15 -15
  180. package/src/tool/stainChemistry/bibliography.ts +16 -16
  181. package/src/tool/stainChemistry/i18n/de.ts +286 -286
  182. package/src/tool/stainChemistry/i18n/en.ts +289 -289
  183. package/src/tool/stainChemistry/i18n/es.ts +286 -286
  184. package/src/tool/stainChemistry/i18n/fr.ts +296 -296
  185. package/src/tool/stainChemistry/i18n/id.ts +286 -286
  186. package/src/tool/stainChemistry/i18n/it.ts +286 -286
  187. package/src/tool/stainChemistry/i18n/ja.ts +286 -286
  188. package/src/tool/stainChemistry/i18n/ko.ts +283 -283
  189. package/src/tool/stainChemistry/i18n/nl.ts +286 -286
  190. package/src/tool/stainChemistry/i18n/pl.ts +286 -286
  191. package/src/tool/stainChemistry/i18n/pt.ts +286 -286
  192. package/src/tool/stainChemistry/i18n/ru.ts +286 -286
  193. package/src/tool/stainChemistry/i18n/sv.ts +286 -286
  194. package/src/tool/stainChemistry/i18n/tr.ts +286 -286
  195. package/src/tool/stainChemistry/i18n/zh.ts +281 -281
  196. package/src/tool/stainChemistry/seo.astro +15 -15
  197. package/src/tool/yarnCalculator/i18n/de.ts +296 -296
  198. package/src/tool/yarnCalculator/i18n/es.ts +296 -296
  199. package/src/tool/yarnCalculator/i18n/fr.ts +296 -296
  200. package/src/tool/yarnCalculator/i18n/ja.ts +296 -296
  201. package/src/tool/yarnCalculator/i18n/ko.ts +296 -296
  202. package/src/tool/yarnCalculator/i18n/nl.ts +296 -296
  203. package/src/tool/yarnCalculator/i18n/pl.ts +296 -296
  204. package/src/tool/yarnCalculator/i18n/ru.ts +296 -296
  205. package/src/tool/yarnCalculator/i18n/sv.ts +296 -296
  206. package/src/tool/yarnCalculator/i18n/tr.ts +296 -296
  207. package/src/tool/yarnCalculator/i18n/zh.ts +295 -295
  208. package/src/tool/yarnCalculator/seo.astro +15 -15
  209. package/src/tools.ts +2 -2
@@ -1,283 +1,283 @@
1
- import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
- import type { ToolLocaleContent } from '../../../types';
3
- import { bibliography } from '../bibliography';
4
- import type { StainChemistryUI } from '../ui';
5
-
6
- const slug = 'stain-chemical-protocol';
7
- const title = '섬유 얼룩 제거 화학 프로토콜';
8
- const description =
9
- '섬유의 종류와 얼룩의 화학적 성질에 따른 과학적 얼룩 제거 지침입니다. 과탄산염, 효소, 용제 등 상황에 맞는 올바른 방법을 제시합니다.';
10
-
11
- const faqData = [
12
- {
13
- question: '과탄산나트륨 대신 염소계 표백제를 사용해도 되나요?',
14
- answer:
15
- '염소계 표백제(차아염소산나트륨)는 부식성이 강합니다. 섬유를 손상시켜 황변 현상을 일으키고 섬유를 약하게 만듭니다. 과탄산염은 활성산소로 표백하여 섬유의 자연 구조를 보호합니다.',
16
- },
17
- {
18
- question: '식초가 냄새 제거에 도움이 되는 이유는 무엇인가요?',
19
- answer:
20
- '체취는 대개 알칼리성입니다. 식초의 아세트산이 이를 중화하여 무취의 염 상태로 변하게 하며, 헹굼 과정에서 완전히 제거됩니다.',
21
- },
22
- {
23
- question: '피 얼룩에는 항상 찬물을 사용해야 하나요?',
24
- answer:
25
- '네. 열은 피 속의 단백질을 응고시켜 섬유에 영구적으로 고착시키기 때문입니다. 찬물은 얼룩을 용해 가능한 상태로 유지하여 효소 세제가 효과적으로 작용하도록 돕습니다.',
26
- },
27
- {
28
- question: '아세테이트 옷에 아세톤을 바르면 어떻게 되나요?',
29
- answer:
30
- '아세톤은 아세테이트와 트리아세테이트를 녹입니다. 아세테이트 섬유는 셀룰로오스를 아세트산으로 에스테르화한 것이라 아세톤에 완전히 용해됩니다. 결과적으로 원단이 돌이킬 수 없이 파손됩니다.',
31
- },
32
- ];
33
-
34
- const howToData = [
35
- {
36
- name: '섬유 종류 확인',
37
- text: '옷 안쪽 라벨을 통해 천연 섬유, 합성 섬유, 또는 특수 동물성 섬유(울, 실크, 캐시미어)인지 확인합니다.',
38
- },
39
- {
40
- name: '툴에서 섬유 선택',
41
- text: '첫 번째 선택 메뉴에서 해당 소재를 선택하세요.',
42
- },
43
- {
44
- name: '얼룩 종류 선택',
45
- text: '얼룩이 유기물(와인, 과일), 단백질(피), 유지류, 또는 합성물(잉크)인지 지정합니다.',
46
- },
47
- {
48
- name: '지시된 프로토콜 적용',
49
- text: '사용 약제, 온도, 방법 지침을 따르세요. 특히 "치명적 주의사항"에 주의를 기울여야 합니다.',
50
- },
51
- ];
52
-
53
- const faqSchema: WithContext<FAQPage> = {
54
- '@context': 'https://schema.org',
55
- '@type': 'FAQPage',
56
- mainEntity: faqData.map((item) => ({
57
- '@type': 'Question',
58
- name: item.question,
59
- acceptedAnswer: { '@type': 'Answer', text: item.answer },
60
- })),
61
- };
62
-
63
- const howToSchema: WithContext<HowTo> = {
64
- '@context': 'https://schema.org',
65
- '@type': 'HowTo',
66
- name: title,
67
- description,
68
- step: howToData.map((step) => ({
69
- '@type': 'HowToStep',
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: 'ko',
84
- };
85
-
86
- export const content: ToolLocaleContent<StainChemistryUI> = {
87
- slug,
88
- title,
89
- description,
90
- ui: {
91
- toolTitle: '얼룩 제거 화학 프로토콜',
92
- fiberLabel: '1. 섬유 종류',
93
- selectFiberPlaceholder: '원단을 선택하세요...',
94
- stainLabel: '2. 얼룩 원인',
95
- selectStainPlaceholder: '무슨 일이 일어났나요?',
96
- molecularDiagnosis: '분자 진단',
97
- requiredAgent: '필요한 약제',
98
- thermalCondition: '온도 조건',
99
- temperature: '온도',
100
- cleaningInstructions: '세척 가이드',
101
- criticalWarning: '치명적 주의',
102
- criticalWarningLabel: '주의',
103
- technicalNote: '기술 노트',
104
- technicalNoteText: '전체적인 화학 처리를 하기 전에 반드시 보이지 않는 곳에 색상 견뢰도 테스트를 하세요.',
105
- systemDiagnosis: '진단 시스템',
106
- systemDiagnosisDesc: '세척 로드맵을 확인하기 위해 섬유 파라미터를 설정하세요',
107
- delicatePercarbonateWarning: '분자 손상 위험. 동물성 섬유는 과탄산염에 매우 취약합니다. 보이지 않는 곳에 테스트하십시오.',
108
- fiberData: {
109
- cotton: { name: '면 (코튼)', family: 'natural', isNoble: false },
110
- linen: { name: '마 (리넨)', family: 'natural', isNoble: true },
111
- wool: { name: '양모 / 메리노', family: 'natural', isNoble: true },
112
- silk: { name: '견 (실크)', family: 'natural', isNoble: true },
113
- cashmere: { name: '캐시미어', family: 'natural', isNoble: true },
114
- mohair: { name: '모헤어', family: 'natural', isNoble: true },
115
- angora: { name: '앙고라', family: 'natural', isNoble: true },
116
- alpaca: { name: '알파카', family: 'natural', isNoble: true },
117
- polyester: { name: '폴리에스터', family: 'synthetic', isNoble: false },
118
- viscose: { name: '비스코스 / 레이온', family: 'artificial', isNoble: false },
119
- nylon: { name: '나일론 (폴리아미드)', family: 'synthetic', isNoble: false },
120
- acrylic: { name: '아크릴', family: 'synthetic', isNoble: false },
121
- },
122
- agents: {
123
- percarbonate: {
124
- name: '과탄산나트륨',
125
- description: '생분해성 산소계 표백제. 물에 녹으면서 활성산소를 방출합니다.',
126
- warning: '고농도 사용 시 단백질 섬유(실크, 울) 사용을 피하세요.',
127
- },
128
- isopropyl: {
129
- name: '이소프로필 알코올',
130
- description: '색소 및 가벼운 기름때 제거에 효과적인 용제.',
131
- warning: '희석하지 않고 사용 시 실크의 광택을 손상시키거나 일부 아크릴을 녹일 수 있습니다.',
132
- },
133
- acetone: {
134
- name: '아세톤',
135
- description: '락커 및 접착제에 강력한 효능을 가진 용제.',
136
- warning: '아세테이트 및 트리아세테이트 섬유 사용 금지 (섬유를 녹임).',
137
- },
138
- enzyme: {
139
- name: '효소 세제',
140
- description: '생물학적 얼룩을 분해하는 프로테아제를 함유합니다.',
141
- warning: '울과 실크(단백질 기반) 사용 시 주의가 필요합니다.',
142
- },
143
- vinegar: {
144
- name: '화이트 식초',
145
- description: '냄새 중화 및 색상 고정에 도움을 주는 순한 아세트산.',
146
- },
147
- },
148
- stains: [
149
- {
150
- id: 'wine',
151
- name: '레드 와인 / 과일',
152
- protocols: {
153
- natural: { agentId: 'percarbonate', temperature: '40-60°C', method: '장시간 담그기' },
154
- synthetic: { agentId: 'percarbonate', temperature: '40°C', method: '페이스트 직접 도포' },
155
- delicate: {
156
- agentId: 'vinegar',
157
- temperature: '찬물',
158
- method: '탄산수와 식초로 헹구기',
159
- notes: '비비지 마십시오',
160
- },
161
- },
162
- },
163
- {
164
- id: 'blood',
165
- name: '혈흔',
166
- protocols: {
167
- natural: {
168
- agentId: 'enzyme',
169
- temperature: '찬물',
170
- method: '소금물에 담근 후 효소제 사용',
171
- },
172
- synthetic: { agentId: 'enzyme', temperature: '찬물', method: '직접 도포' },
173
- delicate: {
174
- agentId: 'vinegar',
175
- temperature: '찬물',
176
- method: '즉시 헹구고 열 노출 피하기',
177
- },
178
- },
179
- },
180
- {
181
- id: 'grease',
182
- name: '유지류 / 오일',
183
- protocols: {
184
- natural: {
185
- agentId: 'isopropyl',
186
- temperature: '40°C',
187
- method: '알코올로 녹여낸 후 세탁',
188
- },
189
- synthetic: {
190
- agentId: 'isopropyl',
191
- temperature: '40°C',
192
- method: '아래에 흡수력이 좋은 종이 받치기',
193
- },
194
- delicate: { agentId: 'isopropyl', temperature: '찬물', method: '알코올을 50%로 희석' },
195
- },
196
- },
197
- {
198
- id: 'ink',
199
- name: '잉크 / 마커',
200
- protocols: {
201
- natural: {
202
- agentId: 'isopropyl',
203
- temperature: '상온',
204
- method: '가장자리에서 안쪽으로 두드리듯 제거',
205
- },
206
- synthetic: {
207
- agentId: 'isopropyl',
208
- temperature: '상온',
209
- method: '얼룩 번짐에 주의',
210
- },
211
- delicate: {
212
- agentId: 'isopropyl',
213
- temperature: '찬물',
214
- method: '희석 후 안 보이는 곳에 테스트',
215
- },
216
- },
217
- },
218
- ],
219
- },
220
- seo: [
221
- {
222
- type: 'title',
223
- text: '섬유 세척의 화학 원리',
224
- level: 2,
225
- },
226
- {
227
- type: 'paragraph',
228
- html: '모든 얼룩은 다르고, 모든 섬유가 같은 화학 약제에 동일하게 반응하지 않습니다. 소중한 옷을 구하느냐 망치느냐의 차이는 얼룩의 분자적 성질과 섬유의 구조를 이해하는 데서 옵니다.',
229
- },
230
- {
231
- type: 'card',
232
- title: '01: 조절된 산화 작용',
233
- icon: 'mdi:atom',
234
- html: '<strong>과탄산나트륨</strong>은 활성산소를 방출하여 색소 분자(얼룩의 색 원인)의 이중 결합을 끊어 얼룩을 무색화하고 물에 용해되기 쉬운 상태로 만듭니다. 유기물 얼룩에 가장 효과적인 방법입니다.',
235
- },
236
- {
237
- type: 'card',
238
- title: '02: 용제에 의한 용해',
239
- icon: 'mdi:flask-outline',
240
- html: '기름이나 잉크 같은 얼룩은 물에 녹지 않습니다. <strong>이소프로필 알코올</strong>이나 <strong>아세톤</strong> 같은 용제는 표면 장력을 낮추고 얼룩의 비극성 분자를 끌어당겨 천 등으로 옮겨갈 수 있게 합니다.',
241
- },
242
- {
243
- type: 'title',
244
- text: '섬유의 성질 파악: 종류가 중요한 이유',
245
- level: 2,
246
- },
247
- {
248
- type: 'paragraph',
249
- html: '모든 섬유가 같은 방식으로 분해되지 않습니다. <strong>실크와 울</strong>은 단백질(피브로인과 케라틴)로 이루어져 있습니다. 단백질을 분해하도록 설계된 효소 세제(피나 계란 얼룩용)를 무분별하게 사용하면, 세제가 섬유 자체를 손상시키기 시작하여 광택과 원단 구조가 파괴됩니다.',
250
- },
251
- {
252
- type: 'title',
253
- text: '열의 위험성',
254
- level: 2,
255
- },
256
- {
257
- type: 'paragraph',
258
- html: '가장 흔한 실수 중 하나는 피 얼룩을 "불리기" 위해 뜨거운 물을 사용하는 것입니다. 화학적으로 열은 얼룩의 <strong>단백질을 응고</strong>시켜 섬유의 다공성 구조에 영구적으로 고착시킵니다. 단백질 기반 얼룩은 반드시 찬물로 처리해야 합니다.',
259
- },
260
- {
261
- type: 'tip',
262
- title: '긴급 조치: 레드 와인',
263
- html: '<strong>A. 수동적 흡수:</strong> 흡수력이 좋은 종이로 두드리기(번지지 않게 비비지 마십시오).<br><strong>B. 삼투압 중화:</strong> 고운 소금으로 덮어 섬유 내부의 액체를 밖으로 끌어내기.<br><strong>C. 화학적 조치:</strong> 섬유가 열에 견딘다면 40도 정도의 물에 과탄산염 페이스트를 바르기.',
264
- },
265
- {
266
- type: 'title',
267
- text: '특수 용제 및 주의사항',
268
- level: 2,
269
- },
270
- {
271
- type: 'paragraph',
272
- html: '<strong>아세톤</strong>은 매니큐어나 접착제를 제거하는 데 탁월하지만, <strong>아세테이트</strong> 섬유에는 치명적입니다. 셀룰로오스 유래 물질이지만 화학 처리된 이 섬유는 아세톤에 문자 그대로 녹아버립니다.',
273
- },
274
- {
275
- type: 'paragraph',
276
- html: '<strong>이소프로필 알코올</strong>은 비교적 안정적이지만, 염색된 합성 원단에서는 색상 자체를 빼낼 수 있습니다. 본격적인 처리에 앞서 항상 "안쪽 시접" 부위에 먼저 테스트해보는 것을 권장합니다.',
277
- },
278
- ],
279
- faq: faqData,
280
- bibliography: bibliography,
281
- howTo: howToData,
282
- schemas: [faqSchema, howToSchema, appSchema],
283
- };
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
4
+ import type { StainChemistryUI } from '../ui';
5
+
6
+ const slug = 'stain-chemical-protocol';
7
+ const title = '섬유 얼룩 제거 화학 프로토콜';
8
+ const description =
9
+ '섬유의 종류와 얼룩의 화학적 성질에 따른 과학적 얼룩 제거 지침입니다. 과탄산염, 효소, 용제 등 상황에 맞는 올바른 방법을 제시합니다.';
10
+
11
+ const faqData = [
12
+ {
13
+ question: '과탄산나트륨 대신 염소계 표백제를 사용해도 되나요?',
14
+ answer:
15
+ '염소계 표백제(차아염소산나트륨)는 부식성이 강합니다. 섬유를 손상시켜 황변 현상을 일으키고 섬유를 약하게 만듭니다. 과탄산염은 활성산소로 표백하여 섬유의 자연 구조를 보호합니다.',
16
+ },
17
+ {
18
+ question: '식초가 냄새 제거에 도움이 되는 이유는 무엇인가요?',
19
+ answer:
20
+ '체취는 대개 알칼리성입니다. 식초의 아세트산이 이를 중화하여 무취의 염 상태로 변하게 하며, 헹굼 과정에서 완전히 제거됩니다.',
21
+ },
22
+ {
23
+ question: '피 얼룩에는 항상 찬물을 사용해야 하나요?',
24
+ answer:
25
+ '네. 열은 피 속의 단백질을 응고시켜 섬유에 영구적으로 고착시키기 때문입니다. 찬물은 얼룩을 용해 가능한 상태로 유지하여 효소 세제가 효과적으로 작용하도록 돕습니다.',
26
+ },
27
+ {
28
+ question: '아세테이트 옷에 아세톤을 바르면 어떻게 되나요?',
29
+ answer:
30
+ '아세톤은 아세테이트와 트리아세테이트를 녹입니다. 아세테이트 섬유는 셀룰로오스를 아세트산으로 에스테르화한 것이라 아세톤에 완전히 용해됩니다. 결과적으로 원단이 돌이킬 수 없이 파손됩니다.',
31
+ },
32
+ ];
33
+
34
+ const howToData = [
35
+ {
36
+ name: '섬유 종류 확인',
37
+ text: '옷 안쪽 라벨을 통해 천연 섬유, 합성 섬유, 또는 특수 동물성 섬유(울, 실크, 캐시미어)인지 확인합니다.',
38
+ },
39
+ {
40
+ name: '툴에서 섬유 선택',
41
+ text: '첫 번째 선택 메뉴에서 해당 소재를 선택하세요.',
42
+ },
43
+ {
44
+ name: '얼룩 종류 선택',
45
+ text: '얼룩이 유기물(와인, 과일), 단백질(피), 유지류, 또는 합성물(잉크)인지 지정합니다.',
46
+ },
47
+ {
48
+ name: '지시된 프로토콜 적용',
49
+ text: '사용 약제, 온도, 방법 지침을 따르세요. 특히 "치명적 주의사항"에 주의를 기울여야 합니다.',
50
+ },
51
+ ];
52
+
53
+ const faqSchema: WithContext<FAQPage> = {
54
+ '@context': 'https://schema.org',
55
+ '@type': 'FAQPage',
56
+ mainEntity: faqData.map((item) => ({
57
+ '@type': 'Question',
58
+ name: item.question,
59
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
60
+ })),
61
+ };
62
+
63
+ const howToSchema: WithContext<HowTo> = {
64
+ '@context': 'https://schema.org',
65
+ '@type': 'HowTo',
66
+ name: title,
67
+ description,
68
+ step: howToData.map((step) => ({
69
+ '@type': 'HowToStep',
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: 'ko',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<StainChemistryUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ ui: {
91
+ toolTitle: '얼룩 제거 화학 프로토콜',
92
+ fiberLabel: '1. 섬유 종류',
93
+ selectFiberPlaceholder: '원단을 선택하세요...',
94
+ stainLabel: '2. 얼룩 원인',
95
+ selectStainPlaceholder: '무슨 일이 일어났나요?',
96
+ molecularDiagnosis: '분자 진단',
97
+ requiredAgent: '필요한 약제',
98
+ thermalCondition: '온도 조건',
99
+ temperature: '온도',
100
+ cleaningInstructions: '세척 가이드',
101
+ criticalWarning: '치명적 주의',
102
+ criticalWarningLabel: '주의',
103
+ technicalNote: '기술 노트',
104
+ technicalNoteText: '전체적인 화학 처리를 하기 전에 반드시 보이지 않는 곳에 색상 견뢰도 테스트를 하세요.',
105
+ systemDiagnosis: '진단 시스템',
106
+ systemDiagnosisDesc: '세척 로드맵을 확인하기 위해 섬유 파라미터를 설정하세요',
107
+ delicatePercarbonateWarning: '분자 손상 위험. 동물성 섬유는 과탄산염에 매우 취약합니다. 보이지 않는 곳에 테스트하십시오.',
108
+ fiberData: {
109
+ cotton: { name: '면 (코튼)', family: 'natural', isNoble: false },
110
+ linen: { name: '마 (리넨)', family: 'natural', isNoble: true },
111
+ wool: { name: '양모 / 메리노', family: 'natural', isNoble: true },
112
+ silk: { name: '견 (실크)', family: 'natural', isNoble: true },
113
+ cashmere: { name: '캐시미어', family: 'natural', isNoble: true },
114
+ mohair: { name: '모헤어', family: 'natural', isNoble: true },
115
+ angora: { name: '앙고라', family: 'natural', isNoble: true },
116
+ alpaca: { name: '알파카', family: 'natural', isNoble: true },
117
+ polyester: { name: '폴리에스터', family: 'synthetic', isNoble: false },
118
+ viscose: { name: '비스코스 / 레이온', family: 'artificial', isNoble: false },
119
+ nylon: { name: '나일론 (폴리아미드)', family: 'synthetic', isNoble: false },
120
+ acrylic: { name: '아크릴', family: 'synthetic', isNoble: false },
121
+ },
122
+ agents: {
123
+ percarbonate: {
124
+ name: '과탄산나트륨',
125
+ description: '생분해성 산소계 표백제. 물에 녹으면서 활성산소를 방출합니다.',
126
+ warning: '고농도 사용 시 단백질 섬유(실크, 울) 사용을 피하세요.',
127
+ },
128
+ isopropyl: {
129
+ name: '이소프로필 알코올',
130
+ description: '색소 및 가벼운 기름때 제거에 효과적인 용제.',
131
+ warning: '희석하지 않고 사용 시 실크의 광택을 손상시키거나 일부 아크릴을 녹일 수 있습니다.',
132
+ },
133
+ acetone: {
134
+ name: '아세톤',
135
+ description: '락커 및 접착제에 강력한 효능을 가진 용제.',
136
+ warning: '아세테이트 및 트리아세테이트 섬유 사용 금지 (섬유를 녹임).',
137
+ },
138
+ enzyme: {
139
+ name: '효소 세제',
140
+ description: '생물학적 얼룩을 분해하는 프로테아제를 함유합니다.',
141
+ warning: '울과 실크(단백질 기반) 사용 시 주의가 필요합니다.',
142
+ },
143
+ vinegar: {
144
+ name: '화이트 식초',
145
+ description: '냄새 중화 및 색상 고정에 도움을 주는 순한 아세트산.',
146
+ },
147
+ },
148
+ stains: [
149
+ {
150
+ id: 'wine',
151
+ name: '레드 와인 / 과일',
152
+ protocols: {
153
+ natural: { agentId: 'percarbonate', temperature: '40-60°C', method: '장시간 담그기' },
154
+ synthetic: { agentId: 'percarbonate', temperature: '40°C', method: '페이스트 직접 도포' },
155
+ delicate: {
156
+ agentId: 'vinegar',
157
+ temperature: '찬물',
158
+ method: '탄산수와 식초로 헹구기',
159
+ notes: '비비지 마십시오',
160
+ },
161
+ },
162
+ },
163
+ {
164
+ id: 'blood',
165
+ name: '혈흔',
166
+ protocols: {
167
+ natural: {
168
+ agentId: 'enzyme',
169
+ temperature: '찬물',
170
+ method: '소금물에 담근 후 효소제 사용',
171
+ },
172
+ synthetic: { agentId: 'enzyme', temperature: '찬물', method: '직접 도포' },
173
+ delicate: {
174
+ agentId: 'vinegar',
175
+ temperature: '찬물',
176
+ method: '즉시 헹구고 열 노출 피하기',
177
+ },
178
+ },
179
+ },
180
+ {
181
+ id: 'grease',
182
+ name: '유지류 / 오일',
183
+ protocols: {
184
+ natural: {
185
+ agentId: 'isopropyl',
186
+ temperature: '40°C',
187
+ method: '알코올로 녹여낸 후 세탁',
188
+ },
189
+ synthetic: {
190
+ agentId: 'isopropyl',
191
+ temperature: '40°C',
192
+ method: '아래에 흡수력이 좋은 종이 받치기',
193
+ },
194
+ delicate: { agentId: 'isopropyl', temperature: '찬물', method: '알코올을 50%로 희석' },
195
+ },
196
+ },
197
+ {
198
+ id: 'ink',
199
+ name: '잉크 / 마커',
200
+ protocols: {
201
+ natural: {
202
+ agentId: 'isopropyl',
203
+ temperature: '상온',
204
+ method: '가장자리에서 안쪽으로 두드리듯 제거',
205
+ },
206
+ synthetic: {
207
+ agentId: 'isopropyl',
208
+ temperature: '상온',
209
+ method: '얼룩 번짐에 주의',
210
+ },
211
+ delicate: {
212
+ agentId: 'isopropyl',
213
+ temperature: '찬물',
214
+ method: '희석 후 안 보이는 곳에 테스트',
215
+ },
216
+ },
217
+ },
218
+ ],
219
+ },
220
+ seo: [
221
+ {
222
+ type: 'title',
223
+ text: '섬유 세척의 화학 원리',
224
+ level: 2,
225
+ },
226
+ {
227
+ type: 'paragraph',
228
+ html: '모든 얼룩은 다르고, 모든 섬유가 같은 화학 약제에 동일하게 반응하지 않습니다. 소중한 옷을 구하느냐 망치느냐의 차이는 얼룩의 분자적 성질과 섬유의 구조를 이해하는 데서 옵니다.',
229
+ },
230
+ {
231
+ type: 'card',
232
+ title: '01: 조절된 산화 작용',
233
+ icon: 'mdi:atom',
234
+ html: '<strong>과탄산나트륨</strong>은 활성산소를 방출하여 색소 분자(얼룩의 색 원인)의 이중 결합을 끊어 얼룩을 무색화하고 물에 용해되기 쉬운 상태로 만듭니다. 유기물 얼룩에 가장 효과적인 방법입니다.',
235
+ },
236
+ {
237
+ type: 'card',
238
+ title: '02: 용제에 의한 용해',
239
+ icon: 'mdi:flask-outline',
240
+ html: '기름이나 잉크 같은 얼룩은 물에 녹지 않습니다. <strong>이소프로필 알코올</strong>이나 <strong>아세톤</strong> 같은 용제는 표면 장력을 낮추고 얼룩의 비극성 분자를 끌어당겨 천 등으로 옮겨갈 수 있게 합니다.',
241
+ },
242
+ {
243
+ type: 'title',
244
+ text: '섬유의 성질 파악: 종류가 중요한 이유',
245
+ level: 2,
246
+ },
247
+ {
248
+ type: 'paragraph',
249
+ html: '모든 섬유가 같은 방식으로 분해되지 않습니다. <strong>실크와 울</strong>은 단백질(피브로인과 케라틴)로 이루어져 있습니다. 단백질을 분해하도록 설계된 효소 세제(피나 계란 얼룩용)를 무분별하게 사용하면, 세제가 섬유 자체를 손상시키기 시작하여 광택과 원단 구조가 파괴됩니다.',
250
+ },
251
+ {
252
+ type: 'title',
253
+ text: '열의 위험성',
254
+ level: 2,
255
+ },
256
+ {
257
+ type: 'paragraph',
258
+ html: '가장 흔한 실수 중 하나는 피 얼룩을 "불리기" 위해 뜨거운 물을 사용하는 것입니다. 화학적으로 열은 얼룩의 <strong>단백질을 응고</strong>시켜 섬유의 다공성 구조에 영구적으로 고착시킵니다. 단백질 기반 얼룩은 반드시 찬물로 처리해야 합니다.',
259
+ },
260
+ {
261
+ type: 'tip',
262
+ title: '긴급 조치: 레드 와인',
263
+ html: '<strong>A. 수동적 흡수:</strong> 흡수력이 좋은 종이로 두드리기(번지지 않게 비비지 마십시오).<br><strong>B. 삼투압 중화:</strong> 고운 소금으로 덮어 섬유 내부의 액체를 밖으로 끌어내기.<br><strong>C. 화학적 조치:</strong> 섬유가 열에 견딘다면 40도 정도의 물에 과탄산염 페이스트를 바르기.',
264
+ },
265
+ {
266
+ type: 'title',
267
+ text: '특수 용제 및 주의사항',
268
+ level: 2,
269
+ },
270
+ {
271
+ type: 'paragraph',
272
+ html: '<strong>아세톤</strong>은 매니큐어나 접착제를 제거하는 데 탁월하지만, <strong>아세테이트</strong> 섬유에는 치명적입니다. 셀룰로오스 유래 물질이지만 화학 처리된 이 섬유는 아세톤에 문자 그대로 녹아버립니다.',
273
+ },
274
+ {
275
+ type: 'paragraph',
276
+ html: '<strong>이소프로필 알코올</strong>은 비교적 안정적이지만, 염색된 합성 원단에서는 색상 자체를 빼낼 수 있습니다. 본격적인 처리에 앞서 항상 "안쪽 시접" 부위에 먼저 테스트해보는 것을 권장합니다.',
277
+ },
278
+ ],
279
+ faq: faqData,
280
+ bibliography: bibliography,
281
+ howTo: howToData,
282
+ schemas: [faqSchema, howToSchema, appSchema],
283
+ };