@jjlmoya/utils-diy 1.16.0 → 1.18.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 (95) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/fr.ts +5 -5
  3. package/src/layouts/PreviewLayout.astro +1 -0
  4. package/src/tests/diacritics_density.test.ts +118 -0
  5. package/src/tests/inverted_punctuation.test.ts +84 -0
  6. package/src/tests/no_en_dash.test.ts +70 -0
  7. package/src/tests/script_density.test.ts +94 -0
  8. package/src/tool/balusterCalculator/i18n/de.ts +7 -7
  9. package/src/tool/balusterCalculator/i18n/en.ts +4 -4
  10. package/src/tool/balusterCalculator/i18n/es.ts +2 -2
  11. package/src/tool/balusterCalculator/i18n/fr.ts +3 -3
  12. package/src/tool/balusterCalculator/i18n/it.ts +16 -16
  13. package/src/tool/balusterCalculator/i18n/ru.ts +14 -14
  14. package/src/tool/balusterCalculator/i18n/tr.ts +5 -5
  15. package/src/tool/clayCalculator/i18n/fr.ts +3 -3
  16. package/src/tool/clayCalculator/i18n/ru.ts +3 -3
  17. package/src/tool/concreteCalculator/i18n/en.ts +4 -4
  18. package/src/tool/concreteCalculator/i18n/fr.ts +2 -2
  19. package/src/tool/concreteCalculator/i18n/ko.ts +2 -2
  20. package/src/tool/concreteCalculator/i18n/ru.ts +3 -3
  21. package/src/tool/cutOptimizer/i18n/en.ts +4 -4
  22. package/src/tool/cutOptimizer/i18n/fr.ts +2 -2
  23. package/src/tool/cutOptimizer/i18n/ru.ts +2 -2
  24. package/src/tool/drillCalculator/bibliography.ts +2 -2
  25. package/src/tool/drillCalculator/i18n/ru.ts +5 -5
  26. package/src/tool/drillCalculator/i18n/zh.ts +2 -2
  27. package/src/tool/drillSharpener/i18n/ru.ts +3 -3
  28. package/src/tool/epoxyCalculator/epoxy-resin-calculator.css +117 -2
  29. package/src/tool/epoxyCalculator/i18n/de.ts +2 -2
  30. package/src/tool/epoxyCalculator/i18n/en.ts +2 -2
  31. package/src/tool/epoxyCalculator/i18n/es.ts +2 -2
  32. package/src/tool/epoxyCalculator/i18n/fr.ts +3 -3
  33. package/src/tool/epoxyCalculator/i18n/id.ts +2 -2
  34. package/src/tool/epoxyCalculator/i18n/it.ts +2 -2
  35. package/src/tool/epoxyCalculator/i18n/ja.ts +2 -2
  36. package/src/tool/epoxyCalculator/i18n/ko.ts +2 -2
  37. package/src/tool/epoxyCalculator/i18n/nl.ts +2 -2
  38. package/src/tool/epoxyCalculator/i18n/pl.ts +2 -2
  39. package/src/tool/epoxyCalculator/i18n/pt.ts +2 -2
  40. package/src/tool/epoxyCalculator/i18n/ru.ts +5 -5
  41. package/src/tool/epoxyCalculator/i18n/sv.ts +2 -2
  42. package/src/tool/epoxyCalculator/i18n/tr.ts +2 -2
  43. package/src/tool/epoxyCalculator/i18n/zh.ts +4 -4
  44. package/src/tool/furnitureFit/i18n/de.ts +2 -2
  45. package/src/tool/furnitureFit/i18n/en.ts +4 -4
  46. package/src/tool/furnitureFit/i18n/es.ts +2 -2
  47. package/src/tool/furnitureFit/i18n/fr.ts +3 -3
  48. package/src/tool/furnitureFit/i18n/id.ts +2 -2
  49. package/src/tool/furnitureFit/i18n/it.ts +2 -2
  50. package/src/tool/furnitureFit/i18n/ja.ts +2 -2
  51. package/src/tool/furnitureFit/i18n/ko.ts +2 -2
  52. package/src/tool/furnitureFit/i18n/nl.ts +2 -2
  53. package/src/tool/furnitureFit/i18n/pl.ts +2 -2
  54. package/src/tool/furnitureFit/i18n/pt.ts +2 -2
  55. package/src/tool/furnitureFit/i18n/ru.ts +6 -6
  56. package/src/tool/furnitureFit/i18n/sv.ts +2 -2
  57. package/src/tool/furnitureFit/i18n/tr.ts +2 -2
  58. package/src/tool/furnitureFit/i18n/zh.ts +2 -2
  59. package/src/tool/mortarCalculator/i18n/en.ts +3 -3
  60. package/src/tool/mortarCalculator/i18n/ru.ts +6 -6
  61. package/src/tool/mortarCalculator/i18n/zh.ts +3 -3
  62. package/src/tool/passepartoutCalculator/i18n/en.ts +4 -4
  63. package/src/tool/passepartoutCalculator/i18n/ru.ts +7 -7
  64. package/src/tool/passepartoutCalculator/i18n/zh.ts +6 -6
  65. package/src/tool/passepartoutCalculator/passepartout-calculator.css +113 -3
  66. package/src/tool/pythagoreanRightAngleCalculator/i18n/fr.ts +3 -3
  67. package/src/tool/pythagoreanRightAngleCalculator/i18n/pl.ts +2 -2
  68. package/src/tool/pythagoreanRightAngleCalculator/i18n/ru.ts +5 -5
  69. package/src/tool/stairCalculator/i18n/ru.ts +6 -6
  70. package/src/tool/stairCalculator/stair-calculator.css +140 -6
  71. package/src/tool/thermalExpansionCalculator/bibliography.ts +4 -4
  72. package/src/tool/thermalExpansionCalculator/i18n/en.ts +2 -2
  73. package/src/tool/thermalExpansionCalculator/i18n/fr.ts +3 -3
  74. package/src/tool/thermalExpansionCalculator/i18n/ru.ts +4 -4
  75. package/src/tool/twoStrokeMixtureCalculator/i18n/de.ts +12 -12
  76. package/src/tool/twoStrokeMixtureCalculator/i18n/en.ts +13 -13
  77. package/src/tool/twoStrokeMixtureCalculator/i18n/fr.ts +18 -18
  78. package/src/tool/twoStrokeMixtureCalculator/i18n/id.ts +12 -12
  79. package/src/tool/twoStrokeMixtureCalculator/i18n/it.ts +4 -4
  80. package/src/tool/twoStrokeMixtureCalculator/i18n/nl.ts +6 -6
  81. package/src/tool/twoStrokeMixtureCalculator/i18n/pl.ts +6 -6
  82. package/src/tool/twoStrokeMixtureCalculator/i18n/pt.ts +10 -10
  83. package/src/tool/twoStrokeMixtureCalculator/i18n/ru.ts +9 -9
  84. package/src/tool/twoStrokeMixtureCalculator/i18n/sv.ts +8 -8
  85. package/src/tool/twoStrokeMixtureCalculator/i18n/tr.ts +4 -4
  86. package/src/tool/twoStrokeMixtureCalculator/i18n/zh.ts +7 -7
  87. package/src/tool/voltageDropCalculator/i18n/en.ts +2 -2
  88. package/src/tool/voltageDropCalculator/i18n/es.ts +4 -4
  89. package/src/tool/voltageDropCalculator/i18n/ru.ts +4 -4
  90. package/src/tool/workshopFractionConverter/bibliography.ts +2 -2
  91. package/src/tool/workshopFractionConverter/i18n/de.ts +2 -2
  92. package/src/tool/workshopFractionConverter/i18n/es.ts +2 -2
  93. package/src/tool/workshopFractionConverter/i18n/fr.ts +2 -2
  94. package/src/tool/workshopFractionConverter/i18n/ru.ts +9 -9
  95. package/src/tool/workshopFractionConverter/i18n/zh.ts +6 -6
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { DrillSharpenerUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -82,11 +82,11 @@ export const content: ToolLocaleContent<DrillSharpenerUI> = {
82
82
  schemas: [faqSchema, howToSchema, appSchema],
83
83
  seo: [
84
84
  { type: 'title', text: 'Мастер заточки сверл: профессиональная техника', level: 2 },
85
- { type: 'paragraph', html: 'Заточка сверл один из самых ценных навыков в любой мастерской. Правильно заточенное сверло улучшает качество отверстия, продлевает срок службы электроинструментов и обеспечивает безопасность оператора.' },
85
+ { type: 'paragraph', html: 'Заточка сверл - один из самых ценных навыков в любой мастерской. Правильно заточенное сверло улучшает качество отверстия, продлевает срок службы электроинструментов и обеспечивает безопасность оператора.' },
86
86
  { type: 'title', text: 'Основы заточки: угол при вершине', level: 3 },
87
87
  { type: 'paragraph', html: 'Угол при вершине определяет, как сверло врезается в материал. Стандартные углы: 118° для мягких сталей, 135° для нержавеющей стали и 140° для твердых сталей. Для каждого материала требуется свой угол, чтобы максимизировать проникновение без ущерба для прочности.' },
88
88
  { type: 'title', text: 'Главное, о чем забывают: задний угол', level: 3 },
89
- { type: 'paragraph', html: ' Самая распространенная ошибка игнорирование заднего угла или затыловки. Если задняя поверхность кромки плоская, сверло будет просто тереться, создавая сильный нагрев. Решение слегка сточить заднюю часть режущей кромки.' },
89
+ { type: 'paragraph', html: ' Самая распространенная ошибка - игнорирование заднего угла или затыловки. Если задняя поверхность кромки плоская, сверло будет просто тереться, создавая сильный нагрев. Решение - слегка сточить заднюю часть режущей кромки.' },
90
90
  ],
91
91
  ui: {
92
92
  labelMaterial: 'Материал заготовки',
@@ -1,7 +1,8 @@
1
- .ec-root {
1
+ .ec-root {
2
2
  width: 100%;
3
3
  max-width: 72rem;
4
4
  margin: 0 auto;
5
+ overflow-x: clip;
5
6
  }
6
7
 
7
8
  .ec-grid {
@@ -34,9 +35,11 @@
34
35
  background: rgba(241, 245, 249, 0.5);
35
36
  padding: 0.375rem;
36
37
  border-radius: 1rem;
38
+ max-width: 100%;
37
39
  }
38
40
 
39
41
  .ec-tab-btn {
42
+ min-width: 0;
40
43
  flex: 1;
41
44
  padding: 0.625rem 1rem;
42
45
  border-radius: 0.75rem;
@@ -51,6 +54,7 @@
51
54
  justify-content: center;
52
55
  gap: 0.5rem;
53
56
  transition: all 0.2s;
57
+ overflow: hidden;
54
58
  }
55
59
 
56
60
  .ec-tab-btn[data-ec-active="true"] {
@@ -214,6 +218,7 @@
214
218
  display: flex;
215
219
  align-items: center;
216
220
  gap: 0.75rem;
221
+ min-width: 0;
217
222
  }
218
223
 
219
224
  .ec-waste-icon {
@@ -288,6 +293,7 @@
288
293
  display: flex;
289
294
  flex-direction: column;
290
295
  gap: 1.5rem;
296
+ min-width: 0;
291
297
  }
292
298
 
293
299
  .ec-result-card {
@@ -344,6 +350,7 @@
344
350
  font-size: 3rem;
345
351
  font-weight: 700;
346
352
  line-height: 1;
353
+ overflow-wrap: anywhere;
347
354
  }
348
355
 
349
356
  .ec-total-unit {
@@ -384,6 +391,7 @@
384
391
  font-size: 1.5rem;
385
392
  font-weight: 700;
386
393
  margin: 0;
394
+ overflow-wrap: anywhere;
387
395
  }
388
396
 
389
397
  .ec-viz-card {
@@ -566,4 +574,111 @@
566
574
  .theme-dark .ec-visual-shape {
567
575
  background: #0f172a;
568
576
  border-color: rgba(148, 163, 184, 0.15);
569
- }
577
+ }
578
+
579
+ @media (max-width: 640px) {
580
+ .ec-root {
581
+ max-width: 100%;
582
+ }
583
+
584
+ .ec-grid {
585
+ gap: 1rem;
586
+ min-width: 0;
587
+ }
588
+
589
+ .ec-panel-left,
590
+ .ec-result-inner,
591
+ .ec-viz-card {
592
+ padding: 0.875rem;
593
+ border-radius: 1rem;
594
+ min-width: 0;
595
+ }
596
+
597
+ .ec-tabs {
598
+ display: grid;
599
+ grid-template-columns: repeat(3, minmax(0, 1fr));
600
+ gap: 0.25rem;
601
+ overflow: hidden;
602
+ }
603
+
604
+ .ec-tab-btn {
605
+ min-width: 0;
606
+ padding: 0.55rem 0.35rem;
607
+ font-size: 0.75rem;
608
+ line-height: 1.15;
609
+ white-space: normal;
610
+ overflow-wrap: anywhere;
611
+ }
612
+
613
+ .ec-tab-icon {
614
+ flex-shrink: 0;
615
+ font-size: 1rem;
616
+ }
617
+
618
+ .ec-inputs-grid,
619
+ .ec-custom-grid,
620
+ .ec-parts-grid {
621
+ grid-template-columns: 1fr;
622
+ gap: 1rem;
623
+ }
624
+
625
+ .ec-waste-row,
626
+ .ec-waste-info {
627
+ align-items: flex-start;
628
+ }
629
+
630
+ .ec-waste-row {
631
+ gap: 1rem;
632
+ padding: 0.875rem;
633
+ overflow: hidden;
634
+ }
635
+
636
+ .ec-waste-title,
637
+ .ec-waste-desc,
638
+ .ec-custom-check-row span {
639
+ overflow-wrap: anywhere;
640
+ }
641
+
642
+ .ec-result-inner {
643
+ gap: 1.25rem;
644
+ }
645
+
646
+ .ec-total-number {
647
+ font-size: 2.25rem;
648
+ }
649
+
650
+ .ec-viz-card {
651
+ min-height: 220px;
652
+ }
653
+
654
+ .ec-viz-label {
655
+ top: 1rem;
656
+ left: 1rem;
657
+ }
658
+
659
+ .ec-visual-stage {
660
+ gap: 1.5rem;
661
+ padding-top: 1.5rem;
662
+ }
663
+
664
+ .ec-visual-shape {
665
+ width: 6rem;
666
+ height: 6rem;
667
+ }
668
+
669
+ .ec-shape-rect {
670
+ height: 4rem;
671
+ }
672
+
673
+ .ec-shape-cylinder {
674
+ width: 5rem;
675
+ }
676
+ }
677
+
678
+ @media (max-width: 380px) {
679
+ .ec-tab-btn {
680
+ flex-direction: column;
681
+ gap: 0.25rem;
682
+ min-height: 3.15rem;
683
+ }
684
+ }
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { EpoxyCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -82,7 +82,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
82
82
  { type: 'paragraph', html: 'Der Unterschied zwischen einem langlebigen Kunstwerk und einer klebrigen Katastrophe liegt in der <strong>exakten Stöchiometrie</strong>. Ein Fehler von nur 5 % im Mischungsverhältnis kann die Aushärtung dauerhaft verhindern. Dieses Tool eliminiert mathematische Vermutungen, sodass Sie sich auf das Erschaffen konzentrieren können.' },
83
83
  { type: 'grid', columns: [
84
84
  { type: 'card', icon: 'mdi:scale-balance', title: 'Volumen oder Gewicht?', html: '<p>Der häufigste Fehler von Anfängern ist die Annahme, dass 100 ml 100 g wiegen. <strong>Harz ist dichter als Härter.</strong></p><p>Wenn das Datenblatt Ihres Produkts "100:50 nach Gewicht" angibt, ist das NICHT dasselbe wie "2:1 nach Volumen". Dieser Rechner arbeitet mit dem <strong>Volumen</strong> (V = L × B × H), dem Standard für das Füllen von Formen.</p>' },
85
- { type: 'card', icon: 'mdi:water-percent', title: 'Gängige Verhältnisse', html: '<ul><li><strong>1:1</strong> Beschichtungen, Lacke und Schnellkleber.</li><li><strong>2:1</strong> Standard. River Tables, Schmuck und mittlere Abgüsse.</li><li><strong>3:1</strong> Industrieböden und hochharte strukturelle Laminate.</li></ul>' },
85
+ { type: 'card', icon: 'mdi:water-percent', title: 'Gängige Verhältnisse', html: '<ul><li><strong>1:1</strong> - Beschichtungen, Lacke und Schnellkleber.</li><li><strong>2:1</strong> - Standard. River Tables, Schmuck und mittlere Abgüsse.</li><li><strong>3:1</strong> - Industrieböden und hochharte strukturelle Laminate.</li></ul>' },
86
86
  ]},
87
87
  { type: 'title', text: 'Sicherheitsprotokoll und Best Practices', level: 2 },
88
88
  { type: 'grid', columns: [
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { EpoxyCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -120,7 +120,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
120
120
  type: 'card',
121
121
  icon: 'mdi:water-percent',
122
122
  title: 'Common Ratios',
123
- html: '<ul><li><strong>1:1</strong> Coatings, varnishes and quick adhesives.</li><li><strong>2:1</strong> Standard. River tables, jewelry and medium molds.</li><li><strong>3:1</strong> Industrial floors and high-strength structural laminates.</li></ul>',
123
+ html: '<ul><li><strong>1:1</strong> - Coatings, varnishes and quick adhesives.</li><li><strong>2:1</strong> - Standard. River tables, jewelry and medium molds.</li><li><strong>3:1</strong> - Industrial floors and high-strength structural laminates.</li></ul>',
124
124
  },
125
125
  ],
126
126
  },
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { EpoxyCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -120,7 +120,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
120
120
  type: 'card',
121
121
  icon: 'mdi:water-percent',
122
122
  title: 'Proporciones Comunes',
123
- html: '<ul><li><strong>1:1</strong> Recubrimientos, barnices y adhesivos rápidos.</li><li><strong>2:1</strong> Estándar. River tables, joyería y moldes medios.</li><li><strong>3:1</strong> Suelos industriales y laminados estructurales de alta dureza.</li></ul>',
123
+ html: '<ul><li><strong>1:1</strong> - Recubrimientos, barnices y adhesivos rápidos.</li><li><strong>2:1</strong> - Estándar. River tables, joyería y moldes medios.</li><li><strong>3:1</strong> - Suelos industriales y laminados estructurales de alta dureza.</li></ul>',
124
124
  },
125
125
  ],
126
126
  },
@@ -1,10 +1,10 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { EpoxyCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
5
5
 
6
6
  const slug = 'calculateur-resine-epoxy';
7
- const title = 'Calculateur de Résine Époxy : Mélange et Volume Exact';
7
+ const title = 'Calculateur de Résine Époxy: Mélange et Volume Exact';
8
8
  const description =
9
9
  "Calculez la quantité exacte de résine époxy et de durcisseur nécessaire pour vos projets. Évitez les gaspillages pour les tables rivières, bijoux et moules.";
10
10
 
@@ -120,7 +120,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
120
120
  type: 'card',
121
121
  icon: 'mdi:water-percent',
122
122
  title: 'Proportions Courantes',
123
- html: "<ul><li><strong>1:1</strong> Revêtements, vernis et adhésifs rapides.</li><li><strong>2:1</strong> Standard. Tables rivières, bijoux et moules moyens.</li><li><strong>3:1</strong> Sols industriels et stratifiés structurels haute résistance.</li></ul>",
123
+ html: "<ul><li><strong>1:1</strong> - Revêtements, vernis et adhésifs rapides.</li><li><strong>2:1</strong> - Standard. Tables rivières, bijoux et moules moyens.</li><li><strong>3:1</strong> - Sols industriels et stratifiés structurels haute résistance.</li></ul>",
124
124
  },
125
125
  ],
126
126
  },
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { EpoxyCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -82,7 +82,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
82
82
  { type: 'paragraph', html: 'Perbedaan antara karya seni yang tahan lama dan kegagalan yang lengket terletak pada <strong>stoikiometri yang tepat</strong>. Kesalahan bahkan hanya 5% dalam rasio campuran dapat menghambat pengerasan secara permanen. Alat ini menghilangkan tebakan matematis, memungkinkan Anda fokus pada kreasi.' },
83
83
  { type: 'grid', columns: [
84
84
  { type: 'card', icon: 'mdi:scale-balance', title: 'Volume atau Berat?', html: '<p>Kesalahan #1 pemula adalah menganggap bahwa 100ml beratnya 100g. <strong>Resin lebih padat daripada pengeras.</strong></p><p>Jika data teknis produk Anda menyebutkan "100:50 berdasarkan berat", itu TIDAK sama dengan "2:1 berdasarkan volume". Kalkulator ini bekerja dengan <strong>Volume</strong> (V = L × W × H), yang merupakan standar untuk mengisi cetakan.</p>' },
85
- { type: 'card', icon: 'mdi:water-percent', title: 'Rasio Umum', html: '<ul><li><strong>1:1</strong> Pelapis, vernis, dan pelekat cepat.</li><li><strong>2:1</strong> Standar. Meja river, perhiasan, dan cetakan sedang.</li><li><strong>3:1</strong> Lantai industri dan laminasi struktural kekerasan tinggi.</li></ul>' },
85
+ { type: 'card', icon: 'mdi:water-percent', title: 'Rasio Umum', html: '<ul><li><strong>1:1</strong> - Pelapis, vernis, dan pelekat cepat.</li><li><strong>2:1</strong> - Standar. Meja river, perhiasan, dan cetakan sedang.</li><li><strong>3:1</strong> - Lantai industri dan laminasi struktural kekerasan tinggi.</li></ul>' },
86
86
  ]},
87
87
  { type: 'title', text: 'Protokol Keamanan dan Praktik Terbaik', level: 2 },
88
88
  { type: 'grid', columns: [
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { EpoxyCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -82,7 +82,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
82
82
  { type: 'paragraph', html: 'La differenza tra un pezzo d\'arte duraturo e un disastro appiccicoso risiede nella <strong>stechiometria esatta</strong>. Un errore di appena il 5% nel rapporto di miscela può inibire permanentemente l\'indurimento. Questo strumento elimina le congetture matematiche, permettendoti di concentrarti sulla creazione.' },
83
83
  { type: 'grid', columns: [
84
84
  { type: 'card', icon: 'mdi:scale-balance', title: 'Volume o Peso?', html: '<p>L\'errore n. 1 dei principianti è assumere che 100ml pesino 100g. <strong>La resina è più densa dell\'indurente.</strong></p><p>Se la scheda tecnica del tuo prodotto dice "100:50 in peso", NON è lo stesso di "2:1 in volume". Questo calcolatore lavora con il <strong>Volume</strong> (V = L × W × H), che è lo standard per riempire gli stampi.</p>' },
85
- { type: 'card', icon: 'mdi:water-percent', title: 'Rapporti Comuni', html: '<ul><li><strong>1:1</strong> Rivestimenti, vernici e adesivi rapidi.</li><li><strong>2:1</strong> Standard. Tavoli river, gioielleria e stampi medi.</li><li><strong>3:1</strong> Pavimenti industriali e laminati strutturali ad alta durezza.</li></ul>' },
85
+ { type: 'card', icon: 'mdi:water-percent', title: 'Rapporti Comuni', html: '<ul><li><strong>1:1</strong> - Rivestimenti, vernici e adesivi rapidi.</li><li><strong>2:1</strong> - Standard. Tavoli river, gioielleria e stampi medi.</li><li><strong>3:1</strong> - Pavimenti industriali e laminati strutturali ad alta durezza.</li></ul>' },
86
86
  ]},
87
87
  { type: 'title', text: 'Protocollo di Sicurezza e Buone Pratiche', level: 2 },
88
88
  { type: 'grid', columns: [
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { EpoxyCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -82,7 +82,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
82
82
  { type: 'paragraph', html: '耐久性のある芸術作品とベタベタの失敗作の分かれ目は、<strong>正確な化学量論</strong>にあります。混合比がわずか5%狂っただけで、完全な硬化が永続的に妨げられることがあります。このツールは数学的な推測を排除し、あなたが創造に集中できるようにします。' },
83
83
  { type: 'grid', columns: [
84
84
  { type: 'card', icon: 'mdi:scale-balance', title: '容量か重量か?', html: '<p>初心者の最大の失敗は、100mlが100gであると仮定することです。<strong>樹脂は硬化剤よりも密度が高いです。</strong></p><p>製品データシートに「重量比 100:50」とある場合、それは「容量比 2:1」と同じではありません。この計算機は、型を満たすための標準である<strong>体積(容量)</strong> (V = L × W × H) で計算します。</p>' },
85
- { type: 'card', icon: 'mdi:water-percent', title: '一般的な比率', html: '<ul><li><strong>1:1</strong> コーティング、ニス、速乾性接着剤。</li><li><strong>2:1</strong> 標準。リバーテーブル、ジュエリー、中規模の型取り。</li><li><strong>3:1</strong> 工業用床材や高硬度の構造用積層板。</li></ul>' },
85
+ { type: 'card', icon: 'mdi:water-percent', title: '一般的な比率', html: '<ul><li><strong>1:1</strong> - コーティング、ニス、速乾性接着剤。</li><li><strong>2:1</strong> - 標準。リバーテーブル、ジュエリー、中規模の型取り。</li><li><strong>3:1</strong> - 工業用床材や高硬度の構造用積層板。</li></ul>' },
86
86
  ]},
87
87
  { type: 'title', text: '安全プロトコルとベストプラクティス', level: 2 },
88
88
  { type: 'grid', columns: [
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { EpoxyCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -82,7 +82,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
82
82
  { type: 'paragraph', html: '내구성 있는 예술 작품과 끈적이는 실패작의 차이는 <strong>정확한 화학량론</strong>에 달려 있습니다. 혼합 비율이 단 5%만 틀려도 영구적으로 경화되지 않을 수 있습니다. 이 도구는 수학적 추측을 없애주어 당신이 창작에 집중할 수 있도록 돕습니다.' },
83
83
  { type: 'grid', columns: [
84
84
  { type: 'card', icon: 'mdi:scale-balance', title: '부피인가 중량인가?', html: '<p>보통 초보자들이 하는 가장 큰 실수는 100ml가 100g이라고 가정하는 것입니다. <strong>레진은 경화제보다 밀도가 높습니다.</strong></p><p>제품 데이터 시트에 "중량 기준 100:50"이라고 되어 있다면, 그것은 "부피 기준 2:1"과 같지 않습니다. 이 계산기는 몰드를 채우기 위한 표준인 <strong>부피</strong>(V = L × W × H)를 기준으로 작동합니다.</p>' },
85
- { type: 'card', icon: 'mdi:water-percent', title: '일반적인 비율', html: '<ul><li><strong>1:1</strong> 코팅, 바니시 및 속건성 접착제.</li><li><strong>2:1</strong> 표준. 리버 테이블, 주얼리 및 중간 크기 몰드.</li><li><strong>3:1</strong> 산업용 바닥 및 고경도 구조용 적층판.</li></ul>' },
85
+ { type: 'card', icon: 'mdi:water-percent', title: '일반적인 비율', html: '<ul><li><strong>1:1</strong> - 코팅, 바니시 및 속건성 접착제.</li><li><strong>2:1</strong> - 표준. 리버 테이블, 주얼리 및 중간 크기 몰드.</li><li><strong>3:1</strong> - 산업용 바닥 및 고경도 구조용 적층판.</li></ul>' },
86
86
  ]},
87
87
  { type: 'title', text: '안전 프로토콜 및 베스트 프랙티스', level: 2 },
88
88
  { type: 'grid', columns: [
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { EpoxyCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -82,7 +82,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
82
82
  { type: 'paragraph', html: 'Het verschil tussen een duurzaam kunstwerk en een plakkerige ramp ligt in de <strong>exacte stoichiometrie</strong>. Een fout van slechts 5% in de mengverhouding kan de uitharding permanent verhinderen. Deze tool elimineert de wiskundige gissingen, zodat jij je kunt concentreren op de creatie.' },
83
83
  { type: 'grid', columns: [
84
84
  { type: 'card', icon: 'mdi:scale-balance', title: 'Volume of Gewicht?', html: '<p>De #1 fout van beginners is de aanname dat 100ml 100g weegt. <strong>Hars is dichter dan de harder.</strong></p><p>Als het technisch informatieblad van je product "100:50 per gewicht" zegt, is dat NIET hetzelfde als "2:1 per volume". Deze calculator werkt met <strong>Volume</strong> (V = L × B × H), de standaard voor het vullen van mallen.</p>' },
85
- { type: 'card', icon: 'mdi:water-percent', title: 'Veelvoorkomende Verhoudingen', html: '<ul><li><strong>1:1</strong> Coatings, vernissen en snellijmen.</li><li><strong>2:1</strong> Standaard. River tabels, sieraden en middelgrote mallen.</li><li><strong>3:1</strong> Industriële vloeren und structurele laminaten van hoge hardheid.</li></ul>' },
85
+ { type: 'card', icon: 'mdi:water-percent', title: 'Veelvoorkomende Verhoudingen', html: '<ul><li><strong>1:1</strong> - Coatings, vernissen en snellijmen.</li><li><strong>2:1</strong> - Standaard. River tabels, sieraden en middelgrote mallen.</li><li><strong>3:1</strong> - Industriële vloeren und structurele laminaten van hoge hardheid.</li></ul>' },
86
86
  ]},
87
87
  { type: 'title', text: 'Veiligheidsprotocol en Best Practices', level: 2 },
88
88
  { type: 'grid', columns: [
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { EpoxyCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -82,7 +82,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
82
82
  { type: 'paragraph', html: 'Różnica między trwałym dziełem sztuki a lepką katastrofą tkwi w <strong>dokładnej stechiometrii</strong>. Błąd rzędu zaledwie 5% w proporcji mieszania może trwale uniemożliwić utwardzenie. To narzędzie eliminuje matematyczne zgadywanie, pozwalając Ci skupić się na tworzeniu.' },
83
83
  { type: 'grid', columns: [
84
84
  { type: 'card', icon: 'mdi:scale-balance', title: 'Objętość czy Waga?', html: '<p>Błąd nr 1 początkujących polega na zakładaniu, że 100 ml waży 100 g. <strong>Żywica jest gęstsza niż utwardzacz.</strong></p><p>Jeśli karta techniczna produktu podaje "100:50 wagowo", to NIE jest to samo co "2:1 objętościowo". Ten kalkulator pracuje z <strong>Objętością</strong> (V = L × W × H), która jest standardem przy napełnianiu form.</p>' },
85
- { type: 'card', icon: 'mdi:water-percent', title: 'Typowe Proporcje', html: '<ul><li><strong>1:1</strong> Powłoki, lakiery i szybkie kleje.</li><li><strong>2:1</strong> Standard. Stoły rzeczne, biżuteria i średnie odlewy.</li><li><strong>3:1</strong> Podłogi przemysłowe i laminaty strukturalne o wysokiej twardości.</li></ul>' },
85
+ { type: 'card', icon: 'mdi:water-percent', title: 'Typowe Proporcje', html: '<ul><li><strong>1:1</strong> - Powłoki, lakiery i szybkie kleje.</li><li><strong>2:1</strong> - Standard. Stoły rzeczne, biżuteria i średnie odlewy.</li><li><strong>3:1</strong> - Podłogi przemysłowe i laminaty strukturalne o wysokiej twardości.</li></ul>' },
86
86
  ]},
87
87
  { type: 'title', text: 'Protokół Bezpieczeństwa i Najlepsze Praktyki', level: 2 },
88
88
  { type: 'grid', columns: [
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { EpoxyCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -82,7 +82,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
82
82
  { type: 'paragraph', html: 'A diferença entre uma peça de arte duradoura e um desastre pegajoso reside na <strong>estequiometria exata</strong>. Um erro de apenas 5% na proporção de mistura pode inibir a cura permanentemente. Esta ferramenta elimina as suposições matemáticas, permitindo-lhe focar-se na criação.' },
83
83
  { type: 'grid', columns: [
84
84
  { type: 'card', icon: 'mdi:scale-balance', title: 'Volume ou Peso?', html: '<p>O erro nº 1 dos principiantes é assumir que 100ml pesam 100g. <strong>A resina é mais densa que o endurecedor.</strong></p><p>Se a ficha técnica do seu produto diz "100:50 por peso", NÃO é o mesmo que "2:1 por volume". Esta calculadora trabalha com <strong>Volume</strong> (V = L × W × H), que é o padrão para preencher moldes.</p>' },
85
- { type: 'card', icon: 'mdi:water-percent', title: 'Proporções Comuns', html: '<ul><li><strong>1:1</strong> Revestimentos, vernizes e adesivos rápidos.</li><li><strong>2:1</strong> Padrão. River tables, joalharia e moldes médios.</li><li><strong>3:1</strong> Pavimentos industriais e laminados estruturais de alta dureza.</li></ul>' },
85
+ { type: 'card', icon: 'mdi:water-percent', title: 'Proporções Comuns', html: '<ul><li><strong>1:1</strong> - Revestimentos, vernizes e adesivos rápidos.</li><li><strong>2:1</strong> - Padrão. River tables, joalharia e moldes médios.</li><li><strong>3:1</strong> - Pavimentos industriais e laminados estruturais de alta dureza.</li></ul>' },
86
86
  ]},
87
87
  { type: 'title', text: 'Protocolo de Segurança e Boas Práticas', level: 2 },
88
88
  { type: 'grid', columns: [
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { EpoxyCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -78,16 +78,16 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
78
78
  schemas: [faqSchema, howToSchema, appSchema],
79
79
  seo: [
80
80
  { type: 'title', text: 'Руководство по расчету и смешиванию эпоксидной смолы', level: 2 },
81
- { type: 'paragraph', html: 'Эпоксидная смола это не краска, которая сохнет за счет испарения; это сложная <strong>экзотермическая химическая реакция</strong>. Магия происходит, когда молекулы эпоксида соединяются с молекулами полиамина, образуя твердый кристаллический термореактивный полимер.' },
81
+ { type: 'paragraph', html: 'Эпоксидная смола - это не краска, которая сохнет за счет испарения; это сложная <strong>экзотермическая химическая реакция</strong>. Магия происходит, когда молекулы эпоксида соединяются с молекулами полиамина, образуя твердый кристаллический термореактивный полимер.' },
82
82
  { type: 'paragraph', html: 'Разница между долговечным произведением искусства и липким фиаско заключается в <strong>точной стехиометрии</strong>. Ошибка всего в 5% в пропорции смешивания может навсегда остановить процесс отверждения. Этот инструмент избавляет от математических догадок, позволяя вам сосредоточиться на творчестве.' },
83
83
  { type: 'grid', columns: [
84
- { type: 'card', icon: 'mdi:scale-balance', title: 'Объем или вес?', html: '<p>Ошибка №1 новичков предполагать, что 100 мл весят 100 г. <strong>Смола плотнее отвердителя.</strong></p><p>Если в техническом описании вашего продукта указано "100:50 по весу", это НЕ то же самое, что "2:1 по объему". Этот калькулятор работает с <strong>Объемом</strong> (V = L × W × H), что является стандартом для заполнения форм.</p>' },
85
- { type: 'card', icon: 'mdi:water-percent', title: 'Распространенные пропорции', html: '<ul><li><strong>1:1</strong> Покрытия, лаки и быстрые клеи.</li><li><strong>2:1</strong> Стандарт. Столы-реки, украшения и средние отливки.</li><li><strong>3:1</strong> Промышленные полы и высокопрочные конструкционные ламинаты.</li></ul>' },
84
+ { type: 'card', icon: 'mdi:scale-balance', title: 'Объем или вес?', html: '<p>Ошибка №1 новичков - предполагать, что 100 мл весят 100 г. <strong>Смола плотнее отвердителя.</strong></p><p>Если в техническом описании вашего продукта указано "100:50 по весу", это НЕ то же самое, что "2:1 по объему". Этот калькулятор работает с <strong>Объемом</strong> (V = L × W × H), что является стандартом для заполнения форм.</p>' },
85
+ { type: 'card', icon: 'mdi:water-percent', title: 'Распространенные пропорции', html: '<ul><li><strong>1:1</strong> - Покрытия, лаки и быстрые клеи.</li><li><strong>2:1</strong> - Стандарт. Столы-реки, украшения и средние отливки.</li><li><strong>3:1</strong> - Промышленные полы и высокопрочные конструкционные ламинаты.</li></ul>' },
86
86
  ]},
87
87
  { type: 'title', text: 'Протокол безопасности и лучшие практики', level: 2 },
88
88
  { type: 'grid', columns: [
89
89
  { type: 'card', icon: 'mdi:thermometer', title: 'Важность температуры', html: '<p>Всегда работайте при температуре от <strong>21°C до 25°C</strong>. Холод может остановить реакцию, сделав изделие мутным. Чрезмерное тепло опасно ускоряет экзотермическую реакцию ("вспышка").</p>' },
90
- { type: 'card', icon: 'mdi:cup-outline', title: 'Техника «двойного стакана»', html: '<p>Не полагайтесь на одно смешивание. Тщательно соскребите смолу со стенок и дна, перелейте смесь во <strong>второй чистый стакан</strong> и перемешайте снова. Это гарантирует отсутствие остатков непрореагировавшего материала.</p>' },
90
+ { type: 'card', icon: 'mdi:cup-outline', title: 'Техника "двойного стакана"', html: '<p>Не полагайтесь на одно смешивание. Тщательно соскребите смолу со стенок и дна, перелейте смесь во <strong>второй чистый стакан</strong> и перемешайте снова. Это гарантирует отсутствие остатков непрореагировавшего материала.</p>' },
91
91
  ]},
92
92
  ],
93
93
  ui: {
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { EpoxyCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -82,7 +82,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
82
82
  { type: 'paragraph', html: 'Skillnaden mellan ett hållbart konstverk och en klibbig katastrof ligger i den <strong>exakta stökiometrin</strong>. Ett fel på bara 5 % i blandningsförhållandet kan förhindra härdningen permanent. Detta verktyg eliminerar matematiska gissningar så att du kan fokusera på skapandet.' },
83
83
  { type: 'grid', columns: [
84
84
  { type: 'card', icon: 'mdi:scale-balance', title: 'Volym eller vikt?', html: '<p>Det vanligaste felet bland nybörjare är att anta att 100 ml väger 100 g. <strong>Harts är tätare än härdare.</strong></p><p>Om produkten faktablad anger "100:50 i vikt", är det INTE samma sak som "2:1 i volym". Denna kalkylator arbetar med <strong>Volym</strong> (V = L × B × D), vilket är standard för att fylla formar.</p>' },
85
- { type: 'card', icon: 'mdi:water-percent', title: 'Vanliga förhållanden', html: '<ul><li><strong>1:1</strong> Beläggningar, fernissor och snabblim.</li><li><strong>2:1</strong> Standard. River tables, smycken och medelstora gjutningar.</li><li><strong>3:1</strong> Industrigolv och höghårda strukturella laminat.</li></ul>' },
85
+ { type: 'card', icon: 'mdi:water-percent', title: 'Vanliga förhållanden', html: '<ul><li><strong>1:1</strong> - Beläggningar, fernissor och snabblim.</li><li><strong>2:1</strong> - Standard. River tables, smycken och medelstora gjutningar.</li><li><strong>3:1</strong> - Industrigolv och höghårda strukturella laminat.</li></ul>' },
86
86
  ]},
87
87
  { type: 'title', text: 'Säkerhetsprotokoll och bästa praxis', level: 2 },
88
88
  { type: 'grid', columns: [
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { EpoxyCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -82,7 +82,7 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
82
82
  { type: 'paragraph', html: 'Dayanıklı bir sanat eseri ile yapış yapış bir felaket arasındaki fark <strong>tam stokiyometride</strong> yatar. Karışım oranındaki sadece %5\'lik bir hata, kürleşmeyi kalıcı olarak engelleyebilir. Bu araç, matematiksel tahminleri ortadan kaldırarak yaratıcılığınıza odaklanmanızı sağlar.' },
83
83
  { type: 'grid', columns: [
84
84
  { type: 'card', icon: 'mdi:scale-balance', title: 'Hacim mi Ağırlık mı?', html: '<p>Yeni başlayanların 1 numaralı hatası 100ml\'nin 100g ağırlığında olduğunu varsaymaktır. <strong>Reçine sertleştiriciden daha yoğundur.</strong></p><p>Ürününüzün teknik bilgi formu "ağırlıkça 100:50" diyorsa, bu "hacimce 2:1" ile AYNI değildir. Bu hesaplayıcı, kalıpları doldurmak için standart olan <strong>Hacim</strong> (V = U × G × Y) ile çalışır.</p>' },
85
- { type: 'card', icon: 'mdi:water-percent', title: 'Yaygın Oranlar', html: '<ul><li><strong>1:1</strong> Kaplamalar, vernikler ve hızlı yapıştırıcılar.</li><li><strong>2:1</strong> Standart. Nehir masaları, takı ve orta ölçekli kalıplar.</li><li><strong>3:1</strong> Endüstriyel zeminler ve yüksek sertlikteki yapısal laminatlar.</li></ul>' },
85
+ { type: 'card', icon: 'mdi:water-percent', title: 'Yaygın Oranlar', html: '<ul><li><strong>1:1</strong> - Kaplamalar, vernikler ve hızlı yapıştırıcılar.</li><li><strong>2:1</strong> - Standart. Nehir masaları, takı ve orta ölçekli kalıplar.</li><li><strong>3:1</strong> - Endüstriyel zeminler ve yüksek sertlikteki yapısal laminatlar.</li></ul>' },
86
86
  ]},
87
87
  { type: 'title', text: 'Güvenlik Protokolü ve En İyi Uygulamalar', level: 2 },
88
88
  { type: 'grid', columns: [
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { EpoxyCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -30,7 +30,7 @@ const howToData = [
30
30
  { name: '测量模具尺寸', text: '测量您想要填充树脂区域的长度、宽度和深度(厚度)。' },
31
31
  { name: '输入混合比例', text: '查看产品标签,确定混合比例是 1:1、2:1 还是 3:1,以及是基于重量还是体积。' },
32
32
  { name: '称重组件', text: '在电子秤上的干净容器中,先倒入 A 组分(树脂),然后倒入 B 组分(固化剂)。' },
33
- { name: '技术搅拌', text: '轻轻搅拌,直到混合物完全透明,看不见不同密度的“丝线”。' },
33
+ { name: '技术搅拌', text: '轻轻搅拌,直到混合物完全透明,看不见不同密度的"丝线"。' },
34
34
  ];
35
35
 
36
36
  const faqSchema: WithContext<FAQPage> = {
@@ -81,8 +81,8 @@ export const content: ToolLocaleContent<EpoxyCalculatorUI> = {
81
81
  { type: 'paragraph', html: '环氧树脂不是靠蒸发干燥的油漆;它是一个复杂的<strong>放热化学反应</strong>。当环氧分子与多胺分子链结合形成固体结晶热固性聚合物时,魔法就发生了。' },
82
82
  { type: 'paragraph', html: '一件耐用的艺术品与一场粘糊糊的灾难之间的区别在于<strong>精确的化学计量</strong>。混合比例哪怕只有 5% 的误差,都可能永久性地抑制固化。本工具消除了数学上的猜测,让您专注于创作。' },
83
83
  { type: 'grid', columns: [
84
- { type: 'card', icon: 'mdi:scale-balance', title: '体积还是重量?', html: '<p>初学者的一号错误是假设 100ml 重 100g。<strong>树脂的密度比固化剂大。</strong></p><p>如果您的产品说明书上写着“重量比 100:50”,这与“体积比 2:1”是不同的。此计算器使用<strong>体积</strong> (V = L × W × H) 进行工作,这是填充模具的标准。</p>' },
85
- { type: 'card', icon: 'mdi:water-percent', title: '常见比例', html: '<ul><li><strong>1:1</strong> 涂层、清漆和快干胶水。</li><li><strong>2:1</strong> 标准。河流桌、首饰和中型模具。</li><li><strong>3:1</strong> 工业地面和高硬度结构层压板。</li></ul>' },
84
+ { type: 'card', icon: 'mdi:scale-balance', title: '体积还是重量?', html: '<p>初学者的一号错误是假设 100ml 重 100g。<strong>树脂的密度比固化剂大。</strong></p><p>如果您的产品说明书上写着"重量比 100:50",这与"体积比 2:1"是不同的。此计算器使用<strong>体积</strong> (V = L × W × H) 进行工作,这是填充模具的标准。</p>' },
85
+ { type: 'card', icon: 'mdi:water-percent', title: '常见比例', html: '<ul><li><strong>1:1</strong> - 涂层、清漆和快干胶水。</li><li><strong>2:1</strong> - 标准。河流桌、首饰和中型模具。</li><li><strong>3:1</strong> - 工业地面和高硬度结构层压板。</li></ul>' },
86
86
  ]},
87
87
  { type: 'title', text: '安全协议与最佳实践', level: 2 },
88
88
  { type: 'grid', columns: [
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { FurnitureFitUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -84,7 +84,7 @@ export const content: ToolLocaleContent<FurnitureFitUI> = {
84
84
  { type: 'title', text: 'Das Sofa-Problem im Flur', level: 3 },
85
85
  { type: 'card', icon: 'mdi:sofa', title: 'Manövrierspielraum', html: '<p>Ein häufiger Fehler ist die Annahme, dass das Möbelstück passt, wenn es 80 cm misst und die Öffnung ebenfalls 80 cm beträgt. Das ist nicht der Fall. Die Hände der Träger, die Elastizität des Stoffes und Unebenheiten der Wände erfordern eine Mindestmarge von <strong>2 bis 5 cm</strong>. Ohne diese Marge wird das Möbelstück zerkratzt oder verkeilt sich.</p>' },
86
86
  { type: 'title', text: '3 Fehler, die einen Umzug ruinieren', level: 3 },
87
- { type: 'paragraph', html: 'Selbst mit korrekten Maßen verursachen diese unsichtbaren Faktoren oft Katastrophen: <strong>Die Deckenlampe</strong> oft vergessen bei diagonalen Drehungen; <strong>Der Schwenkradius</strong> ein starres Möbelstück biegt sich nicht; <strong>Die Verpackung</strong> Luftpolsterfolie kann auf jeder Seite 1 bis 3 cm hinzufügen.' },
87
+ { type: 'paragraph', html: 'Selbst mit korrekten Maßen verursachen diese unsichtbaren Faktoren oft Katastrophen: <strong>Die Deckenlampe</strong> - oft vergessen bei diagonalen Drehungen; <strong>Der Schwenkradius</strong> - ein starres Möbelstück biegt sich nicht; <strong>Die Verpackung</strong> - Luftpolsterfolie kann auf jeder Seite 1 bis 3 cm hinzufügen.' },
88
88
  ],
89
89
  ui: {
90
90
  conTitle: 'Abmessungen des Raums',
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { FurnitureFitUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -97,7 +97,7 @@ export const content: ToolLocaleContent<FurnitureFitUI> = {
97
97
  { type: 'title', text: 'The Science of Moving House: Pythagorean Theorem in Practice', level: 2 },
98
98
  {
99
99
  type: 'paragraph',
100
- html: 'Moving house is not just a physical challenge it is a complex geometric puzzle. The apparent space of a room or lift deceives the human eye, especially when we ignore the third dimension. Applied mathematics can save you hundreds of pounds in returns and failed deliveries.',
100
+ html: 'Moving house is not just a physical challenge - it is a complex geometric puzzle. The apparent space of a room or lift deceives the human eye, especially when we ignore the third dimension. Applied mathematics can save you hundreds of pounds in returns and failed deliveries.',
101
101
  },
102
102
  { type: 'title', text: 'The 3D Diagonal Trick', level: 3 },
103
103
  {
@@ -117,12 +117,12 @@ export const content: ToolLocaleContent<FurnitureFitUI> = {
117
117
  type: 'card',
118
118
  icon: 'mdi:tools',
119
119
  title: 'Disassemble to Win',
120
- html: '<p>Before giving up because a piece does not fit, check the legs. Removing sofa legs often reduces the critical height by 10 to 15cm the difference between success and leaving it in the lobby. Fridge doors and wardrobe handles also add critical centimetres.</p>',
120
+ html: '<p>Before giving up because a piece does not fit, check the legs. Removing sofa legs often reduces the critical height by 10 to 15cm - the difference between success and leaving it in the lobby. Fridge doors and wardrobe handles also add critical centimetres.</p>',
121
121
  },
122
122
  { type: 'title', text: '3 Mistakes That Ruin Every Move', level: 3 },
123
123
  {
124
124
  type: 'paragraph',
125
- html: 'Even with correct measurements, these invisible factors cause disasters: <strong>The Ceiling Light</strong> forgotten during the diagonal tilt, it can be hit and smashed. <strong>Furniture Turning Radius</strong> a rigid piece does not bend; even if it fits width-wise in a narrow corridor, it cannot complete the corner turn. <strong>Packaging</strong> bubble wrap and cardboard protection can add 1 to 3 cm on every side.',
125
+ html: 'Even with correct measurements, these invisible factors cause disasters: <strong>The Ceiling Light</strong> - forgotten during the diagonal tilt, it can be hit and smashed. <strong>Furniture Turning Radius</strong> - a rigid piece does not bend; even if it fits width-wise in a narrow corridor, it cannot complete the corner turn. <strong>Packaging</strong> - bubble wrap and cardboard protection can add 1 to 3 cm on every side.',
126
126
  },
127
127
  ],
128
128
  ui: {
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { FurnitureFitUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -122,7 +122,7 @@ export const content: ToolLocaleContent<FurnitureFitUI> = {
122
122
  { type: 'title', text: 'Los 3 Errores que Arruinan una Mudanza', level: 3 },
123
123
  {
124
124
  type: 'paragraph',
125
- html: 'Incluso con medidas correctas, estos factores invisibles suelen causar desastres: <strong>La Lámpara del Techo</strong> olvidada durante el giro diagonal, puede ser golpeada y destruida. <strong>El Radio de Giro del Mueble</strong> un mueble rígido no se dobla; si el pasillo es estrecho y el mueble largo, aunque quepa de ancho, no podrá realizar el giro de esquina. <strong>El Embalaje</strong> el papel burbuja y el cartón protector pueden añadir de 1 a 3 cm a cada lado.',
125
+ html: 'Incluso con medidas correctas, estos factores invisibles suelen causar desastres: <strong>La Lámpara del Techo</strong> - olvidada durante el giro diagonal, puede ser golpeada y destruida. <strong>El Radio de Giro del Mueble</strong> - un mueble rígido no se dobla; si el pasillo es estrecho y el mueble largo, aunque quepa de ancho, no podrá realizar el giro de esquina. <strong>El Embalaje</strong> - el papel burbuja y el cartón protector pueden añadir de 1 a 3 cm a cada lado.',
126
126
  },
127
127
  ],
128
128
  ui: {
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { FurnitureFitUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -97,7 +97,7 @@ export const content: ToolLocaleContent<FurnitureFitUI> = {
97
97
  { type: 'title', text: 'La Science du Déménagement et le Théorème de Pythagore', level: 2 },
98
98
  {
99
99
  type: 'paragraph',
100
- html: 'Un déménagement n\'est pas seulement une épreuve physique c\'est un puzzle géométrique complexe. L\'espace apparent d\'une pièce ou d\'un ascenseur trompe l\'œil humain, surtout lorsqu\'on ignore la troisième dimension. Les mathématiques peuvent vous faire économiser des centaines d\'euros en retours et transports ratés.',
100
+ html: 'Un déménagement n\'est pas seulement une épreuve physique - c\'est un puzzle géométrique complexe. L\'espace apparent d\'une pièce ou d\'un ascenseur trompe l\'œil humain, surtout lorsqu\'on ignore la troisième dimension. Les mathématiques peuvent vous faire économiser des centaines d\'euros en retours et transports ratés.',
101
101
  },
102
102
  { type: 'title', text: 'L\'Astuce de la Diagonale 3D', level: 3 },
103
103
  {
@@ -122,7 +122,7 @@ export const content: ToolLocaleContent<FurnitureFitUI> = {
122
122
  { type: 'title', text: '3 Erreurs Fatales lors d\'un Déménagement', level: 3 },
123
123
  {
124
124
  type: 'paragraph',
125
- html: 'Même avec des mesures correctes, ces facteurs invisibles provoquent des catastrophes: <strong>Le Luminaire au Plafond</strong> oublié pendant l\'inclinaison diagonale, il peut être heurté et brisé. <strong>Le Rayon de Giration du Meuble</strong> un meuble rigide ne se plie pas; même s\'il passe en largeur dans un couloir étroit, il ne pourra pas effectuer le virage. <strong>L\'Emballage</strong> le papier bulle et le carton de protection peuvent ajouter 1 à 3 cm de chaque côté.',
125
+ html: 'Même avec des mesures correctes, ces facteurs invisibles provoquent des catastrophes: <strong>Le Luminaire au Plafond</strong> - oublié pendant l\'inclinaison diagonale, il peut être heurté et brisé. <strong>Le Rayon de Giration du Meuble</strong> - un meuble rigide ne se plie pas; même s\'il passe en largeur dans un couloir étroit, il ne pourra pas effectuer le virage. <strong>L\'Emballage</strong> - le papier bulle et le carton de protection peuvent ajouter 1 à 3 cm de chaque côté.',
126
126
  },
127
127
  ],
128
128
  ui: {
@@ -1,4 +1,4 @@
1
- import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
2
  import type { ToolLocaleContent } from '../../../types';
3
3
  import type { FurnitureFitUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -84,7 +84,7 @@ export const content: ToolLocaleContent<FurnitureFitUI> = {
84
84
  { type: 'title', text: 'Masalah Sofa di Lorong', level: 3 },
85
85
  { type: 'card', icon: 'mdi:sofa', title: 'Margin Manuver', html: '<p>Kesalahan umum adalah mengasumsikan jika furnitur berukuran 80cm dan celahnya 80cm, maka akan muat. Tidak seperti itu. Tangan pengangkut, elastisitas kain, dan ketidaksempurnaan dinding memerlukan margin minimal <strong>2 hingga 5 cm</strong>. Tanpa margin ini, furnitur akan tergores atau terjepit karena tekanan.</p>' },
86
86
  { type: 'title', text: '3 Kesalahan yang Merusak Pindahan', level: 3 },
87
- { type: 'paragraph', html: 'Meskipun dengan ukuran yang benar, faktor tak kasat mata ini sering menyebabkan bencana: <strong>Lampu Langit-langit</strong> terlupakan saat pemutaran diagonal; <strong>Radius Putar Furnitur</strong> furnitur yang kaku tidak bisa ditekuk; <strong>Kemasan</strong> bubble wrap dan kardus pelindung dapat menambah 1 hingga 3 cm di setiap sisi.' },
87
+ { type: 'paragraph', html: 'Meskipun dengan ukuran yang benar, faktor tak kasat mata ini sering menyebabkan bencana: <strong>Lampu Langit-langit</strong> - terlupakan saat pemutaran diagonal; <strong>Radius Putar Furnitur</strong> - furnitur yang kaku tidak bisa ditekuk; <strong>Kemasan</strong> - bubble wrap dan kardus pelindung dapat menambah 1 hingga 3 cm di setiap sisi.' },
88
88
  ],
89
89
  ui: {
90
90
  conTitle: 'Dimensi Ruang',