refactor: /admin/inhalte in Bilder/Text trennen, KI-untypische Formulierungen in Website-Texten

Content-Editor zeigt Bild-/Video-Felder jetzt gebuendelt oben und
Textfelder gebuendelt darunter (je Seite ein eigenes Speichern-Formular),
statt beides pro Bereich gemischt untereinander. Ausserdem alle
Gedankenstrich-Konstruktionen und aehnliche KI-Textmuster aus den
Website-Texten (de/en) entfernt und durch natuerlichere Formulierungen
ersetzt.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
Nick SzaunigandClaude Sonnet 5 committed 2026-09-11 15:48:03 +02:00
1 parent 6814e9e2c8
commit 286387d5ec
5 files changed
+294 -222

No files matched your search

+52 -48
View File
@@ -103,7 +103,7 @@ export const de: Dictionary = {
subtitle: "Die Region Altenmünster und die Westlichen Wälder im Landkreis Augsburg sind der Ursprung jeder Wabenhain-Ernte.",
aspects: [
{ title: "Landschaft", text: "Wälder, Wiesen und Streuobst prägen das Landschaftsbild rund um Altenmünster." },
{ title: "Vegetation", text: "Von Frühblühern über Robinie bis zur Sommerlinde — die Trachtpflanzen wechseln über das Jahr." },
{ title: "Vegetation", text: "Von Frühblühern über Robinie bis zur Sommerlinde: Die Trachtpflanzen wechseln über das Jahr." },
{ title: "Jahreszeiten", text: "Jede Saison bringt ein eigenes Nektarangebot und damit einen eigenen Honigcharakter." },
{ title: "Bienenstände", text: "Unsere Völker stehen an ausgewählten, ruhigen Standorten in der Region." },
],
@@ -117,7 +117,7 @@ export const de: Dictionary = {
"Was als kleine Leidenschaft für die Bienenhaltung begann, ist heute eine eigenständige Imkerei mit klarer Haltung: Qualität vor Masse, Herkunft vor Anonymität.",
"Wir arbeiten mit unseren eigenen Völkern in und um Altenmünster, begleiten jede Saison aufmerksam und greifen nur so weit ein, wie es für gesunde Bienenvölker und eine gute Ernte notwendig ist.",
"Kleine Chargen sind für uns kein Kompromiss, sondern bewusste Entscheidung: Nur so lässt sich jede Ernte lückenlos dokumentieren, vom Bienenstand bis ins Glas.",
"Dahinter steht die Überzeugung, dass Honig mehr ist als ein Süßungsmittel — er ist ein Abbild der Landschaft, in der er entsteht.",
"Dahinter steht die Überzeugung, dass Honig mehr ist als ein Süßungsmittel: Er ist ein Abbild der Landschaft, in der er entsteht.",
],
imageLabel: "Der Imker bei der Arbeit",
},
@@ -151,7 +151,7 @@ export const de: Dictionary = {
},
notFoundPage: {
eyebrow: "404",
title: "Diese Seite gibt es nicht — zumindest nicht mehr.",
title: "Diese Seite gibt es nicht, zumindest nicht mehr.",
text: "Der Link ist vielleicht veraltet, oder die Seite wurde verschoben. Schau dich im Shop um oder geh zurück zur Startseite.",
backToShop: "Zum Shop",
backToHome: "Zur Startseite",
@@ -182,15 +182,15 @@ export const de: Dictionary = {
{
heading: "Angaben gemäß § 5 TMG",
paragraphs: [
"[PLATZHALTER — Name der Inhaberin/des Inhabers bzw. der Geschäftsführung eintragen]",
"[PLATZHALTER — Rechtsform eintragen, z.B. Einzelunternehmen/e.K./GmbH. Sofern im Handelsregister eingetragen: Registergericht und Handelsregisternummer ergänzen.]",
"[PLATZHALTER: Name der Inhaberin/des Inhabers bzw. der Geschäftsführung eintragen]",
"[PLATZHALTER: Rechtsform eintragen, z.B. Einzelunternehmen/e.K./GmbH. Sofern im Handelsregister eingetragen: Registergericht und Handelsregisternummer ergänzen.]",
],
},
{
heading: "Umsatzsteuer-ID",
paragraphs: [
"[PLATZHALTER] Umsatzsteuer-Identifikationsnummer gemäß § 27a Umsatzsteuergesetz.",
"Sofern stattdessen die Kleinunternehmerregelung nach § 19 UStG angewendet wird, entfällt eine Umsatzsteuer-ID — dies ist an dieser Stelle entsprechend zu vermerken (z.B. \"Gemäß § 19 UStG wird keine Umsatzsteuer berechnet.\").",
"Sofern stattdessen die Kleinunternehmerregelung nach § 19 UStG angewendet wird, entfällt eine Umsatzsteuer-ID: Dies ist an dieser Stelle entsprechend zu vermerken (z.B. \"Gemäß § 19 UStG wird keine Umsatzsteuer berechnet.\").",
],
},
{
@@ -237,7 +237,7 @@ export const de: Dictionary = {
{
heading: "2. Hosting",
paragraphs: [
"Diese Website wird auf eigener, selbst betriebener Server-Infrastruktur gehostet — nicht bei einem externen Hosting-Anbieter. Es besteht daher kein Auftragsverarbeitungsvertrag mit einem externen Hosting-Dienstleister gemäß Art. 28 DSGVO; die Verarbeitung der Server-Logfiles (siehe Punkt 3) erfolgt ausschließlich durch uns selbst als Verantwortlichen.",
"Diese Website wird auf eigener, selbst betriebener Server-Infrastruktur gehostet, nicht bei einem externen Hosting-Anbieter. Es besteht daher kein Auftragsverarbeitungsvertrag mit einem externen Hosting-Dienstleister gemäß Art. 28 DSGVO; die Verarbeitung der Server-Logfiles (siehe Punkt 3) erfolgt ausschließlich durch uns selbst als Verantwortlichen.",
],
},
{
@@ -332,7 +332,7 @@ export const de: Dictionary = {
heading: "7. Gewährleistung",
paragraphs: [
"Es gelten die gesetzlichen Gewährleistungsrechte (§§ 434 ff. BGB). Bei Verbraucher:innen beträgt die Verjährungsfrist für Mängelansprüche zwei Jahre ab Ablieferung der Ware.",
"Bei Lebensmitteln wie Honig weist das aufgedruckte Mindesthaltbarkeitsdatum (MHD) darauf hin, bis wann das Produkt bei sachgerechter Lagerung mindestens seine spezifischen Eigenschaften behält — es handelt sich nicht um ein Verfallsdatum und begründet für sich genommen keinen Mangel.",
"Bei Lebensmitteln wie Honig weist das aufgedruckte Mindesthaltbarkeitsdatum (MHD) darauf hin, bis wann das Produkt bei sachgerechter Lagerung mindestens seine spezifischen Eigenschaften behält. Es handelt sich nicht um ein Verfallsdatum und begründet für sich genommen keinen Mangel.",
],
},
{
@@ -386,7 +386,7 @@ export const de: Dictionary = {
tierRange: (min, max, price) => `${min}–${max} Gläser/Artikel: ${price}`,
tierMinimum: (min, price) => `Ab ${min} Gläsern/Artikeln: ${price}`,
tierFallback: "Die aktuellen Versandkosten werden dir vor Abschluss der Bestellung transparent angezeigt.",
pickupNote: "Alternativ kannst du deine Bestellung nach Absprache direkt bei uns in Altenmünster abholen — dabei fallen keine Versandkosten an.",
pickupNote: "Alternativ kannst du deine Bestellung nach Absprache direkt bei uns in Altenmünster abholen. Dabei fallen keine Versandkosten an.",
paymentHeading: "Zahlungsmethoden",
paymentText: "Wir bieten Kreditkarte, SEPA-Lastschrift, Klarna, PayPal, Apple Pay und Google Pay über unseren Zahlungsdienstleister Stripe an. Eine Zahlung per Überweisung ist auf Anfrage möglich.",
deliveryTimeHeading: "Lieferzeit",
@@ -405,7 +405,7 @@ export const de: Dictionary = {
heading: "Technisch notwendige Cookies",
paragraphs: [
"Diese Cookies sind für den Betrieb der Website erforderlich und können nicht deaktiviert werden. Sie werden nur gesetzt, wenn du sie durch dein Verhalten aktiv auslöst (z.B. Anmeldung im Kundenkonto).",
"wabenhain_session — hält dich nach der Anmeldung im Kundenkonto eingeloggt. Läuft nach 30 Tagen automatisch ab. Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO / § 25 Abs. 2 Nr. 2 TTDSG.",
"wabenhain_session: Hält dich nach der Anmeldung im Kundenkonto eingeloggt. Läuft nach 30 Tagen automatisch ab. Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO / § 25 Abs. 2 Nr. 2 TTDSG.",
],
},
{
@@ -423,7 +423,7 @@ export const de: Dictionary = {
{
heading: "Externe Inhalte",
paragraphs: [
"Google-Rezensionen auf unserer Startseite werden serverseitig über die Google Places API abgerufen und angezeigt — dabei wird kein Cookie in deinem Browser gesetzt und es findet keine direkte Verbindung deines Browsers zu Google statt.",
"Google-Rezensionen auf unserer Startseite werden serverseitig über die Google Places API abgerufen und angezeigt. Dabei wird kein Cookie in deinem Browser gesetzt, und es findet keine direkte Verbindung deines Browsers zu Google statt.",
"Zahlungen werden über Stripe abgewickelt. Während des Bezahlvorgangs kann Stripe eigene, für die Betrugsprävention notwendige Cookies setzen. Es gelten die Datenschutzhinweise von Stripe.",
],
},
@@ -485,7 +485,7 @@ export const de: Dictionary = {
body: [
"Sammelbienen fliegen Blüten an und nehmen den zuckerhaltigen Nektar mit ihrem Rüssel auf, den sie in einer speziellen Honigblase transportieren. Dabei versetzen körpereigene Enzyme den Nektar bereits mit ersten Stoffen, die die Haltbarkeit verbessern.",
"Im Bienenstock wird der Nektar von Stockbienen mehrfach untereinander weitergereicht und dabei weiter angereichert. Anschließend verteilen die Bienen ihn dünn in den Wabenzellen, wo überschüssiges Wasser verdunstet.",
"Erst wenn der Wassergehalt auf unter etwa 18 Prozent gesunken ist, verschließen die Bienen die Zelle mit einem Wachsdeckel — der Honig ist reif und kann geerntet werden.",
"Erst wenn der Wassergehalt auf unter etwa 18 Prozent gesunken ist, verschließen die Bienen die Zelle mit einem Wachsdeckel. Der Honig ist reif und kann geerntet werden.",
],
},
"warum-schmeckt-jede-honigernte-anders": {
@@ -493,7 +493,7 @@ export const de: Dictionary = {
excerpt: "Wetter, Blühzeitpunkte und Standort machen jede Charge zu einem eigenen Geschmackserlebnis.",
body: [
"Honig ist ein Naturprodukt: Sein Geschmack hängt unmittelbar davon ab, welche Pflanzen zum Zeitpunkt der Ernte in der Umgebung der Bienenstöcke geblüht haben.",
"Wetterbedingungen wie Regen, Sonnenstunden und Temperatur beeinflussen, wie viel Nektar welche Pflanzenart in einem bestimmten Jahr liefert — und damit, welche Trachtquelle im Honig dominiert.",
"Wetterbedingungen wie Regen, Sonnenstunden und Temperatur beeinflussen, wie viel Nektar welche Pflanzenart in einem bestimmten Jahr liefert, und damit, welche Trachtquelle im Honig dominiert.",
"Deshalb schmeckt auch dieselbe Sorte, etwa Frühtracht, von Jahr zu Jahr und von Standort zu Standort leicht unterschiedlich. Wir dokumentieren jede Charge einzeln, damit dieser Unterschied nachvollziehbar bleibt statt in einer Mischcharge zu verschwinden.",
],
},
@@ -510,27 +510,27 @@ export const de: Dictionary = {
title: "Was macht regionalen Honig aus?",
excerpt: "Kurze Wege, bekannte Standorte und nachvollziehbare Ernten unterscheiden regionalen von anonymem Honig.",
body: [
"Regionaler Honig stammt von Bienenvölkern, deren Standort und Umgebung bekannt sind — anders als bei vielen Honigmischungen aus dem Supermarkt, die Honig aus mehreren Ländern zusammenführen.",
"Regionaler Honig stammt von Bienenvölkern, deren Standort und Umgebung bekannt sind, anders als bei vielen Honigmischungen aus dem Supermarkt, die Honig aus mehreren Ländern zusammenführen.",
"Das bedeutet kurze Transportwege, eine Ernte, die zur heimischen Landschaft passt, und eine Imkerei, die für Qualität und Herkunft direkt ansprechbar ist.",
"Bei Wabenhain lässt sich jede Charge bis zum Bienenstand zurückverfolgen — das ist der Kern dessen, was für uns regionalen Honig ausmacht.",
"Bei Wabenhain lässt sich jede Charge bis zum Bienenstand zurückverfolgen: Das ist der Kern dessen, was für uns regionalen Honig ausmacht.",
],
},
"wie-honig-richtig-lagern": {
title: "Wie sollte Honig gelagert werden?",
excerpt: "Kühl, dunkel und gut verschlossen — so bleibt Honig am längsten in bester Qualität.",
excerpt: "Kühl, dunkel und gut verschlossen: So bleibt Honig am längsten in bester Qualität.",
body: [
"Honig sollte bei möglichst gleichbleibender Temperatur zwischen 10 und 20 Grad gelagert werden, idealerweise in einem Vorratsschrank statt im Kühlschrank — zu kalte Lagerung beschleunigt die Kristallisation, ohne die Qualität zu verbessern.",
"Honig sollte bei möglichst gleichbleibender Temperatur zwischen 10 und 20 Grad gelagert werden, idealerweise in einem Vorratsschrank statt im Kühlschrank. Zu kalte Lagerung beschleunigt die Kristallisation, ohne die Qualität zu verbessern.",
"Direktes Sonnenlicht und Wärmequellen wie Herd oder Heizung sollten vermieden werden, da Wärme wertvolle Aromen und Inhaltsstoffe abbauen kann.",
"Das Glas nach jeder Nutzung gut verschließen, damit kein Wasser aus der Luft in den Honig gelangt — das kann sonst Gärung begünstigen.",
"Das Glas nach jeder Nutzung gut verschließen, damit kein Wasser aus der Luft in den Honig gelangt. Das kann sonst Gärung begünstigen.",
],
},
"warum-nie-ueber-28-grad-erwaermt": {
title: "Warum wird unser Honig nie über 28 °C erwärmt?",
excerpt: "Honig enthält von Natur aus hitzeempfindliche Enzyme — bei uns bleiben sie durch schonende Verarbeitung erhalten.",
excerpt: "Honig enthält von Natur aus hitzeempfindliche Enzyme: Bei uns bleiben sie durch schonende Verarbeitung erhalten.",
body: [
"Honig enthält von den Bienen selbst eingebrachte Enzyme, unter anderem Invertase und Diastase. Sie sind deutlich hitzeempfindlich: Je stärker und länger Honig erwärmt wird, desto mehr geht davon verloren — messbar unter anderem an der sogenannten Diastasezahl und am HMF-Gehalt (Hydroxymethylfurfural), einem anerkannten Indikator für Wärmebelastung.",
"Honig enthält von den Bienen selbst eingebrachte Enzyme, unter anderem Invertase und Diastase. Sie sind deutlich hitzeempfindlich: Je stärker und länger Honig erwärmt wird, desto mehr geht davon verloren, messbar unter anderem an der sogenannten Diastasezahl und am HMF-Gehalt (Hydroxymethylfurfural), einem anerkannten Indikator für Wärmebelastung.",
"In der Imkerei gilt allgemein eine Grenze von 40 °C, um diese Inhaltsstoffe nicht zu schädigen. Das Schleudern selbst findet ohnehin nur bei Raumtemperatur (ca. 25–30 °C) statt, da Bienenwachs schon ab etwa 50 °C zu schmelzen beginnt.",
"Bei Wabenhain gehen wir bewusst noch einen Schritt weiter: Unser Honig wird zu keinem Zeitpunkt der Ernte, Schleuderung und Abfüllung über 28 °C erwärmt — spürbar unterhalb sowohl der üblichen 40-Grad-Grenze als auch der natürlichen Bienenstocktemperatur von rund 35 °C. So bleiben die Enzyme so weit wie möglich erhalten, wie sie auch im Bienenstock vorliegen.",
"Bei Wabenhain gehen wir bewusst noch einen Schritt weiter: Unser Honig wird zu keinem Zeitpunkt der Ernte, Schleuderung und Abfüllung über 28 °C erwärmt, spürbar unterhalb sowohl der üblichen 40-Grad-Grenze als auch der natürlichen Bienenstocktemperatur von rund 35 °C. So bleiben die Enzyme so weit wie möglich erhalten, wie sie auch im Bienenstock vorliegen.",
],
},
},
@@ -539,7 +539,7 @@ export const de: Dictionary = {
title: "Wir freuen uns von dir zu hören.",
pickupHeading: "Honig vor Ort abholen",
pickupText:
"Nach Absprache kannst du deine Bestellung direkt bei uns in Altenmünster abholen. Wähle dazu im Checkout einfach „Abholung“ aus — wir melden uns anschließend mit einem Abholtermin.",
"Nach Absprache kannst du deine Bestellung direkt bei uns in Altenmünster abholen. Wähle dazu im Checkout einfach „Abholung“ aus. Wir melden uns anschließend mit einem Abholtermin.",
},
twoFactorPage: {
eyebrow: "Sicherheit",
@@ -569,7 +569,7 @@ export const de: Dictionary = {
eyebrow: "Sicherheit",
title: "Deine Backup-Codes",
subtitle:
"Jeder Code funktioniert einmalig, falls du keinen Zugriff auf deine Authenticator-App hast. Speichere sie an einem sicheren Ort — sie werden dir nur jetzt angezeigt.",
"Jeder Code funktioniert einmalig, falls du keinen Zugriff auf deine Authenticator-App hast. Speichere sie an einem sicheren Ort. Sie werden dir nur jetzt angezeigt.",
warning: "Diese Codes werden nicht erneut angezeigt. Lade die Seite nicht neu, ohne sie gespeichert zu haben.",
done: "Fertig",
},
@@ -650,7 +650,7 @@ export const de: Dictionary = {
adminAuditLogPage: {
backToDashboard: "Zurück zum Dashboard",
title: "Audit-Log",
intro: (limit) => `Protokoll aller Admin-Änderungen (Produkte, Bestellungen, Gutscheine, Benutzer, …) — die letzten ${limit} Einträge.`,
intro: (limit) => `Protokoll aller Admin-Änderungen (Produkte, Bestellungen, Gutscheine, Benutzer, …), die letzten ${limit} Einträge.`,
colTimestamp: "Zeitpunkt",
colAdmin: "Admin",
colAction: "Aktion",
@@ -687,7 +687,7 @@ export const de: Dictionary = {
typeFixed: "Fester Betrag (Cent)",
valueLabel: "Wert",
minOrderLabel: "Mindestbestellwert (Cent, optional)",
minQuantityLabel: "Mindestmenge für Mengenrabatt (Stück, optional — automatisch angewendet ohne Codeeingabe)",
minQuantityLabel: "Mindestmenge für Mengenrabatt (Stück, optional, automatisch angewendet ohne Codeeingabe)",
maxUsesLabel: "Max. Nutzungen insgesamt (leer = unbegrenzt)",
validFromLabel: "Gültig ab (optional)",
validUntilLabel: "Gültig bis (optional)",
@@ -705,7 +705,7 @@ export const de: Dictionary = {
typeFixed: "Fester Betrag (Cent)",
valueLabel: "Wert",
minOrderLabel: "Mindestbestellwert (Cent, optional)",
minQuantityLabel: "Mindestmenge für Mengenrabatt (Stück, optional — automatisch angewendet ohne Codeeingabe)",
minQuantityLabel: "Mindestmenge für Mengenrabatt (Stück, optional, automatisch angewendet ohne Codeeingabe)",
maxUsesLabel: "Max. Nutzungen insgesamt (leer = unbegrenzt)",
validFromLabel: "Gültig ab (optional)",
validUntilLabel: "Gültig bis (optional)",
@@ -717,7 +717,7 @@ export const de: Dictionary = {
title: "Versandkosten",
newTier: "Neue Staffel",
intro:
"Die Versandkosten richten sich nach der Gesamtmenge aller Artikel im Warenkorb — mehrere Positionen werden zu einer Menge zusammengezählt, nicht mehr nach Bestellwert berechnet. Ohne passende Staffel greift ein fester Sicherheits-Fallback von 4,90 €. Abholung in Altenmünster ist immer versandkostenfrei.",
"Die Versandkosten richten sich nach der Gesamtmenge aller Artikel im Warenkorb. Mehrere Positionen werden zu einer Menge zusammengezählt, nicht mehr nach Bestellwert berechnet. Ohne passende Staffel greift ein fester Sicherheits-Fallback von 4,90 €. Abholung in Altenmünster ist immer versandkostenfrei.",
colQuantity: "Menge",
colPrice: "Preis",
quantityFrom: (min) => `ab ${min} Stück`,
@@ -725,7 +725,7 @@ export const de: Dictionary = {
edit: "Bearbeiten",
deleteConfirm: "Diese Versandstaffel wirklich löschen?",
delete: "Löschen",
noTiersYet: "Noch keine Staffeln angelegt — es gilt der Sicherheits-Fallback von 4,90 €.",
noTiersYet: "Noch keine Staffeln angelegt. Es gilt der Sicherheits-Fallback von 4,90 €.",
},
adminShippingEditPage: {
backToShipping: "Zurück zu Versandkosten",
@@ -801,7 +801,7 @@ export const de: Dictionary = {
backToUsers: "Zurück zu Benutzern",
title: "Neuer Benutzer",
intro:
"Es wird kein Passwort vergeben — der Benutzer erhält sofort eine E-Mail mit einem Link, um sein eigenes Passwort festzulegen.",
"Es wird kein Passwort vergeben: Der Benutzer erhält sofort eine E-Mail mit einem Link, um sein eigenes Passwort festzulegen.",
firstNameLabel: "Vorname",
lastNameLabel: "Nachname",
emailLabel: "E-Mail",
@@ -843,7 +843,7 @@ export const de: Dictionary = {
trackOrderPage: {
eyebrow: "Bestellung verfolgen",
title: "Wo ist meine Bestellung?",
intro: "Gib deine Bestellnummer und die bei der Bestellung verwendete E-Mail-Adresse ein, um den aktuellen Status zu sehen — auch ohne Kundenkonto.",
intro: "Gib deine Bestellnummer und die bei der Bestellung verwendete E-Mail-Adresse ein, um den aktuellen Status zu sehen, auch ohne Kundenkonto.",
orderNumberLabel: "Bestellnummer",
orderNumberPlaceholder: "z.B. WH-2026-A1B2C3D4",
submit: "Status anzeigen",
@@ -867,7 +867,7 @@ export const de: Dictionary = {
errorPage: {
eyebrow: "Fehler",
title: "Etwas ist schiefgelaufen.",
description: "Das war nicht dein Fehler — bitte versuche es erneut, oder kehre zur Startseite zurück.",
description: "Das war nicht dein Fehler. Bitte versuche es erneut, oder kehre zur Startseite zurück.",
retry: "Erneut versuchen",
backHome: "Zur Startseite",
},
@@ -897,7 +897,7 @@ export const de: Dictionary = {
create: "Anlegen",
syncHeading: "ApiCore-Synchronisierung",
syncIntro:
"Importiert Ernten UND Chargen aus ApiCore. Ernten werden als Entwürfe angelegt (nicht öffentlich sichtbar) — bereits veröffentlichte, zuvor synchronisierte Ernten werden dabei nicht verändert. Chargen werden nur neu angelegt (nie überschrieben, damit echte Lagerbestände erhalten bleiben) und brauchen eine bereits vorhandene Ernte.",
"Importiert Ernten UND Chargen aus ApiCore. Ernten werden als Entwürfe angelegt (nicht öffentlich sichtbar); bereits veröffentlichte, zuvor synchronisierte Ernten werden dabei nicht verändert. Chargen werden nur neu angelegt (nie überschrieben, damit echte Lagerbestände erhalten bleiben) und brauchen eine bereits vorhandene Ernte.",
syncButton: "Jetzt synchronisieren",
syncResult: (created, updated, skipped, failed) =>
`Ernten: ${created} neu angelegt, ${updated} aktualisiert, ${skipped} übersprungen (bereits veröffentlicht)${failed > 0 ? `, ${failed} fehlgeschlagen` : ""}.`,
@@ -966,7 +966,7 @@ export const de: Dictionary = {
categoryHint:
"Nur Honig-Produkte sind einer Ernte/Charge zugeordnet. Bei anderen Kategorien wird diese Auswahl beim Speichern automatisch ignoriert, da z.B. Kerzen unabhängig von einer Ernte sind.",
harvestLabel: "Ernte",
noneOption: "— keine —",
noneOption: "Keine Auswahl",
batchLabel: "Charge",
batchOption: (code, type, year) => `${code} (${type} ${year})`,
descriptionLabel: "Beschreibung",
@@ -1026,7 +1026,7 @@ export const de: Dictionary = {
adminOrderDetailPage: {
backToOrders: "Zurück zu Bestellungen",
saveStatus: "Status speichern",
giftHeading: "🎁 Geschenk — Nachricht beilegen",
giftHeading: "🎁 Geschenk: Nachricht beilegen",
customerHeading: "Kunde",
registeredAccount: "Registriertes Kundenkonto",
guestOrder: "Gastbestellung",
@@ -1060,7 +1060,7 @@ export const de: Dictionary = {
saveTracking: "Speichern",
dhlHeading: "DHL-Versandmarke",
dhlCreateButton: "Versandmarke erstellen",
dhlAlreadyCreated: (trackingNumber) => `DHL-Versandmarke bereits erstellt — Sendungsnummer ${trackingNumber}`,
dhlAlreadyCreated: (trackingNumber) => `DHL-Versandmarke bereits erstellt: Sendungsnummer ${trackingNumber}`,
dhlNotConfigured: "DHL ist noch nicht konfiguriert, siehe .env (DHL_API_KEY, DHL_API_SECRET, DHL_GKP_USERNAME, DHL_GKP_PASSWORD, DHL_ACCOUNT_NUMBER).",
},
adminOrdersPage: {
@@ -1111,7 +1111,11 @@ export const de: Dictionary = {
backToDashboard: "Zurück zum Dashboard",
title: "Inhalte",
intro:
"Diese Texte erscheinen auf der Website. Ein leeres Feld bedeutet nicht \"leer auf der Seite\" — dann wird der ursprüngliche Text weiter angezeigt. Trage nur ein, was du ändern möchtest.",
"Diese Texte erscheinen auf der Website. Ein leeres Feld bedeutet nicht \"leer auf der Seite\": Dann wird der ursprüngliche Text weiter angezeigt. Trage nur ein, was du ändern möchtest.",
sectionImages: "Bilder",
sectionImagesIntro: "Alle Bilder und das Hero-Video, die du hochladen kannst, sortiert nach Seite.",
sectionText: "Texte",
sectionTextIntro: "Alle Textinhalte, sortiert nach Bereich.",
groupCompany: "Firmendaten",
groupHome: "Homepage",
groupPages: "Weitere Seiten",
@@ -1156,7 +1160,7 @@ export const de: Dictionary = {
loggedInAs: (name) => `Angemeldet als ${name}`,
logout: "Abmelden",
twoFactorWarning:
"Dieses Admin-Konto hat noch keine Zwei-Faktor-Authentifizierung aktiviert — empfohlen für Konten mit Zugriff auf Bestellungen, Rückerstattungen und Kundendaten.",
"Dieses Admin-Konto hat noch keine Zwei-Faktor-Authentifizierung aktiviert, empfohlen für Konten mit Zugriff auf Bestellungen, Rückerstattungen und Kundendaten.",
twoFactorSetupLink: "Jetzt einrichten →",
},
invoicePage: {
@@ -1206,7 +1210,7 @@ export const de: Dictionary = {
ssoDivider: "oder",
ssoButton: "Mit Microsoft anmelden",
greeting: (name) => `Hallo, ${name}`,
verifyEmailPrompt: "Bitte bestätige deine E-Mail-Adresse — ohne Bestätigung kannst du mit diesem Konto nicht bestellen.",
verifyEmailPrompt: "Bitte bestätige deine E-Mail-Adresse. Ohne Bestätigung kannst du mit diesem Konto nicht bestellen.",
resendVerification: "Link erneut senden",
navOrders: { title: "Bestellungen", description: "Bestellhistorie, Versandstatus und Rechnungen" },
navAddresses: { title: "Adressen", description: "Lieferadressen verwalten" },
@@ -1249,7 +1253,7 @@ export const de: Dictionary = {
backLabel: "Zurück zur Anmeldung",
title: "Passwort vergessen",
sentMessage: "Falls ein Konto mit dieser E-Mail-Adresse besteht, haben wir dir gerade einen Link zum Zurücksetzen des Passworts geschickt. Der Link ist eine Stunde gültig.",
intro: "Gib deine E-Mail-Adresse ein — wir schicken dir einen Link zum Zurücksetzen des Passworts.",
intro: "Gib deine E-Mail-Adresse ein. Wir schicken dir einen Link zum Zurücksetzen des Passworts.",
requestLink: "Link anfordern",
},
passwortZuruecksetzenPage: {
@@ -1267,7 +1271,7 @@ export const de: Dictionary = {
pendingTitle: "Deine Bestellung ist eingegangen.",
successTitle: "Deine Bestellung wurde bestätigt.",
orderNumberLabel: "Bestellnummer",
pendingText: "Die Zahlungsabwicklung war kurzfristig nicht erreichbar — wir melden uns per E-Mail bei dir, um die Zahlung abzuschließen.",
pendingText: "Die Zahlungsabwicklung war kurzfristig nicht erreichbar. Wir melden uns per E-Mail bei dir, um die Zahlung abzuschließen.",
successText: "Wir bereiten dein Glas Wabenhain-Honig mit Sorgfalt vor. Sobald deine Zahlung eingegangen ist, senden wir dir eine Bestätigung per E-Mail (bei SEPA-Lastschrift kann das einige Werktage dauern).",
continueShopping: "Weiter stöbern",
trackOrder: "Bestellung verfolgen",
@@ -1275,7 +1279,7 @@ export const de: Dictionary = {
checkoutCancelPage: {
eyebrow: "Abgebrochen",
title: "Deine Bestellung wurde nicht abgeschlossen.",
text: "Kein Problem — dein Warenkorb ist noch gefüllt. Du kannst den Bestellvorgang jederzeit erneut starten.",
text: "Kein Problem, dein Warenkorb ist noch gefüllt. Du kannst den Bestellvorgang jederzeit erneut starten.",
backToCart: "Zurück zum Warenkorb",
},
checkoutPage: {
@@ -1302,7 +1306,7 @@ export const de: Dictionary = {
submitting: "Wird verarbeitet…",
placeOrder: "Kostenpflichtig bestellen",
paymentMethodsNote:
"Zahlungsmethoden: PayPal, Kreditkarte, Apple Pay, Google Pay, SEPA-Lastschrift, Klarna — bereitgestellt über Stripe.",
"Zahlungsmethoden: PayPal, Kreditkarte, Apple Pay, Google Pay, SEPA-Lastschrift, Klarna, bereitgestellt über Stripe.",
yourOrderHeading: "Deine Bestellung",
shippingWithCount: (count) => `Versand (${count} Stück)`,
shippingPickup: "Versand (Abholung)",
@@ -1342,7 +1346,7 @@ export const de: Dictionary = {
shippingHint: (price) => `Versand ab ${price} · Lieferzeit 2–4 Werktage`,
onlyLeftInStock: (count) => `Nur noch ${count} auf Lager`,
soldOut: "Ausverkauft",
currentlyUnavailable: "Aktuell nicht verfügbar — schau bald wieder vorbei.",
currentlyUnavailable: "Aktuell nicht verfügbar, schau bald wieder vorbei.",
notifyMeLabel: "Benachrichtige mich, wenn es wieder verfügbar ist",
emailPlaceholder: "E-Mail-Adresse",
notifySubmit: "Anmelden",
@@ -1356,7 +1360,7 @@ export const de: Dictionary = {
"Honig aus Deutschland",
"abgefüllt in Altenmünster",
"nachvollziehbare Charge",
"nie über 28 °C erwärmt — Enzyme bleiben erhalten",
"nie über 28 °C erwärmt, Enzyme bleiben erhalten",
],
KERZEN: [
"handgegossen aus reinem Bienenwachs",
@@ -1387,7 +1391,7 @@ export const de: Dictionary = {
noReviewsForProduct: "Für dieses Produkt gibt es noch keine Bewertungen.",
loginToReview: "um dieses Produkt zu bewerten.",
alreadyReviewed: "Du hast dieses Produkt bereits bewertet.",
alreadyReviewedPending: "Du hast dieses Produkt bereits bewertet — deine Bewertung wird noch geprüft.",
alreadyReviewedPending: "Du hast dieses Produkt bereits bewertet, deine Bewertung wird noch geprüft.",
onlyBuyersCanReview: "Nur Käufer:innen können dieses Produkt bewerten.",
yourRating: "Deine Bewertung",
commentPlaceholder: "Was hat dir gefallen? (optional)",
@@ -1400,7 +1404,7 @@ export const de: Dictionary = {
shop: {
eyebrow: "Shop",
title: "Unser Sortiment",
subtitle: "Honig, Bienenwachskerzen und Propolis aus eigener Imkerei — solange der jeweilige Bestand reicht.",
subtitle: "Honig, Bienenwachskerzen und Propolis aus eigener Imkerei, solange der jeweilige Bestand reicht.",
allCategories: "Alle",
sortLabel: "Sortieren:",
sortNewest: "Neu eingetroffen",
@@ -1426,7 +1430,7 @@ export const de: Dictionary = {
currentHarvest: {
eyebrow: "Aktuell verfügbar",
title: "Die aktuelle Ernte",
subtitle: "Kleine, dokumentierte Chargen — solange der Vorrat reicht.",
subtitle: "Kleine, dokumentierte Chargen, solange der Vorrat reicht.",
},
originStory: {
eyebrow: "Herkunft",
@@ -1507,7 +1511,7 @@ export const de: Dictionary = {
},
{ quote: "Man schmeckt wirklich, dass hier jede Charge mit Sorgfalt entsteht.", author: "Markus, Altenmünster" },
{
quote: "Schönes Geschenk für Kunden — die Rückmeldungen waren durchweg begeistert.",
quote: "Schönes Geschenk für Kunden. Die Rückmeldungen waren durchweg begeistert.",
author: "Firmenkunde, Region Augsburg",
},
],