@jjlmoya/utils-tools 1.13.0 → 1.14.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/de.ts +3 -3
  3. package/src/category/i18n/en.ts +1 -1
  4. package/src/category/i18n/es.ts +1 -1
  5. package/src/category/i18n/fr.ts +16 -16
  6. package/src/category/i18n/id.ts +1 -1
  7. package/src/category/i18n/nl.ts +1 -1
  8. package/src/category/i18n/pl.ts +1 -1
  9. package/src/category/i18n/pt.ts +1 -1
  10. package/src/category/i18n/ru.ts +10 -10
  11. package/src/category/i18n/sv.ts +1 -1
  12. package/src/category/i18n/tr.ts +1 -1
  13. package/src/category/i18n/zh.ts +4 -4
  14. package/src/layouts/PreviewLayout.astro +7 -2
  15. package/src/tests/diacritics_density.test.ts +118 -0
  16. package/src/tests/inverted_punctuation.test.ts +84 -0
  17. package/src/tests/no_en_dash.test.ts +70 -0
  18. package/src/tests/script_density.test.ts +94 -0
  19. package/src/tool/date-diff-calculator/i18n/de.ts +4 -4
  20. package/src/tool/date-diff-calculator/i18n/pl.ts +1 -1
  21. package/src/tool/date-diff-calculator/i18n/ru.ts +4 -4
  22. package/src/tool/date-diff-calculator/i18n/zh.ts +3 -3
  23. package/src/tool/drive-direct-link/i18n/de.ts +4 -4
  24. package/src/tool/drive-direct-link/i18n/es.ts +1 -1
  25. package/src/tool/drive-direct-link/i18n/fr.ts +1 -1
  26. package/src/tool/drive-direct-link/i18n/pl.ts +4 -4
  27. package/src/tool/drive-direct-link/i18n/ru.ts +8 -8
  28. package/src/tool/drive-direct-link/i18n/zh.ts +4 -4
  29. package/src/tool/email-list-cleaner/i18n/de.ts +2 -2
  30. package/src/tool/email-list-cleaner/i18n/pl.ts +2 -2
  31. package/src/tool/email-list-cleaner/i18n/ru.ts +7 -7
  32. package/src/tool/email-list-cleaner/i18n/sv.ts +1 -1
  33. package/src/tool/email-list-cleaner/i18n/zh.ts +3 -3
  34. package/src/tool/env-badge-spain/i18n/ru.ts +10 -10
  35. package/src/tool/morse-beacon/bibliography.ts +3 -3
  36. package/src/tool/morse-beacon/i18n/de.ts +4 -4
  37. package/src/tool/morse-beacon/i18n/en.ts +2 -2
  38. package/src/tool/morse-beacon/i18n/es.ts +2 -2
  39. package/src/tool/morse-beacon/i18n/fr.ts +5 -5
  40. package/src/tool/morse-beacon/i18n/id.ts +2 -2
  41. package/src/tool/morse-beacon/i18n/it.ts +2 -2
  42. package/src/tool/morse-beacon/i18n/ja.ts +2 -2
  43. package/src/tool/morse-beacon/i18n/ko.ts +2 -2
  44. package/src/tool/morse-beacon/i18n/nl.ts +2 -2
  45. package/src/tool/morse-beacon/i18n/pl.ts +3 -3
  46. package/src/tool/morse-beacon/i18n/pt.ts +2 -2
  47. package/src/tool/morse-beacon/i18n/ru.ts +3 -3
  48. package/src/tool/morse-beacon/i18n/sv.ts +2 -2
  49. package/src/tool/morse-beacon/i18n/tr.ts +2 -2
  50. package/src/tool/morse-beacon/i18n/zh.ts +3 -3
  51. package/src/tool/password-generator/bibliography.ts +3 -3
  52. package/src/tool/password-generator/i18n/de.ts +5 -5
  53. package/src/tool/password-generator/i18n/fr.ts +1 -1
  54. package/src/tool/password-generator/i18n/pl.ts +3 -3
  55. package/src/tool/password-generator/i18n/ru.ts +4 -4
  56. package/src/tool/password-generator/i18n/zh.ts +3 -3
  57. package/src/tool/routes/bibliography.ts +5 -5
  58. package/src/tool/routes/i18n/de.ts +1 -1
  59. package/src/tool/routes/i18n/fr.ts +3 -3
  60. package/src/tool/routes/i18n/ru.ts +3 -3
  61. package/src/tool/routes/i18n/zh.ts +1 -1
  62. package/src/tool/rule-of-three/bibliography.ts +2 -2
  63. package/src/tool/rule-of-three/i18n/de.ts +2 -2
  64. package/src/tool/rule-of-three/i18n/fr.ts +7 -7
  65. package/src/tool/rule-of-three/i18n/nl.ts +2 -2
  66. package/src/tool/rule-of-three/i18n/pl.ts +2 -2
  67. package/src/tool/rule-of-three/i18n/ru.ts +3 -3
  68. package/src/tool/rule-of-three/i18n/tr.ts +1 -1
  69. package/src/tool/rule-of-three/i18n/zh.ts +2 -2
  70. package/src/tool/seo-content-optimizer/i18n/fr.ts +3 -3
  71. package/src/tool/seo-content-optimizer/i18n/ru.ts +1 -1
  72. package/src/tool/speed-reader/i18n/de.ts +3 -3
  73. package/src/tool/speed-reader/i18n/en.ts +2 -2
  74. package/src/tool/speed-reader/i18n/fr.ts +9 -9
  75. package/src/tool/speed-reader/i18n/id.ts +2 -2
  76. package/src/tool/speed-reader/i18n/it.ts +2 -2
  77. package/src/tool/speed-reader/i18n/nl.ts +2 -2
  78. package/src/tool/speed-reader/i18n/pl.ts +3 -3
  79. package/src/tool/speed-reader/i18n/pt.ts +2 -2
  80. package/src/tool/speed-reader/i18n/ru.ts +10 -10
  81. package/src/tool/speed-reader/i18n/sv.ts +2 -2
  82. package/src/tool/speed-reader/i18n/zh.ts +4 -4
  83. package/src/tool/text-pixel-calculator/i18n/de.ts +2 -2
  84. package/src/tool/text-pixel-calculator/i18n/fr.ts +1 -1
  85. package/src/tool/text-pixel-calculator/i18n/pl.ts +3 -3
  86. package/src/tool/text-pixel-calculator/i18n/ru.ts +4 -4
  87. package/src/tool/text-pixel-calculator/i18n/zh.ts +3 -3
  88. package/src/tool/whatsapp-link/bibliography.ts +2 -2
  89. package/src/tool/whatsapp-link/i18n/de.ts +4 -4
  90. package/src/tool/whatsapp-link/i18n/es.ts +2 -2
  91. package/src/tool/whatsapp-link/i18n/fr.ts +2 -2
  92. package/src/tool/whatsapp-link/i18n/pl.ts +4 -4
  93. package/src/tool/whatsapp-link/i18n/ru.ts +5 -5
  94. package/src/tool/whatsapp-link/i18n/zh.ts +4 -4
  95. package/src/tool/whatsapp-link/whatsapp-link-generator.css +41 -4
@@ -1,9 +1,9 @@
1
1
  import type { BibliographyEntry } from '../../types';
2
2
 
3
3
  export const bibliography: BibliographyEntry[] = [
4
- { name: 'Leaflet Open-source interactive maps library', url: 'https://leafletjs.com/' },
5
- { name: 'OpenStreetMap Open cartographic data', url: 'https://www.openstreetmap.org/' },
6
- { name: 'CARTO Voyager map tiles', url: 'https://carto.com/basemaps/' },
7
- { name: 'Nominatim Reverse geocoding service (OpenStreetMap)', url: 'https://nominatim.org/' },
8
- { name: 'OSRM Open Source Routing Machine (route optimization)', url: 'http://project-osrm.org/' },
4
+ { name: 'Leaflet - Open-source interactive maps library', url: 'https://leafletjs.com/' },
5
+ { name: 'OpenStreetMap - Open cartographic data', url: 'https://www.openstreetmap.org/' },
6
+ { name: 'CARTO - Voyager map tiles', url: 'https://carto.com/basemaps/' },
7
+ { name: 'Nominatim - Reverse geocoding service (OpenStreetMap)', url: 'https://nominatim.org/' },
8
+ { name: 'OSRM - Open Source Routing Machine (route optimization)', url: 'http://project-osrm.org/' },
9
9
  ];
@@ -33,7 +33,7 @@ const howToData = [
33
33
  },
34
34
  {
35
35
  name: 'Sequenz optimieren',
36
- text: 'Klicken Sie auf die Schaltfläche Optimieren“. Der Algorithmus berechnet in Sekunden die effizienteste Reihenfolge, um alle Haltepunkte abzudecken.',
36
+ text: 'Klicken Sie auf die Schaltfläche "Optimieren". Der Algorithmus berechnet in Sekunden die effizienteste Reihenfolge, um alle Haltepunkte abzudecken.',
37
37
  },
38
38
  {
39
39
  name: 'Im Navigator öffnen',
@@ -99,7 +99,7 @@ export const content: ToolLocaleContent<RoutesUI> = {
99
99
  seo: [
100
100
  {
101
101
  type: 'title',
102
- text: "Optimiseur d'itinéraires intelligent : TSP pour livraisons et voyages",
102
+ text: "Optimiseur d'itinéraires intelligent: TSP pour livraisons et voyages",
103
103
  level: 2,
104
104
  },
105
105
  {
@@ -113,11 +113,11 @@ export const content: ToolLocaleContent<RoutesUI> = {
113
113
  },
114
114
  {
115
115
  type: 'paragraph',
116
- html: "L'outil utilise l'API <strong>OSRM (Open Source Routing Machine)</strong>, un moteur de routage haute performance basé sur les données OpenStreetMap. Le processus : d'abord il calcule l'itinéraire circulaire optimal entre tous les points (algorithme TSP), puis détermine le meilleur point de coupe pour le convertir en trajet linéaire aller simple, et enfin trace l'itinéraire sur la carte avec la distance totale estimée.",
116
+ html: "L'outil utilise l'API <strong>OSRM (Open Source Routing Machine)</strong>, un moteur de routage haute performance basé sur les données OpenStreetMap. Le processus: d'abord il calcule l'itinéraire circulaire optimal entre tous les points (algorithme TSP), puis détermine le meilleur point de coupe pour le convertir en trajet linéaire aller simple, et enfin trace l'itinéraire sur la carte avec la distance totale estimée.",
117
117
  },
118
118
  {
119
119
  type: 'title',
120
- text: "Cas d'usage : livraisons, commerciaux et voyages",
120
+ text: "Cas d'usage: livraisons, commerciaux et voyages",
121
121
  level: 2,
122
122
  },
123
123
  {
@@ -70,7 +70,7 @@ const appSchema: WithContext<SoftwareApplication> = {
70
70
 
71
71
  const ui: RoutesUI = {
72
72
  titleSidebar: 'Точки маршрута',
73
- descriptionSidebar: 'Кликните по карте, чтобы добавить остановки. Первая точка это старт.',
73
+ descriptionSidebar: 'Кликните по карте, чтобы добавить остановки. Первая точка - это старт.',
74
74
  emptyState: 'Точки не добавлены',
75
75
  btnOptimize: 'Рассчитать оптимальный маршрут',
76
76
  btnCalculating: 'Расчет...',
@@ -104,7 +104,7 @@ export const content: ToolLocaleContent<RoutesUI> = {
104
104
  },
105
105
  {
106
106
  type: 'paragraph',
107
- html: '<strong>Онлайн-оптимизатор маршрутов</strong> это бесплатный инструмент, решающий классическую <em>задачу коммивояжера (TSP)</em>. Добавьте все свои остановки в любом порядке, и алгоритм автоматически рассчитает наиболее эффективную последовательность, чтобы минимизировать общее пройденное расстояние.',
107
+ html: '<strong>Онлайн-оптимизатор маршрутов</strong> - это бесплатный инструмент, решающий классическую <em>задачу коммивояжера (TSP)</em>. Добавьте все свои остановки в любом порядке, и алгоритм автоматически рассчитает наиболее эффективную последовательность, чтобы минимизировать общее пройденное расстояние.',
108
108
  },
109
109
  {
110
110
  type: 'title',
@@ -113,7 +113,7 @@ export const content: ToolLocaleContent<RoutesUI> = {
113
113
  },
114
114
  {
115
115
  type: 'paragraph',
116
- html: 'Инструмент использует API <strong>OSRM (Open Source Routing Machine)</strong> высокопроизводительный движок маршрутизации, основанный на данных OpenStreetMap. Процесс таков: сначала рассчитывается оптимальный круговой маршрут между всеми точками (алгоритм TSP), затем определяется точка разрыва для превращения его в линейный маршрут в одну сторону, и, наконец, маршрут отрисовывается на карте с указанием оценочного общего расстояния.',
116
+ html: 'Инструмент использует API <strong>OSRM (Open Source Routing Machine)</strong> - высокопроизводительный движок маршрутизации, основанный на данных OpenStreetMap. Процесс таков: сначала рассчитывается оптимальный круговой маршрут между всеми точками (алгоритм TSP), затем определяется точка разрыва для превращения его в линейный маршрут в одну сторону, и, наконец, маршрут отрисовывается на карте с указанием оценочного общего расстояния.',
117
117
  },
118
118
  {
119
119
  type: 'title',
@@ -104,7 +104,7 @@ export const content: ToolLocaleContent<RoutesUI> = {
104
104
  },
105
105
  {
106
106
  type: 'paragraph',
107
- html: '<strong>在线路线优化器</strong>是一款免费工具,旨在解决经典的“旅行商问题 (TSP)”。您可以以任何顺序添加所有停靠点,算法将自动计算最高效的顺序,以最小化总行程距离。',
107
+ html: '<strong>在线路线优化器</strong>是一款免费工具,旨在解决经典的"旅行商问题 (TSP)"。您可以以任何顺序添加所有停靠点,算法将自动计算最高效的顺序,以最小化总行程距离。',
108
108
  },
109
109
  {
110
110
  type: 'title',
@@ -1,6 +1,6 @@
1
1
  import type { BibliographyEntry } from '../../types';
2
2
 
3
3
  export const bibliography: BibliographyEntry[] = [
4
- { name: 'Proportionality (mathematics) Wikipedia', url: 'https://en.wikipedia.org/wiki/Proportionality_(mathematics)' },
5
- { name: 'Ratios and proportions Khan Academy', url: 'https://www.khanacademy.org/math/pre-algebra/pre-algebra-ratios-rates/pre-algebra-ratios-intro/a/ratio-review' },
4
+ { name: 'Proportionality (mathematics) - Wikipedia', url: 'https://en.wikipedia.org/wiki/Proportionality_(mathematics)' },
5
+ { name: 'Ratios and proportions - Khan Academy', url: 'https://www.khanacademy.org/math/pre-algebra/pre-algebra-ratios-rates/pre-algebra-ratios-intro/a/ratio-review' },
6
6
  ];
@@ -6,7 +6,7 @@ import type { RuleOfThreeUI } from '../ui';
6
6
  const faqData = [
7
7
  {
8
8
  question: 'Was ist der einfache direkte Dreisatz?',
9
- answer: 'Es ist eine mathematische Methode zur Lösung von Proportionalitätsproblemen zwischen drei bekannten Werten und einer Unbekannten. Er wird als direkt bezeichnet, da bei Erhöhung einer Größe die andere im gleichen Verhältnis steigt.',
9
+ answer: 'Es ist eine mathematische Methode zur Lösung von Proportionalitätsproblemen zwischen drei bekannten Werten und einer Unbekannten. Er wird als "direkt" bezeichnet, da bei Erhöhung einer Größe die andere im gleichen Verhältnis steigt.',
10
10
  },
11
11
  {
12
12
  question: 'Wann sollte ich den umgekehrten Dreisatz verwenden?',
@@ -101,7 +101,7 @@ export const content: ToolLocaleContent<RuleOfThreeUI> = {
101
101
  },
102
102
  {
103
103
  type: 'paragraph',
104
- html: 'Der einfache direkte Dreisatz ist das Schweizer Taschenmesser der Mathematik. Er löst Probleme, bei denen drei Datenpunkte bekannt sind und wir den vierten suchen. Wenn Sie die Beziehung zwischen <strong>A und B</strong> kennen und einen neuen Wert <strong>C</strong> haben, findet der Rechner sofort <strong>X</strong>.',
104
+ html: 'Der einfache direkte Dreisatz ist das "Schweizer Taschenmesser" der Mathematik. Er löst Probleme, bei denen drei Datenpunkte bekannt sind und wir den vierten suchen. Wenn Sie die Beziehung zwischen <strong>A und B</strong> kennen und einen neuen Wert <strong>C</strong> haben, findet der Rechner sofort <strong>X</strong>.',
105
105
  },
106
106
  {
107
107
  type: 'comparative',
@@ -10,7 +10,7 @@ const faqData = [
10
10
  },
11
11
  {
12
12
  question: 'Quand dois-je utiliser la règle de trois inverse ?',
13
- answer: "On l'utilise quand les grandeurs sont inversement proportionnelles (si l'une augmente, l'autre diminue). Par exemple : si 2 peintres mettent 5 heures, 4 peintres mettront moins de temps. Notre calculatrice actuelle se concentre sur la proportionnalité directe.",
13
+ answer: "On l'utilise quand les grandeurs sont inversement proportionnelles (si l'une augmente, l'autre diminue). Par exemple: si 2 peintres mettent 5 heures, 4 peintres mettront moins de temps. Notre calculatrice actuelle se concentre sur la proportionnalité directe.",
14
14
  },
15
15
  {
16
16
  question: 'Est-elle précise pour les calculs professionnels ?',
@@ -18,7 +18,7 @@ const faqData = [
18
18
  },
19
19
  {
20
20
  question: 'Comment se calcule-t-elle manuellement ?',
21
- answer: 'La formule est : (Valeur B * Valeur C) / Valeur A = X. Autrement dit, vous multipliez les valeurs en diagonale et divisez le résultat par la valeur restante.',
21
+ answer: 'La formule est: (Valeur B * Valeur C) / Valeur A = X. Autrement dit, vous multipliez les valeurs en diagonale et divisez le résultat par la valeur restante.',
22
22
  },
23
23
  ];
24
24
 
@@ -101,7 +101,7 @@ export const content: ToolLocaleContent<RuleOfThreeUI> = {
101
101
  },
102
102
  {
103
103
  type: 'paragraph',
104
- html: "La règle de trois simple directe est le « couteau suisse » des mathématiques. Elle permet de résoudre des problèmes où trois données sont connues et on cherche la quatrième. Si vous connaissez la relation entre <strong>A et B</strong>, et que vous avez une nouvelle valeur <strong>C</strong>, la calculatrice trouve <strong>X</strong> instantanément.",
104
+ html: `La règle de trois simple directe est le " couteau suisse " des mathématiques. Elle permet de résoudre des problèmes où trois données sont connues et on cherche la quatrième. Si vous connaissez la relation entre <strong>A et B</strong>, et que vous avez une nouvelle valeur <strong>C</strong>, la calculatrice trouve <strong>X</strong> instantanément.`,
105
105
  },
106
106
  {
107
107
  type: 'comparative',
@@ -140,7 +140,7 @@ export const content: ToolLocaleContent<RuleOfThreeUI> = {
140
140
  },
141
141
  {
142
142
  type: 'paragraph',
143
- html: 'La formule est toujours la même : <strong>multiplier les valeurs en diagonale et diviser par celle qui reste</strong>.',
143
+ html: 'La formule est toujours la même: <strong>multiplier les valeurs en diagonale et diviser par celle qui reste</strong>.',
144
144
  },
145
145
  {
146
146
  type: 'code',
@@ -149,7 +149,7 @@ export const content: ToolLocaleContent<RuleOfThreeUI> = {
149
149
  },
150
150
  {
151
151
  type: 'paragraph',
152
- html: 'Dans la calculatrice : on multiplie la valeur <strong>B</strong> par la valeur <strong>C</strong> et on divise par <strong>A</strong>. Le résultat est <strong>X</strong>.',
152
+ html: 'Dans la calculatrice: on multiplie la valeur <strong>B</strong> par la valeur <strong>C</strong> et on divise par <strong>A</strong>. Le résultat est <strong>X</strong>.',
153
153
  },
154
154
  {
155
155
  type: 'title',
@@ -158,12 +158,12 @@ export const content: ToolLocaleContent<RuleOfThreeUI> = {
158
158
  },
159
159
  {
160
160
  type: 'paragraph',
161
- html: "Au-delà des mathématiques scolaires, la règle de trois est partout : en pharmacie pour calculer les dosages selon le poids corporel, en photographie pour calculer les temps d'exposition, en finance pour calculer les variations en pourcentage, ou en imprimerie pour mettre à l'échelle les dimensions.",
161
+ html: "Au-delà des mathématiques scolaires, la règle de trois est partout: en pharmacie pour calculer les dosages selon le poids corporel, en photographie pour calculer les temps d'exposition, en finance pour calculer les variations en pourcentage, ou en imprimerie pour mettre à l'échelle les dimensions.",
162
162
  },
163
163
  {
164
164
  type: 'tip',
165
165
  title: 'Astuce de précision',
166
- html: "Le résultat est affiché avec jusqu'à 4 décimales significatives. Si vous travaillez avec de l'argent ou des mesures exactes, pensez à arrondir selon le contexte : l'euro à 2 décimales, les pixels en entiers.",
166
+ html: "Le résultat est affiché avec jusqu'à 4 décimales significatives. Si vous travaillez avec de l'argent ou des mesures exactes, pensez à arrondir selon le contexte: l'euro à 2 décimales, les pixels en entiers.",
167
167
  },
168
168
  ],
169
169
  };
@@ -6,7 +6,7 @@ import type { RuleOfThreeUI } from '../ui';
6
6
  const faqData = [
7
7
  {
8
8
  question: 'Wat is de eenvoudige directe regel van drie?',
9
- answer: 'Het is een wiskundige methode voor het oplossen van evenredigheidsproblemen tussen drie bekende waarden en één onbekende. Het wordt direct genoemd omdat wanneer de ene hoeveelheid toeneemt, de andere in dezelfde verhouding toeneemt.',
9
+ answer: 'Het is een wiskundige methode voor het oplossen van evenredigheidsproblemen tussen drie bekende waarden en één onbekende. Het wordt "direct" genoemd omdat wanneer de ene hoeveelheid toeneemt, de andere in dezelfde verhouding toeneemt.',
10
10
  },
11
11
  {
12
12
  question: 'Wanneer moet ik de omgekeerde regel van drie gebruiken?',
@@ -101,7 +101,7 @@ export const content: ToolLocaleContent<RuleOfThreeUI> = {
101
101
  },
102
102
  {
103
103
  type: 'paragraph',
104
- html: 'De eenvoudige directe regel van drie is het Zwitserse zakmes van de wiskunde. Het lost problemen op waarbij drie gegevenspunten bekend zijn en we de vierde zoeken. Als u de relatie tussen <strong>A en B</strong> kent, en u hebt een nieuwe waarde <strong>C</strong>, dan vindt de calculator direct <strong>X</strong>.',
104
+ html: 'De eenvoudige directe regel van drie is het "Zwitserse zakmes" van de wiskunde. Het lost problemen op waarbij drie gegevenspunten bekend zijn en we de vierde zoeken. Als u de relatie tussen <strong>A en B</strong> kent, en u hebt een nieuwe waarde <strong>C</strong>, dan vindt de calculator direct <strong>X</strong>.',
105
105
  },
106
106
  {
107
107
  type: 'comparative',
@@ -6,7 +6,7 @@ import type { RuleOfThreeUI } from '../ui';
6
6
  const faqData = [
7
7
  {
8
8
  question: 'Czym jest prosta reguła trzech?',
9
- answer: 'To matematyczna metoda rozwiązywania problemów proporcjonalności pomiędzy trzema znanymi wartościami a jedną niewiadomą. Nazywa się ją „prostą”, ponieważ gdy jedna wielkość rośnie, druga rośnie w tej samej proporcji.',
9
+ answer: 'To matematyczna metoda rozwiązywania problemów proporcjonalności pomiędzy trzema znanymi wartościami a jedną niewiadomą. Nazywa się ją "prostą", ponieważ gdy jedna wielkość rośnie, druga rośnie w tej samej proporcji.',
10
10
  },
11
11
  {
12
12
  question: 'Kiedy należy stosować odwrotną regułę trzech?',
@@ -101,7 +101,7 @@ export const content: ToolLocaleContent<RuleOfThreeUI> = {
101
101
  },
102
102
  {
103
103
  type: 'paragraph',
104
- html: 'Prosta reguła trzech to szwajcarski scyzoryk matematyki. Rozwiązuje problemy, w których znane są trzy dane, a szukamy czwartej. Jeśli znasz zależność między <strong>A i B</strong> i masz nową wartość <strong>C</strong>, kalkulator natychmiast znajdzie <strong>X</strong>.',
104
+ html: 'Prosta reguła trzech to "szwajcarski scyzoryk" matematyki. Rozwiązuje problemy, w których znane są trzy dane, a szukamy czwartej. Jeśli znasz zależność między <strong>A i B</strong> i masz nową wartość <strong>C</strong>, kalkulator natychmiast znajdzie <strong>X</strong>.',
105
105
  },
106
106
  {
107
107
  type: 'comparative',
@@ -6,7 +6,7 @@ import type { RuleOfThreeUI } from '../ui';
6
6
  const faqData = [
7
7
  {
8
8
  question: 'Что такое простая прямая пропорция (правило трех)?',
9
- answer: 'Это математический метод решения задач на пропорциональность между тремя известными значениями и одним неизвестным. Она называется «прямой», потому что при увеличении одной величины другая увеличивается в той же пропорции.',
9
+ answer: 'Это математический метод решения задач на пропорциональность между тремя известными значениями и одним неизвестным. Она называется "прямой", потому что при увеличении одной величины другая увеличивается в той же пропорции.',
10
10
  },
11
11
  {
12
12
  question: 'Когда следует использовать обратную пропорцию?',
@@ -101,7 +101,7 @@ export const content: ToolLocaleContent<RuleOfThreeUI> = {
101
101
  },
102
102
  {
103
103
  type: 'paragraph',
104
- html: 'Простая прямая пропорция это «швейцарский армейский нож» в математике. Она решает задачи, в которых известны три набора данных, а мы ищем четвертый. Если вы знаете соотношение между <strong>A и B</strong> и у вас есть новое значение <strong>C</strong>, калькулятор мгновенно найдет <strong>X</strong>.',
104
+ html: 'Простая прямая пропорция - это "швейцарский армейский нож" в математике. Она решает задачи, в которых известны три набора данных, а мы ищем четвертый. Если вы знаете соотношение между <strong>A и B</strong> и у вас есть новое значение <strong>C</strong>, калькулятор мгновенно найдет <strong>X</strong>.',
105
105
  },
106
106
  {
107
107
  type: 'comparative',
@@ -149,7 +149,7 @@ export const content: ToolLocaleContent<RuleOfThreeUI> = {
149
149
  },
150
150
  {
151
151
  type: 'paragraph',
152
- html: 'В калькуляторе: мы умножаем значение <strong>B</strong> на значение <strong>C</strong> и делим на <strong>A</strong>. Результат <strong>X</strong>.',
152
+ html: 'В калькуляторе: мы умножаем значение <strong>B</strong> на значение <strong>C</strong> и делим на <strong>A</strong>. Результат - <strong>X</strong>.',
153
153
  },
154
154
  {
155
155
  type: 'title',
@@ -101,7 +101,7 @@ export const content: ToolLocaleContent<RuleOfThreeUI> = {
101
101
  },
102
102
  {
103
103
  type: 'paragraph',
104
- html: 'Basit doğru orantı, matematiğin „İsviçre çakısıdır“. Üç veri noktasının bilindiği ve dördüncüsünü aradığımız problemleri çözer. Eğer <strong>A ve B</strong> arasındaki ilişkiyi biliyorsanız ve yeni bir <strong>C</strong> değeriniz varsa, hesaplayıcı <strong>X</strong> değerini anında bulur.',
104
+ html: 'Basit doğru orantı, matematiğin "İsviçre çakısıdır". Üç veri noktasının bilindiği ve dördüncüsünü aradığımız problemleri çözer. Eğer <strong>A ve B</strong> arasındaki ilişkiyi biliyorsanız ve yeni bir <strong>C</strong> değeriniz varsa, hesaplayıcı <strong>X</strong> değerini anında bulur.',
105
105
  },
106
106
  {
107
107
  type: 'comparative',
@@ -6,7 +6,7 @@ import type { RuleOfThreeUI } from '../ui';
6
6
  const faqData = [
7
7
  {
8
8
  question: '什么是简单直接的三数法?',
9
- answer: '这是一种解决三个已知值与一个未知值之间比例问题的数学方法。它被称为“直接”比例,是因为当一个量增加时,另一个量也以相同的比例增加。',
9
+ answer: '这是一种解决三个已知值与一个未知值之间比例问题的数学方法。它被称为"直接"比例,是因为当一个量增加时,另一个量也以相同的比例增加。',
10
10
  },
11
11
  {
12
12
  question: '我应该什么时候使用反比例三数法?',
@@ -101,7 +101,7 @@ export const content: ToolLocaleContent<RuleOfThreeUI> = {
101
101
  },
102
102
  {
103
103
  type: 'paragraph',
104
- html: '简单直接的三数法是数学中的“瑞士军刀”。它解决了已知三个数据点并寻求第四个数据点的问题。如果您知道 <strong>A 和 B</strong> 之间的关系,并且有一个新值 <strong>C</strong>,计算器会立即找到 <strong>X</strong>。',
104
+ html: '简单直接的三数法是数学中的"瑞士军刀"。它解决了已知三个数据点并寻求第四个数据点的问题。如果您知道 <strong>A 和 B</strong> 之间的关系,并且有一个新值 <strong>C</strong>,计算器会立即找到 <strong>X</strong>。',
105
105
  },
106
106
  {
107
107
  type: 'comparative',
@@ -18,7 +18,7 @@ const faqData = [
18
18
  },
19
19
  {
20
20
  question: 'Est-il compatible avec les critères Yoast SEO ?',
21
- answer: "Oui, nous appliquons des critères similaires à Yoast : longueur des phrases, distribution des paragraphes et hiérarchie des titres.",
21
+ answer: "Oui, nous appliquons des critères similaires à Yoast: longueur des phrases, distribution des paragraphes et hiérarchie des titres.",
22
22
  },
23
23
  ];
24
24
 
@@ -97,7 +97,7 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
97
97
  bibliography,
98
98
  schemas: [faqSchema, howToSchema, appSchema],
99
99
  seo: [
100
- { type: 'title', level: 2, text: 'Optimiseur de Contenu SEO : Mots-Clés, Lisibilité et Structure' },
100
+ { type: 'title', level: 2, text: 'Optimiseur de Contenu SEO: Mots-Clés, Lisibilité et Structure' },
101
101
  {
102
102
  type: 'paragraph',
103
103
  html: "La qualité du contenu ne se mesure plus seulement aux mots-clés inclus, mais à la façon dont vous structurez l'information pour qu'elle soit compréhensible à la fois par les humains et les robots de Google. Notre outil d'<strong>analyse SEO en temps réel</strong> vous offre un contrôle total sur la densité des mots-clés, la lisibilité des paragraphes et les éléments techniques HTML fondamentaux.",
@@ -128,7 +128,7 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
128
128
  { type: 'title', level: 3, text: 'Analyse HTML Technique' },
129
129
  {
130
130
  type: 'paragraph',
131
- html: 'Collez votre code source pour vérifier les éléments clés : unicité du <strong>H1</strong>, présence de sous-titres H2/H3, images sans attribut <code>alt</code> et existence de la balise <code>title</code>. Tout le traitement se fait dans votre navigateur sans envoyer de données à un serveur.',
131
+ html: 'Collez votre code source pour vérifier les éléments clés: unicité du <strong>H1</strong>, présence de sous-titres H2/H3, images sans attribut <code>alt</code> et existence de la balise <code>title</code>. Tout le traitement se fait dans votre navigateur sans envoyer de données à un serveur.',
132
132
  },
133
133
  ],
134
134
  };
@@ -118,7 +118,7 @@ export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
118
118
  { type: 'title', level: 3, text: 'Читабельность в стиле Yoast' },
119
119
  {
120
120
  type: 'paragraph',
121
- html: 'Читабельность это косвенный, но решающий фактор ранжирования. Если пользователи уходят, потому что абзацы представляют собой бесконечные блоки текста, ваше <em>время пребывания на сайте</em> сокращается. Анализатор обнаруживает длинные предложения (более 20 слов), абзацы объемом более 150 слов и проверяет наличие подзаголовков.',
121
+ html: 'Читабельность - это косвенный, но решающий фактор ранжирования. Если пользователи уходят, потому что абзацы представляют собой бесконечные блоки текста, ваше <em>время пребывания на сайте</em> сокращается. Анализатор обнаруживает длинные предложения (более 20 слов), абзацы объемом более 150 слов и проверяет наличие подзаголовков.',
122
122
  },
123
123
  {
124
124
  type: 'tip',
@@ -110,7 +110,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
110
110
  icon: 'mdi:speedometer-slow',
111
111
  title: 'Kognitive Stille',
112
112
  highlight: true,
113
- description: 'Ab 400-500 WPM verstummt Ihre innere Stimme sie kommt nicht mehr mit. Sie hören nicht mehr auf das, was Sie lesen, sondern sehen reine Bedeutungen und Konzepte. Das ist der ultimative Flow-Zustand.',
113
+ description: 'Ab 400-500 WPM verstummt Ihre innere Stimme - sie kommt nicht mehr mit. Sie hören nicht mehr auf das, was Sie lesen, sondern sehen reine Bedeutungen und Konzepte. Das ist der ultimative Flow-Zustand.',
114
114
  },
115
115
  {
116
116
  icon: 'mdi:brain',
@@ -126,13 +126,13 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
126
126
  items: [
127
127
  {
128
128
  title: 'Level 1: Das Erwachen (200 bis 300 WPM)',
129
- description: 'Ihre normale Lesegeschwindigkeit. Gewöhnen Sie sich an die Benutzeroberfläche. Entspannen Sie Ihr Gesicht und lassen Sie die Wörter auf sich zukommen. Versuchen Sie nicht, sie zu greifen“.',
129
+ description: 'Ihre normale Lesegeschwindigkeit. Gewöhnen Sie sich an die Benutzeroberfläche. Entspannen Sie Ihr Gesicht und lassen Sie die Wörter auf sich zukommen. Versuchen Sie nicht, sie zu "greifen".',
130
130
  points: ['Ideal für Anfänger', 'Gewöhnung an den ORP', 'Keine Überanstrengung der Augen'],
131
131
  },
132
132
  {
133
133
  title: 'Level 2: Schallmauer (400 bis 500 WPM)',
134
134
  highlight: true,
135
- description: 'Hier geschieht die Magie. Sie werden ein gewisses Unbehagen spüren. Werden Sie nicht langsamer, wenn Sie ein Wort verpassen Ihr Gehirn wird lernen, Lücken aus dem Kontext zu füllen.',
135
+ description: 'Hier geschieht die Magie. Sie werden ein gewisses Unbehagen spüren. Werden Sie nicht langsamer, wenn Sie ein Wort verpassen - Ihr Gehirn wird lernen, Lücken aus dem Kontext zu füllen.',
136
136
  points: ['Subvokalisierung verschwindet', 'Mentaler Flow-Zustand', 'Verdoppelung der Basisgeschwindigkeit'],
137
137
  },
138
138
  {
@@ -110,7 +110,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
110
110
  icon: 'mdi:speedometer-slow',
111
111
  title: 'Cognitive Silence',
112
112
  highlight: true,
113
- description: 'Above 400-500 WPM, your inner voice goes quiet it cannot keep up. You stop "hearing" what you read and start "seeing" pure meanings and concepts. This is the ultimate flow state.',
113
+ description: 'Above 400-500 WPM, your inner voice goes quiet - it cannot keep up. You stop "hearing" what you read and start "seeing" pure meanings and concepts. This is the ultimate flow state.',
114
114
  },
115
115
  {
116
116
  icon: 'mdi:brain',
@@ -132,7 +132,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
132
132
  {
133
133
  title: 'Level 2: Sound Barrier (400 to 500 WPM)',
134
134
  highlight: true,
135
- description: 'This is where the magic happens. You will feel discomfort. Do not slow down when you miss a word your brain will learn to fill in gaps from context.',
135
+ description: 'This is where the magic happens. You will feel discomfort. Do not slow down when you miss a word - your brain will learn to fill in gaps from context.',
136
136
  points: ['Subvocalisation disappears', 'Mental flow state', 'Double your base speed'],
137
137
  },
138
138
  {
@@ -83,14 +83,14 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
83
83
  bibliography,
84
84
  schemas: [faqSchema, howToSchema, appSchema],
85
85
  seo: [
86
- { type: 'title', level: 2, text: 'La Formule 1 de la Lecture : Débloquez Votre Bande Passante Mentale' },
86
+ { type: 'title', level: 2, text: 'La Formule 1 de la Lecture: Débloquez Votre Bande Passante Mentale' },
87
87
  {
88
88
  type: 'paragraph',
89
- html: 'Et si lire était, biomécaniquement, une perte de temps ? Votre cerveau est un superordinateur bridé par une connexion analogique : vos yeux. Le <strong>Lecteur RSVP</strong> brise ce goulot d\'étranglement en présentant les mots au point focal exact où votre esprit les traite le plus rapidement.',
89
+ html: 'Et si lire était, biomécaniquement, une perte de temps ? Votre cerveau est un superordinateur bridé par une connexion analogique: vos yeux. Le <strong>Lecteur RSVP</strong> brise ce goulot d\'étranglement en présentant les mots au point focal exact où votre esprit les traite le plus rapidement.',
90
90
  },
91
91
  {
92
92
  type: 'paragraph',
93
- html: 'La lecture traditionnelle est un processus inefficace. Vos yeux ne fonctionnent pas comme un scanner ; ils fonctionnent comme une caméra en rafale : arrêt, mise au point, saut. Ce saut, appelé <strong>saccade</strong>, vous fait passer une grande partie du temps à déplacer les yeux plutôt qu\'à absorber l\'information.',
93
+ html: 'La lecture traditionnelle est un processus inefficace. Vos yeux ne fonctionnent pas comme un scanner ; ils fonctionnent comme une caméra en rafale: arrêt, mise au point, saut. Ce saut, appelé <strong>saccade</strong>, vous fait passer une grande partie du temps à déplacer les yeux plutôt qu\'à absorber l\'information.',
94
94
  },
95
95
  {
96
96
  type: 'tip',
@@ -110,33 +110,33 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
110
110
  icon: 'mdi:speedometer-slow',
111
111
  title: 'Silence Cognitif',
112
112
  highlight: true,
113
- description: 'Au-delà de 400-500 MPM, votre voix intérieure se tait elle ne peut pas suivre le rythme. Vous cessez d\'"entendre" ce que vous lisez et commencez à "voir" des significations et des idées pures.',
113
+ description: 'Au-delà de 400-500 MPM, votre voix intérieure se tait - elle ne peut pas suivre le rythme. Vous cessez d\'"entendre" ce que vous lisez et commencez à "voir" des significations et des idées pures.',
114
114
  },
115
115
  {
116
116
  icon: 'mdi:brain',
117
117
  title: 'Neuroplasticité Visuelle',
118
- description: 'Comme aller à la salle de sport : 300 MPM semblera rapide au début. Après une semaine, 500 MPM semblera une promenade. Vous re-entraînez les voies neuronales reliant le cortex visuel au langage.',
118
+ description: 'Comme aller à la salle de sport: 300 MPM semblera rapide au début. Après une semaine, 500 MPM semblera une promenade. Vous re-entraînez les voies neuronales reliant le cortex visuel au langage.',
119
119
  },
120
120
  ],
121
121
  },
122
- { type: 'title', level: 3, text: 'Protocole d\'Entraînement : Du Débutant à l\'Expert' },
122
+ { type: 'title', level: 3, text: 'Protocole d\'Entraînement: Du Débutant à l\'Expert' },
123
123
  {
124
124
  type: 'comparative',
125
125
  columns: 3,
126
126
  items: [
127
127
  {
128
- title: "Niveau 1 : L'Éveil (200 à 300 MPM)",
128
+ title: "Niveau 1: L'Éveil (200 à 300 MPM)",
129
129
  description: "Votre vitesse de lecture normale. Habituez-vous à l'interface. Détendez le visage et laissez les mots venir à vous. N'essayez pas de les attraper.",
130
130
  points: ['Idéal pour débutants', 'Familiarisation ORP', 'Sans fatigue oculaire'],
131
131
  },
132
132
  {
133
- title: "Niveau 2 : Le Mur du Son (400 à 500 MPM)",
133
+ title: "Niveau 2: Le Mur du Son (400 à 500 MPM)",
134
134
  highlight: true,
135
135
  description: "C'est ici que la magie se produit. Vous ressentirez de l'inconfort. Ne ralentissez pas si vous manquez un mot. Votre cerveau apprendra à combler les lacunes par le contexte.",
136
136
  points: ['La subvocalisation disparaît', 'État de flux mental', 'Doublez votre vitesse de base'],
137
137
  },
138
138
  {
139
- title: "Niveau 3 : Vitesse d'Évasion (600+ MPM)",
139
+ title: "Niveau 3: Vitesse d'Évasion (600+ MPM)",
140
140
  description: "Territoire avancé. Idéal pour réviser des cours, lire des actualités ou consommer de la documentation technique.",
141
141
  points: ['Roman moyen en 2 heures', 'Efficacité de lecture maximale', 'Nécessite une pratique préalable'],
142
142
  },
@@ -110,7 +110,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
110
110
  icon: 'mdi:speedometer-slow',
111
111
  title: 'Keheningan Kognitif',
112
112
  highlight: true,
113
- description: 'Di atas 400-500 WPM, suara batin Anda akan diam ia tidak bisa mengimbanginya. Anda berhenti "mendengar" apa yang Anda baca dan mulai "melihat" makna dan konsep murni. Ini adalah kondisi aliran (flow) yang terbaik.',
113
+ description: 'Di atas 400-500 WPM, suara batin Anda akan diam - ia tidak bisa mengimbanginya. Anda berhenti "mendengar" apa yang Anda baca dan mulai "melihat" makna dan konsep murni. Ini adalah kondisi aliran (flow) yang terbaik.',
114
114
  },
115
115
  {
116
116
  icon: 'mdi:brain',
@@ -132,7 +132,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
132
132
  {
133
133
  title: 'Level 2: Penghalang Suara (400 hingga 500 WPM)',
134
134
  highlight: true,
135
- description: 'Di sinilah keajaiban terjadi. Anda akan merasa tidak nyaman. Jangan melambat saat Anda melewatkan satu kata otak Anda akan belajar mengisi celah dari konteks.',
135
+ description: 'Di sinilah keajaiban terjadi. Anda akan merasa tidak nyaman. Jangan melambat saat Anda melewatkan satu kata - otak Anda akan belajar mengisi celah dari konteks.',
136
136
  points: ['Subvokalisasi menghilang', 'Kondisi aliran mental', 'Gandakan kecepatan dasar Anda'],
137
137
  },
138
138
  {
@@ -110,7 +110,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
110
110
  icon: 'mdi:speedometer-slow',
111
111
  title: 'Silenzio Cognitivo',
112
112
  highlight: true,
113
- description: 'Sopra le 400-500 WPM, la tua voce interiore tace non riesce a tenere il passo. Smetti di "sentire" ciò che leggi e inizi a "vedere" puri significati e concetti. Questo è lo stato di flow definitivo.',
113
+ description: 'Sopra le 400-500 WPM, la tua voce interiore tace - non riesce a tenere il passo. Smetti di "sentire" ciò che leggi e inizi a "vedere" puri significati e concetti. Questo è lo stato di flow definitivo.',
114
114
  },
115
115
  {
116
116
  icon: 'mdi:brain',
@@ -132,7 +132,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
132
132
  {
133
133
  title: 'Livello 2: Barriera del Suono (da 400 a 500 WPM)',
134
134
  highlight: true,
135
- description: 'Qui è dove accade la magia. Sentirai del disagio. Non rallentare quando perdi una parola il tuo cervello imparerà a colmare le lacune dal contesto.',
135
+ description: 'Qui è dove accade la magia. Sentirai del disagio. Non rallentare quando perdi una parola - il tuo cervello imparerà a colmare le lacune dal contesto.',
136
136
  points: ['La subvocalizzazione scompare', 'Stato di flow mentale', 'Raddoppia la tua velocità di base'],
137
137
  },
138
138
  {
@@ -110,7 +110,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
110
110
  icon: 'mdi:speedometer-slow',
111
111
  title: 'Cognitieve stilte',
112
112
  highlight: true,
113
- description: 'Boven de 400-500 WPM wordt uw innerlijke stem stil hij kan het niet bijhouden. U stopt met het "horen" van wat u leest en begint pure betekenissen en concepten te "zien". Dit is de ultieme flow-staat.',
113
+ description: 'Boven de 400-500 WPM wordt uw innerlijke stem stil - hij kan het niet bijhouden. U stopt met het "horen" van wat u leest en begint pure betekenissen en concepten te "zien". Dit is de ultieme flow-staat.',
114
114
  },
115
115
  {
116
116
  icon: 'mdi:brain',
@@ -132,7 +132,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
132
132
  {
133
133
  title: 'Niveau 2: Geluidsbarrière (400 tot 500 WPM)',
134
134
  highlight: true,
135
- description: 'Dit is waar de magie gebeurt. U zult ongemak voelen. Rem niet af wanneer u een woord mist uw hersenen zullen leren om gaten op te vullen vanuit de context.',
135
+ description: 'Dit is waar de magie gebeurt. U zult ongemak voelen. Rem niet af wanneer u een woord mist - uw hersenen zullen leren om gaten op te vullen vanuit de context.',
136
136
  points: ['Subvocalisatie verdwijnt', 'Mentale flow-staat', 'Verdubbel uw basissnelheid'],
137
137
  },
138
138
  {
@@ -110,7 +110,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
110
110
  icon: 'mdi:speedometer-slow',
111
111
  title: 'Cisza poznawcza',
112
112
  highlight: true,
113
- description: 'Powyżej 400-500 WPM Twój wewnętrzny głos cichnie nie nadąża. Przestajesz „słyszeć” to, co czytasz, a zaczynasz „widzieć” czyste znaczenia i pojęcia. To ostateczny stan flow.',
113
+ description: 'Powyżej 400-500 WPM Twój wewnętrzny głos cichnie - nie nadąża. Przestajesz "słyszeć" to, co czytasz, a zaczynasz "widzieć" czyste znaczenia i pojęcia. To ostateczny stan flow.',
114
114
  },
115
115
  {
116
116
  icon: 'mdi:brain',
@@ -126,13 +126,13 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
126
126
  items: [
127
127
  {
128
128
  title: 'Poziom 1: Przebudzenie (200 do 300 WPM)',
129
- description: 'Twoja normalna prędkość czytania. Przyzwyczaj się do interfejsu. Rozluźnij twarz i pozwól słowom do Ciebie przychodzić. Nie próbuj ich „chwytać”.',
129
+ description: 'Twoja normalna prędkość czytania. Przyzwyczaj się do interfejsu. Rozluźnij twarz i pozwól słowom do Ciebie przychodzić. Nie próbuj ich "chwytać".',
130
130
  points: ['Idealne dla początkujących', 'Zapoznanie z ORP', 'Brak zmęczenia oczu'],
131
131
  },
132
132
  {
133
133
  title: 'Poziom 2: Bariera dźwięku (400 do 500 WPM)',
134
134
  highlight: true,
135
- description: 'Tu dzieje się magia. Poczujesz dyskomfort. Nie zwalniaj, gdy umknie Ci słowo Twój mózg nauczy się wypełniać luki z kontekstu.',
135
+ description: 'Tu dzieje się magia. Poczujesz dyskomfort. Nie zwalniaj, gdy umknie Ci słowo - Twój mózg nauczy się wypełniać luki z kontekstu.',
136
136
  points: ['Subwokalizacja znika', 'Stan mentalnego flow', 'Podwojenie prędkości bazowej'],
137
137
  },
138
138
  {
@@ -110,7 +110,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
110
110
  icon: 'mdi:speedometer-slow',
111
111
  title: 'Silêncio Cognitivo',
112
112
  highlight: true,
113
- description: 'Acima das 400-500 WPM, a sua voz interior cala-se não consegue acompanhar. Deixa de "ouvir" o que lê e começa a "ver" puros significados e conceitos. Este é o estado de flow definitivo.',
113
+ description: 'Acima das 400-500 WPM, a sua voz interior cala-se - não consegue acompanhar. Deixa de "ouvir" o que lê e começa a "ver" puros significados e conceitos. Este é o estado de flow definitivo.',
114
114
  },
115
115
  {
116
116
  icon: 'mdi:brain',
@@ -132,7 +132,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
132
132
  {
133
133
  title: 'Nível 2: Barreira do Som (400 a 500 WPM)',
134
134
  highlight: true,
135
- description: 'É aqui que a magia acontece. Sentirá desconforto. Não abrande quando perder uma palavra o seu cérebro aprenderá a preencher as lacunas pelo contexto.',
135
+ description: 'É aqui que a magia acontece. Sentirá desconforto. Não abrande quando perder uma palavra - o seu cérebro aprenderá a preencher as lacunas pelo contexto.',
136
136
  points: ['A subvocalização desaparece', 'Estado de flow mental', 'Duplique a sua velocidade base'],
137
137
  },
138
138
  {
@@ -10,11 +10,11 @@ const faqData = [
10
10
  },
11
11
  {
12
12
  question: 'Снижает ли быстрое чтение понимание текста?',
13
- answer: 'Это зависит от навыка. На умеренных скоростях (350500 слов в минуту) многие пользователи отмечают более высокую концентрацию за счет устранения субвокализации (внутреннего проговаривания). На экстремальных скоростях (800+ слов в минуту) усвоение может снизиться без предварительной практики.',
13
+ answer: 'Это зависит от навыка. На умеренных скоростях (350-500 слов в минуту) многие пользователи отмечают более высокую концентрацию за счет устранения субвокализации (внутреннего проговаривания). На экстремальных скоростях (800+ слов в минуту) усвоение может снизиться без предварительной практики.',
14
14
  },
15
15
  {
16
16
  question: 'Какова средняя скорость чтения?',
17
- answer: 'Средний взрослый человек читает со скоростью от 200 до 250 слов в минуту. С помощью RSVP-ридера и некоторой практики удвоение этой скорости (400500 слов в минуту) при сохранении отличного понимания является обычным делом.',
17
+ answer: 'Средний взрослый человек читает со скоростью от 200 до 250 слов в минуту. С помощью RSVP-ридера и некоторой практики удвоение этой скорости (400-500 слов в минуту) при сохранении отличного понимания является обычным делом.',
18
18
  },
19
19
  {
20
20
  question: 'Вызывает ли RSVP напряжение глаз?',
@@ -86,15 +86,15 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
86
86
  { type: 'title', level: 2, text: 'Формула-1 в чтении: разблокируйте свою ментальную пропускную способность' },
87
87
  {
88
88
  type: 'paragraph',
89
- html: 'Что, если чтение биомеханически является пустой тратой времени? Ваш мозг это суперкомпьютер, ограниченный аналоговым соединением: вашими глазами. <strong>RSVP-ридер</strong> устраняет это узкое место, представляя слова точно в фокусной точке, где ваш разум обрабатывает их быстрее всего.',
89
+ html: 'Что, если чтение биомеханически является пустой тратой времени? Ваш мозг - это суперкомпьютер, ограниченный аналоговым соединением: вашими глазами. <strong>RSVP-ридер</strong> устраняет это узкое место, представляя слова точно в фокусной точке, где ваш разум обрабатывает их быстрее всего.',
90
90
  },
91
91
  {
92
92
  type: 'paragraph',
93
- html: 'Традиционное чтение неэффективный процесс. Ваши глаза работают не как сканер, а как камера в режиме серийной съемки: остановка, фокус, прыжок. Этот прыжок, называемый <strong>саккадой</strong>, означает, что вы тратите большую часть времени чтения просто на движение глаз, а не на поглощение информации.',
93
+ html: 'Традиционное чтение - неэффективный процесс. Ваши глаза работают не как сканер, а как камера в режиме серийной съемки: остановка, фокус, прыжок. Этот прыжок, называемый <strong>саккадой</strong>, означает, что вы тратите большую часть времени чтения просто на движение глаз, а не на поглощение информации.',
94
94
  },
95
95
  {
96
96
  type: 'tip',
97
- html: '«Чтение по методу RSVP это не просто быстрое чтение. Это устранение механического трения между текстом и вашим мозгом».',
97
+ html: '"Чтение по методу RSVP - это не просто быстрое чтение. Это устранение механического трения между текстом и вашим мозгом".',
98
98
  },
99
99
  { type: 'title', level: 3, text: 'Наука инъекции данных' },
100
100
  {
@@ -110,7 +110,7 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
110
110
  icon: 'mdi:speedometer-slow',
111
111
  title: 'Когнитивная тишина',
112
112
  highlight: true,
113
- description: 'На скорости выше 400500 слов в минуту ваш внутренний голос замолкает он не поспевает. Вы перестаете «слышать» то, что читаете, и начинаете «видеть» голые смыслы и концепции. Это идеальное состояние потока.',
113
+ description: 'На скорости выше 400-500 слов в минуту ваш внутренний голос замолкает - он не поспевает. Вы перестаете "слышать" то, что читаете, и начинаете "видеть" голые смыслы и концепции. Это идеальное состояние потока.',
114
114
  },
115
115
  {
116
116
  icon: 'mdi:brain',
@@ -125,14 +125,14 @@ export const content: ToolLocaleContent<SpeedReaderUI> = {
125
125
  columns: 3,
126
126
  items: [
127
127
  {
128
- title: 'Уровень 1: Пробуждение (200300 слов в минуту)',
129
- description: 'Ваша обычная скорость чтения. Привыкните к интерфейсу. Расслабьте лицо и позвольте словам самим приходить к вам. Не пытайтесь их «захватить».',
128
+ title: 'Уровень 1: Пробуждение (от 200 до 300 слов в минуту)',
129
+ description: 'Ваша обычная скорость чтения. Привыкните к интерфейсу. Расслабьте лицо и позвольте словам самим приходить к вам. Не пытайтесь их "захватить".',
130
130
  points: ['Идеально для новичков', 'Ознакомление с ORP', 'Нет напряжения глаз'],
131
131
  },
132
132
  {
133
- title: 'Уровень 2: Звуковой барьер (400500 слов в минуту)',
133
+ title: 'Уровень 2: Звуковой барьер (от 400 до 500 слов в минуту)',
134
134
  highlight: true,
135
- description: 'Здесь происходит магия. Вы почувствуете дискомфорт. Не замедляйтесь, если пропустите слово ваш мозг научится восполнять пробелы из контекста.',
135
+ description: 'Здесь происходит магия. Вы почувствуете дискомфорт. Не замедляйтесь, если пропустите слово - ваш мозг научится восполнять пробелы из контекста.',
136
136
  points: ['Субвокализация исчезает', 'Состояние ментального потока', 'Удвойте свою базовую скорость'],
137
137
  },
138
138
  {