diff --git a/src/app/ernten/[year]/[type]/page.tsx b/src/app/ernten/[year]/[type]/page.tsx
index c4415d2..0086b1c 100644
--- a/src/app/ernten/[year]/[type]/page.tsx
+++ b/src/app/ernten/[year]/[type]/page.tsx
@@ -76,10 +76,12 @@ export default async function HarvestDetailPage(
{batch.code}
- {t.erntenDetailPage.glassesAvailable(batch.remainingGlasses, batch.glassCount)}
+ {t.erntenDetailPage.glassesAvailable(batch.remainingGlasses)}
- {/* Fuellstand der Charge — die Zahl rechts bekommt eine Form. */}
+ {/* Fuellstand der Charge. Der Text nennt bewusst nur den Rest,
+ nicht die Gesamtmenge: "noch 12 verfuegbar" wirkt knapper
+ und kaufanregender als "12 von 300". */}
`${remaining} von ${total} Gläsern verfügbar`,
+ glassesAvailable: (remaining) =>
+ remaining <= 0
+ ? "Leider schon vergriffen"
+ : remaining === 1
+ ? "Es ist nur noch 1 Glas verfügbar"
+ : `Es sind noch ${remaining} Gläser verfügbar`,
},
chargePage: {
verifiedBatch: "Verifizierte Charge",
diff --git a/src/i18n/dictionaries/en.ts b/src/i18n/dictionaries/en.ts
index e897376..b5004ad 100644
--- a/src/i18n/dictionaries/en.ts
+++ b/src/i18n/dictionaries/en.ts
@@ -761,7 +761,12 @@ export const en: Dictionary = {
backLabel: "Back to all harvests",
batchesHeading: "Batches from this harvest",
productsHeading: "Products from this harvest",
- glassesAvailable: (remaining, total) => `${remaining} of ${total} jars available`,
+ glassesAvailable: (remaining) =>
+ remaining <= 0
+ ? "Already sold out"
+ : remaining === 1
+ ? "Only 1 jar left"
+ : `Only ${remaining} jars left`,
},
chargePage: {
verifiedBatch: "Verified batch",
diff --git a/src/i18n/dictionary-type.ts b/src/i18n/dictionary-type.ts
index 62a4fae..11e0295 100644
--- a/src/i18n/dictionary-type.ts
+++ b/src/i18n/dictionary-type.ts
@@ -358,7 +358,7 @@ export interface Dictionary {
backLabel: string;
batchesHeading: string;
productsHeading: string;
- glassesAvailable: (remaining: number, total: number) => string;
+ glassesAvailable: (remaining: number) => string;
};
chargePage: {
verifiedBatch: string;