@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,222 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
|
|
2
|
+
import type { CocktailBalancerUI, CocktailBalancerLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'cocktail-balanserare';
|
|
5
|
+
const title = 'Cocktail Balancer: Surlagenen';
|
|
6
|
+
const description = 'Beräkna den perfekta balansen mellan sött och surt för dina cocktails. Bemästra det gyllene snittet inom mixologi.';
|
|
7
|
+
|
|
8
|
+
const ui: CocktailBalancerUI = {
|
|
9
|
+
title: 'Cocktail Balancer',
|
|
10
|
+
presetsBtn: 'Recept',
|
|
11
|
+
saveBtn: 'Spara',
|
|
12
|
+
resetBtn: 'Återställ',
|
|
13
|
+
emptyStateTitle: 'Din Arbetsbänk är Tom',
|
|
14
|
+
emptyStateDescription: 'Lägg till ingredienser för att analysera din cocktails balans i realtid.',
|
|
15
|
+
addBtn: 'Lägg Till Ingrediens',
|
|
16
|
+
addMoreBtn: 'Lägg Till En Till Ingrediens',
|
|
17
|
+
flavorProfileTitle: 'Smakprofil',
|
|
18
|
+
volLabel: 'Volym',
|
|
19
|
+
sugarLabel: 'Socker',
|
|
20
|
+
colorLabel: 'Färg',
|
|
21
|
+
sourLawTitle: 'Surlagenen',
|
|
22
|
+
acidDryLabel: 'Sur (Torr)',
|
|
23
|
+
balanceLabel: 'Balans',
|
|
24
|
+
sweetLabel: 'Söt',
|
|
25
|
+
aiSuggestionTitle: 'AI-förslag',
|
|
26
|
+
addIngredientTitle: 'Lägg Till Ingrediens',
|
|
27
|
+
searchPlaceholder: 'Sök rom, lime, sirap...',
|
|
28
|
+
presetsTitle: 'Recept & Förinställningar',
|
|
29
|
+
savedSectionTitle: 'Mina Sparade',
|
|
30
|
+
classicsSectionTitle: 'Klassiker',
|
|
31
|
+
confirmDeleteTitle: 'Ta bort allt?',
|
|
32
|
+
confirmDeleteText: 'Detta tar bort alla ingredienser från din arbetsbänk. Den här åtgärden kan inte ångras.',
|
|
33
|
+
cancelBtn: 'Avbryt',
|
|
34
|
+
deleteBtn: 'Ta bort',
|
|
35
|
+
verdictSpiritSeco: 'Spritdryck / Torr',
|
|
36
|
+
verdictSoloDulce: 'Endast Söt (Old Fashioned)',
|
|
37
|
+
verdictMuyAcido: 'För Sur / Skelettorr',
|
|
38
|
+
verdictAcido: 'Sur / Tart',
|
|
39
|
+
verdictEquilibrado: 'Balanserad (Sur)',
|
|
40
|
+
verdictDulce: 'Söt / Kommersiell',
|
|
41
|
+
verdictEmpalagoso: 'För Söt',
|
|
42
|
+
fixAddBitters: 'Bittrare Saknas',
|
|
43
|
+
fixAddSugar: 'För Sur',
|
|
44
|
+
fixAddAcid: 'För Söt'
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const faqTitle = 'Vanliga Frågor';
|
|
48
|
+
const bibliographyTitle = 'Bibliografi & Källor';
|
|
49
|
+
|
|
50
|
+
const faq: CocktailBalancerLocaleContent['faq'] = [
|
|
51
|
+
{
|
|
52
|
+
question: "Vad är 'Surlagenen'?",
|
|
53
|
+
answer: "Det är det gyllene snittet inom mixologi som balanserar tre element: den starka basen (sprit), det sura (citrusfrukter) och det söta (siraper). Ett klassiskt recept följer vanligtvis förhållandet 2:1:1 (Stark:Sur:Söt), även om detta varierar beroende på styrka och densitet.",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
question: "Hur påverkar utspädning cocktails balans?",
|
|
57
|
+
answer: "Is kyl inte bara; det adderar vatten (utspädning) som öppnar spritens aromer och mjukar upp topparna av surhet och söta. En balanserad cocktail i shaken kan bli obalanserad om den lämnas för länge med is i glaset.",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
question: "Varför smakar mina hemgjorda cocktails inte som de på baren?",
|
|
61
|
+
answer: "Det beror vanligtvis på bristen på balans mellan socker och citronfrukternas pH. Citron varierar i surhet beroende på årstid. Vår kalkylator hjälper dig att justera den exakta mängden sirap baserat på volymen saft som använts.",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
question: "Vad är Brix-grader och varför är de viktiga i cocktails?",
|
|
65
|
+
answer: "Brix är en skala som mäter mängden upplöst socker i en vätska. En enkel sirap (1:1) ligger runt 50 °Brix; en rik sirap (2:1) överstiger 66 °Brix. Ju högre Brix, desto mer kropp och söta bidrar det per volymenheten. Att veta detta låter dig byta siraper i ett recept utan att bryta balansen.",
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
const howTo: CocktailBalancerLocaleContent['howTo'] = [
|
|
70
|
+
{
|
|
71
|
+
name: "Välj alkoholisk bas",
|
|
72
|
+
text: "Välj huvudspriten (Gin, Rom, Whiskey) från vår databas för att känna till dess kropp och alkoholbidrag.",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: "Ange den sura agenten",
|
|
76
|
+
text: "Lägg till volymen av citron-, lime- eller grapefruktjuice. Kalkylatorn analyserar pH-effekten på blandningen.",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: "Justera den söta komponenten",
|
|
80
|
+
text: "Ange siraptyp (enkel, 2:1, agava) och se hur balanssindikatorn rör sig i realtid.",
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: "Perfekt servering",
|
|
84
|
+
text: "Granska verktygets slutgiltiga dikt: surförhållandet, det beräknade ABV efter utspädning och rättningsförslag. Servera med färsk is och finjustera citrus eller sirap efter smak.",
|
|
85
|
+
},
|
|
86
|
+
];
|
|
87
|
+
|
|
88
|
+
const bibliography: CocktailBalancerLocaleContent['bibliography'] = [
|
|
89
|
+
{
|
|
90
|
+
name: "Liquid Intelligence: The Art and Science of the Perfect Cocktail",
|
|
91
|
+
url: "https://www.indigo.ca/en-ca/liquid-intelligence-the-art-and-science-of-the-perfect-cocktail/9780393089035.html",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: "Cocktails: The Science of Shaking",
|
|
95
|
+
url: "https://cookingissues.com/2009/07/22/cocktails-the-science-of-shaking/",
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: "Cocktail Balance - Difford's Guide",
|
|
99
|
+
url: "https://www.diffordsguide.com/encyclopedia/1066/cocktails/cocktail-balance",
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
|
|
103
|
+
const seo: CocktailBalancerLocaleContent['seo'] = [
|
|
104
|
+
{
|
|
105
|
+
type: 'title',
|
|
106
|
+
text: 'Molekylär Teknik och Vätskebalans',
|
|
107
|
+
level: 2
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: 'Välkommen till det digitala laboratoriet där intuition möter matematik. Detta verktyg är inte bara en receptbok; det är en <strong>avancerad fysikalisk-kemisk simulator</strong> utformad för att dekonstruera och analysera din cocktails molekylära struktur i realtid. Varje droppe citrusfrukter, varje mått sprit, varje gram sirap interagerar enligt oföränderliga kemiska lagar som avgör om din dryck blir ett mästerverk eller en besvikelse misslyckande.'
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'stats',
|
|
115
|
+
items: [
|
|
116
|
+
{ label: 'Lime', value: '~6% Sur', icon: 'mdi:fruit-citrus' },
|
|
117
|
+
{ label: 'Citron', value: '~6% Sur', icon: 'mdi:fruit-citrus' },
|
|
118
|
+
{ label: 'Grapefrukt', value: '~1-2% Sur', icon: 'mdi:fruit-citrus' }
|
|
119
|
+
],
|
|
120
|
+
columns: 3
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'card',
|
|
124
|
+
title: 'Surhetsvetenskapen',
|
|
125
|
+
icon: 'mdi:fruit-citrus',
|
|
126
|
+
html: 'Surhet är inte bara en smak; det är det strukturella ryggraden på varje balanserad cocktail. Utan rätt surhet blir en dryck platt, endimensionell och glömsk. Vår algoritm skiljer mellan titrerbar surhet av persisk lime jämfört med Eureka-citron, tar hänsyn till säsongsvariationer i citrusfrukts pH som kan flytta ditt recept ett helt balanspoäng på gommen.'
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'card',
|
|
130
|
+
title: 'Brixkontroll (Söta)',
|
|
131
|
+
icon: 'mdi:spoon-sugar',
|
|
132
|
+
html: 'Din cocktails kropp och textur beror helt på upplöst socker. En enkel sirap (1:1) beter sig mycket annorlunda än en rik sirap (2:1), honung eller agavesirap. Varje sötningsmedel har olika Brix-grad och viskositet som påverkar hur drycken kläder tungan. Vår kalkylator beräknar de exakta grammen upplöst socker för att förutsäga slutmun och sötkänning.'
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: 'card',
|
|
136
|
+
title: 'Termodynamik och Utspädning',
|
|
137
|
+
icon: 'mdi:water-percent',
|
|
138
|
+
html: 'En skakad cocktail späds ut 25-40% beroende på istemperatur, skakningsmetod och varaktighet. Denna vattenaddition är ingen defekt; det är en väsentlig ingrediens som öppnar aromer och mjukar upp alkoholkanten. Vår kalkylator uppskattar slutligabv efter utspädning, så du kan konstruera drycker med precis den avsedd styrka och smakbalans.'
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Bortom Grundförhållandet',
|
|
143
|
+
level: 2
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'Många bartenders lär sig den klassiska 2:1:1-regeln (2 delar sprit, 1 del sur, 1 del söt) och behandlar det som universell sanning. Men <strong>kemien är mycket mer nyanserad</strong>. En citron från Sicilien innehåller annan surhet än en lime från Mexiko. En triple sec som Cointreau beter sig radikalt annorlunda än blå Curaçao. Samma recept kan smaka perfekt balanserat en vecka och brutalt surt nästa, bara på grund av säsongsvariationer i frukt.'
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: 'Denna balansör bryter igenom dessa simplastiska barriärer. Genom att mata in dina specifika ingredienser konsulterar du en levande databas som dynamiskt justerar surhet- och söthetsvektorer för att erbjuda en precis sensorisk karta över din skapelse. Sluta gissa och börja konstruera dina cocktails med samma vetenskapliga rigoritet som bartenders på världsklass-etablissemang använder vid varje service.'
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'summary',
|
|
155
|
+
title: 'Vem är detta verktyg för?',
|
|
156
|
+
items: [
|
|
157
|
+
'Professionella bartenders: Standardisera recept och skapa signaturmeny med reproducerbar konsistens.',
|
|
158
|
+
'Hemmaentusiaster: Sluta gissa och börja förstå varför dina cocktails lyckas eller misslyckas.',
|
|
159
|
+
'Dryckestillverkare: Prototyp snabbt nya smakbegrepp innan dyra produktionskörningar.'
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
type: 'diagnostic',
|
|
164
|
+
title: 'Den Gyllene Zonen',
|
|
165
|
+
icon: 'mdi:star',
|
|
166
|
+
variant: 'success',
|
|
167
|
+
badge: 'Mål',
|
|
168
|
+
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.'
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
type: 'tip',
|
|
172
|
+
title: 'Experttips: Använd Alltid Färsk Citrusfrukter',
|
|
173
|
+
html: 'Pressa alltid citrusfrukter i sista stund. Citron- och limejuice oxideras snabbt, förlorar levande surhet inom 20-30 minuter efter pressning. En cocktail gjord med verkligt färsk juice kommer alltid att ha en ljusstyrka och vitalitet på gommen som inget buteljerat produkter kan replikera. Använd frukt vid rumstemperatur för att maximera saftutbytet.'
|
|
174
|
+
}
|
|
175
|
+
];
|
|
176
|
+
|
|
177
|
+
const schemas: CocktailBalancerLocaleContent['schemas'] = [
|
|
178
|
+
{
|
|
179
|
+
'@context': 'https://schema.org',
|
|
180
|
+
'@type': 'FAQPage',
|
|
181
|
+
mainEntity: faq.map((item) => ({
|
|
182
|
+
'@type': 'Question',
|
|
183
|
+
name: item.question,
|
|
184
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
185
|
+
})),
|
|
186
|
+
} as WithContext<FAQPage>,
|
|
187
|
+
{
|
|
188
|
+
'@context': 'https://schema.org',
|
|
189
|
+
'@type': 'HowTo',
|
|
190
|
+
name: title,
|
|
191
|
+
description: description,
|
|
192
|
+
step: howTo.map((step, i) => ({
|
|
193
|
+
'@type': 'HowToStep',
|
|
194
|
+
position: i + 1,
|
|
195
|
+
name: step.name,
|
|
196
|
+
text: step.text,
|
|
197
|
+
})),
|
|
198
|
+
} as WithContext<HowTo>,
|
|
199
|
+
{
|
|
200
|
+
'@context': 'https://schema.org',
|
|
201
|
+
'@type': 'SoftwareApplication',
|
|
202
|
+
name: title,
|
|
203
|
+
description: description,
|
|
204
|
+
applicationCategory: 'UtilityApplication',
|
|
205
|
+
operatingSystem: 'Web',
|
|
206
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
207
|
+
} as WithContext<SoftwareApplication>,
|
|
208
|
+
];
|
|
209
|
+
|
|
210
|
+
export const content: CocktailBalancerLocaleContent = {
|
|
211
|
+
slug,
|
|
212
|
+
title,
|
|
213
|
+
description,
|
|
214
|
+
ui,
|
|
215
|
+
seo,
|
|
216
|
+
faqTitle,
|
|
217
|
+
faq,
|
|
218
|
+
bibliographyTitle,
|
|
219
|
+
bibliography,
|
|
220
|
+
howTo,
|
|
221
|
+
schemas,
|
|
222
|
+
};
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
|
|
2
|
+
import type { CocktailBalancerUI, CocktailBalancerLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'kokteyl-dengeleyici';
|
|
5
|
+
const title = 'Cocktail Balancer: Asitlik Kanunu';
|
|
6
|
+
const description = 'Koktailleriniz için tatlı ve asit arasındaki mükemmel dengeyi hesaplayın. Miksoloji\'nin altın oranını keşfedin.';
|
|
7
|
+
|
|
8
|
+
const ui: CocktailBalancerUI = {
|
|
9
|
+
title: 'Cocktail Balancer',
|
|
10
|
+
presetsBtn: 'Tarifler',
|
|
11
|
+
saveBtn: 'Kaydet',
|
|
12
|
+
resetBtn: 'Sıfırla',
|
|
13
|
+
emptyStateTitle: 'Çalışma Tezgahınız Boş',
|
|
14
|
+
emptyStateDescription: 'Koktail dengenizi gerçek zamanlı olarak analiz etmek için malzeme ekleyin.',
|
|
15
|
+
addBtn: 'Malzeme Ekle',
|
|
16
|
+
addMoreBtn: 'Başka Malzeme Ekle',
|
|
17
|
+
flavorProfileTitle: 'Tat Profili',
|
|
18
|
+
volLabel: 'Hacim',
|
|
19
|
+
sugarLabel: 'Şeker',
|
|
20
|
+
colorLabel: 'Renk',
|
|
21
|
+
sourLawTitle: 'Asitlik Kanunu',
|
|
22
|
+
acidDryLabel: 'Asit (Kuru)',
|
|
23
|
+
balanceLabel: 'Denge',
|
|
24
|
+
sweetLabel: 'Tatlı',
|
|
25
|
+
aiSuggestionTitle: 'YZ Önerisi',
|
|
26
|
+
addIngredientTitle: 'Malzeme Ekle',
|
|
27
|
+
searchPlaceholder: 'Rom, limon, şurup ara...',
|
|
28
|
+
presetsTitle: 'Tarifler & Ön Ayarlar',
|
|
29
|
+
savedSectionTitle: 'Kaydedilen',
|
|
30
|
+
classicsSectionTitle: 'Klasikler',
|
|
31
|
+
confirmDeleteTitle: 'Hepsini sil?',
|
|
32
|
+
confirmDeleteText: 'Bu, tüm malzemeleri çalışma tezgahınızdan kaldıracaktır. Bu işlem geri alınamaz.',
|
|
33
|
+
cancelBtn: 'İptal',
|
|
34
|
+
deleteBtn: 'Sil',
|
|
35
|
+
verdictSpiritSeco: 'İçkili / Kuru',
|
|
36
|
+
verdictSoloDulce: 'Sadece Tatlı (Old Fashioned)',
|
|
37
|
+
verdictMuyAcido: 'Çok Asitli / Kemik Kuru',
|
|
38
|
+
verdictAcido: 'Asitli / Tatlı',
|
|
39
|
+
verdictEquilibrado: 'Dengeli (Asitli)',
|
|
40
|
+
verdictDulce: 'Tatlı / Ticari',
|
|
41
|
+
verdictEmpalagoso: 'Çok Tatlı',
|
|
42
|
+
fixAddBitters: 'Acı Eksik',
|
|
43
|
+
fixAddSugar: 'Çok Asitli',
|
|
44
|
+
fixAddAcid: 'Çok Tatlı'
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const faqTitle = 'Sıkça Sorulan Sorular';
|
|
48
|
+
const bibliographyTitle = 'Kaynakça ve Kaynaklar';
|
|
49
|
+
|
|
50
|
+
const faq: CocktailBalancerLocaleContent['faq'] = [
|
|
51
|
+
{
|
|
52
|
+
question: "'Asitlik Kanunu' nedir?",
|
|
53
|
+
answer: "Üç öğeyi dengelemek için miksölojinin altın oranıdır: güçlü taban (spirt), asitlik (sitruslar) ve tatllık (şuruplar). Klasik bir tarif genellikle 2:1:1 oranını (Güçlü:Asitli:Tatlı) takip eder, ancak bu güç ve yoğunluğa bağlı olarak değişir.",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
question: "Seyreltme koktail dengesini nasıl etkiler?",
|
|
57
|
+
answer: "Buz sadece soğutmakla kalmaz; spiritin aromatlarını açan ve asitlik ile tatllık doruklarını yumuşatan su (seyreltme) ekler. Shakerlerde dengeli bir koktail bardakta çok uzun süre buz kalırsa dengesiz hale gelebilir.",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
question: "Evde yaptığım koktaillerim barda olanlar gibi neden tatmıyor?",
|
|
61
|
+
answer: "Genellikle şeker ve sitrusların pH değeri arasında denge eksikliğinden kaynaklanır. Limonlar mevsime bağlı olarak asitlikte değişir. Hesaplayıcımız, kullanılan suyun hacmine göre tamamen şurup miktarını ayarlamanıza yardımcı olur.",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
question: "Brix dereceleri nedir ve koktaillerde neden önemlidir?",
|
|
65
|
+
answer: "Brix, bir sıvıdaki çözünmüş şeker miktarını ölçen bir ölçektir. Basit şurup (1:1) yaklaşık 50 °Brix'tedir; zengin şurup (2:1) 66 °Brix'i aşar. Brix ne kadar yüksekse, birim hacim başına o kadar çok gövde ve tatllık sağlar. Bunu bilmek, dengeyi bozmadan tariflerde şurupları değiştirmenizi sağlar.",
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
const howTo: CocktailBalancerLocaleContent['howTo'] = [
|
|
70
|
+
{
|
|
71
|
+
name: "Alkollü tabanı seçin",
|
|
72
|
+
text: "Ana spiriti (Cin, Rom, Viski) veri tabanımızdan seçerek gövde ve alkol katkısını bilin.",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: "Asitlik ajanını girin",
|
|
76
|
+
text: "Limon, limonata veya grapefruit suyu hacmini ekleyin. Hesaplayıcı, karışımdaki pH etkisini analiz edecektir.",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: "Tatlı bileşeni ayarlayın",
|
|
80
|
+
text: "Şurup türünü (basit, 2:1, agave) girin ve denge göstergesi gerçek zamanlı olarak hareket ederken izleyin.",
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: "Mükemmel servis",
|
|
84
|
+
text: "Aracının nihai kararını gözden geçirin: asitlik oranı, seyreltme sonrası tahmini ABV ve düzeltme önerileri. Taze buz ile servis yapın ve sitruslar veya şurupu tadınıza göre ayarlayın.",
|
|
85
|
+
},
|
|
86
|
+
];
|
|
87
|
+
|
|
88
|
+
const bibliography: CocktailBalancerLocaleContent['bibliography'] = [
|
|
89
|
+
{
|
|
90
|
+
name: "Liquid Intelligence: The Art and Science of the Perfect Cocktail",
|
|
91
|
+
url: "https://www.indigo.ca/en-ca/liquid-intelligence-the-art-and-science-of-the-perfect-cocktail/9780393089035.html",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: "Cocktails: The Science of Shaking",
|
|
95
|
+
url: "https://cookingissues.com/2009/07/22/cocktails-the-science-of-shaking/",
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: "Cocktail Balance - Difford's Guide",
|
|
99
|
+
url: "https://www.diffordsguide.com/encyclopedia/1066/cocktails/cocktail-balance",
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
|
|
103
|
+
const seo: CocktailBalancerLocaleContent['seo'] = [
|
|
104
|
+
{
|
|
105
|
+
type: 'title',
|
|
106
|
+
text: 'Moleküler Mühendislik ve Sıvı Dengesi',
|
|
107
|
+
level: 2
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: 'Sezgi matematiğin karşılaştığı dijital laboratuvara hoş geldiniz. Bu araç basit bir tarif kitabı değil; koktaillerinizin moleküler yapısını gerçek zamanlı olarak ayrıştırmak ve analiz etmek için tasarlanmış <strong>ileri düzey fiziko-kimyasal bir simülatördür</strong>. Sitrusların her damlası, spiritinin her ölçümü, şurupun her gramı, içeceğinizin bir başyapı mı yoksa hayal kırıklığı verici bir başarısızlık mı olacağını belirleyen değişmez kimya yasalarına göre etkileşime girer.'
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'stats',
|
|
115
|
+
items: [
|
|
116
|
+
{ label: 'Limonata', value: '~6% Asit', icon: 'mdi:fruit-citrus' },
|
|
117
|
+
{ label: 'Limon', value: '~6% Asit', icon: 'mdi:fruit-citrus' },
|
|
118
|
+
{ label: 'Greyfurt', value: '~1-2% Asit', icon: 'mdi:fruit-citrus' }
|
|
119
|
+
],
|
|
120
|
+
columns: 3
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'card',
|
|
124
|
+
title: 'Asitliğin Bilimi',
|
|
125
|
+
icon: 'mdi:fruit-citrus',
|
|
126
|
+
html: 'Asitlik sadece bir tat değil; dengeli bir koktailin yapısal omurgasıdır. Doğru asitlik olmadan, bir içecek düz, tek boyutlu ve unutulur hale gelir. Algoritmamız, tat alma yüzeyinde reçetelerinizi tüm bir denge noktası kadar kaydırabilen mevsimsel sitrus pH varyasyonlarını hesaba katarak, Pers limesi ile Eureka limonunun titre edilebilir asitliğini ayırt eder.'
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'card',
|
|
130
|
+
title: 'Brix Kontrolü (Tatllık)',
|
|
131
|
+
icon: 'mdi:spoon-sugar',
|
|
132
|
+
html: 'Koktailinizin gövdesi ve dokusu tamamen çözünmüş şekere bağlıdır. Basit şurup (1:1), zengin şurup (2:1), bal veya agave nektarından çok farklı davranır. Her tatlandırıcı, içeceğin dili nasıl kapladığını etkileyen farklı bir Brix derecesine ve viskoziteye sahiptir. Hesaplayıcımız, son ağız hissini ve tatllık algısını tahmin etmek için çözünen şekerin kesin gramlarını hesaplar.'
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: 'card',
|
|
136
|
+
title: 'Termodinamik ve Seyreltme',
|
|
137
|
+
icon: 'mdi:water-percent',
|
|
138
|
+
html: 'Çalkalanan bir koktail, buz sıcaklığı, çalkalama tekniği ve süresi bağlı olarak %25-40 seyreltilir. Bu su eklenmesi bir kusur değildir; aromatları açan ve alkolün kenarını yumuşatan temel bir bileşendir. Hesaplayıcımız, seyreltme sonrası son ABV\'yi tahmin eder, böylece tam olarak amaçlanan güç ve tat dengesine sahip içecekler tasarlayabilirsiniz.'
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: 'Temel Oranın Ötesinde',
|
|
143
|
+
level: 2
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: 'Birçok barista klasik 2:1:1 kuralını (2 kısım spirt, 1 kısım asitli, 1 kısım tatlı) öğrenir ve bunu evrensel gerçek olarak ele alır. Ancak <strong>kimya çok daha nüanslıdır</strong>. Sicilya\'dan bir limon Meksika\'dan bir limondan farklı asitlik içerir. Cointreau gibi bir triple sec, mavi Curaçao\'dan köklü olarak farklı davranır. Aynı tarif bir hafta mükemmel dengeli ve sonraki hafta, sadece mevsimsel meyve değişimi nedeniyle insanlık dışı asitli olabilir.'
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: 'Bu dengeleyici bu naif engelleri kırıyor. Belirli malzemeleri girerek, asitlik ve tatllık vektörlerini dinamik olarak ayarlayarak kreasyonunuzun kesin bir duyusal haritasını sunacak yaşayan bir veri tabanına başvurursunuz. Tahminde bulunmayı bırakın ve koktaillerinizi dünya sınıfı mekanlarındaki barıştaların her serviste kullandıkları bilimsel titizlikle tasarlamaya başlayın.'
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'summary',
|
|
155
|
+
title: 'Bu araç kimin için?',
|
|
156
|
+
items: [
|
|
157
|
+
'Profesyonel Barista: Tarifler standartlaştırın ve tekrarlanabilir tutarlılıkla imza menüleri oluşturun.',
|
|
158
|
+
'Ev Meraklıları: Tahminde bulunmayı bırakın ve koktaillerinizin başarılı veya başarısız olmasının nedenini anlamaya başlayın.',
|
|
159
|
+
'İçecek Geliştirici: Pahalı üretim çalışmalarından önce yeni tat kavramlarını hızlı bir şekilde prototipte çıkartın.'
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
type: 'diagnostic',
|
|
164
|
+
title: 'Altın Bölge',
|
|
165
|
+
icon: 'mdi:star',
|
|
166
|
+
variant: 'success',
|
|
167
|
+
badge: 'Hedef',
|
|
168
|
+
html: 'Bu nihai hedef: şekerin asitliğin saldırganlığını nötrleştirdiği kontrollü bir pH, taban spiritinin temel yağlarını ve aromatik bileşikleri maskelemeden. Bu kesin denge - Daiquiri, Margarita, Sidecar - tat kimyasının temel yasalarına uyduğu için on yıllara dayanmış içecekler yaşadığı yerdir.'
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
type: 'tip',
|
|
172
|
+
title: 'Uzman İpucu: Her Zaman Taze Sitrus Kullanın',
|
|
173
|
+
html: 'Her zaman sitrusu son anda sıkın. Limon ve limonata suyu hızla oksidize olur, sıkıldıktan 20-30 dakika içinde canlı asitliği kaybeder. Gerçekten taze suyla yapılan bir koktail, her zaman tat alma yüzeyinde hiçbir şişeleştirilmiş ürünün çoğalttığı parlaklık ve canlılığa sahip olacaktır. Suyun verimini en üst düzeye çıkarmak için oda sıcaklığındaki meyveni kullanın.'
|
|
174
|
+
}
|
|
175
|
+
];
|
|
176
|
+
|
|
177
|
+
const schemas: CocktailBalancerLocaleContent['schemas'] = [
|
|
178
|
+
{
|
|
179
|
+
'@context': 'https://schema.org',
|
|
180
|
+
'@type': 'FAQPage',
|
|
181
|
+
mainEntity: faq.map((item) => ({
|
|
182
|
+
'@type': 'Question',
|
|
183
|
+
name: item.question,
|
|
184
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
185
|
+
})),
|
|
186
|
+
} as WithContext<FAQPage>,
|
|
187
|
+
{
|
|
188
|
+
'@context': 'https://schema.org',
|
|
189
|
+
'@type': 'HowTo',
|
|
190
|
+
name: title,
|
|
191
|
+
description: description,
|
|
192
|
+
step: howTo.map((step, i) => ({
|
|
193
|
+
'@type': 'HowToStep',
|
|
194
|
+
position: i + 1,
|
|
195
|
+
name: step.name,
|
|
196
|
+
text: step.text,
|
|
197
|
+
})),
|
|
198
|
+
} as WithContext<HowTo>,
|
|
199
|
+
{
|
|
200
|
+
'@context': 'https://schema.org',
|
|
201
|
+
'@type': 'SoftwareApplication',
|
|
202
|
+
name: title,
|
|
203
|
+
description: description,
|
|
204
|
+
applicationCategory: 'UtilityApplication',
|
|
205
|
+
operatingSystem: 'Web',
|
|
206
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
207
|
+
} as WithContext<SoftwareApplication>,
|
|
208
|
+
];
|
|
209
|
+
|
|
210
|
+
export const content: CocktailBalancerLocaleContent = {
|
|
211
|
+
slug,
|
|
212
|
+
title,
|
|
213
|
+
description,
|
|
214
|
+
ui,
|
|
215
|
+
seo,
|
|
216
|
+
faqTitle,
|
|
217
|
+
faq,
|
|
218
|
+
bibliographyTitle,
|
|
219
|
+
bibliography,
|
|
220
|
+
howTo,
|
|
221
|
+
schemas,
|
|
222
|
+
};
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
|
|
2
|
+
import type { CocktailBalancerUI, CocktailBalancerLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'cocktail-balancer';
|
|
5
|
+
const title = '鸡尾酒平衡器:酸法则';
|
|
6
|
+
const description = '计算你的鸡尾酒中甜与酸的完美平衡。掌握调酒术的黄金比例。';
|
|
7
|
+
|
|
8
|
+
const ui: CocktailBalancerUI = {
|
|
9
|
+
title: '鸡尾酒平衡器',
|
|
10
|
+
presetsBtn: '食谱',
|
|
11
|
+
saveBtn: '保存',
|
|
12
|
+
resetBtn: '重置',
|
|
13
|
+
emptyStateTitle: '你的工作台是空的',
|
|
14
|
+
emptyStateDescription: '添加材料以实时分析你的鸡尾酒平衡。',
|
|
15
|
+
addBtn: '添加材料',
|
|
16
|
+
addMoreBtn: '再添加一种材料',
|
|
17
|
+
flavorProfileTitle: '风味概况',
|
|
18
|
+
volLabel: '体积',
|
|
19
|
+
sugarLabel: '糖',
|
|
20
|
+
colorLabel: '颜色',
|
|
21
|
+
sourLawTitle: '酸法则',
|
|
22
|
+
acidDryLabel: '酸(干)',
|
|
23
|
+
balanceLabel: '平衡',
|
|
24
|
+
sweetLabel: '甜',
|
|
25
|
+
aiSuggestionTitle: 'AI建议',
|
|
26
|
+
addIngredientTitle: '添加材料',
|
|
27
|
+
searchPlaceholder: '搜索朗姆酒、酸橙、糖浆...',
|
|
28
|
+
presetsTitle: '食谱和预设',
|
|
29
|
+
savedSectionTitle: '我的已保存',
|
|
30
|
+
classicsSectionTitle: '经典',
|
|
31
|
+
confirmDeleteTitle: '删除所有内容?',
|
|
32
|
+
confirmDeleteText: '这将删除工作台上的所有材料。此操作无法撤销。',
|
|
33
|
+
cancelBtn: '取消',
|
|
34
|
+
deleteBtn: '删除',
|
|
35
|
+
verdictSpiritSeco: '烈酒 / 干',
|
|
36
|
+
verdictSoloDulce: '仅甜味(老酒)',
|
|
37
|
+
verdictMuyAcido: '过酸 / 极干',
|
|
38
|
+
verdictAcido: '酸 / 尖酸',
|
|
39
|
+
verdictEquilibrado: '平衡(酸)',
|
|
40
|
+
verdictDulce: '甜 / 商业',
|
|
41
|
+
verdictEmpalagoso: '过甜',
|
|
42
|
+
fixAddBitters: '缺少苦味',
|
|
43
|
+
fixAddSugar: '过酸',
|
|
44
|
+
fixAddAcid: '过甜'
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const faqTitle = '常见问题';
|
|
48
|
+
const bibliographyTitle = '参考文献和来源';
|
|
49
|
+
|
|
50
|
+
const faq: CocktailBalancerLocaleContent['faq'] = [
|
|
51
|
+
{
|
|
52
|
+
question: "'酸法则'是什么?",
|
|
53
|
+
answer: "这是调酒术的黄金比例,它平衡三个要素:强劲的基础(烈酒)、酸性(柑橘类)和甜度(糖浆)。经典配方通常遵循2:1:1的比例(强:酸:甜),尽管这会根据强度和密度而变化。",
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
question: "稀释如何影响鸡尾酒的平衡?",
|
|
57
|
+
answer: "冰不仅仅冷却;它添加水(稀释),这打开烈酒的香气并柔和酸度和甜度的峰值。在摇杯器中平衡的鸡尾酒,如果在玻璃杯中放置太长时间的冰,可能会变得不平衡。",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
question: "为什么我自制的鸡尾酒尝起来不像酒吧里的那样?",
|
|
61
|
+
answer: "通常是由于糖和柑橘pH之间缺乏平衡。柠檬根据季节而异。我们的计算器可帮助你根据使用的果汁体积调整确切的糖浆量。",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
question: "什么是勃利克斯度,为什么它在鸡尾酒中很重要?",
|
|
65
|
+
answer: "勃利克斯是测量液体中溶解糖含量的量表。简单糖浆(1:1)约为50°Brix;丰富糖浆(2:1)超过66°Brix。勃利克斯越高,每单位体积贡献的身体和甜度就越多。了解这一点可以在不破坏平衡的情况下在配方中交换糖浆。",
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
const howTo: CocktailBalancerLocaleContent['howTo'] = [
|
|
70
|
+
{
|
|
71
|
+
name: "选择酒精基础",
|
|
72
|
+
text: "从我们的数据库中选择主要烈酒(金酒、朗姆酒、威士忌),以了解其风格和酒精含量。",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: "输入酸性代理",
|
|
76
|
+
text: "添加柠檬汁、酸橙汁或葡萄柚汁的体积。计算器将分析pH对混合物的影响。",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: "调整甜味成分",
|
|
80
|
+
text: "输入糖浆类型(简单、2:1、龙舌兰),并观看平衡指示器实时移动。",
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: "完美服务",
|
|
84
|
+
text: "审查该工具的最终裁决:酸比率、稀释后的估计ABV和更正建议。配新鲜冰块一起上桌,根据口味调整柑橘或糖浆。",
|
|
85
|
+
},
|
|
86
|
+
];
|
|
87
|
+
|
|
88
|
+
const bibliography: CocktailBalancerLocaleContent['bibliography'] = [
|
|
89
|
+
{
|
|
90
|
+
name: "Liquid Intelligence: The Art and Science of the Perfect Cocktail",
|
|
91
|
+
url: "https://www.indigo.ca/en-ca/liquid-intelligence-the-art-and-science-of-the-perfect-cocktail/9780393089035.html",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: "Cocktails: The Science of Shaking",
|
|
95
|
+
url: "https://cookingissues.com/2009/07/22/cocktails-the-science-of-shaking/",
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: "Cocktail Balance - Difford's Guide",
|
|
99
|
+
url: "https://www.diffordsguide.com/encyclopedia/1066/cocktails/cocktail-balance",
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
|
|
103
|
+
const seo: CocktailBalancerLocaleContent['seo'] = [
|
|
104
|
+
{
|
|
105
|
+
type: 'title',
|
|
106
|
+
text: '分子工程与液体平衡',
|
|
107
|
+
level: 2
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: 'paragraph',
|
|
111
|
+
html: '欢迎来到直觉与数学相遇的数字实验室。这个工具不是简单的食谱集;这是一个<strong>高级物理化学模拟器</strong>,旨在实时解构和分析你的鸡尾酒的分子结构。柑橘的每一滴、烈酒的每一克、糖浆的每一克都根据不变的化学定律相互作用,这决定了你的饮料是否会成为杰作或令人失望的失败。'
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'stats',
|
|
115
|
+
items: [
|
|
116
|
+
{ label: '酸橙', value: '~6% 酸', icon: 'mdi:fruit-citrus' },
|
|
117
|
+
{ label: '柠檬', value: '~6% 酸', icon: 'mdi:fruit-citrus' },
|
|
118
|
+
{ label: '葡萄柚', value: '~1-2% 酸', icon: 'mdi:fruit-citrus' }
|
|
119
|
+
],
|
|
120
|
+
columns: 3
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'card',
|
|
124
|
+
title: '酸度的科学',
|
|
125
|
+
icon: 'mdi:fruit-citrus',
|
|
126
|
+
html: '酸度不仅仅是一种味道;它是任何平衡的鸡尾酒的结构脊柱。没有适当的酸度,饮料就会变得平坦、单调且容易被遗忘。我们的算法区分波斯酸橙与尤里卡柠檬的可滴定酸度,同时考虑柑橘pH的季节变化,这可能会将你的食谱转移整个平衡点在味觉上。'
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'card',
|
|
130
|
+
title: '勃利克斯控制(甜度)',
|
|
131
|
+
icon: 'mdi:spoon-sugar',
|
|
132
|
+
html: '你的鸡尾酒的身体和质地完全取决于溶解的糖。简单糖浆(1:1)的行为与丰富糖浆(2:1)、蜂蜜或龙舌兰花蜜完全不同。每种甜味剂都有不同的勃利克斯度和粘度,影响饮料如何覆盖舌头。我们的计算器计算溶解糖的精确克数,以预测最终的口感和甜度感受。'
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: 'card',
|
|
136
|
+
title: '热力学与稀释',
|
|
137
|
+
icon: 'mdi:water-percent',
|
|
138
|
+
html: '摇晃的鸡尾酒根据冰温、摇晃技术和持续时间稀释25-40%。这种水的添加不是缺陷;这是打开香气并柔和酒精边缘的必需成分。我们的计算器估计稀释后的最终ABV,因此你可以设计具有精确预期强度和风味平衡的饮料。'
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'title',
|
|
142
|
+
text: '超越基本比例',
|
|
143
|
+
level: 2
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'paragraph',
|
|
147
|
+
html: '许多调酒师学习经典的2:1:1规则(2份烈酒、1份酸、1份甜)并将其视为普遍真理。然而,<strong>化学远更加细致</strong>。西西里岛的柠檬含有与墨西哥酸橙不同的酸度。像君度这样的三倍秒表现得与蓝色库拉索根本不同。同一个配方可能在一周内尝起来完美平衡,然后在下一周中令人难以忍受地酸,仅仅是由于季节水果变化。'
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: '这个平衡器突破了这些幼稚的障碍。通过输入你的具体材料,你查阅了一个生活数据库,该数据库动态调整酸度和甜度向量,以提供你的创意的精确感官地图。停止猜测,开始用世界级机构的调酒师在每次服务中使用的相同科学严谨性来设计你的鸡尾酒。'
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'summary',
|
|
155
|
+
title: '这个工具适合谁?',
|
|
156
|
+
items: [
|
|
157
|
+
'专业调酒师:标准化食谱并以可重复的一致性创建签名菜单。',
|
|
158
|
+
'家庭爱好者:停止猜测,开始理解为什么你的鸡尾酒成功或失败。',
|
|
159
|
+
'饮料开发者:在昂贵的生产运行之前快速原型新风味概念。'
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
type: 'diagnostic',
|
|
164
|
+
title: '黄金区域',
|
|
165
|
+
icon: 'mdi:star',
|
|
166
|
+
variant: 'success',
|
|
167
|
+
badge: '目标',
|
|
168
|
+
html: '这是最终目标:糖中和酸的进攻而不掩盖基础烈酒的精油和芳香化合物的受控pH。这种精确的平衡是永恒的经典所在——代基里、玛格丽塔、边车——饮料因为服从味觉化学的基本定律而在几十年内幸存。'
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
type: 'tip',
|
|
172
|
+
title: '专家提示:始终使用新鲜柑橘',
|
|
173
|
+
html: '始终在最后一刻挤压柑橘。柠檬和酸橙汁迅速氧化,在挤压后20-30分钟内失去活跃的酸度。用真正新鲜果汁制成的鸡尾酒在味觉上将始终具有亮度和生命力,这是任何瓶装产品都无法复制的。在室温下使用水果以最大化果汁产量。'
|
|
174
|
+
}
|
|
175
|
+
];
|
|
176
|
+
|
|
177
|
+
const schemas: CocktailBalancerLocaleContent['schemas'] = [
|
|
178
|
+
{
|
|
179
|
+
'@context': 'https://schema.org',
|
|
180
|
+
'@type': 'FAQPage',
|
|
181
|
+
mainEntity: faq.map((item) => ({
|
|
182
|
+
'@type': 'Question',
|
|
183
|
+
name: item.question,
|
|
184
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
185
|
+
})),
|
|
186
|
+
} as WithContext<FAQPage>,
|
|
187
|
+
{
|
|
188
|
+
'@context': 'https://schema.org',
|
|
189
|
+
'@type': 'HowTo',
|
|
190
|
+
name: title,
|
|
191
|
+
description: description,
|
|
192
|
+
step: howTo.map((step, i) => ({
|
|
193
|
+
'@type': 'HowToStep',
|
|
194
|
+
position: i + 1,
|
|
195
|
+
name: step.name,
|
|
196
|
+
text: step.text,
|
|
197
|
+
})),
|
|
198
|
+
} as WithContext<HowTo>,
|
|
199
|
+
{
|
|
200
|
+
'@context': 'https://schema.org',
|
|
201
|
+
'@type': 'SoftwareApplication',
|
|
202
|
+
name: title,
|
|
203
|
+
description: description,
|
|
204
|
+
applicationCategory: 'UtilityApplication',
|
|
205
|
+
operatingSystem: 'Web',
|
|
206
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
207
|
+
} as WithContext<SoftwareApplication>,
|
|
208
|
+
];
|
|
209
|
+
|
|
210
|
+
export const content: CocktailBalancerLocaleContent = {
|
|
211
|
+
slug,
|
|
212
|
+
title,
|
|
213
|
+
description,
|
|
214
|
+
ui,
|
|
215
|
+
seo,
|
|
216
|
+
faqTitle,
|
|
217
|
+
faq,
|
|
218
|
+
bibliographyTitle,
|
|
219
|
+
bibliography,
|
|
220
|
+
howTo,
|
|
221
|
+
schemas,
|
|
222
|
+
};
|