@jjlmoya/utils-alcohol 1.27.0 → 1.29.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 (120) hide show
  1. package/package.json +4 -2
  2. package/src/data.ts +0 -5
  3. package/src/layouts/PreviewLayout.astro +0 -17
  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/pagespeed_best_practices.test.ts +198 -0
  8. package/src/tests/script_density.test.ts +94 -0
  9. package/src/tests/shared-test-helpers.ts +56 -0
  10. package/src/tests/tool_exports.test.ts +34 -0
  11. package/src/tool/alcoholClearance/component.astro +1 -1
  12. package/src/tool/alcoholClearance/i18n/de.ts +9 -9
  13. package/src/tool/alcoholClearance/i18n/en.ts +8 -8
  14. package/src/tool/alcoholClearance/i18n/es.ts +3 -3
  15. package/src/tool/alcoholClearance/i18n/fr.ts +13 -13
  16. package/src/tool/alcoholClearance/i18n/id.ts +8 -8
  17. package/src/tool/alcoholClearance/i18n/it.ts +5 -5
  18. package/src/tool/alcoholClearance/i18n/nl.ts +8 -8
  19. package/src/tool/alcoholClearance/i18n/pl.ts +8 -8
  20. package/src/tool/alcoholClearance/i18n/pt.ts +8 -8
  21. package/src/tool/alcoholClearance/i18n/ru.ts +12 -12
  22. package/src/tool/alcoholClearance/i18n/sv.ts +8 -8
  23. package/src/tool/alcoholClearance/i18n/zh.ts +8 -8
  24. package/src/tool/alcoholClearance/seo.astro +2 -40
  25. package/src/tool/beerCooler/component.astro +2 -2
  26. package/src/tool/beerCooler/i18n/de.ts +9 -9
  27. package/src/tool/beerCooler/i18n/en.ts +9 -9
  28. package/src/tool/beerCooler/i18n/es.ts +4 -4
  29. package/src/tool/beerCooler/i18n/fr.ts +14 -14
  30. package/src/tool/beerCooler/i18n/id.ts +9 -9
  31. package/src/tool/beerCooler/i18n/it.ts +9 -9
  32. package/src/tool/beerCooler/i18n/ja.ts +2 -2
  33. package/src/tool/beerCooler/i18n/ko.ts +2 -2
  34. package/src/tool/beerCooler/i18n/nl.ts +9 -9
  35. package/src/tool/beerCooler/i18n/pl.ts +9 -9
  36. package/src/tool/beerCooler/i18n/pt.ts +9 -9
  37. package/src/tool/beerCooler/i18n/ru.ts +10 -10
  38. package/src/tool/beerCooler/i18n/sv.ts +10 -10
  39. package/src/tool/beerCooler/i18n/tr.ts +8 -8
  40. package/src/tool/beerCooler/i18n/zh.ts +8 -8
  41. package/src/tool/beerCooler/seo.astro +2 -40
  42. package/src/tool/carbonationCalculator/component.astro +3 -3
  43. package/src/tool/carbonationCalculator/i18n/de.ts +6 -6
  44. package/src/tool/carbonationCalculator/i18n/en.ts +6 -6
  45. package/src/tool/carbonationCalculator/i18n/es.ts +5 -5
  46. package/src/tool/carbonationCalculator/i18n/fr.ts +15 -15
  47. package/src/tool/carbonationCalculator/i18n/id.ts +6 -6
  48. package/src/tool/carbonationCalculator/i18n/it.ts +6 -6
  49. package/src/tool/carbonationCalculator/i18n/ja.ts +4 -4
  50. package/src/tool/carbonationCalculator/i18n/ko.ts +4 -4
  51. package/src/tool/carbonationCalculator/i18n/nl.ts +6 -6
  52. package/src/tool/carbonationCalculator/i18n/pl.ts +6 -6
  53. package/src/tool/carbonationCalculator/i18n/pt.ts +6 -6
  54. package/src/tool/carbonationCalculator/i18n/ru.ts +7 -7
  55. package/src/tool/carbonationCalculator/i18n/sv.ts +6 -6
  56. package/src/tool/carbonationCalculator/i18n/tr.ts +6 -6
  57. package/src/tool/carbonationCalculator/i18n/zh.ts +6 -6
  58. package/src/tool/carbonationCalculator/seo.astro +2 -40
  59. package/src/tool/cocktailBalancer/component.astro +2 -2
  60. package/src/tool/cocktailBalancer/i18n/de.ts +1 -1
  61. package/src/tool/cocktailBalancer/i18n/en.ts +1 -1
  62. package/src/tool/cocktailBalancer/i18n/fr.ts +7 -7
  63. package/src/tool/cocktailBalancer/i18n/id.ts +1 -1
  64. package/src/tool/cocktailBalancer/i18n/it.ts +1 -1
  65. package/src/tool/cocktailBalancer/i18n/ja.ts +1 -1
  66. package/src/tool/cocktailBalancer/i18n/ko.ts +1 -1
  67. package/src/tool/cocktailBalancer/i18n/nl.ts +1 -1
  68. package/src/tool/cocktailBalancer/i18n/pl.ts +1 -1
  69. package/src/tool/cocktailBalancer/i18n/pt.ts +1 -1
  70. package/src/tool/cocktailBalancer/i18n/ru.ts +5 -5
  71. package/src/tool/cocktailBalancer/i18n/sv.ts +1 -1
  72. package/src/tool/cocktailBalancer/i18n/zh.ts +1 -1
  73. package/src/tool/cocktailBalancer/seo.astro +2 -40
  74. package/src/tool/fortifiedWine/bibliography.ts +3 -3
  75. package/src/tool/fortifiedWine/component.astro +5 -5
  76. package/src/tool/fortifiedWine/i18n/en.ts +7 -7
  77. package/src/tool/fortifiedWine/i18n/es.ts +6 -6
  78. package/src/tool/fortifiedWine/i18n/fr.ts +10 -10
  79. package/src/tool/fortifiedWine/i18n/id.ts +5 -5
  80. package/src/tool/fortifiedWine/i18n/it.ts +6 -6
  81. package/src/tool/fortifiedWine/i18n/ja.ts +2 -2
  82. package/src/tool/fortifiedWine/i18n/ko.ts +2 -2
  83. package/src/tool/fortifiedWine/i18n/nl.ts +6 -6
  84. package/src/tool/fortifiedWine/i18n/pl.ts +6 -6
  85. package/src/tool/fortifiedWine/i18n/pt.ts +6 -6
  86. package/src/tool/fortifiedWine/i18n/ru.ts +9 -9
  87. package/src/tool/fortifiedWine/i18n/sv.ts +6 -6
  88. package/src/tool/fortifiedWine/i18n/tr.ts +5 -5
  89. package/src/tool/fortifiedWine/i18n/zh.ts +4 -4
  90. package/src/tool/fortifiedWine/seo.astro +2 -28
  91. package/src/tool/jelloShotLab/bibliography.ts +4 -4
  92. package/src/tool/jelloShotLab/component.astro +4 -4
  93. package/src/tool/jelloShotLab/i18n/de.ts +11 -11
  94. package/src/tool/jelloShotLab/i18n/en.ts +11 -11
  95. package/src/tool/jelloShotLab/i18n/es.ts +6 -6
  96. package/src/tool/jelloShotLab/i18n/fr.ts +10 -10
  97. package/src/tool/jelloShotLab/i18n/id.ts +11 -11
  98. package/src/tool/jelloShotLab/i18n/it.ts +11 -11
  99. package/src/tool/jelloShotLab/i18n/nl.ts +11 -11
  100. package/src/tool/jelloShotLab/i18n/pl.ts +11 -11
  101. package/src/tool/jelloShotLab/i18n/pt.ts +8 -8
  102. package/src/tool/jelloShotLab/i18n/ru.ts +11 -11
  103. package/src/tool/jelloShotLab/i18n/sv.ts +11 -11
  104. package/src/tool/jelloShotLab/i18n/tr.ts +11 -11
  105. package/src/tool/jelloShotLab/i18n/zh.ts +10 -10
  106. package/src/tool/jelloShotLab/seo.astro +2 -40
  107. package/src/tool/partyKeg/component.astro +3 -3
  108. package/src/tool/partyKeg/i18n/de.ts +6 -6
  109. package/src/tool/partyKeg/i18n/en.ts +3 -3
  110. package/src/tool/partyKeg/i18n/es.ts +2 -2
  111. package/src/tool/partyKeg/i18n/fr.ts +9 -9
  112. package/src/tool/partyKeg/i18n/id.ts +6 -6
  113. package/src/tool/partyKeg/i18n/it.ts +6 -6
  114. package/src/tool/partyKeg/i18n/nl.ts +6 -6
  115. package/src/tool/partyKeg/i18n/pl.ts +6 -6
  116. package/src/tool/partyKeg/i18n/pt.ts +6 -6
  117. package/src/tool/partyKeg/i18n/ru.ts +8 -8
  118. package/src/tool/partyKeg/i18n/sv.ts +6 -6
  119. package/src/tool/partyKeg/i18n/zh.ts +2 -2
  120. package/src/tool/partyKeg/seo.astro +2 -40
@@ -153,7 +153,7 @@ function getIngIconName(type: string): string {
153
153
  </div>
154
154
  <div class="modal-search-wrap">
155
155
  <Icon name="mdi:magnify" class="modal-search-icon" />
156
- <input type="text" id="modal-search" placeholder={ui.searchPlaceholder} class="modal-search-input" />
156
+ <input type="text" id="modal-search" placeholder={ui.searchPlaceholder} class="modal-search-input" aria-label={ui.searchPlaceholder} />
157
157
  </div>
158
158
  </div>
159
159
 
@@ -283,7 +283,7 @@ function getIngIconName(type: string): string {
283
283
  const trashIcon = document.getElementById("tpl-icon-trash")?.innerHTML ?? '';
284
284
  const row = document.createElement("div");
285
285
  row.className = "recipe-row";
286
- row.innerHTML = `<div class="recipe-row-top"><div class="recipe-row-info"><div class="recipe-row-name">${ing.name}</div><span class="recipe-row-type">${ing.type}</span></div><button class="btn-danger recipe-row-del btn-remove" data-uid="${item.uId}">${trashIcon}</button></div><div class="recipe-row-controls"><input type="range" class="recipe-range input-range" min="0" max="150" step="0.5" value="${item.vol}" data-uid="${item.uId}"><div class="recipe-number-wrap"><input type="number" class="recipe-number input-number" value="${item.vol}" data-uid="${item.uId}"></div></div>`;
286
+ row.innerHTML = `<div class="recipe-row-top"><div class="recipe-row-info"><div class="recipe-row-name">${ing.name}</div><span class="recipe-row-type">${ing.type}</span></div><button class="btn-danger recipe-row-del btn-remove" data-uid="${item.uId}">${trashIcon}</button></div><div class="recipe-row-controls"><input type="range" class="recipe-range input-range" min="0" max="150" step="0.5" value="${item.vol}" data-uid="${item.uId}" aria-label="${ing.name} range"><div class="recipe-number-wrap"><input type="number" class="recipe-number input-number" value="${item.vol}" data-uid="${item.uId}" aria-label="${ing.name} volume"></div></div>`;
287
287
  return row;
288
288
  }
289
289
 
@@ -151,7 +151,7 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
151
151
  icon: 'mdi:star',
152
152
  variant: 'success',
153
153
  badge: 'Ziel',
154
- html: 'Dies ist das ultimative Ziel: ein kontrollierter pH-Wert, bei dem Zucker die Aggression der Säure neutralisiert, ohne die ätherischen Öle und aromatischen Verbindungen der Basisspirituose zu maskieren. Diese präzise Balance ist der Ort, wo unsterbliche Klassiker leben der Daiquiri, die Margarita, der Sidecar Drinks, die Jahrzehnte überdauert haben, weil sie den grundlegenden Gesetzen der Geschmackschemie gehorchen.'
154
+ html: 'Dies ist das ultimative Ziel: ein kontrollierter pH-Wert, bei dem Zucker die Aggression der Säure neutralisiert, ohne die ätherischen Öle und aromatischen Verbindungen der Basisspirituose zu maskieren. Diese präzise Balance ist der Ort, wo unsterbliche Klassiker leben - der Daiquiri, die Margarita, der Sidecar - Drinks, die Jahrzehnte überdauert haben, weil sie den grundlegenden Gesetzen der Geschmackschemie gehorchen.'
155
155
  },
156
156
  {
157
157
  type: 'tip',
@@ -151,7 +151,7 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
151
151
  icon: 'mdi:star',
152
152
  variant: 'success',
153
153
  badge: 'Goal',
154
- html: 'This is the ultimate objective: a controlled pH where sugar neutralizes the aggression of acid without masking the essential oils and aromatic compounds of the base spirit. This precise balance is where immortal classics live the Daiquiri, the Margarita, the Sidecar drinks that have survived decades because they obey the fundamental laws of flavour chemistry.'
154
+ html: 'This is the ultimate objective: a controlled pH where sugar neutralizes the aggression of acid without masking the essential oils and aromatic compounds of the base spirit. This precise balance is where immortal classics live - the Daiquiri, the Margarita, the Sidecar - drinks that have survived decades because they obey the fundamental laws of flavour chemistry.'
155
155
  },
156
156
  {
157
157
  type: 'tip',
@@ -50,7 +50,7 @@ const faqTitle = 'Foire Aux Questions';
50
50
  const faq: CocktailBalancerLocaleContent['faq'] = [
51
51
  {
52
52
  question: "Qu'est-ce que la 'Loi du Sour' ?",
53
- answer: "C'est le nombre d'or de la mixologie qui équilibre trois éléments : la base forte (spiritueux), l'acide (agrumes) et le sucré (sirops). Une recette classique suit généralement le ratio 2:1:1 (Fort:Acide:Sucré), bien que cela varie selon la force et la densité.",
53
+ answer: "C'est le nombre d'or de la mixologie qui équilibre trois éléments: la base forte (spiritueux), l'acide (agrumes) et le sucré (sirops). Une recette classique suit généralement le ratio 2:1:1 (Fort:Acide:Sucré), bien que cela varie selon la force et la densité.",
54
54
  },
55
55
  {
56
56
  question: "Comment la dilution affecte-t-elle l'équilibre du cocktail ?",
@@ -81,7 +81,7 @@ const howTo: CocktailBalancerLocaleContent['howTo'] = [
81
81
  },
82
82
  {
83
83
  name: "Service parfait",
84
- text: "Consultez le verdict final de l'outil : le ratio Sour, l'ABV estimé après dilution et les suggestions de correction. Servez avec de la glace fraîche et ajustez l'agrume ou le sirop selon votre goût.",
84
+ text: "Consultez le verdict final de l'outil: le ratio Sour, l'ABV estimé après dilution et les suggestions de correction. Servez avec de la glace fraîche et ajustez l'agrume ou le sirop selon votre goût.",
85
85
  },
86
86
  ];
87
87
 
@@ -140,9 +140,9 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
140
140
  type: 'summary',
141
141
  title: 'À qui s\'adresse cet outil ?',
142
142
  items: [
143
- 'Bartenders Professionnels : Standardisez les recettes et créez des menus signature avec une cohérence reproductible.',
144
- 'Amateurs à la Maison : Arrêtez de deviner et comprenez pourquoi vos cocktails réussissent ou échouent.',
145
- 'Développeurs de Boissons : Prototypez rapidement de nouveaux concepts de saveurs avant les productions coûteuses.'
143
+ 'Bartenders Professionnels: Standardisez les recettes et créez des menus signature avec une cohérence reproductible.',
144
+ 'Amateurs à la Maison: Arrêtez de deviner et comprenez pourquoi vos cocktails réussissent ou échouent.',
145
+ 'Développeurs de Boissons: Prototypez rapidement de nouveaux concepts de saveurs avant les productions coûteuses.'
146
146
  ]
147
147
  },
148
148
  {
@@ -151,11 +151,11 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
151
151
  icon: 'mdi:star',
152
152
  variant: 'success',
153
153
  badge: 'Objectif',
154
- html: 'C\'est l\'objectif ultime : un pH contrôlé où le sucre neutralise l\'agression de l\'acide sans masquer les huiles essentielles et les composés aromatiques du spiritueux de base. C\'est là que vivent les classiques immortels le Daiquiri, la Margarita, le Sidecar des boissons qui ont survécu des décennies parce qu\'elles obéissent aux lois fondamentales de la chimie des saveurs.'
154
+ html: 'C\'est l\'objectif ultime: un pH contrôlé où le sucre neutralise l\'agression de l\'acide sans masquer les huiles essentielles et les composés aromatiques du spiritueux de base. C\'est là que vivent les classiques immortels - le Daiquiri, la Margarita, le Sidecar - des boissons qui ont survécu des décennies parce qu\'elles obéissent aux lois fondamentales de la chimie des saveurs.'
155
155
  },
156
156
  {
157
157
  type: 'tip',
158
- title: 'Conseil Expert : Toujours Utiliser des Agrumes Frais',
158
+ title: 'Conseil Expert: Toujours Utiliser des Agrumes Frais',
159
159
  html: 'Pressez toujours les agrumes au dernier moment. Le jus de citron et de citron vert s\'oxyde rapidement, perdant son acidité vive en 20 à 30 minutes après l\'extraction. Un cocktail réalisé avec un jus vraiment frais aura toujours une brillance et une vivacité en bouche qu\'aucun produit en bouteille ne peut reproduire.'
160
160
  }
161
161
  ];
@@ -151,7 +151,7 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
151
151
  icon: 'mdi:star',
152
152
  variant: 'success',
153
153
  badge: 'Tujuan',
154
- html: 'Ini adalah tujuan akhir: pH yang terkontrol di mana gula menetralkan agresi asam tanpa menutupi minyak esensial dan senyawa aromatik dari alkohol dasar. Keseimbangan yang tepat ini adalah tempat di mana klasik abadi tinggal Daiquiri, Margarita, Sidecar minuman yang telah bertahan beberapa dekade karena mematuhi hukum fundamental kimia rasa.'
154
+ html: 'Ini adalah tujuan akhir: pH yang terkontrol di mana gula menetralkan agresi asam tanpa menutupi minyak esensial dan senyawa aromatik dari alkohol dasar. Keseimbangan yang tepat ini adalah tempat di mana klasik abadi tinggal - Daiquiri, Margarita, Sidecar - minuman yang telah bertahan beberapa dekade karena mematuhi hukum fundamental kimia rasa.'
155
155
  },
156
156
  {
157
157
  type: 'tip',
@@ -151,7 +151,7 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
151
151
  icon: 'mdi:star',
152
152
  variant: 'success',
153
153
  badge: 'Obiettivo',
154
- html: 'Questo è l\'obiettivo finale: un pH controllato in cui lo zucchero neutralizza l\'aggressione dell\'acido senza mascherare gli oli essenziali e i composti aromatici dello spirito di base. Questo equilibrio preciso è dove vivono i classici immortali il Daiquiri, la Margarita, il Sidecar bevande che hanno resistito ai decenni perché obbediscono alle leggi fondamentali della chimica del sapore.'
154
+ html: 'Questo è l\'obiettivo finale: un pH controllato in cui lo zucchero neutralizza l\'aggressione dell\'acido senza mascherare gli oli essenziali e i composti aromatici dello spirito di base. Questo equilibrio preciso è dove vivono i classici immortali - il Daiquiri, la Margarita, il Sidecar - bevande che hanno resistito ai decenni perché obbediscono alle leggi fondamentali della chimica del sapore.'
155
155
  },
156
156
  {
157
157
  type: 'tip',
@@ -151,7 +151,7 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
151
151
  icon: 'mdi:star',
152
152
  variant: 'success',
153
153
  badge: '目標',
154
- html: 'これは究極の目標です:砂糖が酸の侵略を中和する制御されたpH値で、ベーススピリッツの本質油と香りの化合物をマスクしません。この正確なバランスは、不朽の古典が住む場所です ダイキリ、マルガリータ、サイドカー 風味化学の基本法則に従うため、数十年生き残った飲み物。'
154
+ html: 'これは究極の目標です:砂糖が酸の侵略を中和する制御されたpH値で、ベーススピリッツの本質油と香りの化合物をマスクしません。この正確なバランスは、不朽の古典が住む場所です - ダイキリ、マルガリータ、サイドカー - 風味化学の基本法則に従うため、数十年生き残った飲み物。'
155
155
  },
156
156
  {
157
157
  type: 'tip',
@@ -151,7 +151,7 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
151
151
  icon: 'mdi:star',
152
152
  variant: 'success',
153
153
  badge: '목표',
154
- html: '이것은 최종 목표입니다: 설탕이 산의 공격성을 중화하는 제어된 pH로, 기본 스피릿의 필수유와 향료 화합물을 가리지 않습니다. 이 정확한 균형은 불멸의 고전이 사는 곳입니다 다이키리, 마르가리타, 사이드카 맛의 화학의 기본 법칙을 따르기 때문에 수십 년을 견뎌낸 음료.'
154
+ html: '이것은 최종 목표입니다: 설탕이 산의 공격성을 중화하는 제어된 pH로, 기본 스피릿의 필수유와 향료 화합물을 가리지 않습니다. 이 정확한 균형은 불멸의 고전이 사는 곳입니다 - 다이키리, 마르가리타, 사이드카 - 맛의 화학의 기본 법칙을 따르기 때문에 수십 년을 견뎌낸 음료.'
155
155
  },
156
156
  {
157
157
  type: 'tip',
@@ -151,7 +151,7 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
151
151
  icon: 'mdi:star',
152
152
  variant: 'success',
153
153
  badge: 'Doel',
154
- html: 'Dit is het ultieme doel: een gecontroleerde pH waarbij suiker de agressie van zuur neutraliseert zonder de essentiële oliën en aromatische stoffen van de basissterkedrank te maskeren. Dit precieze evenwicht is waar onsterfelijke klassiekers leven de Daiquiri, de Margarita, de Sidecar dranken die decennia hebben overleefd omdat ze de fundamentele wetten van smaakchemie gehoorzamen.'
154
+ html: 'Dit is het ultieme doel: een gecontroleerde pH waarbij suiker de agressie van zuur neutraliseert zonder de essentiële oliën en aromatische stoffen van de basissterkedrank te maskeren. Dit precieze evenwicht is waar onsterfelijke klassiekers leven - de Daiquiri, de Margarita, de Sidecar - dranken die decennia hebben overleefd omdat ze de fundamentele wetten van smaakchemie gehoorzamen.'
155
155
  },
156
156
  {
157
157
  type: 'tip',
@@ -151,7 +151,7 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
151
151
  icon: 'mdi:star',
152
152
  variant: 'success',
153
153
  badge: 'Cel',
154
- html: 'To jest ostateczny cel: kontrolowane pH, w którym cukier neutralizuje agresję kwasu bez maskowania olejków eterycznych i związków aromatycznych spirytusu bazowego. Ta precyzyjna równowaga to miejsce, gdzie żyją nieśmiertelne klasyki Daiquiri, Margarita, Sidecar napoje, które przetrwały dziesięciolecia, ponieważ podporządkowują się podstawowym prawom chemii smaku.'
154
+ html: 'To jest ostateczny cel: kontrolowane pH, w którym cukier neutralizuje agresję kwasu bez maskowania olejków eterycznych i związków aromatycznych spirytusu bazowego. Ta precyzyjna równowaga to miejsce, gdzie żyją nieśmiertelne klasyki - Daiquiri, Margarita, Sidecar - napoje, które przetrwały dziesięciolecia, ponieważ podporządkowują się podstawowym prawom chemii smaku.'
155
155
  },
156
156
  {
157
157
  type: 'tip',
@@ -151,7 +151,7 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
151
151
  icon: 'mdi:star',
152
152
  variant: 'success',
153
153
  badge: 'Objetivo',
154
- html: 'Este é o objetivo final: um pH controlado onde o açúcar neutraliza a agressão do ácido sem mascarar os óleos essenciais e compostos aromáticos do destilado base. Este equilíbrio preciso é onde vivem os clássicos imortais a Daiquiri, a Margarita, o Sidecar bebidas que sobreviveram a décadas porque obedecem às leis fundamentais da química do sabor.'
154
+ html: 'Este é o objetivo final: um pH controlado onde o açúcar neutraliza a agressão do ácido sem mascarar os óleos essenciais e compostos aromáticos do destilado base. Este equilíbrio preciso é onde vivem os clássicos imortais - a Daiquiri, a Margarita, o Sidecar - bebidas que sobreviveram a décadas porque obedecem às leis fundamentais da química do sabor.'
155
155
  },
156
156
  {
157
157
  type: 'tip',
@@ -62,7 +62,7 @@ const faq: CocktailBalancerLocaleContent['faq'] = [
62
62
  },
63
63
  {
64
64
  question: "Что такое градусы Брикса и почему они важны в коктейлях?",
65
- answer: "Брикс это шкала, которая измеряет количество растворённого сахара в жидкости. Простой сироп (1:1) находится около 50 °Brix; богатый сироп (2:1) превышает 66 °Brix. Чем выше Брикс, тем больше тела и сладости он вносит на единицу объема. Знание этого позволяет вам менять сиропы в рецепте без нарушения баланса.",
65
+ answer: "Брикс - это шкала, которая измеряет количество растворённого сахара в жидкости. Простой сироп (1:1) находится около 50 °Brix; богатый сироп (2:1) превышает 66 °Brix. Чем выше Брикс, тем больше тела и сладости он вносит на единицу объема. Знание этого позволяет вам менять сиропы в рецепте без нарушения баланса.",
66
66
  },
67
67
  ];
68
68
 
@@ -94,7 +94,7 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
94
94
  },
95
95
  {
96
96
  type: 'paragraph',
97
- html: 'Добро пожаловать в цифровую лабораторию, где интуиция встречается с математикой. Этот инструмент не просто сборник рецептов; это <strong>передовой физико-химический симулятор</strong>, разработанный для декonstruktion и анализа молекулярной структуры ваших коктейлей в реальном времени. Каждая капля цитруса, каждая порция спирта, каждый грамм сиропа взаимодействует в соответствии с неизменяемыми законами химии, которые определяют, будет ли ваш напиток шедевром или разочаровывающей неудачей.'
97
+ html: 'Добро пожаловать в цифровую лабораторию, где интуиция встречается с математикой. Этот инструмент - не просто сборник рецептов; это <strong>передовой физико-химический симулятор</strong>, разработанный для декonstruktion и анализа молекулярной структуры ваших коктейлей в реальном времени. Каждая капля цитруса, каждая порция спирта, каждый грамм сиропа взаимодействует в соответствии с неизменяемыми законами химии, которые определяют, будет ли ваш напиток шедевром или разочаровывающей неудачей.'
98
98
  },
99
99
  {
100
100
  type: 'stats',
@@ -109,7 +109,7 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
109
109
  type: 'card',
110
110
  title: 'Наука о Кислотности',
111
111
  icon: 'mdi:fruit-citrus',
112
- html: 'Кислотность это не просто вкус; это структурный позвоночник любого сбалансированного коктейля. Без надлежащей кислотности напиток становится плоским, одномерным и забываемым. Наш алгоритм различает титруемую кислотность персидского лайма и лимона Eureka, учитывая сезонные колебания pH цитрусовых, которые могут сместить вашу рецепту на целый балансовый пункт во вкусовом восприятии.'
112
+ html: 'Кислотность - это не просто вкус; это структурный позвоночник любого сбалансированного коктейля. Без надлежащей кислотности напиток становится плоским, одномерным и забываемым. Наш алгоритм различает титруемую кислотность персидского лайма и лимона Eureka, учитывая сезонные колебания pH цитрусовых, которые могут сместить вашу рецепту на целый балансовый пункт во вкусовом восприятии.'
113
113
  },
114
114
  {
115
115
  type: 'card',
@@ -121,7 +121,7 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
121
121
  type: 'card',
122
122
  title: 'Термодинамика и Разбавление',
123
123
  icon: 'mdi:water-percent',
124
- html: 'Взбитый коктейль разбавляется на 25-40% в зависимости от температуры льда, техники встряхивания и продолжительности. Это добавление воды не недостаток; это необходимый ингредиент, который раскрывает ароматы и смягчает спиртовой край. Наш калькулятор оценивает финальный ABV после разбавления, чтобы вы могли разрабатывать напитки с точно предусмотренной крепостью и вкусовым балансом.'
124
+ html: 'Взбитый коктейль разбавляется на 25-40% в зависимости от температуры льда, техники встряхивания и продолжительности. Это добавление воды - не недостаток; это необходимый ингредиент, который раскрывает ароматы и смягчает спиртовой край. Наш калькулятор оценивает финальный ABV после разбавления, чтобы вы могли разрабатывать напитки с точно предусмотренной крепостью и вкусовым балансом.'
125
125
  },
126
126
  {
127
127
  type: 'title',
@@ -151,7 +151,7 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
151
151
  icon: 'mdi:star',
152
152
  variant: 'success',
153
153
  badge: 'Цель',
154
- html: 'Это конечная цель: контролируемый pH, в котором сахар нейтрализует агрессию кислоты, не маскируя эфирные масла и ароматические соединения базового спирта. Этот точный баланс место, где живут бессмертные классики Дайкири, Маргарита, Сайдкар напитки, которые пережили десятилетия, потому что они подчиняются фундаментальным законам химии вкуса.'
154
+ html: 'Это конечная цель: контролируемый pH, в котором сахар нейтрализует агрессию кислоты, не маскируя эфирные масла и ароматические соединения базового спирта. Этот точный баланс - место, где живут бессмертные классики - Дайкири, Маргарита, Сайдкар - напитки, которые пережили десятилетия, потому что они подчиняются фундаментальным законам химии вкуса.'
155
155
  },
156
156
  {
157
157
  type: 'tip',
@@ -151,7 +151,7 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
151
151
  icon: 'mdi:star',
152
152
  variant: 'success',
153
153
  badge: 'Mål',
154
- html: 'Detta är det ultimata målet: en kontrollerad pH där socker neutraliserar surhets aggression utan att maskera bassprits väsentliga oljor och aromatiska föreningar. Denna exakta balans är där odödliga klassiker bor Daiquiri, Margarita, Sidecar drycker som överlevde decennier eftersom de följer smakkemins grundläggande lagar.'
154
+ html: 'Detta är det ultimata målet: en kontrollerad pH där socker neutraliserar surhets aggression utan att maskera bassprits väsentliga oljor och aromatiska föreningar. Denna exakta balans är där odödliga klassiker bor - Daiquiri, Margarita, Sidecar - drycker som överlevde decennier eftersom de följer smakkemins grundläggande lagar.'
155
155
  },
156
156
  {
157
157
  type: 'tip',
@@ -151,7 +151,7 @@ const seo: CocktailBalancerLocaleContent['seo'] = [
151
151
  icon: 'mdi:star',
152
152
  variant: 'success',
153
153
  badge: '目标',
154
- html: '这是最终目标:糖中和酸的进攻而不掩盖基础烈酒的精油和芳香化合物的受控pH。这种精确的平衡是永恒的经典所在——代基里、玛格丽塔、边车——饮料因为服从味觉化学的基本定律而在几十年内幸存。'
154
+ html: '这是最终目标:糖中和酸的进攻而不掩盖基础烈酒的精油和芳香化合物的受控pH。这种精确的平衡是永恒的经典所在-代基里、玛格丽塔、边车-饮料因为服从味觉化学的基本定律而在几十年内幸存。'
155
155
  },
156
156
  {
157
157
  type: 'tip',
@@ -1,8 +1,5 @@
1
1
  ---
2
- import {
3
- SEOTitle, SEOTable, SEOTip, SEOCard, SEOStats,
4
- SEOGlossary, SEOProsCons, SEOSummary, SEODiagnostic, SEOArticle
5
- } from '@jjlmoya/utils-shared';
2
+ import { SEORenderer } from '@jjlmoya/utils-shared';
6
3
  import { cocktailBalancer } from './index';
7
4
  import type { KnownLocale } from '../../types';
8
5
 
@@ -13,41 +10,6 @@ interface Props {
13
10
  const { locale = 'es' } = Astro.props;
14
11
  const content = await cocktailBalancer.i18n[locale]?.();
15
12
  if (!content) return null;
16
-
17
- const { seo } = content;
18
13
  ---
19
14
 
20
- <SEOArticle>
21
- {seo.map((section: any) => {
22
- switch (section.type) {
23
- case 'summary':
24
- return <SEOSummary title={section.title} items={section.items} />;
25
- case 'title':
26
- return <SEOTitle title={section.text} level={section.level || 2} />;
27
- case 'paragraph':
28
- return <p set:html={section.html} />;
29
- case 'stats':
30
- return <SEOStats stats={section.items} columns={section.columns} />;
31
- case 'card':
32
- return <SEOCard title={section.title} icon={section.icon}><Fragment set:html={section.html} /></SEOCard>;
33
- case 'tip':
34
- return <SEOTip title={section.title}><Fragment set:html={section.html} /></SEOTip>;
35
- case 'table':
36
- return (
37
- <SEOTable headers={section.headers}>
38
- {section.rows.map((row: string[]) => (
39
- <tr>{row.map((cell: string) => <td set:html={cell} />)}</tr>
40
- ))}
41
- </SEOTable>
42
- );
43
- case 'proscons':
44
- return <SEOProsCons title={section.title} items={section.items} />;
45
- case 'diagnostic':
46
- return <SEODiagnostic title={section.title} icon={section.icon} type={section.variant} badge={section.badge}><Fragment set:html={section.html} /></SEODiagnostic>;
47
- case 'glossary':
48
- return <SEOGlossary items={section.items} />;
49
- default:
50
- return null;
51
- }
52
- })}
53
- </SEOArticle>
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -1,7 +1,7 @@
1
1
  import type { BibliographyEntry } from '../../types';
2
2
 
3
3
  export const bibliography: BibliographyEntry[] = [
4
- { name: 'Jackisch, P. Modern Winemaking (Cornell University Press)', url: 'https://www.cornellpress.cornell.edu/book/9780801493355/modern-winemaking/' },
5
- { name: 'Goode, J. The Science of Wine (University of California Press)', url: 'https://www.iberlibro.com/9780520379503/Science-Wine-Vine-Glass-3rd-0520379500/plp' },
6
- { name: 'Pearson Square University of California ANR', url: 'https://www.studocu.com/en-us/document/pennsylvania-western-university-california/counseling-across-the-life-span-prevention-and-treatment-in/bcm-agricultural-sciences-pearson-square-revision-notes/153048617' },
4
+ { name: 'Jackisch, P. - Modern Winemaking (Cornell University Press)', url: 'https://www.cornellpress.cornell.edu/book/9780801493355/modern-winemaking/' },
5
+ { name: 'Goode, J. - The Science of Wine (University of California Press)', url: 'https://www.iberlibro.com/9780520379503/Science-Wine-Vine-Glass-3rd-0520379500/plp' },
6
+ { name: 'Pearson Square - University of California ANR', url: 'https://www.studocu.com/en-us/document/pennsylvania-western-university-california/counseling-across-the-life-span-prevention-and-treatment-in/bcm-agricultural-sciences-pearson-square-revision-notes/153048617' },
7
7
  ];
@@ -36,14 +36,14 @@ const { ui } = Astro.props;
36
36
  <div class="fw-field">
37
37
  <label class="fw-label" for="fw-wine-vol">{ui.wineVolumeLabel}</label>
38
38
  <div class="fw-slider-row">
39
- <input type="range" class="fw-slider" id="fw-wine-vol-slider" min="0.1" max="100" step="0.1" value="5" />
39
+ <input type="range" class="fw-slider" id="fw-wine-vol-slider" min="0.1" max="100" step="0.1" value="5" aria-label={ui.wineVolumeLabel} />
40
40
  <input type="number" class="fw-num-input" id="fw-wine-vol" min="0.1" max="9999" step="0.1" value="5" />
41
41
  </div>
42
42
  </div>
43
43
  <div class="fw-field">
44
44
  <label class="fw-label" for="fw-wine-abv">{ui.wineAbvLabel}</label>
45
45
  <div class="fw-slider-row">
46
- <input type="range" class="fw-slider" id="fw-wine-abv-slider" min="0" max="25" step="0.5" value="12" />
46
+ <input type="range" class="fw-slider" id="fw-wine-abv-slider" min="0" max="25" step="0.5" value="12" aria-label={ui.wineAbvLabel} />
47
47
  <input type="number" class="fw-num-input" id="fw-wine-abv" min="0" max="25" step="0.1" value="12" />
48
48
  </div>
49
49
  </div>
@@ -60,7 +60,7 @@ const { ui } = Astro.props;
60
60
  <div class="fw-field">
61
61
  <label class="fw-label" for="fw-spirit-abv">{ui.spiritAbvLabel}</label>
62
62
  <div class="fw-slider-row">
63
- <input type="range" class="fw-slider" id="fw-spirit-abv-slider" min="15" max="96" step="1" value="38" />
63
+ <input type="range" class="fw-slider" id="fw-spirit-abv-slider" min="15" max="96" step="1" value="38" aria-label={ui.spiritAbvLabel} />
64
64
  <input type="number" class="fw-num-input" id="fw-spirit-abv" min="15" max="96" step="0.1" value="38" />
65
65
  </div>
66
66
  </div>
@@ -70,14 +70,14 @@ const { ui } = Astro.props;
70
70
  <div class="fw-field">
71
71
  <label class="fw-label" for="fw-target-abv">{ui.targetAbvLabel}</label>
72
72
  <div class="fw-slider-row">
73
- <input type="range" class="fw-slider" id="fw-target-abv-slider" min="1" max="40" step="0.5" value="16" />
73
+ <input type="range" class="fw-slider" id="fw-target-abv-slider" min="1" max="40" step="0.5" value="16" aria-label={ui.targetAbvLabel} />
74
74
  <input type="number" class="fw-num-input" id="fw-target-abv" min="1" max="40" step="0.1" value="16" />
75
75
  </div>
76
76
  </div>
77
77
  <div class="fw-field" id="fw-target-vol-field" style="display:none; margin-top:0.75rem;">
78
78
  <label class="fw-label" for="fw-target-vol">{ui.targetVolumeLabel}</label>
79
79
  <div class="fw-slider-row">
80
- <input type="range" class="fw-slider" id="fw-target-vol-slider" min="0.1" max="100" step="0.1" value="6" />
80
+ <input type="range" class="fw-slider" id="fw-target-vol-slider" min="0.1" max="100" step="0.1" value="6" aria-label={ui.targetVolumeLabel} />
81
81
  <input type="number" class="fw-num-input" id="fw-target-vol" min="0.1" max="9999" step="0.1" value="6" />
82
82
  </div>
83
83
  </div>
@@ -51,7 +51,7 @@ const faq: FortifiedWineBuilderLocaleContent['faq'] = [
51
51
  },
52
52
  {
53
53
  question: 'What base wine should I use for vermouth?',
54
- answer: 'A neutral, dry white wine between 10-12% ABV works best. The wine provides the backbone; since it will be aromatized with botanicals, you do not need an expensive wine a clean, acidic base is ideal.',
54
+ answer: 'A neutral, dry white wine between 10-12% ABV works best. The wine provides the backbone; since it will be aromatized with botanicals, you do not need an expensive wine - a clean, acidic base is ideal.',
55
55
  },
56
56
  {
57
57
  question: 'Can I use neutral alcohol instead of brandy?',
@@ -59,7 +59,7 @@ const faq: FortifiedWineBuilderLocaleContent['faq'] = [
59
59
  },
60
60
  {
61
61
  question: 'How does fortification preserve wine?',
62
- answer: 'When wine ABV exceeds roughly 15-16%, yeast fermentation becomes inhibited. This is why fortified wines have much longer shelf lives the alcohol acts as a natural preservative against both yeast and bacterial spoilage.',
62
+ answer: 'When wine ABV exceeds roughly 15-16%, yeast fermentation becomes inhibited. This is why fortified wines have much longer shelf lives - the alcohol acts as a natural preservative against both yeast and bacterial spoilage.',
63
63
  },
64
64
  ];
65
65
 
@@ -75,14 +75,14 @@ const seo: FortifiedWineBuilderLocaleContent['seo'] = [
75
75
  { type: 'title', text: 'The Pearson Square: Ancient Math, Perfect Wine', level: 2 },
76
76
  {
77
77
  type: 'paragraph',
78
- html: 'The <strong>Pearson Square</strong> is one of the oldest and most elegant tools in winemaking mathematics. Developed in the 19th century, it allows any winemaker professional or amateur to calculate blending ratios with nothing more than subtraction. Our tool digitises this visual method and adds real-time feedback, so you spend less time calculating and more time crafting.',
78
+ html: 'The <strong>Pearson Square</strong> is one of the oldest and most elegant tools in winemaking mathematics. Developed in the 19th century, it allows any winemaker - professional or amateur - to calculate blending ratios with nothing more than subtraction. Our tool digitises this visual method and adds real-time feedback, so you spend less time calculating and more time crafting.',
79
79
  },
80
80
  {
81
81
  type: 'stats',
82
82
  items: [
83
- { label: 'Vermouth', value: '1518% ABV', icon: 'mdi:glass-cocktail' },
84
- { label: 'Port', value: '1820% ABV', icon: 'mdi:bottle-wine' },
85
- { label: 'Sherry', value: '1517% ABV', icon: 'mdi:cup-water' },
83
+ { label: 'Vermouth', value: '15-18% ABV', icon: 'mdi:glass-cocktail' },
84
+ { label: 'Port', value: '18-20% ABV', icon: 'mdi:bottle-wine' },
85
+ { label: 'Sherry', value: '15-17% ABV', icon: 'mdi:cup-water' },
86
86
  ],
87
87
  columns: 3,
88
88
  },
@@ -90,7 +90,7 @@ const seo: FortifiedWineBuilderLocaleContent['seo'] = [
90
90
  type: 'card',
91
91
  title: 'Why fortify at 18%?',
92
92
  icon: 'mdi:shield-check',
93
- html: 'Above roughly 15% ABV, <em>Saccharomyces cerevisiae</em> the primary wine yeast becomes inhibited. By 18%, fermentation is completely arrested. This is why Port retains residual sweetness: spirits are added mid-fermentation, killing the yeast before all sugar is consumed.',
93
+ html: 'Above roughly 15% ABV, <em>Saccharomyces cerevisiae</em> - the primary wine yeast - becomes inhibited. By 18%, fermentation is completely arrested. This is why Port retains residual sweetness: spirits are added mid-fermentation, killing the yeast before all sugar is consumed.',
94
94
  },
95
95
  {
96
96
  type: 'tip',
@@ -51,7 +51,7 @@ const faq: FortifiedWineBuilderLocaleContent['faq'] = [
51
51
  },
52
52
  {
53
53
  question: '¿Qué vino base debo usar para el vermut?',
54
- answer: 'Lo ideal es un vino blanco seco y neutro de entre el 10-12% de alcohol. El vino da la estructura base; como será aromatizado con hierbas y botánicos, no necesitas uno caro una base limpia y ácida es perfecta.',
54
+ answer: 'Lo ideal es un vino blanco seco y neutro de entre el 10-12% de alcohol. El vino da la estructura base; como será aromatizado con hierbas y botánicos, no necesitas uno caro - una base limpia y ácida es perfecta.',
55
55
  },
56
56
  {
57
57
  question: '¿Puedo usar alcohol neutro en vez de brandy?',
@@ -75,14 +75,14 @@ const seo: FortifiedWineBuilderLocaleContent['seo'] = [
75
75
  { type: 'title', text: 'El Cuadrado de Pearson: Matemática Antigua, Vino Perfecto', level: 2 },
76
76
  {
77
77
  type: 'paragraph',
78
- html: 'El <strong>Cuadrado de Pearson</strong> es una de las herramientas más antiguas y elegantes de la matemática enológica. Desarrollado en el siglo XIX, permite a cualquier elaborador profesional o aficionado calcular proporciones de mezcla con solo sumas y restas. Nuestra herramienta digitaliza este método visual y añade retroalimentación en tiempo real.',
78
+ html: 'El <strong>Cuadrado de Pearson</strong> es una de las herramientas más antiguas y elegantes de la matemática enológica. Desarrollado en el siglo XIX, permite a cualquier elaborador -profesional o aficionado- calcular proporciones de mezcla con solo sumas y restas. Nuestra herramienta digitaliza este método visual y añade retroalimentación en tiempo real.',
79
79
  },
80
80
  {
81
81
  type: 'stats',
82
82
  items: [
83
- { label: 'Vermut', value: '1518% Vol.', icon: 'mdi:glass-cocktail' },
84
- { label: 'Oporto', value: '1820% Vol.', icon: 'mdi:bottle-wine' },
85
- { label: 'Jerez', value: '1517% Vol.', icon: 'mdi:cup-water' },
83
+ { label: 'Vermut', value: '15-18% Vol.', icon: 'mdi:glass-cocktail' },
84
+ { label: 'Oporto', value: '18-20% Vol.', icon: 'mdi:bottle-wine' },
85
+ { label: 'Jerez', value: '15-17% Vol.', icon: 'mdi:cup-water' },
86
86
  ],
87
87
  columns: 3,
88
88
  },
@@ -90,7 +90,7 @@ const seo: FortifiedWineBuilderLocaleContent['seo'] = [
90
90
  type: 'card',
91
91
  title: '¿Por qué fortify al 18%?',
92
92
  icon: 'mdi:shield-check',
93
- html: 'A partir de aproximadamente el 15% de alcohol, el <em>Saccharomyces cerevisiae</em> la levadura principal del vino queda inhibida. Al llegar al 18%, la fermentación se detiene completamente. Por eso el oporto conserva azúcar residual: el aguardiente se añade a mitad de la fermentación, matando la levadura antes de que consuma todo el azúcar.',
93
+ html: 'A partir de aproximadamente el 15% de alcohol, el <em>Saccharomyces cerevisiae</em> -la levadura principal del vino- queda inhibida. Al llegar al 18%, la fermentación se detiene completamente. Por eso el oporto conserva azúcar residual: el aguardiente se añade a mitad de la fermentación, matando la levadura antes de que consuma todo el azúcar.',
94
94
  },
95
95
  {
96
96
  type: 'tip',
@@ -3,7 +3,7 @@ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dt
3
3
  import type { FortifiedWineBuilderUI, FortifiedWineBuilderLocaleContent } from '../index';
4
4
 
5
5
  const slug = 'constructeur-vin-fortifie';
6
- const title = 'Constructeur de Vin Fortifié & Vermouth : Calculateur Carré de Pearson';
6
+ const title = 'Constructeur de Vin Fortifié & Vermouth: Calculateur Carré de Pearson';
7
7
  const description = 'Calculez exactement quelle quantité d\'alcool ajouter à votre vin pour atteindre le degré alcoolique cible. Élaborez le vermouth, le porto et le xérès parfaits grâce à la méthode du carré de Pearson.';
8
8
 
9
9
  const ui: FortifiedWineBuilderUI = {
@@ -47,11 +47,11 @@ const faq: FortifiedWineBuilderLocaleContent['faq'] = [
47
47
  },
48
48
  {
49
49
  question: 'Quel est le TAV typique du vermouth ?',
50
- answer: 'Le vermouth traditionnel a un TAV compris entre 15 % et 18 %. Le vermouth sec (style français) se situe généralement dans la partie basse (1516 %), tandis que le vermouth doux (style italien) atteint souvent 1618 %. Le vermouth rosé se trouve entre les deux.',
50
+ answer: 'Le vermouth traditionnel a un TAV compris entre 15 % et 18 %. Le vermouth sec (style français) se situe généralement dans la partie basse (15-16 %), tandis que le vermouth doux (style italien) atteint souvent 16-18 %. Le vermouth rosé se trouve entre les deux.',
51
51
  },
52
52
  {
53
53
  question: 'Quel vin de base utiliser pour le vermouth ?',
54
- answer: 'Traditionnellement, un vin blanc sec et neutre entre 10 et 12 % TAV convient le mieux. Le vin constitue la base, mais comme il sera aromatisé avec des herbes et des botaniques, il n\'est pas nécessaire d\'utiliser un vin coûteux une base propre et acide est idéale.',
54
+ answer: 'Traditionnellement, un vin blanc sec et neutre entre 10 et 12 % TAV convient le mieux. Le vin constitue la base, mais comme il sera aromatisé avec des herbes et des botaniques, il n\'est pas nécessaire d\'utiliser un vin coûteux - une base propre et acide est idéale.',
55
55
  },
56
56
  {
57
57
  question: 'Puis-je utiliser de l\'alcool neutre à la place du brandy ?',
@@ -59,7 +59,7 @@ const faq: FortifiedWineBuilderLocaleContent['faq'] = [
59
59
  },
60
60
  {
61
61
  question: 'Comment la fortification conserve-t-elle le vin ?',
62
- answer: 'Lorsque le TAV du vin dépasse environ 1516 %, la fermentation par les levures est inhibée les levures ne peuvent pas survivre dans des environnements à haute teneur en alcool. C\'est pourquoi les vins fortifiés ont une durée de conservation bien plus longue que les vins ordinaires. L\'alcool agit comme conservateur naturel contre la détérioration par les levures et les bactéries.',
62
+ answer: 'Lorsque le TAV du vin dépasse environ 15-16 %, la fermentation par les levures est inhibée - les levures ne peuvent pas survivre dans des environnements à haute teneur en alcool. C\'est pourquoi les vins fortifiés ont une durée de conservation bien plus longue que les vins ordinaires. L\'alcool agit comme conservateur naturel contre la détérioration par les levures et les bactéries.',
63
63
  },
64
64
  ];
65
65
 
@@ -72,14 +72,14 @@ const howTo: FortifiedWineBuilderLocaleContent['howTo'] = [
72
72
 
73
73
 
74
74
  const seo: FortifiedWineBuilderLocaleContent['seo'] = [
75
- { type: 'title', text: 'Le Carré de Pearson : Mathématiques ancestrales, vin parfait', level: 2 },
76
- { type: 'paragraph', html: 'Le <strong>carré de Pearson</strong> est l\'un des outils les plus anciens et les plus élégants des mathématiques vinicoles. Développé au XIXe siècle, il permet à tout vigneron professionnel ou amateur de calculer des ratios de mélange avec rien de plus que des soustractions. Notre outil numérise cette méthode visuelle et ajoute un retour en temps réel, pour que vous passiez moins de temps à calculer et plus de temps à élaborer.' },
77
- { type: 'stats', items: [{ label: 'Vermouth', value: '1518 % vol.', icon: 'mdi:glass-cocktail' }, { label: 'Porto', value: '1820 % vol.', icon: 'mdi:bottle-wine' }, { label: 'Xérès', value: '1517 % vol.', icon: 'mdi:cup-water' }], columns: 3 },
78
- { type: 'card', title: 'Pourquoi fortifier à 18 % ?', icon: 'mdi:shield-check', html: 'Au-delà d\'environ 15 % vol., <em>Saccharomyces cerevisiae</em> la principale levure du vin est inhibée. À 18 %, la fermentation est complètement arrêtée. C\'est pourquoi le porto conserve son sucre résiduel : l\'alcool est ajouté en cours de fermentation, tuant la levure avant que tout le sucre soit consommé.' },
79
- { type: 'tip', title: 'Conseil de pro : Mesurer à 20 °C', html: 'La densité de l\'alcool varie avec la température. Les mesures officielles de TAV sont calibrées à 20 °C. Si votre alcool ou votre vin est significativement plus chaud ou plus froid, appliquez un facteur de correction : environ +0,04 % vol. par °C en dessous de 20 °C et −0,04 % par °C au-dessus.' },
75
+ { type: 'title', text: 'Le Carré de Pearson: Mathématiques ancestrales, vin parfait', level: 2 },
76
+ { type: 'paragraph', html: 'Le <strong>carré de Pearson</strong> est l\'un des outils les plus anciens et les plus élégants des mathématiques vinicoles. Développé au XIXe siècle, il permet à tout vigneron - professionnel ou amateur - de calculer des ratios de mélange avec rien de plus que des soustractions. Notre outil numérise cette méthode visuelle et ajoute un retour en temps réel, pour que vous passiez moins de temps à calculer et plus de temps à élaborer.' },
77
+ { type: 'stats', items: [{ label: 'Vermouth', value: '15-18 % vol.', icon: 'mdi:glass-cocktail' }, { label: 'Porto', value: '18-20 % vol.', icon: 'mdi:bottle-wine' }, { label: 'Xérès', value: '15-17 % vol.', icon: 'mdi:cup-water' }], columns: 3 },
78
+ { type: 'card', title: 'Pourquoi fortifier à 18 % ?', icon: 'mdi:shield-check', html: 'Au-delà d\'environ 15 % vol., <em>Saccharomyces cerevisiae</em> - la principale levure du vin - est inhibée. À 18 %, la fermentation est complètement arrêtée. C\'est pourquoi le porto conserve son sucre résiduel: l\'alcool est ajouté en cours de fermentation, tuant la levure avant que tout le sucre soit consommé.' },
79
+ { type: 'tip', title: 'Conseil de pro: Mesurer à 20 °C', html: 'La densité de l\'alcool varie avec la température. Les mesures officielles de TAV sont calibrées à 20 °C. Si votre alcool ou votre vin est significativement plus chaud ou plus froid, appliquez un facteur de correction: environ +0,04 % vol. par °C en dessous de 20 °C et −0,04 % par °C au-dessus.' },
80
80
  { type: 'title', text: 'La Renaissance du Vermouth Artisanal', level: 2 },
81
81
  { type: 'paragraph', html: 'L\'Europe du Sud connaît une renaissance du vermouth artisanal. Barcelone, Valence et Saint-Sébastien ont reconquis <em>la hora del vermut</em> comme institution culturelle, et de petits producteurs en Espagne, en Italie et en France mettent en bouteille des expressions remarquables. Cela a créé une nouvelle génération de producteurs maison qui souhaitent des outils techniques à la hauteur de leurs ambitions.' },
82
- { type: 'summary', title: 'À qui s\'adresse cet outil ?', items: ['Vignerons amateurs : Fortifiez votre récolte avec précision plutôt qu\'au hasard.', 'Producteurs de vermouth artisanal : Prototypez de nouveaux TAV cibles avant de passer à de grandes quantités.', 'Éducateurs en spiritueux : Démontrez visuellement la méthode du carré de Pearson en atelier.'] },
82
+ { type: 'summary', title: 'À qui s\'adresse cet outil ?', items: ['Vignerons amateurs: Fortifiez votre récolte avec précision plutôt qu\'au hasard.', 'Producteurs de vermouth artisanal: Prototypez de nouveaux TAV cibles avant de passer à de grandes quantités.', 'Éducateurs en spiritueux: Démontrez visuellement la méthode du carré de Pearson en atelier.'] },
83
83
  ];
84
84
 
85
85
  const schemas: FortifiedWineBuilderLocaleContent['schemas'] = [
@@ -51,7 +51,7 @@ const faq: FortifiedWineBuilderLocaleContent['faq'] = [
51
51
  },
52
52
  {
53
53
  question: 'Wine dasar apa yang harus saya gunakan untuk vermouth?',
54
- answer: 'Secara tradisional, wine putih kering dan netral dengan kadar alkohol 10-12% paling cocok digunakan. Wine memberikan tulang punggung, tetapi karena akan diberi aroma dengan rempah dan bahan botanikal, Anda tidak perlu wine mahal dasar yang bersih dan asam adalah yang ideal.',
54
+ answer: 'Secara tradisional, wine putih kering dan netral dengan kadar alkohol 10-12% paling cocok digunakan. Wine memberikan tulang punggung, tetapi karena akan diberi aroma dengan rempah dan bahan botanikal, Anda tidak perlu wine mahal - dasar yang bersih dan asam adalah yang ideal.',
55
55
  },
56
56
  {
57
57
  question: 'Bisakah saya menggunakan alkohol netral sebagai pengganti brandy?',
@@ -59,7 +59,7 @@ const faq: FortifiedWineBuilderLocaleContent['faq'] = [
59
59
  },
60
60
  {
61
61
  question: 'Bagaimana fortifikasi mengawetkan wine?',
62
- answer: 'Ketika kadar alkohol wine melebihi sekitar 15-16%, fermentasi oleh ragi terhambat ragi tidak dapat bertahan di lingkungan beralkohol tinggi. Inilah mengapa wine fortifikasi memiliki umur simpan yang jauh lebih panjang daripada wine biasa. Alkohol bertindak sebagai pengawet alami terhadap pembusukan oleh ragi maupun bakteri.',
62
+ answer: 'Ketika kadar alkohol wine melebihi sekitar 15-16%, fermentasi oleh ragi terhambat - ragi tidak dapat bertahan di lingkungan beralkohol tinggi. Inilah mengapa wine fortifikasi memiliki umur simpan yang jauh lebih panjang daripada wine biasa. Alkohol bertindak sebagai pengawet alami terhadap pembusukan oleh ragi maupun bakteri.',
63
63
  },
64
64
  ];
65
65
 
@@ -73,9 +73,9 @@ const howTo: FortifiedWineBuilderLocaleContent['howTo'] = [
73
73
 
74
74
  const seo: FortifiedWineBuilderLocaleContent['seo'] = [
75
75
  { type: 'title', text: 'Pearson Square: Matematika Kuno, Wine Sempurna', level: 2 },
76
- { type: 'paragraph', html: '<strong>Pearson Square</strong> adalah salah satu alat paling tua dan elegan dalam matematika pembuatan wine. Dikembangkan pada abad ke-19, alat ini memungkinkan siapa pun profesional atau amatir untuk menghitung rasio pencampuran hanya dengan pengurangan. Alat kami mendigitalkan metode visual ini dan menambahkan umpan balik real-time, sehingga Anda menghabiskan lebih sedikit waktu untuk menghitung dan lebih banyak waktu untuk berkreasi.' },
77
- { type: 'stats', items: [{ label: 'Vermouth', value: '1518% vol.', icon: 'mdi:glass-cocktail' }, { label: 'Port', value: '1820% vol.', icon: 'mdi:bottle-wine' }, { label: 'Sherry', value: '1517% vol.', icon: 'mdi:cup-water' }], columns: 3 },
78
- { type: 'card', title: 'Mengapa fortifikasi pada 18%?', icon: 'mdi:shield-check', html: 'Di atas sekitar 15% vol., <em>Saccharomyces cerevisiae</em> ragi wine utama mulai terhambat. Saat mencapai 18%, fermentasi sepenuhnya terhenti. Inilah mengapa wine Port mempertahankan gula sisa: spirit ditambahkan di tengah fermentasi, membunuh ragi sebelum semua gula dikonsumsi.' },
76
+ { type: 'paragraph', html: '<strong>Pearson Square</strong> adalah salah satu alat paling tua dan elegan dalam matematika pembuatan wine. Dikembangkan pada abad ke-19, alat ini memungkinkan siapa pun - profesional atau amatir - untuk menghitung rasio pencampuran hanya dengan pengurangan. Alat kami mendigitalkan metode visual ini dan menambahkan umpan balik real-time, sehingga Anda menghabiskan lebih sedikit waktu untuk menghitung dan lebih banyak waktu untuk berkreasi.' },
77
+ { type: 'stats', items: [{ label: 'Vermouth', value: '15-18% vol.', icon: 'mdi:glass-cocktail' }, { label: 'Port', value: '18-20% vol.', icon: 'mdi:bottle-wine' }, { label: 'Sherry', value: '15-17% vol.', icon: 'mdi:cup-water' }], columns: 3 },
78
+ { type: 'card', title: 'Mengapa fortifikasi pada 18%?', icon: 'mdi:shield-check', html: 'Di atas sekitar 15% vol., <em>Saccharomyces cerevisiae</em> - ragi wine utama - mulai terhambat. Saat mencapai 18%, fermentasi sepenuhnya terhenti. Inilah mengapa wine Port mempertahankan gula sisa: spirit ditambahkan di tengah fermentasi, membunuh ragi sebelum semua gula dikonsumsi.' },
79
79
  { type: 'tip', title: 'Tips Pro: Ukur pada 20°C', html: 'Kerapatan alkohol berubah seiring suhu. Pengukuran kadar alkohol resmi dikalibrasi pada 20°C. Jika spirit atau wine Anda jauh lebih hangat atau dingin, terapkan faktor koreksi: sekitar +0,04% vol. per °C di bawah 20°C, dan −0,04% per °C di atasnya.' },
80
80
  { type: 'title', text: 'Renaisans Vermouth Artisanal', level: 2 },
81
81
  { type: 'paragraph', html: 'Eropa selatan sedang mengalami renaisans vermouth artisanal. Barcelona, Valencia, dan San Sebastián telah merebut kembali <em>la hora del vermut</em> sebagai institusi budaya, dan produsen kecil di Spanyol, Italia, dan Prancis membotolkan ekspresi yang luar biasa. Hal ini menciptakan generasi baru produsen rumahan yang menginginkan alat teknis sesuai dengan ambisi mereka.' },
@@ -47,11 +47,11 @@ const faq: FortifiedWineBuilderLocaleContent['faq'] = [
47
47
  },
48
48
  {
49
49
  question: 'Qual è la gradazione tipica del vermouth?',
50
- answer: 'Il vermouth tradizionale ha una gradazione compresa tra il 15 % e il 18 %. Il vermouth secco (stile francese) si trova generalmente nella fascia bassa (1516 %), mentre il vermouth dolce (stile italiano) raggiunge spesso il 1618 %. Il vermouth rosato si colloca nel mezzo.',
50
+ answer: 'Il vermouth tradizionale ha una gradazione compresa tra il 15 % e il 18 %. Il vermouth secco (stile francese) si trova generalmente nella fascia bassa (15-16 %), mentre il vermouth dolce (stile italiano) raggiunge spesso il 16-18 %. Il vermouth rosato si colloca nel mezzo.',
51
51
  },
52
52
  {
53
53
  question: 'Quale vino base devo usare per il vermouth?',
54
- answer: 'Tradizionalmente funziona meglio un vino bianco secco e neutro tra il 10 e il 12 % di gradazione alcolica. Il vino fornisce la struttura di base, ma poiché verrà aromatizzato con erbe e botaniche, non è necessario un vino costoso una base pulita e acida è l\'ideale.',
54
+ answer: 'Tradizionalmente funziona meglio un vino bianco secco e neutro tra il 10 e il 12 % di gradazione alcolica. Il vino fornisce la struttura di base, ma poiché verrà aromatizzato con erbe e botaniche, non è necessario un vino costoso - una base pulita e acida è l\'ideale.',
55
55
  },
56
56
  {
57
57
  question: 'Posso usare alcol neutro invece del brandy?',
@@ -59,7 +59,7 @@ const faq: FortifiedWineBuilderLocaleContent['faq'] = [
59
59
  },
60
60
  {
61
61
  question: 'Come fa la fortificazione a conservare il vino?',
62
- answer: 'Quando la gradazione alcolica del vino supera circa il 1516 %, la fermentazione da parte dei lieviti viene inibita i lieviti non sopravvivono in ambienti ad alto contenuto alcolico. Per questo motivo i vini fortificati hanno una conservabilità molto più lunga rispetto ai vini normali. L\'alcol agisce come conservante naturale contro il deterioramento da lieviti e batteri.',
62
+ answer: 'Quando la gradazione alcolica del vino supera circa il 15-16 %, la fermentazione da parte dei lieviti viene inibita - i lieviti non sopravvivono in ambienti ad alto contenuto alcolico. Per questo motivo i vini fortificati hanno una conservabilità molto più lunga rispetto ai vini normali. L\'alcol agisce come conservante naturale contro il deterioramento da lieviti e batteri.',
63
63
  },
64
64
  ];
65
65
 
@@ -73,9 +73,9 @@ const howTo: FortifiedWineBuilderLocaleContent['howTo'] = [
73
73
 
74
74
  const seo: FortifiedWineBuilderLocaleContent['seo'] = [
75
75
  { type: 'title', text: 'Il Quadrato di Pearson: Matematica antica, vino perfetto', level: 2 },
76
- { type: 'paragraph', html: 'Il <strong>Quadrato di Pearson</strong> è uno degli strumenti più antichi ed eleganti della matematica enologica. Sviluppato nel XIX secolo, permette a qualsiasi produttore di vino professionista o amatore di calcolare i rapporti di miscelazione con nient\'altro che sottrazioni. Il nostro strumento digitalizza questo metodo visivo e aggiunge un feedback in tempo reale, così passi meno tempo a calcolare e più tempo a creare.' },
77
- { type: 'stats', items: [{ label: 'Vermouth', value: '1518 % vol.', icon: 'mdi:glass-cocktail' }, { label: 'Porto', value: '1820 % vol.', icon: 'mdi:bottle-wine' }, { label: 'Sherry', value: '1517 % vol.', icon: 'mdi:cup-water' }], columns: 3 },
78
- { type: 'card', title: 'Perché fortificare al 18 %?', icon: 'mdi:shield-check', html: 'Oltre circa il 15 % vol., <em>Saccharomyces cerevisiae</em> il principale lievito del vino viene inibito. Raggiunto il 18 %, la fermentazione è completamente arrestata. Ecco perché il vino porto conserva lo zucchero residuo: il distillato viene aggiunto a metà fermentazione, uccidendo il lievito prima che tutto lo zucchero venga consumato.' },
76
+ { type: 'paragraph', html: 'Il <strong>Quadrato di Pearson</strong> è uno degli strumenti più antichi ed eleganti della matematica enologica. Sviluppato nel XIX secolo, permette a qualsiasi produttore di vino - professionista o amatore - di calcolare i rapporti di miscelazione con nient\'altro che sottrazioni. Il nostro strumento digitalizza questo metodo visivo e aggiunge un feedback in tempo reale, così passi meno tempo a calcolare e più tempo a creare.' },
77
+ { type: 'stats', items: [{ label: 'Vermouth', value: '15-18 % vol.', icon: 'mdi:glass-cocktail' }, { label: 'Porto', value: '18-20 % vol.', icon: 'mdi:bottle-wine' }, { label: 'Sherry', value: '15-17 % vol.', icon: 'mdi:cup-water' }], columns: 3 },
78
+ { type: 'card', title: 'Perché fortificare al 18 %?', icon: 'mdi:shield-check', html: 'Oltre circa il 15 % vol., <em>Saccharomyces cerevisiae</em> - il principale lievito del vino - viene inibito. Raggiunto il 18 %, la fermentazione è completamente arrestata. Ecco perché il vino porto conserva lo zucchero residuo: il distillato viene aggiunto a metà fermentazione, uccidendo il lievito prima che tutto lo zucchero venga consumato.' },
79
79
  { type: 'tip', title: 'Consiglio Pro: Misurare a 20 °C', html: 'La densità dell\'alcol cambia con la temperatura. Le misurazioni ufficiali della gradazione alcolica sono calibrate a 20 °C. Se il tuo distillato o vino è significativamente più caldo o più freddo, applica un fattore di correzione: circa +0,04 % vol. per °C al di sotto dei 20 °C e −0,04 % per °C al di sopra.' },
80
80
  { type: 'title', text: 'La Rinascita del Vermouth Artigianale', level: 2 },
81
81
  { type: 'paragraph', html: 'L\'Europa meridionale sta vivendo una rinascita del vermouth artigianale. Barcellona, Valencia e San Sebastián hanno recuperato <em>la hora del vermut</em> come istituzione culturale, e piccoli produttori in Spagna, Italia e Francia stanno imbottigliando espressioni straordinarie. Ciò ha creato una nuova generazione di produttori casalinghi che desiderano strumenti tecnici all\'altezza delle loro ambizioni.' },