@jjlmoya/utils-textiles 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/package.json +59 -58
  2. package/src/category/i18n/de.ts +76 -0
  3. package/src/category/i18n/fr.ts +33 -30
  4. package/src/category/i18n/id.ts +76 -0
  5. package/src/category/i18n/it.ts +76 -0
  6. package/src/category/i18n/ja.ts +76 -0
  7. package/src/category/i18n/ko.ts +76 -0
  8. package/src/category/i18n/nl.ts +76 -0
  9. package/src/category/i18n/pl.ts +76 -0
  10. package/src/category/i18n/pt.ts +76 -0
  11. package/src/category/i18n/ru.ts +76 -0
  12. package/src/category/i18n/sv.ts +76 -0
  13. package/src/category/i18n/tr.ts +76 -0
  14. package/src/category/i18n/zh.ts +76 -0
  15. package/src/category/index.ts +39 -7
  16. package/src/index.ts +12 -12
  17. package/src/tests/i18n_coverage.test.ts +36 -0
  18. package/src/tests/schemas_fulfillment.test.ts +23 -0
  19. package/src/tests/slug_uniqueness.test.ts +81 -0
  20. package/src/tests/title_quality.test.ts +55 -0
  21. package/src/tool/burnTest/i18n/de.ts +225 -0
  22. package/src/tool/burnTest/i18n/id.ts +225 -0
  23. package/src/tool/burnTest/i18n/it.ts +225 -0
  24. package/src/tool/burnTest/i18n/ja.ts +225 -0
  25. package/src/tool/burnTest/i18n/ko.ts +225 -0
  26. package/src/tool/burnTest/i18n/nl.ts +225 -0
  27. package/src/tool/burnTest/i18n/pl.ts +225 -0
  28. package/src/tool/burnTest/i18n/pt.ts +225 -0
  29. package/src/tool/burnTest/i18n/ru.ts +225 -0
  30. package/src/tool/burnTest/i18n/sv.ts +225 -0
  31. package/src/tool/burnTest/i18n/tr.ts +225 -0
  32. package/src/tool/burnTest/i18n/zh.ts +225 -0
  33. package/src/tool/burnTest/index.ts +15 -7
  34. package/src/tool/clothingSizeConverter/i18n/de.ts +356 -0
  35. package/src/tool/clothingSizeConverter/i18n/id.ts +356 -0
  36. package/src/tool/clothingSizeConverter/i18n/it.ts +356 -0
  37. package/src/tool/clothingSizeConverter/i18n/ja.ts +356 -0
  38. package/src/tool/clothingSizeConverter/i18n/ko.ts +356 -0
  39. package/src/tool/clothingSizeConverter/i18n/nl.ts +356 -0
  40. package/src/tool/clothingSizeConverter/i18n/pl.ts +356 -0
  41. package/src/tool/clothingSizeConverter/i18n/pt.ts +356 -0
  42. package/src/tool/clothingSizeConverter/i18n/ru.ts +356 -0
  43. package/src/tool/clothingSizeConverter/i18n/sv.ts +356 -0
  44. package/src/tool/clothingSizeConverter/i18n/tr.ts +356 -0
  45. package/src/tool/clothingSizeConverter/i18n/zh.ts +356 -0
  46. package/src/tool/clothingSizeConverter/index.ts +15 -7
  47. package/src/tool/fabricProjectCalculator/i18n/de.ts +250 -0
  48. package/src/tool/fabricProjectCalculator/i18n/id.ts +250 -0
  49. package/src/tool/fabricProjectCalculator/i18n/it.ts +250 -0
  50. package/src/tool/fabricProjectCalculator/i18n/ja.ts +250 -0
  51. package/src/tool/fabricProjectCalculator/i18n/ko.ts +250 -0
  52. package/src/tool/fabricProjectCalculator/i18n/nl.ts +250 -0
  53. package/src/tool/fabricProjectCalculator/i18n/pl.ts +250 -0
  54. package/src/tool/fabricProjectCalculator/i18n/pt.ts +250 -0
  55. package/src/tool/fabricProjectCalculator/i18n/ru.ts +250 -0
  56. package/src/tool/fabricProjectCalculator/i18n/sv.ts +250 -0
  57. package/src/tool/fabricProjectCalculator/i18n/tr.ts +250 -0
  58. package/src/tool/fabricProjectCalculator/i18n/zh.ts +250 -0
  59. package/src/tool/fabricProjectCalculator/index.ts +15 -7
  60. package/src/tool/fabricTruth/i18n/de.ts +282 -0
  61. package/src/tool/fabricTruth/i18n/en.ts +1 -1
  62. package/src/tool/fabricTruth/i18n/fr.ts +1 -1
  63. package/src/tool/fabricTruth/i18n/id.ts +282 -0
  64. package/src/tool/fabricTruth/i18n/it.ts +282 -0
  65. package/src/tool/fabricTruth/i18n/ja.ts +282 -0
  66. package/src/tool/fabricTruth/i18n/ko.ts +282 -0
  67. package/src/tool/fabricTruth/i18n/nl.ts +282 -0
  68. package/src/tool/fabricTruth/i18n/pl.ts +282 -0
  69. package/src/tool/fabricTruth/i18n/pt.ts +282 -0
  70. package/src/tool/fabricTruth/i18n/ru.ts +282 -0
  71. package/src/tool/fabricTruth/i18n/sv.ts +282 -0
  72. package/src/tool/fabricTruth/i18n/tr.ts +282 -0
  73. package/src/tool/fabricTruth/i18n/zh.ts +286 -0
  74. package/src/tool/fabricTruth/index.ts +15 -7
  75. package/src/tool/fiberPrep/i18n/de.ts +225 -0
  76. package/src/tool/fiberPrep/i18n/id.ts +225 -0
  77. package/src/tool/fiberPrep/i18n/it.ts +225 -0
  78. package/src/tool/fiberPrep/i18n/ja.ts +225 -0
  79. package/src/tool/fiberPrep/i18n/ko.ts +225 -0
  80. package/src/tool/fiberPrep/i18n/nl.ts +225 -0
  81. package/src/tool/fiberPrep/i18n/pl.ts +225 -0
  82. package/src/tool/fiberPrep/i18n/pt.ts +225 -0
  83. package/src/tool/fiberPrep/i18n/ru.ts +225 -0
  84. package/src/tool/fiberPrep/i18n/sv.ts +225 -0
  85. package/src/tool/fiberPrep/i18n/tr.ts +225 -0
  86. package/src/tool/fiberPrep/i18n/zh.ts +225 -0
  87. package/src/tool/fiberPrep/index.ts +15 -7
  88. package/src/tool/knittingGauge/i18n/de.ts +234 -0
  89. package/src/tool/knittingGauge/i18n/id.ts +234 -0
  90. package/src/tool/knittingGauge/i18n/it.ts +234 -0
  91. package/src/tool/knittingGauge/i18n/ja.ts +234 -0
  92. package/src/tool/knittingGauge/i18n/ko.ts +234 -0
  93. package/src/tool/knittingGauge/i18n/nl.ts +234 -0
  94. package/src/tool/knittingGauge/i18n/pl.ts +234 -0
  95. package/src/tool/knittingGauge/i18n/pt.ts +234 -0
  96. package/src/tool/knittingGauge/i18n/ru.ts +234 -0
  97. package/src/tool/knittingGauge/i18n/sv.ts +234 -0
  98. package/src/tool/knittingGauge/i18n/tr.ts +234 -0
  99. package/src/tool/knittingGauge/i18n/zh.ts +234 -0
  100. package/src/tool/knittingGauge/index.ts +15 -7
  101. package/src/tool/laundryGuide/i18n/de.ts +275 -0
  102. package/src/tool/laundryGuide/i18n/id.ts +275 -0
  103. package/src/tool/laundryGuide/i18n/it.ts +275 -0
  104. package/src/tool/laundryGuide/i18n/ja.ts +275 -0
  105. package/src/tool/laundryGuide/i18n/ko.ts +275 -0
  106. package/src/tool/laundryGuide/i18n/nl.ts +275 -0
  107. package/src/tool/laundryGuide/i18n/pl.ts +275 -0
  108. package/src/tool/laundryGuide/i18n/pt.ts +275 -0
  109. package/src/tool/laundryGuide/i18n/ru.ts +275 -0
  110. package/src/tool/laundryGuide/i18n/sv.ts +275 -0
  111. package/src/tool/laundryGuide/i18n/tr.ts +275 -0
  112. package/src/tool/laundryGuide/i18n/zh.ts +275 -0
  113. package/src/tool/laundryGuide/index.ts +15 -7
  114. package/src/tool/needleConverter/i18n/de.ts +212 -0
  115. package/src/tool/needleConverter/i18n/id.ts +212 -0
  116. package/src/tool/needleConverter/i18n/it.ts +212 -0
  117. package/src/tool/needleConverter/i18n/ja.ts +212 -0
  118. package/src/tool/needleConverter/i18n/ko.ts +212 -0
  119. package/src/tool/needleConverter/i18n/nl.ts +212 -0
  120. package/src/tool/needleConverter/i18n/pl.ts +212 -0
  121. package/src/tool/needleConverter/i18n/pt.ts +212 -0
  122. package/src/tool/needleConverter/i18n/ru.ts +212 -0
  123. package/src/tool/needleConverter/i18n/sv.ts +212 -0
  124. package/src/tool/needleConverter/i18n/tr.ts +212 -0
  125. package/src/tool/needleConverter/i18n/zh.ts +212 -0
  126. package/src/tool/needleConverter/index.ts +15 -7
  127. package/src/tool/sewingPatternScaler/i18n/de.ts +227 -0
  128. package/src/tool/sewingPatternScaler/i18n/id.ts +227 -0
  129. package/src/tool/sewingPatternScaler/i18n/it.ts +227 -0
  130. package/src/tool/sewingPatternScaler/i18n/ja.ts +227 -0
  131. package/src/tool/sewingPatternScaler/i18n/ko.ts +227 -0
  132. package/src/tool/sewingPatternScaler/i18n/nl.ts +227 -0
  133. package/src/tool/sewingPatternScaler/i18n/pl.ts +227 -0
  134. package/src/tool/sewingPatternScaler/i18n/pt.ts +227 -0
  135. package/src/tool/sewingPatternScaler/i18n/ru.ts +227 -0
  136. package/src/tool/sewingPatternScaler/i18n/sv.ts +227 -0
  137. package/src/tool/sewingPatternScaler/i18n/tr.ts +227 -0
  138. package/src/tool/sewingPatternScaler/i18n/zh.ts +227 -0
  139. package/src/tool/sewingPatternScaler/index.ts +15 -7
  140. package/src/tool/shoeSizeConverter/i18n/de.ts +184 -0
  141. package/src/tool/shoeSizeConverter/i18n/id.ts +184 -0
  142. package/src/tool/shoeSizeConverter/i18n/it.ts +184 -0
  143. package/src/tool/shoeSizeConverter/i18n/ja.ts +184 -0
  144. package/src/tool/shoeSizeConverter/i18n/ko.ts +184 -0
  145. package/src/tool/shoeSizeConverter/i18n/nl.ts +184 -0
  146. package/src/tool/shoeSizeConverter/i18n/pl.ts +184 -0
  147. package/src/tool/shoeSizeConverter/i18n/pt.ts +184 -0
  148. package/src/tool/shoeSizeConverter/i18n/ru.ts +184 -0
  149. package/src/tool/shoeSizeConverter/i18n/sv.ts +184 -0
  150. package/src/tool/shoeSizeConverter/i18n/tr.ts +184 -0
  151. package/src/tool/shoeSizeConverter/i18n/zh.ts +184 -0
  152. package/src/tool/shoeSizeConverter/index.ts +15 -7
  153. package/src/tool/stainChemistry/i18n/de.ts +300 -0
  154. package/src/tool/stainChemistry/i18n/id.ts +300 -0
  155. package/src/tool/stainChemistry/i18n/it.ts +300 -0
  156. package/src/tool/stainChemistry/i18n/ja.ts +300 -0
  157. package/src/tool/stainChemistry/i18n/ko.ts +297 -0
  158. package/src/tool/stainChemistry/i18n/nl.ts +300 -0
  159. package/src/tool/stainChemistry/i18n/pl.ts +300 -0
  160. package/src/tool/stainChemistry/i18n/pt.ts +300 -0
  161. package/src/tool/stainChemistry/i18n/ru.ts +300 -0
  162. package/src/tool/stainChemistry/i18n/sv.ts +300 -0
  163. package/src/tool/stainChemistry/i18n/tr.ts +300 -0
  164. package/src/tool/stainChemistry/i18n/zh.ts +295 -0
  165. package/src/tool/stainChemistry/index.ts +15 -7
  166. package/src/tool/yarnCalculator/i18n/de.ts +310 -0
  167. package/src/tool/yarnCalculator/i18n/id.ts +310 -0
  168. package/src/tool/yarnCalculator/i18n/it.ts +310 -0
  169. package/src/tool/yarnCalculator/i18n/ja.ts +310 -0
  170. package/src/tool/yarnCalculator/i18n/ko.ts +310 -0
  171. package/src/tool/yarnCalculator/i18n/nl.ts +310 -0
  172. package/src/tool/yarnCalculator/i18n/pl.ts +310 -0
  173. package/src/tool/yarnCalculator/i18n/pt.ts +310 -0
  174. package/src/tool/yarnCalculator/i18n/ru.ts +310 -0
  175. package/src/tool/yarnCalculator/i18n/sv.ts +310 -0
  176. package/src/tool/yarnCalculator/i18n/tr.ts +310 -0
  177. package/src/tool/yarnCalculator/i18n/zh.ts +309 -0
  178. package/src/tool/yarnCalculator/index.ts +15 -7
  179. package/src/types.ts +1 -1
@@ -0,0 +1,356 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ClothingSizeConverterUI } from '../ui';
4
+
5
+ const slug = 'clothing-size-converter';
6
+ const title = '国际服装尺码换算器';
7
+ const description =
8
+ '在 EU、US、UK 和 IT 系统之间转换服装尺码。支持男士、女士和中性款 T 恤、裤子、连衣裙和夹克。包含测量指南和品牌建议。';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '服装的 EU 尺码和 US 尺码有什么区别?',
13
+ answer:
14
+ '欧洲(EU)尺码通常使用递增数字或字母(XS-XXL 或 32-52),而美国(US)尺码通常使用字母或特定的裤子数字。一般来说,在女装中,EU 36 码相当于 US 4 码。',
15
+ },
16
+ {
17
+ question: '男装或女装的尺码会发生变化吗?',
18
+ answer:
19
+ '是的,绝对会。即使在同一个国家,男士 40 码也不等同于女士 40 码。男性的体型比例不同(肩膀更宽),因此尺码计算方式也不同。',
20
+ },
21
+ {
22
+ question: '我如何知道在某个品牌中应该买大一码还是买小一码?',
23
+ answer:
24
+ '最好的方法是查看其他顾客的评价。诸如“我觉得偏小”或“版型偏大”之类的短语非常有帮助。同时请参考该品牌的具体尺寸测量表。',
25
+ },
26
+ {
27
+ question: '此尺码换算表准确吗?',
28
+ answer:
29
+ '换算表仅供指南。虽然通常准确,但每个品牌都有自己的规格。购买前务必检查特定店铺的尺码表。',
30
+ },
31
+ {
32
+ question: '衣物洗涤后会缩水吗?',
33
+ answer:
34
+ '这取决于材质。100% 棉如果用热水洗涤并烘干,可能会缩水 5-10%。合成材料能更好地保持形状。请务必查看洗涤说明。',
35
+ },
36
+ ];
37
+
38
+ const howToData = [
39
+ {
40
+ name: '选择品类和性别',
41
+ text: '选择服装类型(T 恤、裤子、连衣裙、夹克)和相应的性别。',
42
+ },
43
+ {
44
+ name: '选择您的尺码体系',
45
+ text: '选择您熟悉的体系:EU、US、UK 或 IT。',
46
+ },
47
+ {
48
+ name: '选择您的尺码',
49
+ text: '在选择器中选择您的码数或点击表格。您将立即看到对应的换算结果。',
50
+ },
51
+ {
52
+ name: '参考品牌指南',
53
+ text: '检查该品牌的版型是偏小、正常还是偏大,以调整您的购买选择。',
54
+ },
55
+ ];
56
+
57
+ const faqSchema: WithContext<FAQPage> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'FAQPage',
60
+ mainEntity: faqData.map((item) => ({
61
+ '@type': 'Question',
62
+ name: item.question,
63
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
64
+ })),
65
+ };
66
+
67
+ const howToSchema: WithContext<HowTo> = {
68
+ '@context': 'https://schema.org',
69
+ '@type': 'HowTo',
70
+ name: title,
71
+ description,
72
+ step: howToData.map((step) => ({
73
+ '@type': 'HowToStep',
74
+ name: step.name,
75
+ text: step.text,
76
+ })),
77
+ };
78
+
79
+ const appSchema: WithContext<SoftwareApplication> = {
80
+ '@context': 'https://schema.org',
81
+ '@type': 'SoftwareApplication',
82
+ name: title,
83
+ description,
84
+ applicationCategory: 'UtilityApplication',
85
+ operatingSystem: 'All',
86
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
87
+ inLanguage: 'zh',
88
+ };
89
+
90
+ const shirtsData = {
91
+ men: [
92
+ { EU: 'XS', US: 'XS', UK: 'XS', IT: '36' },
93
+ { EU: 'S', US: 'S', UK: 'S', IT: '38' },
94
+ { EU: 'M', US: 'M', UK: 'M', IT: '40' },
95
+ { EU: 'L', US: 'L', UK: 'L', IT: '42' },
96
+ { EU: 'XL', US: 'XL', UK: 'XL', IT: '44' },
97
+ { EU: 'XXL', US: 'XXL', UK: 'XXL', IT: '46' },
98
+ ],
99
+ women: [
100
+ { EU: 'XS', US: 'XS', UK: 'XS', IT: '32' },
101
+ { EU: 'S', US: 'S', UK: 'S', IT: '34' },
102
+ { EU: 'M', US: 'M', UK: 'M', IT: '36' },
103
+ { EU: 'L', US: 'L', UK: 'L', IT: '38' },
104
+ { EU: 'XL', US: 'XL', UK: 'XL', IT: '40' },
105
+ { EU: 'XXL', US: 'XXL', UK: 'XXL', IT: '42' },
106
+ ],
107
+ unisex: [
108
+ { EU: 'XS', US: 'XS', UK: 'XS', IT: '34' },
109
+ { EU: 'S', US: 'S', UK: 'S', IT: '36' },
110
+ { EU: 'M', US: 'M', UK: 'M', IT: '38' },
111
+ { EU: 'L', US: 'L', UK: 'L', IT: '40' },
112
+ { EU: 'XL', US: 'XL', UK: 'XL', IT: '42' },
113
+ { EU: 'XXL', US: 'XXL', UK: 'XXL', IT: '44' },
114
+ ],
115
+ };
116
+
117
+ const pantsData = {
118
+ men: [
119
+ { EU: '30', US: '30', UK: '30', IT: '44' },
120
+ { EU: '32', US: '32', UK: '32', IT: '46' },
121
+ { EU: '34', US: '34', UK: '34', IT: '48' },
122
+ { EU: '36', US: '36', UK: '36', IT: '50' },
123
+ { EU: '38', US: '38', UK: '38', IT: '52' },
124
+ { EU: '40', US: '40', UK: '40', IT: '54' },
125
+ ],
126
+ women: [
127
+ { EU: '32', US: '0', UK: '4', IT: '36' },
128
+ { EU: '34', US: '2', UK: '6', IT: '38' },
129
+ { EU: '36', US: '4', UK: '8', IT: '40' },
130
+ { EU: '38', US: '6', UK: '10', IT: '42' },
131
+ { EU: '40', US: '8', UK: '12', IT: '44' },
132
+ { EU: '42', US: '10', UK: '14', IT: '46' },
133
+ ],
134
+ unisex: [],
135
+ };
136
+
137
+ const dressesData = {
138
+ men: [
139
+ { EU: 'XS', US: 'XS', UK: 'XS', IT: '36' },
140
+ { EU: 'S', US: 'S', UK: 'S', IT: '38' },
141
+ { EU: 'M', US: 'M', UK: 'M', IT: '40' },
142
+ { EU: 'L', US: 'L', UK: 'L', IT: '42' },
143
+ ],
144
+ women: [
145
+ { EU: 'XS', US: '0-2', UK: '4-6', IT: '32-34' },
146
+ { EU: 'S', US: '4-6', UK: '8-10', IT: '36-38' },
147
+ { EU: 'M', US: '8-10', UK: '12-14', IT: '40-42' },
148
+ { EU: 'L', US: '12-14', UK: '16-18', IT: '44-46' },
149
+ { EU: 'XL', US: '16-18', UK: '20-22', IT: '48-50' },
150
+ ],
151
+ unisex: [],
152
+ };
153
+
154
+ const jacketsData = {
155
+ men: [
156
+ { EU: 'XS', US: 'XS', UK: 'XS', IT: '44' },
157
+ { EU: 'S', US: 'S', UK: 'S', IT: '46' },
158
+ { EU: 'M', US: 'M', UK: 'M', IT: '48' },
159
+ { EU: 'L', US: 'L', UK: 'L', IT: '50' },
160
+ { EU: 'XL', US: 'XL', UK: 'XL', IT: '52' },
161
+ ],
162
+ women: [
163
+ { EU: 'XS', US: 'XS', UK: 'XS', IT: '32' },
164
+ { EU: 'S', US: 'S', UK: 'S', IT: '34' },
165
+ { EU: 'M', US: 'M', UK: 'M', IT: '36' },
166
+ { EU: 'L', US: 'L', UK: 'L', IT: '38' },
167
+ { EU: 'XL', US: 'XL', UK: 'XL', IT: '40' },
168
+ ],
169
+ unisex: [],
170
+ };
171
+
172
+ const measurementRanges = {
173
+ shirts: [
174
+ { size: 'XS', chest: 84, waist: 76, hip: 84 },
175
+ { size: 'S', chest: 92, waist: 84, hip: 92 },
176
+ { size: 'M', chest: 100, waist: 92, hip: 100 },
177
+ { size: 'L', chest: 108, waist: 100, hip: 108 },
178
+ { size: 'XL', chest: 116, waist: 108, hip: 116 },
179
+ { size: 'XXL', chest: 124, waist: 116, hip: 124 },
180
+ ],
181
+ pants: [
182
+ { size: '30', chest: 80, waist: 76, hip: 89 },
183
+ { size: '32', chest: 85, waist: 81, hip: 94 },
184
+ { size: '34', chest: 90, waist: 86, hip: 99 },
185
+ { size: '36', chest: 95, waist: 91, hip: 104 },
186
+ { size: '38', chest: 100, waist: 96, hip: 109 },
187
+ { size: '40', chest: 105, waist: 101, hip: 114 },
188
+ ],
189
+ dresses: [
190
+ { size: 'XS', chest: 80, waist: 72, hip: 88 },
191
+ { size: 'S', chest: 88, waist: 80, hip: 96 },
192
+ { size: 'M', chest: 96, waist: 88, hip: 104 },
193
+ { size: 'L', chest: 104, waist: 96, hip: 112 },
194
+ { size: 'XL', chest: 112, waist: 104, hip: 120 },
195
+ ],
196
+ jackets: [
197
+ { size: 'XS', chest: 84, waist: 76, hip: 88 },
198
+ { size: 'S', chest: 92, waist: 84, hip: 96 },
199
+ { size: 'M', chest: 100, waist: 92, hip: 104 },
200
+ { size: 'L', chest: 108, waist: 100, hip: 112 },
201
+ { size: 'XL', chest: 116, waist: 108, hip: 120 },
202
+ ],
203
+ };
204
+
205
+ export const content: ToolLocaleContent<ClothingSizeConverterUI> = {
206
+ slug,
207
+ title,
208
+ description,
209
+ faqTitle: '常见问题',
210
+ faq: faqData,
211
+ bibliographyTitle: '参考文献',
212
+ bibliography: [
213
+ { name: 'ISO 3635: 服装尺码 — 官方标准', url: 'https://www.iso.org/standard/68644.html' },
214
+ { name: '服装尺码标准 - 维基百科', url: 'https://zh.wikipedia.org/wiki/%E8%A1%A3%E7%89%A9%E5%B0%BA%E7%A2%BC' },
215
+ {
216
+ name: '国际服装尺码换算 - Wikipedia',
217
+ url: 'https://en.wikipedia.org/wiki/Clothing_size#International_variations',
218
+ },
219
+ ],
220
+ howTo: howToData,
221
+ schemas: [faqSchema, howToSchema, appSchema],
222
+ seo: [
223
+ {
224
+ type: 'title',
225
+ text: '服装尺码换算器:完整指南',
226
+ level: 2,
227
+ },
228
+ {
229
+ type: 'paragraph',
230
+ html: '在国际商店购买衣服时,如果尺码不匹配,可能会让人感到困惑。<strong>尺码换算器</strong>可帮助您在 EU、US、UK 和 IT 系统中找到最适合您的 T 恤、裤子、连衣裙和夹克的尺码。',
231
+ },
232
+ {
233
+ type: 'title',
234
+ text: '为什么不同国家的服装尺码会有差异?',
235
+ level: 2,
236
+ },
237
+ {
238
+ type: 'paragraph',
239
+ html: '目前还没有统一的国际标准。每个地区都开发了自己的系统,这在跨境电商或 Amazon、AliExpress 等平台购物时会带来困扰。',
240
+ },
241
+ {
242
+ type: 'list',
243
+ items: [
244
+ '<span><strong>EU 尺码(欧洲):</strong> 使用递增数字(32, 34, 36...)或字母。这是德国、法国和大多数欧洲大陆国家最常用的系统。</span>',
245
+ '<span><strong>US 尺码(美国):</strong> 使用字母(XS, S, M, L)或女士裤子的数字(0, 2, 4, 6...)。</span>',
246
+ '<span><strong>UK 尺码(英国):</strong> 与 EU 系统类似,但有自己的编号,通常低于美国编号。</span>',
247
+ '<span><strong>IT 尺码(意大利):</strong> 意大利编号,与通用的 EU 系统略有不同。</span>',
248
+ ],
249
+ },
250
+ {
251
+ type: 'tip',
252
+ title: '专业建议',
253
+ html: '不同品牌的尺码差异很大。Zara 的 38 码可能与 H&amp;M 的 38 码不同。购买前务必参考商店的具体尺码表。',
254
+ },
255
+ {
256
+ type: 'title',
257
+ text: '如何正确测量您的身体数据',
258
+ level: 2,
259
+ },
260
+ {
261
+ type: 'paragraph',
262
+ html: '为确保尺码正确,请使用柔软的卷尺测量您的身体。建议在一天结束时测量,此时身体处于最大伸展状态。',
263
+ },
264
+ {
265
+ type: 'list',
266
+ items: [
267
+ '<span><strong>胸围:</strong> 测量胸部最宽部分的周围,卷尺通过腋下。</span>',
268
+ '<span><strong>腰围:</strong> 在肚脐高度测量,不要刻意收腹。</span>',
269
+ '<span><strong>臀围:</strong> 测量臀部最宽部分的周围,卷尺与地面平行。</span>',
270
+ ],
271
+ },
272
+ {
273
+ type: 'title',
274
+ text: '品牌版型指南',
275
+ level: 2,
276
+ },
277
+ {
278
+ type: 'list',
279
+ items: [
280
+ '<span><strong>Zara:</strong> 尺码较正。Zara 的 36 码对于标准身材通常比较可靠。</span>',
281
+ '<span><strong>H&amp;M:</strong> 版型偏大。考虑选择比平时小一号的尺码。</span>',
282
+ '<span><strong>Uniqlo:</strong> 码数通常偏小,尤其是基础款。建议买大一码。</span>',
283
+ '<span><strong>Nike / Adidas:</strong> 运动版型,通常比较修身。考虑买大半码。</span>',
284
+ ],
285
+ },
286
+ ],
287
+ ui: {
288
+ categoryLabel: '服装类型',
289
+ categoryShirts: 'T 恤',
290
+ categoryPants: '裤子',
291
+ categoryDresses: '连衣裙',
292
+ categoryJackets: '夹克',
293
+ genderLabel: '性别',
294
+ genderMen: '男士',
295
+ genderWomen: '女士',
296
+ genderUnisex: '中性/情侣',
297
+ tabBySize: '按尺码',
298
+ tabByMeasurements: '按测量值',
299
+ regionLabel: '您的尺码体系',
300
+ sizeLabel: '选择您的尺码',
301
+ regionEU: '欧洲 (EU)',
302
+ regionUS: '美国 (US)',
303
+ regionUK: '英国 (UK)',
304
+ regionIT: '意大利 (IT)',
305
+ labelEU: '欧洲',
306
+ labelUS: '美国',
307
+ labelUK: '英国',
308
+ labelIT: '意大利',
309
+ quickGridTitle: '快捷快速换算 (EU)',
310
+ tableTitle: '详细换算表',
311
+ measurementsTitle: '输入您的测量值',
312
+ chestLabel: '胸围 (cm)',
313
+ waistLabel: '腰围 (cm)',
314
+ hipLabel: '臀围 (cm)',
315
+ chestPlaceholder: '例: 95',
316
+ waistPlaceholder: '例: 85',
317
+ hipPlaceholder: '例: 95',
318
+ recommendBtnLabel: '推荐尺码',
319
+ tipsTitle: '测量技巧',
320
+ tipOverClothes: '由于穿着衣服',
321
+ tipStraight: '卷尺保持水平',
322
+ tipNoTight: '不要拉得太紧',
323
+ tipEndOfDay: '在一天结束时',
324
+ recommendationTitle: '推荐尺码',
325
+ recommendedSizePrefix: '为您推荐的尺码:',
326
+ measuredBy: '基于您的身体数据:',
327
+ chestShort: '胸围',
328
+ waistShort: '腰围',
329
+ hipShort: '臀围',
330
+ recommendationError: '请填写所有测量值以获取推荐。',
331
+ recommendationNoData: '该品类暂无可用数据。',
332
+ fitGuideTitle: '品牌版型指南',
333
+ fitSmall: '偏小码',
334
+ fitRegular: '标准码',
335
+ fitLarge: '偏大码',
336
+ fitInfoDefault: '点击品牌获取具体建议。',
337
+ fitNotif1: ' 通常版型 ',
338
+ fitNotifSmall: '偏小',
339
+ fitNotifRegular: '正常',
340
+ fitNotifLarge: '偏大',
341
+ fitNotif2: '。如果您是第一次购买该品牌,请考虑 ',
342
+ fitNotif3: '。',
343
+ fitAdviceSmall: '买大一码',
344
+ fitAdviceRegular: '按常规码购买',
345
+ fitAdviceLarge: '买小一码',
346
+ fitSelectedSuffix: ' 已选择。选择其他品牌进行对比。',
347
+ infoBannerTitle: '专业提示:',
348
+ infoBannerText:
349
+ '服装尺码在品牌之间差异很大。购买前请务必确认商店的具体尺寸表。',
350
+ shirtsData,
351
+ pantsData,
352
+ dressesData,
353
+ jacketsData,
354
+ measurementRanges,
355
+ },
356
+ };
@@ -7,10 +7,6 @@ import type { ClothingSizeConverterUI } from './ui';
7
7
 
8
8
  export type ClothingSizeConverterLocaleContent = ToolLocaleContent<ClothingSizeConverterUI>;
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 clothingSizeConverter: TextilesToolEntry<ClothingSizeConverterUI> = {
15
11
  id: 'clothing-size-converter',
16
12
  icons: {
@@ -18,9 +14,21 @@ export const clothingSizeConverter: TextilesToolEntry<ClothingSizeConverterUI> =
18
14
  fg: 'mdi:ruler',
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
 
@@ -0,0 +1,250 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { FabricProjectCalculatorUI } from '../ui';
4
+
5
+ const slug = 'stoffverbrauchsrechner-projekt';
6
+ const title = 'Stoffverbrauchsrechner pro Kleidungsstück';
7
+ const description =
8
+ 'Berechnen Sie ganz einfach, wie viel Stoff Sie zum Nähen eines Rocks, einer Hose, eines Kleides oder eines Hemdes benötigen. Anpassbar nach Stoffbreite und Größe für einen professionellen Zuschnitt.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Wie viel Stoff benötige ich für einen Rock?',
13
+ answer:
14
+ 'Das hängt von der Stoffbreite ab. Für einen geraden Rock bei einer Stoffbreite von 140-150 cm reichen in der Regel 1,20 Meter aus. Bei einer Breite von 90-110 cm benötigen Sie 2,00 Meter.',
15
+ },
16
+ {
17
+ question: 'Wie beeinflusst die Stoffbreite den Verbrauch?',
18
+ answer:
19
+ 'Bei geringerer Breite passen die Schnittmusterteile nicht nebeneinander (parallel), sodass sich der Verbrauch oft verdoppelt, da sie untereinander platziert werden müssen.',
20
+ },
21
+ {
22
+ question: 'Ist es besser, mehr Stoff zu kaufen?',
23
+ answer:
24
+ 'Ja, es wird eine Zugabe von 10% (ca. 20 cm) empfohlen, um Einlaufen, Webfehler oder unerwartete Nahtzugaben auszugleichen.',
25
+ },
26
+ {
27
+ question: 'Was ist der Fadenlauf und wie beeinflusst er das Nähen?',
28
+ answer:
29
+ 'Der Fadenlauf verläuft parallel zur Webkante des Stoffes. Schnittmuster müssen an diesem Faden ausgerichtet werden, damit sich das Kleidungsstück beim Tragen nicht verzieht.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Kleidungsstück auswählen',
36
+ text: 'Wählen Sie das Modell aus, das Sie anfertigen möchten (Rock, Hose usw.), um die entsprechende Verbrauchtabelle zu laden.',
37
+ },
38
+ {
39
+ name: 'Stoffbreite eingeben',
40
+ text: 'Messen Sie die Breite des Stoffes von Webkante zu Webkante (90, 115, 140 oder 150 cm).',
41
+ },
42
+ {
43
+ name: 'Größe auswählen',
44
+ text: 'Passen Sie das Volumen des Kleidungsstücks an die Größe an (XS-S, M-L, XL-XXL), um den Multiplikationsfaktor neu zu berechnen.',
45
+ },
46
+ {
47
+ name: 'Gesamtmeter erhalten',
48
+ text: 'Überprüfen Sie das Endergebnis mit und ohne Nahtzugabe, um genau zu wissen, wie viel Sie im Laden bestellen müssen.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowTo> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step) => ({
68
+ '@type': 'HowToStep',
69
+ name: step.name,
70
+ text: step.text,
71
+ })),
72
+ };
73
+
74
+ const appSchema: WithContext<SoftwareApplication> = {
75
+ '@context': 'https://schema.org',
76
+ '@type': 'SoftwareApplication',
77
+ name: title,
78
+ description,
79
+ applicationCategory: 'UtilityApplication',
80
+ operatingSystem: 'All',
81
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
82
+ inLanguage: 'de',
83
+ };
84
+
85
+ export const content: ToolLocaleContent<FabricProjectCalculatorUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ faqTitle: 'Häufig gestellte Fragen',
90
+ faq: faqData,
91
+ bibliographyTitle: 'Bibliographie',
92
+ bibliography: [
93
+ {
94
+ name: 'Fabric Estimation Guide - Threads Magazine',
95
+ url: 'https://www.threadsmagazine.com/forum/measuring-fabric',
96
+ },
97
+ {
98
+ name: 'How much fabric do I need? - Seamwork',
99
+ url: 'https://www.seamwork.com/sewing-tutorials/the-anatomy-of-a-sewing-pattern',
100
+ },
101
+ {
102
+ name: 'Standard Fabric Consumption Charts - Textile School',
103
+ url: 'https://www.textileschool.com/209/fabric-consumption-in-garment-making/',
104
+ },
105
+ ],
106
+ howTo: howToData,
107
+ schemas: [faqSchema, howToSchema, appSchema],
108
+ seo: [
109
+ {
110
+ type: 'title',
111
+ text: 'Stoffmengenrechner für die Schneiderei: Verbrauchsleitfaden',
112
+ level: 2,
113
+ },
114
+ {
115
+ type: 'paragraph',
116
+ html: 'Eine der häufigsten Fragen im Nähatelier ist die Bestimmung der Stoffmenge für ein bestimmtes Projekt. Der Stoffverbrauch hängt radikal von drei Faktoren ab: dem Modell des Kleidungsstücks, der Größe der Person und vor allem der Breite des Stoffstücks (die in der Regel zwischen 90 cm und 150 cm liegt). Dieser technische Rechner systematisiert die Berechnung, damit Sie weder zu viel kaufen noch mitten im Zuschnitt zu wenig haben.',
117
+ },
118
+ {
119
+ type: 'title',
120
+ text: 'Wie viel Stoff benötige ich für ein Kleid oder eine Hose?',
121
+ level: 3,
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'Die traditionelle Berechnung basiert auf der Länge des Kleidungsstücks plus der Ärmellänge, zuzüglich einer Zugabe für Belege und Saum. Wenn der Stoff jedoch schmal ist (90-110 cm), passen die Teile oft nicht nebeneinander, was den Kauf der doppelten Länge erforderlich macht. Unser Tool berücksichtigt diese Variationen automatisch nach dem Standard der Textilindustrie.',
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Geschätzter Verbrauch nach Stoffbreite (Größe M-L)',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'list',
134
+ items: [
135
+ '<strong>Gerader Rock:</strong> 2,00 m bei 90 cm Breite · 1,20 m bei 140/150 cm Breite.',
136
+ '<strong>Lange Hose:</strong> 2,50 m bei 90 cm Breite · 1,50 m bei 140/150 cm Breite.',
137
+ '<strong>Langarmhemd:</strong> 2,20 m bei 90 cm Breite · 1,40 m bei 140/150 cm Breite.',
138
+ '<strong>Einfaches Kleid:</strong> 3,50 m bei 90 cm Breite · 2,20 m bei 140/150 cm Breite.',
139
+ ],
140
+ },
141
+ {
142
+ type: 'title',
143
+ text: 'Faktoren, die den Stoffverbrauch verändern',
144
+ level: 3,
145
+ },
146
+ {
147
+ type: 'list',
148
+ items: [
149
+ '<strong>Musterrichtung (Rapport):</strong> Wenn der Stoff ein Muster mit einer klaren Richtung oder Karos hat, die zusammenpassen müssen, benötigen Sie zwischen 15% und 20% zusätzlich Material.',
150
+ '<strong>Fadenlauf (Schrägschnitt):</strong> Schräg- oder Kreisschnitte (wie Tellerröcke) verbrauchen aufgrund des Verschnitts in den Winkeln deutlich mehr Stoff.',
151
+ '<strong>Strichrichtung (Strich):</strong> Bei Stoffen wie Samt oder Cord müssen alle Teile in dieselbe Richtung zugeschnitten werden, was die Platzoptimierung einschränkt.',
152
+ '<strong>Einlaufen:</strong> Viele Naturstoffe (Baumwolle, Leinen, Wolle) laufen nach der ersten Wäsche ein. Es ist wichtig, den Stoff vor dem Zuschneiden vorzuwaschen.',
153
+ ],
154
+ },
155
+ {
156
+ type: 'tip',
157
+ title: 'Tipp des Schneiders',
158
+ html: '<p>Wenn Sie einen Stoff mit einem großen Muster oder Karos (Plaids) verwenden, verlassen Sie sich nicht nur auf das Standardmaß. Addieren Sie immer eine vollständige Musterwiederholung (den Rapport) zu der berechneten Gesamtmeterzahl, um sicherzustellen, dass die Muster an den Seitennähten übereinstimmen.</p>',
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: 'Vorteile und Grenzen dieses Rechners',
163
+ level: 3,
164
+ },
165
+ {
166
+ type: 'list',
167
+ items: [
168
+ 'Sofortige Berechnung für verschiedene Stoffbreiten mit Größenanpassung.',
169
+ 'Inklusive anpassbarer Schätzung der Nahtzugabe.',
170
+ 'Visuelle Anleitung zur Anordnung der Teile auf dem Stoff.',
171
+ 'Ersetzt keinen realen Schnittplan. Plus-Größen können zusätzliche manuelle Anpassungen erfordern.',
172
+ ],
173
+ },
174
+ {
175
+ type: 'card',
176
+ title: 'Stoffbreite',
177
+ icon: 'mdi:arrow-expand-horizontal',
178
+ html: 'Das Querschnittsmaß des Stoffes von <strong>Webkante zu Webkante</strong>. Bestimmt, ob die Teile nebeneinander passen oder nacheinander platziert werden müssen.',
179
+ },
180
+ {
181
+ type: 'card',
182
+ title: 'Nahtzugabe',
183
+ icon: 'mdi:tape-measure',
184
+ html: 'Der Abstand zwischen der Kante des Schnittmusters und der <strong>endgültigen Nahtlinie</strong>. Ein Standardwert für Kleidung ist 1,5 cm.',
185
+ },
186
+ {
187
+ type: 'card',
188
+ title: 'Webkante',
189
+ icon: 'mdi:content-cut',
190
+ html: 'Die verstärkten Seitenränder des Stoffes, die <strong>nicht ausfransen</strong>. Sie geben den Fadenlauf an und dienen als Referenz für den Zuschnitt.',
191
+ },
192
+ ],
193
+ ui: {
194
+ sectionProject: 'Projekt',
195
+ sectionMaterial: 'Material',
196
+ labelGarmentType: 'Kleidungsstück',
197
+ labelSize: 'Größe',
198
+ labelFabricWidth: 'Stoffbreite (cm)',
199
+ labelSeamAllowance: 'Nahtzugabe (cm)',
200
+ garmentSkirt: 'Rock (Gerade/A-Linie)',
201
+ garmentPants: 'Hose',
202
+ garmentDress: 'Kleid',
203
+ garmentShirt: 'Hemd / Bluse',
204
+ garmentCoat: 'Mantel / Jacke',
205
+ garmentTote: 'Einkaufstasche (Tote Bag)',
206
+ garmentMerceria: {
207
+ skirt: '1 Reißverschl. 20cm, 1 Knopf',
208
+ pants: '1 Reißverschl. 20cm, 1 Knopf, 30cm Einlage',
209
+ dress: '1 Reißverschl. 60cm, 50cm Einlage',
210
+ shirt: '7 Knöpfe, 1m feine Einlage',
211
+ coat: '3 große Knöpfe, 1,5m Einlage, Futter',
212
+ tote: '2m Gurtband für Griffe',
213
+ },
214
+ sizeXS: 'XS-S',
215
+ sizeM: 'M-L',
216
+ sizeXL: 'XL-XXL',
217
+ width90: '90 cm (Schmal)',
218
+ width115: '115 cm (Patchwork)',
219
+ width140: '140 cm (EU Standard)',
220
+ width150: '150 cm (Polsterung)',
221
+ btnClear: 'Leeren',
222
+ btnShare: 'Teilen',
223
+ btnCopied: 'Kopiert!',
224
+ btnCopyList: 'Liste kopieren',
225
+ resultLabel: 'Sie benötigen:',
226
+ resultUnit: 'Meter',
227
+ shopAdviceFormat: 'Bestellen Sie {m}m im Laden',
228
+ boardEmpty: 'Wählen Sie ein Projekt aus, um den Plan zu sehen',
229
+ boardDescFormat: 'Breite: {w}cm | Länge: {m}m',
230
+ merchTitle: 'Kurzwaren und Materialien',
231
+ checklistThread: 'Passendes Garn',
232
+ warningSerialFormat: 'Bei Stoffen von {w}cm passen die Teile in Ihrer Größe nicht nebeneinander. Verbrauch für seriellen Zuschnitt angepasst.',
233
+ foldLabel: '⊟ Stoffbruch',
234
+ pieceNames: {
235
+ front: 'Vorderteil',
236
+ back: 'Rückenteil',
237
+ waistband: 'Bund',
238
+ waistbelt: 'Taillengürtel',
239
+ sleeve: 'Ärmel',
240
+ collar: 'Kragen',
241
+ cuffs: 'Manschetten',
242
+ facings: 'Belege',
243
+ lapels: 'Revers/Besatz',
244
+ pocket: 'Tasche',
245
+ body: 'Körper',
246
+ handleA: 'Henkel A',
247
+ handleB: 'Henkel B',
248
+ },
249
+ },
250
+ };