@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,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 = 'calculadora-tecido-projeto';
6
+ const title = 'Calculadora de Consumo de Tecido por Peça';
7
+ const description =
8
+ 'Calcule facilmente quanto tecido precisa para coser uma saia, umas calças, um vestido ou uma camisa. Ajuste consoante a largura do tecido e o tamanho para um corte profissional.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Quanto tecido preciso para uma saia?',
13
+ answer:
14
+ 'Depende da largura do tecido. Para uma saia reta em tecido de 140-150 cm costuma bastar 1.20 metros. Se o tecido for de 90-110 cm, precisará de 2.00 metros.',
15
+ },
16
+ {
17
+ question: 'Como é que a largura do tecido afeta o consumo?',
18
+ answer:
19
+ 'Com uma largura menor, as peças do molde não cabem uma ao lado da outra (em paralelo), pelo que o consumo costuma duplicar ao ter de as colocar uma por baixo da outra.',
20
+ },
21
+ {
22
+ question: 'É melhor comprar tecido a mais?',
23
+ answer:
24
+ 'Sim, recomenda-se uma margem de 10% (cerca de 20 cm) para compensar encolhimento, falhas no tecido ou margens de costura inesperadas.',
25
+ },
26
+ {
27
+ question: 'O que é o fio do tecido e como influencia?',
28
+ answer:
29
+ 'É a direção paralela às ourelas do tecido. Os moldes devem alinhar-se com este fio para que a peça não se deforme com o uso.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Escolher o tipo de peça',
36
+ text: 'Selecione o modelo que vai confecionar (saia, calças, etc.) para carregar a sua tabela de consumo base.',
37
+ },
38
+ {
39
+ name: 'Introduzir largura do tecido',
40
+ text: 'Meça a largura de ourela a ourela do tecido que planeia comprar (90, 115, 140 ou 150 cm).',
41
+ },
42
+ {
43
+ name: 'Selecionar o tamanho',
44
+ text: 'Ajuste o volume da peça consoante o tamanho (XS-S, M-L, XL-XXL) para recalcular o fator multiplicativo.',
45
+ },
46
+ {
47
+ name: 'Obter metros totais',
48
+ text: 'Reveja o resultado final com e sem margem de costura para saber exatamente quanto pedir na loja.',
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: 'pt',
83
+ };
84
+
85
+ export const content: ToolLocaleContent<FabricProjectCalculatorUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ faqTitle: 'Perguntas Frequentes',
90
+ faq: faqData,
91
+ bibliographyTitle: 'Bibliografia',
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: 'Calculadora de Metros de Tecido para Confeção: Guia de Consumo',
112
+ level: 2,
113
+ },
114
+ {
115
+ type: 'paragraph',
116
+ html: 'Uma das dúvidas mais frequentes na oficina de costura é determinar quanto tecido comprar para um projeto específico. O consumo de tecido depende radicalmente de três fatores: o modelo da peça, o tamanho da pessoa e, sobretudo, a largura da peça de tecido (que costuma oscilar entre 90 cm e 150 cm). Esta calculadora técnica sistematiza o cálculo para que não compre a mais nem fique sem material a meio do corte.',
117
+ },
118
+ {
119
+ type: 'title',
120
+ text: 'Quanto tecido preciso para um vestido ou umas calças?',
121
+ level: 3,
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'O cálculo tradicional baseia-se no comprimento da peça mais o comprimento das mangas, adicionando uma margem para as vistas e a bainha. No entanto, quando o tecido é estreito (90-110 cm), as peças não costumam caber uma ao lado da outra, o que obriga a comprar o dobro do comprimento. A nossa ferramenta contempla estas variações automaticamente de acordo com o padrão da indústria têxtil.',
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Consumo Estimado consoante a Largura do Tecido (tamanho M-L)',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'list',
134
+ items: [
135
+ '<strong>Saia Reta:</strong> 2.00 m em tecido de 90 cm · 1.20 m em tecido de 140/150 cm.',
136
+ '<strong>Calças Compridas:</strong> 2.50 m em tecido de 90 cm · 1.50 m em tecido de 140/150 cm.',
137
+ '<strong>Camisa de Manga Comprida:</strong> 2.20 m em tecido de 90 cm · 1.40 m em tecido de 140/150 cm.',
138
+ '<strong>Vestido Básico:</strong> 3.50 m em tecido de 90 cm · 2.20 m em tecido de 140/150 cm.',
139
+ ],
140
+ },
141
+ {
142
+ type: 'title',
143
+ text: 'Fatores que Alteram o Consumo de Tecido',
144
+ level: 3,
145
+ },
146
+ {
147
+ type: 'list',
148
+ items: [
149
+ '<strong>Direção do padrão (Rapport):</strong> Se o tecido tiver um desenho com uma direção clara ou quadrados que devam casar, precisará de entre 15% e 20% extra de material.',
150
+ '<strong>Sentido do fio (Em viés):</strong> Os cortes em viés ou circulares (como as saias de capa) consomem significativamente mais tecido devido ao desperdício nos ângulos.',
151
+ '<strong>Sentido do pelo:</strong> Em tecidos como o veludo ou a bombazina, todas as peças devem ser cortadas na mesma direção, o que limita a otimização do espaço.',
152
+ '<strong>Encolhimento:</strong> Muitos tecidos naturais (algodão, linho, lã) encolhem após a primeira lavagem. É vital lavar o tecido antes de cortar.',
153
+ ],
154
+ },
155
+ {
156
+ type: 'tip',
157
+ title: 'Conselho do Costureiro',
158
+ html: '<p>Se vai usar um tecido com um padrão grande ou quadrados (plaids), não confie apenas na medida padrão. Some sempre uma repetição completa do desenho (o rapport) ao total de metros calculado para garantir que os moldes coincidam nas costuras laterais.</p>',
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: 'Vantagens e Limitações desta Calculadora',
163
+ level: 3,
164
+ },
165
+ {
166
+ type: 'list',
167
+ items: [
168
+ 'Cálculo instantâneo para múltiplas larguras de tecido com ajuste de tamanho.',
169
+ 'Inclui estimativa de margem de costura personalizável.',
170
+ 'Guia visual de disposição de peças no pano.',
171
+ 'Não substitui uma disposição de moldes real (marcada). Os tamanhos Plus podem requerer ajustes manuais adicionais.',
172
+ ],
173
+ },
174
+ {
175
+ type: 'card',
176
+ title: 'Largura da peça',
177
+ icon: 'mdi:arrow-expand-horizontal',
178
+ html: 'A medida transversal do tecido de <strong>ourela a ourela</strong>. Determina se as peças do molde cabem em paralelo ou devem ser colocadas em série.',
179
+ },
180
+ {
181
+ type: 'card',
182
+ title: 'Margem de costura',
183
+ icon: 'mdi:tape-measure',
184
+ html: 'A distância entre a borda do molde e a <strong>linha de costura final</strong>. Um valor padrão é 1.5 cm para costuras de roupa.',
185
+ },
186
+ {
187
+ type: 'card',
188
+ title: 'Ourela',
189
+ icon: 'mdi:content-cut',
190
+ html: 'As bordas laterais reforçadas do tecido que <strong>não se desfiam</strong>. Indicam a direção do fio e servem como referência para o corte.',
191
+ },
192
+ ],
193
+ ui: {
194
+ sectionProject: 'Projeto',
195
+ sectionMaterial: 'Material',
196
+ labelGarmentType: 'Tipo de peça',
197
+ labelSize: 'Tamanho',
198
+ labelFabricWidth: 'Largura de tecido (cm)',
199
+ labelSeamAllowance: 'Margem de costura (cm)',
200
+ garmentSkirt: 'Saia (Reta/A-line)',
201
+ garmentPants: 'Calças',
202
+ garmentDress: 'Vestido',
203
+ garmentShirt: 'Camisa / Blusa',
204
+ garmentCoat: 'Casaco / Jaqueta',
205
+ garmentTote: 'Tote Bag',
206
+ garmentMerceria: {
207
+ skirt: '1 ferm. 20cm, 1 botão',
208
+ pants: '1 ferm. 20cm, 1 botão, 30cm entretela',
209
+ dress: '1 ferm. 60cm, 50cm entretela',
210
+ shirt: '7 botões, 1m entretela fina',
211
+ coat: '3 botões grandes, 1.5m entretela, forro',
212
+ tote: '2m fita para pegas',
213
+ },
214
+ sizeXS: 'XS-S',
215
+ sizeM: 'M-L',
216
+ sizeXL: 'XL-XXL',
217
+ width90: '90 cm (Estreita)',
218
+ width115: '115 cm (Patchwork)',
219
+ width140: '140 cm (Padrão EU)',
220
+ width150: '150 cm (Tapeçaria)',
221
+ btnClear: 'Limpar',
222
+ btnShare: 'Partilhar',
223
+ btnCopied: 'Copiado!',
224
+ btnCopyList: 'Copiar lista',
225
+ resultLabel: 'Necessita de:',
226
+ resultUnit: 'Metros',
227
+ shopAdviceFormat: 'Peça {m}m na loja',
228
+ boardEmpty: 'Selecione um projeto para ver a disposição',
229
+ boardDescFormat: 'Largura: {w}cm | Comprimento: {m}m',
230
+ merchTitle: 'Retrosaria e Materiais',
231
+ checklistThread: 'Linha a condizer',
232
+ warningSerialFormat: 'Em tecidos de {w}cm as peças do seu tamanho não cabem em paralelo. Consumo ajustado para corte em série.',
233
+ foldLabel: '⊟ dobra',
234
+ pieceNames: {
235
+ front: 'Dianterio',
236
+ back: 'Costas',
237
+ waistband: 'Cós',
238
+ waistbelt: 'Passador',
239
+ sleeve: 'Manga',
240
+ collar: 'Gola',
241
+ cuffs: 'Punhos',
242
+ facings: 'Vistas',
243
+ lapels: 'Lapelas',
244
+ pocket: 'Bolso',
245
+ body: 'Corpo',
246
+ handleA: 'Pega A',
247
+ handleB: 'Pega B',
248
+ },
249
+ },
250
+ };
@@ -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 = 'kalkulyator-tkani-proekt';
6
+ const title = 'Калькулятор расхода ткани на изделие';
7
+ const description =
8
+ 'Легко рассчитайте, сколько ткани вам нужно, чтобы сшить юбку, брюки, платье или рубашку. Настройте параметры в зависимости от ширины ткани и размера для профессионального кроя.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Сколько ткани мне нужно на юбку?',
13
+ answer:
14
+ 'Это зависит от ширины ткани. Для прямой юбки при ширине ткани 140-150 см обычно достаточно 1,20 метра. Если ткань шириной 90-110 см, вам потребуется 2,00 метра.',
15
+ },
16
+ {
17
+ question: 'Как ширина ткани влияет на расход?',
18
+ answer:
19
+ 'При меньшей ширине детали выкройки не помещаются рядом друг с другом (параллельно), поэтому расход обычно удваивается, так как их приходится располагать друг под другом.',
20
+ },
21
+ {
22
+ question: 'Лучше ли покупать ткань с запасом?',
23
+ answer:
24
+ 'Да, рекомендуется закладывать запас в 10% (около 20 см), чтобы компенсировать усадку, возможные дефекты ткани или непредвиденные припуски на швы.',
25
+ },
26
+ {
27
+ question: 'Что такое направление долевой нити и на что оно влияет?',
28
+ answer:
29
+ 'Это направление, параллельное кромкам ткани. Выкройки должны быть выровнены по этой нити, чтобы готовое изделие не деформировалось при носке.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Выберите тип изделия',
36
+ text: 'Выберите модель, которую собираетесь сшить (юбка, брюки и т. д.), чтобы загрузить таблицу базового расхода.',
37
+ },
38
+ {
39
+ name: 'Введите ширину ткани',
40
+ text: 'Измерьте ширину ткани от кромки до кромки той ткани, которую планируете купить (90, 115, 140 или 150 см).',
41
+ },
42
+ {
43
+ name: 'Выберите размер',
44
+ text: 'Отрегулируйте объем изделия в зависимости от размера (XS-S, M-L, XL-XXL), чтобы пересчитать коэффициент расхода.',
45
+ },
46
+ {
47
+ name: 'Получите итоговый расчет',
48
+ text: 'Проверьте конечный результат с учетом припусков на швы и без них, чтобы точно знать, сколько метров просить в магазине.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowTo> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step) => ({
68
+ '@type': 'HowToStep',
69
+ name: step.name,
70
+ text: step.text,
71
+ })),
72
+ };
73
+
74
+ const appSchema: WithContext<SoftwareApplication> = {
75
+ '@context': 'https://schema.org',
76
+ '@type': 'SoftwareApplication',
77
+ name: title,
78
+ description,
79
+ applicationCategory: 'UtilityApplication',
80
+ operatingSystem: 'All',
81
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
82
+ inLanguage: 'ru',
83
+ };
84
+
85
+ export const content: ToolLocaleContent<FabricProjectCalculatorUI> = {
86
+ slug,
87
+ title,
88
+ description,
89
+ faqTitle: 'Часто задаваемые вопросы',
90
+ faq: faqData,
91
+ bibliographyTitle: 'Библиография',
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: 'Калькулятор метров ткани для пошива: руководство по расходу',
112
+ level: 2,
113
+ },
114
+ {
115
+ type: 'paragraph',
116
+ html: 'Один из самых частых вопросов в швейной мастерской — сколько ткани купить для конкретного проекта. Расход ткани радикально зависит от трех факторов: модели изделия, размера человека и, прежде всего, ширины отреза ткани (которая обычно варьируется от 90 см до 150 см). Этот технический калькулятор систематизирует расчет, чтобы вы не купили лишнего и вам не не хватило материала в середине раскроя.',
117
+ },
118
+ {
119
+ type: 'title',
120
+ text: 'Сколько ткани мне нужно на платье или брюки?',
121
+ level: 3,
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'Традиционный расчет основывается на длине изделия плюс длина рукавов, с добавлением запаса на обтачки и подгибку. Однако, если ткань узкая (90-110 см), детали обычно не помещаются рядом друг с другом, что вынуждает покупать двойную длину. Наш инструмент учитывает эти вариации автоматически в соответствии со стандартами текстильной промышленности.',
126
+ },
127
+ {
128
+ type: 'title',
129
+ text: 'Ориентировочный расход в зависимости от ширины ткани (размер M-L)',
130
+ level: 3,
131
+ },
132
+ {
133
+ type: 'list',
134
+ items: [
135
+ '<strong>Прямая юбка:</strong> 2.00 м при ширине 90 см · 1.20 м при ширине 140/150 см.',
136
+ '<strong>Длинные брюки:</strong> 2.50 м при ширине 90 см · 1.50 м при ширине 140/150 см.',
137
+ '<strong>Рубашка с длинным рукавом:</strong> 2.20 м при ширине 90 см · 1.40 м при ширине 140/150 см.',
138
+ '<strong>Базовое платье:</strong> 3.50 м при ширине 90 см · 2.20 м при ширине 140/150 см.',
139
+ ],
140
+ },
141
+ {
142
+ type: 'title',
143
+ text: 'Факторы, влияющие на расход ткани',
144
+ level: 3,
145
+ },
146
+ {
147
+ type: 'list',
148
+ items: [
149
+ '<strong>Направление принта (Раппорт):</strong> Если у ткани есть рисунок с четким направлением или клетка, которую нужно совмещать, вам потребуется от 15% до 20% дополнительного материала.',
150
+ '<strong>Крой по косой (Al bies):</strong> Крой по косой или круговой крой (например, юбки-солнце) требует значительно больше ткани из-за больших выпадов по углам.',
151
+ '<strong>Направление ворса:</strong> В таких тканях, как бархат или вельвет, все детали должны выкраиваться в одном направлении, что ограничивает оптимизацию пространства.',
152
+ '<strong>Усадка:</strong> Многие натуральные ткани (хлопок, лен, шерсть) садятся после первой стирки. Жизненно важно провести декатировку ткани перед раскроем.',
153
+ ],
154
+ },
155
+ {
156
+ type: 'tip',
157
+ title: 'Совет портного',
158
+ html: '<p>Если вы собираетесь использовать ткань с крупным принтом или в клетку, не полагайтесь только на стандартные замеры. Всегда добавляйте один полный повтор рисунка (раппорт) к общему количеству рассчитанных метров, чтобы гарантировать совмещение узора на боковых швах.</p>',
159
+ },
160
+ {
161
+ type: 'title',
162
+ text: 'Преимущества и ограничения этого калькулятора',
163
+ level: 3,
164
+ },
165
+ {
166
+ type: 'list',
167
+ items: [
168
+ 'Мгновенный расчет для различных ширин ткани с подстройкой под размер.',
169
+ 'Включает настраиваемую оценку припусков на швы.',
170
+ 'Визуальное руководство по расположению деталей на полотне.',
171
+ 'Не заменяет реальную раскладку лекал. Для размеров "плюс" могут потребоваться дополнительные ручные корректировки.',
172
+ ],
173
+ },
174
+ {
175
+ type: 'card',
176
+ title: 'Ширина ткани',
177
+ icon: 'mdi:arrow-expand-horizontal',
178
+ html: 'Поперечный размер ткани от <strong>кромки до кромки</strong>. Определяет, поместятся ли детали выкройки параллельно или их нужно располагать последовательно.',
179
+ },
180
+ {
181
+ type: 'card',
182
+ title: 'Припуск на шов',
183
+ icon: 'mdi:tape-measure',
184
+ html: 'Расстояние между краем выкройки и <strong>линией финального шва</strong>. Стандартное значение — 1,5 см для швов одежды.',
185
+ },
186
+ {
187
+ type: 'card',
188
+ title: 'Кромка',
189
+ icon: 'mdi:content-cut',
190
+ html: 'Укрепленные боковые края ткани, которые <strong>не осыпаются</strong>. Указывают направление долевой нити и служат ориентиром при раскрое.',
191
+ },
192
+ ],
193
+ ui: {
194
+ sectionProject: 'Проект',
195
+ sectionMaterial: 'Материал',
196
+ labelGarmentType: 'Тип изделия',
197
+ labelSize: 'Размер',
198
+ labelFabricWidth: 'Ширина ткани (см)',
199
+ labelSeamAllowance: 'Припуск на шов (см)',
200
+ garmentSkirt: 'Юбка (Прямая/А-силуэт)',
201
+ garmentPants: 'Брюки',
202
+ garmentDress: 'Платье',
203
+ garmentShirt: 'Рубашка / Блузка',
204
+ garmentCoat: 'Пальто / Куртка',
205
+ garmentTote: 'Сумка-шоппер (Tote Bag)',
206
+ garmentMerceria: {
207
+ skirt: '1 молния 20см, 1 пуговица',
208
+ pants: '1 молния 20см, 1 пуговица, 30см дублерина',
209
+ dress: '1 молния 60см, 50см дублерина',
210
+ shirt: '7 пуговиц, 1м тонкого дублерина',
211
+ coat: '3 большие пуговицы, 1.5м дублерина, подкладка',
212
+ tote: '2м киперной ленты для ручек',
213
+ },
214
+ sizeXS: 'XS-S',
215
+ sizeM: 'M-L',
216
+ sizeXL: 'XL-XXL',
217
+ width90: '90 см (Узкая)',
218
+ width115: '115 см (Пэчворк)',
219
+ width140: '140 см (Стандарт EU)',
220
+ width150: '150 см (Интерьерная)',
221
+ btnClear: 'Очистить',
222
+ btnShare: 'Поделиться',
223
+ btnCopied: 'Скопировано!',
224
+ btnCopyList: 'Копировать список',
225
+ resultLabel: 'Вам потребуется:',
226
+ resultUnit: 'Метров',
227
+ shopAdviceFormat: 'Попросите {m}м в магазине',
228
+ boardEmpty: 'Выберите проект, чтобы увидеть раскладку',
229
+ boardDescFormat: 'Ширина: {w}см | Длина: {m}м',
230
+ merchTitle: 'Фурнитура и материалы',
231
+ checklistThread: 'Нитки в тон',
232
+ warningSerialFormat: 'На ткани шириной {w}см детали вашего размера не помещаются параллельно. Расход скорректирован для последовательного раскроя.',
233
+ foldLabel: '⊟ сгиб',
234
+ pieceNames: {
235
+ front: 'Перед',
236
+ back: 'Спинка',
237
+ waistband: 'Пояс',
238
+ waistbelt: 'Шлевка',
239
+ sleeve: 'Рукав',
240
+ collar: 'Воротник',
241
+ cuffs: 'Манжеты',
242
+ facings: 'Обтачки',
243
+ lapels: 'Клапаны',
244
+ pocket: 'Карман',
245
+ body: 'Основа',
246
+ handleA: 'Ручка А',
247
+ handleB: 'Ручка Б',
248
+ },
249
+ },
250
+ };