@jjlmoya/utils-alcohol 1.13.0 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/package.json +59 -58
  2. package/src/category/i18n/id.ts +28 -0
  3. package/src/category/i18n/sv.ts +19 -0
  4. package/src/category/index.ts +2 -0
  5. package/src/tests/faq_count.test.ts +12 -10
  6. package/src/tests/i18n_coverage.test.ts +36 -0
  7. package/src/tests/locale_completeness.test.ts +42 -0
  8. package/src/tests/no_h1_in_components.test.ts +48 -0
  9. package/src/tests/schemas_fulfillment.test.ts +23 -0
  10. package/src/tests/seo_length.test.ts +3 -34
  11. package/src/tests/title_quality.test.ts +55 -0
  12. package/src/tests/tool_validation.test.ts +4 -4
  13. package/src/tool/alcoholClearance/i18n/de.ts +205 -0
  14. package/src/tool/alcoholClearance/i18n/en.ts +22 -1
  15. package/src/tool/alcoholClearance/i18n/es.ts +22 -1
  16. package/src/tool/alcoholClearance/i18n/fr.ts +22 -1
  17. package/src/tool/alcoholClearance/i18n/id.ts +205 -0
  18. package/src/tool/alcoholClearance/i18n/it.ts +180 -0
  19. package/src/tool/alcoholClearance/i18n/ja.ts +205 -0
  20. package/src/tool/alcoholClearance/i18n/ko.ts +205 -0
  21. package/src/tool/alcoholClearance/i18n/nl.ts +205 -0
  22. package/src/tool/alcoholClearance/i18n/pl.ts +205 -0
  23. package/src/tool/alcoholClearance/i18n/pt.ts +205 -0
  24. package/src/tool/alcoholClearance/i18n/ru.ts +205 -0
  25. package/src/tool/alcoholClearance/i18n/sv.ts +205 -0
  26. package/src/tool/alcoholClearance/i18n/tr.ts +180 -0
  27. package/src/tool/alcoholClearance/i18n/zh.ts +205 -0
  28. package/src/tool/alcoholClearance/index.ts +13 -1
  29. package/src/tool/beerCooler/i18n/de.ts +197 -0
  30. package/src/tool/beerCooler/i18n/en.ts +25 -4
  31. package/src/tool/beerCooler/i18n/es.ts +25 -4
  32. package/src/tool/beerCooler/i18n/fr.ts +25 -4
  33. package/src/tool/beerCooler/i18n/id.ts +197 -0
  34. package/src/tool/beerCooler/i18n/it.ts +197 -0
  35. package/src/tool/beerCooler/i18n/ja.ts +197 -0
  36. package/src/tool/beerCooler/i18n/ko.ts +197 -0
  37. package/src/tool/beerCooler/i18n/nl.ts +197 -0
  38. package/src/tool/beerCooler/i18n/pl.ts +197 -0
  39. package/src/tool/beerCooler/i18n/pt.ts +197 -0
  40. package/src/tool/beerCooler/i18n/ru.ts +197 -0
  41. package/src/tool/beerCooler/i18n/sv.ts +197 -0
  42. package/src/tool/beerCooler/i18n/tr.ts +197 -0
  43. package/src/tool/beerCooler/i18n/zh.ts +197 -0
  44. package/src/tool/beerCooler/index.ts +13 -1
  45. package/src/tool/carbonationCalculator/i18n/de.ts +200 -0
  46. package/src/tool/carbonationCalculator/i18n/en.ts +22 -1
  47. package/src/tool/carbonationCalculator/i18n/es.ts +22 -1
  48. package/src/tool/carbonationCalculator/i18n/fr.ts +22 -1
  49. package/src/tool/carbonationCalculator/i18n/id.ts +200 -0
  50. package/src/tool/carbonationCalculator/i18n/it.ts +200 -0
  51. package/src/tool/carbonationCalculator/i18n/ja.ts +200 -0
  52. package/src/tool/carbonationCalculator/i18n/ko.ts +200 -0
  53. package/src/tool/carbonationCalculator/i18n/nl.ts +200 -0
  54. package/src/tool/carbonationCalculator/i18n/pl.ts +200 -0
  55. package/src/tool/carbonationCalculator/i18n/pt.ts +200 -0
  56. package/src/tool/carbonationCalculator/i18n/ru.ts +200 -0
  57. package/src/tool/carbonationCalculator/i18n/sv.ts +200 -0
  58. package/src/tool/carbonationCalculator/i18n/tr.ts +200 -0
  59. package/src/tool/carbonationCalculator/i18n/zh.ts +200 -0
  60. package/src/tool/carbonationCalculator/index.ts +13 -1
  61. package/src/tool/cocktailBalancer/i18n/de.ts +222 -0
  62. package/src/tool/cocktailBalancer/i18n/en.ts +23 -2
  63. package/src/tool/cocktailBalancer/i18n/es.ts +23 -2
  64. package/src/tool/cocktailBalancer/i18n/fr.ts +23 -2
  65. package/src/tool/cocktailBalancer/i18n/id.ts +222 -0
  66. package/src/tool/cocktailBalancer/i18n/it.ts +222 -0
  67. package/src/tool/cocktailBalancer/i18n/ja.ts +222 -0
  68. package/src/tool/cocktailBalancer/i18n/ko.ts +222 -0
  69. package/src/tool/cocktailBalancer/i18n/nl.ts +222 -0
  70. package/src/tool/cocktailBalancer/i18n/pl.ts +222 -0
  71. package/src/tool/cocktailBalancer/i18n/pt.ts +222 -0
  72. package/src/tool/cocktailBalancer/i18n/ru.ts +222 -0
  73. package/src/tool/cocktailBalancer/i18n/sv.ts +222 -0
  74. package/src/tool/cocktailBalancer/i18n/tr.ts +222 -0
  75. package/src/tool/cocktailBalancer/i18n/zh.ts +222 -0
  76. package/src/tool/cocktailBalancer/index.ts +13 -1
  77. package/src/tool/partyKeg/i18n/de.ts +187 -0
  78. package/src/tool/partyKeg/i18n/en.ts +22 -1
  79. package/src/tool/partyKeg/i18n/es.ts +22 -1
  80. package/src/tool/partyKeg/i18n/fr.ts +23 -2
  81. package/src/tool/partyKeg/i18n/id.ts +187 -0
  82. package/src/tool/partyKeg/i18n/it.ts +187 -0
  83. package/src/tool/partyKeg/i18n/ja.ts +187 -0
  84. package/src/tool/partyKeg/i18n/ko.ts +187 -0
  85. package/src/tool/partyKeg/i18n/nl.ts +187 -0
  86. package/src/tool/partyKeg/i18n/pl.ts +187 -0
  87. package/src/tool/partyKeg/i18n/pt.ts +187 -0
  88. package/src/tool/partyKeg/i18n/ru.ts +187 -0
  89. package/src/tool/partyKeg/i18n/sv.ts +187 -0
  90. package/src/tool/partyKeg/i18n/tr.ts +187 -0
  91. package/src/tool/partyKeg/i18n/zh.ts +187 -0
  92. package/src/tool/partyKeg/index.ts +13 -1
  93. package/src/types.ts +1 -1
  94. package/src/tests/content_mandatory.test.ts +0 -32
@@ -0,0 +1,205 @@
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
+ import type { AlcoholClearanceUI, AlcoholClearanceLocaleContent } from '../index';
3
+
4
+ const slug = 'alcohol-clearance-calculator';
5
+ const title = '宿醉与血液酒精含量计算器:恢复预测器';
6
+ const description = '使用Widmark公式计算你的血液酒精含量(BAC)和达到0.0所需的时间。计划睡前补液并了解你何时完全恢复。';
7
+
8
+ const ui: AlcoholClearanceUI = {
9
+ biologicalSexLabel: '生物性别',
10
+ weightLabel: '体重',
11
+ kgUnit: 'kg',
12
+ addDrinkLabel: '添加饮品',
13
+ beerLabel: '啤酒',
14
+ wineLabel: '葡萄酒',
15
+ spiritLabel: '混合饮品',
16
+ shotLabel: '一杯',
17
+ accumulatedLabel: '已消耗的饮品',
18
+ emptyListLabel: '你的列表是空的',
19
+ emptySubLabel: '选择饮品来计算。',
20
+ estimatedBacLabel: '估计BAC',
21
+ bacUnit: 'BAC',
22
+ timeToZeroLabel: '达到0.0',
23
+ waterAdviceLabel: '水(睡前)',
24
+ pillAdviceLabel: '补充剂',
25
+ noneAdvice: '不需要',
26
+ hydrationAdvice: '优先级:补水',
27
+ electrolytesAdvice: '电解质 + 维生素 B',
28
+ disclaimerText: '该计算器是一个理论估计。代谢和食物会改变结果。不要酒驾。',
29
+ drinkUnit: '杯',
30
+ drinksUnit: '杯'
31
+ };
32
+
33
+ const faqTitle = '常见问题';
34
+ const bibliographyTitle = '参考文献和来源';
35
+
36
+ const faq: AlcoholClearanceLocaleContent['faq'] = [
37
+ {
38
+ question: "什么是标准饮品单位,每种饮品中有多少?",
39
+ answer: "标准饮品单位含约10克纯酒精(英国/欧盟定义;美国为14克)。普通啤酒(5%酒精度330ml)含约1.3单位,葡萄酒杯(12%酒精度150ml)约1.4单位,一杯烈酒(40%酒精度40ml)约1.3单位。了解你所喝饮品中的单位对正确解释计算器的结果至关重要。",
40
+ },
41
+ {
42
+ question: "为什么生物性别会影响BAC计算?",
43
+ answer: "生物性别影响Widmark系数'r',它表示总体水分占体重的比例。男性平均r=0.68,因为他们的体水分比例更高。女性平均r=0.55,因为体脂肪比例更高,酒精吸收较少。这意味着对于相同的饮品和体重,女性会达到更高的BAC。",
44
+ },
45
+ {
46
+ question: "咖啡、水或运动能加速酒精消除吗?",
47
+ answer: "不能。肝脏以恒定速率约0.15克/升每小时消除酒精(零阶动力学)。咖啡可以掩盖疲劳,水有助于缓解脱水,运动改善整体健康——但都不会降低你的实际BAC。只有时间才能从血液中消除酒精。",
48
+ },
49
+ {
50
+ question: "喝酒后进食有助于降低BAC吗?",
51
+ answer: "喝酒后进食不会减少已经在血液中的酒精。食物最重要的是在喝酒前或喝酒时:胃中的食物——特别是蛋白质和脂肪——会减缓胃吸收并能降低你的峰值BAC高达50%。一旦酒精被吸收,只有肝脏代谢才能消除它。",
52
+ },
53
+ {
54
+ question: "达到0.0 BAC需要多长时间?",
55
+ answer: "这取决于你的起始BAC。将你的估计BAC(克/升)除以0.15即可获得大约的小时数。例如,BAC为1.5克/升约需10小时。肝脏永不停止:即使你睡眠中也会处理酒精。但要注意——即使你感觉完全恢复,酒精仍可能存在于你的血液中。",
56
+ },
57
+ {
58
+ question: "该计算器对决定是否驾驶100%可靠吗?",
59
+ answer: "不。该工具是基于Widmark公式的理论估计。食物摄入、药物、疲劳、遗传ADH酶变异和压力等因素可能使你的实际BAC偏离20-30%。永远不要使用该计算器来决定是否驾驶。如果你喝过酒,不要驾驶——这是唯一没有容错空间的规则。",
60
+ },
61
+ ];
62
+
63
+ const bibliography: AlcoholClearanceLocaleContent['bibliography'] = [
64
+ {
65
+ name: "酒精计算及其不确定性 - PMC",
66
+ url: "https://pmc.ncbi.nlm.nih.gov/articles/PMC4361698/",
67
+ },
68
+ {
69
+ name: "酒精代谢:身体如何处理酒精 - NIH",
70
+ url: "https://www.niaaa.nih.gov/publications/alcohol-metabolism",
71
+ },
72
+ ];
73
+
74
+ const howTo: AlcoholClearanceLocaleContent['howTo'] = [
75
+ {
76
+ name: "设置你的个人资料",
77
+ text: "选择你的生物性别(影响体水百分比)和你的当前体重。",
78
+ },
79
+ {
80
+ name: "添加消耗的饮品",
81
+ text: "点击你已喝的饮品图标。它们将积累在下面的列表中。",
82
+ },
83
+ {
84
+ name: "检查安全时间",
85
+ text: "观察估计的BAC,最重要的是,肝脏处理所有摄入的乙醇需要的时间。",
86
+ },
87
+ ];
88
+
89
+ const seo: AlcoholClearanceLocaleContent['seo'] = [
90
+ {
91
+ type: 'title',
92
+ text: '酒精代谢:科学与消除',
93
+ level: 2
94
+ },
95
+ {
96
+ type: 'paragraph',
97
+ html: '了解我们的身体如何处理乙醇对安全和减轻宿醉至关重要。我们的<strong>酒精消除计算器</strong>使用公认的<strong>Widmark公式</strong>为你提供清晰的代谢状态图谱。酒精不会通过出汗、喝水或运动消除——只有时间和肝脏代谢才能降低你的血液酒精浓度。'
98
+ },
99
+ {
100
+ type: 'diagnostic',
101
+ title: 'BAC的药物动力学',
102
+ icon: 'mdi:gender-male-female',
103
+ variant: 'info',
104
+ badge: '生物化学',
105
+ html: '酒精通过体水分布。体重和Widmark系数r(男性0.68/女性0.55)等因素决定了乙醇在血液中的初始稀释。这就是为什么体重相同的两个人喝相同饮品后BAC值会有很大不同。'
106
+ },
107
+ {
108
+ type: 'title',
109
+ text: '肝氧化和酶',
110
+ level: 2
111
+ },
112
+ {
113
+ type: 'paragraph',
114
+ html: '肝脏通过酒精脱氢酶(ADH)降解95%的酒精。此过程以恒定速率进行(零阶动力学),这意味着它不能通过运动或咖啡加快。剩余5%通过呼吸、尿液和汗液排出——这是呼气酒精测试在交通执法中的基础。'
115
+ },
116
+ {
117
+ type: 'stats',
118
+ items: [
119
+ { label: '消除速率', value: '0.15克/升·小时', icon: 'mdi:clock-fast' },
120
+ { label: '胃吸收', value: '乙醇20%', icon: 'mdi:stomach' },
121
+ { label: '建议补水', value: '1:1水/饮品', icon: 'mdi:water' }
122
+ ],
123
+ columns: 3
124
+ },
125
+ {
126
+ type: 'proscons',
127
+ title: '神话与现实',
128
+ items: [
129
+ { pro: '睡前喝水和电解质通过对抗利尿来减轻宿醉严重程度。', con: '' },
130
+ { pro: '', con: '冷水澡:它们根本不影响血液酒精浓度。' },
131
+ { pro: '', con: '咖啡:掩盖困意但不能恢复丧失的反射或认知功能。' }
132
+ ]
133
+ },
134
+ {
135
+ type: 'card',
136
+ title: '什么导致宿醉?',
137
+ icon: 'mdi:alert-decagram',
138
+ html: '科学上称为veisalgia,宿醉由全身脱水(乙醇导致的血管升压素抑制)、乙醛积累(有毒代谢产物)和细胞因子炎症免疫反应引起。酒精抑制后大脑的谷氨酸反弹也导致第二天早上对光和声音的焦虑和敏感。'
139
+ },
140
+ {
141
+ type: 'tip',
142
+ title: '安全第一:了解你的限制',
143
+ html: '0.05% BAC明显会损害判断力、追踪能力和反应时间。大多数国家将法定驾驶限制设置在0.05%至0.08%之间。然而,个人敏感性差异很大——年龄、药物、疲劳和遗传ADH酶变异都会改变酒精如何影响你。有疑问时,不要驾驶。'
144
+ },
145
+ {
146
+ type: 'title',
147
+ text: '食物的作用和吸收速率',
148
+ level: 2
149
+ },
150
+ {
151
+ type: 'paragraph',
152
+ html: '喝酒前或喝酒时进食会大幅改变酒精吸收动力学。胃中的食物——特别是蛋白质和脂肪——会减缓胃排空,降低乙醇进入血液的峰值速率。空腹饮酒的人可以达到的峰值BAC比饮前进食相同量的人高50%。这是Widmark公式无法完全捕捉的最强大变量之一,这就是为什么我们的计算器包含了关于理论估计的免责声明。'
153
+ },
154
+ {
155
+ type: 'paragraph',
156
+ html: '酒精饮品的类型也很重要,不仅仅是酒精度和体积。碳酸混合料(汤力水、起泡酒)加快胃排空并将酒精更快推入血液。酒精度极高的饮品(>25%)可能会暂时抑制胃蠕动,减慢吸收。甜饮品可能掩盖酒精的感觉,导致人们喝得比意识到的更快。这些细微差别是为什么现实BAC可能与模型预测偏离20-30%的原因。'
157
+ }
158
+ ];
159
+
160
+ const schemas: AlcoholClearanceLocaleContent['schemas'] = [
161
+ {
162
+ '@context': 'https://schema.org',
163
+ '@type': 'FAQPage',
164
+ mainEntity: faq.map((item) => ({
165
+ '@type': 'Question',
166
+ name: item.question,
167
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
168
+ })),
169
+ } as WithContext<FAQPage>,
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'HowTo',
173
+ name: title,
174
+ description: description,
175
+ step: howTo.map((step, i) => ({
176
+ '@type': 'HowToStep',
177
+ position: i + 1,
178
+ name: step.name,
179
+ text: step.text,
180
+ })),
181
+ } as WithContext<HowTo>,
182
+ {
183
+ '@context': 'https://schema.org',
184
+ '@type': 'SoftwareApplication',
185
+ name: title,
186
+ description: description,
187
+ applicationCategory: 'HealthApplication',
188
+ operatingSystem: 'Web',
189
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
190
+ } as WithContext<SoftwareApplication>,
191
+ ];
192
+
193
+ export const content: AlcoholClearanceLocaleContent = {
194
+ slug,
195
+ title,
196
+ description,
197
+ ui,
198
+ seo,
199
+ faqTitle,
200
+ faq,
201
+ bibliographyTitle,
202
+ bibliography,
203
+ howTo,
204
+ schemas,
205
+ };
@@ -38,9 +38,21 @@ export const alcoholClearance: AlcoholToolEntry<AlcoholClearanceUI> = {
38
38
  fg: 'mdi:glass-cocktail',
39
39
  },
40
40
  i18n: {
41
- es: () => import('./i18n/es').then((m) => m.content),
41
+ de: () => import('./i18n/de').then((m) => m.content),
42
42
  en: () => import('./i18n/en').then((m) => m.content),
43
+ es: () => import('./i18n/es').then((m) => m.content),
43
44
  fr: () => import('./i18n/fr').then((m) => m.content),
45
+ id: () => import('./i18n/id').then((m) => m.content),
46
+ it: () => import('./i18n/it').then((m) => m.content),
47
+ ja: () => import('./i18n/ja').then((m) => m.content),
48
+ ko: () => import('./i18n/ko').then((m) => m.content),
49
+ nl: () => import('./i18n/nl').then((m) => m.content),
50
+ pl: () => import('./i18n/pl').then((m) => m.content),
51
+ pt: () => import('./i18n/pt').then((m) => m.content),
52
+ ru: () => import('./i18n/ru').then((m) => m.content),
53
+ sv: () => import('./i18n/sv').then((m) => m.content),
54
+ tr: () => import('./i18n/tr').then((m) => m.content),
55
+ zh: () => import('./i18n/zh').then((m) => m.content),
44
56
  },
45
57
  };
46
58
 
@@ -0,0 +1,197 @@
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
+ import type { BeerCoolerUI, BeerCoolerLocaleContent } from '../index';
3
+
4
+ const slug = 'beer-cooler';
5
+ const title = 'Bierkühler mit Newtonsches Abkühlungsgesetz';
6
+ const description = 'Berechne mit echter Thermodynamik — Newtonsches Abkühlungsgesetz — genau wie lange dein Bier braucht, um die perfekte Serviertemperatur im Kühlschrank oder Gefrierschrank zu erreichen.';
7
+
8
+ const ui: BeerCoolerUI = {
9
+ step1Title: 'Was kühlst du ab?',
10
+ canLabel: 'Dose',
11
+ aluminumLabel: 'Aluminium',
12
+ bottleLabel: 'Flasche',
13
+ glassLabel: 'Glas',
14
+ step2Title: 'Wo stellst du es hin?',
15
+ fridgeLabel: 'Kühlschrank',
16
+ freezerLabel: 'Gefrierschrank',
17
+ step3Title: 'Temperaturen feinjustieren',
18
+ initialTempLabel: 'Starttemperatur',
19
+ targetTempLabel: 'Zieltemperatur',
20
+ glacialLabel: 'Eiskalt',
21
+ perfectLabel: 'Perfekt',
22
+ bodegaLabel: 'Bodega',
23
+ readyTitle: 'Bereit',
24
+ readyDescription: 'Behälter und Ort auswählen zum Berechnen.',
25
+ estimatedTimeLabel: 'Geschätzte Zeit',
26
+ methodLabel: 'Methode',
27
+ containerLabel: 'Behälter',
28
+ alreadyColdLabel: 'Schon kalt!',
29
+ neverColdLabel: 'Wird nie kalt'
30
+ };
31
+
32
+ const faqTitle = 'Häufig gestellte Fragen';
33
+ const bibliographyTitle = 'Bibliografie & Quellen';
34
+
35
+ const faq: BeerCoolerLocaleContent['faq'] = [
36
+ {
37
+ question: 'Wie berechnet dieses Werkzeug die Abkühlungszeit?',
38
+ answer: 'Es wendet Newtons Abkühlungsgesetz an: T(t) = T_env + (T₀ - T_env) × e^(-kt). Die Konstante k variiert je nach Behältermaterial und Kühlmedium. Eine Aluminiumdose im Kühlschrank hat ein völlig anderes k als eine Glasflasche im Gefrierschrank. Die hier verwendeten Werte sind durch reale Experimente für jede Kombination kalibriert.',
39
+ },
40
+ {
41
+ question: 'Funktioniert der Trick mit dem nassen Papiertuch und Salz wirklich?',
42
+ answer: 'Ja, und sehr deutlich. Das Wickeln des Behälters in ein feuchtes Papiertuch mit Salz beschleunigt das Abkühlen aus zwei Gründen: Wasserverdunstung entzieht zusätzliche Wärme (Verdunstungskühlung), und Salz senkt den Gefrierpunkt des Wassers, wodurch der feuchte Kontakt länger aktiv bleibt. Du kannst in den ersten Minuten einen zusätzlichen Temperaturabfall von 2–4°C erreichen, verglichen mit einer trockenen Dose im Gefrierschrank.',
43
+ },
44
+ {
45
+ question: 'Welche ist die ideale Serviertemperatur für verschiedene Biersorten?',
46
+ answer: 'Das hängt von der Sorte ab. Lagerbiere und Pilsener werden am besten zwischen 3°C und 7°C serviert. IPAs und Pale Ales kommen bei 7°C bis 10°C zur Geltung. Stouts, Porter und komplexere Ales sollten wärmer serviert werden, zwischen 12°C und 14°C, damit ihre Aromastoffe — Kaffee, Schokolade, Nüsse — sich vollständig entfalten können.',
47
+ },
48
+ {
49
+ question: 'Kann mein Bier explodieren, wenn ich es zu lange im Gefrierschrank lasse?',
50
+ answer: 'Ja. Alkohol und gelöste Zucker senken den Gefrierpunkt des Bieres unter den von reinem Wasser: Ein standardmäßiges Lagerbier mit 5% Alkohol gefriert um -3°C. Wenn Wasser kristallisiert, nimmt das Volumen zu, und gelöstes CO2 erhöht den Innendruck, bis der Behälter nachgibt. Mehr als 60 Minuten im Gefrierschrank — besonders bei Glasflaschen — ist wirklich gefährlich. Nutze diesen Rechner, um das zu vermeiden.',
51
+ },
52
+ {
53
+ question: 'Wird Bier "geschockt", wenn es zu schnell gekühlt wird?',
54
+ answer: 'Nein. Der Mythos vom "Wärmeschock", der Bier ruiniert, ist falsch. Was es wirklich beeinträchtigen kann, ist wiederholtes Einfrieren und Auftauen — das zerstört Proteine und trübt die Flüssigkeit — oder direkte UV-Lichteinstrahlung. Ein schnelles Abkühlen im Gefrierschrank oder Eiswasser schadet dem Geschmack nicht.',
55
+ },
56
+ ];
57
+
58
+ const howTo: BeerCoolerLocaleContent['howTo'] = [
59
+ {
60
+ name: 'Behälter auswählen',
61
+ text: 'Entscheide dich zwischen einer Aluminiumdose oder einer Glasflasche. Das Material beeinflusst die Wärmeübergangsgeschwindigkeit drastisch.',
62
+ },
63
+ {
64
+ name: 'Kühlmethode wählen',
65
+ text: 'Gib an, ob du einen herkömmlichen Kühlschrank (4°C) oder einen Gefrierschrank (-18°C) für einen Ultra-Schnellprozess verwendest.',
66
+ },
67
+ {
68
+ name: 'Temperaturen anpassen',
69
+ text: 'Lege die aktuelle Temperatur des Getränks (Raumtemperatur) und deine gewünschte Zieltemperatur fest.',
70
+ },
71
+ ];
72
+
73
+ const bibliography: BeerCoolerLocaleContent['bibliography'] = [
74
+ {
75
+ name: 'Newtonsches Abkühlungsgesetz - Wikipedia',
76
+ url: 'https://en.wikipedia.org/wiki/Newton%27s_law_of_cooling',
77
+ },
78
+ {
79
+ name: 'Fortgeschrittene Chemie von Bier und Brauen - American Chemical Society',
80
+ url: 'https://www.acs.org/acs-webinars/library/advanced-chemistry-of-beer-and-brewing.html',
81
+ },
82
+ ];
83
+
84
+ const seo: BeerCoolerLocaleContent['seo'] = [
85
+ {
86
+ type: 'title',
87
+ text: 'Die Wissenschaft der Kälte und Thermodynamik',
88
+ level: 2
89
+ },
90
+ {
91
+ type: 'paragraph',
92
+ html: 'Warum kühlt sich die Dose schneller ab als die Flasche? Ist es Magie? Nein, es ist <strong>Newtons Abkühlungsgesetz</strong> in Aktion. Dieses Werkzeug berechnet mathematisch den genauen Moment, in dem dein Getränk thermodynamische Perfektion erreicht. Jedes Material, jede Umgebung, jede Ausgangstemperatur speist sich in die gleiche Differentialgleichung ein, die Physiker und Ingenieure zur Modellierung von Wärmevorgängen in Industriesystemen verwenden.'
93
+ },
94
+ {
95
+ type: 'diagnostic',
96
+ title: 'Die Meisterformel',
97
+ icon: 'mdi:function-variant',
98
+ variant: 'info',
99
+ badge: 'Physik',
100
+ html: 'T(t) = T_env + (T_0 - T_env) * e^(-kt). Diese Differentialgleichung beschreibt, wie sich die Temperatur eines Objekts proportional zur Differenz zwischen seiner Temperatur und der der Umgebung ändert. Die Konstante k hängt vom Material und der Geometrie des Behälters ab, weshalb sich eine Dose schneller abkühlt als eine Flasche desselben Volumens.'
101
+ },
102
+ {
103
+ type: 'title',
104
+ text: 'Materialkrieg: Aluminium gegen Glas',
105
+ level: 2
106
+ },
107
+ {
108
+ type: 'paragraph',
109
+ html: '<strong>Aluminium</strong> hat eine Wärmeleitfähigkeit von etwa 205 W/(m·K), während <strong>Glas</strong> kaum 0,8 W/(m·K) erreicht. Metall leitet Kälte rasend schnell, weshalb es der ideale Behälter für Notfälle ist. Glas hingegen isoliert besser, wenn es einmal kalt ist, und hält die ideale Temperatur während des Konsums länger. Dieser Kompromiss erklärt, warum verschiedene Bierkulturen unterschiedliche Vorlieben für jedes Material entwickelt haben.'
110
+ },
111
+ {
112
+ type: 'stats',
113
+ items: [
114
+ { label: 'Pilsner & Lagerbier', value: '3°C - 7°C', icon: 'mdi:snowflake' },
115
+ { label: 'IPA & Pale Ale', value: '7°C - 10°C', icon: 'mdi:hops' },
116
+ { label: 'Stout & Porter', value: '12°C - 14°C', icon: 'mdi:beer' }
117
+ ],
118
+ columns: 3
119
+ },
120
+ {
121
+ type: 'card',
122
+ title: 'Die Gefrierzone',
123
+ icon: 'mdi:snowflake-alert',
124
+ html: 'Wegen Alkohol und gelöster Zucker gefriert Bier unter 0°C — ein standardmäßiges 5%-Lagerbier gefriert um -3°C. Während Wasser kristallisiert, dehnt es sich aus, während der CO2-Druck gleichzeitig ansteigt. Das Ergebnis ist ein Behälter, der heftig platzen kann. Lass Bier niemals länger als 45 Minuten im Gefrierschrank, ohne einen Timer zu stellen.'
125
+ },
126
+ {
127
+ type: 'proscons',
128
+ title: 'Notfall Kühl Tricks',
129
+ items: [
130
+ { pro: 'Nasses Papiertuch-Trick: Wickle die Dose in ein nasses Papiertuch und friere ein — Verdunstung beschleunigt das Abkühlen.', con: '' },
131
+ { pro: 'Arktische Sole: Fülle einen Eimer mit Wasser, Eis und 2 Esslöffeln Salz, um -5°C Salzwasser zu erreichen.', con: '' },
132
+ { pro: 'Drehende Methode: Drehe die Flasche im Eiswasser, um Konvektion zu erzwingen und die Abkühlungszeit zu verkürzen.', con: '' },
133
+ { pro: '', con: 'Stelle eine Dose nicht ohne Timer direkt auf ein Gefrierschrankregal — platzte Dosen sind chaotisch und gefährlich.' }
134
+ ]
135
+ },
136
+ {
137
+ type: 'tip',
138
+ title: 'Profi Tipp: Vorkühle das Glas',
139
+ html: 'Das Glas, in das du Bier eingießt, hat eine signifikante thermische Masse. Ein warmes Glas kann die Temperatur eines perfekt kalten Bieres sofort um 2-3°C erhöhen. Stelle dein Servierglas 5 Minuten lang in den Gefrierschrank oder spüle es mit kaltem Wasser. Dieser einfache Schritt verlängert das Zeitfenster, in dem dein Bier genau so schmeckt, wie es gemeint ist.'
140
+ },
141
+ {
142
+ type: 'title',
143
+ text: 'Die Abkühlungskonstante verstehen',
144
+ level: 2
145
+ },
146
+ {
147
+ type: 'paragraph',
148
+ html: 'Die Abkühlungskonstante k in Newtons Gleichung ist keine feste universelle Größe — sie ist eine empirische Eigenschaft jedes spezifischen Behälters und Mediums. Eine dünne Aluminiumdose in Eiswasser hat ein dramatisch anderes k als eine dicke Glasflasche in still stehender Kühlschrankluft. Unser Rechner verwendet gemessene Werte, die durch reale Experimente für jeden Behältertyp kalibriert sind, und gibt dir Vorhersagen, die für typische häusliche Kühlszenarien auf wenige Minuten genau sind.'
149
+ }
150
+ ];
151
+
152
+ const schemas: BeerCoolerLocaleContent['schemas'] = [
153
+ {
154
+ '@context': 'https://schema.org',
155
+ '@type': 'FAQPage',
156
+ mainEntity: faq.map((item) => ({
157
+ '@type': 'Question',
158
+ name: item.question,
159
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
160
+ })),
161
+ } as WithContext<FAQPage>,
162
+ {
163
+ '@context': 'https://schema.org',
164
+ '@type': 'HowTo',
165
+ name: title,
166
+ description: description,
167
+ step: howTo.map((step, i) => ({
168
+ '@type': 'HowToStep',
169
+ position: i + 1,
170
+ name: step.name,
171
+ text: step.text,
172
+ })),
173
+ } as WithContext<HowTo>,
174
+ {
175
+ '@context': 'https://schema.org',
176
+ '@type': 'SoftwareApplication',
177
+ name: title,
178
+ description: description,
179
+ applicationCategory: 'UtilityApplication',
180
+ operatingSystem: 'Web',
181
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
182
+ } as WithContext<SoftwareApplication>,
183
+ ];
184
+
185
+ export const content: BeerCoolerLocaleContent = {
186
+ slug,
187
+ title,
188
+ description,
189
+ ui,
190
+ seo,
191
+ faqTitle,
192
+ faq,
193
+ bibliographyTitle,
194
+ bibliography,
195
+ howTo,
196
+ schemas,
197
+ };
@@ -1,4 +1,4 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
2
  import type { BeerCoolerUI, BeerCoolerLocaleContent } from '../index';
3
3
 
4
4
  const slug = 'beer-cooler';
@@ -135,7 +135,7 @@ const seo: BeerCoolerLocaleContent['seo'] = [
135
135
  },
136
136
  {
137
137
  type: 'tip',
138
- title: 'Pro Tip: Pre-chill the Glass',
138
+ title: 'Pro Tip: Prechill the Glass',
139
139
  html: 'The glass you serve beer into has a significant thermal mass. A warm glass can raise the temperature of a perfectly cold beer by 2-3°C instantly on contact. Place your serving glass in the freezer for 5 minutes before pouring, or rinse it with cold water. This simple step extends the window where your beer tastes exactly as intended.'
140
140
  },
141
141
  {
@@ -150,11 +150,32 @@ const seo: BeerCoolerLocaleContent['seo'] = [
150
150
  ];
151
151
 
152
152
  const schemas: BeerCoolerLocaleContent['schemas'] = [
153
+ {
154
+ '@context': 'https://schema.org',
155
+ '@type': 'FAQPage',
156
+ mainEntity: faq.map((item) => ({
157
+ '@type': 'Question',
158
+ name: item.question,
159
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
160
+ })),
161
+ } as WithContext<FAQPage>,
162
+ {
163
+ '@context': 'https://schema.org',
164
+ '@type': 'HowTo',
165
+ name: title,
166
+ description: description,
167
+ step: howTo.map((step, i) => ({
168
+ '@type': 'HowToStep',
169
+ position: i + 1,
170
+ name: step.name,
171
+ text: step.text,
172
+ })),
173
+ } as WithContext<HowTo>,
153
174
  {
154
175
  '@context': 'https://schema.org',
155
176
  '@type': 'SoftwareApplication',
156
- name: "Beer Cooling Calculator – Newton's Law of Cooling",
157
- description: 'Applied thermodynamics tool that uses Newton\'s Law of Cooling to calculate the exact time for your beer to reach the ideal serving temperature in a fridge or freezer.',
177
+ name: title,
178
+ description: description,
158
179
  applicationCategory: 'UtilityApplication',
159
180
  operatingSystem: 'Web',
160
181
  offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
@@ -1,4 +1,4 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
2
  import type { BeerCoolerUI, BeerCoolerLocaleContent } from '../index';
3
3
 
4
4
  const slug = 'calculadora-enfriamiento-cerveza';
@@ -135,7 +135,7 @@ const seo: BeerCoolerLocaleContent['seo'] = [
135
135
  },
136
136
  {
137
137
  type: 'tip',
138
- title: 'Consejo Pro: Pre-enfría el Vaso',
138
+ title: 'Consejo Pro: Preenfría el Vaso',
139
139
  html: 'El vaso en el que sirves la cerveza tiene una masa térmica significativa. Un vaso caliente puede subir la temperatura de una cerveza perfectamente fría en 2-3°C al instante. Mete el vaso de servicio en el congelador 5 minutos antes de servir, o enjuágalo con agua fría. Este simple paso prolonga la ventana en que tu cerveza sabe exactamente como debe.'
140
140
  },
141
141
  {
@@ -163,11 +163,32 @@ const seo: BeerCoolerLocaleContent['seo'] = [
163
163
  ];
164
164
 
165
165
  const schemas: BeerCoolerLocaleContent['schemas'] = [
166
+ {
167
+ '@context': 'https://schema.org',
168
+ '@type': 'FAQPage',
169
+ mainEntity: faq.map((item) => ({
170
+ '@type': 'Question',
171
+ name: item.question,
172
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
173
+ })),
174
+ } as WithContext<FAQPage>,
175
+ {
176
+ '@context': 'https://schema.org',
177
+ '@type': 'HowTo',
178
+ name: title,
179
+ description: description,
180
+ step: howTo.map((step, i) => ({
181
+ '@type': 'HowToStep',
182
+ position: i + 1,
183
+ name: step.name,
184
+ text: step.text,
185
+ })),
186
+ } as WithContext<HowTo>,
166
187
  {
167
188
  '@context': 'https://schema.org',
168
189
  '@type': 'SoftwareApplication',
169
- name: 'Calculadora de Enfriamiento de Cerveza – Ley de Newton',
170
- description: 'Herramienta de termodinámica aplicada que calcula con la Ley de Enfriamiento de Newton el tiempo exacto para que tu cerveza alcance la temperatura de servicio ideal en nevera o congelador.',
190
+ name: title,
191
+ description: description,
171
192
  applicationCategory: 'UtilityApplication',
172
193
  operatingSystem: 'Web',
173
194
  offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
@@ -1,4 +1,4 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
2
  import type { BeerCoolerUI, BeerCoolerLocaleContent } from '../index';
3
3
 
4
4
  const slug = 'refroidisseur-biere';
@@ -135,7 +135,7 @@ const seo: BeerCoolerLocaleContent['seo'] = [
135
135
  },
136
136
  {
137
137
  type: 'tip',
138
- title: 'Conseil Pro : Pré-refroidir le Verre',
138
+ title: 'Conseil Pro : Prérefroidir le Verre',
139
139
  html: 'Le verre dans lequel vous servez la bière possède une masse thermique significative. Un verre chaud peut augmenter la température d\'une bière parfaitement froide de 2 à 3°C instantanément au contact. Placez votre verre de service au congélateur 5 minutes avant de verser, ou rincez-le à l\'eau froide. Cette simple étape prolonge la fenêtre où votre bière a exactement le goût voulu.'
140
140
  },
141
141
  {
@@ -150,11 +150,32 @@ const seo: BeerCoolerLocaleContent['seo'] = [
150
150
  ];
151
151
 
152
152
  const schemas: BeerCoolerLocaleContent['schemas'] = [
153
+ {
154
+ '@context': 'https://schema.org',
155
+ '@type': 'FAQPage',
156
+ mainEntity: faq.map((item) => ({
157
+ '@type': 'Question',
158
+ name: item.question,
159
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
160
+ })),
161
+ } as WithContext<FAQPage>,
162
+ {
163
+ '@context': 'https://schema.org',
164
+ '@type': 'HowTo',
165
+ name: title,
166
+ description: description,
167
+ step: howTo.map((step, i) => ({
168
+ '@type': 'HowToStep',
169
+ position: i + 1,
170
+ name: step.name,
171
+ text: step.text,
172
+ })),
173
+ } as WithContext<HowTo>,
153
174
  {
154
175
  '@context': 'https://schema.org',
155
176
  '@type': 'SoftwareApplication',
156
- name: 'Calculateur de Refroidissement de Bière – Loi du Refroidissement de Newton',
157
- description: 'Outil de thermodynamique appliquée qui utilise la Loi du Refroidissement de Newton pour calculer le temps exact nécessaire à votre bière pour atteindre la température de service idéale au frigo ou au congélateur.',
177
+ name: title,
178
+ description: description,
158
179
  applicationCategory: 'UtilityApplication',
159
180
  operatingSystem: 'Web',
160
181
  offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },