@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 { BalusterCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -22,23 +22,23 @@ const faqData = [
22
22
  {
23
23
  question: 'Cosa succede se la ripartizione non è esatta?',
24
24
  answer:
25
- 'La calcolatrice regola automaticamente il numero di aste in modo che il primo e lultimo vuoto siano identici, garantendo la simmetria visiva e il rispetto rigoroso del vuoto massimo consentito.',
25
+ 'La calcolatrice regola automaticamente il numero di aste in modo che il primo e l\'ultimo vuoto siano identici, garantendo la simmetria visiva e il rispetto rigoroso del vuoto massimo consentito.',
26
26
  },
27
27
  {
28
28
  question: 'È meglio saldare o avvitare le balaustre?',
29
29
  answer:
30
- 'Dipende dal materiale. Per lacciaio, la saldatura offre la massima rigidità strutturale. Per il legno o lalluminio, si usano ancoraggi meccanici o viti passanti. Limportante è che la ringhiera sopporti una forza orizzontale di almeno 0,8 kN/m.',
30
+ 'Dipende dal materiale. Per l\'acciaio, la saldatura offre la massima rigidità strutturale. Per il legno o l\'alluminio, si usano ancoraggi meccanici o viti passanti. L\'importante è che la ringhiera sopporti una forza orizzontale di almeno 0,8 kN/m.',
31
31
  },
32
32
  ];
33
33
 
34
34
  const howToData = [
35
35
  {
36
36
  name: 'Misurare la lunghezza totale',
37
- text: 'Misura la distanza esatta tra il primo e lultimo palo dove verrà installata la ringhiera.',
37
+ text: 'Misura la distanza esatta tra il primo e l\'ultimo palo dove verrà installata la ringhiera.',
38
38
  },
39
39
  {
40
40
  name: 'Definire lo spessore della balaustra',
41
- text: 'Misura la larghezza di unasta individuale (es. 2x2 cm per tubo quadrato o il diametro se è tondo).',
41
+ text: 'Misura la larghezza di un\'asta individuale (es. 2x2 cm per tubo quadrato o il diametro se è tondo).',
42
42
  },
43
43
  {
44
44
  name: 'Stabilire il vuoto massimo',
@@ -101,7 +101,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
101
101
  },
102
102
  {
103
103
  type: 'paragraph',
104
- html: 'Progettare una ringhiera sicura ed esteticamente perfetta è unarte che combina la precisione matematica con le normative edilizie. Che sia per una terrazza, un balcone o una scala interna, il calcolo corretto delle balaustre (o aste) è il passo più critico del progetto. Un errore di calcolo non solo rovina la simmetria visiva, ma può rendere la tua struttura illegale e insicura.',
104
+ html: 'Progettare una ringhiera sicura ed esteticamente perfetta è un\'arte che combina la precisione matematica con le normative edilizie. Che sia per una terrazza, un balcone o una scala interna, il calcolo corretto delle balaustre (o aste) è il passo più critico del progetto. Un errore di calcolo non solo rovina la simmetria visiva, ma può rendere la tua struttura illegale e insicura.',
105
105
  },
106
106
  {
107
107
  type: 'card',
@@ -120,16 +120,16 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
120
120
  },
121
121
  {
122
122
  type: 'paragraph',
123
- html: 'Questa misura non è arbitraria. È il diametro medio della testa di un bambino piccolo (generalmente sotto lanno di età). Se un bambino riesce a passare il corpo ma la testa rimane incastrata, il rischio di soffocamento è altissimo. Se riesce a passare la testa, può cadere nel vuoto. Pertanto, lobiettivo della nostra <strong>Calcolatrice per Balaustre</strong> non è solo estetico, è salvare vite.',
123
+ html: 'Questa misura non è arbitraria. È il diametro medio della testa di un bambino piccolo (generalmente sotto l\'anno di età). Se un bambino riesce a passare il corpo ma la testa rimane incastrata, il rischio di soffocamento è altissimo. Se riesce a passare la testa, può cadere nel vuoto. Pertanto, l\'obiettivo della nostra <strong>Calcolatrice per Balaustre</strong> non è solo estetico, è salvare vite.',
124
124
  },
125
125
  {
126
126
  type: 'title',
127
- text: '2. Il Problema Matematico: LErrore del Palo della Recinzione',
127
+ text: '2. Il Problema Matematico: L\'Errore del Palo della Recinzione',
128
128
  level: 3,
129
129
  },
130
130
  {
131
131
  type: 'paragraph',
132
- html: 'Nella programmazione e nelledilizia, esiste un problema classico chiamato <em>"Fencepost Error"</em> (Errore del Palo della Recinzione). Se vuoi costruire una recinzione di 10 metri con pali ogni metro, di quanti pali hai bisogno? La risposta intuitiva è 10, ma quella corretta è 11.',
132
+ html: 'Nella programmazione e nell\'edilizia, esiste un problema classico chiamato <em>"Fencepost Error"</em> (Errore del Palo della Recinzione). Se vuoi costruire una recinzione di 10 metri con pali ogni metro, di quanti pali hai bisogno? La risposta intuitiva è 10, ma quella corretta è 11.',
133
133
  },
134
134
  {
135
135
  type: 'paragraph',
@@ -154,7 +154,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
154
154
  },
155
155
  {
156
156
  type: 'title',
157
- text: '3. Guida Passo-Passo per unInstallazione Perfetta',
157
+ text: '3. Guida Passo-Passo per un\'Installazione Perfetta',
158
158
  level: 3,
159
159
  },
160
160
  {
@@ -177,7 +177,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
177
177
  },
178
178
  {
179
179
  type: 'paragraph',
180
- html: 'Lerrore numero uno dei principianti è iniziare a posizionare le balaustre da unestremità allaltra. Questo si traduce quasi sempre in un ultimo vuoto di dimensioni insolite, rompendo larmonia visiva.<ul><li>Segna il <strong>centro esatto</strong> della ringhiera (L / 2).</li><li>Decidi se al centro vuoi una <em>balaustra</em> o un <em>vuoto</em>.</li><li>Se vuoi una balaustra al centro: segna metà della larghezza della balaustra su ogni lato del tuo segno centrale.</li><li>Se vuoi un vuoto al centro: segna metà della distanza del vuoto (g / 2) su ogni lato.</li></ul>',
180
+ html: 'L\'errore numero uno dei principianti è iniziare a posizionare le balaustre da un\'estremità all\'altra. Questo si traduce quasi sempre in un ultimo vuoto di dimensioni insolite, rompendo l\'armonia visiva.<ul><li>Segna il <strong>centro esatto</strong> della ringhiera (L / 2).</li><li>Decidi se al centro vuoi una <em>balaustra</em> o un <em>vuoto</em>.</li><li>Se vuoi una balaustra al centro: segna metà della larghezza della balaustra su ogni lato del tuo segno centrale.</li><li>Se vuoi un vuoto al centro: segna metà della distanza del vuoto (g / 2) su ogni lato.</li></ul>',
181
181
  },
182
182
  {
183
183
  type: 'title',
@@ -186,7 +186,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
186
186
  },
187
187
  {
188
188
  type: 'paragraph',
189
- html: 'Non usare il metro per ogni balaustra. Lerrore umano cumulativo farà sì che lultima balaustra sia spostata di diversi centimetri. La cosa professionale è tagliare un blocco di legno (o due) con la misura esatta del vuoto (g) fornita dalla nostra calcolatrice.',
189
+ html: 'Non usare il metro per ogni balaustra. L\'errore umano cumulativo farà sì che l\'ultima balaustra sia spostata di diversi centimetri. La cosa professionale è tagliare un blocco di legno (o due) con la misura esatta del vuoto (g) fornita dalla nostra calcolatrice.',
190
190
  },
191
191
  {
192
192
  type: 'paragraph',
@@ -211,26 +211,26 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
211
211
  {
212
212
  type: 'card',
213
213
  icon: 'mdi:help-circle-outline',
214
- title: 'Cosa succede se lultimo vuoto non combacia?',
214
+ title: 'Cosa succede se l\'ultimo vuoto non combacia?',
215
215
  html: '<p>Se hai usato la nostra calcolatrice, questo non dovrebbe accadere. Tuttavia, nella realtà, il legno si curva e i pali non sono sempre dritti. Se arrivando alla fine ti avanzano o mancano 1-2 mm, è impercettibile. Se ti manca 1 cm, controlla i tuoi blocchi distanziatori, probabilmente hai accumulato millimetri in ogni passaggio.</p>',
216
216
  },
217
217
  {
218
218
  type: 'card',
219
219
  icon: 'mdi:shield-check-outline',
220
220
  title: 'Posso mettere le balaustre più separate se non ho bambini?',
221
- html: '<p>Legalmente, no. Il codice edilizio si applica allabitazione, non agli abitanti attuali. Se un giorno dovessi vendere casa, una ringhiera non a norma sarà un problema durante lispezione. Inoltre, i visitatori (nipoti, nipoti) potrebbero essere in pericolo.</p>',
221
+ html: '<p>Legalmente, no. Il codice edilizio si applica all\'abitazione, non agli abitanti attuali. Se un giorno dovessi vendere casa, una ringhiera non a norma sarà un problema durante l\'ispezione. Inoltre, i visitatori (nipoti, nipoti) potrebbero essere in pericolo.</p>',
222
222
  },
223
223
  {
224
224
  type: 'card',
225
225
  icon: 'mdi:wrench-outline',
226
226
  title: 'Legno, Metallo o Vetro?',
227
- html: '<p>Questa calcolatrice funziona per <strong>qualsiasi elemento verticale ripetitivo</strong>. Se usi cavi dacciaio orizzontali, la normativa è diversa (normalmente non devono consentire la scalata, "effetto scala"). Per il vetro, è considerato un pannello continuo e non si applica la spaziatura, ma la resistenza allimpatto.</p>',
227
+ html: '<p>Questa calcolatrice funziona per <strong>qualsiasi elemento verticale ripetitivo</strong>. Se usi cavi d\'acciaio orizzontali, la normativa è diversa (normalmente non devono consentire la scalata, "effetto scala"). Per il vetro, è considerato un pannello continuo e non si applica la spaziatura, ma la resistenza all\'impatto.</p>',
228
228
  },
229
229
  {
230
230
  type: 'card',
231
231
  icon: 'mdi:format-quote-close',
232
232
  title: 'Mies van der Rohe',
233
- html: '<p><em>"Larchitettura è la volontà dellepoca tradotta in spazio."</em></p><p>Ci auguriamo che questo strumento ti aiuti a costruire spazi più sicuri e belli. Ricorda sempre di consultare il codice edilizio locale del tuo comune, poiché potrebbero esserci variazioni specifiche sullaltezza minima (generalmente 90-110 cm) o sui carichi di forza.</p>',
233
+ html: '<p><em>"L\'architettura è la volontà dell\'epoca tradotta in spazio."</em></p><p>Ci auguriamo che questo strumento ti aiuti a costruire spazi più sicuri e belli. Ricorda sempre di consultare il codice edilizio locale del tuo comune, poiché potrebbero esserci variazioni specifiche sull\'altezza minima (generalmente 90-110 cm) o sui carichi di forza.</p>',
234
234
  },
235
235
  ],
236
236
  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 { BalusterCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -17,7 +17,7 @@ const faqData = [
17
17
  {
18
18
  question: 'Как измеряется расстояние: между центрами или просветами?',
19
19
  answer:
20
- "Наш калькулятор предоставляет оба варианта. 'Свободный просвет' это реальный зазор между стойками (важно для безопасности), в то время как 'расстояние между центрами' (on-center) указывает, где сверлить или крепить каждую балясину.",
20
+ "Наш калькулятор предоставляет оба варианта. 'Свободный просвет' - это реальный зазор между стойками (важно для безопасности), в то время как 'расстояние между центрами' (on-center) указывает, где сверлить или крепить каждую балясину.",
21
21
  },
22
22
  {
23
23
  question: 'Что делать, если распределение получается неточным?',
@@ -101,13 +101,13 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
101
101
  },
102
102
  {
103
103
  type: 'paragraph',
104
- html: 'Проектирование безопасного и эстетически безупречного ограждения это искусство, сочетающее математическую точность со строительными нормами. Будь то терраса, балкон или внутренняя лестница, правильный расчет балясин (или стоек) самый важный этап проекта. Ошибка в расчетах не только портит визуальную симметрию, но и может сделать вашу конструкцию незаконной и небезопасной.',
104
+ html: 'Проектирование безопасного и эстетически безупречного ограждения - это искусство, сочетающее математическую точность со строительными нормами. Будь то терраса, балкон или внутренняя лестница, правильный расчет балясин (или стоек) - самый важный этап проекта. Ошибка в расчетах не только портит визуальную симметрию, но и может сделать вашу конструкцию незаконной и небезопасной.',
105
105
  },
106
106
  {
107
107
  type: 'card',
108
108
  icon: 'mdi:alert-circle-outline',
109
109
  title: 'Почему этот расчет так важен?',
110
- html: '<p>Речь идет не просто о том, чтобы «заполнить пустоту». Речь идет о соблюдении <strong>Правила 4-дюймовой сферы (10 см)</strong> международного стандарта безопасности, разработанного для предотвращения несчастных случаев с детьми.</p>',
110
+ html: '<p>Речь идет не просто о том, чтобы "заполнить пустоту". Речь идет о соблюдении <strong>Правила 4-дюймовой сферы (10 см)</strong> - международного стандарта безопасности, разработанного для предотвращения несчастных случаев с детьми.</p>',
111
111
  },
112
112
  {
113
113
  type: 'title',
@@ -116,7 +116,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
116
116
  },
117
117
  {
118
118
  type: 'paragraph',
119
- html: 'Прежде чем отрезать первый кусок дерева или металла, вы должны понять «почему» стоит за математикой. Строительные нормы во многих странах, а также IRC (International Residential Code) в США, устанавливают четкий стандарт: <em>«Свободное пространство между вертикальными элементами не должно позволять проходить сфере диаметром 10 см (4 дюйма)».</em>',
119
+ html: 'Прежде чем отрезать первый кусок дерева или металла, вы должны понять "почему" стоит за математикой. Строительные нормы во многих странах, а также IRC (International Residential Code) в США, устанавливают четкий стандарт: <em>"Свободное пространство между вертикальными элементами не должно позволять проходить сфере диаметром 10 см (4 дюйма)".</em>',
120
120
  },
121
121
  {
122
122
  type: 'paragraph',
@@ -124,12 +124,12 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
124
124
  },
125
125
  {
126
126
  type: 'title',
127
- text: '2. Математическая проблема: Ошибка «лишнего столба»',
127
+ text: '2. Математическая проблема: Ошибка "лишнего столба"',
128
128
  level: 3,
129
129
  },
130
130
  {
131
131
  type: 'paragraph',
132
- html: 'В программировании и строительстве существует классическая проблема, называемая <emFencepost Error»</em> (ошибка лишнего столба). Если вы хотите построить 10-метровый забор со столбами через каждый метр, сколько столбов вам понадобится? Интуитивный ответ 10, но правильный 11.',
132
+ html: 'В программировании и строительстве существует классическая проблема, называемая <em>"Fencepost Error"</em> (ошибка лишнего столба). Если вы хотите построить 10-метровый забор со столбами через каждый метр, сколько столбов вам понадобится? Интуитивный ответ - 10, но правильный - 11.',
133
133
  },
134
134
  {
135
135
  type: 'paragraph',
@@ -148,7 +148,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
148
148
  type: 'card',
149
149
  icon: 'mdi:function-variant',
150
150
  title: 'Шаг Б: Пересчет точного расстояния',
151
- html: '<p class="bc-formula">g = (L - n × w) / (n + 1)</p><p>Как только мы узнаем точное количество балясин (n), мы вычисляем, сколько места «остается», если вычесть ширину всего материала, и делим его поровну между зазорами (n+1).</p>',
151
+ html: '<p class="bc-formula">g = (L - n × w) / (n + 1)</p><p>Как только мы узнаем точное количество балясин (n), мы вычисляем, сколько места "остается", если вычесть ширину всего материала, и делим его поровну между зазорами (n+1).</p>',
152
152
  },
153
153
  ],
154
154
  },
@@ -159,7 +159,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
159
159
  },
160
160
  {
161
161
  type: 'paragraph',
162
- html: 'Получить цифры это только половина дела. Здесь мы объясним, как перенести эти данные с бумаги (или экрана) в реальность вашей стройки.',
162
+ html: 'Получить цифры - это только половина дела. Здесь мы объясним, как перенести эти данные с бумаги (или экрана) в реальность вашей стройки.',
163
163
  },
164
164
  {
165
165
  type: 'title',
@@ -177,7 +177,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
177
177
  },
178
178
  {
179
179
  type: 'paragraph',
180
- html: 'Ошибка новичка номер один начинать расстановку балясин от одного края к другому. Это почти всегда приводит к тому, что последний зазор получается странного размера, нарушая визуальную гармонию.<ul><li>Отметьте <strong>точный центр</strong> ограждения (L / 2).</li><li>Решите, хотите ли вы, чтобы в центре была <em>балясина</em> или <em>зазор</em>.</li><li>Если вы хотите балясину в центре: отметьте половину ширины балясины с каждой стороны от вашей центральной метки.</li><li>Если вы хотите зазор в центре: отметьте половину расстояния зазора (g / 2) с каждой стороны.</li></ul>',
180
+ html: 'Ошибка новичка номер один - начинать расстановку балясин от одного края к другому. Это почти всегда приводит к тому, что последний зазор получается странного размера, нарушая визуальную гармонию.<ul><li>Отметьте <strong>точный центр</strong> ограждения (L / 2).</li><li>Решите, хотите ли вы, чтобы в центре была <em>балясина</em> или <em>зазор</em>.</li><li>Если вы хотите балясину в центре: отметьте половину ширины балясины с каждой стороны от вашей центральной метки.</li><li>Если вы хотите зазор в центре: отметьте половину расстояния зазора (g / 2) с каждой стороны.</li></ul>',
181
181
  },
182
182
  {
183
183
  type: 'title',
@@ -186,7 +186,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
186
186
  },
187
187
  {
188
188
  type: 'paragraph',
189
- html: 'Не используйте рулетку для каждой балясины. Накопленная человеческая ошибка приведет к тому, что последняя балясина отклонится на несколько сантиметров. Профессиональный подход отрезать деревянный брусок (или два) с точным размером зазора (g), который выдал наш калькулятор.',
189
+ html: 'Не используйте рулетку для каждой балясины. Накопленная человеческая ошибка приведет к тому, что последняя балясина отклонится на несколько сантиметров. Профессиональный подход - отрезать деревянный брусок (или два) с точным размером зазора (g), который выдал наш калькулятор.',
190
190
  },
191
191
  {
192
192
  type: 'paragraph',
@@ -218,19 +218,19 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
218
218
  type: 'card',
219
219
  icon: 'mdi:shield-check-outline',
220
220
  title: 'Можно ли ставить балясины реже, если у меня нет детей?',
221
- html: '<p>Юридически нет. Строительные нормы применяются к жилью, а не к текущим жильцам. Если вы когда-нибудь решите продать дом, ограждение не по нормативам станет проблемой при проверке. Кроме того, гости (племянники, внуки) могут быть в опасности.</p>',
221
+ html: '<p>Юридически - нет. Строительные нормы применяются к жилью, а не к текущим жильцам. Если вы когда-нибудь решите продать дом, ограждение не по нормативам станет проблемой при проверке. Кроме того, гости (племянники, внуки) могут быть в опасности.</p>',
222
222
  },
223
223
  {
224
224
  type: 'card',
225
225
  icon: 'mdi:wrench-outline',
226
226
  title: 'Дерево, металл или стекло?',
227
- html: '<p>Этот калькулятор работает для <strong>любого повторяющегося вертикального элемента</strong>. Если вы используете горизонтальные тросы, нормы другие (обычно они не должны позволять карабкаться по ним, «эффект лестницы»). Для стекла оно считается сплошной панелью, и здесь применяется не расстояние между элементами, а ударопрочность.</p>',
227
+ html: '<p>Этот калькулятор работает для <strong>любого повторяющегося вертикального элемента</strong>. Если вы используете горизонтальные тросы, нормы другие (обычно они не должны позволять карабкаться по ним, "эффект лестницы"). Для стекла оно считается сплошной панелью, и здесь применяется не расстояние между элементами, а ударопрочность.</p>',
228
228
  },
229
229
  {
230
230
  type: 'card',
231
231
  icon: 'mdi:format-quote-close',
232
232
  title: 'Мис ван дер Роэ',
233
- html: '<p><em>«Архитектура это воля эпохи, переведенная в пространство».</em></p><p>Мы надеемся, что этот инструмент поможет вам создавать более безопасные и красивые пространства. Всегда не забывайте сверяться с местными строительными нормами вашего муниципалитета, так как могут существовать специфические требования к минимальной высоте (обычно 90-110 см) или нагрузочным характеристикам.</p>',
233
+ html: '<p><em>"Архитектура - это воля эпохи, переведенная в пространство".</em></p><p>Мы надеемся, что этот инструмент поможет вам создавать более безопасные и красивые пространства. Всегда не забывайте сверяться с местными строительными нормами вашего муниципалитета, так как могут существовать специфические требования к минимальной высоте (обычно 90-110 см) или нагрузочным характеристикам.</p>',
234
234
  },
235
235
  ],
236
236
  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 { BalusterCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -116,7 +116,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
116
116
  },
117
117
  {
118
118
  type: 'paragraph',
119
- html: 'İlk ahşap veya metal parçasını kesmeden önce, matematiğin arkasındaki "neden"i anlamalısınız. Birçok ülkedeki yapı kodları ve ABDdeki IRC (Uluslararası Konut Kodu) net bir standart belirler: <em>"Dikey elemanlar arasındaki net boşluk, 10 cm (4 inç) çapındaki bir kürenin geçmesine izin vermemelidir."</em>',
119
+ html: 'İlk ahşap veya metal parçasını kesmeden önce, matematiğin arkasındaki "neden"i anlamalısınız. Birçok ülkedeki yapı kodları ve ABD\'deki IRC (Uluslararası Konut Kodu) net bir standart belirler: <em>"Dikey elemanlar arasındaki net boşluk, 10 cm (4 inç) çapındaki bir kürenin geçmesine izin vermemelidir."</em>',
120
120
  },
121
121
  {
122
122
  type: 'paragraph',
@@ -129,7 +129,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
129
129
  },
130
130
  {
131
131
  type: 'paragraph',
132
- html: 'Programlamada ve inşaatta, <em>"Fencepost Error"</em> (Direk Hatası) olarak adlandırılan klasik bir problem vardır. Her metrede bir direk olacak şekilde 10 metrelik bir çit inşa etmek istiyorsanız, kaç direğe ihtiyacınız olur? Sezgisel cevap 10dur, ancak doğru cevap 11dir.',
132
+ html: 'Programlamada ve inşaatta, <em>"Fencepost Error"</em> (Direk Hatası) olarak adlandırılan klasik bir problem vardır. Her metrede bir direk olacak şekilde 10 metrelik bir çit inşa etmek istiyorsanız, kaç direğe ihtiyacınız olur? Sezgisel cevap 10\'dur, ancak doğru cevap 11\'dir.',
133
133
  },
134
134
  {
135
135
  type: 'paragraph',
@@ -168,7 +168,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
168
168
  },
169
169
  {
170
170
  type: 'paragraph',
171
- html: 'Direkten direğe <strong>iç</strong> mesafeyi ölçün. Direğin merkezinden ölçmeyin. Dolduracağınız tam boşluk alanını (L) bilmeniz gerekir. Korkuluğunuzun birkaç bölümü varsa, her birini ayrı ayrı ölçün; yapılar nadiren tam olarak kare şeklindedir ve 0,5 cmlik bir hata simetriyi bozabilir.',
171
+ html: 'Direkten direğe <strong>iç</strong> mesafeyi ölçün. Direğin merkezinden ölçmeyin. Dolduracağınız tam boşluk alanını (L) bilmeniz gerekir. Korkuluğunuzun birkaç bölümü varsa, her birini ayrı ayrı ölçün; yapılar nadiren tam olarak kare şeklindedir ve 0,5 cm\'lik bir hata simetriyi bozabilir.',
172
172
  },
173
173
  {
174
174
  type: 'title',
@@ -212,7 +212,7 @@ export const content: ToolLocaleContent<BalusterCalculatorUI> = {
212
212
  type: 'card',
213
213
  icon: 'mdi:help-circle-outline',
214
214
  title: 'Ya son boşluk uymazsa?',
215
- html: '<p>Hesaplayıcımızı kullandıysanız, bu durumun olmaması gerekir. Ancak gerçek dünyada ahşap bükülür ve direkler her zaman düz değildir. Sona ulaştığınızda 1-2 mmlik bir fazlalık veya eksiklik fark edilmez. 1 cm eksikse, ara parça bloklarınızı kontrol edin; muhtemelen her adımda birkaç mm kaybetmişsinizdir.</p>',
215
+ html: '<p>Hesaplayıcımızı kullandıysanız, bu durumun olmaması gerekir. Ancak gerçek dünyada ahşap bükülür ve direkler her zaman düz değildir. Sona ulaştığınızda 1-2 mm\'lik bir fazlalık veya eksiklik fark edilmez. 1 cm eksikse, ara parça bloklarınızı kontrol edin; muhtemelen her adımda birkaç mm kaybetmişsinizdir.</p>',
216
216
  },
217
217
  {
218
218
  type: 'card',
@@ -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 { ClayCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
5
5
 
6
6
  const slug = 'calculateur-retrait-argile';
7
- const title = "Calculateur de Retrait d'Argile : Dimensions Exactes pour la Céramique";
7
+ const title = "Calculateur de Retrait d'Argile: Dimensions Exactes pour la Céramique";
8
8
  const description =
9
9
  "Calculez le retrait de l'argile pendant le séchage et la cuisson. Concevez des pièces céramiques avec les dimensions finales exactes dont vous avez besoin.";
10
10
 
@@ -96,7 +96,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
96
96
  seo: [
97
97
  {
98
98
  type: 'title',
99
- text: "La Physique de l'Argile : Retrait et Expansion",
99
+ text: "La Physique de l'Argile: Retrait et Expansion",
100
100
  level: 2,
101
101
  },
102
102
  {
@@ -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 { ClayCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -101,7 +101,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
101
101
  },
102
102
  {
103
103
  type: 'paragraph',
104
- html: 'Глина это живой материал, который меняет свои размеры на протяжении всего керамического процесса. С момента, когда вы формуете влажное изделие, и до его выхода из печи, оно может потерять от 8% до 15% своего первоначального размера. Расчет этой усадки имеет основополагающее значение для создания изделий с именно теми размерами, которые вам необходимы.',
104
+ html: 'Глина - это живой материал, который меняет свои размеры на протяжении всего керамического процесса. С момента, когда вы формуете влажное изделие, и до его выхода из печи, оно может потерять от 8% до 15% своего первоначального размера. Расчет этой усадки имеет основополагающее значение для создания изделий с именно теми размерами, которые вам необходимы.',
105
105
  },
106
106
  {
107
107
  type: 'grid',
@@ -109,7 +109,7 @@ export const content: ToolLocaleContent<ClayCalculatorUI> = {
109
109
  {
110
110
  type: 'card',
111
111
  title: 'Фазы усадки',
112
- html: '<p><strong>1. Сушка (влажное → сухое):</strong> Теряя воду, частицы глины сближаются. Это самая большая усадка (4-8%). Толстостенные изделия могут треснуть, если сохнут слишком быстро.</p><p><strong>2. Обжиг (сухое → бисквит):</strong> При 900-1000°C в глине происходят необратимые химические изменения. Дополнительная усадка 2-4%. Изделие становится пористым, но прочным.</p><p><strong>3. Витрификация (высокая температура):</strong> При 1200-1300°C глина спекается (стеклуется). Финальная усадка 1-3%. Каменная масса и фарфор достигают своей максимальной плотности.</p>',
112
+ html: '<p><strong>1. Сушка (влажное → сухое):</strong> Теряя воду, частицы глины сближаются. Это самая большая усадка (4-8%). Толстостенные изделия могут треснуть, если сохнут слишком быстро.</p><p><strong>2. Обжиг (сухое → бисквит):</strong> При 900-1000°C в глине происходят необратимые химические изменения. Дополнительная усадка - 2-4%. Изделие становится пористым, но прочным.</p><p><strong>3. Витрификация (высокая температура):</strong> При 1200-1300°C глина спекается (стеклуется). Финальная усадка - 1-3%. Каменная масса и фарфор достигают своей максимальной плотности.</p>',
113
113
  },
114
114
  {
115
115
  type: 'card',
@@ -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 { ConcreteCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -106,13 +106,13 @@ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
106
106
  },
107
107
  {
108
108
  type: 'paragraph',
109
- html: 'Whether you are laying a garden slab, building a block wall, or pouring a floor screed, getting the <strong>concrete mix ratio</strong> right is the single most important factor for structural integrity. This calculator converts professional engineering dosages expressed in kg per cubic metre into the practical units you actually work with on site: <strong>25kg bags, shovelfuls, and litres</strong>.',
109
+ html: 'Whether you are laying a garden slab, building a block wall, or pouring a floor screed, getting the <strong>concrete mix ratio</strong> right is the single most important factor for structural integrity. This calculator converts professional engineering dosages - expressed in kg per cubic metre - into the practical units you actually work with on site: <strong>25kg bags, shovelfuls, and litres</strong>.',
110
110
  },
111
111
  {
112
112
  type: 'card',
113
113
  icon: 'mdi:water-alert',
114
114
  title: 'Why Water Ratio Determines Concrete Strength',
115
- html: '<p>The water-to-cement ratio (w/c ratio) is the key variable controlling concrete strength. Every extra litre of water you add beyond the minimum makes the mix more workable but permanently weakens the cured concrete by leaving voids as it evaporates.</p><p>The correct consistency resembles a <strong>stiff, cohesive paste</strong>, not a pourable liquid. If your mix slumps off a trowel too easily, you have added too much water.</p>',
115
+ html: '<p>The water-to-cement ratio (w/c ratio) is the key variable controlling concrete strength. Every extra litre of water you add beyond the minimum makes the mix more workable - but permanently weakens the cured concrete by leaving voids as it evaporates.</p><p>The correct consistency resembles a <strong>stiff, cohesive paste</strong>, not a pourable liquid. If your mix slumps off a trowel too easily, you have added too much water.</p>',
116
116
  },
117
117
  {
118
118
  type: 'title',
@@ -147,7 +147,7 @@ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
147
147
  type: 'card',
148
148
  icon: 'mdi:package-variant-closed',
149
149
  title: 'Always Buy 10% Extra to Cover Wastage',
150
- html: '<p>Material waste on a concrete job is not optional it is unavoidable. Sub-base irregularities, form overfill, mixer residue and the compaction factor all consume material beyond the theoretical volume. A <strong>10% surplus</strong> prevents the costly and time-critical problem of running short mid-pour with no way to restart the job.</p>',
150
+ html: '<p>Material waste on a concrete job is not optional - it is unavoidable. Sub-base irregularities, form overfill, mixer residue and the compaction factor all consume material beyond the theoretical volume. A <strong>10% surplus</strong> prevents the costly and time-critical problem of running short mid-pour with no way to restart the job.</p>',
151
151
  },
152
152
  ],
153
153
  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 { ConcreteCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -27,7 +27,7 @@ const faqData = [
27
27
  {
28
28
  question: 'Peut-on gâcher le béton à la main sans bétonnière?',
29
29
  answer:
30
- 'Oui, mais c\'est très physique et peu pratique au-delà de 0,5 m³. Gâchez sur une surface propre et étanche. Ajoutez l\'eau en faible quantité : un excès d\'eau réduit drastiquement la résistance finale du béton.',
30
+ 'Oui, mais c\'est très physique et peu pratique au-delà de 0,5 m³. Gâchez sur une surface propre et étanche. Ajoutez l\'eau en faible quantité: un excès d\'eau réduit drastiquement la résistance finale du béton.',
31
31
  },
32
32
  {
33
33
  question: 'Pourquoi le béton se fissure-t-il en séchant?',
@@ -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 { ConcreteCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -121,7 +121,7 @@ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
121
121
  },
122
122
  {
123
123
  type: 'paragraph',
124
- html: '<strong>콘크리트 배합량</strong>은 용도에 따라 달라집니다. <strong>표준 콘크리트</strong>(기초 및 바닥용)의 배합비는 세멘트 1 : 모래 2.5 : 자갈 3입니다. <strong>조적용 모르타르</strong>(벽체 및 칸막이)는 세멘트 1 : 모래 4입니다. <strong>강력 미장용 모르타르</strong>는 세멘트 1 : 모래 3입니다. 자갈이 섞인 콘크리트는 더 많은 하중을 견디고, 모래만 섞인 모르타르는 접착 및 미장에 적합합니다.',
124
+ html: '<strong>콘크리트 배합량</strong>은 용도에 따라 달라집니다. <strong>표준 콘크리트</strong>(기초 및 바닥용)의 배합비는 세멘트 1: 모래 2.5: 자갈 3입니다. <strong>조적용 모르타르</strong>(벽체 및 칸막이)는 세멘트 1: 모래 4입니다. <strong>강력 미장용 모르타르</strong>는 세멘트 1: 모래 3입니다. 자갈이 섞인 콘크리트는 더 많은 하중을 견디고, 모래만 섞인 모르타르는 접착 및 미장에 적합합니다.',
125
125
  },
126
126
  {
127
127
  type: 'title',
@@ -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 { ConcreteCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -112,7 +112,7 @@ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
112
112
  type: 'card',
113
113
  icon: 'mdi:water-alert',
114
114
  title: 'Избыток воды ослабляет бетон',
115
- html: '<p>Очень распространенная ошибка добавлять слишком много воды, чтобы бетон лучше тек. Излишек воды при испарении во время твердения создает поры, что резко снижает итоговую прочность. Идеальная консистенция должна быть похожа на <strong>густую пасту, а не на жидкость</strong>. Используйте как можно меньше воды.</p>',
115
+ html: '<p>Очень распространенная ошибка - добавлять слишком много воды, чтобы бетон лучше тек. Излишек воды при испарении во время твердения создает поры, что резко снижает итоговую прочность. Идеальная консистенция должна быть похожа на <strong>густую пасту, а не на жидкость</strong>. Используйте как можно меньше воды.</p>',
116
116
  },
117
117
  {
118
118
  type: 'title',
@@ -121,7 +121,7 @@ export const content: ToolLocaleContent<ConcreteCalculatorUI> = {
121
121
  },
122
122
  {
123
123
  type: 'paragraph',
124
- html: '<strong>Дозировка бетона</strong> варьируется в зависимости от использования. Для <strong>бетона марки М250/М300</strong> (фундаменты и стяжки) пропорция составляет 1 часть цемента, 2.5 части песка и 3 части гравия. Для <strong>кладочного раствора</strong> (стены) 1 часть цемента и 4 части песка. Для <strong>цементной стяжки</strong> 1 часть цемента и 3 части песка. Бетон с гравием выдерживает большие нагрузки; раствор только на песке идеален для связки и штукатурки.',
124
+ html: '<strong>Дозировка бетона</strong> варьируется в зависимости от использования. Для <strong>бетона марки М250/М300</strong> (фундаменты и стяжки) пропорция составляет 1 часть цемента, 2.5 части песка и 3 части гравия. Для <strong>кладочного раствора</strong> (стены) - 1 часть цемента и 4 части песка. Для <strong>цементной стяжки</strong> - 1 часть цемента и 3 части песка. Бетон с гравием выдерживает большие нагрузки; раствор только на песке идеален для связки и штукатурки.',
125
125
  },
126
126
  {
127
127
  type: 'title',
@@ -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 { CutOptimizerUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -101,7 +101,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
101
101
  },
102
102
  {
103
103
  type: 'paragraph',
104
- html: 'Cut optimization technically known as the <strong>Cutting Stock Problem</strong> is one of the most practically useful problems in combinatorial mathematics. For a project with 20 pieces and 5 bars of stock, there are millions of possible arrangements. A computational algorithm finds the near-optimal solution in milliseconds, reducing typical 15% material waste to under 5%.',
104
+ html: 'Cut optimization - technically known as the <strong>Cutting Stock Problem</strong> - is one of the most practically useful problems in combinatorial mathematics. For a project with 20 pieces and 5 bars of stock, there are millions of possible arrangements. A computational algorithm finds the near-optimal solution in milliseconds, reducing typical 15% material waste to under 5%.',
105
105
  },
106
106
  {
107
107
  type: 'title',
@@ -118,7 +118,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
118
118
  type: 'card',
119
119
  icon: 'mdi:view-grid',
120
120
  title: 'Panel Optimization for Sheet Materials',
121
- html: '<p><strong>Panel (2D) optimization</strong> handles sheet materials such as plywood, MDF, chipboard, glass, acrylic, and sheet metal. It uses a guillotine-cut algorithm, meaning every cut runs edge to edge matching how table saws and panel saws actually operate.</p>',
121
+ html: '<p><strong>Panel (2D) optimization</strong> handles sheet materials such as plywood, MDF, chipboard, glass, acrylic, and sheet metal. It uses a guillotine-cut algorithm, meaning every cut runs edge to edge - matching how table saws and panel saws actually operate.</p>',
122
122
  },
123
123
  {
124
124
  type: 'title',
@@ -127,7 +127,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
127
127
  },
128
128
  {
129
129
  type: 'paragraph',
130
- html: 'The <strong>kerf</strong> is the width of material removed by the blade per cut. A standard table saw blade removes 3.0 to 3.2mm per pass. A circular hand saw removes 1.5 to 2.5mm. A laser cutter removes just 0.1 to 0.3mm. On a project with 10 cuts from a 2400mm board, a 3mm kerf costs you 30mm of usable material enough to lose a whole small piece.',
130
+ html: 'The <strong>kerf</strong> is the width of material removed by the blade per cut. A standard table saw blade removes 3.0 to 3.2mm per pass. A circular hand saw removes 1.5 to 2.5mm. A laser cutter removes just 0.1 to 0.3mm. On a project with 10 cuts from a 2400mm board, a 3mm kerf costs you 30mm of usable material - enough to lose a whole small piece.',
131
131
  },
132
132
  {
133
133
  type: 'title',
@@ -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 { CutOptimizerUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -127,7 +127,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
127
127
  },
128
128
  {
129
129
  type: 'paragraph',
130
- html: "Le <strong>trait de scie (Kerf)</strong> est la largeur de matériau enlevée par la lame à chaque coupe. Une scie circulaire sur table standard enlève 3,0 à 3,2mm par passage. Une scie circulaire portative enlève 1,5 à 2,5mm. Un laser enlève seulement 0,1 à 0,3mm. Sur un projet avec 10 coupes dans une planche de 2400mm, un kerf de 3mm représente 30mm de matériau utilisable perdu de quoi rater une petite pièce entière.",
130
+ html: "Le <strong>trait de scie (Kerf)</strong> est la largeur de matériau enlevée par la lame à chaque coupe. Une scie circulaire sur table standard enlève 3,0 à 3,2mm par passage. Une scie circulaire portative enlève 1,5 à 2,5mm. Un laser enlève seulement 0,1 à 0,3mm. Sur un projet avec 10 coupes dans une planche de 2400mm, un kerf de 3mm représente 30mm de matériau utilisable perdu - de quoi rater une petite pièce entière.",
131
131
  },
132
132
  {
133
133
  type: 'title',
@@ -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 { CutOptimizerUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -127,7 +127,7 @@ export const content: ToolLocaleContent<CutOptimizerUI> = {
127
127
  },
128
128
  {
129
129
  type: 'paragraph',
130
- html: '<strong>Kerf</strong> это материал, который удаляется при каждом резе. Стандартный диск настольной пилы расходует от 3,0 до 3,2 мм на один рез. Ручная циркулярная пила расходует 1,52,5 мм. Лазерная резка оргстекла всего 0,10,3 мм. Игнорирование толщины реза в проекте с 10 резами на рейках длиной 2400 мм может привести к потере от 30 до 32 мм полезного материала.',
130
+ html: '<strong>Kerf</strong> - это материал, который удаляется при каждом резе. Стандартный диск настольной пилы расходует от 3,0 до 3,2 мм на один рез. Ручная циркулярная пила расходует 1,5-2,5 мм. Лазерная резка оргстекла - всего 0,1-0,3 мм. Игнорирование толщины реза в проекте с 10 резами на рейках длиной 2400 мм может привести к потере от 30 до 32 мм полезного материала.',
131
131
  },
132
132
  {
133
133
  type: 'title',
@@ -1,4 +1,4 @@
1
- import type { BibliographyEntry } from '../../types';
1
+ import type { BibliographyEntry } from '../../types';
2
2
 
3
3
  export const bibliography: BibliographyEntry[] = [
4
4
  {
@@ -6,7 +6,7 @@ export const bibliography: BibliographyEntry[] = [
6
6
  url: 'https://www.sandvik.coromant.com/en-gb/knowledge/machining-formulas-definitions/general-turning-formulas-definitions',
7
7
  },
8
8
  {
9
- name: 'Machine Calculations and Workshop Tables Machinery Handbook',
9
+ name: 'Machine Calculations and Workshop Tables - Machinery Handbook',
10
10
  url: 'https://www.google.com/search?q=machinery+handbook+cutting+speeds',
11
11
  },
12
12
  ];
@@ -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 { DrillCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -22,7 +22,7 @@ const faqData = [
22
22
  },
23
23
  {
24
24
  question: 'Всегда ли нужно использовать смазку?',
25
- answer: 'Для металлов это почти всегда рекомендуется. При работе с алюминием она предотвращает налипание материала на сверло, а со сталью уменьшает нагрев. Дерево и пластик лучше обрабатывать всухую, часто вынимая сверло для удаления стружки.',
25
+ answer: 'Для металлов это почти всегда рекомендуется. При работе с алюминием она предотвращает налипание материала на сверло, а со сталью - уменьшает нагрев. Дерево и пластик лучше обрабатывать всухую, часто вынимая сверло для удаления стружки.',
26
26
  },
27
27
  {
28
28
  question: 'Как рассчитать подачу, если у меня нет ЧПУ-станка?',
@@ -82,11 +82,11 @@ export const content: ToolLocaleContent<DrillCalculatorUI> = {
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
- { type: 'card', icon: 'mdi:math-log', title: 'Формула расчета об/мин (RPM)', html: '<p>Скорость резания это значение в метрах в минуту, указывающее на идеальную скорость, с которой режущая кромка должна проходить через материал. Формула, которую мы используем: <code>RPM = (Vc × 1000) / (π × D)</code>, где D диаметр в миллиметрах. Этот расчет не зависит от диаметра заготовки.' },
87
+ { type: 'card', icon: 'mdi:math-log', title: 'Формула расчета об/мин (RPM)', html: '<p>Скорость резания - это значение в метрах в минуту, указывающее на идеальную скорость, с которой режущая кромка должна проходить через материал. Формула, которую мы используем: <code>RPM = (Vc × 1000) / (π × D)</code>, где D - диаметр в миллиметрах. Этот расчет не зависит от диаметра заготовки.' },
88
88
  { type: 'title', text: 'быстрорежущая сталь (HSS) против твердого сплава', level: 3 },
89
- { type: 'paragraph', html: 'Инструменты из <strong>быстрорежущей стали (HSS)</strong> экономичны и устойчивы к ударам, но имеют ограниченную термическую стойкость. <strong>Твердый сплав (Widia)</strong> позволяет работать со скоростью резания в 35 раз выше, но такие инструменты более хрупкие. Калькулятор автоматически корректирует параметры в зависимости от типа инструмента.' },
89
+ { type: 'paragraph', html: 'Инструменты из <strong>быстрорежущей стали (HSS)</strong> экономичны и устойчивы к ударам, но имеют ограниченную термическую стойкость. <strong>Твердый сплав (Widia)</strong> позволяет работать со скоростью резания в 3-5 раз выше, но такие инструменты более хрупкие. Калькулятор автоматически корректирует параметры в зависимости от типа инструмента.' },
90
90
  { type: 'title', text: '3 распространенные ошибки при сверлении', level: 3 },
91
91
  { type: 'paragraph', html: '<strong>Слишком высокие обороты:</strong> Вызывают перегрев и потерю закалки стали. <strong>Слишком низкие обороты:</strong> Сверло вибрирует и может сломаться от усталости металла. <strong>Без охлаждения:</strong> Нагрев значительно сокращает срок службы инструмента.' },
92
92
  ],
@@ -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 { DrillCalculatorUI } from '../ui';
4
4
  import { bibliography } from '../bibliography';
@@ -34,7 +34,7 @@ const howToData = [
34
34
  { name: '选择材料', text: '指定您要钻孔或铣削的材料(钢、铝、木材等)。每种材料的硬度和热容量都不同。' },
35
35
  { name: '输入直径', text: '输入钻头或铣刀的准确直径(毫米)。请记住,直径越大,转速应越低。' },
36
36
  { name: '选择工具类型', text: '确定您的钻头是高速钢 (HSS) 还是硬质合金 (Widia)。硬质合金工具可承受更高的转速。' },
37
- { name: '调整机器 RPM', text: '根据计算值配置您的钻床或铣床。如果您的机器是档位变速,请参考我们的“推荐设定”选择最安全的皮带轮位置。' },
37
+ { name: '调整机器 RPM', text: '根据计算值配置您的钻床或铣床。如果您的机器是档位变速,请参考我们的"推荐设定"选择最安全的皮带轮位置。' },
38
38
  ];
39
39
 
40
40
  const faqSchema: WithContext<FAQPage> = {