@jjlmoya/utils-textiles 1.4.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 (178) 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/tests/i18n_coverage.test.ts +36 -0
  17. package/src/tests/schemas_fulfillment.test.ts +23 -0
  18. package/src/tests/slug_uniqueness.test.ts +81 -0
  19. package/src/tests/title_quality.test.ts +55 -0
  20. package/src/tool/burnTest/i18n/de.ts +225 -0
  21. package/src/tool/burnTest/i18n/id.ts +225 -0
  22. package/src/tool/burnTest/i18n/it.ts +225 -0
  23. package/src/tool/burnTest/i18n/ja.ts +225 -0
  24. package/src/tool/burnTest/i18n/ko.ts +225 -0
  25. package/src/tool/burnTest/i18n/nl.ts +225 -0
  26. package/src/tool/burnTest/i18n/pl.ts +225 -0
  27. package/src/tool/burnTest/i18n/pt.ts +225 -0
  28. package/src/tool/burnTest/i18n/ru.ts +225 -0
  29. package/src/tool/burnTest/i18n/sv.ts +225 -0
  30. package/src/tool/burnTest/i18n/tr.ts +225 -0
  31. package/src/tool/burnTest/i18n/zh.ts +225 -0
  32. package/src/tool/burnTest/index.ts +15 -7
  33. package/src/tool/clothingSizeConverter/i18n/de.ts +356 -0
  34. package/src/tool/clothingSizeConverter/i18n/id.ts +356 -0
  35. package/src/tool/clothingSizeConverter/i18n/it.ts +356 -0
  36. package/src/tool/clothingSizeConverter/i18n/ja.ts +356 -0
  37. package/src/tool/clothingSizeConverter/i18n/ko.ts +356 -0
  38. package/src/tool/clothingSizeConverter/i18n/nl.ts +356 -0
  39. package/src/tool/clothingSizeConverter/i18n/pl.ts +356 -0
  40. package/src/tool/clothingSizeConverter/i18n/pt.ts +356 -0
  41. package/src/tool/clothingSizeConverter/i18n/ru.ts +356 -0
  42. package/src/tool/clothingSizeConverter/i18n/sv.ts +356 -0
  43. package/src/tool/clothingSizeConverter/i18n/tr.ts +356 -0
  44. package/src/tool/clothingSizeConverter/i18n/zh.ts +356 -0
  45. package/src/tool/clothingSizeConverter/index.ts +15 -7
  46. package/src/tool/fabricProjectCalculator/i18n/de.ts +250 -0
  47. package/src/tool/fabricProjectCalculator/i18n/id.ts +250 -0
  48. package/src/tool/fabricProjectCalculator/i18n/it.ts +250 -0
  49. package/src/tool/fabricProjectCalculator/i18n/ja.ts +250 -0
  50. package/src/tool/fabricProjectCalculator/i18n/ko.ts +250 -0
  51. package/src/tool/fabricProjectCalculator/i18n/nl.ts +250 -0
  52. package/src/tool/fabricProjectCalculator/i18n/pl.ts +250 -0
  53. package/src/tool/fabricProjectCalculator/i18n/pt.ts +250 -0
  54. package/src/tool/fabricProjectCalculator/i18n/ru.ts +250 -0
  55. package/src/tool/fabricProjectCalculator/i18n/sv.ts +250 -0
  56. package/src/tool/fabricProjectCalculator/i18n/tr.ts +250 -0
  57. package/src/tool/fabricProjectCalculator/i18n/zh.ts +250 -0
  58. package/src/tool/fabricProjectCalculator/index.ts +15 -7
  59. package/src/tool/fabricTruth/i18n/de.ts +282 -0
  60. package/src/tool/fabricTruth/i18n/en.ts +1 -1
  61. package/src/tool/fabricTruth/i18n/fr.ts +1 -1
  62. package/src/tool/fabricTruth/i18n/id.ts +282 -0
  63. package/src/tool/fabricTruth/i18n/it.ts +282 -0
  64. package/src/tool/fabricTruth/i18n/ja.ts +282 -0
  65. package/src/tool/fabricTruth/i18n/ko.ts +282 -0
  66. package/src/tool/fabricTruth/i18n/nl.ts +282 -0
  67. package/src/tool/fabricTruth/i18n/pl.ts +282 -0
  68. package/src/tool/fabricTruth/i18n/pt.ts +282 -0
  69. package/src/tool/fabricTruth/i18n/ru.ts +282 -0
  70. package/src/tool/fabricTruth/i18n/sv.ts +282 -0
  71. package/src/tool/fabricTruth/i18n/tr.ts +282 -0
  72. package/src/tool/fabricTruth/i18n/zh.ts +286 -0
  73. package/src/tool/fabricTruth/index.ts +15 -7
  74. package/src/tool/fiberPrep/i18n/de.ts +225 -0
  75. package/src/tool/fiberPrep/i18n/id.ts +225 -0
  76. package/src/tool/fiberPrep/i18n/it.ts +225 -0
  77. package/src/tool/fiberPrep/i18n/ja.ts +225 -0
  78. package/src/tool/fiberPrep/i18n/ko.ts +225 -0
  79. package/src/tool/fiberPrep/i18n/nl.ts +225 -0
  80. package/src/tool/fiberPrep/i18n/pl.ts +225 -0
  81. package/src/tool/fiberPrep/i18n/pt.ts +225 -0
  82. package/src/tool/fiberPrep/i18n/ru.ts +225 -0
  83. package/src/tool/fiberPrep/i18n/sv.ts +225 -0
  84. package/src/tool/fiberPrep/i18n/tr.ts +225 -0
  85. package/src/tool/fiberPrep/i18n/zh.ts +225 -0
  86. package/src/tool/fiberPrep/index.ts +15 -7
  87. package/src/tool/knittingGauge/i18n/de.ts +234 -0
  88. package/src/tool/knittingGauge/i18n/id.ts +234 -0
  89. package/src/tool/knittingGauge/i18n/it.ts +234 -0
  90. package/src/tool/knittingGauge/i18n/ja.ts +234 -0
  91. package/src/tool/knittingGauge/i18n/ko.ts +234 -0
  92. package/src/tool/knittingGauge/i18n/nl.ts +234 -0
  93. package/src/tool/knittingGauge/i18n/pl.ts +234 -0
  94. package/src/tool/knittingGauge/i18n/pt.ts +234 -0
  95. package/src/tool/knittingGauge/i18n/ru.ts +234 -0
  96. package/src/tool/knittingGauge/i18n/sv.ts +234 -0
  97. package/src/tool/knittingGauge/i18n/tr.ts +234 -0
  98. package/src/tool/knittingGauge/i18n/zh.ts +234 -0
  99. package/src/tool/knittingGauge/index.ts +15 -7
  100. package/src/tool/laundryGuide/i18n/de.ts +275 -0
  101. package/src/tool/laundryGuide/i18n/id.ts +275 -0
  102. package/src/tool/laundryGuide/i18n/it.ts +275 -0
  103. package/src/tool/laundryGuide/i18n/ja.ts +275 -0
  104. package/src/tool/laundryGuide/i18n/ko.ts +275 -0
  105. package/src/tool/laundryGuide/i18n/nl.ts +275 -0
  106. package/src/tool/laundryGuide/i18n/pl.ts +275 -0
  107. package/src/tool/laundryGuide/i18n/pt.ts +275 -0
  108. package/src/tool/laundryGuide/i18n/ru.ts +275 -0
  109. package/src/tool/laundryGuide/i18n/sv.ts +275 -0
  110. package/src/tool/laundryGuide/i18n/tr.ts +275 -0
  111. package/src/tool/laundryGuide/i18n/zh.ts +275 -0
  112. package/src/tool/laundryGuide/index.ts +15 -7
  113. package/src/tool/needleConverter/i18n/de.ts +212 -0
  114. package/src/tool/needleConverter/i18n/id.ts +212 -0
  115. package/src/tool/needleConverter/i18n/it.ts +212 -0
  116. package/src/tool/needleConverter/i18n/ja.ts +212 -0
  117. package/src/tool/needleConverter/i18n/ko.ts +212 -0
  118. package/src/tool/needleConverter/i18n/nl.ts +212 -0
  119. package/src/tool/needleConverter/i18n/pl.ts +212 -0
  120. package/src/tool/needleConverter/i18n/pt.ts +212 -0
  121. package/src/tool/needleConverter/i18n/ru.ts +212 -0
  122. package/src/tool/needleConverter/i18n/sv.ts +212 -0
  123. package/src/tool/needleConverter/i18n/tr.ts +212 -0
  124. package/src/tool/needleConverter/i18n/zh.ts +212 -0
  125. package/src/tool/needleConverter/index.ts +15 -7
  126. package/src/tool/sewingPatternScaler/i18n/de.ts +227 -0
  127. package/src/tool/sewingPatternScaler/i18n/id.ts +227 -0
  128. package/src/tool/sewingPatternScaler/i18n/it.ts +227 -0
  129. package/src/tool/sewingPatternScaler/i18n/ja.ts +227 -0
  130. package/src/tool/sewingPatternScaler/i18n/ko.ts +227 -0
  131. package/src/tool/sewingPatternScaler/i18n/nl.ts +227 -0
  132. package/src/tool/sewingPatternScaler/i18n/pl.ts +227 -0
  133. package/src/tool/sewingPatternScaler/i18n/pt.ts +227 -0
  134. package/src/tool/sewingPatternScaler/i18n/ru.ts +227 -0
  135. package/src/tool/sewingPatternScaler/i18n/sv.ts +227 -0
  136. package/src/tool/sewingPatternScaler/i18n/tr.ts +227 -0
  137. package/src/tool/sewingPatternScaler/i18n/zh.ts +227 -0
  138. package/src/tool/sewingPatternScaler/index.ts +15 -7
  139. package/src/tool/shoeSizeConverter/i18n/de.ts +184 -0
  140. package/src/tool/shoeSizeConverter/i18n/id.ts +184 -0
  141. package/src/tool/shoeSizeConverter/i18n/it.ts +184 -0
  142. package/src/tool/shoeSizeConverter/i18n/ja.ts +184 -0
  143. package/src/tool/shoeSizeConverter/i18n/ko.ts +184 -0
  144. package/src/tool/shoeSizeConverter/i18n/nl.ts +184 -0
  145. package/src/tool/shoeSizeConverter/i18n/pl.ts +184 -0
  146. package/src/tool/shoeSizeConverter/i18n/pt.ts +184 -0
  147. package/src/tool/shoeSizeConverter/i18n/ru.ts +184 -0
  148. package/src/tool/shoeSizeConverter/i18n/sv.ts +184 -0
  149. package/src/tool/shoeSizeConverter/i18n/tr.ts +184 -0
  150. package/src/tool/shoeSizeConverter/i18n/zh.ts +184 -0
  151. package/src/tool/shoeSizeConverter/index.ts +15 -7
  152. package/src/tool/stainChemistry/i18n/de.ts +300 -0
  153. package/src/tool/stainChemistry/i18n/id.ts +300 -0
  154. package/src/tool/stainChemistry/i18n/it.ts +300 -0
  155. package/src/tool/stainChemistry/i18n/ja.ts +300 -0
  156. package/src/tool/stainChemistry/i18n/ko.ts +297 -0
  157. package/src/tool/stainChemistry/i18n/nl.ts +300 -0
  158. package/src/tool/stainChemistry/i18n/pl.ts +300 -0
  159. package/src/tool/stainChemistry/i18n/pt.ts +300 -0
  160. package/src/tool/stainChemistry/i18n/ru.ts +300 -0
  161. package/src/tool/stainChemistry/i18n/sv.ts +300 -0
  162. package/src/tool/stainChemistry/i18n/tr.ts +300 -0
  163. package/src/tool/stainChemistry/i18n/zh.ts +295 -0
  164. package/src/tool/stainChemistry/index.ts +15 -7
  165. package/src/tool/yarnCalculator/i18n/de.ts +310 -0
  166. package/src/tool/yarnCalculator/i18n/id.ts +310 -0
  167. package/src/tool/yarnCalculator/i18n/it.ts +310 -0
  168. package/src/tool/yarnCalculator/i18n/ja.ts +310 -0
  169. package/src/tool/yarnCalculator/i18n/ko.ts +310 -0
  170. package/src/tool/yarnCalculator/i18n/nl.ts +310 -0
  171. package/src/tool/yarnCalculator/i18n/pl.ts +310 -0
  172. package/src/tool/yarnCalculator/i18n/pt.ts +310 -0
  173. package/src/tool/yarnCalculator/i18n/ru.ts +310 -0
  174. package/src/tool/yarnCalculator/i18n/sv.ts +310 -0
  175. package/src/tool/yarnCalculator/i18n/tr.ts +310 -0
  176. package/src/tool/yarnCalculator/i18n/zh.ts +309 -0
  177. package/src/tool/yarnCalculator/index.ts +15 -7
  178. 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 = 'tekstil-leke-kimyasi-protokolu';
6
+ const title = 'Tekstil Leke Çıkarma Kimyasal Protokolü';
7
+ const description =
8
+ 'Lif türüne ve lekenin kimyasal yapısına göre leke çıkarma için bilimsel protokoller. Perkabanat, enzimler, çözücüler: her durum için doğru yöntem.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Perkarbonat yerine çamaşır suyu kullanabilir miyim?',
13
+ answer:
14
+ 'Çamaşır suyu (sodyum hipoklorit) son derece aşındırıcıdır. Lifleri bozarak sararmalarına ve kırılgan hale gelmelerine neden olur. Perkarbonat aktif oksijen yoluyla ağartma yapar ve doğal moleküler yapıyı korur.',
15
+ },
16
+ {
17
+ question: 'Sirke neden kokulara yardımcı olur?',
18
+ answer:
19
+ 'Vücut kokuları genellikle alkalidir. Sirkedeki asetik asit bunları nötralize ederek, durulama sırasında tamamen yok olan kokusuz tuzlara dönüştürür.',
20
+ },
21
+ {
22
+ question: 'Kan lekesi için her zaman soğuk su mu kullanmalıyım?',
23
+ answer:
24
+ 'Evet. Isı kan proteinlerini pıhtılaştırarak lekenin life kalıcı olarak sabitlenmesine neden olur. Soğuk su lekeyi çözünür durumda tutar ve enzimatik ajanların etkili bir şekilde çalışmasını sağlar.',
25
+ },
26
+ {
27
+ question: 'Asetat bir giysiye aseton sürersem ne olur?',
28
+ answer:
29
+ 'Aseton, triasetat ve asetatı çözer. Asetat lifleri asetik asit ile esterlenmiş selülozdur ve asetonda tamamen çözünürler. Sonuç, kumaşın geri dönülemez şekilde tahrip olması olacaktır.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Lif türünü belirleyin',
36
+ text: 'Giysinin iç etiketine bakarak doğal lif, sentetik mi yoksa değerli lif (yün, ipek, kaşmir) mi olduğunu öğrenin.',
37
+ },
38
+ {
39
+ name: 'Araçta lif türünü seçin',
40
+ text: 'İlk seçiciden ilgili materyali seçin.',
41
+ },
42
+ {
43
+ name: 'Leke türünü seçin',
44
+ text: 'Lekenin organik (şarap, meyve), protein (kan), yağlı veya sentetik (mürekkep) olup olmadığını belirtin.',
45
+ },
46
+ {
47
+ name: 'Belirtilen protokolü uygulayın',
48
+ text: 'Ajan, sıcaklık ve yöntem talimatlarını izleyin. Kritik uyarı notlarına özellikle dikkat edin.',
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: 'tr',
83
+ };
84
+
85
+ export const content: ToolLocaleContent<StainChemistryUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ ui: {
90
+ toolTitle: 'Leke Kimyası Protokolü',
91
+ fiberLabel: '1. Lif Türü',
92
+ selectFiberPlaceholder: 'Kumaş seçin...',
93
+ stainLabel: '2. Leke',
94
+ selectStainPlaceholder: 'Ne oldu?',
95
+ molecularDiagnosis: 'Moleküler Teşhis',
96
+ requiredAgent: 'Gerekli Ajan',
97
+ thermalCondition: 'Termal Koşul',
98
+ temperature: 'Sıcaklık',
99
+ cleaningInstructions: 'Temizlik Talimatları',
100
+ criticalWarning: 'Kritik Dikkat',
101
+ criticalWarningLabel: 'DİKKAT',
102
+ technicalNote: 'Teknik not',
103
+ technicalNoteText:
104
+ 'Tam kimyasal işleme geçmeden önce boya dayanıklılığını her zaman görünmeyen bir bölgede doğrulayın.',
105
+ systemDiagnosis: 'Teşhis Sistemi',
106
+ systemDiagnosisDesc:
107
+ 'Temizlik yol haritasını almak için tekstil parametrelerini yapılandırın',
108
+ delicatePercarbonateWarning:
109
+ 'MOLEKÜLER BOZULMA RİSKİ. Hayvansal lifler perkarbonata karşı son derece hassastır. Görünmeyen bölgede test yapın.',
110
+ fiberData: {
111
+ cotton: { name: 'Pamuk', family: 'natural', isNoble: false },
112
+ linen: { name: 'Keten', family: 'natural', isNoble: true },
113
+ wool: { name: 'Yün / Merinos', family: 'natural', isNoble: true },
114
+ silk: { name: 'İpek', family: 'natural', isNoble: true },
115
+ cashmere: { name: 'Kaşmir', family: 'natural', isNoble: true },
116
+ mohair: { name: 'Moher', 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: 'Viskon / Rayon', family: 'artificial', isNoble: false },
121
+ nylon: { name: 'Naylon (Poliamid)', family: 'synthetic', isNoble: false },
122
+ acrylic: { name: 'Akrilik', family: 'synthetic', isNoble: false },
123
+ },
124
+ agents: {
125
+ percarbonate: {
126
+ name: 'Sodyum Perkarbonat',
127
+ description: 'Biyolojik olarak parçalanabilen oksijenli ağartıcı. Çözündüğünde aktif oksijen salar.',
128
+ warning: 'Yüksek konsantrasyonlarda protein liflerinden (ipek, yün) kaçının.',
129
+ },
130
+ isopropyl: {
131
+ name: 'İzopropil Alkol',
132
+ description: 'Pigmentler ve hafif yağlar için etkili çözücü.',
133
+ warning: 'Seyreltilmezse ipeklerdeki parlaklığa zarar verebilir ve bazı akrilikleri çözebilir.',
134
+ },
135
+ acetone: {
136
+ name: 'Aseton',
137
+ description: 'Laklar ve yapıştırıcılar için güçlü çözücü.',
138
+ warning: 'Asetat ve triasetatlarda YASAK (lifi çözer).',
139
+ },
140
+ enzyme: {
141
+ name: 'Enzimatik Deterjan',
142
+ description: 'Biyolojik lekeleri parçalayan proteazlar içerir.',
143
+ warning: 'Yün ve ipek üzerinde (bunlar proteindir) dikkatli kullanın.',
144
+ },
145
+ vinegar: {
146
+ name: 'Beyaz Sirke',
147
+ description: 'Kokuları nötralize etmek ve renkleri sabitlemek için hafif asetik asit.',
148
+ },
149
+ },
150
+ stains: [
151
+ {
152
+ id: 'wine',
153
+ name: 'Kırmızı Şarap / Meyve',
154
+ protocols: {
155
+ natural: { agentId: 'percarbonate', temperature: '40–60°C', method: 'Uzun süreli bekletme' },
156
+ synthetic: { agentId: 'percarbonate', temperature: '40°C', method: 'Doğrudan macun' },
157
+ delicate: {
158
+ agentId: 'vinegar',
159
+ temperature: 'Soğuk',
160
+ method: 'Madensuyu ve sirke ile durulama',
161
+ notes: 'Ovalamayın',
162
+ },
163
+ },
164
+ },
165
+ {
166
+ id: 'blood',
167
+ name: 'Kan',
168
+ protocols: {
169
+ natural: {
170
+ agentId: 'enzyme',
171
+ temperature: 'Soğuk',
172
+ method: 'Tuzlu suda bekletme ve ardından enzim',
173
+ },
174
+ synthetic: { agentId: 'enzyme', temperature: 'Soğuk', method: 'Doğrudan uygulama' },
175
+ delicate: {
176
+ agentId: 'vinegar',
177
+ temperature: 'Soğuk',
178
+ method: 'Hemen durulama, ısıdan kaçınma',
179
+ },
180
+ },
181
+ },
182
+ {
183
+ id: 'grease',
184
+ name: 'Yağ / Gres',
185
+ protocols: {
186
+ natural: {
187
+ agentId: 'isopropyl',
188
+ temperature: '40°C',
189
+ method: 'Alkolle çözme ve ardından yıkama',
190
+ },
191
+ synthetic: {
192
+ agentId: 'isopropyl',
193
+ temperature: '40°C',
194
+ method: 'Altına emici kağıt koyma',
195
+ },
196
+ delicate: { agentId: 'isopropyl', temperature: 'Soğuk', method: 'Alkolü %50 seyreltme' },
197
+ },
198
+ },
199
+ {
200
+ id: 'ink',
201
+ name: 'Mürekkep / Markör',
202
+ protocols: {
203
+ natural: {
204
+ agentId: 'isopropyl',
205
+ temperature: 'Oda Sıcaklığı',
206
+ method: 'Dıştan içe doğru tampon yapma',
207
+ },
208
+ synthetic: {
209
+ agentId: 'isopropyl',
210
+ temperature: 'Oda Sıcaklığı',
211
+ method: 'Dağılmaya karşı dikkatli olun',
212
+ },
213
+ delicate: {
214
+ agentId: 'isopropyl',
215
+ temperature: 'Soğuk',
216
+ method: 'Seyreltme ve gizli bölgede test etme',
217
+ },
218
+ },
219
+ },
220
+ ],
221
+ },
222
+ seo: [
223
+ {
224
+ type: 'title',
225
+ text: 'Tekstil Temizliğinin Arkasındaki Kimya',
226
+ level: 2,
227
+ },
228
+ {
229
+ type: 'paragraph',
230
+ html: 'Her leke aynı değildir ve her lif aynı kimyasal ajanlara aynı tepkiyi vermez. Bir giysiyi kurtarmakla yok etmek arasındaki fark, lekenin moleküler yapısını ve lifin yapısını anlamaktan geçer.',
231
+ },
232
+ {
233
+ type: 'card',
234
+ title: '01 — Kontrollü Oksidasyon',
235
+ icon: 'mdi:atom',
236
+ html: '<strong>Sodyum perkarbonat</strong>, kromoforların (lekenin renginden sorumlu moleküller) çift bağlarını kopararak onları renksiz ve suda çözünür hale getiren aktif oksijen salar. Organik lekeler için en etkili yöntemdir.',
237
+ },
238
+ {
239
+ type: 'card',
240
+ title: '02 — Çözücülerle Çözünürlük',
241
+ icon: 'mdi:flask-outline',
242
+ html: 'Yağ veya mürekkep gibi lekeler suda çözünmezler. <strong>İzopropil alkol</strong> veya <strong>aseton</strong> gibi çözücüler yüzey gerilimini azaltır ve lekenin polar olmayan moleküllerini çekerek bir destek ortamına aktarılmalarını sağlar.',
243
+ },
244
+ {
245
+ type: 'title',
246
+ text: 'Lifler Üzerindeki Hakimiyet: Tür Neden Önemlidir?',
247
+ level: 2,
248
+ },
249
+ {
250
+ type: 'paragraph',
251
+ html: 'Her lif aynı şekilde "yemez". <strong>İpek ve yün</strong> proteindir (fibroin ve keratin). Kontrolsüz bir şekilde "protein yemek" için tasarlanmış (kan veya yumurta lekeleri) bir enzimatik deterjan uygularsanız, deterjan lifin kendisini bozmaya başlayarak kumaşın parlaklığını ve yapısını bozar.',
252
+ },
253
+ {
254
+ type: 'title',
255
+ text: 'Isı Tehlikesi',
256
+ level: 2,
257
+ },
258
+ {
259
+ type: 'paragraph',
260
+ html: 'En yaygın hatalardan biri bir kan lekesini "yumuşatmak" için sıcak su kullanmaktır. Kimyasal olarak ısı, lekenin <strong>proteinlerinin pıhtılaşmasına</strong> neden olarak onları lifin gözenekli yapısına kalıcı olarak sabitler. Protein lekeleri her zaman soğuk suyla işlenmelidir.',
261
+ },
262
+ {
263
+ type: 'tip',
264
+ title: 'Acil Durum Protokolü: Kırmızı Şarap',
265
+ html: '<strong>A. Pasif emilim:</strong> Emici kağıtla tampon yapın, mekanik genişlemeyi önlemek için asla ovalamayın.<br><strong>B. Ozmotik nötralizasyon:</strong> Sıvıyı lif çekirdeğinden dışarı çekmek için ince tuzla kaplayın.<br><strong>C. Kimyasal işlem:</strong> Lif ısıya dayanıklıysa 40°C\'de perkarbonat ve su karışımından oluşan bir macun uygulayın.',
266
+ },
267
+ {
268
+ type: 'title',
269
+ text: 'Spesifik Çözücüler ve Önlemler',
270
+ level: 2,
271
+ },
272
+ {
273
+ type: 'paragraph',
274
+ html: '<strong>Aseton</strong>, tırnak cilaları veya yapıştırıcılar için olağanüstü bir çözücüdür ancak <strong>asetat</strong> için yıkıcıdır. Selüloz türevi lifler olmalarına rağmen kimyasal işlem gördükleri için aseton kumaşı kelimenin tam anlamıyla çözer.',
275
+ },
276
+ {
277
+ type: 'paragraph',
278
+ html: '<strong>İzopropil alkol</strong> daha stabildir ancak boyalı sentetiklerde pigmentin kendisini sürükleyebilir. Ana işlemden önce her zaman görünmeyen bir bölgede "kenar kıvrımı testi" yapılmasını öneririz.',
279
+ },
280
+ ],
281
+ faqTitle: 'Sıkça Sorulan Sorular',
282
+ faq: faqData,
283
+ bibliographyTitle: 'Kaynakça',
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,295 @@
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
+ const faqData = [
10
+ {
11
+ question: '我可以用漂白水代替过碳酸钠吗?',
12
+ answer:
13
+ '漂白水(次氯酸钠)具有高度腐蚀性。它会降解纤维,使衣物变黄变脆。过碳酸盐通过活性氧进行漂白,能在保护纤维自然分子结构的同时达到去污效果。',
14
+ },
15
+ {
16
+ question: '为什么醋有助于除味?',
17
+ answer: '由于人体的异味通常呈碱性,醋中的乙酸能中和这些异味,将其转化为无味的盐类,从而在漂洗过程中彻底清除。',
18
+ },
19
+ {
20
+ question: '处理血渍一定要用冷水吗?',
21
+ answer:
22
+ '是的。热量会使血红蛋白凝固,从而使其永久固定在纤维上。冷水能保持污渍处于可溶状态,有利于酶制剂发挥作用。',
23
+ },
24
+ {
25
+ question: '如果我把丙酮用在醋酯纤维(acetate)衣物上会怎样?',
26
+ answer:
27
+ '丙酮会溶解三醋酯纤维和醋酯纤维。醋酯纤维是纤维素与乙酸酯化而成的,完全溶于丙酮。使用丙酮会导致织物发生不可逆的损毁。',
28
+ },
29
+ ];
30
+
31
+ const howToData = [
32
+ {
33
+ name: '确认纤维类型',
34
+ text: '查看衣物洗涤标签,确认是天然纤维、合成纤维还是高档动物纤维(羊毛、真丝、羊绒)。',
35
+ },
36
+ {
37
+ name: '在工具中选择纤维',
38
+ text: '在第一个选项中选择对应的材质。',
39
+ },
40
+ {
41
+ name: '选择污渍类型',
42
+ text: '指明污渍是属于有机物(红酒、水果)、蛋白质(血液)、油脂还是合成物(墨水)。',
43
+ },
44
+ {
45
+ name: '执行指定方案',
46
+ text: '按照提供的溶剂类型、温度和方法说明进行操作。请特别留意“关键警示”部分。',
47
+ },
48
+ ];
49
+
50
+ const faqSchema: WithContext<FAQPage> = {
51
+ '@context': 'https://schema.org',
52
+ '@type': 'FAQPage',
53
+ mainEntity: faqData.map((item) => ({
54
+ '@type': 'Question',
55
+ name: item.question,
56
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
57
+ })),
58
+ };
59
+
60
+ const howToSchema: WithContext<HowTo> = {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'HowTo',
63
+ name: title,
64
+ description,
65
+ step: howToData.map((step) => ({
66
+ '@type': 'HowToStep',
67
+ name: step.name,
68
+ text: step.text,
69
+ })),
70
+ };
71
+
72
+ const appSchema: WithContext<SoftwareApplication> = {
73
+ '@context': 'https://schema.org',
74
+ '@type': 'SoftwareApplication',
75
+ name: title,
76
+ description,
77
+ applicationCategory: 'UtilityApplication',
78
+ operatingSystem: 'All',
79
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
80
+ inLanguage: 'zh',
81
+ };
82
+
83
+ export const content: ToolLocaleContent<StainChemistryUI> = {
84
+ slug,
85
+ title,
86
+ description,
87
+ ui: {
88
+ toolTitle: '除渍化学方案',
89
+ fiberLabel: '1. 纤维',
90
+ selectFiberPlaceholder: '选择织物材质...',
91
+ stainLabel: '2. 污渍',
92
+ selectStainPlaceholder: '发生了什么?',
93
+ molecularDiagnosis: '分子诊断',
94
+ requiredAgent: '所需药剂',
95
+ thermalCondition: '温度条件',
96
+ temperature: '温度',
97
+ cleaningInstructions: '清洗说明',
98
+ criticalWarning: '关键警示',
99
+ criticalWarningLabel: '警告',
100
+ technicalNote: '技术注释',
101
+ technicalNoteText: '在进行完整化学预处理前,请务必在衣物隐蔽处进行色牢度测试。',
102
+ systemDiagnosis: '诊断系统',
103
+ systemDiagnosisDesc: '配置纺织品参数以获取清洗路线图',
104
+ delicatePercarbonateWarning: '存在分子降解风险。动物纤维对过碳酸盐高度敏感。请在不显眼处进行测试。',
105
+ fiberData: {
106
+ cotton: { name: '棉', family: 'natural', isNoble: false },
107
+ linen: { name: '亚麻', family: 'natural', isNoble: true },
108
+ wool: { name: '羊毛 / 美利奴', family: 'natural', isNoble: true },
109
+ silk: { name: '真丝', family: 'natural', isNoble: true },
110
+ cashmere: { name: '羊绒', family: 'natural', isNoble: true },
111
+ mohair: { name: '马海毛', family: 'natural', isNoble: true },
112
+ angora: { name: '安哥拉兔毛', family: 'natural', isNoble: true },
113
+ alpaca: { name: '羊驼毛', family: 'natural', isNoble: true },
114
+ polyester: { name: '聚酯纤维(涤纶)', family: 'synthetic', isNoble: false },
115
+ viscose: { name: '粘胶纤维 / 人造丝', family: 'artificial', isNoble: false },
116
+ nylon: { name: '尼龙(聚酰胺纤维)', family: 'synthetic', isNoble: false },
117
+ acrylic: { name: '腈纶', family: 'synthetic', isNoble: false },
118
+ },
119
+ agents: {
120
+ percarbonte: {
121
+ name: '过碳酸钠',
122
+ description: '可生物降解的氧系漂白剂。溶解时释放活性氧。',
123
+ warning: '避免在高浓度下用于蛋白质纤维(真丝、羊毛)。',
124
+ },
125
+ isopropyl: {
126
+ name: '异丙基酒精',
127
+ description: '针对色素和轻度油脂的有效溶剂。',
128
+ warning: '如果不稀释,可能会损伤真丝光泽或溶解某些腈纶织物。',
129
+ },
130
+ acetone: {
131
+ name: '丙酮',
132
+ description: '针对漆类和胶水的强力溶剂。',
133
+ warning: '严禁用于醋酯纤维和三醋酯纤维(会溶解纤维)。',
134
+ },
135
+ enzyme: {
136
+ name: '酶促洗涤剂',
137
+ description: '含有能够分解生物污渍的蛋白酶。',
138
+ warning: '在羊毛和真丝(本身也是蛋白质)上使用时需谨慎。',
139
+ },
140
+ vinegar: {
141
+ name: '白醋',
142
+ description: '用于中和异味和固色的温和乙酸。',
143
+ },
144
+ },
145
+ stains: [
146
+ {
147
+ id: 'wine',
148
+ name: '红酒 / 水果',
149
+ protocols: {
150
+ natural: { agentId: 'percarbonate', temperature: '40–60°C', method: '长时间浸泡' },
151
+ synthetic: { agentId: 'percarbonate', temperature: '40°C', method: '直接涂抹糊状物' },
152
+ delicate: {
153
+ agentId: 'vinegar',
154
+ temperature: '冷水性能',
155
+ method: '用苏打水和醋冲洗',
156
+ notes: '请勿搓揉',
157
+ },
158
+ },
159
+ },
160
+ {
161
+ id: 'blood',
162
+ name: '血液',
163
+ protocols: {
164
+ natural: {
165
+ agentId: 'enzyme',
166
+ temperature: '冷水性能',
167
+ method: '先用盐水浸泡,再使用酶制剂',
168
+ },
169
+ synthetic: { agentId: 'enzyme', temperature: '冷水性能', method: '直接涂抹' },
170
+ delicate: {
171
+ agentId: 'vinegar',
172
+ temperature: '冷水性能',
173
+ method: '立即冲洗,避免受热',
174
+ },
175
+ },
176
+ },
177
+ {
178
+ id: 'grease',
179
+ name: '油脂 / 机油',
180
+ protocols: {
181
+ natural: {
182
+ agentId: 'isopropyl',
183
+ temperature: '40°C',
184
+ method: '先用酒精溶解,再进行洗涤',
185
+ },
186
+ synthetic: {
187
+ agentId: 'isopropyl',
188
+ temperature: '40°C',
189
+ method: '污渍下方垫吸水纸',
190
+ },
191
+ delicate: { agentId: 'isopropyl', temperature: '冷水性能', method: '将酒精稀释至 50%' },
192
+ },
193
+ },
194
+ {
195
+ id: 'ink',
196
+ name: '墨水 / 马克笔',
197
+ protocols: {
198
+ natural: {
199
+ agentId: 'isopropyl',
200
+ temperature: '室温',
201
+ method: '由外向内点蘸吸附',
202
+ },
203
+ synthetic: {
204
+ agentId: 'isopropyl',
205
+ temperature: '室温',
206
+ method: '需特别小心污渍扩散',
207
+ },
208
+ delicate: {
209
+ agentId: 'isopropyl',
210
+ temperature: '冷水性能',
211
+ method: '稀释并先在隐蔽处测试',
212
+ },
213
+ },
214
+ },
215
+ ],
216
+ },
217
+ seo: [
218
+ {
219
+ type: 'title',
220
+ text: '纺织品清洁背后的化学原理',
221
+ level: 2,
222
+ },
223
+ {
224
+ type: 'paragraph',
225
+ html: '并非所有污渍都是一样的,不同纤维对同一化学药剂的反应也不尽相同。拯救一件衣物还是彻底毁掉它,关键在于理解污渍的分子本质和纤维结构。',
226
+ },
227
+ {
228
+ type: 'card',
229
+ title: '01 —— 受控氧化',
230
+ icon: 'mdi:atom',
231
+ html: '<strong>过碳酸钠</strong>释放出的活性氧能断裂发色团(污渍颜色的来源分子)的双键,使其变得无色并可溶于水。这是处理有机污渍最有效的方法。',
232
+ },
233
+ {
234
+ type: 'card',
235
+ title: '02 —— 溶剂增溶',
236
+ icon: 'mdi:flask-outline',
237
+ html: '油渍或墨水等污渍不溶于水。<strong>异丙基酒精</strong>或<strong>丙酮</strong>等溶剂能降低表面张力并吸引污渍中的非极性分子,使它们能够转移至承载媒介上。',
238
+ },
239
+ {
240
+ type: 'title',
241
+ text: '纤维的主宰:为什么材质很重要',
242
+ level: 2,
243
+ },
244
+ {
245
+ type: 'paragraph',
246
+ html: '并非所有纤维都能经受同样的“侵蚀”。<strong>真丝和羊毛</strong>属于蛋白质(丝蛋白和角蛋白)。如果你盲目使用专为“吞噬蛋白质”(用于处理血渍或蛋渍)设计的酶促洗涤剂,它会开始降解纤维本身,从而破坏织物的光泽和结构。',
247
+ },
248
+ {
249
+ type: 'title',
250
+ text: '热量的危险性',
251
+ level: 2,
252
+ },
253
+ {
254
+ type: 'paragraph',
255
+ html: '最常见的错误之一是使用热水来“软化”血渍。从化学角度看,热量会导致污渍中的<strong>蛋白质凝固</strong>,从而使其永久固定在纤维的多孔结构中。蛋白质类污渍必须始终使用冷水处理。',
256
+ },
257
+ {
258
+ type: 'tip',
259
+ title: '紧急处理方案:红酒渍',
260
+ html: '<strong>A. 被动吸附:</strong>用吸水纸点蘸,严禁搓揉以防污渍发生机械性扩散。<br><strong>B. 渗透中和:</strong>覆盖细盐以将液体从纤维核心引出。<br><strong>C. 化学作用:</strong>如果纤维耐热,可使用 40°C 的过碳酸盐水糊。',
261
+ },
262
+ {
263
+ type: 'title',
264
+ text: '专用溶剂与预防措施',
265
+ level: 2,
266
+ },
267
+ {
268
+ type: 'paragraph',
269
+ html: '<strong>丙酮</strong>是处理指甲油或胶水的绝佳溶剂,但会对<strong>醋酯纤维</strong>产生毁灭性打击。由于此类纤维源自纤维素但经过了化学处理,丙酮会直接溶解织物。',
270
+ },
271
+ {
272
+ type: 'paragraph',
273
+ html: '<strong>异丙基酒精</strong>相对更稳定,但在染色的合成纤维上可能会带走色素本身。我们建议在正式处理前,始终先在“内锁边”等隐蔽区域进行测试。',
274
+ },
275
+ ],
276
+ faqTitle: '常见问题',
277
+ faq: faqData,
278
+ bibliographyTitle: '参考文献',
279
+ bibliography: [
280
+ {
281
+ name: 'AATCC - 美国纺织化学家与染色家协会',
282
+ url: 'https://www.aatcc.org',
283
+ },
284
+ {
285
+ name: 'Kissa, E. — 纺织助剂',
286
+ url: 'https://www.springer.com/gp/book/9783642057328',
287
+ },
288
+ {
289
+ name: 'ISO 105 — 纺织品:色牢度试验',
290
+ url: 'https://www.iso.org/standard/72682.html',
291
+ },
292
+ ],
293
+ howTo: howToData,
294
+ schemas: [faqSchema, howToSchema, appSchema],
295
+ };
@@ -7,10 +7,6 @@ import type { StainChemistryUI } from './ui';
7
7
 
8
8
  export type StainChemistryLocaleContent = ToolLocaleContent<StainChemistryUI>;
9
9
 
10
- import { content as es } from './i18n/es';
11
- import { content as en } from './i18n/en';
12
- import { content as fr } from './i18n/fr';
13
-
14
10
  export const stainChemistry: TextilesToolEntry<StainChemistryUI> = {
15
11
  id: 'stain-chemistry',
16
12
  icons: {
@@ -18,9 +14,21 @@ export const stainChemistry: TextilesToolEntry<StainChemistryUI> = {
18
14
  fg: 'mdi:iv-bag',
19
15
  },
20
16
  i18n: {
21
- es: async () => es,
22
- en: async () => en,
23
- fr: async () => fr,
17
+ es: () => import('./i18n/es').then((m) => m.content),
18
+ en: () => import('./i18n/en').then((m) => m.content),
19
+ fr: () => import('./i18n/fr').then((m) => m.content),
20
+ de: () => import('./i18n/de').then((m) => m.content),
21
+ id: () => import('./i18n/id').then((m) => m.content),
22
+ it: () => import('./i18n/it').then((m) => m.content),
23
+ ja: () => import('./i18n/ja').then((m) => m.content),
24
+ ko: () => import('./i18n/ko').then((m) => m.content),
25
+ nl: () => import('./i18n/nl').then((m) => m.content),
26
+ pl: () => import('./i18n/pl').then((m) => m.content),
27
+ pt: () => import('./i18n/pt').then((m) => m.content),
28
+ ru: () => import('./i18n/ru').then((m) => m.content),
29
+ sv: () => import('./i18n/sv').then((m) => m.content),
30
+ tr: () => import('./i18n/tr').then((m) => m.content),
31
+ zh: () => import('./i18n/zh').then((m) => m.content),
24
32
  },
25
33
  };
26
34