@jjlmoya/utils-textiles 1.14.0 → 1.15.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 (93) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/de.ts +2 -2
  3. package/src/category/i18n/en.ts +2 -2
  4. package/src/category/i18n/es.ts +2 -2
  5. package/src/category/i18n/fr.ts +9 -9
  6. package/src/category/i18n/id.ts +2 -2
  7. package/src/category/i18n/it.ts +2 -2
  8. package/src/category/i18n/nl.ts +2 -2
  9. package/src/category/i18n/pl.ts +3 -3
  10. package/src/category/i18n/pt.ts +2 -2
  11. package/src/category/i18n/ru.ts +5 -5
  12. package/src/category/i18n/sv.ts +3 -3
  13. package/src/category/i18n/zh.ts +2 -2
  14. package/src/layouts/PreviewLayout.astro +1 -0
  15. package/src/tests/diacritics_density.test.ts +118 -0
  16. package/src/tests/inverted_punctuation.test.ts +84 -0
  17. package/src/tests/no_en_dash.test.ts +70 -0
  18. package/src/tests/script_density.test.ts +94 -0
  19. package/src/tool/burnTest/i18n/de.ts +3 -3
  20. package/src/tool/burnTest/i18n/fr.ts +3 -3
  21. package/src/tool/burnTest/i18n/pl.ts +3 -3
  22. package/src/tool/burnTest/i18n/ru.ts +6 -6
  23. package/src/tool/burnTest/i18n/zh.ts +3 -3
  24. package/src/tool/clothingSizeConverter/i18n/en.ts +1 -1
  25. package/src/tool/clothingSizeConverter/i18n/fr.ts +6 -6
  26. package/src/tool/clothingSizeConverter/i18n/pl.ts +1 -1
  27. package/src/tool/clothingSizeConverter/i18n/ru.ts +2 -2
  28. package/src/tool/clothingSizeConverter/i18n/zh.ts +1 -1
  29. package/src/tool/fabricProjectCalculator/component.astro +2 -3
  30. package/src/tool/fabricProjectCalculator/fabric-project-calculator.css +63 -1
  31. package/src/tool/fabricProjectCalculator/i18n/ru.ts +2 -2
  32. package/src/tool/fabricProjectCalculator/i18n/zh.ts +1 -1
  33. package/src/tool/fabricTruth/i18n/de.ts +1 -1
  34. package/src/tool/fabricTruth/i18n/en.ts +1 -1
  35. package/src/tool/fabricTruth/i18n/es.ts +1 -1
  36. package/src/tool/fabricTruth/i18n/fr.ts +13 -13
  37. package/src/tool/fabricTruth/i18n/id.ts +1 -1
  38. package/src/tool/fabricTruth/i18n/it.ts +1 -1
  39. package/src/tool/fabricTruth/i18n/ja.ts +1 -1
  40. package/src/tool/fabricTruth/i18n/ko.ts +1 -1
  41. package/src/tool/fabricTruth/i18n/nl.ts +1 -1
  42. package/src/tool/fabricTruth/i18n/pl.ts +1 -1
  43. package/src/tool/fabricTruth/i18n/pt.ts +1 -1
  44. package/src/tool/fabricTruth/i18n/ru.ts +11 -11
  45. package/src/tool/fabricTruth/i18n/sv.ts +1 -1
  46. package/src/tool/fabricTruth/i18n/tr.ts +1 -1
  47. package/src/tool/fabricTruth/i18n/zh.ts +9 -9
  48. package/src/tool/fiberPrep/fiber-preparation-natural-dyeing.css +130 -11
  49. package/src/tool/fiberPrep/i18n/fr.ts +4 -4
  50. package/src/tool/fiberPrep/i18n/ru.ts +3 -3
  51. package/src/tool/fiberPrep/i18n/zh.ts +2 -2
  52. package/src/tool/knittingGauge/i18n/ru.ts +6 -6
  53. package/src/tool/knittingGauge/i18n/zh.ts +1 -1
  54. package/src/tool/laundryGuide/i18n/de.ts +1 -1
  55. package/src/tool/laundryGuide/i18n/en.ts +1 -1
  56. package/src/tool/laundryGuide/i18n/es.ts +1 -1
  57. package/src/tool/laundryGuide/i18n/fr.ts +12 -12
  58. package/src/tool/laundryGuide/i18n/id.ts +1 -1
  59. package/src/tool/laundryGuide/i18n/it.ts +1 -1
  60. package/src/tool/laundryGuide/i18n/nl.ts +1 -1
  61. package/src/tool/laundryGuide/i18n/pl.ts +2 -2
  62. package/src/tool/laundryGuide/i18n/pt.ts +1 -1
  63. package/src/tool/laundryGuide/i18n/ru.ts +6 -6
  64. package/src/tool/laundryGuide/i18n/sv.ts +1 -1
  65. package/src/tool/laundryGuide/i18n/zh.ts +2 -2
  66. package/src/tool/needleConverter/i18n/fr.ts +5 -5
  67. package/src/tool/needleConverter/i18n/ru.ts +4 -4
  68. package/src/tool/sewingPatternScaler/i18n/fr.ts +2 -2
  69. package/src/tool/sewingPatternScaler/i18n/pl.ts +2 -2
  70. package/src/tool/sewingPatternScaler/i18n/ru.ts +7 -7
  71. package/src/tool/sewingPatternScaler/i18n/zh.ts +3 -3
  72. package/src/tool/shoeSizeConverter/i18n/fr.ts +1 -1
  73. package/src/tool/shoeSizeConverter/i18n/ru.ts +4 -4
  74. package/src/tool/shoeSizeConverter/i18n/zh.ts +3 -3
  75. package/src/tool/stainChemistry/bibliography.ts +2 -2
  76. package/src/tool/stainChemistry/i18n/de.ts +3 -3
  77. package/src/tool/stainChemistry/i18n/en.ts +3 -3
  78. package/src/tool/stainChemistry/i18n/es.ts +3 -3
  79. package/src/tool/stainChemistry/i18n/fr.ts +6 -6
  80. package/src/tool/stainChemistry/i18n/id.ts +3 -3
  81. package/src/tool/stainChemistry/i18n/it.ts +3 -3
  82. package/src/tool/stainChemistry/i18n/ja.ts +3 -3
  83. package/src/tool/stainChemistry/i18n/ko.ts +3 -3
  84. package/src/tool/stainChemistry/i18n/nl.ts +3 -3
  85. package/src/tool/stainChemistry/i18n/pl.ts +3 -3
  86. package/src/tool/stainChemistry/i18n/pt.ts +3 -3
  87. package/src/tool/stainChemistry/i18n/ru.ts +7 -7
  88. package/src/tool/stainChemistry/i18n/sv.ts +3 -3
  89. package/src/tool/stainChemistry/i18n/tr.ts +3 -3
  90. package/src/tool/stainChemistry/i18n/zh.ts +7 -7
  91. package/src/tool/yarnCalculator/i18n/fr.ts +4 -4
  92. package/src/tool/yarnCalculator/i18n/ru.ts +7 -7
  93. package/src/tool/yarnCalculator/i18n/zh.ts +5 -5
@@ -6,7 +6,7 @@ import type { StainChemistryUI } from '../ui';
6
6
  const slug = 'protocole-chimique-taches';
7
7
  const title = 'Protocole Chimique des Taches Textiles';
8
8
  const description =
9
- 'Protocoles scientifiques pour éliminer les taches selon le type de fibre et la nature chimique de la tache. Percarbonate, enzymes, solvants : la bonne méthode pour chaque cas.';
9
+ 'Protocoles scientifiques pour éliminer les taches selon le type de fibre et la nature chimique de la tache. Percarbonate, enzymes, solvants: la bonne méthode pour chaque cas.';
10
10
 
11
11
  const faqData = [
12
12
  {
@@ -157,7 +157,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
157
157
  protocols: {
158
158
  natural: {
159
159
  agentId: 'percarbonate',
160
- temperature: '4060°C',
160
+ temperature: '40-60°C',
161
161
  method: 'Trempage prolongé',
162
162
  },
163
163
  synthetic: { agentId: 'percarbonate', temperature: '40°C', method: 'Pâte directe' },
@@ -242,19 +242,19 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
242
242
  },
243
243
  {
244
244
  type: 'card',
245
- title: '01 Oxydation Contrôlée',
245
+ title: '01: Oxydation Contrôlée',
246
246
  icon: 'mdi:atom',
247
247
  html: 'Le <strong>percarbonate de sodium</strong> libère de l\'oxygène actif qui brise les doubles liaisons des chromophores (les molécules responsables de la couleur de la tache), les rendant incolores et solubles dans l\'eau. C\'est la méthode la plus efficace pour les taches organiques.',
248
248
  },
249
249
  {
250
250
  type: 'card',
251
- title: '02 Solubilisation par Solvants',
251
+ title: '02: Solubilisation par Solvants',
252
252
  icon: 'mdi:flask-outline',
253
253
  html: 'Les taches comme l\'huile ou l\'encre ne sont pas solubles dans l\'eau. Des solvants tels que l\'<strong>alcool isopropylique</strong> ou l\'<strong>acétone</strong> réduisent la tension de surface et attirent les molécules apolaires de la tache, leur permettant d\'être transférées sur un support.',
254
254
  },
255
255
  {
256
256
  type: 'title',
257
- text: 'La Souveraineté des Fibres : Pourquoi le Type de Fibre Compte',
257
+ text: 'La Souveraineté des Fibres: Pourquoi le Type de Fibre Compte',
258
258
  level: 2,
259
259
  },
260
260
  {
@@ -272,7 +272,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
272
272
  },
273
273
  {
274
274
  type: 'tip',
275
- title: 'Protocole d\'Urgence : Vin Rouge',
275
+ title: 'Protocole d\'Urgence: Vin Rouge',
276
276
  html: '<strong>A. Absorption passive :</strong> Tamponner avec du papier absorbant, ne jamais frotter pour éviter l\'expansion mécanique.<br><strong>B. Neutralisation osmotique :</strong> Couvrir de sel fin pour attirer le liquide vers l\'extérieur du noyau de la fibre.<br><strong>C. Action chimique :</strong> Appliquer une pâte de percarbonate et d\'eau à 40°C si la fibre supporte la chaleur.',
277
277
  },
278
278
  {
@@ -153,7 +153,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
153
153
  id: 'wine',
154
154
  name: 'Anggur Merah / Buah',
155
155
  protocols: {
156
- natural: { agentId: 'percarbonate', temperature: '4060°C', method: 'Perendaman lama' },
156
+ natural: { agentId: 'percarbonate', temperature: '40-60°C', method: 'Perendaman lama' },
157
157
  synthetic: { agentId: 'percarbonate', temperature: '40°C', method: 'Pasta langsung' },
158
158
  delicate: {
159
159
  agentId: 'vinegar',
@@ -232,13 +232,13 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
232
232
  },
233
233
  {
234
234
  type: 'card',
235
- title: '01 Oksidasi Terkontrol',
235
+ title: '01: Oksidasi Terkontrol',
236
236
  icon: 'mdi:atom',
237
237
  html: '<strong>Natrium perkarbonat</strong> melepaskan oksigen aktif yang memecah ikatan rangkap kromofor (molekul yang bertanggung jawab atas warna noda), menjadikannya tidak berwarna dan larut dalam air. Ini adalah metode paling efektif untuk noda organik.',
238
238
  },
239
239
  {
240
240
  type: 'card',
241
- title: '02 Kelarutan oleh Pelarut',
241
+ title: '02: Kelarutan oleh Pelarut',
242
242
  icon: 'mdi:flask-outline',
243
243
  html: 'Noda seperti minyak atau tinta tidak larut dalam air. Pelarut seperti <strong>isopropil alkohol</strong> atau <strong>aseton</strong> mengurangi tegangan permukaan dan menarik molekul non-polar noda, memungkinkannya berpindah ke media pendukung.',
244
244
  },
@@ -153,7 +153,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
153
153
  id: 'wine',
154
154
  name: 'Vino Rosso / Frutta',
155
155
  protocols: {
156
- natural: { agentId: 'percarbonate', temperature: '4060°C', method: 'Ammollo prolungato' },
156
+ natural: { agentId: 'percarbonate', temperature: '40-60°C', method: 'Ammollo prolungato' },
157
157
  synthetic: { agentId: 'percarbonate', temperature: '40°C', method: 'Pasta diretta' },
158
158
  delicate: {
159
159
  agentId: 'vinegar',
@@ -232,13 +232,13 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
232
232
  },
233
233
  {
234
234
  type: 'card',
235
- title: '01 Ossidazione Controllata',
235
+ title: '01: Ossidazione Controllata',
236
236
  icon: 'mdi:atom',
237
237
  html: 'Il <strong>percarbonato di sodio</strong> rilascia ossigeno attivo che rompe i doppi legami dei cromofori (le molecole responsabili del colore della macchia), rendendoli incolori e solubili in acqua. È il metodo più efficace per le macchie organiche.',
238
238
  },
239
239
  {
240
240
  type: 'card',
241
- title: '02 Solubilizzazione tramite Solventi',
241
+ title: '02: Solubilizzazione tramite Solventi',
242
242
  icon: 'mdi:flask-outline',
243
243
  html: "Macchie come l'olio o l'inchiostro non sono solubili in acqua. Solventi come l'<strong>alcol isopropilico</strong> o l'<strong>acetone</strong> riducono la tensione superficiale e attirano le molecole non polari della macchia, permettendo loro di trasferirsi su un mezzo di supporto.",
244
244
  },
@@ -153,7 +153,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
153
153
  id: 'wine',
154
154
  name: '赤ワイン / 果物',
155
155
  protocols: {
156
- natural: { agentId: 'percarbonate', temperature: '4060°C', method: '長時間のつけ置き' },
156
+ natural: { agentId: 'percarbonate', temperature: '40-60°C', method: '長時間のつけ置き' },
157
157
  synthetic: { agentId: 'percarbonate', temperature: '40°C', method: '直接ペーストを塗布' },
158
158
  delicate: {
159
159
  agentId: 'vinegar',
@@ -232,13 +232,13 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
232
232
  },
233
233
  {
234
234
  type: 'card',
235
- title: '01 制御された酸化作用',
235
+ title: '01: 制御された酸化作用',
236
236
  icon: 'mdi:atom',
237
237
  html: '<strong>過炭酸ナトリウム</strong>は活性酸素を放出し、色素分子(シミの色の原因)の二重結合を切断することで、シミを無色化し水に溶けやすくします。有機系のシミに最も効果的な方法です。',
238
238
  },
239
239
  {
240
240
  type: 'card',
241
- title: '02 溶剤による溶解作用',
241
+ title: '02: 溶剤による溶解作用',
242
242
  icon: 'mdi:flask-outline',
243
243
  html: 'オイルやインクのようなシミは水に溶けません。<strong>イソプロピルアルコール</strong>や<strong>アセトン</strong>のような溶剤は、表面張力を下げてシミの非極性分子を引きつけ、支持媒体へと移動させることができます。',
244
244
  },
@@ -150,7 +150,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
150
150
  id: 'wine',
151
151
  name: '레드 와인 / 과일',
152
152
  protocols: {
153
- natural: { agentId: 'percarbonate', temperature: '4060°C', method: '장시간 담그기' },
153
+ natural: { agentId: 'percarbonate', temperature: '40-60°C', method: '장시간 담그기' },
154
154
  synthetic: { agentId: 'percarbonate', temperature: '40°C', method: '페이스트 직접 도포' },
155
155
  delicate: {
156
156
  agentId: 'vinegar',
@@ -229,13 +229,13 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
229
229
  },
230
230
  {
231
231
  type: 'card',
232
- title: '01 조절된 산화 작용',
232
+ title: '01: 조절된 산화 작용',
233
233
  icon: 'mdi:atom',
234
234
  html: '<strong>과탄산나트륨</strong>은 활성산소를 방출하여 색소 분자(얼룩의 색 원인)의 이중 결합을 끊어 얼룩을 무색화하고 물에 용해되기 쉬운 상태로 만듭니다. 유기물 얼룩에 가장 효과적인 방법입니다.',
235
235
  },
236
236
  {
237
237
  type: 'card',
238
- title: '02 용제에 의한 용해',
238
+ title: '02: 용제에 의한 용해',
239
239
  icon: 'mdi:flask-outline',
240
240
  html: '기름이나 잉크 같은 얼룩은 물에 녹지 않습니다. <strong>이소프로필 알코올</strong>이나 <strong>아세톤</strong> 같은 용제는 표면 장력을 낮추고 얼룩의 비극성 분자를 끌어당겨 천 등으로 옮겨갈 수 있게 합니다.',
241
241
  },
@@ -153,7 +153,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
153
153
  id: 'wine',
154
154
  name: 'Rode Wijn / Fruit',
155
155
  protocols: {
156
- natural: { agentId: 'percarbonate', temperature: '4060°C', method: 'Langdurig weken' },
156
+ natural: { agentId: 'percarbonate', temperature: '40-60°C', method: 'Langdurig weken' },
157
157
  synthetic: { agentId: 'percarbonate', temperature: '40°C', method: 'Rechtstreekse pasta' },
158
158
  delicate: {
159
159
  agentId: 'vinegar',
@@ -232,13 +232,13 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
232
232
  },
233
233
  {
234
234
  type: 'card',
235
- title: '01 Gecontroleerde Oxidatie',
235
+ title: '01: Gecontroleerde Oxidatie',
236
236
  icon: 'mdi:atom',
237
237
  html: '<strong>Natriumpercarbonaat</strong> geeft actieve zuurstof af die de dubbele bindingen van chromoforen (de moleculen die verantwoordelijk zijn voor de kleur van de vlek) breekt, waardoor ze kleurloos en in water oplosbaar worden. Het is de meest effectieve methode voor organische vlekken.',
238
238
  },
239
239
  {
240
240
  type: 'card',
241
- title: '02 Oplosbaar maken door Oplosmiddelen',
241
+ title: '02: Oplosbaar maken door Oplosmiddelen',
242
242
  icon: 'mdi:flask-outline',
243
243
  html: 'Vlekken zoals olie of inkt zijn niet oplosbaar in water. Oplosmiddelen zoals <strong>isopropylalcohol</strong> of <strong>aceton</strong> verlagen de oppervlaktespanning en trekken de niet-polaire moleculen van de vlek aan, waardoor ze kunnen worden overgedragen op een drager.',
244
244
  },
@@ -153,7 +153,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
153
153
  id: 'wine',
154
154
  name: 'Czerwone Wino / Owoce',
155
155
  protocols: {
156
- natural: { agentId: 'percarbonate', temperature: '4060°C', method: 'Długotrwałe moczenie' },
156
+ natural: { agentId: 'percarbonate', temperature: '40-60°C', method: 'Długotrwałe moczenie' },
157
157
  synthetic: { agentId: 'percarbonate', temperature: '40°C', method: 'Bezpośrednia pasta' },
158
158
  delicate: {
159
159
  agentId: 'vinegar',
@@ -232,13 +232,13 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
232
232
  },
233
233
  {
234
234
  type: 'card',
235
- title: '01 Kontrolowane Utlenianie',
235
+ title: '01: Kontrolowane Utlenianie',
236
236
  icon: 'mdi:atom',
237
237
  html: '<strong>Nadwęglan sodu</strong> uwalnia aktywny tlen, który rozrywa podwójne wiązania chromoforów (cząsteczek odpowiedzialnych za kolor plamy), czyniąc je bezbarwnymi i rozpuszczalnymi w wodzie. Jest to najskuteczniejsza metoda na plamy organiczne.',
238
238
  },
239
239
  {
240
240
  type: 'card',
241
- title: '02 Solubilizacja przez Rozpuszczalniki',
241
+ title: '02: Solubilizacja przez Rozpuszczalniki',
242
242
  icon: 'mdi:flask-outline',
243
243
  html: 'Plamy takie jak olej czy atrament nie rozpuszczają się w wodzie. Rozpuszczalniki, takie jak <strong>alkohol izopropylowy</strong> lub <strong>aceton</strong>, zmniejszają napięcie powierzchniowe i przyciągają niepolarne cząsteczki plamy, pozwalając im przenieść się na podłoże pomocnicze.',
244
244
  },
@@ -153,7 +153,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
153
153
  id: 'wine',
154
154
  name: 'Vinho Tinto / Fruta',
155
155
  protocols: {
156
- natural: { agentId: 'percarbonate', temperature: '4060°C', method: 'Demolha prolongada' },
156
+ natural: { agentId: 'percarbonate', temperature: '40-60°C', method: 'Demolha prolongada' },
157
157
  synthetic: { agentId: 'percarbonate', temperature: '40°C', method: 'Pasta directa' },
158
158
  delicate: {
159
159
  agentId: 'vinegar',
@@ -232,13 +232,13 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
232
232
  },
233
233
  {
234
234
  type: 'card',
235
- title: '01 Oxidação Controlada',
235
+ title: '01: Oxidação Controlada',
236
236
  icon: 'mdi:atom',
237
237
  html: 'O <strong>percarbonato de sódio</strong> liberta oxigénio activo que quebra as duplas ligações dos cromóforos (as moléculas responsáveis pela cor da mancha), tornando-as incolores e solúveis em água. É o método mais eficaz para manchas orgânicas.',
238
238
  },
239
239
  {
240
240
  type: 'card',
241
- title: '02 Solubilização por Solventes',
241
+ title: '02: Solubilização por Solventes',
242
242
  icon: 'mdi:flask-outline',
243
243
  html: 'Manchas como o óleo ou a tinta não são solúveis em água. Solventes como o <strong>álcool isopropílico</strong> ou a <strong>acetona</strong> reduzem a tensão superficial e atraem as moléculas não polares da mancha, permitindo que se transfiram para um meio de suporte.',
244
244
  },
@@ -153,7 +153,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
153
153
  id: 'wine',
154
154
  name: 'Красное вино / Фрукты',
155
155
  protocols: {
156
- natural: { agentId: 'percarbonate', temperature: '4060°C', method: 'Длительное замачивание' },
156
+ natural: { agentId: 'percarbonate', temperature: '40-60°C', method: 'Длительное замачивание' },
157
157
  synthetic: { agentId: 'percarbonate', temperature: '40°C', method: 'Нанесение пасты' },
158
158
  delicate: {
159
159
  agentId: 'vinegar',
@@ -232,13 +232,13 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
232
232
  },
233
233
  {
234
234
  type: 'card',
235
- title: '01 Контролируемое окисление',
235
+ title: '01: Контролируемое окисление',
236
236
  icon: 'mdi:atom',
237
237
  html: '<strong>Перкарбонат натрия</strong> выделяет активный кислород, который разрывает двойные связи хромофоров (молекул, отвечающих за цвет пятна), делая их бесцветными и водорастворимыми. Это самый эффективный метод для органических пятен.',
238
238
  },
239
239
  {
240
240
  type: 'card',
241
- title: '02 Растворение растворителями',
241
+ title: '02: Растворение растворителями',
242
242
  icon: 'mdi:flask-outline',
243
243
  html: 'Пятна от масла или чернил не растворяются в воде. Растворители, такие как <strong>изопропиловый спирт</strong> или <strong>ацетон</strong>, снижают поверхностное натяжение и притягивают неполярные молекулы пятна, позволяя им переноситься на подложку.',
244
244
  },
@@ -249,7 +249,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
249
249
  },
250
250
  {
251
251
  type: 'paragraph',
252
- html: 'Не все волокна «едятся» одинаково. <strong>Шелк и шерсть</strong>это белки (фиброин и кератин). Если вы без контроля примените энзимное средство, предназначенное для «поедания белков» (пятна крови или яйца), моющее средство начнет разрушать само волокно, уничтожая блеск и структуру ткани.',
252
+ html: 'Не все волокна "едятся" одинаково. <strong>Шелк и шерсть</strong> - это белки (фиброин и кератин). Если вы без контроля примените энзимное средство, предназначенное для "поедания белков" (пятна крови или яйца), моющее средство начнет разрушать само волокно, уничтожая блеск и структуру ткани.',
253
253
  },
254
254
  {
255
255
  type: 'title',
@@ -258,7 +258,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
258
258
  },
259
259
  {
260
260
  type: 'paragraph',
261
- html: 'Одна из самых распространенных ошибокиспользование горячей воды для «размягчения» пятна крови. Химически тепло вызывает <strong>коагуляцию белков</strong> пятна, навсегда закрепляя их в пористой структуре волокна. Белковые пятна всегда следует обрабатывать холодной водой.',
261
+ html: 'Одна из самых распространенных ошибок - использование горячей воды для "размягчения" пятна крови. Химически тепло вызывает <strong>коагуляцию белков</strong> пятна, навсегда закрепляя их в пористой структуре волокна. Белковые пятна всегда следует обрабатывать холодной водой.',
262
262
  },
263
263
  {
264
264
  type: 'tip',
@@ -272,11 +272,11 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
272
272
  },
273
273
  {
274
274
  type: 'paragraph',
275
- html: '<strong>Ацетон</strong>исключительный растворитель для лаков для ногтей или клея, но он губителен для <strong>ацетата</strong>. Будучи волокнами, производными от целлюлозы, но химически обработанными, ацетон буквально растворяет ткань.',
275
+ html: '<strong>Ацетон</strong> - исключительный растворитель для лаков для ногтей или клея, но он губителен для <strong>ацетата</strong>. Будучи волокнами, производными от целлюлозы, но химически обработанными, ацетон буквально растворяет ткань.',
276
276
  },
277
277
  {
278
278
  type: 'paragraph',
279
- html: '<strong>Изопропиловый спирт</strong> более стабилен, но на окрашенной синтетике он может вымывать сам пигмент. Мы всегда рекомендуем проводить «тест на шве» на незаметном участке перед основной обработкой.',
279
+ html: '<strong>Изопропиловый спирт</strong> более стабилен, но на окрашенной синтетике он может вымывать сам пигмент. Мы всегда рекомендуем проводить "тест на шве" на незаметном участке перед основной обработкой.',
280
280
  },
281
281
  ],
282
282
  faq: faqData,
@@ -153,7 +153,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
153
153
  id: 'wine',
154
154
  name: 'Rödvin / Frukt',
155
155
  protocols: {
156
- natural: { agentId: 'percarbonate', temperature: '4060°C', method: 'Långvarig blötläggning' },
156
+ natural: { agentId: 'percarbonate', temperature: '40-60°C', method: 'Långvarig blötläggning' },
157
157
  synthetic: { agentId: 'percarbonate', temperature: '40°C', method: 'Direkt pasta' },
158
158
  delicate: {
159
159
  agentId: 'vinegar',
@@ -232,13 +232,13 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
232
232
  },
233
233
  {
234
234
  type: 'card',
235
- title: '01 Kontrollerad Oxidation',
235
+ title: '01: Kontrollerad Oxidation',
236
236
  icon: 'mdi:atom',
237
237
  html: '<strong>Natriumperkarbonat</strong> frisläpper aktivt syre som bryter dubbelbindningarna i kromoforena (molekylerna som ansvarar för fläckens färg), vilket gör dem färglösa och vattenlösliga. Det är den mest effektiva metoden för organiska fläckar.',
238
238
  },
239
239
  {
240
240
  type: 'card',
241
- title: '02 Solubilisering med Lösningsmedel',
241
+ title: '02: Solubilisering med Lösningsmedel',
242
242
  icon: 'mdi:flask-outline',
243
243
  html: 'Fläckar som olja eller bläck är inte vattenlösliga. Lösningsmedel som <strong>isopropylalkohol</strong> eller <strong>aceton</strong> minskar ytspänningen och attraherar fläckens opolära molekyler, vilket gör att de kan överföras till ett bärarmaterial.',
244
244
  },
@@ -153,7 +153,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
153
153
  id: 'wine',
154
154
  name: 'Kırmızı Şarap / Meyve',
155
155
  protocols: {
156
- natural: { agentId: 'percarbonate', temperature: '4060°C', method: 'Uzun süreli bekletme' },
156
+ natural: { agentId: 'percarbonate', temperature: '40-60°C', method: 'Uzun süreli bekletme' },
157
157
  synthetic: { agentId: 'percarbonate', temperature: '40°C', method: 'Doğrudan macun' },
158
158
  delicate: {
159
159
  agentId: 'vinegar',
@@ -232,13 +232,13 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
232
232
  },
233
233
  {
234
234
  type: 'card',
235
- title: '01 Kontrollü Oksidasyon',
235
+ title: '01: Kontrollü Oksidasyon',
236
236
  icon: 'mdi:atom',
237
237
  html: '<strong>Sodyum perkarbonat</strong>, kromoforların (lekenin renginden sorumlu moleküller) çift bağlarını kopararak onları renksiz ve suda çözünür hale getiren aktif oksijen salar. Organik lekeler için en etkili yöntemdir.',
238
238
  },
239
239
  {
240
240
  type: 'card',
241
- title: '02 Çözücülerle Çözünürlük',
241
+ title: '02: Çözücülerle Çözünürlük',
242
242
  icon: 'mdi:flask-outline',
243
243
  html: 'Yağ veya mürekkep gibi lekeler suda çözünmezler. <strong>İzopropil alkol</strong> veya <strong>aseton</strong> gibi çözücüler yüzey gerilimini azaltır ve lekenin polar olmayan moleküllerini çekerek bir destek ortamına aktarılmalarını sağlar.',
244
244
  },
@@ -44,7 +44,7 @@ const howToData = [
44
44
  },
45
45
  {
46
46
  name: '执行指定方案',
47
- text: '按照提供的溶剂类型、温度和方法说明进行操作。请特别留意“关键警示”部分。',
47
+ text: '按照提供的溶剂类型、温度和方法说明进行操作。请特别留意"关键警示"部分。',
48
48
  },
49
49
  ];
50
50
 
@@ -148,7 +148,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
148
148
  id: 'wine',
149
149
  name: '红酒 / 水果',
150
150
  protocols: {
151
- natural: { agentId: 'percarbonate', temperature: '4060°C', method: '长时间浸泡' },
151
+ natural: { agentId: 'percarbonate', temperature: '40-60°C', method: '长时间浸泡' },
152
152
  synthetic: { agentId: 'percarbonate', temperature: '40°C', method: '直接涂抹糊状物' },
153
153
  delicate: {
154
154
  agentId: 'vinegar',
@@ -227,13 +227,13 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
227
227
  },
228
228
  {
229
229
  type: 'card',
230
- title: '01 —— 受控氧化',
230
+ title: '01: 受控氧化',
231
231
  icon: 'mdi:atom',
232
232
  html: '<strong>过碳酸钠</strong>释放出的活性氧能断裂发色团(污渍颜色的来源分子)的双键,使其变得无色并可溶于水。这是处理有机污渍最有效的方法。',
233
233
  },
234
234
  {
235
235
  type: 'card',
236
- title: '02 —— 溶剂增溶',
236
+ title: '02: 溶剂增溶',
237
237
  icon: 'mdi:flask-outline',
238
238
  html: '油渍或墨水等污渍不溶于水。<strong>异丙基酒精</strong>或<strong>丙酮</strong>等溶剂能降低表面张力并吸引污渍中的非极性分子,使它们能够转移至承载媒介上。',
239
239
  },
@@ -244,7 +244,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
244
244
  },
245
245
  {
246
246
  type: 'paragraph',
247
- html: '并非所有纤维都能经受同样的“侵蚀”。<strong>真丝和羊毛</strong>属于蛋白质(丝蛋白和角蛋白)。如果你盲目使用专为“吞噬蛋白质”(用于处理血渍或蛋渍)设计的酶促洗涤剂,它会开始降解纤维本身,从而破坏织物的光泽和结构。',
247
+ html: '并非所有纤维都能经受同样的"侵蚀"。<strong>真丝和羊毛</strong>属于蛋白质(丝蛋白和角蛋白)。如果你盲目使用专为"吞噬蛋白质"(用于处理血渍或蛋渍)设计的酶促洗涤剂,它会开始降解纤维本身,从而破坏织物的光泽和结构。',
248
248
  },
249
249
  {
250
250
  type: 'title',
@@ -253,7 +253,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
253
253
  },
254
254
  {
255
255
  type: 'paragraph',
256
- html: '最常见的错误之一是使用热水来“软化”血渍。从化学角度看,热量会导致污渍中的<strong>蛋白质凝固</strong>,从而使其永久固定在纤维的多孔结构中。蛋白质类污渍必须始终使用冷水处理。',
256
+ html: '最常见的错误之一是使用热水来"软化"血渍。从化学角度看,热量会导致污渍中的<strong>蛋白质凝固</strong>,从而使其永久固定在纤维的多孔结构中。蛋白质类污渍必须始终使用冷水处理。',
257
257
  },
258
258
  {
259
259
  type: 'tip',
@@ -271,7 +271,7 @@ export const content: ToolLocaleContent<StainChemistryUI> = {
271
271
  },
272
272
  {
273
273
  type: 'paragraph',
274
- html: '<strong>异丙基酒精</strong>相对更稳定,但在染色的合成纤维上可能会带走色素本身。我们建议在正式处理前,始终先在“内锁边”等隐蔽区域进行测试。',
274
+ html: '<strong>异丙基酒精</strong>相对更稳定,但在染色的合成纤维上可能会带走色素本身。我们建议在正式处理前,始终先在"内锁边"等隐蔽区域进行测试。',
275
275
  },
276
276
  ],
277
277
  faq: faqData,
@@ -4,7 +4,7 @@ import { bibliography } from '../bibliography';
4
4
  import type { YarnCalculatorUI } from '../ui';
5
5
 
6
6
  const slug = 'calculateur-laine';
7
- const title = 'Calculateur de Laine : Combien de mètres et de pelotes ?';
7
+ const title = 'Calculateur de Laine: Combien de mètres et de pelotes ?';
8
8
  const description =
9
9
  'Calculez avec précision la quantité de laine nécessaire pour vos projets de tricot et crochet en fonction du patron et de la taille.';
10
10
 
@@ -94,12 +94,12 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
94
94
  seo: [
95
95
  {
96
96
  type: 'title',
97
- text: 'Guide de Consommation de Laine : Comment Calculer Mètres et Pelotes',
97
+ text: 'Guide de Consommation de Laine: Comment Calculer Mètres et Pelotes',
98
98
  level: 2,
99
99
  },
100
100
  {
101
101
  type: 'paragraph',
102
- html: 'Maîtrisez la logistique du tricot et évitez de manquer de fil grâce à notre calculateur technique de précision pour le tricot et le crochet. L\'une des plus grandes craintes des tricoteurs est le <strong>"Yarn Chicken"</strong> : ce moment critique en fin de projet où le fil semble vouloir se terminer avant de fermer les dernières mailles. Ce calculateur a été développé pour vous offrir des estimations basées sur les standards industriels de métrage et de grammage.',
102
+ html: 'Maîtrisez la logistique du tricot et évitez de manquer de fil grâce à notre calculateur technique de précision pour le tricot et le crochet. L\'une des plus grandes craintes des tricoteurs est le <strong>"Yarn Chicken"</strong>: ce moment critique en fin de projet où le fil semble vouloir se terminer avant de fermer les dernières mailles. Ce calculateur a été développé pour vous offrir des estimations basées sur les standards industriels de métrage et de grammage.',
103
103
  },
104
104
  {
105
105
  type: 'stats',
@@ -117,7 +117,7 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
117
117
  },
118
118
  {
119
119
  type: 'paragraph',
120
- html: 'Beaucoup de débutants font l\'erreur d\'acheter de la laine en se basant exclusivement sur le poids (ex. "6 pelotes de 100g"). Cependant, le poids est une unité de masse, pas de longueur. Deux laines de 100g peuvent avoir des longueurs radicalement différentes : une laine <strong>Bulky</strong> peut n\'avoir que 80 mètres, tandis qu\'une <strong>Fingering / Lace</strong> peut dépasser 450 mètres pour le même poids.',
120
+ html: 'Beaucoup de débutants font l\'erreur d\'acheter de la laine en se basant exclusivement sur le poids (ex. "6 pelotes de 100g"). Cependant, le poids est une unité de masse, pas de longueur. Deux laines de 100g peuvent avoir des longueurs radicalement différentes: une laine <strong>Bulky</strong> peut n\'avoir que 80 mètres, tandis qu\'une <strong>Fingering / Lace</strong> peut dépasser 450 mètres pour le même poids.',
121
121
  },
122
122
  {
123
123
  type: 'paragraph',
@@ -12,12 +12,12 @@ const faqData = [
12
12
  {
13
13
  question: 'Почему при вязании крючком расходуется больше пряжи, чем при вязании спицами?',
14
14
  answer:
15
- 'Вязание крючком основано на создании узлов и перекрывающихся петель, что создает более плотное и толстое полотно на квадратный сантиметр. В среднем проект крючком потребляет на 2535% больше пряжи, чем тот же проект, связанный спицами (лицевой гладью).',
15
+ 'Вязание крючком основано на создании узлов и перекрывающихся петель, что создает более плотное и толстое полотно на квадратный сантиметр. В среднем проект крючком потребляет на 25-35% больше пряжи, чем тот же проект, связанный спицами (лицевой гладью).',
16
16
  },
17
17
  {
18
18
  question: 'Что произойдет, если я куплю пряжу из разных партий красителя (Dye Lot)?',
19
19
  answer:
20
- 'Даже если цвет в магазине кажется идентичным, минимальные химические вариации во время окрашивания могут создать видимые «полосы» на готовом изделии. Настоятельно рекомендуется покупать всю пряжу сразу, проверяя, чтобы номер партии был одинаковым.',
20
+ 'Даже если цвет в магазине кажется идентичным, минимальные химические вариации во время окрашивания могут создать видимые "полосы" на готовом изделии. Настоятельно рекомендуется покупать всю пряжу сразу, проверяя, чтобы номер партии был одинаковым.',
21
21
  },
22
22
  {
23
23
  question: 'Как плотность вязания (gauge) влияет на конечный расход?',
@@ -99,7 +99,7 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
99
99
  },
100
100
  {
101
101
  type: 'paragraph',
102
- html: 'Освойте логистику вязания и забудьте о страхе нехватки нитей с нашим высокоточным техническим калькулятором. Главный кошмар любого вязальщика<strong>"Yarn Chicken"</strong>: тот критический момент в конце проекта, когда кажется, что нить закончится раньше, чем вы закроете последние петли. Этот калькулятор разработан для предоставления оценок на основе отраслевых стандартов метража и веса.',
102
+ html: 'Освойте логистику вязания и забудьте о страхе нехватки нитей с нашим высокоточным техническим калькулятором. Главный кошмар любого вязальщика - <strong>"Yarn Chicken"</strong>: тот критический момент в конце проекта, когда кажется, что нить закончится раньше, чем вы закроете последние петли. Этот калькулятор разработан для предоставления оценок на основе отраслевых стандартов метража и веса.',
103
103
  },
104
104
  {
105
105
  type: 'stats',
@@ -117,7 +117,7 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
117
117
  },
118
118
  {
119
119
  type: 'paragraph',
120
- html: 'Многие новички совершают ошибку, покупая пряжу исключительно по весу (например, «6 мотков по 100 г»). Однако весэто единица массы, а не длины. Две пряжи весом 100 г могут иметь радикально разную длину: пряжа типа <strong>Bulky</strong> может иметь длину всего 80 метров, в то время как <strong>Fingering / Lace</strong> может превышать 450 метров при том же весе.',
120
+ html: 'Многие новички совершают ошибку, покупая пряжу исключительно по весу (например, "6 мотков по 100 г"). Однако вес - это единица массы, а не длины. Две пряжи весом 100 г могут иметь радикально разную длину: пряжа типа <strong>Bulky</strong> может иметь длину всего 80 метров, в то время как <strong>Fingering / Lace</strong> может превышать 450 метров при том же весе.',
121
121
  },
122
122
  {
123
123
  type: 'paragraph',
@@ -147,7 +147,7 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
147
147
  {
148
148
  type: 'tip',
149
149
  title: 'Фактор плотности (Gauge)',
150
- html: '<p>Помните: если вы вяжете слабо, ваши петли будут крупнее и потребуют больше нити, чем при плотном вязании. Наш калькулятор применяет запас прочности, но если вы знаете, что ваша плотность экстремально низкая, рассмотрите возможность добавления еще 510% к результатам, чтобы избежать сюрпризов.</p>',
150
+ html: '<p>Помните: если вы вяжете слабо, ваши петли будут крупнее и потребуют больше нити, чем при плотном вязании. Наш калькулятор применяет запас прочности, но если вы знаете, что ваша плотность экстремально низкая, рассмотрите возможность добавления еще 5-10% к результатам, чтобы избежать сюрпризов.</p>',
151
151
  },
152
152
  {
153
153
  type: 'title',
@@ -169,7 +169,7 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
169
169
  },
170
170
  {
171
171
  title: 'Косы / Араны',
172
- description: 'Перекрещивание волокон «укорачивает» деталь, увеличивая расход примерно на 25%.',
172
+ description: 'Перекрещивание волокон "укорачивает" деталь, увеличивая расход примерно на 25%.',
173
173
  icon: 'mdi:texture-box',
174
174
  points: ['Требуется больше метража', 'Более плотное и тяжелое полотно'],
175
175
  pointIcon: 'mdi:alert-circle-outline',
@@ -233,7 +233,7 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
233
233
  type: 'list',
234
234
  items: [
235
235
  '<strong>Проверьте метраж вашего реального мотка:</strong> Не каждый 100-граммовый моток имеет длину 200 м. Проверьте это на этикетке для корректировки расчета.',
236
- '<strong>Добавьте метраж на детали:</strong> Если вы планируете добавить бахрому к шарфу или помпоны к шапке, добавьте 5080 метров к итогу.',
236
+ '<strong>Добавьте метраж на детали:</strong> Если вы планируете добавить бахрому к шарфу или помпоны к шапке, добавьте 50-80 метров к итогу.',
237
237
  '<strong>Образец плотности:</strong> Свяжите квадрат 10x10 см. Взвесьте его на точных весах. Если он весит 20 г, а ваш плед 100x100 (100 квадратов), вам понадобится ровно 2 кг пряжи.',
238
238
  '<strong>Всегда покупайте пряжу из одной партии:</strong> Если расчет показывает 7 мотков, купите 8 на случай, если придется использовать разные партии, или для швов.',
239
239
  ],
@@ -16,7 +16,7 @@ const faqData = [
16
16
  {
17
17
  question: '如果我购买不同缸号(Dye Lot)的线会怎样?',
18
18
  answer:
19
- '即使在商店里看起来颜色完全一致,染色过程中极细微的化学差异也可能导致成品编织在一起时出现可见的“色差带”。强烈建议务必一次性买齐所需毛线,并确保批次代码(缸号)完全相同。',
19
+ '即使在商店里看起来颜色完全一致,染色过程中极细微的化学差异也可能导致成品编织在一起时出现可见的"色差带"。强烈建议务必一次性买齐所需毛线,并确保批次代码(缸号)完全相同。',
20
20
  },
21
21
  {
22
22
  question: '织片密度(gauge)如何影响最终耗线量?',
@@ -98,7 +98,7 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
98
98
  },
99
99
  {
100
100
  type: 'paragraph',
101
- html: '掌握编织物流管理,使用我们的棒针与钩针高精度技术计算器,避免“断线”尴尬。每一位编织者最大的恐惧莫过于 <strong>“绝望的最后几米(Yarn Chicken)”</strong>:在项目的末尾,似乎线就要在收掉最后几针前用完了。本计算器旨在基于工业标准的长度和克重数据为你提供准确的预估。',
101
+ html: '掌握编织物流管理,使用我们的棒针与钩针高精度技术计算器,避免"断线"尴尬。每一位编织者最大的恐惧莫过于 <strong>"绝望的最后几米(Yarn Chicken)"</strong>:在项目的末尾,似乎线就要在收掉最后几针前用完了。本计算器旨在基于工业标准的长度和克重数据为你提供准确的预估。',
102
102
  },
103
103
  {
104
104
  type: 'stats',
@@ -111,12 +111,12 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
111
111
  },
112
112
  {
113
113
  type: 'title',
114
- text: '为什么线团的“重量”具有欺骗性?',
114
+ text: '为什么线团的"重量"具有欺骗性?',
115
115
  level: 3,
116
116
  },
117
117
  {
118
118
  type: 'paragraph',
119
- html: '许多初学者在购买毛线时会犯专注于重量(例如“买 6 团 100 克的线”)的错误。然而,重量是质量单位,而非长度单位。两款同样重 100 克的线,其长度可能截然不同:一款 <strong>Bulky(粗线)</strong> 类型可能只有 80 米,而同样重量的一款 <strong>Fingering / Lace(蕾丝线)</strong> 长度可能超过 450 米。',
119
+ html: '许多初学者在购买毛线时会犯专注于重量(例如"买 6 团 100 克的线")的错误。然而,重量是质量单位,而非长度单位。两款同样重 100 克的线,其长度可能截然不同:一款 <strong>Bulky(粗线)</strong> 类型可能只有 80 米,而同样重量的一款 <strong>Fingering / Lace(蕾丝线)</strong> 长度可能超过 450 米。',
120
120
  },
121
121
  {
122
122
  type: 'paragraph',
@@ -168,7 +168,7 @@ export const content: ToolLocaleContent<YarnCalculatorUI> = {
168
168
  },
169
169
  {
170
170
  title: '麻花 / 纹理',
171
- description: '纤维的交叉会使织片“缩短”,使消耗量增加约 25%。',
171
+ description: '纤维的交叉会使织片"缩短",使消耗量增加约 25%。',
172
172
  icon: 'mdi:texture-box',
173
173
  points: ['需要更多米数', '织物更紧密、更沉重'],
174
174
  pointIcon: 'mdi:alert-circle-outline',