@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,272 +1,272 @@
1
- import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
- import type { ToolLocaleContent } from '../../../types';
3
- import { bibliography } from '../bibliography';
4
- import type { FabricTruthUI } from '../ui';
5
-
6
- const slug = 'fabric-truthfulness';
7
- const title = '织物真相:纤维质量分析';
8
- const description = '通过分析衣服的成分,探索其真实的品质。是天然棉还是昂贵的塑料?科学进行纤维分析。';
9
-
10
- const faqData = [
11
- {
12
- question: '时尚界的"洗绿"(Greenwashing)是指什么?',
13
- answer:
14
- '这是一种营销手法,品牌在没有真实证据的情况下使用"环保"或"可持续"等词汇。分析纤维的实际成分是验证一件衣服究竟是天然的还是合成的唯一方法。',
15
- },
16
- {
17
- question: '为什么涤纶(聚酯纤维)的品质通常被认为低于棉?',
18
- answer:
19
- '涤纶本质上是塑料(PET)。虽然耐穿,但不透气,容易由于细菌滋生而产生异味,且每次洗涤都会产生微塑料。而棉或亚麻等天然纤维具有更好的体温调节功能。',
20
- },
21
- {
22
- question: '我的衣服里含有氨纶(弹性纤维)坏处大吗?',
23
- answer:
24
- '少量(1-5%)的氨纶(莱卡)可以提供舒适度和合身感。然而,它使衣物的回收变得极其困难,因为它将塑料与天然纤维混合在一起,这通常是"快时尚"产品的标志。',
25
- },
26
- {
27
- question: '如何通过标签识别高品质衣物?',
28
- answer:
29
- '寻找单一材料成分(如 100% 棉、100% 羊毛)。复杂的混纺通常是为了降低生产成本,并在动听的商业名称下隐藏合成纤维。',
30
- },
31
- ];
32
-
33
- const howToData = [
34
- {
35
- name: '找到内侧洗标',
36
- text: '寻找衣服内侧边缝或衣领处的白色成分洗标。',
37
- },
38
- {
39
- name: '识别成分名称',
40
- text: '读取每种纤维的百分比(例如:70% 棉,30% 聚酯纤维)。',
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: 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: description,
79
- applicationCategory: 'UtilityApplication',
80
- operatingSystem: 'All',
81
- offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
82
- inLanguage: 'zh',
83
- };
84
-
85
- export const content: ToolLocaleContent<FabricTruthUI> = {
86
- slug,
87
- title,
88
- description,
89
- ui: {
90
- toolTitle: '织物真相',
91
- addFiber: '添加纤维',
92
- total: '总计',
93
- composition: '成分分析',
94
- description: '照实输入您衣服标签上的百分比,揭开其品质的真相。',
95
- verdict: '诊断结论',
96
- breathability: '透气性',
97
- durability: '耐用度',
98
- warmth: '保暖性',
99
- careWarning: '特殊护理提示',
100
- specialCareWarning: '标准洗涤:请始终遵循实物标签上的说明。',
101
- validationError: '成分总和必须恰好为 100% 才能查看结论',
102
- actualTotal: '当前比例',
103
- missingLabel: '尚欠',
104
- disclaimer: '透气性、耐用度和保暖性数据是基于每种纤维类型的行业平均值的估算。',
105
- careWarnings: {
106
- delicate: '非常娇贵:冷水手洗。不可烘干。避免用力拧干。',
107
- wool: '羊毛 / 高级兽毛:使用专用程序冷水洗涤。平铺晾干以防变形。不可烘干。',
108
- linen: '亚麻:极易起皱。洗后微湿时熨烫效果最佳。',
109
- semisynthetic: '半合成纤维:湿润时强力下降。请小心洗涤,不可强力脱水。',
110
- standard: '标准洗涤:请始终遵循实物标签上的说明。',
111
- },
112
- fiberData: {
113
- cotton: {
114
- name: '棉',
115
- family: 'natural',
116
- breathability: 9,
117
- durability: 7,
118
- warmth: 4,
119
- isNoble: false,
120
- },
121
- linen: {
122
- name: '亚麻',
123
- family: 'natural',
124
- breathability: 10,
125
- durability: 9,
126
- warmth: 2,
127
- isNoble: true,
128
- },
129
- wool: {
130
- name: '羊毛 / 美利奴',
131
- family: 'natural',
132
- breathability: 8,
133
- durability: 6,
134
- warmth: 10,
135
- isNoble: true,
136
- },
137
- silk: {
138
- name: '真丝',
139
- family: 'natural',
140
- breathability: 7,
141
- durability: 5,
142
- warmth: 6,
143
- isNoble: true,
144
- },
145
- cashmere: {
146
- name: '羊绒',
147
- family: 'natural',
148
- breathability: 9,
149
- durability: 5,
150
- warmth: 10,
151
- isNoble: true,
152
- },
153
- mohair: {
154
- name: '马海毛',
155
- family: 'natural',
156
- breathability: 8,
157
- durability: 9,
158
- warmth: 9,
159
- isNoble: true,
160
- },
161
- angora: {
162
- name: '安哥拉兔毛',
163
- family: 'natural',
164
- breathability: 8,
165
- durability: 4,
166
- warmth: 10,
167
- isNoble: true,
168
- },
169
- alpaca: {
170
- name: '羊驼毛',
171
- family: 'natural',
172
- breathability: 9,
173
- durability: 8,
174
- warmth: 10,
175
- isNoble: true,
176
- },
177
- polyester: {
178
- name: '聚酯纤维 (涤纶)',
179
- family: 'synthetic',
180
- breathability: 2,
181
- durability: 10,
182
- warmth: 5,
183
- isNoble: false,
184
- },
185
- viscose: {
186
- name: '粘胶纤维 / 人造棉',
187
- family: 'artificial',
188
- breathability: 8,
189
- durability: 4,
190
- warmth: 3,
191
- isNoble: false,
192
- },
193
- nylon: {
194
- name: '尼龙 (锦纶)',
195
- family: 'synthetic',
196
- breathability: 3,
197
- durability: 10,
198
- warmth: 4,
199
- isNoble: false,
200
- },
201
- acrylic: {
202
- name: '腈纶 (人造羊毛)',
203
- family: 'synthetic',
204
- breathability: 4,
205
- durability: 6,
206
- warmth: 8,
207
- isNoble: false,
208
- },
209
- },
210
- verdicts: {
211
- plasticy: {
212
- label: '昂贵的塑料',
213
- description: '这件衣服的大部分成分是石油。请做好出汗和快速起球的心理准备。',
214
- },
215
- hook: {
216
- label: '营销噱头',
217
- description: '那一点点百分比的高级纤维仅仅是为了写在标签上。你几乎感受不到它的任何好处。',
218
- },
219
- fragile: {
220
- label: '柔软但娇弱',
221
- description: '触感非常舒适,但洗涤时需格外小心:它极易变形和缩水。',
222
- },
223
- natural: {
224
- label: '天然品质',
225
- description: '透气且耐穿的衣物。非常适合敏感性肌肤及长期穿着。',
226
- },
227
- technical: {
228
- label: '功能性 / 超合成衣物',
229
- description: '除非是专门的运动服,否则你是在为纯塑料买单。',
230
- },
231
- luxury: {
232
- label: '真材实料',
233
- description: '这是一项对舒适与耐用的投资。请给予它应有的妥善护理。',
234
- },
235
- balanced: {
236
- label: '平衡混纺',
237
- description: '一种功能性的组合,通常旨在平衡生产成本与耐穿性。',
238
- },
239
- },
240
- },
241
- seo: [
242
- { type: 'title', text: '洗标背后的真相:面料成分大师指南', level: 2 },
243
- { type: 'paragraph', html: '您是否曾经纳闷,为什么那件名牌 T 恤会让您流这么多汗?或者为什么那件"羊毛"毛衣扎得让人无法忍受?答案不在于设计,而在于其纤维的化学成分。' },
244
- { type: 'paragraph', html: '在<strong>快时尚</strong>(Fast Fashion)主导的世界里,面料的高品质往往在短暂的美学面前退居其次。然而,了解面料成分是进行智能、耐用且亲肤消费的唯一途径。我们的<strong>织物真相</strong>工具通过分析官方百分比,揭示您面对的是一件高品质衣物,还是一块经过加工的塑料。' },
245
- { type: 'title', text: '我们的分析方法', level: 2 },
246
- { type: 'paragraph', html: '我们采用基于欧洲和北美行业标准的加权算法,从三个核心维度进行评估:' },
247
- { type: 'list', items: ['<strong>透气性:</strong> 纤维允许水蒸气和空气通过的能力。', '<strong>耐用度:</strong> 抗磨损、抗拉伸以及抗<strong>起球</strong>(pilling)的能力。', '<strong>热效率:</strong> 保温或提供机械凉爽感的能力。'] },
248
- { type: 'tip', title: '重要提示', html: '法律要求在欧盟和美国销售的所有衣物必须按百分比由高到低列出其成分。如果一件衣服没有标签或标签模糊不清,请务必保持警惕:它很可能不符合最低的面料安全标准。' },
249
- { type: 'title', text: '零售业中的常见"套路"', level: 2 },
250
- { type: 'paragraph', html: '为了提高平庸衣物的感知价值,存在着非常老练的营销技巧。在这里,我们教您如何识别它们:' },
251
- { type: 'card', title: '高级纤维诱饵', icon: 'mdi:alert', html: '您会看到大字写着"含羊绒"或"含真丝"的标签。查看成分表时,却发现含有 3% 的真丝和 97% 的聚酯纤维。这 3% 既不提供柔软度,也不提供光泽或保暖性;它唯一的用途就是让品牌能够提价 20%。' },
252
- { type: 'card', title: '"环保粘胶"的神话', icon: 'mdi:leaf', html: '尽管粘胶纤维来源于纤维素(木材),但其目前的制造过程通常具有高度污染性,最终产出的纤维在变湿后强度会剧烈下降。除非是 <strong>莱赛尔(Lyocell)</strong> 或 <strong>天丝(Tencel)</strong>,否则其耐用性非常有限。' },
253
- { type: 'title', text: '按分类深度分析', level: 2 },
254
- { type: 'title', text: '1. 天然纤维(引以为傲的有机物)', level: 3 },
255
- { type: 'paragraph', html: '这些是行业的金标准。长绒<strong>棉</strong>(如皮马棉或埃及棉)提供恒久的柔软。<strong>亚麻</strong>从科学角度而言是炎热天气的最佳选择,因为其分子结构可以排斥热量并吸收湿气。<strong>羊毛</strong>和<strong>工业大麻</strong>(Hemp)是天然抗菌剂,不容易保留异味,因此不需要频繁洗涤。' },
256
- { type: 'title', text: '2. 半合成纤维(混合体)', level: 3 },
257
- { type: 'paragraph', html: '这包括 <strong>粘胶纤维</strong>、<strong>人造丝</strong> 和 <strong>莫代尔</strong>。它们的手感像丝绸,但价格接近棉花。它们非常适合垂坠感强的衣物,但非常"吸水":吸收大量水分且干燥缓慢,如果不注意护理,可能会滋生霉菌。<strong>莱赛尔(天丝)</strong> 是该组中的高端环保版本,具有闭环生产周期和更高的抗性。' },
258
- { type: 'title', text: '3. 合成纤维(纺制塑料)', level: 3 },
259
- { type: 'paragraph', html: '<strong>聚酯纤维</strong>(涤纶)是市场之王。它价格便宜,不皱,而且是永恒的(字面意思,需要 200 年才能分解)。问题在于它不透气。它在面料和您的皮肤之间创造了一个潮湿的微气候,是细菌繁殖的理想温床。<strong>腈纶</strong>是羊毛的廉价仿制品:虽然保暖,但会产生大量静电,且洗两次就会起满球。' },
260
- { type: 'title', text: '面料持久建议', level: 2 },
261
- { type: 'paragraph', html: '即使是世界上最好的衣服,也可能在一次不当洗涤中毁掉。以下是通用的黄金法则:' },
262
- { type: 'tip', title: '冷水是您的好朋友', html: '90% 的衣物不需要超过 30°C 的水温。高温会降解弹性纤维并使天然纤维缩水。' },
263
- { type: 'tip', title: '少即是多(洗涤剂)', html: '过多的洗涤剂会留下残留物,从而吸附污垢并使衣物变硬。' },
264
- { type: 'tip', title: '烘干机:微妙的敌人', html: '您在烘干机滤网中看到的毛絮,实际上是由于摩擦和热量从您衣服上脱落下来的纤维碎片。' },
265
- { type: 'tip', title: '反面洗涤', html: '保护颜色和绣花免受滚筒和其他衣物的磨擦。' },
266
- { type: 'paragraph', html: '"买得少一点,选得好一点,穿得久一点。" - - 这个分析工具是您迈向理性、高品质衣橱的第一步。' },
267
- ],
268
- faq: faqData,
269
- bibliography: bibliography,
270
- howTo: howToData,
271
- schemas: [faqSchema, howToSchema, appSchema],
272
- };
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
4
+ import type { FabricTruthUI } from '../ui';
5
+
6
+ const slug = 'fabric-truthfulness';
7
+ const title = '织物真相:纤维质量分析';
8
+ const description = '通过分析衣服的成分,探索其真实的品质。是天然棉还是昂贵的塑料?科学进行纤维分析。';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '时尚界的"洗绿"(Greenwashing)是指什么?',
13
+ answer:
14
+ '这是一种营销手法,品牌在没有真实证据的情况下使用"环保"或"可持续"等词汇。分析纤维的实际成分是验证一件衣服究竟是天然的还是合成的唯一方法。',
15
+ },
16
+ {
17
+ question: '为什么涤纶(聚酯纤维)的品质通常被认为低于棉?',
18
+ answer:
19
+ '涤纶本质上是塑料(PET)。虽然耐穿,但不透气,容易由于细菌滋生而产生异味,且每次洗涤都会产生微塑料。而棉或亚麻等天然纤维具有更好的体温调节功能。',
20
+ },
21
+ {
22
+ question: '我的衣服里含有氨纶(弹性纤维)坏处大吗?',
23
+ answer:
24
+ '少量(1-5%)的氨纶(莱卡)可以提供舒适度和合身感。然而,它使衣物的回收变得极其困难,因为它将塑料与天然纤维混合在一起,这通常是"快时尚"产品的标志。',
25
+ },
26
+ {
27
+ question: '如何通过标签识别高品质衣物?',
28
+ answer:
29
+ '寻找单一材料成分(如 100% 棉、100% 羊毛)。复杂的混纺通常是为了降低生产成本,并在动听的商业名称下隐藏合成纤维。',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: '找到内侧洗标',
36
+ text: '寻找衣服内侧边缝或衣领处的白色成分洗标。',
37
+ },
38
+ {
39
+ name: '识别成分名称',
40
+ text: '读取每种纤维的百分比(例如:70% 棉,30% 聚酯纤维)。',
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: 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: description,
79
+ applicationCategory: 'UtilityApplication',
80
+ operatingSystem: 'All',
81
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
82
+ inLanguage: 'zh',
83
+ };
84
+
85
+ export const content: ToolLocaleContent<FabricTruthUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ ui: {
90
+ toolTitle: '织物真相',
91
+ addFiber: '添加纤维',
92
+ total: '总计',
93
+ composition: '成分分析',
94
+ description: '照实输入您衣服标签上的百分比,揭开其品质的真相。',
95
+ verdict: '诊断结论',
96
+ breathability: '透气性',
97
+ durability: '耐用度',
98
+ warmth: '保暖性',
99
+ careWarning: '特殊护理提示',
100
+ specialCareWarning: '标准洗涤:请始终遵循实物标签上的说明。',
101
+ validationError: '成分总和必须恰好为 100% 才能查看结论',
102
+ actualTotal: '当前比例',
103
+ missingLabel: '尚欠',
104
+ disclaimer: '透气性、耐用度和保暖性数据是基于每种纤维类型的行业平均值的估算。',
105
+ careWarnings: {
106
+ delicate: '非常娇贵:冷水手洗。不可烘干。避免用力拧干。',
107
+ wool: '羊毛 / 高级兽毛:使用专用程序冷水洗涤。平铺晾干以防变形。不可烘干。',
108
+ linen: '亚麻:极易起皱。洗后微湿时熨烫效果最佳。',
109
+ semisynthetic: '半合成纤维:湿润时强力下降。请小心洗涤,不可强力脱水。',
110
+ standard: '标准洗涤:请始终遵循实物标签上的说明。',
111
+ },
112
+ fiberData: {
113
+ cotton: {
114
+ name: '棉',
115
+ family: 'natural',
116
+ breathability: 9,
117
+ durability: 7,
118
+ warmth: 4,
119
+ isNoble: false,
120
+ },
121
+ linen: {
122
+ name: '亚麻',
123
+ family: 'natural',
124
+ breathability: 10,
125
+ durability: 9,
126
+ warmth: 2,
127
+ isNoble: true,
128
+ },
129
+ wool: {
130
+ name: '羊毛 / 美利奴',
131
+ family: 'natural',
132
+ breathability: 8,
133
+ durability: 6,
134
+ warmth: 10,
135
+ isNoble: true,
136
+ },
137
+ silk: {
138
+ name: '真丝',
139
+ family: 'natural',
140
+ breathability: 7,
141
+ durability: 5,
142
+ warmth: 6,
143
+ isNoble: true,
144
+ },
145
+ cashmere: {
146
+ name: '羊绒',
147
+ family: 'natural',
148
+ breathability: 9,
149
+ durability: 5,
150
+ warmth: 10,
151
+ isNoble: true,
152
+ },
153
+ mohair: {
154
+ name: '马海毛',
155
+ family: 'natural',
156
+ breathability: 8,
157
+ durability: 9,
158
+ warmth: 9,
159
+ isNoble: true,
160
+ },
161
+ angora: {
162
+ name: '安哥拉兔毛',
163
+ family: 'natural',
164
+ breathability: 8,
165
+ durability: 4,
166
+ warmth: 10,
167
+ isNoble: true,
168
+ },
169
+ alpaca: {
170
+ name: '羊驼毛',
171
+ family: 'natural',
172
+ breathability: 9,
173
+ durability: 8,
174
+ warmth: 10,
175
+ isNoble: true,
176
+ },
177
+ polyester: {
178
+ name: '聚酯纤维 (涤纶)',
179
+ family: 'synthetic',
180
+ breathability: 2,
181
+ durability: 10,
182
+ warmth: 5,
183
+ isNoble: false,
184
+ },
185
+ viscose: {
186
+ name: '粘胶纤维 / 人造棉',
187
+ family: 'artificial',
188
+ breathability: 8,
189
+ durability: 4,
190
+ warmth: 3,
191
+ isNoble: false,
192
+ },
193
+ nylon: {
194
+ name: '尼龙 (锦纶)',
195
+ family: 'synthetic',
196
+ breathability: 3,
197
+ durability: 10,
198
+ warmth: 4,
199
+ isNoble: false,
200
+ },
201
+ acrylic: {
202
+ name: '腈纶 (人造羊毛)',
203
+ family: 'synthetic',
204
+ breathability: 4,
205
+ durability: 6,
206
+ warmth: 8,
207
+ isNoble: false,
208
+ },
209
+ },
210
+ verdicts: {
211
+ plasticy: {
212
+ label: '昂贵的塑料',
213
+ description: '这件衣服的大部分成分是石油。请做好出汗和快速起球的心理准备。',
214
+ },
215
+ hook: {
216
+ label: '营销噱头',
217
+ description: '那一点点百分比的高级纤维仅仅是为了写在标签上。你几乎感受不到它的任何好处。',
218
+ },
219
+ fragile: {
220
+ label: '柔软但娇弱',
221
+ description: '触感非常舒适,但洗涤时需格外小心:它极易变形和缩水。',
222
+ },
223
+ natural: {
224
+ label: '天然品质',
225
+ description: '透气且耐穿的衣物。非常适合敏感性肌肤及长期穿着。',
226
+ },
227
+ technical: {
228
+ label: '功能性 / 超合成衣物',
229
+ description: '除非是专门的运动服,否则你是在为纯塑料买单。',
230
+ },
231
+ luxury: {
232
+ label: '真材实料',
233
+ description: '这是一项对舒适与耐用的投资。请给予它应有的妥善护理。',
234
+ },
235
+ balanced: {
236
+ label: '平衡混纺',
237
+ description: '一种功能性的组合,通常旨在平衡生产成本与耐穿性。',
238
+ },
239
+ },
240
+ },
241
+ seo: [
242
+ { type: 'title', text: '洗标背后的真相:面料成分大师指南', level: 2 },
243
+ { type: 'paragraph', html: '您是否曾经纳闷,为什么那件名牌 T 恤会让您流这么多汗?或者为什么那件"羊毛"毛衣扎得让人无法忍受?答案不在于设计,而在于其纤维的化学成分。' },
244
+ { type: 'paragraph', html: '在<strong>快时尚</strong>(Fast Fashion)主导的世界里,面料的高品质往往在短暂的美学面前退居其次。然而,了解面料成分是进行智能、耐用且亲肤消费的唯一途径。我们的<strong>织物真相</strong>工具通过分析官方百分比,揭示您面对的是一件高品质衣物,还是一块经过加工的塑料。' },
245
+ { type: 'title', text: '我们的分析方法', level: 2 },
246
+ { type: 'paragraph', html: '我们采用基于欧洲和北美行业标准的加权算法,从三个核心维度进行评估:' },
247
+ { type: 'list', items: ['<strong>透气性:</strong> 纤维允许水蒸气和空气通过的能力。', '<strong>耐用度:</strong> 抗磨损、抗拉伸以及抗<strong>起球</strong>(pilling)的能力。', '<strong>热效率:</strong> 保温或提供机械凉爽感的能力。'] },
248
+ { type: 'tip', title: '重要提示', html: '法律要求在欧盟和美国销售的所有衣物必须按百分比由高到低列出其成分。如果一件衣服没有标签或标签模糊不清,请务必保持警惕:它很可能不符合最低的面料安全标准。' },
249
+ { type: 'title', text: '零售业中的常见"套路"', level: 2 },
250
+ { type: 'paragraph', html: '为了提高平庸衣物的感知价值,存在着非常老练的营销技巧。在这里,我们教您如何识别它们:' },
251
+ { type: 'card', title: '高级纤维诱饵', icon: 'mdi:alert', html: '您会看到大字写着"含羊绒"或"含真丝"的标签。查看成分表时,却发现含有 3% 的真丝和 97% 的聚酯纤维。这 3% 既不提供柔软度,也不提供光泽或保暖性;它唯一的用途就是让品牌能够提价 20%。' },
252
+ { type: 'card', title: '"环保粘胶"的神话', icon: 'mdi:leaf', html: '尽管粘胶纤维来源于纤维素(木材),但其目前的制造过程通常具有高度污染性,最终产出的纤维在变湿后强度会剧烈下降。除非是 <strong>莱赛尔(Lyocell)</strong> 或 <strong>天丝(Tencel)</strong>,否则其耐用性非常有限。' },
253
+ { type: 'title', text: '按分类深度分析', level: 2 },
254
+ { type: 'title', text: '1. 天然纤维(引以为傲的有机物)', level: 3 },
255
+ { type: 'paragraph', html: '这些是行业的金标准。长绒<strong>棉</strong>(如皮马棉或埃及棉)提供恒久的柔软。<strong>亚麻</strong>从科学角度而言是炎热天气的最佳选择,因为其分子结构可以排斥热量并吸收湿气。<strong>羊毛</strong>和<strong>工业大麻</strong>(Hemp)是天然抗菌剂,不容易保留异味,因此不需要频繁洗涤。' },
256
+ { type: 'title', text: '2. 半合成纤维(混合体)', level: 3 },
257
+ { type: 'paragraph', html: '这包括 <strong>粘胶纤维</strong>、<strong>人造丝</strong> 和 <strong>莫代尔</strong>。它们的手感像丝绸,但价格接近棉花。它们非常适合垂坠感强的衣物,但非常"吸水":吸收大量水分且干燥缓慢,如果不注意护理,可能会滋生霉菌。<strong>莱赛尔(天丝)</strong> 是该组中的高端环保版本,具有闭环生产周期和更高的抗性。' },
258
+ { type: 'title', text: '3. 合成纤维(纺制塑料)', level: 3 },
259
+ { type: 'paragraph', html: '<strong>聚酯纤维</strong>(涤纶)是市场之王。它价格便宜,不皱,而且是永恒的(字面意思,需要 200 年才能分解)。问题在于它不透气。它在面料和您的皮肤之间创造了一个潮湿的微气候,是细菌繁殖的理想温床。<strong>腈纶</strong>是羊毛的廉价仿制品:虽然保暖,但会产生大量静电,且洗两次就会起满球。' },
260
+ { type: 'title', text: '面料持久建议', level: 2 },
261
+ { type: 'paragraph', html: '即使是世界上最好的衣服,也可能在一次不当洗涤中毁掉。以下是通用的黄金法则:' },
262
+ { type: 'tip', title: '冷水是您的好朋友', html: '90% 的衣物不需要超过 30°C 的水温。高温会降解弹性纤维并使天然纤维缩水。' },
263
+ { type: 'tip', title: '少即是多(洗涤剂)', html: '过多的洗涤剂会留下残留物,从而吸附污垢并使衣物变硬。' },
264
+ { type: 'tip', title: '烘干机:微妙的敌人', html: '您在烘干机滤网中看到的毛絮,实际上是由于摩擦和热量从您衣服上脱落下来的纤维碎片。' },
265
+ { type: 'tip', title: '反面洗涤', html: '保护颜色和绣花免受滚筒和其他衣物的磨擦。' },
266
+ { type: 'paragraph', html: '"买得少一点,选得好一点,穿得久一点。" - - 这个分析工具是您迈向理性、高品质衣橱的第一步。' },
267
+ ],
268
+ faq: faqData,
269
+ bibliography: bibliography,
270
+ howTo: howToData,
271
+ schemas: [faqSchema, howToSchema, appSchema],
272
+ };
@@ -1,15 +1,15 @@
1
- ---
2
- import { SEORenderer } from '@jjlmoya/utils-shared';
3
- import { fabricTruth } from './index';
4
- import type { KnownLocale } from '../../types';
5
-
6
- interface Props {
7
- locale?: KnownLocale;
8
- }
9
-
10
- const { locale = 'es' } = Astro.props;
11
- const content = await fabricTruth.i18n[locale]?.();
12
- if (!content) return null;
13
- ---
14
-
15
- {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
1
+ ---
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
3
+ import { fabricTruth } from './index';
4
+ import type { KnownLocale } from '../../types';
5
+
6
+ interface Props {
7
+ locale?: KnownLocale;
8
+ }
9
+
10
+ const { locale = 'es' } = Astro.props;
11
+ const content = await fabricTruth.i18n[locale]?.();
12
+ if (!content) return null;
13
+ ---
14
+
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}