@jjlmoya/utils-alcohol 1.25.0 → 1.26.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 +1 -1
- package/src/entries.ts +7 -1
- package/src/index.ts +1 -0
- package/src/pages/[locale]/[slug].astro +7 -3
- package/src/tests/locale_completeness.test.ts +4 -9
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/alcoholClearance/bibliography.ts +6 -0
- package/src/tool/alcoholClearance/entry.ts +1 -0
- package/src/tool/alcoholClearance/i18n/de.ts +1 -12
- package/src/tool/alcoholClearance/i18n/en.ts +1 -12
- package/src/tool/alcoholClearance/i18n/es.ts +1 -12
- package/src/tool/alcoholClearance/i18n/fr.ts +1 -12
- package/src/tool/alcoholClearance/i18n/id.ts +1 -12
- package/src/tool/alcoholClearance/i18n/it.ts +1 -12
- package/src/tool/alcoholClearance/i18n/ja.ts +1 -12
- package/src/tool/alcoholClearance/i18n/ko.ts +1 -12
- package/src/tool/alcoholClearance/i18n/nl.ts +1 -12
- package/src/tool/alcoholClearance/i18n/pl.ts +1 -12
- package/src/tool/alcoholClearance/i18n/pt.ts +1 -12
- package/src/tool/alcoholClearance/i18n/ru.ts +1 -12
- package/src/tool/alcoholClearance/i18n/sv.ts +1 -12
- package/src/tool/alcoholClearance/i18n/tr.ts +1 -12
- package/src/tool/alcoholClearance/i18n/zh.ts +1 -12
- package/src/tool/beerCooler/bibliography.ts +6 -0
- package/src/tool/beerCooler/entry.ts +1 -0
- package/src/tool/beerCooler/i18n/de.ts +1 -12
- package/src/tool/beerCooler/i18n/en.ts +1 -12
- package/src/tool/beerCooler/i18n/es.ts +1 -12
- package/src/tool/beerCooler/i18n/fr.ts +1 -12
- package/src/tool/beerCooler/i18n/id.ts +1 -12
- package/src/tool/beerCooler/i18n/it.ts +1 -12
- package/src/tool/beerCooler/i18n/ja.ts +1 -12
- package/src/tool/beerCooler/i18n/ko.ts +1 -12
- package/src/tool/beerCooler/i18n/nl.ts +1 -12
- package/src/tool/beerCooler/i18n/pl.ts +1 -12
- package/src/tool/beerCooler/i18n/pt.ts +1 -12
- package/src/tool/beerCooler/i18n/ru.ts +1 -12
- package/src/tool/beerCooler/i18n/sv.ts +1 -12
- package/src/tool/beerCooler/i18n/tr.ts +1 -12
- package/src/tool/beerCooler/i18n/zh.ts +1 -12
- package/src/tool/carbonationCalculator/bibliography.ts +6 -0
- package/src/tool/carbonationCalculator/entry.ts +1 -0
- package/src/tool/carbonationCalculator/i18n/de.ts +1 -12
- package/src/tool/carbonationCalculator/i18n/en.ts +1 -12
- package/src/tool/carbonationCalculator/i18n/es.ts +1 -12
- package/src/tool/carbonationCalculator/i18n/fr.ts +1 -12
- package/src/tool/carbonationCalculator/i18n/id.ts +1 -12
- package/src/tool/carbonationCalculator/i18n/it.ts +1 -12
- package/src/tool/carbonationCalculator/i18n/ja.ts +1 -12
- package/src/tool/carbonationCalculator/i18n/ko.ts +1 -12
- package/src/tool/carbonationCalculator/i18n/nl.ts +1 -12
- package/src/tool/carbonationCalculator/i18n/pl.ts +1 -12
- package/src/tool/carbonationCalculator/i18n/pt.ts +1 -12
- package/src/tool/carbonationCalculator/i18n/ru.ts +1 -12
- package/src/tool/carbonationCalculator/i18n/sv.ts +1 -12
- package/src/tool/carbonationCalculator/i18n/tr.ts +1 -12
- package/src/tool/carbonationCalculator/i18n/zh.ts +1 -12
- package/src/tool/cocktailBalancer/bibliography.ts +7 -0
- package/src/tool/cocktailBalancer/entry.ts +1 -0
- package/src/tool/cocktailBalancer/i18n/de.ts +1 -16
- package/src/tool/cocktailBalancer/i18n/en.ts +1 -16
- package/src/tool/cocktailBalancer/i18n/es.ts +1 -16
- package/src/tool/cocktailBalancer/i18n/fr.ts +1 -16
- package/src/tool/cocktailBalancer/i18n/id.ts +1 -16
- package/src/tool/cocktailBalancer/i18n/it.ts +1 -16
- package/src/tool/cocktailBalancer/i18n/ja.ts +1 -16
- package/src/tool/cocktailBalancer/i18n/ko.ts +1 -16
- package/src/tool/cocktailBalancer/i18n/nl.ts +1 -16
- package/src/tool/cocktailBalancer/i18n/pl.ts +1 -16
- package/src/tool/cocktailBalancer/i18n/pt.ts +1 -16
- package/src/tool/cocktailBalancer/i18n/ru.ts +1 -16
- package/src/tool/cocktailBalancer/i18n/sv.ts +1 -16
- package/src/tool/cocktailBalancer/i18n/tr.ts +1 -16
- package/src/tool/cocktailBalancer/i18n/zh.ts +1 -16
- package/src/tool/fortifiedWine/bibliography.astro +14 -0
- package/src/tool/fortifiedWine/bibliography.ts +7 -0
- package/src/tool/fortifiedWine/component.astro +331 -0
- package/src/tool/fortifiedWine/entry.ts +62 -0
- package/src/tool/fortifiedWine/fortified-wine-builder.css +534 -0
- package/src/tool/fortifiedWine/i18n/de.ts +66 -0
- package/src/tool/fortifiedWine/i18n/en.ts +140 -0
- package/src/tool/fortifiedWine/i18n/es.ts +140 -0
- package/src/tool/fortifiedWine/i18n/fr.ts +91 -0
- package/src/tool/fortifiedWine/i18n/id.ts +91 -0
- package/src/tool/fortifiedWine/i18n/it.ts +91 -0
- package/src/tool/fortifiedWine/i18n/ja.ts +91 -0
- package/src/tool/fortifiedWine/i18n/ko.ts +91 -0
- package/src/tool/fortifiedWine/i18n/nl.ts +91 -0
- package/src/tool/fortifiedWine/i18n/pl.ts +91 -0
- package/src/tool/fortifiedWine/i18n/pt.ts +91 -0
- package/src/tool/fortifiedWine/i18n/ru.ts +91 -0
- package/src/tool/fortifiedWine/i18n/sv.ts +91 -0
- package/src/tool/fortifiedWine/i18n/tr.ts +91 -0
- package/src/tool/fortifiedWine/i18n/zh.ts +91 -0
- package/src/tool/fortifiedWine/index.ts +8 -0
- package/src/tool/fortifiedWine/logic.ts +46 -0
- package/src/tool/fortifiedWine/seo.astro +41 -0
- package/src/tool/jelloShotLab/bibliography.astro +14 -0
- package/src/tool/jelloShotLab/bibliography.ts +8 -0
- package/src/tool/jelloShotLab/component.astro +183 -0
- package/src/tool/jelloShotLab/entry.ts +62 -0
- package/src/tool/jelloShotLab/i18n/de.ts +156 -0
- package/src/tool/jelloShotLab/i18n/en.ts +156 -0
- package/src/tool/jelloShotLab/i18n/es.ts +156 -0
- package/src/tool/jelloShotLab/i18n/fr.ts +156 -0
- package/src/tool/jelloShotLab/i18n/id.ts +156 -0
- package/src/tool/jelloShotLab/i18n/it.ts +156 -0
- package/src/tool/jelloShotLab/i18n/ja.ts +156 -0
- package/src/tool/jelloShotLab/i18n/ko.ts +156 -0
- package/src/tool/jelloShotLab/i18n/nl.ts +156 -0
- package/src/tool/jelloShotLab/i18n/pl.ts +156 -0
- package/src/tool/jelloShotLab/i18n/pt.ts +156 -0
- package/src/tool/jelloShotLab/i18n/ru.ts +156 -0
- package/src/tool/jelloShotLab/i18n/sv.ts +156 -0
- package/src/tool/jelloShotLab/i18n/tr.ts +156 -0
- package/src/tool/jelloShotLab/i18n/zh.ts +156 -0
- package/src/tool/jelloShotLab/index.ts +11 -0
- package/src/tool/jelloShotLab/jello-shot-lab.css +229 -0
- package/src/tool/jelloShotLab/logic.ts +29 -0
- package/src/tool/jelloShotLab/seo.astro +53 -0
- package/src/tool/partyKeg/bibliography.ts +6 -0
- package/src/tool/partyKeg/entry.ts +1 -0
- package/src/tool/partyKeg/i18n/de.ts +1 -12
- package/src/tool/partyKeg/i18n/en.ts +1 -12
- package/src/tool/partyKeg/i18n/es.ts +1 -12
- package/src/tool/partyKeg/i18n/fr.ts +1 -12
- package/src/tool/partyKeg/i18n/id.ts +1 -12
- package/src/tool/partyKeg/i18n/it.ts +1 -12
- package/src/tool/partyKeg/i18n/ja.ts +1 -12
- package/src/tool/partyKeg/i18n/ko.ts +1 -12
- package/src/tool/partyKeg/i18n/nl.ts +1 -12
- package/src/tool/partyKeg/i18n/pl.ts +1 -12
- package/src/tool/partyKeg/i18n/pt.ts +1 -12
- package/src/tool/partyKeg/i18n/ru.ts +1 -12
- package/src/tool/partyKeg/i18n/sv.ts +1 -12
- package/src/tool/partyKeg/i18n/tr.ts +1 -12
- package/src/tool/partyKeg/i18n/zh.ts +1 -12
- package/src/tools.ts +5 -0
- package/src/types.ts +1 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { JelloShotLabUI, JelloShotLabLocaleContent } from '../entry';
|
|
4
|
+
|
|
5
|
+
const slug = 'jello-shot-kalkylator';
|
|
6
|
+
const title = 'Jello Shot Kalkylator: Den perfekta kalkylatorn för alkohol och gelatin';
|
|
7
|
+
const description = 'Beräkna exakt hur mycket sprit och gelatin du behöver för jello shots som faktiskt stelnar. Undvik rinniga eller gummiliknande misslyckanden med vetenskapsbaserade förhållanden för alla alkoholstyrkor.';
|
|
8
|
+
|
|
9
|
+
const ui: JelloShotLabUI = {
|
|
10
|
+
title: 'Jello Shot Kalkylator',
|
|
11
|
+
description: 'Få det perfekta förhållandet av gelatin, vatten och alkohol så att dina shots stelnar varje gång.',
|
|
12
|
+
liquorBaseLabel: 'Typ av sprit',
|
|
13
|
+
liquorAbvLabel: 'Alkoholstyrka (%)',
|
|
14
|
+
gelatinLabel: 'Typ av gelatin',
|
|
15
|
+
diluentLabel: 'Vattenbas',
|
|
16
|
+
calculateBtn: 'Beräkna',
|
|
17
|
+
modePrecision: 'Precisionsläge',
|
|
18
|
+
modeIntensity: 'Shot-styrka',
|
|
19
|
+
modeIntensityLight: 'Lätt (Enkelt)',
|
|
20
|
+
modeIntensityBalanced: 'Standard',
|
|
21
|
+
modeIntensityLimit: 'Maximum (Starkt)',
|
|
22
|
+
partyPlannerTitle: 'Festplanerare',
|
|
23
|
+
partyPlannerGuestLabel: 'Gäster',
|
|
24
|
+
partyPlannerShotsPerGuest: 'Shots per person',
|
|
25
|
+
multiLayerTitle: 'Flerskiktigt',
|
|
26
|
+
howToTitle: 'Hur man gör dem',
|
|
27
|
+
proTipsTitle: 'Proffstips',
|
|
28
|
+
resultsTitle: 'Ditt recept',
|
|
29
|
+
totalVolumeLabel: 'Total volym',
|
|
30
|
+
boilingWaterLabel: 'Hett vatten',
|
|
31
|
+
alcoholVolumeLabel: 'Sprit',
|
|
32
|
+
packetsNeededLabel: 'Gelatinpåsar',
|
|
33
|
+
chillingTimeLabel: 'Kyltid',
|
|
34
|
+
unitMm: 'ml',
|
|
35
|
+
unitOz: 'oz',
|
|
36
|
+
unitGrams: 'g',
|
|
37
|
+
unitPackets: 'påsar',
|
|
38
|
+
modeParty: 'Festläge',
|
|
39
|
+
modeRecipe: 'Receptläge',
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const faqTitle = 'Vanliga frågor';
|
|
43
|
+
|
|
44
|
+
const faq: JelloShotLabLocaleContent['faq'] = [
|
|
45
|
+
{
|
|
46
|
+
question: 'Varför hindrar stark alkohol jello shots från att stelna?',
|
|
47
|
+
answer: 'Etanol stör vätebindningarna som håller ihop gelatinets trippelhelix-proteinstruktur. När spriten utgör ungefär 35% av den totala volymen kan proteinmatrisen inte bilda ett stabilt nätverk och shoten förblir flytande. Ju högre ABV spriten har, desto mindre volym kan man tillsätta innan man når denna gräns.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
question: 'Vad är det maximala alkoholförhållandet innan jello shots slutar stelna?',
|
|
51
|
+
answer: 'Den säkra övre gränsen är ungefär 30–35% av den totala vätskovolymen som ren sprit (vid 40% ABV). Med en neutral sprit på 96% sjunker den gränsen till ungefär 15–18% av den totala volymen. Vår kalkylator tar hänsyn till spritens ABV så att du aldrig överskrider stelningsgränsen.',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
question: 'Spelar det någon roll vilken sprit man använder — vodka, rom eller tequila?',
|
|
55
|
+
answer: 'Det som spelar roll är ABV, inte sprittypen. Vodka med 40% och rom med 40% beter sig identiskt i gelatinmatrisen. Spritsorter med högre sockerhalt (som vissa romsörter eller likörer) kan förbättra texturen något eftersom sockret konkurrerar med etanolen om vätebindningarna i gelatinnätverket.',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
question: 'Hur länge håller jello shots i kylskåpet?',
|
|
59
|
+
answer: 'Rätt tillverkade jello shots håller 3–5 dagar i kylskåpet täckta med plastfolie. Den höga alkoholhalten fungerar som ett naturligt konserveringsmedel. Undvik att lämna dem i rumstemperatur mer än 2 timmar eftersom gelatinet mjuknar och bakterier kan föröka sig.',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
question: 'Kan jag göra mina jello shots fastare eller mjukare?',
|
|
63
|
+
answer: 'Ja. Använd mer gelatin (eller ett halvt extra paket) för fastare shots som glider rent ur muggarna. Använd lite mindre för en mjukare, dallrande konsistens. Ersätt aldrig gelatin med agar-agar om du vill ha en smälter-i-munnen-konsistens — agar stelnar hårdare och smälter vid en högre temperatur.',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
question: 'Kan jag frysa jello shots för att snabba upp kylningen?',
|
|
67
|
+
answer: 'Nej. Frysning bryter ner gelatinnätverket och ger en vattnig, grynig konsistens när de tinar. Kyl alltid i minst 4 timmar. Gör dem kvällen innan för fester — 8+ timmar ger bäst konsistens.',
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
const howTo: JelloShotLabLocaleContent['howTo'] = [
|
|
72
|
+
{ name: 'Välj din sprit', text: 'Ange ABV för din sprit och välj den önskade shot-styrkan. Kalkylatorn visar dig den maximala mängd sprit ditt gelatin kan hålla.' },
|
|
73
|
+
{ name: 'Blanda gelatinet', text: 'Häll den beräknade mängden kokande vatten i en skål. Tillsätt gelatinpulvret och rör energiskt i 2 minuter tills det är helt upplöst. Tillsätt inte alkohol ännu.' },
|
|
74
|
+
{ name: 'Tillsätt spriten', text: 'Låt gelatinblandningen svalna i 5–10 minuter tills den är varm men inte het (under 50 °C). Tillsätt din sprit och rör försiktigt för att undvika bubblor.' },
|
|
75
|
+
{ name: 'Häll upp och kyl', text: 'Häll i plastmuggar, silikonformar eller små shotglas. Kyl i minst 4 timmar — en hel natt är idealiskt. Frys inte.' },
|
|
76
|
+
];
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
const seo: JelloShotLabLocaleContent['seo'] = [
|
|
80
|
+
{ type: 'title', text: 'Kemin bakom en perfekt jello shot', level: 2 },
|
|
81
|
+
{
|
|
82
|
+
type: 'paragraph',
|
|
83
|
+
html: 'En jello shot är inte bara smaksatt gelatin med alkohol ihällt — det är en <strong>känslig kolloidal suspension</strong> där proteinpolymerer, vatten och etanol konkurrerar om vätebindningar. Fel förhållande och du slutar med en pöl söt vätska eller en gummiliknande skiva som studsar av bordet. Rätt förhållande och du har en perfekt darrande shot som glider ut ur muggen i en enda ren rörelse.',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
type: 'stats',
|
|
87
|
+
items: [
|
|
88
|
+
{ label: 'Lätt (Enkelt)', value: '~30% sprit', icon: 'mdi:emoticon-happy-outline' },
|
|
89
|
+
{ label: 'Standard', value: '~45% sprit', icon: 'mdi:flask-outline' },
|
|
90
|
+
{ label: 'Maximum', value: '~55% sprit', icon: 'mdi:fire' },
|
|
91
|
+
],
|
|
92
|
+
columns: 3,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
type: 'card',
|
|
96
|
+
title: 'Vad är Bloom styrka?',
|
|
97
|
+
icon: 'mdi:molecule',
|
|
98
|
+
html: 'Bloom mäter gelatinets gelningsstyrka, vanligtvis från 50 till 300 Bloom. Bladgelatin från snabbköpet är normalt 150–200 Bloom. Högre Bloom innebär ett fastare gel med samma mängd pulver, vilket betyder att det kan tolerera lite mer alkohol innan det misslyckas att stelna. Standardpåsar med gelatinpulver (7 g) är kalibrerade för ca 240 ml vätska.',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'card',
|
|
102
|
+
title: 'Etanolgränsen',
|
|
103
|
+
icon: 'mdi:alert-circle-outline',
|
|
104
|
+
html: 'Etanol konkurrerar med vatten om vätebindningsplatserna på kollagenets aminosyrakedior. När etanol upptar för många av dessa platser kan proteinet inte vika sig till den stabila trippelhelix som ger gelatin dess struktur. Den praktiska gränsen är ungefär <strong>1 del 40%-ig sprit till 1 del vatten</strong> — bortom det stelnar din shot inte oavsett hur länge du väntar.',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'tip',
|
|
108
|
+
title: 'Tillsätt aldrig alkohol till kokande gelatin',
|
|
109
|
+
html: 'Alkohol avdunstar snabbt över 78 °C. Låt alltid ditt lösta gelatin svalna till under 50 °C innan du rör ner spriten. Det enda steget är ansvarigt för fler misslyckade jello shots än något annat misstag.',
|
|
110
|
+
},
|
|
111
|
+
{ type: 'title', text: 'Felsöka vanliga misslyckanden', level: 2 },
|
|
112
|
+
{
|
|
113
|
+
type: 'proscons',
|
|
114
|
+
title: 'Tecken och lösningar',
|
|
115
|
+
items: [
|
|
116
|
+
{ pro: 'Shot är flytande efter 4 timmar → För mycket alkohol eller förhållande överskridet. Minska spritvolymen.', con: 'Shot smakar inte alkohol → Spriten tillsattes i vätska som fortfarande var för het. Låt svalna först.' },
|
|
117
|
+
{ pro: 'Shot är för gummiliknande → För mycket gelatin. Minska med ett halvt paket nästa gång.', con: 'Shot är grumlig → Bubblor infångade vid blandning. Rör försiktigt och låt vila innan hällning.' },
|
|
118
|
+
{ pro: 'Shot har grynig konsistens → Gelatin inte helt upplöst. Rör längre i hett vatten.', con: 'Shot stelnar inte efter 8 timmar → Etanolgränsen överskriden. Använd mindre sprit eller lägre ABV.' },
|
|
119
|
+
],
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'summary',
|
|
123
|
+
title: 'Vem är det här verktyget för?',
|
|
124
|
+
items: [
|
|
125
|
+
'Festarrangörer: Beräkna exakt hur många påsar och hur mycket sprit du behöver innan du handlar.',
|
|
126
|
+
'Bartenders: Skala upp till storskalig produktion med konsekventa resultat varje gång.',
|
|
127
|
+
'Hemmakockar: Undvik de vanligaste misslyckandena — rinniga shots, gummiliknande konsistens eller noll alkoholsmak.',
|
|
128
|
+
],
|
|
129
|
+
},
|
|
130
|
+
];
|
|
131
|
+
|
|
132
|
+
const schemas: JelloShotLabLocaleContent['schemas'] = [
|
|
133
|
+
{
|
|
134
|
+
'@context': 'https://schema.org',
|
|
135
|
+
'@type': 'FAQPage',
|
|
136
|
+
mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
|
|
137
|
+
} as WithContext<FAQPage>,
|
|
138
|
+
{
|
|
139
|
+
'@context': 'https://schema.org',
|
|
140
|
+
'@type': 'HowTo',
|
|
141
|
+
name: title,
|
|
142
|
+
description,
|
|
143
|
+
step: howTo.map((step, i) => ({ '@type': 'HowToStep', position: i + 1, name: step.name, text: step.text })),
|
|
144
|
+
} as WithContext<HowTo>,
|
|
145
|
+
{
|
|
146
|
+
'@context': 'https://schema.org',
|
|
147
|
+
'@type': 'SoftwareApplication',
|
|
148
|
+
name: title,
|
|
149
|
+
description,
|
|
150
|
+
applicationCategory: 'UtilityApplication',
|
|
151
|
+
operatingSystem: 'Web',
|
|
152
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
153
|
+
} as WithContext<SoftwareApplication>,
|
|
154
|
+
];
|
|
155
|
+
|
|
156
|
+
export const content: JelloShotLabLocaleContent = { slug, title, description, ui, seo, faqTitle, faq, bibliography, howTo, schemas };
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { JelloShotLabUI, JelloShotLabLocaleContent } from '../entry';
|
|
4
|
+
|
|
5
|
+
const slug = 'jello-shot-hesaplayici';
|
|
6
|
+
const title = 'Jello Shot Hesaplayıcı: Mükemmel Alkol ve Jelatin Oranı Hesaplayıcısı';
|
|
7
|
+
const description = 'Gerçekten donacak jello shotlar için tam olarak ne kadar içki ve jelatin kullanacağınızı hesaplayın. Her alkol gücü için bilimsel oranlara dayalı sulu veya lastik kıvamlı başarısızlıkları önleyin.';
|
|
8
|
+
|
|
9
|
+
const ui: JelloShotLabUI = {
|
|
10
|
+
title: 'Jello Shot Hesaplayıcı',
|
|
11
|
+
description: 'Shotlarınızın her seferinde donması için jelatin, su ve alkol\'ün mükemmel oranını alın.',
|
|
12
|
+
liquorBaseLabel: 'İçki Türü',
|
|
13
|
+
liquorAbvLabel: 'İçki Gücü (%)',
|
|
14
|
+
gelatinLabel: 'Jelatin Türü',
|
|
15
|
+
diluentLabel: 'Su Tabanı',
|
|
16
|
+
calculateBtn: 'Hesapla',
|
|
17
|
+
modePrecision: 'Hassas Mod',
|
|
18
|
+
modeIntensity: 'Shot Gücü',
|
|
19
|
+
modeIntensityLight: 'Hafif (Kolay)',
|
|
20
|
+
modeIntensityBalanced: 'Standart',
|
|
21
|
+
modeIntensityLimit: 'Maksimum (Güçlü)',
|
|
22
|
+
partyPlannerTitle: 'Parti Planlayıcı',
|
|
23
|
+
partyPlannerGuestLabel: 'Misafirler',
|
|
24
|
+
partyPlannerShotsPerGuest: 'Kişi başı shot',
|
|
25
|
+
multiLayerTitle: 'Çok Katmanlı',
|
|
26
|
+
howToTitle: 'Nasıl yapılır',
|
|
27
|
+
proTipsTitle: 'Uzman İpuçları',
|
|
28
|
+
resultsTitle: 'Tarifiniz',
|
|
29
|
+
totalVolumeLabel: 'Toplam Hacim',
|
|
30
|
+
boilingWaterLabel: 'Sıcak Su',
|
|
31
|
+
alcoholVolumeLabel: 'İçki',
|
|
32
|
+
packetsNeededLabel: 'Jelatin Paketleri',
|
|
33
|
+
chillingTimeLabel: 'Soğutma Süresi',
|
|
34
|
+
unitMm: 'ml',
|
|
35
|
+
unitOz: 'oz',
|
|
36
|
+
unitGrams: 'g',
|
|
37
|
+
unitPackets: 'paket',
|
|
38
|
+
modeParty: 'Parti Modu',
|
|
39
|
+
modeRecipe: 'Tarif Modu',
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const faqTitle = 'Sıkça Sorulan Sorular';
|
|
43
|
+
|
|
44
|
+
const faq: JelloShotLabLocaleContent['faq'] = [
|
|
45
|
+
{
|
|
46
|
+
question: 'Yüksek alkollü içki neden jello shotların donmasını engeller?',
|
|
47
|
+
answer: 'Etanol, jelatinin üçlü sarmal protein yapısını bir arada tutan hidrojen bağlarını bozar. İçki toplam hacmin yaklaşık %35\'ini geçtiğinde protein matrisi stabil bir ağ oluşturamaz ve shot sıvı kalır. İçkinin ABV\'si ne kadar yüksekse, bu sınıra ulaşmadan önce o kadar az hacim ekleyebilirsiniz.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
question: 'Jello shotların donmayı bırakmasından önce maksimum alkol oranı nedir?',
|
|
51
|
+
answer: 'Güvenli üst sınır, toplam sıvı hacminin yaklaşık %30–35\'inin saf içki (40% ABV\'de) olmasıdır. 96\'lık nötr alkolle bu limit toplam hacmin yaklaşık %15–18\'ine düşer. Hesaplayıcımız içkinin ABV\'sini hesaba katarak donma eşiğini asla aşmamanızı sağlar.',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
question: 'Hangi içkiyi kullandığım önemli mi — votka, rom veya tekila?',
|
|
55
|
+
answer: 'Önemli olan ABV\'dir, içki türü değil. 40\'lık votka ve 40\'lık rom jelatin matrisinde özdeş davranır. Ancak daha yüksek şeker içerikli içkiler (bazı romlar veya likörler gibi) jelatin ağındaki hidrojen bağları için etanolle rekabet eden şeker sayesinde dokuyu hafifçe iyileştirebilir.',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
question: 'Jello shotlar buzdolabında ne kadar dayanır?',
|
|
59
|
+
answer: 'Düzgün yapılmış jello shotlar, plastik streç filmle örtülü şekilde buzdolabında 3–5 gün dayanır. Yüksek alkol içeriği doğal bir koruyucu olarak işlev görür. Jelatin yumuşayacağı ve bakteriler çoğalabileceği için oda sıcaklığında 2 saatten fazla bırakmaktan kaçının.',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
question: 'Jello shotlarımı daha sert veya daha yumuşak yapabilir miyim?',
|
|
63
|
+
answer: 'Evet. Bardaklardan temizce çıkan daha sert shotlar için daha fazla jelatin (veya yarım paket fazladan) kullanın. Daha yumuşak, titrek bir doku için biraz daha az kullanın. Ağızda eriyen bir doku istiyorsanız jelatini asla agar-agar ile değiştirmeyin — agar daha sert donar ve daha yüksek sıcaklıkta erir.',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
question: 'Soğutmayı hızlandırmak için jello shotları dondurabilir miyim?',
|
|
67
|
+
answer: 'Hayır. Dondurma jelatin ağını bozarak çözüldüğünde sulu, granüllü bir dokuya yol açar. Her zaman en az 4 saat buzdolabında bekletin. Partiler için önceki akşam yapın — 8 saat ve üzeri en iyi dokuyu verir.',
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
const howTo: JelloShotLabLocaleContent['howTo'] = [
|
|
72
|
+
{ name: 'İçkinizi seçin', text: 'İçkinizin ABV\'sini girin ve istediğiniz shot gücünü seçin. Hesaplayıcı, jelatininizin tutabileceği maksimum içki miktarını gösterecektir.' },
|
|
73
|
+
{ name: 'Jelatini karıştırın', text: 'Hesaplanan miktarda kaynar suyu bir kaba dökün. Jelatin tozunu ekleyin ve tamamen erinceye kadar 2 dakika boyunca kuvvetlice karıştırın. Henüz alkol eklemeyin.' },
|
|
74
|
+
{ name: 'İçkiyi ekleyin', text: 'Jelatin karışımının 5–10 dakika ılınmasını bekleyin; sıcak ama yanmaz olmalı (50 °C\'nin altında). İçkinizi ekleyin ve hava kabarcığı oluşturmamak için nazikçe karıştırın.' },
|
|
75
|
+
{ name: 'Dökün ve soğutun', text: 'Plastik bardaklara, silikon kalıplara veya küçük shot bardaklarına dökün. En az 4 saat buzdolabında bekletin — bir gece ideal. Dondurmayın.' },
|
|
76
|
+
];
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
const seo: JelloShotLabLocaleContent['seo'] = [
|
|
80
|
+
{ type: 'title', text: 'Mükemmel Bir Jello Shotun Arkasındaki Kimya', level: 2 },
|
|
81
|
+
{
|
|
82
|
+
type: 'paragraph',
|
|
83
|
+
html: 'Jello shot, sadece içine alkol dökülen aromalı jelatin değildir — protein polimerleri, su ve etanolün hidrojen bağları için rekabet ettiği <strong>narin bir kolloidal süspansiyondur</strong>. Oranı yanlış yaparsanız tatlı sıvı birikintisi veya masadan zıplayan lastik bir disk elde edersiniz. Doğru yaparsanız, bardaktan tek temiz bir hareketle çıkan mükemmel titreyici bir shot elde edersiniz.',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
type: 'stats',
|
|
87
|
+
items: [
|
|
88
|
+
{ label: 'Hafif (Kolay)', value: '~%30 içki', icon: 'mdi:emoticon-happy-outline' },
|
|
89
|
+
{ label: 'Standart', value: '~%45 içki', icon: 'mdi:flask-outline' },
|
|
90
|
+
{ label: 'Maksimum', value: '~%55 içki', icon: 'mdi:fire' },
|
|
91
|
+
],
|
|
92
|
+
columns: 3,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
type: 'card',
|
|
96
|
+
title: 'Bloom Gücü Nedir?',
|
|
97
|
+
icon: 'mdi:molecule',
|
|
98
|
+
html: 'Bloom, jelatinin jelleşme gücünü ölçer ve genellikle 50 ila 300 Bloom arasında değişir. Marketteki yaprak jelatin genellikle 150–200 Bloom\'dur. Daha yüksek Bloom, aynı miktarda toz ile daha sert bir jel anlamına gelir; bu da donmadan önce biraz daha fazla alkol tolere edebileceği anlamına gelir. Standart jelatin tozu paketleri (7 g), yaklaşık 240 ml sıvı için kalibre edilmiştir.',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'card',
|
|
102
|
+
title: 'Etanol Sınırı',
|
|
103
|
+
icon: 'mdi:alert-circle-outline',
|
|
104
|
+
html: 'Etanol, kolajenin amino asit zincirlerindeki hidrojen bağlanma siteleri için su ile rekabet eder. Etanol çok fazla site kapladığında protein, jelatine yapısını veren kararlı üçlü sarmala katlanamaz. Pratik sınır yaklaşık olarak <strong>1 kısım 40\'lık içki ile 1 kısım su</strong>dur — bunun ötesinde ne kadar beklerseniz bekleyin shotunuz donmaz.',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'tip',
|
|
108
|
+
title: 'Kaynayan jelatine asla alkol eklemeyin',
|
|
109
|
+
html: 'Alkol, 78 °C\'nin üzerinde hızla buharlaşır. Eritilmiş jelatini içki eklemeden önce her zaman 50 °C\'nin altına soğumasına izin verin. Bu tek adım, diğer herhangi bir hatadan daha fazla jello shot başarısızlığından sorumludur.',
|
|
110
|
+
},
|
|
111
|
+
{ type: 'title', text: 'Yaygın Hataları Giderme', level: 2 },
|
|
112
|
+
{
|
|
113
|
+
type: 'proscons',
|
|
114
|
+
title: 'Belirtiler ve Çözümler',
|
|
115
|
+
items: [
|
|
116
|
+
{ pro: '4 saat sonra shot sıvı → Çok fazla alkol veya oran aşıldı. İçki hacmini azaltın.', con: 'Shot alkol tadı vermiyor → İçki çok sıcak sıvıya eklendi. Önce soğumasını bekleyin.' },
|
|
117
|
+
{ pro: 'Shot çok lastik kıvamlı → Çok fazla jelatin. Bir dahaki seferinde yarım paket azaltın.', con: 'Shot bulanık → Karıştırma sırasında hava kabarcıkları oluştu. Nazikçe karıştırın ve dökmeden önce dinlendirin.' },
|
|
118
|
+
{ pro: 'Shot granüllü dokuya sahip → Jelatin tam olarak erimedi. Sıcak suda daha uzun süre karıştırın.', con: 'Shot 8 saat sonra katılaşmıyor → Etanol sınırı aşıldı. Daha az içki veya daha düşük ABV kullanın.' },
|
|
119
|
+
],
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'summary',
|
|
123
|
+
title: 'Bu araç kimin için?',
|
|
124
|
+
items: [
|
|
125
|
+
'Parti organizatörleri: Satın almadan önce kaç paket ve ne kadar içkiye ihtiyacınız olduğunu tam olarak hesaplayın.',
|
|
126
|
+
'Barmenler: Her seferinde tutarlı sonuçlarla büyük parti üretimine ölçeklendirin.',
|
|
127
|
+
'Ev aşçıları: En yaygın hatalardan kaçının — sıvı shotlar, lastik doku veya sıfır alkol tadı.',
|
|
128
|
+
],
|
|
129
|
+
},
|
|
130
|
+
];
|
|
131
|
+
|
|
132
|
+
const schemas: JelloShotLabLocaleContent['schemas'] = [
|
|
133
|
+
{
|
|
134
|
+
'@context': 'https://schema.org',
|
|
135
|
+
'@type': 'FAQPage',
|
|
136
|
+
mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
|
|
137
|
+
} as WithContext<FAQPage>,
|
|
138
|
+
{
|
|
139
|
+
'@context': 'https://schema.org',
|
|
140
|
+
'@type': 'HowTo',
|
|
141
|
+
name: title,
|
|
142
|
+
description,
|
|
143
|
+
step: howTo.map((step, i) => ({ '@type': 'HowToStep', position: i + 1, name: step.name, text: step.text })),
|
|
144
|
+
} as WithContext<HowTo>,
|
|
145
|
+
{
|
|
146
|
+
'@context': 'https://schema.org',
|
|
147
|
+
'@type': 'SoftwareApplication',
|
|
148
|
+
name: title,
|
|
149
|
+
description,
|
|
150
|
+
applicationCategory: 'UtilityApplication',
|
|
151
|
+
operatingSystem: 'Web',
|
|
152
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
153
|
+
} as WithContext<SoftwareApplication>,
|
|
154
|
+
];
|
|
155
|
+
|
|
156
|
+
export const content: JelloShotLabLocaleContent = { slug, title, description, ui, seo, faqTitle, faq, bibliography, howTo, schemas };
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { JelloShotLabUI, JelloShotLabLocaleContent } from '../entry';
|
|
4
|
+
|
|
5
|
+
const slug = 'jello-shot-lab';
|
|
6
|
+
const title = '果冻酒计算器:完美酒精与明胶比例计算工具';
|
|
7
|
+
const description = '精确计算制作果冻酒所需的烈酒和明胶用量,让果冻酒真正凝固。通过科学依据的比例,避免出现液状或橡皮质感的失败品,适用于任何酒精度数。';
|
|
8
|
+
|
|
9
|
+
const ui: JelloShotLabUI = {
|
|
10
|
+
title: '果冻酒计算器',
|
|
11
|
+
description: '获取明胶、水和酒精的完美比例,让您的果冻酒每次都能凝固。',
|
|
12
|
+
liquorBaseLabel: '烈酒类型',
|
|
13
|
+
liquorAbvLabel: '酒精度数 (%)',
|
|
14
|
+
gelatinLabel: '明胶类型',
|
|
15
|
+
diluentLabel: '水基底',
|
|
16
|
+
calculateBtn: '计算',
|
|
17
|
+
modePrecision: '精确模式',
|
|
18
|
+
modeIntensity: '酒劲强度',
|
|
19
|
+
modeIntensityLight: '轻柔 (简单)',
|
|
20
|
+
modeIntensityBalanced: '标准',
|
|
21
|
+
modeIntensityLimit: '最大 (强劲)',
|
|
22
|
+
partyPlannerTitle: '派对规划器',
|
|
23
|
+
partyPlannerGuestLabel: '宾客人数',
|
|
24
|
+
partyPlannerShotsPerGuest: '每人份数',
|
|
25
|
+
multiLayerTitle: '多层次',
|
|
26
|
+
howToTitle: '制作方法',
|
|
27
|
+
proTipsTitle: '专业技巧',
|
|
28
|
+
resultsTitle: '您的配方',
|
|
29
|
+
totalVolumeLabel: '总量',
|
|
30
|
+
boilingWaterLabel: '热水',
|
|
31
|
+
alcoholVolumeLabel: '烈酒',
|
|
32
|
+
packetsNeededLabel: '明胶包数',
|
|
33
|
+
chillingTimeLabel: '冷藏时间',
|
|
34
|
+
unitMm: 'ml',
|
|
35
|
+
unitOz: 'oz',
|
|
36
|
+
unitGrams: 'g',
|
|
37
|
+
unitPackets: '包',
|
|
38
|
+
modeParty: '派对模式',
|
|
39
|
+
modeRecipe: '配方模式',
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const faqTitle = '常见问题';
|
|
43
|
+
|
|
44
|
+
const faq: JelloShotLabLocaleContent['faq'] = [
|
|
45
|
+
{
|
|
46
|
+
question: '为什么高度烈酒会阻止果冻酒凝固?',
|
|
47
|
+
answer: '乙醇会破坏维系明胶三重螺旋蛋白质结构的氢键。当烈酒占总体积约35%时,蛋白质基质无法形成稳定的网络,果冻酒便维持液态。烈酒的ABV越高,在达到这一极限之前可以添加的量就越少。',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
question: '果冻酒停止凝固之前的最大酒精比例是多少?',
|
|
51
|
+
answer: '安全上限约为总液体体积的30–35%为纯烈酒(以40% ABV计算)。若使用96%的中性酒精,这一上限会下降至总体积的约15–18%。我们的计算器会考虑烈酒的ABV,确保您永远不会超过凝固临界值。',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
question: '使用哪种烈酒重要吗?伏特加、朗姆酒还是龙舌兰酒?',
|
|
55
|
+
answer: '重要的是ABV,而不是烈酒的种类。40%的伏特加和40%的朗姆酒在明胶基质中的表现完全相同。然而,含糖量较高的烈酒(如某些朗姆酒或利口酒)可能略微改善口感,因为糖分会在明胶网络中与乙醇竞争氢键。',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
question: '果冻酒在冰箱里能保存多久?',
|
|
59
|
+
answer: '妥善制作的果冻酒用保鲜膜覆盖,冷藏可保存3–5天。高酒精含量起到天然防腐剂的作用。避免在室温下放置超过2小时,因为明胶会软化,细菌也可能繁殖。',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
question: '可以让果冻酒更硬或更软吗?',
|
|
63
|
+
answer: '可以。多加明胶(或额外半包)可制作能整块从杯中滑出的较硬果冻酒。少加一点可获得更软、更有弹性的口感。若想要入口即化的口感,请勿用琼脂代替明胶——琼脂凝固更硬,熔点也更高。',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
question: '可以冷冻果冻酒来加速冷却吗?',
|
|
67
|
+
answer: '不可以。冷冻会破坏明胶网络,解冻后会呈现水汪汪、颗粒感的口感。请始终冷藏至少4小时。派对前一晚制作效果最佳——8小时以上可获得最佳口感。',
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
const howTo: JelloShotLabLocaleContent['howTo'] = [
|
|
72
|
+
{ name: '选择烈酒', text: '输入您烈酒的ABV并选择所需的酒劲强度。计算器将显示明胶所能容纳的最大烈酒量。' },
|
|
73
|
+
{ name: '混合明胶', text: '将计算所得量的沸水倒入碗中。加入明胶粉,用力搅拌2分钟直至完全溶解。暂时不要加入酒精。' },
|
|
74
|
+
{ name: '加入烈酒', text: '让明胶混合物冷却5–10分钟,直至温热但不烫手(50°C以下)。加入烈酒,轻轻搅拌以避免产生气泡。' },
|
|
75
|
+
{ name: '倒入模具并冷藏', text: '倒入塑料杯、硅胶模具或小杯中。冷藏至少4小时——整晚最为理想。不要冷冻。' },
|
|
76
|
+
];
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
const seo: JelloShotLabLocaleContent['seo'] = [
|
|
80
|
+
{ type: 'title', text: '完美果冻酒背后的化学原理', level: 2 },
|
|
81
|
+
{
|
|
82
|
+
type: 'paragraph',
|
|
83
|
+
html: '果冻酒不仅仅是加了酒的调味明胶——它是一种<strong>精妙的胶体悬浮液</strong>,其中蛋白质聚合物、水和乙醇争夺氢键。比例错误,您会得到一滩甜液或一块弹回桌面的橡皮圆盘。比例正确,您将拥有一个完美颤动、能从杯中一次干净滑出的果冻酒。',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
type: 'stats',
|
|
87
|
+
items: [
|
|
88
|
+
{ label: '轻柔 (简单)', value: '~30% 烈酒', icon: 'mdi:emoticon-happy-outline' },
|
|
89
|
+
{ label: '标准', value: '~45% 烈酒', icon: 'mdi:flask-outline' },
|
|
90
|
+
{ label: '最大', value: '~55% 烈酒', icon: 'mdi:fire' },
|
|
91
|
+
],
|
|
92
|
+
columns: 3,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
type: 'card',
|
|
96
|
+
title: '什么是布卢姆强度?',
|
|
97
|
+
icon: 'mdi:molecule',
|
|
98
|
+
html: '布卢姆(Bloom)衡量明胶的凝胶强度,通常在50至300布卢姆之间。超市的片状明胶通常为150–200布卢姆。布卢姆越高,同等量粉末制成的凝胶越坚硬,意味着在无法凝固之前可以承受略多的酒精。标准明胶粉包(7克)针对约240毫升液体进行了校准。',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'card',
|
|
102
|
+
title: '乙醇的极限',
|
|
103
|
+
icon: 'mdi:alert-circle-outline',
|
|
104
|
+
html: '乙醇与水争夺胶原蛋白氨基酸链上的氢键位点。当乙醇占据过多位点时,蛋白质无法折叠成赋予明胶结构的稳定三重螺旋。实际极限约为<strong>1份40%烈酒对1份水</strong>——超过此比例,无论等多久果冻酒都不会凝固。',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'tip',
|
|
108
|
+
title: '切勿将酒精加入沸腾的明胶中',
|
|
109
|
+
html: '酒精在78°C以上会迅速蒸发。在加入烈酒之前,请始终等待溶解的明胶冷却至50°C以下。这单一步骤造成的果冻酒失败比其他任何错误都多。',
|
|
110
|
+
},
|
|
111
|
+
{ type: 'title', text: '常见失败的排查方法', level: 2 },
|
|
112
|
+
{
|
|
113
|
+
type: 'proscons',
|
|
114
|
+
title: '症状与解决方案',
|
|
115
|
+
items: [
|
|
116
|
+
{ pro: '4小时后果冻酒仍是液态 → 酒精过多或比例超限。减少烈酒用量。', con: '果冻酒没有酒味 → 在液体仍过热时加入了烈酒。请先冷却后再加入。' },
|
|
117
|
+
{ pro: '果冻酒过于有弹性 → 明胶过多。下次减少半包。', con: '果冻酒浑浊 → 搅拌时产生了气泡。轻轻搅拌并在倒入前静置。' },
|
|
118
|
+
{ pro: '果冻酒有颗粒感 → 明胶未完全溶解。在热水中搅拌更长时间。', con: '8小时后果冻酒仍未固化 → 乙醇上限已超过。减少烈酒用量或使用ABV更低的酒。' },
|
|
119
|
+
],
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'summary',
|
|
123
|
+
title: '这个工具适合谁?',
|
|
124
|
+
items: [
|
|
125
|
+
'派对主持人:在购买前精确计算所需包数和烈酒量。',
|
|
126
|
+
'调酒师:以稳定一致的结果扩展至大批量生产。',
|
|
127
|
+
'家庭厨师:避免最常见的失败——液状果冻酒、橡皮质感或零酒精味道。',
|
|
128
|
+
],
|
|
129
|
+
},
|
|
130
|
+
];
|
|
131
|
+
|
|
132
|
+
const schemas: JelloShotLabLocaleContent['schemas'] = [
|
|
133
|
+
{
|
|
134
|
+
'@context': 'https://schema.org',
|
|
135
|
+
'@type': 'FAQPage',
|
|
136
|
+
mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })),
|
|
137
|
+
} as WithContext<FAQPage>,
|
|
138
|
+
{
|
|
139
|
+
'@context': 'https://schema.org',
|
|
140
|
+
'@type': 'HowTo',
|
|
141
|
+
name: title,
|
|
142
|
+
description,
|
|
143
|
+
step: howTo.map((step, i) => ({ '@type': 'HowToStep', position: i + 1, name: step.name, text: step.text })),
|
|
144
|
+
} as WithContext<HowTo>,
|
|
145
|
+
{
|
|
146
|
+
'@context': 'https://schema.org',
|
|
147
|
+
'@type': 'SoftwareApplication',
|
|
148
|
+
name: title,
|
|
149
|
+
description,
|
|
150
|
+
applicationCategory: 'UtilityApplication',
|
|
151
|
+
operatingSystem: 'Web',
|
|
152
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
153
|
+
} as WithContext<SoftwareApplication>,
|
|
154
|
+
];
|
|
155
|
+
|
|
156
|
+
export const content: JelloShotLabLocaleContent = { slug, title, description, ui, seo, faqTitle, faq, bibliography, howTo, schemas };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ToolDefinition, AlcoholToolEntry } from '../../types';
|
|
2
|
+
import { jelloShotLab } from './entry';
|
|
3
|
+
|
|
4
|
+
export * from './entry';
|
|
5
|
+
|
|
6
|
+
export const JELLO_SHOT_LAB_TOOL: ToolDefinition = {
|
|
7
|
+
entry: jelloShotLab as AlcoholToolEntry<Record<string, string>>,
|
|
8
|
+
Component: () => import('./component.astro'),
|
|
9
|
+
SEOComponent: () => import('./seo.astro'),
|
|
10
|
+
BibliographyComponent: () => import('./bibliography.astro'),
|
|
11
|
+
};
|