@jjlmoya/utils-alcohol 1.14.0 → 1.16.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.
- package/package.json +2 -1
- package/src/category/i18n/id.ts +28 -0
- package/src/category/i18n/sv.ts +19 -0
- package/src/category/index.ts +2 -0
- package/src/tests/faq_count.test.ts +12 -10
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +42 -0
- package/src/tests/no_h1_in_components.test.ts +48 -0
- package/src/tests/seo_length.test.ts +3 -34
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tests/tool_validation.test.ts +4 -4
- package/src/tool/alcoholClearance/i18n/de.ts +205 -0
- package/src/tool/alcoholClearance/i18n/id.ts +205 -0
- package/src/tool/alcoholClearance/i18n/it.ts +180 -0
- package/src/tool/alcoholClearance/i18n/ja.ts +205 -0
- package/src/tool/alcoholClearance/i18n/ko.ts +205 -0
- package/src/tool/alcoholClearance/i18n/nl.ts +205 -0
- package/src/tool/alcoholClearance/i18n/pl.ts +205 -0
- package/src/tool/alcoholClearance/i18n/pt.ts +205 -0
- package/src/tool/alcoholClearance/i18n/ru.ts +205 -0
- package/src/tool/alcoholClearance/i18n/sv.ts +205 -0
- package/src/tool/alcoholClearance/i18n/tr.ts +180 -0
- package/src/tool/alcoholClearance/i18n/zh.ts +205 -0
- package/src/tool/alcoholClearance/index.ts +13 -1
- package/src/tool/beerCooler/i18n/de.ts +197 -0
- package/src/tool/beerCooler/i18n/id.ts +197 -0
- package/src/tool/beerCooler/i18n/it.ts +197 -0
- package/src/tool/beerCooler/i18n/ja.ts +197 -0
- package/src/tool/beerCooler/i18n/ko.ts +197 -0
- package/src/tool/beerCooler/i18n/nl.ts +197 -0
- package/src/tool/beerCooler/i18n/pl.ts +197 -0
- package/src/tool/beerCooler/i18n/pt.ts +197 -0
- package/src/tool/beerCooler/i18n/ru.ts +197 -0
- package/src/tool/beerCooler/i18n/sv.ts +197 -0
- package/src/tool/beerCooler/i18n/tr.ts +197 -0
- package/src/tool/beerCooler/i18n/zh.ts +197 -0
- package/src/tool/beerCooler/index.ts +13 -1
- package/src/tool/carbonationCalculator/i18n/de.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/id.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/it.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/ja.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/ko.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/nl.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/pl.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/pt.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/ru.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/sv.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/tr.ts +200 -0
- package/src/tool/carbonationCalculator/i18n/zh.ts +200 -0
- package/src/tool/carbonationCalculator/index.ts +13 -1
- package/src/tool/cocktailBalancer/i18n/de.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/id.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/it.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/ja.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/ko.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/nl.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/pl.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/pt.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/ru.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/sv.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/tr.ts +222 -0
- package/src/tool/cocktailBalancer/i18n/zh.ts +222 -0
- package/src/tool/cocktailBalancer/index.ts +13 -1
- package/src/tool/partyKeg/i18n/de.ts +187 -0
- package/src/tool/partyKeg/i18n/id.ts +187 -0
- package/src/tool/partyKeg/i18n/it.ts +187 -0
- package/src/tool/partyKeg/i18n/ja.ts +187 -0
- package/src/tool/partyKeg/i18n/ko.ts +187 -0
- package/src/tool/partyKeg/i18n/nl.ts +187 -0
- package/src/tool/partyKeg/i18n/pl.ts +187 -0
- package/src/tool/partyKeg/i18n/pt.ts +187 -0
- package/src/tool/partyKeg/i18n/ru.ts +187 -0
- package/src/tool/partyKeg/i18n/sv.ts +187 -0
- package/src/tool/partyKeg/i18n/tr.ts +187 -0
- package/src/tool/partyKeg/i18n/zh.ts +187 -0
- package/src/tool/partyKeg/index.ts +13 -1
- package/src/types.ts +1 -1
- package/src/tests/content_mandatory.test.ts +0 -32
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
|
|
2
|
+
import type { CarbonationUI, CarbonationLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'calculadora-carbonatacao-cerveja';
|
|
5
|
+
const title = 'Calculadora de Carbonatação e Priming para Cerveja';
|
|
6
|
+
const description = 'Calcule os gramas exatos de Dextrose, Açúcar Cristal ou DME (Extrato de Malte Seco) para engarrafar sua cerveja caseira. Insira o volume, temperatura de fermentação e estilo para um priming perfeito.';
|
|
7
|
+
|
|
8
|
+
const ui: CarbonationUI = {
|
|
9
|
+
parametersTitle: 'Parâmetros',
|
|
10
|
+
metricBtn: 'Métrico',
|
|
11
|
+
imperialBtn: 'Imperial',
|
|
12
|
+
volumeLabel: 'Volume de Cerveja',
|
|
13
|
+
maxTempLabel: 'Temperatura Máxima',
|
|
14
|
+
litersUnit: 'Litros',
|
|
15
|
+
celsiusUnit: '°C',
|
|
16
|
+
gallonsUnit: 'Galões',
|
|
17
|
+
fahrenheitUnit: '°F',
|
|
18
|
+
desiredCo2Label: 'Carbonatação Desejada',
|
|
19
|
+
volUnit: 'Vol CO2',
|
|
20
|
+
resultsTitle: 'Resultados do Priming',
|
|
21
|
+
tableSugarLabel: 'Açúcar Cristal',
|
|
22
|
+
cornSugarLabel: 'Açúcar de Milho (Dextrose)',
|
|
23
|
+
dmeLabel: 'Extrato de Malte Seco (DME)',
|
|
24
|
+
safetyTitle: 'RISCO DE EXPLOSÃO!',
|
|
25
|
+
lowCarbonation: 'CARBONATAÇÃO BAIXA',
|
|
26
|
+
optimalCarbonation: 'CARBONATAÇÃO ÓTIMA',
|
|
27
|
+
highEffervescence: 'EFERVESCÊNCIA ELEVADA',
|
|
28
|
+
bubblingVisualizationLabel: 'Visualização aproximada das bolhas'
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const faqTitle = 'Perguntas Frequentes';
|
|
32
|
+
const bibliographyTitle = 'Bibliografia e Fontes';
|
|
33
|
+
|
|
34
|
+
const faq: CarbonationLocaleContent['faq'] = [
|
|
35
|
+
{
|
|
36
|
+
question: "Por que a temperatura é importante para a carbonatação?",
|
|
37
|
+
answer: "O CO2 residual na sua cerveja depende da temperatura mais alta atingida após a fermentação: líquidos frios retêm mais gás dissolvido do que líquidos quentes. Se você inserir uma temperatura inferior à real, a calculadora assume mais CO2 residual do que realmente existe e oferece menos açúcar do que necessário. Se inserir muito alto, o oposto acontece — você adiciona mais açúcar do que o necessário e coloca seu lote na zona de perigo de explosão de garrafas, onde o excesso de pressão causa ruptura de vidro ou expulsão violenta da tampa.",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
question: "Qual açúcar é melhor para o priming?",
|
|
41
|
+
answer: "Dextrose (açúcar de milho) é preferida por ser neutra e se dissolver rapidamente. Açúcar cristal funciona bem, mas requer aproximadamente 10% menos em peso.",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
question: "O que acontece se eu adicionar muito açúcar de priming?",
|
|
45
|
+
answer: "Excesso de priming gera pressão excessiva de CO2 dentro da garrafa. Garrafas de vidro padrão falham em aproximadamente 3,5-4,0 volumes de CO2. Além deste ponto, a garrafa pode explodir ou a tampa pode ser expulsa violentamente. É por isso que a precisão é importante — até 5 gramas extras por litro podem colocar um lote na zona de perigo.",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
question: "Quanto tempo a cerveja leva para carbonatar após o engarrafamento?",
|
|
49
|
+
answer: "Entre 2 e 3 semanas em temperatura ambiente (18-22°C) é o intervalo típico para o fermento fermentar completamente o açúcar adicionado e o CO2 se integrar ao líquido. Abrir uma garrafa antes do processo estar completo sempre dá um resultado enganoso: a cerveja parecerá pouco carbonatada mesmo que a carbonatação ainda esteja em desenvolvimento. Com o DME o processo pode ser ligeiramente mais lento devido à complexidade de seus açúcares fermentáveis.",
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
const howTo: CarbonationLocaleContent['howTo'] = [
|
|
54
|
+
{
|
|
55
|
+
name: "Meça o volume real",
|
|
56
|
+
text: "Indique quantos litros (ou galões) de cerveja você tem pronta para engarrafar após a conclusão da fermentação.",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "Defina a temperatura de fermentação",
|
|
60
|
+
text: "Insira a temperatura mais alta que a cerveja atingiu durante ou após a fermentação ativa.",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: "Escolha o estilo ou volume de CO2",
|
|
64
|
+
text: "Selecione o nível de carbonatação desejado. Os estilos variam de 1,5 (Stouts) até 4,5 (Cervejas de Trigo).",
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
const bibliography: CarbonationLocaleContent['bibliography'] = [
|
|
69
|
+
{
|
|
70
|
+
name: "How to Brew: Carbonation Tables - John Palmer",
|
|
71
|
+
url: "https://howtobrew.com/section-1/chapter-11/",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: "BJCP Style Guidelines: Carbonation Levels",
|
|
75
|
+
url: "https://www.bjcp.org/style/2021/beer/",
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
|
|
79
|
+
const seo: CarbonationLocaleContent['seo'] = [
|
|
80
|
+
{
|
|
81
|
+
type: 'title',
|
|
82
|
+
text: 'Guia Completo de Carbonatação e Priming',
|
|
83
|
+
level: 2
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
type: 'paragraph',
|
|
87
|
+
html: 'Domine a arte do priming e transforme sua cerveja caseira de um experimento plano em uma experiência efervescente profissional. O priming consiste em adicionar uma quantidade precisa de açúcar para que o fermento residual na garrafa gere CO2 natural durante uma fermentação secundária. Açúcar insuficiente resulta em cerveja plana; excesso cria pressão perigosa que pode romper garrafas. A diferença entre os dois é alguns gramas — por isso esta calculadora existe.'
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
type: 'proscons',
|
|
91
|
+
title: 'Fatores Críticos de Sucesso',
|
|
92
|
+
items: [
|
|
93
|
+
{ pro: 'Temperatura: O CO2 residual depende do pico de temperatura pós-fermentação.', con: '' },
|
|
94
|
+
{ pro: 'Precisão: 5 gramas extras por litro podem ser a diferença entre carbonatação perfeita e um gêiser.', con: '' },
|
|
95
|
+
{ pro: '', con: 'Oxidação: Evite respingar o líquido ao transferir para misturar o açúcar de priming.' }
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
type: 'title',
|
|
100
|
+
text: 'Volumes de CO2 por Estilo de Cerveja',
|
|
101
|
+
level: 2
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
type: 'stats',
|
|
105
|
+
items: [
|
|
106
|
+
{ label: 'British Stouts', value: '1,5 - 2,0 Vol', icon: 'mdi:beer' },
|
|
107
|
+
{ label: 'IPAs & Ales', value: '2,2 - 2,6 Vol', icon: 'mdi:hops' },
|
|
108
|
+
{ label: 'German Wheat', value: '3,3 - 4,5 Vol', icon: 'mdi:barley' }
|
|
109
|
+
],
|
|
110
|
+
columns: 3
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'card',
|
|
114
|
+
title: 'Qual Açúcar Você Deveria Escolher?',
|
|
115
|
+
icon: 'mdi:corn',
|
|
116
|
+
html: '<strong>Dextrose</strong> é neutra e profissional — o padrão da indústria. <strong>Açúcar Cristal</strong> é econômico e eficaz (use 10% menos em peso que dextrose). <strong>DME (Extrato de Malte Seco)</strong> é a escolha do purista mas mais difícil de prever com precisão porque sua fermentabilidade varia por marca e composição de malte.'
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
type: 'diagnostic',
|
|
120
|
+
title: 'Aviso de Segurança',
|
|
121
|
+
icon: 'mdi:alert-decagram',
|
|
122
|
+
variant: 'error',
|
|
123
|
+
badge: 'Perigo',
|
|
124
|
+
html: 'Garrafas de vidro padrão falham em 3,5-4,0 volumes de CO2. Não tente carbonatar estilos belgas ou de trigo em vidro fino. Sempre use garrafas classificadas para bebidas com gás e nunca reutilize garrafas comerciais recicladas que possam ter danos estruturais microscópicos de uso anterior.'
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'tip',
|
|
128
|
+
title: 'Dica Pro: Dissolva o Açúcar Corretamente',
|
|
129
|
+
html: 'Sempre ferva a solução de açúcar de priming (açúcar dissolvido em aproximadamente 250ml de água por lote de 20L) por 10 minutos antes de adicioná-la à cerveja. Fervura desinfeta a solução e garante que o açúcar seja completamente dissolvido e distribuído uniformemente em todo o lote, evitando pontos quentes que causam carbonatação desigual entre garrafas.'
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'summary',
|
|
133
|
+
title: 'Para Quem É Esta Ferramenta?',
|
|
134
|
+
items: [
|
|
135
|
+
'Cervejeiros Caseiros: Obtenha o cálculo exato de açúcar de priming para qualquer tamanho de lote, estilo e temperatura de fermentação.',
|
|
136
|
+
'Entusiastas de Cerveja Artesanal: Compreenda a ciência por trás do motivo pelo qual cervejas comerciais têm diferentes níveis de carbonatação.',
|
|
137
|
+
'Cervejeiros Profissionais: Verifique cálculos manuais antes de engarrafar lotes comerciais grandes.'
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Ciência da Carbonatação: Lei de Henry',
|
|
143
|
+
level: 2
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'Em sua essência, a carbonatação é governada pela <strong>Lei de Henry</strong>: a quantidade de gás dissolvido em um líquido é proporcional à pressão parcial daquele gás acima do líquido. Quando você primer uma garrafa e a sela, o fermento consome o açúcar e produz CO2 em um ambiente selado. Conforme a pressão aumenta, o gás é forçado de volta para a solução. A temperatura em que este equilíbrio é alcançado determina o nível final de carbonatação — é por isso que a temperatura de fermentação é a variável mais crítica nesta calculadora.'
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: 'O CO2 residual na sua cerveja antes do priming não é zero. Toda cerveja contém CO2 dissolvido do processo de fermentação, e a quantidade retida depende da temperatura mais alta atingida pela cerveja. Uma cerveja fermentada a 22°C retém significativamente menos CO2 residual do que uma fermentada a 16°C, embora ambas estejam agora resfriadas. Não considerar este resíduo leva à sobre-carbonatação sistemática — um dos erros mais comuns entre cervejeiros caseiros iniciantes.'
|
|
152
|
+
}
|
|
153
|
+
];
|
|
154
|
+
|
|
155
|
+
const schemas: CarbonationLocaleContent['schemas'] = [
|
|
156
|
+
{
|
|
157
|
+
'@context': 'https://schema.org',
|
|
158
|
+
'@type': 'FAQPage',
|
|
159
|
+
mainEntity: faq.map((item) => ({
|
|
160
|
+
'@type': 'Question',
|
|
161
|
+
name: item.question,
|
|
162
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
163
|
+
})),
|
|
164
|
+
} as WithContext<FAQPage>,
|
|
165
|
+
{
|
|
166
|
+
'@context': 'https://schema.org',
|
|
167
|
+
'@type': 'HowTo',
|
|
168
|
+
name: title,
|
|
169
|
+
description: description,
|
|
170
|
+
step: howTo.map((step, i) => ({
|
|
171
|
+
'@type': 'HowToStep',
|
|
172
|
+
position: i + 1,
|
|
173
|
+
name: step.name,
|
|
174
|
+
text: step.text,
|
|
175
|
+
})),
|
|
176
|
+
} as WithContext<HowTo>,
|
|
177
|
+
{
|
|
178
|
+
'@context': 'https://schema.org',
|
|
179
|
+
'@type': 'SoftwareApplication',
|
|
180
|
+
name: title,
|
|
181
|
+
description: description,
|
|
182
|
+
applicationCategory: 'UtilityApplication',
|
|
183
|
+
operatingSystem: 'Web',
|
|
184
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
185
|
+
} as WithContext<SoftwareApplication>,
|
|
186
|
+
];
|
|
187
|
+
|
|
188
|
+
export const content: CarbonationLocaleContent = {
|
|
189
|
+
slug,
|
|
190
|
+
title,
|
|
191
|
+
description,
|
|
192
|
+
ui,
|
|
193
|
+
seo,
|
|
194
|
+
faqTitle,
|
|
195
|
+
faq,
|
|
196
|
+
bibliographyTitle,
|
|
197
|
+
bibliography,
|
|
198
|
+
howTo,
|
|
199
|
+
schemas,
|
|
200
|
+
};
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
|
|
2
|
+
import type { CarbonationUI, CarbonationLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'kalkulyator-karbonizacii-piva';
|
|
5
|
+
const title = 'Калькулятор Карбонизации и Праймирования Пива';
|
|
6
|
+
const description = 'Рассчитайте точное количество граммов Декстрозы, Сахара или ССВ (Сухого Солодового Экстракта) для разлива домашнего пива. Введите объём, температуру брожения и стиль для идеального праймирования.';
|
|
7
|
+
|
|
8
|
+
const ui: CarbonationUI = {
|
|
9
|
+
parametersTitle: 'Параметры',
|
|
10
|
+
metricBtn: 'Метрическая',
|
|
11
|
+
imperialBtn: 'Имперская',
|
|
12
|
+
volumeLabel: 'Объем Пива',
|
|
13
|
+
maxTempLabel: 'Максимальная Температура',
|
|
14
|
+
litersUnit: 'Литры',
|
|
15
|
+
celsiusUnit: '°C',
|
|
16
|
+
gallonsUnit: 'Галлоны',
|
|
17
|
+
fahrenheitUnit: '°F',
|
|
18
|
+
desiredCo2Label: 'Желаемая Карбонизация',
|
|
19
|
+
volUnit: 'Vol CO2',
|
|
20
|
+
resultsTitle: 'Результаты Праймирования',
|
|
21
|
+
tableSugarLabel: 'Столовый Сахар',
|
|
22
|
+
cornSugarLabel: 'Кукурузный Сахар (Декстроза)',
|
|
23
|
+
dmeLabel: 'Сухой Солодовый Экстракт (ССВ)',
|
|
24
|
+
safetyTitle: 'ОПАСНОСТЬ ВЗРЫВА!',
|
|
25
|
+
lowCarbonation: 'НИЗКАЯ КАРБОНИЗАЦИЯ',
|
|
26
|
+
optimalCarbonation: 'ОПТИМАЛЬНАЯ КАРБОНИЗАЦИЯ',
|
|
27
|
+
highEffervescence: 'ВЫСОКАЯ ГАЗИРОВАННОСТЬ',
|
|
28
|
+
bubblingVisualizationLabel: 'Приблизительная визуализация пузырьков'
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const faqTitle = 'Часто Задаваемые Вопросы';
|
|
32
|
+
const bibliographyTitle = 'Библиография и Источники';
|
|
33
|
+
|
|
34
|
+
const faq: CarbonationLocaleContent['faq'] = [
|
|
35
|
+
{
|
|
36
|
+
question: "Почему температура важна для карбонизации?",
|
|
37
|
+
answer: "Остаточный CO2 в вашем пиве зависит от максимальной температуры, достигнутой после брожения: холодная жидкость удерживает больше растворённого газа, чем тёплая жидкость. Если вы введёте температуру ниже реальной, калькулятор будет исходить из большего остаточного CO2, чем на самом деле присутствует, и предложит меньше сахара, чем необходимо. Если введёте слишком высокую температуру, произойдёт обратное — вы добавите больше сахара, чем нужно, и поместите партию в опасную зону взрыва бутылок, где избыточное давление приводит к разрыву стекла или взрывному выбросу пробки.",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
question: "Какой сахар лучше использовать для праймирования?",
|
|
41
|
+
answer: "Декстроза (кукурузный сахар) предпочтительна, так как она нейтральна и быстро растворяется. Столовый сахар работает хорошо, но требует примерно на 10% меньше по весу.",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
question: "Что произойдёт, если я добавлю слишком много сахара для праймирования?",
|
|
45
|
+
answer: "Избыточное праймирование создаёт чрезмерное давление CO2 внутри бутылки. Стандартные стеклянные бутылки выходят из строя при примерно 3,5-4,0 объёмах CO2. При превышении этого предела бутылка может лопнуть или пробка может взрывно вылететь. Вот почему точность критична — даже 5 дополнительных граммов на литр могут поместить партию в опасную зону.",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
question: "Как долго пиво карбонизируется после разлива в бутылки?",
|
|
49
|
+
answer: "От 2 до 3 недель при комнатной температуре (18-22°C) — типичный диапазон для полного брожения добавленного сахара дрожжами и интеграции CO2 в жидкость. Открытие бутылки до завершения процесса всегда дает обманчивый результат: пиво покажется недостаточно газированным, хотя карбонизация ещё развивается. С ССВ процесс может быть немного медленнее из-за сложности его ферментируемых сахаров.",
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
const howTo: CarbonationLocaleContent['howTo'] = [
|
|
54
|
+
{
|
|
55
|
+
name: "Измерьте реальный объём",
|
|
56
|
+
text: "Укажите, сколько литров (или галлонов) пива вы имеете готовым к разливу после завершения брожения.",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "Определите температуру брожения",
|
|
60
|
+
text: "Введите максимальную температуру, которую пиво достигло во время или после активного брожения.",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: "Выберите стиль или объём CO2",
|
|
64
|
+
text: "Выберите желаемый уровень карбонизации. Стили варьируются от 1,5 (Стауты) до 4,5 (Пшеничное пиво).",
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
const bibliography: CarbonationLocaleContent['bibliography'] = [
|
|
69
|
+
{
|
|
70
|
+
name: "How to Brew: Carbonation Tables - John Palmer",
|
|
71
|
+
url: "https://howtobrew.com/section-1/chapter-11/",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: "BJCP Style Guidelines: Carbonation Levels",
|
|
75
|
+
url: "https://www.bjcp.org/style/2021/beer/",
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
|
|
79
|
+
const seo: CarbonationLocaleContent['seo'] = [
|
|
80
|
+
{
|
|
81
|
+
type: 'title',
|
|
82
|
+
text: 'Полное Руководство по Карбонизации и Праймированию',
|
|
83
|
+
level: 2
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
type: 'paragraph',
|
|
87
|
+
html: 'Овладейте искусством праймирования и превратите домашнее пиво из плоского эксперимента в профессиональный газированный напиток. Праймирование заключается в добавлении точного количества сахара, чтобы остаточные дрожжи в бутылке выработали естественный CO2 во время вторичного брожения. Недостаточно сахара — пиво будет плоским; слишком много — создаст опасное давление, которое может разорвать бутылки. Разница между ними — всего несколько граммов — именно поэтому существует этот калькулятор.'
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
type: 'proscons',
|
|
91
|
+
title: 'Критические Факторы Успеха',
|
|
92
|
+
items: [
|
|
93
|
+
{ pro: 'Температура: остаточный CO2 зависит от пика температуры после брожения.', con: '' },
|
|
94
|
+
{ pro: 'Точность: 5 дополнительных граммов на литр могут быть разницей между идеальной карбонизацией и гейзером.', con: '' },
|
|
95
|
+
{ pro: '', con: 'Окисление: избегайте брызг жидкости при переливании для смешивания сахара праймирования.' }
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
type: 'title',
|
|
100
|
+
text: 'Объёмы CO2 по Стилям Пива',
|
|
101
|
+
level: 2
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
type: 'stats',
|
|
105
|
+
items: [
|
|
106
|
+
{ label: 'British Stouts', value: '1,5 - 2,0 Vol', icon: 'mdi:beer' },
|
|
107
|
+
{ label: 'IPAs & Ales', value: '2,2 - 2,6 Vol', icon: 'mdi:hops' },
|
|
108
|
+
{ label: 'German Wheat', value: '3,3 - 4,5 Vol', icon: 'mdi:barley' }
|
|
109
|
+
],
|
|
110
|
+
columns: 3
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'card',
|
|
114
|
+
title: 'Какой Сахар Выбрать?',
|
|
115
|
+
icon: 'mdi:corn',
|
|
116
|
+
html: '<strong>Декстроза</strong> — нейтральный и профессиональный вариант, промышленный стандарт. <strong>Столовый сахар</strong> — экономичен и эффективен (используйте на 10% меньше по весу, чем декстроза). <strong>ССВ (Сухой Солодовый Экстракт)</strong> — выбор пуристов, но сложнее предсказуем, так как его ферментируемость зависит от бренда и состава солода.'
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
type: 'diagnostic',
|
|
120
|
+
title: 'Предупреждение об Опасности',
|
|
121
|
+
icon: 'mdi:alert-decagram',
|
|
122
|
+
variant: 'error',
|
|
123
|
+
badge: 'Опасность',
|
|
124
|
+
html: 'Стандартные стеклянные бутылки выходят из строя при 3,5-4,0 объёмах CO2. Не пытайтесь карбонизировать бельгийские или пшеничные сорта в тонком стекле. Всегда используйте бутылки, рассчитанные на газированные напитки, и никогда не переиспользуйте промышленные бутылки, которые могут иметь микроскопические структурные повреждения от предыдущего использования.'
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'tip',
|
|
128
|
+
title: 'Профессиональный Совет: Правильно Растворите Сахар',
|
|
129
|
+
html: 'Всегда кипятите раствор сахара для праймирования (сахар, растворённый в примерно 250 мл воды на 20 л партии) 10 минут перед добавлением в пиво. Кипячение дезинфицирует раствор и гарантирует, что сахар полностью растворён и равномерно распределён по всей партии, предотвращая горячие точки, вызывающие неравномерную карбонизацию между бутылками.'
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'summary',
|
|
133
|
+
title: 'Для Кого Предназначен Этот Инструмент?',
|
|
134
|
+
items: [
|
|
135
|
+
'Домашние Пивовары: получите точный расчёт сахара для праймирования для любого объёма партии, стиля и температуры брожения.',
|
|
136
|
+
'Энтузиасты Ремесленного Пива: поймите науку, стоящую за тем, почему коммерческие пива имеют разные уровни карбонизации.',
|
|
137
|
+
'Профессиональные Пивовары: перепроверьте ручные расчёты перед разливом крупных коммерческих партий.'
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Наука Карбонизации: Закон Генри',
|
|
143
|
+
level: 2
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'В основе своей карбонизация подчиняется <strong>Закону Генри</strong>: количество газа, растворённого в жидкости, пропорционально парциальному давлению этого газа над жидкостью. Когда вы спрайимируете бутылку и герметизируете её, дрожжи потребляют сахар и производят CO2 в герметичной среде. По мере роста давления газ вновь принудительно переходит в раствор. Температура, при которой достигается это равновесие, определяет итоговый уровень карбонизации — именно поэтому температура брожения является критической переменной в этом калькуляторе.'
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: 'Остаточный CO2 в вашем пиве до праймирования не равен нулю. Каждое пиво содержит растворённый CO2 из процесса брожения, и количество сохраняемого зависит от максимальной температуры, достигнутой пивом. Пиво, ферментировавшееся при 22°C, содержит значительно меньше остаточного CO2, чем пиво, ферментировавшееся при 16°C, хотя оба теперь охлаждены. Неучёт этого остатка приводит к систематическому избыточному праймированию — одной из наиболее распространённых ошибок среди начинающих домашних пивоваров.'
|
|
152
|
+
}
|
|
153
|
+
];
|
|
154
|
+
|
|
155
|
+
const schemas: CarbonationLocaleContent['schemas'] = [
|
|
156
|
+
{
|
|
157
|
+
'@context': 'https://schema.org',
|
|
158
|
+
'@type': 'FAQPage',
|
|
159
|
+
mainEntity: faq.map((item) => ({
|
|
160
|
+
'@type': 'Question',
|
|
161
|
+
name: item.question,
|
|
162
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
163
|
+
})),
|
|
164
|
+
} as WithContext<FAQPage>,
|
|
165
|
+
{
|
|
166
|
+
'@context': 'https://schema.org',
|
|
167
|
+
'@type': 'HowTo',
|
|
168
|
+
name: title,
|
|
169
|
+
description: description,
|
|
170
|
+
step: howTo.map((step, i) => ({
|
|
171
|
+
'@type': 'HowToStep',
|
|
172
|
+
position: i + 1,
|
|
173
|
+
name: step.name,
|
|
174
|
+
text: step.text,
|
|
175
|
+
})),
|
|
176
|
+
} as WithContext<HowTo>,
|
|
177
|
+
{
|
|
178
|
+
'@context': 'https://schema.org',
|
|
179
|
+
'@type': 'SoftwareApplication',
|
|
180
|
+
name: title,
|
|
181
|
+
description: description,
|
|
182
|
+
applicationCategory: 'UtilityApplication',
|
|
183
|
+
operatingSystem: 'Web',
|
|
184
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
185
|
+
} as WithContext<SoftwareApplication>,
|
|
186
|
+
];
|
|
187
|
+
|
|
188
|
+
export const content: CarbonationLocaleContent = {
|
|
189
|
+
slug,
|
|
190
|
+
title,
|
|
191
|
+
description,
|
|
192
|
+
ui,
|
|
193
|
+
seo,
|
|
194
|
+
faqTitle,
|
|
195
|
+
faq,
|
|
196
|
+
bibliographyTitle,
|
|
197
|
+
bibliography,
|
|
198
|
+
howTo,
|
|
199
|
+
schemas,
|
|
200
|
+
};
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
|
|
2
|
+
import type { CarbonationUI, CarbonationLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'ol-karboniserings-och-prynings-kalkylator';
|
|
5
|
+
const title = 'Ölkarboniserings och Pryningskalkylator';
|
|
6
|
+
const description = 'Beräkna de exakta gramen Dextros, Vassockeror eller DME (Torkat Mjölkextrakt) för flaskfyllning av ditt hembryggt öl. Ange volym, gärningstemperatur och stil för perfekt pryning.';
|
|
7
|
+
|
|
8
|
+
const ui: CarbonationUI = {
|
|
9
|
+
parametersTitle: 'Parametrar',
|
|
10
|
+
metricBtn: 'Metrisk',
|
|
11
|
+
imperialBtn: 'Imperial',
|
|
12
|
+
volumeLabel: 'Ölvolym',
|
|
13
|
+
maxTempLabel: 'Maximal Temperatur',
|
|
14
|
+
litersUnit: 'Liter',
|
|
15
|
+
celsiusUnit: '°C',
|
|
16
|
+
gallonsUnit: 'Gallon',
|
|
17
|
+
fahrenheitUnit: '°F',
|
|
18
|
+
desiredCo2Label: 'Önskad Karbonisering',
|
|
19
|
+
volUnit: 'CO2 Vol',
|
|
20
|
+
resultsTitle: 'Pryningsresultat',
|
|
21
|
+
tableSugarLabel: 'Vassockor',
|
|
22
|
+
cornSugarLabel: 'Majssockor (Dextros)',
|
|
23
|
+
dmeLabel: 'Torkat Mjölkextrakt (DME)',
|
|
24
|
+
safetyTitle: 'EXPLOSIONSRISK!',
|
|
25
|
+
lowCarbonation: 'LÅG KARBONISERING',
|
|
26
|
+
optimalCarbonation: 'OPTIMAL KARBONISERING',
|
|
27
|
+
highEffervescence: 'HÖG MOUSSERANDE',
|
|
28
|
+
bubblingVisualizationLabel: 'Ungefärlig bubbelvisualiserning'
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const faqTitle = 'Vanliga Frågor';
|
|
32
|
+
const bibliographyTitle = 'Bibliografi & Källor';
|
|
33
|
+
|
|
34
|
+
const faq: CarbonationLocaleContent['faq'] = [
|
|
35
|
+
{
|
|
36
|
+
question: "Varför är temperatur viktig för karbonisering?",
|
|
37
|
+
answer: "Det kvarvarande CO2 i ditt öl beror på den högsta temperaturen som uppnåtts efter jäsning: kall vätska behåller mer löst gas än varm vätska. Om du anger en temperatur lägre än den faktiska utgår kalkylatorn från mer kvarvarande CO2 än vad som verkligen finns och föreslår mindre socker än vad som behövs. Om du anger det för högt sker det motsatta — du lägger till mer socker än nödvändigt och skjuter din sats in i explosionsfaran, där övertryck orsakar flaskor att sprängas eller kronor att sprutas av våldsamt.",
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
question: "Vilken sockor är bäst för pryning?",
|
|
41
|
+
answer: "Dextros (majssocker) föredras eftersom det är neutralt och löser sig snabbt. Vassockor fungerar bra men kräver cirka 10% mindre vikt.",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
question: "Vad händer om jag tillsätter för mycket pryningssocker?",
|
|
45
|
+
answer: "Över-pryning genererar överskridande CO2-tryck inuti flaskan. Standardglasflaskor misslyckas vid cirka 3,5-4,0 volymer CO2. Bortom denna punkt kan flaskan sprängas eller kronen kan sprutas av våldsamt. Detta är varför precision är viktigt — även 5 extra gram per liter kan skjuta en sats in i farozonen.",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
question: "Hur lång tid tar det för öl att karboniseras efter flaskfyllning?",
|
|
49
|
+
answer: "Mellan 2 och 3 veckor vid rumstemperatur (18-22°C) är det typiska intervallet för jäst att helt fermentera det tillsatta sockret och för CO2 att integrera sig i vätskan. Att öppna en flaska innan processen är klar ger alltid ett vilseledande resultat: ölet kommer att verka underkarboniserat även om karboniseringen fortfarande utvecklas. Med DME kan processen vara något långsamare på grund av komplexiteten i dess jäsbara socker.",
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
const howTo: CarbonationLocaleContent['howTo'] = [
|
|
54
|
+
{
|
|
55
|
+
name: "Mät den verkliga volymen",
|
|
56
|
+
text: "Ange hur många liter (eller gallon) öl du har klart för flaskfyllning efter att jäsningen är slutförd.",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "Definiera jäsningstemperatur",
|
|
60
|
+
text: "Ange den högsta temperatur som ölet nådde under eller efter aktiv jäsning.",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: "Välj stil eller CO2-volym",
|
|
64
|
+
text: "Välj önskad karboniseringsnivå. Stilar varierar från 1,5 (Stouts) till 4,5 (Vetöl).",
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
const bibliography: CarbonationLocaleContent['bibliography'] = [
|
|
69
|
+
{
|
|
70
|
+
name: "How to Brew: Carbonation Tables - John Palmer",
|
|
71
|
+
url: "https://howtobrew.com/section-1/chapter-11/",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: "BJCP Style Guidelines: Carbonation Levels",
|
|
75
|
+
url: "https://www.bjcp.org/style/2021/beer/",
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
|
|
79
|
+
const seo: CarbonationLocaleContent['seo'] = [
|
|
80
|
+
{
|
|
81
|
+
type: 'title',
|
|
82
|
+
text: 'Ultimat Guide till Karbonisering och Pryning',
|
|
83
|
+
level: 2
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
type: 'paragraph',
|
|
87
|
+
html: 'Bemästra konsten att pryning och omvandla ditt hembryggt öl från ett platt experiment till en professionell mousserande upplevelse. Pryning innebär att tillsätta en exakt mängd socker så att den kvarvarande jästen i flaskan genererar naturlig CO2 under en sekundär jäsning. För lite socker ger platt öl; för mycket skapar farlig tryckning som kan spränga flaskor. Skillnaden mellan de två är några få gram — därför existerar denna kalkylator.'
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
type: 'proscons',
|
|
91
|
+
title: 'Kritiska Framgångsfaktorer',
|
|
92
|
+
items: [
|
|
93
|
+
{ pro: 'Temperatur: Kvarvarande CO2 beror på temperaturtoppen efter jäsning.', con: '' },
|
|
94
|
+
{ pro: 'Precision: 5 extra gram per liter kan vara skillnaden mellan perfekt karbonisering och en geyser.', con: '' },
|
|
95
|
+
{ pro: '', con: 'Oxidation: Undvik att få vätskan att stänka när du överför för att blanda pryningssocker.' }
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
type: 'title',
|
|
100
|
+
text: 'CO2-Volymer efter Ölstil',
|
|
101
|
+
level: 2
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
type: 'stats',
|
|
105
|
+
items: [
|
|
106
|
+
{ label: 'British Stouts', value: '1,5 - 2,0 Vol', icon: 'mdi:beer' },
|
|
107
|
+
{ label: 'IPAs & Ales', value: '2,2 - 2,6 Vol', icon: 'mdi:hops' },
|
|
108
|
+
{ label: 'German Wheat', value: '3,3 - 4,5 Vol', icon: 'mdi:barley' }
|
|
109
|
+
],
|
|
110
|
+
columns: 3
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'card',
|
|
114
|
+
title: 'Vilken Sockor Bör Du Välja?',
|
|
115
|
+
icon: 'mdi:corn',
|
|
116
|
+
html: '<strong>Dextros</strong> är neutral och professionell — branschstandarden. <strong>Vassockor</strong> är ekonomisk och effektiv (använd 10% mindre vikt än dextros). <strong>DME (Torkat Mjölkextrakt)</strong> är puristens val men svårare att förutsäga exakt eftersom dess gärningsbarhet varierar beroende på märke och mjölksammansättning.'
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
type: 'diagnostic',
|
|
120
|
+
title: 'Säkerhetsvaarning',
|
|
121
|
+
icon: 'mdi:alert-decagram',
|
|
122
|
+
variant: 'error',
|
|
123
|
+
badge: 'Fara',
|
|
124
|
+
html: 'Standardglasflaskor misslyckas vid 3,5-4,0 volymer CO2. Försök inte karbonisera belgiska eller vetöl i tunt glas. Använd alltid flaskor klassificerade för kolsyrade drycker och återanvänd aldrig återvunna kommersiella flaskor som kan ha mikroskopiska strukturskador från tidigare användning.'
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'tip',
|
|
128
|
+
title: 'Pro Tip: Lösa Sockret Korrekt',
|
|
129
|
+
html: 'Koka alltid din pryningsockerlösning (socker upplöst i cirka 250 ml vatten per 20 L sats) i 10 minuter innan du tillsätter det till ölet. Kokande desinfiserar lösningen och garanterar att sockret är helt upplöst och jämnt fördelat över hela satsen, vilket förhindrar heta fläckar som orsakar ojämn karbonisering mellan flaskor.'
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'summary',
|
|
133
|
+
title: 'För Vem är Detta Verktyg?',
|
|
134
|
+
items: [
|
|
135
|
+
'Hembryggarare: Få den exakta beräkningen av pryningssocker för alla satsstorlekar, stilar och jäsningstemperaturer.',
|
|
136
|
+
'Hantverksolentusiaster: Förstå vetenskapen bakom varför kommersiell öl har olika karboniseringsnivåer.',
|
|
137
|
+
'Professionella Bryggarare: Krysskontrollera handberäkningar innan du flaskfyller stora kommersiella satser.'
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Vetenskapen om Karbonisering: Henrys Lag',
|
|
143
|
+
level: 2
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'I sin kärna styrs karbonisering av <strong>Henrys Lag</strong>: mängden gas löst i en vätska är proportionell mot deltrycket för den gasen över vätskan. När du pryner en flaska och förseglar den förbrukar jästen sockret och producerar CO2 i en förseglab miljö. När trycket ökar tvingas gasen tillbaka in i lösningen. Temperaturen vid vilken denna jämvikt uppnås bestämmer den slutliga karboniseringsnivån — det är därför jäsningstemperatur är den mest kritiska variabeln i denna kalkylator.'
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: 'Det kvarvarande CO2 i ditt öl före pryning är inte noll. Varje öl innehåller löst CO2 från jäsningsprocessen, och mängden som behålls beror på den högsta temperatur som ölet nådde. Öl jäst vid 22°C innehåller betydligt mindre kvarvarande CO2 än öl jäst vid 16°C, även om båda nu är kylda. Att inte ta hänsyn till detta restband leder till systematisk överkarbonisering — ett av de vanligaste misstagen bland nybörjar hembryggarare.'
|
|
152
|
+
}
|
|
153
|
+
];
|
|
154
|
+
|
|
155
|
+
const schemas: CarbonationLocaleContent['schemas'] = [
|
|
156
|
+
{
|
|
157
|
+
'@context': 'https://schema.org',
|
|
158
|
+
'@type': 'FAQPage',
|
|
159
|
+
mainEntity: faq.map((item) => ({
|
|
160
|
+
'@type': 'Question',
|
|
161
|
+
name: item.question,
|
|
162
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
163
|
+
})),
|
|
164
|
+
} as WithContext<FAQPage>,
|
|
165
|
+
{
|
|
166
|
+
'@context': 'https://schema.org',
|
|
167
|
+
'@type': 'HowTo',
|
|
168
|
+
name: title,
|
|
169
|
+
description: description,
|
|
170
|
+
step: howTo.map((step, i) => ({
|
|
171
|
+
'@type': 'HowToStep',
|
|
172
|
+
position: i + 1,
|
|
173
|
+
name: step.name,
|
|
174
|
+
text: step.text,
|
|
175
|
+
})),
|
|
176
|
+
} as WithContext<HowTo>,
|
|
177
|
+
{
|
|
178
|
+
'@context': 'https://schema.org',
|
|
179
|
+
'@type': 'SoftwareApplication',
|
|
180
|
+
name: title,
|
|
181
|
+
description: description,
|
|
182
|
+
applicationCategory: 'UtilityApplication',
|
|
183
|
+
operatingSystem: 'Web',
|
|
184
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
185
|
+
} as WithContext<SoftwareApplication>,
|
|
186
|
+
];
|
|
187
|
+
|
|
188
|
+
export const content: CarbonationLocaleContent = {
|
|
189
|
+
slug,
|
|
190
|
+
title,
|
|
191
|
+
description,
|
|
192
|
+
ui,
|
|
193
|
+
seo,
|
|
194
|
+
faqTitle,
|
|
195
|
+
faq,
|
|
196
|
+
bibliographyTitle,
|
|
197
|
+
bibliography,
|
|
198
|
+
howTo,
|
|
199
|
+
schemas,
|
|
200
|
+
};
|