@jjlmoya/utils-alcohol 1.13.0 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/package.json +59 -58
  2. package/src/category/i18n/id.ts +28 -0
  3. package/src/category/i18n/sv.ts +19 -0
  4. package/src/category/index.ts +2 -0
  5. package/src/tests/faq_count.test.ts +12 -10
  6. package/src/tests/i18n_coverage.test.ts +36 -0
  7. package/src/tests/locale_completeness.test.ts +42 -0
  8. package/src/tests/no_h1_in_components.test.ts +48 -0
  9. package/src/tests/schemas_fulfillment.test.ts +23 -0
  10. package/src/tests/seo_length.test.ts +3 -34
  11. package/src/tests/title_quality.test.ts +55 -0
  12. package/src/tests/tool_validation.test.ts +4 -4
  13. package/src/tool/alcoholClearance/i18n/de.ts +205 -0
  14. package/src/tool/alcoholClearance/i18n/en.ts +22 -1
  15. package/src/tool/alcoholClearance/i18n/es.ts +22 -1
  16. package/src/tool/alcoholClearance/i18n/fr.ts +22 -1
  17. package/src/tool/alcoholClearance/i18n/id.ts +205 -0
  18. package/src/tool/alcoholClearance/i18n/it.ts +180 -0
  19. package/src/tool/alcoholClearance/i18n/ja.ts +205 -0
  20. package/src/tool/alcoholClearance/i18n/ko.ts +205 -0
  21. package/src/tool/alcoholClearance/i18n/nl.ts +205 -0
  22. package/src/tool/alcoholClearance/i18n/pl.ts +205 -0
  23. package/src/tool/alcoholClearance/i18n/pt.ts +205 -0
  24. package/src/tool/alcoholClearance/i18n/ru.ts +205 -0
  25. package/src/tool/alcoholClearance/i18n/sv.ts +205 -0
  26. package/src/tool/alcoholClearance/i18n/tr.ts +180 -0
  27. package/src/tool/alcoholClearance/i18n/zh.ts +205 -0
  28. package/src/tool/alcoholClearance/index.ts +13 -1
  29. package/src/tool/beerCooler/i18n/de.ts +197 -0
  30. package/src/tool/beerCooler/i18n/en.ts +25 -4
  31. package/src/tool/beerCooler/i18n/es.ts +25 -4
  32. package/src/tool/beerCooler/i18n/fr.ts +25 -4
  33. package/src/tool/beerCooler/i18n/id.ts +197 -0
  34. package/src/tool/beerCooler/i18n/it.ts +197 -0
  35. package/src/tool/beerCooler/i18n/ja.ts +197 -0
  36. package/src/tool/beerCooler/i18n/ko.ts +197 -0
  37. package/src/tool/beerCooler/i18n/nl.ts +197 -0
  38. package/src/tool/beerCooler/i18n/pl.ts +197 -0
  39. package/src/tool/beerCooler/i18n/pt.ts +197 -0
  40. package/src/tool/beerCooler/i18n/ru.ts +197 -0
  41. package/src/tool/beerCooler/i18n/sv.ts +197 -0
  42. package/src/tool/beerCooler/i18n/tr.ts +197 -0
  43. package/src/tool/beerCooler/i18n/zh.ts +197 -0
  44. package/src/tool/beerCooler/index.ts +13 -1
  45. package/src/tool/carbonationCalculator/i18n/de.ts +200 -0
  46. package/src/tool/carbonationCalculator/i18n/en.ts +22 -1
  47. package/src/tool/carbonationCalculator/i18n/es.ts +22 -1
  48. package/src/tool/carbonationCalculator/i18n/fr.ts +22 -1
  49. package/src/tool/carbonationCalculator/i18n/id.ts +200 -0
  50. package/src/tool/carbonationCalculator/i18n/it.ts +200 -0
  51. package/src/tool/carbonationCalculator/i18n/ja.ts +200 -0
  52. package/src/tool/carbonationCalculator/i18n/ko.ts +200 -0
  53. package/src/tool/carbonationCalculator/i18n/nl.ts +200 -0
  54. package/src/tool/carbonationCalculator/i18n/pl.ts +200 -0
  55. package/src/tool/carbonationCalculator/i18n/pt.ts +200 -0
  56. package/src/tool/carbonationCalculator/i18n/ru.ts +200 -0
  57. package/src/tool/carbonationCalculator/i18n/sv.ts +200 -0
  58. package/src/tool/carbonationCalculator/i18n/tr.ts +200 -0
  59. package/src/tool/carbonationCalculator/i18n/zh.ts +200 -0
  60. package/src/tool/carbonationCalculator/index.ts +13 -1
  61. package/src/tool/cocktailBalancer/i18n/de.ts +222 -0
  62. package/src/tool/cocktailBalancer/i18n/en.ts +23 -2
  63. package/src/tool/cocktailBalancer/i18n/es.ts +23 -2
  64. package/src/tool/cocktailBalancer/i18n/fr.ts +23 -2
  65. package/src/tool/cocktailBalancer/i18n/id.ts +222 -0
  66. package/src/tool/cocktailBalancer/i18n/it.ts +222 -0
  67. package/src/tool/cocktailBalancer/i18n/ja.ts +222 -0
  68. package/src/tool/cocktailBalancer/i18n/ko.ts +222 -0
  69. package/src/tool/cocktailBalancer/i18n/nl.ts +222 -0
  70. package/src/tool/cocktailBalancer/i18n/pl.ts +222 -0
  71. package/src/tool/cocktailBalancer/i18n/pt.ts +222 -0
  72. package/src/tool/cocktailBalancer/i18n/ru.ts +222 -0
  73. package/src/tool/cocktailBalancer/i18n/sv.ts +222 -0
  74. package/src/tool/cocktailBalancer/i18n/tr.ts +222 -0
  75. package/src/tool/cocktailBalancer/i18n/zh.ts +222 -0
  76. package/src/tool/cocktailBalancer/index.ts +13 -1
  77. package/src/tool/partyKeg/i18n/de.ts +187 -0
  78. package/src/tool/partyKeg/i18n/en.ts +22 -1
  79. package/src/tool/partyKeg/i18n/es.ts +22 -1
  80. package/src/tool/partyKeg/i18n/fr.ts +23 -2
  81. package/src/tool/partyKeg/i18n/id.ts +187 -0
  82. package/src/tool/partyKeg/i18n/it.ts +187 -0
  83. package/src/tool/partyKeg/i18n/ja.ts +187 -0
  84. package/src/tool/partyKeg/i18n/ko.ts +187 -0
  85. package/src/tool/partyKeg/i18n/nl.ts +187 -0
  86. package/src/tool/partyKeg/i18n/pl.ts +187 -0
  87. package/src/tool/partyKeg/i18n/pt.ts +187 -0
  88. package/src/tool/partyKeg/i18n/ru.ts +187 -0
  89. package/src/tool/partyKeg/i18n/sv.ts +187 -0
  90. package/src/tool/partyKeg/i18n/tr.ts +187 -0
  91. package/src/tool/partyKeg/i18n/zh.ts +187 -0
  92. package/src/tool/partyKeg/index.ts +13 -1
  93. package/src/types.ts +1 -1
  94. package/src/tests/content_mandatory.test.ts +0 -32
@@ -1,4 +1,4 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
2
  import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
3
 
4
4
  const slug = 'party-stock-calculator';
@@ -140,6 +140,27 @@ const seo: PartyKegLocaleContent['seo'] = [
140
140
  ];
141
141
 
142
142
  const schemas: PartyKegLocaleContent['schemas'] = [
143
+ {
144
+ '@context': 'https://schema.org',
145
+ '@type': 'FAQPage',
146
+ mainEntity: faq.map((item) => ({
147
+ '@type': 'Question',
148
+ name: item.question,
149
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
150
+ })),
151
+ } as WithContext<FAQPage>,
152
+ {
153
+ '@context': 'https://schema.org',
154
+ '@type': 'HowTo',
155
+ name: title,
156
+ description: description,
157
+ step: howTo.map((step, i) => ({
158
+ '@type': 'HowToStep',
159
+ position: i + 1,
160
+ name: step.name,
161
+ text: step.text,
162
+ })),
163
+ } as WithContext<HowTo>,
143
164
  {
144
165
  '@context': 'https://schema.org',
145
166
  '@type': 'SoftwareApplication',
@@ -1,4 +1,4 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
2
  import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
3
 
4
4
  const slug = 'calculadora-barriles-fiesta';
@@ -144,6 +144,27 @@ const seo: PartyKegLocaleContent['seo'] = [
144
144
  ];
145
145
 
146
146
  const schemas: PartyKegLocaleContent['schemas'] = [
147
+ {
148
+ '@context': 'https://schema.org',
149
+ '@type': 'FAQPage',
150
+ mainEntity: faq.map((item) => ({
151
+ '@type': 'Question',
152
+ name: item.question,
153
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
154
+ })),
155
+ } as WithContext<FAQPage>,
156
+ {
157
+ '@context': 'https://schema.org',
158
+ '@type': 'HowTo',
159
+ name: title,
160
+ description: description,
161
+ step: howTo.map((step, i) => ({
162
+ '@type': 'HowToStep',
163
+ position: i + 1,
164
+ name: step.name,
165
+ text: step.text,
166
+ })),
167
+ } as WithContext<HowTo>,
147
168
  {
148
169
  '@context': 'https://schema.org',
149
170
  '@type': 'SoftwareApplication',
@@ -1,7 +1,7 @@
1
- import type { WithContext, SoftwareApplication } from 'schema-dts';
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
2
  import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
3
 
4
- const slug = 'calculateur-fete-fût';
4
+ const slug = 'calculateur-fete-fut';
5
5
  const title = 'Calculateur de BiÚre pour Fêtes : Quantité par Personne, Mariage ou Anniversaire';
6
6
  const description = 'Outil gratuit pour calculer la quantité de biÚre et de glace selon les invités, la durée et la température. Idéal pour les mariages, anniversaires et événements en plein air.';
7
7
 
@@ -140,6 +140,27 @@ const seo: PartyKegLocaleContent['seo'] = [
140
140
  ];
141
141
 
142
142
  const schemas: PartyKegLocaleContent['schemas'] = [
143
+ {
144
+ '@context': 'https://schema.org',
145
+ '@type': 'FAQPage',
146
+ mainEntity: faq.map((item) => ({
147
+ '@type': 'Question',
148
+ name: item.question,
149
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
150
+ })),
151
+ } as WithContext<FAQPage>,
152
+ {
153
+ '@context': 'https://schema.org',
154
+ '@type': 'HowTo',
155
+ name: title,
156
+ description: description,
157
+ step: howTo.map((step, i) => ({
158
+ '@type': 'HowToStep',
159
+ position: i + 1,
160
+ name: step.name,
161
+ text: step.text,
162
+ })),
163
+ } as WithContext<HowTo>,
143
164
  {
144
165
  '@context': 'https://schema.org',
145
166
  '@type': 'SoftwareApplication',
@@ -0,0 +1,187 @@
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
+ import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
+
4
+ const slug = 'kalkulator-bier-es-pesta';
5
+ const title = 'Kalkulator Bir Pesta: Jumlah Per Orang untuk Pernikahan & Ulang Tahun';
6
+ const description = 'Alat gratis untuk menghitung berapa banyak bir dan es yang Anda butuhkan berdasarkan tamu, durasi, dan suhu. Sempurna untuk pernikahan, ulang tahun, dan acara outdoor.';
7
+
8
+ const ui: PartyKegUI = {
9
+ calcStockTitle: 'Kalkulator Stok',
10
+ beerIceSub: 'Bir & Es untuk Acara',
11
+ guestsLabel: 'Tamu',
12
+ durationLabel: 'Durasi',
13
+ hoursUnit: 'Jam',
14
+ intensityLabel: 'Intensitas',
15
+ chillLabel: 'Santai',
16
+ standardLabel: 'Standar',
17
+ partyLabel: 'Pesta',
18
+ tempLabel: 'Suhu',
19
+ estimatedVolLabel: 'Volume Perkiraan',
20
+ kegsLabel: 'Tong',
21
+ iceRequiredLabel: 'Es Dibutuhkan',
22
+ bagsLabel: 'Kantong',
23
+ visualizationTitle: 'Visualisasi Stok',
24
+ optimalMsg: 'Kondisi Optimal',
25
+ highMeltMsg: 'Pencairan Tinggi Terdeteksi',
26
+ highEfficiencyMsg: 'Dingin / Efisiensi Tinggi'
27
+ };
28
+
29
+ const faqTitle = 'Pertanyaan yang Sering Diajukan';
30
+ const bibliographyTitle = 'Bibliografi & Sumber';
31
+
32
+ const faq: PartyKegLocaleContent['faq'] = [
33
+ {
34
+ question: "Berapa banyak bir yang diminum satu orang dalam 4 jam?",
35
+ answer: "Rata-rata, hitung 5 bir per orang untuk acara 4 jam. Ini mengasumsikan 2 minuman di jam pertama dan 1 untuk setiap jam yang tersisa.",
36
+ },
37
+ {
38
+ question: "Berapa banyak es yang saya butuhkan untuk 100 bir?",
39
+ answer: "Anda memerlukan sekitar 15–20 kilogram es (7–10 kantong). Aturan praktis adalah 0,75 kg es per liter minuman dalam kondisi normal. Di musim panas atau di luar ruangan di atas 25°C, naikkan menjadi 1 kg per liter: panas lingkungan mempercepat pencairan dan Anda akan kehabisan es jauh lebih cepat dari yang diharapkan.",
40
+ },
41
+ {
42
+ question: "Apa perbedaan antara tong standar dan tong pesta?",
43
+ answer: "Tong komersial standar menampung 50 liter, yang menghasilkan sekitar 200 porsi (250 ml masing-masing). Tong pesta (mini-tong) biasanya menampung 5 liter — sekitar 20 porsi. Mengetahui ukuran ini membantu Anda menerjemahkan output liter kalkulator ke dalam jumlah wadah yang harus dibeli.",
44
+ },
45
+ {
46
+ question: "Mengapa saya membutuhkan begitu banyak es jika birnya sudah dingin?",
47
+ answer: "Karena mendinginkan dan mempertahankan adalah dua proses yang terpisah. Membawa kaleng dari 25°C ke 4°C mengkonsumsi panas laten es: sekitar 334 kJ/kg. Setelah dingin, es terus bekerja untuk mengimbangi panas lingkungan. Di hari musim panas pada 35°C, transfer panas ke dalam pendingin dapat mencairkan 1 kg es per liter minuman setiap 2–3 jam. Itulah mengapa mendinginkan minuman Anda sebelum pesta mengurangi konsumsi es total hingga setengahnya.",
48
+ },
49
+ ];
50
+
51
+ const howTo: PartyKegLocaleContent['howTo'] = [
52
+ {
53
+ name: "Perkirakan jumlah tamu",
54
+ text: "Tentukan berapa banyak orang yang akan hadir. Kalkulator kami menyesuaikan jumlah berdasarkan rata-rata konsumsi statistik.",
55
+ },
56
+ {
57
+ name: "Tentukan durasi dan intensitas",
58
+ text: "Tunjukkan berapa jam acara akan berlangsung dan 'aliran' pesta (santai, standar, atau intens).",
59
+ },
60
+ {
61
+ name: "Sesuaikan dengan suhu lingkungan",
62
+ text: "Suhu luar ruangan sangat penting untuk perhitungan es. Semakin panas, semakin tinggi laju pencairan yang harus kami kompensasi.",
63
+ },
64
+ ];
65
+
66
+ const bibliography: PartyKegLocaleContent['bibliography'] = [
67
+ {
68
+ name: "Event Planning: Alcohol & Bar Calculations - Spruce Eats",
69
+ url: "https://www.thespruceeats.com/stock-your-bar-for-a-party-760394",
70
+ },
71
+ {
72
+ name: "Thermodynamics of Ice Melting - Engineering Toolbox",
73
+ url: "https://www.engineeringtoolbox.com/saturated-ice-steam-d_970.html",
74
+ },
75
+ ];
76
+
77
+ const seo: PartyKegLocaleContent['seo'] = [
78
+ {
79
+ type: 'title',
80
+ text: 'Berapa Banyak Bir dan Es yang Saya Butuhkan untuk Pesta Saya?',
81
+ level: 2
82
+ },
83
+ {
84
+ type: 'paragraph',
85
+ html: 'Pertanyaan sejuta dolar saat mengorganisir acara apa pun: <strong>Berapa liter bir yang harus saya beli?</strong> Kekurangan adalah bencana, tetapi membeli berlebihan adalah pengeluaran yang tidak perlu. Alat ini membantu Anda menghitung jumlah alkohol yang tepat dan, yang paling penting, <strong>berapa banyak kantong es</strong> yang Anda butuhkan untuk menjaganya tetap dingin. Para katering profesional dan perencana acara menggunakan model konsumsi statistik — dan sekarang Anda juga bisa, gratis.'
86
+ },
87
+ {
88
+ type: 'title',
89
+ text: 'Formula Konsumsi Per Orang',
90
+ level: 2
91
+ },
92
+ {
93
+ type: 'paragraph',
94
+ html: 'Untuk memperkirakan alkohol yang dibutuhkan, katering profesional menggunakan formula berdasarkan "Tingkat Konsumsi Setiap Jam". Ini bukan ilmu pasti, tetapi statistik menunjukkan bahwa pada pesta standar, sekitar 1,5 unit dikonsumsi per jam per orang. Faktor-faktor seperti suhu lingkungan, ketersediaan makanan, dan energi sosial acara semuanya mengubah angka dasar ini.'
95
+ },
96
+ {
97
+ type: 'stats',
98
+ items: [
99
+ { label: 'Konsumsi Santai', value: '1 minuman/jam', icon: 'mdi:tea-outline' },
100
+ { label: 'Pesta Standar', value: '1,5 minuman/jam', icon: 'mdi:glass-mug-variant' },
101
+ { label: 'Pernikahan / Festival', value: '2,5+ minuman/jam', icon: 'mdi:fire' }
102
+ ],
103
+ columns: 3
104
+ },
105
+ {
106
+ type: 'diagnostic',
107
+ title: 'Fisika Es',
108
+ icon: 'mdi:snowflake-thermometer',
109
+ variant: 'warning',
110
+ badge: 'Termodinamika',
111
+ html: 'Menghitung es adalah tempat sebagian besar tuan rumah gagal. Es melayani dua fungsi: Pendinginan (membawa bir dari 25°C ke 4°C) dan Pemeliharaan (melawan panas lingkungan). Pada suhu di atas 30°C, laju pencairan berlipat ganda. Satu kantong es penuh di bawah sinar matahari langsung dapat hilang dalam waktu kurang dari 20 menit, membuat minuman Anda hangat sebelum pesta mencapai puncaknya.'
112
+ },
113
+ {
114
+ type: 'tip',
115
+ title: 'Tip Profesional untuk Menghemat Es',
116
+ html: 'Simpan tong dan kaleng di tempat yang teduh sebelum menambahkan es. Jika minuman hangat di bawah sinar matahari, 50% dari kantong es pertama Anda akan hilang dalam 10 menit hanya dengan bertukar panas laten. Mulai dengan minuman yang sudah didinginkan sebelumnya untuk secara dramatis mengurangi berapa banyak es yang benar-benar perlu Anda beli.'
117
+ },
118
+ {
119
+ type: 'title',
120
+ text: 'Data Referensi untuk Logistik',
121
+ level: 2
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'Tong 50L standar menghasilkan sekitar 200 porsi. Kantong es yang khas beratnya 2 kg. Mengetahui angka-angka ini, Anda dapat merencanakan transportasi dan penyimpanan yang diperlukan untuk acara Anda tanpa kejutan menit terakhir. Pertimbangkan pencairan es selama transportasi — perjalanan 30 menit di musim panas dapat menghabiskan satu kantong penuh sebelum pesta dimulai.'
126
+ },
127
+ {
128
+ type: 'summary',
129
+ title: 'Alat ini untuk siapa?',
130
+ items: [
131
+ 'Tuan Rumah Pesta Pribadi: Berhenti menebak dan percaya diri membeli persis apa yang Anda butuhkan untuk perayaan berikutnya.',
132
+ 'Perencana Acara: Gunakan model konsumsi yang akurat untuk mengutip klien dan merencanakan logistik bar secara profesional.',
133
+ 'Manajer Tempat: Standardisasi perhitungan stok di seluruh acara berulang dengan jumlah tamu yang berbeda.'
134
+ ]
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'Satu variabel yang sering diabaikan adalah <strong>tingkat dropout tamu</strong>. Di sebagian besar pesta, 10–15% tamu pergi lebih awal dan 10% mungkin tidak minum sama sekali. Kalkulator menerapkan penyangga konservatif sehingga Anda tidak pernah kekurangan, tetapi juga tidak dibiarkan dengan surplus yang sangat besar. Memahami penyesuaian ini membantu Anda menyempurnakan perkiraan untuk kerumunan dan konteks spesifik Anda. Selalu bulatkan saat membeli, karena mengembalikan tong yang sudah dibuka umumnya tidak memungkinkan. Surplus kecil selalu lebih baik daripada kehabisan minuman di tengah-tengah pesta.'
139
+ }
140
+ ];
141
+
142
+ const schemas: PartyKegLocaleContent['schemas'] = [
143
+ {
144
+ '@context': 'https://schema.org',
145
+ '@type': 'FAQPage',
146
+ mainEntity: faq.map((item) => ({
147
+ '@type': 'Question',
148
+ name: item.question,
149
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
150
+ })),
151
+ } as WithContext<FAQPage>,
152
+ {
153
+ '@context': 'https://schema.org',
154
+ '@type': 'HowTo',
155
+ name: title,
156
+ description: description,
157
+ step: howTo.map((step, i) => ({
158
+ '@type': 'HowToStep',
159
+ position: i + 1,
160
+ name: step.name,
161
+ text: step.text,
162
+ })),
163
+ } as WithContext<HowTo>,
164
+ {
165
+ '@context': 'https://schema.org',
166
+ '@type': 'SoftwareApplication',
167
+ name: title,
168
+ description: description,
169
+ applicationCategory: 'UtilityApplication',
170
+ operatingSystem: 'Web',
171
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
172
+ } as WithContext<SoftwareApplication>,
173
+ ];
174
+
175
+ export const content: PartyKegLocaleContent = {
176
+ slug,
177
+ title,
178
+ description,
179
+ ui,
180
+ seo,
181
+ faqTitle,
182
+ faq,
183
+ bibliographyTitle,
184
+ bibliography,
185
+ howTo,
186
+ schemas,
187
+ };
@@ -0,0 +1,187 @@
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
+ import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
+
4
+ const slug = 'calcolatore-birra-ghiaccio-feste';
5
+ const title = 'Calcolatore Birra per Feste: Quantità per Persona a Matrimoni e Compleanni';
6
+ const description = 'Strumento gratuito per calcolare quanta birra e ghiaccio ti servono in base ai ospiti, alla durata e alla temperatura. Perfetto per matrimoni, compleanni e eventi all\'aperto.';
7
+
8
+ const ui: PartyKegUI = {
9
+ calcStockTitle: 'Calcolatore di Stock',
10
+ beerIceSub: 'Birra & Ghiaccio per Eventi',
11
+ guestsLabel: 'Ospiti',
12
+ durationLabel: 'Durata',
13
+ hoursUnit: 'Ore',
14
+ intensityLabel: 'Intensità',
15
+ chillLabel: 'Chill',
16
+ standardLabel: 'Standard',
17
+ partyLabel: 'Party',
18
+ tempLabel: 'Temperatura',
19
+ estimatedVolLabel: 'Volume Stimato',
20
+ kegsLabel: 'Fusti',
21
+ iceRequiredLabel: 'Ghiaccio Necessario',
22
+ bagsLabel: 'Sacchi',
23
+ visualizationTitle: 'Visualizzazione Stock',
24
+ optimalMsg: 'Condizioni Ottimali',
25
+ highMeltMsg: 'Fusione Elevata Rilevata',
26
+ highEfficiencyMsg: 'Freddo / Efficienza Alta'
27
+ };
28
+
29
+ const faqTitle = 'Domande Frequenti';
30
+ const bibliographyTitle = 'Bibliografia e Fonti';
31
+
32
+ const faq: PartyKegLocaleContent['faq'] = [
33
+ {
34
+ question: "Quante birre beve una persona in 4 ore?",
35
+ answer: "In media, calcola 5 birre per persona per un evento di 4 ore. Questo presuppone 2 bevande nella prima ora e 1 per ogni ora restante.",
36
+ },
37
+ {
38
+ question: "Quanto ghiaccio mi serve per 100 birre?",
39
+ answer: "Avrai bisogno di circa 15–20 chilogrammi di ghiaccio (7–10 sacchi). La regola pratica Ú 0,75 kg di ghiaccio per litro di bevanda in condizioni normali. In estate o all\'aperto sopra i 25°C, aumenta a 1 kg per litro: il calore ambientale accelera lo scioglimento e resterai senza ghiaccio molto prima del previsto.",
40
+ },
41
+ {
42
+ question: "Qual Ú la differenza tra un fusto standard e uno per feste?",
43
+ answer: "Un fusto commerciale standard contiene 50 litri, che produce circa 200 porzioni (250 ml l\'una). Un fusto per feste (mini-fusto) di solito contiene 5 litri — circa 20 porzioni. Conoscere queste dimensioni ti aiuta a convertire l\'output in litri della calcolatrice nel numero di contenitori da acquistare.",
44
+ },
45
+ {
46
+ question: "Perché ho bisogno di così tanto ghiaccio se le birre sono già fredde?",
47
+ answer: "Perché il raffreddamento e il mantenimento sono due processi separati. Portare una lattina da 25°C a 4°C consuma il calore latente di fusione del ghiaccio: circa 334 kJ/kg. Una volta fredda, il ghiaccio continua a lavorare per compensare il calore ambientale. In una giornata estiva a 35°C, il trasferimento di calore nel frigorifero può sciogliere 1 kg di ghiaccio per litro di bevanda ogni 2–3 ore. Ecco perché pre-raffreddare le bevande prima della festa riduce il consumo totale di ghiaccio della metà.",
48
+ },
49
+ ];
50
+
51
+ const howTo: PartyKegLocaleContent['howTo'] = [
52
+ {
53
+ name: "Stima il numero di ospiti",
54
+ text: "Definisci quante persone parteciperanno. Il nostro calcolatore regola le quantità in base alle medie statistiche di consumo.",
55
+ },
56
+ {
57
+ name: "Definisci durata e intensità",
58
+ text: "Indica quante ore durerà l\'evento e il 'ritmo' della festa (tranquillo, standard o intenso).",
59
+ },
60
+ {
61
+ name: "Adatta la temperatura ambiente",
62
+ text: "La temperatura esterna Ú fondamentale per il calcolo del ghiaccio. Più fa caldo, più alta Ú la velocità di scioglimento che dobbiamo compensare.",
63
+ },
64
+ ];
65
+
66
+ const bibliography: PartyKegLocaleContent['bibliography'] = [
67
+ {
68
+ name: "Event Planning: Alcohol & Bar Calculations - Spruce Eats",
69
+ url: "https://www.thespruceeats.com/stock-your-bar-for-a-party-760394",
70
+ },
71
+ {
72
+ name: "Thermodynamics of Ice Melting - Engineering Toolbox",
73
+ url: "https://www.engineeringtoolbox.com/saturated-ice-steam-d_970.html",
74
+ },
75
+ ];
76
+
77
+ const seo: PartyKegLocaleContent['seo'] = [
78
+ {
79
+ type: 'title',
80
+ text: 'Quanta Birra e Ghiaccio mi Serve per la Mia Festa?',
81
+ level: 2
82
+ },
83
+ {
84
+ type: 'paragraph',
85
+ html: 'La domanda milionaria quando organizzi un evento: <strong>Quanti litri di birra dovrei comprare?</strong> Rimanere a corto Ú un disastro, ma comprare troppo Ú una spesa inutile. Questo strumento ti aiuta a calcolare la quantità esatta di alcol e, soprattutto, <strong>quanti sacchi di ghiaccio</strong> ti servono per tenerlo fresco. I catering professionali e i pianificatori di eventi utilizzano modelli di consumo statistico — e ora puoi farlo anche tu, gratuitamente.'
86
+ },
87
+ {
88
+ type: 'title',
89
+ text: 'La Formula di Consumo Per Persona',
90
+ level: 2
91
+ },
92
+ {
93
+ type: 'paragraph',
94
+ html: 'Per stimare l\'alcol necessario, i catering professionali utilizzano una formula basata sulla "Velocità di Consumo Oraria". Non Ú una scienza esatta, ma le statistiche mostrano che a una festa standard, circa 1,5 unità vengono consumate all\'ora per persona. Fattori come la temperatura ambiente, la disponibilità di cibo e l\'energia sociale dell\'evento cambiano tutti questo numero di base.'
95
+ },
96
+ {
97
+ type: 'stats',
98
+ items: [
99
+ { label: 'Consumo Chill', value: '1 bevanda/ora', icon: 'mdi:tea-outline' },
100
+ { label: 'Festa Standard', value: '1,5 bevande/ora', icon: 'mdi:glass-mug-variant' },
101
+ { label: 'Matrimonio / Festival', value: '2,5+ bevande/ora', icon: 'mdi:fire' }
102
+ ],
103
+ columns: 3
104
+ },
105
+ {
106
+ type: 'diagnostic',
107
+ title: 'La Fisica del Ghiaccio',
108
+ icon: 'mdi:snowflake-thermometer',
109
+ variant: 'warning',
110
+ badge: 'Termodinamica',
111
+ html: 'Calcolare il ghiaccio Ú dove la maggior parte degli ospiti fallisce. Il ghiaccio serve due funzioni: Raffreddamento (da 25°C a 4°C) e Mantenimento (combattere il calore ambientale). A temperature superiori a 30°C, la velocità di scioglimento raddoppia. Un intero sacco di ghiaccio al sole diretto può essere esaurito in meno di 20 minuti, lasciando le tue bevande calde prima che la festa raggiunga il suo apice.'
112
+ },
113
+ {
114
+ type: 'tip',
115
+ title: 'Consiglio Professionale per Risparmiare Ghiaccio',
116
+ html: 'Tieni i fusti e le lattine all\'ombra prima di aggiungere il ghiaccio. Se le bevande sono calde al sole, il primo 50% del tuo primo sacco di ghiaccio sarà perso in 10 minuti semplicemente scambiando calore latente. Inizia con bevande pre-raffreddate per ridurre drasticamente quanto ghiaccio hai effettivamente bisogno di comprare.'
117
+ },
118
+ {
119
+ type: 'title',
120
+ text: 'Dati di Riferimento per la Logistica',
121
+ level: 2
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'Un fusto standard da 50L produce circa 200 porzioni. Un sacco di ghiaccio tipico pesa 2 kg. Conoscendo questi numeri, puoi pianificare il trasporto e lo stoccaggio necessari per il tuo evento senza sorprese dell\'ultimo minuto. Tieni conto dello scioglimento del ghiaccio durante il trasporto — un viaggio di 30 minuti in estate può costarti un intero sacco prima che la festa inizi.'
126
+ },
127
+ {
128
+ type: 'summary',
129
+ title: 'Per chi Ú questo strumento?',
130
+ items: [
131
+ 'Padroni di Casa per Feste Private: Smetti di indovinare e acquista fiduciosamente esattamente quello che ti serve per la tua prossima celebrazione.',
132
+ 'Pianificatori di Eventi: Utilizza modelli di consumo accurati per quotare i clienti e pianificare professionalmente la logistica del bar.',
133
+ 'Gestori di Locali: Standardizza i calcoli di stock su eventi ricorrenti con diverse presenze di ospiti.'
134
+ ]
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'Una variabile spesso trascurata Ú il <strong>tasso di abbandono degli ospiti</strong>. Nella maggior parte delle feste, il 10–15% degli ospiti se ne va presto e il 10% potrebbe non bere affatto. La calcolatrice applica un margine conservativo in modo che tu non sia mai a corto, ma anche non ti ritrovi con un enorme surplus. Comprendere questi adeguamenti ti aiuta a affinare la stima per il tuo gruppo e contesto specifici. Arrotonda sempre per eccesso quando acquisti, poiché i fusti aperti generalmente non possono essere restituiti. Un piccolo surplus Ú sempre preferibile a esaurire le scorte a metà festa.'
139
+ }
140
+ ];
141
+
142
+ const schemas: PartyKegLocaleContent['schemas'] = [
143
+ {
144
+ '@context': 'https://schema.org',
145
+ '@type': 'FAQPage',
146
+ mainEntity: faq.map((item) => ({
147
+ '@type': 'Question',
148
+ name: item.question,
149
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
150
+ })),
151
+ } as WithContext<FAQPage>,
152
+ {
153
+ '@context': 'https://schema.org',
154
+ '@type': 'HowTo',
155
+ name: title,
156
+ description: description,
157
+ step: howTo.map((step, i) => ({
158
+ '@type': 'HowToStep',
159
+ position: i + 1,
160
+ name: step.name,
161
+ text: step.text,
162
+ })),
163
+ } as WithContext<HowTo>,
164
+ {
165
+ '@context': 'https://schema.org',
166
+ '@type': 'SoftwareApplication',
167
+ name: title,
168
+ description: description,
169
+ applicationCategory: 'UtilityApplication',
170
+ operatingSystem: 'Web',
171
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
172
+ } as WithContext<SoftwareApplication>,
173
+ ];
174
+
175
+ export const content: PartyKegLocaleContent = {
176
+ slug,
177
+ title,
178
+ description,
179
+ ui,
180
+ seo,
181
+ faqTitle,
182
+ faq,
183
+ bibliographyTitle,
184
+ bibliography,
185
+ howTo,
186
+ schemas,
187
+ };
@@ -0,0 +1,187 @@
1
+ import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
2
+ import type { PartyKegUI, PartyKegLocaleContent } from '../index';
3
+
4
+ const slug = 'pati-biru-hyouka-keisanki';
5
+ const title = 'パヌティヌビヌル蚈算機結婚匏ず誕生日のための1人あたりの量';
6
+ const description = 'ゲスト数、期間、気枩に基づいお必芁なビヌルず氷の量を蚈算する無料ツヌル。結婚匏、誕生日、屋倖むベントに最適です。';
7
+
8
+ const ui: PartyKegUI = {
9
+ calcStockTitle: 'ストック蚈算機',
10
+ beerIceSub: 'むベント甚ビヌル氷',
11
+ guestsLabel: 'ゲスト',
12
+ durationLabel: '期間',
13
+ hoursUnit: '時間',
14
+ intensityLabel: '匷床',
15
+ chillLabel: 'チル',
16
+ standardLabel: 'スタンダヌド',
17
+ partyLabel: 'パヌティヌ',
18
+ tempLabel: '枩床',
19
+ estimatedVolLabel: '掚定容量',
20
+ kegsLabel: '暜',
21
+ iceRequiredLabel: '必芁な氷',
22
+ bagsLabel: '袋',
23
+ visualizationTitle: 'ストック可芖化',
24
+ optimalMsg: '最適な状態',
25
+ highMeltMsg: '高い融解が怜出されたした',
26
+ highEfficiencyMsg: '寒冷/高効率'
27
+ };
28
+
29
+ const faqTitle = 'よくある質問';
30
+ const bibliographyTitle = '参考文献ず゜ヌス';
31
+
32
+ const faq: PartyKegLocaleContent['faq'] = [
33
+ {
34
+ question: "4時間で1人がビヌルを䜕杯飲みたすか",
35
+ answer: "平均しお、4時間のむベントの堎合、1人あたり5杯のビヌルを蚈算しおください。これは最初の1時間に2杯、残りの1時間に1杯を前提ずしおいたす。",
36
+ },
37
+ {
38
+ question: "100杯のビヌルのために氷はどのくらい必芁ですか",
39
+ answer: "箄1520キログラムの氷710袋が必芁です。実甚的なルヌルは、通垞の条件䞋では1リットルの飲料あたり0.75 kgの氷です。倏たたは25°C以䞊の屋倖では、1リットルあたり1 kgに増やしおください。呚囲の熱は融解を加速し、予想より早く氷がなくなっおしたいたす。",
40
+ },
41
+ {
42
+ question: "暙準暜ずパヌティヌ暜の違いは䜕ですか",
43
+ answer: "暙準的な商甚暜は50リットル収容し、玄200杯分250ml各になりたす。パヌティヌ暜ミニ暜は通垞5リットル収容したす。玄20杯分です。これらのサむズを知るこずで、蚈算機のリットル出力を賌入する必芁があるコンテナの数に倉換するのに圹立ちたす。",
44
+ },
45
+ {
46
+ question: "ビヌルがすでに冷えおいるのに、なぜこんなに氷が必芁ですか",
47
+ answer: "冷华ず維持は2぀の別々のプロセスだからです。猶を25°Cから4°Cに持っおくるには、氷の朜熱融解が消費されたす。玄334 kJ/kg。冷たくなるず、氷は環境熱を盞殺するために機胜し続けたす。35°Cの倏の日には、クヌラヌぞの熱䌝達は23時間ごずに1リットルの飲料あたり1 kgの氷を融かす可胜性がありたす。だからこそ、パヌティヌの前に飲み物を事前に冷やすこずで、氷の総消費量が半分になりたす。",
48
+ },
49
+ ];
50
+
51
+ const howTo: PartyKegLocaleContent['howTo'] = [
52
+ {
53
+ name: "ゲスト数を芋積もる",
54
+ text: "䜕人の人が参加するかを定矩しおください。圓瀟の蚈算機は、統蚈的消費平均に基づいお数量を調敎したす。",
55
+ },
56
+ {
57
+ name: "期間ず匷床を定矩する",
58
+ text: "むベントが䜕時間続くか、そしおパヌティヌの'フロヌ'チル、スタンダヌド、たたは激しいを瀺しおください。",
59
+ },
60
+ {
61
+ name: "呚囲枩床に合わせお調敎する",
62
+ text: "屋倖枩床は氷の蚈算の鍵です。熱いほど、補う必芁がある融解率が高くなりたす。",
63
+ },
64
+ ];
65
+
66
+ const bibliography: PartyKegLocaleContent['bibliography'] = [
67
+ {
68
+ name: "Event Planning: Alcohol & Bar Calculations - Spruce Eats",
69
+ url: "https://www.thespruceeats.com/stock-your-bar-for-a-party-760394",
70
+ },
71
+ {
72
+ name: "Thermodynamics of Ice Melting - Engineering Toolbox",
73
+ url: "https://www.engineeringtoolbox.com/saturated-ice-steam-d_970.html",
74
+ },
75
+ ];
76
+
77
+ const seo: PartyKegLocaleContent['seo'] = [
78
+ {
79
+ type: 'title',
80
+ text: 'パヌティヌに必芁なビヌルず氷の量は',
81
+ level: 2
82
+ },
83
+ {
84
+ type: 'paragraph',
85
+ html: 'あらゆるむベントを䌁画するずきの癟䞇ドルの質問<strong>䜕リットルのビヌルを買うべき</strong> 䞍足は灜いですが、買いすぎは䞍芁な出費です。このツヌルは正確なアルコヌル量を蚈算するのに圹立ちたす。最も重芁なこずに、<strong>䜕袋の氷</strong>が必芁かを蚈算したす。プロのケヌタリング業者やむベントプランナヌは統蚈的消費モデルを䜿甚しおいたす。今、あなたも無料でこれを実行できたす。'
86
+ },
87
+ {
88
+ type: 'title',
89
+ text: '1人あたりの消費匏',
90
+ level: 2
91
+ },
92
+ {
93
+ type: 'paragraph',
94
+ html: '必芁なアルコヌルを芋積もるために、プロのケヌタリング業者は「時間単䜍の消費率」に基づいた匏を䜿甚したす。これは正確な科孊ではありたせんが、統蚈によれば、暙準的なパヌティヌでは、1人あたり1時間に玄1.5単䜍が消費されたす。呚囲枩床、食物の入手可胜性、むベントの瀟䌚的゚ネルギヌなどの芁因はすべお、このベヌス数を倉曎したす。'
95
+ },
96
+ {
97
+ type: 'stats',
98
+ items: [
99
+ { label: 'チル消費', value: '1杯/時間', icon: 'mdi:tea-outline' },
100
+ { label: 'スタンダヌドパヌティヌ', value: '1.5杯/時間', icon: 'mdi:glass-mug-variant' },
101
+ { label: 'りェディング/フェスティバル', value: '2.5+杯/時間', icon: 'mdi:fire' }
102
+ ],
103
+ columns: 3
104
+ },
105
+ {
106
+ type: 'diagnostic',
107
+ title: '氷の物理孊',
108
+ icon: 'mdi:snowflake-thermometer',
109
+ variant: 'warning',
110
+ badge: '熱力孊',
111
+ html: '氷を蚈算するのはほずんどのホストが倱敗する堎所です。氷は2぀の機胜を果たしたす。冷华25°Cから4°Cにビヌルを持っおくるず維持呚囲の熱ず戊う。30°C以䞊の枩床では、融解速床が2倍になりたす。盎射日光の䞋で氷の袋がいっぱいになるず、20分以内になくなる可胜性があり、パヌティヌがピヌクに達する前に飲み物が枩かくなりたす。'
112
+ },
113
+ {
114
+ type: 'tip',
115
+ title: '氷を節玄するプロのコツ',
116
+ html: '氷を远加する前に、暜ず猶を日陰に保管しおください。飲み物が倪陜の䞭で枩かい堎合、最初の氷の袋の50は、朜熱を亀換するだけで10分以内に消えたす。事前に冷华した飲み物から始めお、実際に賌入する必芁がある氷の量を劇的に枛らしおください。'
117
+ },
118
+ {
119
+ type: 'title',
120
+ text: 'ロゞスティックス参考デヌタ',
121
+ level: 2
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: '暙準50L暜は玄200杯分を生成したす。兞型的な氷の袋の重さは2 kgです。これらの数字を知るこずで、むベントに必芁な茞送ず保管を最埌の瞬間の驚きなしに蚈画できたす。茞送䞭の氷の融解を考慮に入れおください。倏の30分のドラむブは、パヌティヌが始たる前に袋党䜓を費やす可胜性がありたす。'
126
+ },
127
+ {
128
+ type: 'summary',
129
+ title: 'このツヌルは誰のためのものですか',
130
+ items: [
131
+ 'プラむベヌトパヌティヌのホスト掚枬を止めお、次の祝いに正確に必芁なものを自信を持っお賌入しおください。',
132
+ 'むベントプランナヌ正確な消費モデルを䜿甚しおクラむアントに芋積もりを提䟛し、バヌロゞスティクスを専門的に蚈画しおください。',
133
+ '䌚堎マネヌゞャヌ異なるゲスト数で繰り返し発生するむベント党䜓で圚庫蚈算を暙準化したす。'
134
+ ]
135
+ },
136
+ {
137
+ type: 'paragraph',
138
+ html: 'しばしば芋萜ずされる倉数は<strong>ゲストのドロップアりト率</strong>です。ほずんどのパヌティヌでは、1015のゲストが早めに出発し、10が飲たないかもしれたせん。蚈算機は、䞍足するこずはなくおも、巚倧な䜙剰を残さないように、保守的なバッファを適甚したす。これらの調敎を理解するず、特定のグルヌプずコンテキストの芋積もりを埮調敎するのに圹立ちたす。賌入時は垞に端数を切り䞊げおください。開いたバレルは通垞返华できたせん。小さな䜙剰は垞にパヌティヌの最䞭に飲み物がなくなるより良いです。'
139
+ }
140
+ ];
141
+
142
+ const schemas: PartyKegLocaleContent['schemas'] = [
143
+ {
144
+ '@context': 'https://schema.org',
145
+ '@type': 'FAQPage',
146
+ mainEntity: faq.map((item) => ({
147
+ '@type': 'Question',
148
+ name: item.question,
149
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
150
+ })),
151
+ } as WithContext<FAQPage>,
152
+ {
153
+ '@context': 'https://schema.org',
154
+ '@type': 'HowTo',
155
+ name: title,
156
+ description: description,
157
+ step: howTo.map((step, i) => ({
158
+ '@type': 'HowToStep',
159
+ position: i + 1,
160
+ name: step.name,
161
+ text: step.text,
162
+ })),
163
+ } as WithContext<HowTo>,
164
+ {
165
+ '@context': 'https://schema.org',
166
+ '@type': 'SoftwareApplication',
167
+ name: title,
168
+ description: description,
169
+ applicationCategory: 'UtilityApplication',
170
+ operatingSystem: 'Web',
171
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
172
+ } as WithContext<SoftwareApplication>,
173
+ ];
174
+
175
+ export const content: PartyKegLocaleContent = {
176
+ slug,
177
+ title,
178
+ description,
179
+ ui,
180
+ seo,
181
+ faqTitle,
182
+ faq,
183
+ bibliographyTitle,
184
+ bibliography,
185
+ howTo,
186
+ schemas,
187
+ };