Erklärt jetzt direkt, was in dieser Liste erscheinen wird (Zahlungen, neue Teddy-Prämien, Stufenwechsel), statt nur eine leere Aussage zu zeigen — in allen 4 Sprachen. Co-Authored-By: Claude Sonnet 5 <[email protected]>
1220 lines
104 KiB
TypeScript
1220 lines
104 KiB
TypeScript
import type { Locale } from "./config";
|
||
|
||
// Zentrales UI-Wörterbuch: Header/Footer/Buttons/wiederkehrende Bausteine + Seitentexte für alle
|
||
// vier Sprachen (DE/EN/CH/FR). Rechtstexte (Impressum/Datenschutz/AGB/Widerruf/Muster-Widerruf)
|
||
// bleiben bewusst nur Deutsch (siehe Vault-Notiz zu rechtlicher Genauigkeit) und stehen deshalb
|
||
// NICHT hier drin.
|
||
|
||
export const ui = {
|
||
de: {
|
||
nav: { shop: "Shop", sale: "Sale", creative: "Über die Kreative", faq: "FAQ", contact: "Kontakt", account: "Mein Konto", login: "Anmelden" },
|
||
accountMenu: { myAccount: "Mein Konto", logout: "Abmelden" },
|
||
topbar: "Versandkostenfrei ab 75 € innerhalb DE/AT/CH/LU",
|
||
footer: {
|
||
tagline: "Handgemacht mit Liebe – Kreativität zum Verschenken und Selbstbehalten.",
|
||
shopHeading: "Shop", serviceHeading: "Service", legalHeading: "Rechtliches",
|
||
shipping: "Versand & Zahlung", account: "Mein Konto",
|
||
copyright: "Einzelunternehmen · Kleinunternehmer gemäß §19 UStG",
|
||
legalNoteTitle: "Hinweis zu rechtlichen Seiten",
|
||
legalNote: "Impressum, Datenschutz, AGB, Widerrufsbelehrung und das Muster-Widerrufsformular sind aus rechtlichen Gründen ausschließlich auf Deutsch verfügbar.",
|
||
},
|
||
badge: { neu: "Neu", bestseller: "Bestseller", sale: "Sale", handgemacht: "Handgemacht", ausverkauft: "Ausverkauft" },
|
||
common: {
|
||
addToCart: "In den Warenkorb", soldOut: "Ausverkauft", addedToCart: "Zum Warenkorb hinzugefügt ✓",
|
||
onlyXLeft: (n: string) => `Nur noch ${n} auf Lager`, maxInCart: "Maximale verfügbare Menge ist bereits im Warenkorb", maxInCartShort: "Bereits im Warenkorb",
|
||
browseShop: "Jetzt stöbern", viewAll: "Alle ansehen →", viewAllSale: "Alle Angebote →",
|
||
toShop: "Zum Shop →", moreAboutMe: "Mehr über mich →", discoverNow: "Jetzt entdecken",
|
||
installApp: "App installieren", installAppShort: "Installieren",
|
||
vatNote: "Gemäß §19 UStG wird keine Umsatzsteuer berechnet und ausgewiesen.",
|
||
allPricesPlusShipping: "Alle Preise zzgl. Versand.", plusShipping: "zzgl. Versand",
|
||
quantity: "Anzahl", photoSoon: "Produktfoto folgt", portraitSoon: "Porträtfoto von VanVan folgt",
|
||
prevPhoto: "Vorheriges Foto", nextPhoto: "Nächstes Foto",
|
||
handmadeBadge: "🩵 Handgemacht",
|
||
},
|
||
product: {
|
||
articleNo: "Artikelnummer", material: "Material", size: "Größe", colors: "Farben",
|
||
included: "Lieferumfang", care: "Pflegehinweise", delivery: "Lieferzeit",
|
||
recommendations: "Das könnte dir auch gefallen",
|
||
todoFields: "GPSR-Hinweise, Warnhinweise, Hersteller/Herstelleranschrift und Produktvideos werden ergänzt, sobald echte Produktdaten von VanVan vorliegen (Phase 2, Adminbereich).",
|
||
photoNote: "echte Fotos ergänzt VanVan später",
|
||
reviewsTitle: "Kundenrezensionen", noReviews: "Noch keine Bewertungen für dieses Produkt — sei die/der Erste!",
|
||
reviewCount: (n: number) => `${n} Bewertung${n === 1 ? "" : "en"}`,
|
||
writeReviewTitle: "🩵 Deine Rezension", yourRating: "Deine Bewertung", yourReview: "Was hat dir gefallen? (optional)",
|
||
yourName: "Dein Name", submitReview: "Rezension veröffentlichen", reviewSaved: "Danke für deine Rezension! ✓",
|
||
reviewNeedsRating: "Bitte wähle 1–5 Herzen aus.", reviewFromOrder: (nr: string) => `Du bewertest deine Bestellung ${nr}.`,
|
||
loginHintReview: "Angemeldet als", notLoggedInReview: "Du bist nicht angemeldet — deine Rezension wird mit dem eingegebenen Namen veröffentlicht.",
|
||
},
|
||
shop: {
|
||
title: "Alle Produkte", lead: "Stöbere durch alle handgemachten Stücke – filtere und sortiere nach deinen Wünschen.",
|
||
filters: "Filter", allCategories: "Alle Kategorien", priceUpTo: "Preis bis", priceUpToValue: (v: number) => `bis ${v} €`,
|
||
onlyAvailable: "Nur verfügbare Artikel", filterNote: "Material- und Farbfilter folgen, sobald mehr Produkte im Sortiment sind.",
|
||
sortNew: "Neu", sortBestseller: "Bestseller", sortPriceAsc: "Preis aufsteigend", sortPriceDesc: "Preis absteigend", sortRating: "Beste Bewertung",
|
||
resultCount: (n: number) => `${n} Produkt${n === 1 ? "" : "e"}`, noResults: "Keine Produkte gefunden – bitte Filter anpassen.",
|
||
breadcrumbShop: "Shop", categoryEmpty: "In dieser Kategorie sind aktuell noch keine Produkte hinterlegt – schau bald wieder vorbei.",
|
||
categoryLabel: "Kategorie", productSingular: "Produkt", productPlural: "Produkte", sortLabel: "Sortierung", subcategoriesLabel: "Unterkategorien", mainCategoryLabel: "Hauptkategorie", subcategoryEmpty: "Für diesen Bereich stellt VanVan bald die ersten Produkte ein – schau bald wieder vorbei.", moreAbout: "Mehr über", moreVariants: "Weitere Modelle",
|
||
moreAboutCharacterLead: "Wenn du mehr über mich erfahren möchtest, dann klicke",
|
||
minRatingLabel: "Mindestbewertung", minRatingAny: "Alle Bewertungen",
|
||
},
|
||
reviews: {
|
||
heading: "Was unsere Kund:innen sagen", lead: "Echte Rückmeldungen zu unseren handgemachten Stücken.",
|
||
basedOn: (n: number) => `basierend auf ${n} Bewertung${n === 1 ? "" : "en"}`,
|
||
toProduct: "Zum Produkt →",
|
||
},
|
||
sale: {
|
||
eyebrow: "% Sale", title: "Aktuelle Angebote", lead: "Zeitlich begrenzte Rabatte auf ausgewählte handgemachte Stücke.",
|
||
empty: "Aktuell läuft keine Aktion – schau bald wieder vorbei.",
|
||
},
|
||
faq: {
|
||
title: "Häufig gestellte Fragen",
|
||
items: [
|
||
{ q: "Wie lange dauert die Lieferung?", a: "In der Regel 2–7 Werktage innerhalb Deutschlands, Österreichs, der Schweiz und Luxemburgs. Bei Sonderanfertigungen kann es etwas länger dauern – das steht dann direkt auf der Produktseite." },
|
||
{ q: "Ab wann ist der Versand kostenlos?", a: "Ab einem Warenwert von 75 € versenden wir innerhalb der belieferten Länder kostenfrei mit DHL. Darunter richten sich die Versandkosten nach Produkt, Land und Warenwert – Details dazu findest du auf der Seite Versand & Zahlung." },
|
||
{ q: "Kann ich Sonderwünsche oder individuelle Anfertigungen bestellen?", a: "Ja, gerne! Schreib uns einfach über das Kontaktformular – wir schauen, was möglich ist." },
|
||
{ q: "Wie pflege ich meine handgemachten Produkte?", a: "Die genauen Pflegehinweise stehen jeweils auf der Produktseite. Da unsere Stücke handgehäkelt bzw. handgestrickt sind, empfehlen wir grundsätzlich schonende Handwäsche bei niedriger Temperatur, keinen Trockner und liegend an der Luft trocknen, damit Form und Fasern erhalten bleiben." },
|
||
{ q: "Welche Zahlungsarten werden akzeptiert?", a: "PayPal, Klarna, Kreditkarte (Visa & Mastercard) und Banküberweisung (Vorkasse)." },
|
||
{ q: "Kann ich meine Bestellung zurückgeben?", a: "Es gilt das gesetzliche 14-tägige Widerrufsrecht (siehe unsere Widerrufsbelehrung). Bei individuell auf dich zugeschnittenen Sonderanfertigungen kann das Widerrufsrecht gesetzlich ausgeschlossen sein, bei Standardartikeln aus unserem Sortiment gilt es regulär." },
|
||
{ q: "Muss ich Umsatzsteuer zahlen?", a: "Nein. Van's DIY & Bastelbedarf ist Kleinunternehmer gemäß §19 UStG – es wird keine Umsatzsteuer berechnet und ausgewiesen." },
|
||
{ q: "Brauche ich ein Kundenkonto zum Bestellen?", a: "Nein, du kannst auch bequem als Gast bestellen. Ein Konto lohnt sich aber für Bestellhistorie, Wunschliste und Sendungsverfolgung an einem Ort." },
|
||
],
|
||
},
|
||
contact: {
|
||
title: "Schreib uns", lead: "Fragen zu einem Produkt, deiner Bestellung oder eine individuelle Anfrage? Melde dich gerne!",
|
||
name: "Name", email: "E-Mail", subject: "Betreff", message: "Nachricht",
|
||
gdprPrefix: "Ich habe die", gdprLink: "Datenschutzerklärung", gdprSuffix: "gelesen und bin mit der Verarbeitung meiner Daten einverstanden.",
|
||
send: "Nachricht senden", sentDemo: "Danke! (Demo – noch keine echte Übertragung in Phase 1)",
|
||
todoNote: "TODO Phase 2: Formular an eine echte Backend-/E-Mail-Anbindung (Cloudflare Worker) anschließen. Aktuell ohne echten Versand.",
|
||
directTitle: "Direkter Kontakt", emailPlaceholderNote: "(Platzhalter-Adresse)", orderNote: "Für Bestellfragen bitte die Bestellnummer angeben.",
|
||
responseTitle: "Antwortzeit", responseNote: "In der Regel innerhalb von 1–2 Werktagen.",
|
||
},
|
||
about: {
|
||
eyebrow: "Über die Kreative", title: "Hallo, ich bin VanVan 🩵",
|
||
lead: "Willkommen in meiner kleinen Werkstatt! Hier entsteht alles, was du im Shop findest, von Hand – Stich für Stich, Perle für Perle.",
|
||
valuesTitle: "Was mir wichtig ist",
|
||
values: [
|
||
{ icon: "🧵", title: "Handarbeit", text: "Kein Massenprodukt – jedes Stück entsteht einzeln und mit Sorgfalt." },
|
||
{ icon: "🩵", title: "Qualität", text: "Sorgfältig ausgewählte Materialien für langlebige, schöne Ergebnisse." },
|
||
{ icon: "🎁", title: "Persönlich", text: "Ob Geschenk oder Selbstbehalten – jedes Produkt trägt ein Stück Herzblut." },
|
||
],
|
||
story: [
|
||
{
|
||
title: "Meine Reise begann mit einer einzigen Masche",
|
||
paragraphs: [
|
||
"Vor etwa sechs Jahren habe ich meine Leidenschaft für das Häkeln entdeckt. Angefangen hat alles aus reiner Neugier. Ohne Kurse oder Vorkenntnisse habe ich mir Schritt für Schritt alles selbst beigebracht.",
|
||
"Mit jeder neuen Masche, jedem kleinen Fehler und jedem fertigen Projekt wuchs nicht nur mein Können, sondern auch meine Begeisterung für dieses wundervolle Handwerk.",
|
||
"Heute ist das Häkeln für mich weit mehr als nur ein Hobby. Es ist mein kreativer Ausgleich, eine Möglichkeit, Ideen Wirklichkeit werden zu lassen und Menschen mit liebevoll gestalteten Unikaten ein Lächeln ins Gesicht zu zaubern.",
|
||
"Besonders die Herstellung von Amigurumis begeistert mich immer wieder aufs Neue. Es fasziniert mich, wie aus einem einfachen Knäuel Wolle nach und nach kleine Persönlichkeiten entstehen – jede einzelne mit ihrem ganz eigenen Charme.",
|
||
],
|
||
},
|
||
{
|
||
title: "Kreativität kennt keine Grenzen",
|
||
paragraphs: [
|
||
"Neben dem Häkeln habe ich auch meine Leidenschaft für handgefertigten Modeschmuck entdeckt.",
|
||
"Mit viel Sorgfalt fertige ich Armbänder, Halsketten, Schlüsselanhänger und weitere Accessoires an. Dabei liebe ich es, verschiedene Materialien, Farben und Anhänger miteinander zu kombinieren und immer wieder neue Designs entstehen zu lassen.",
|
||
"Jedes Schmuckstück soll nicht nur schön aussehen, sondern seinem neuen Besitzer lange Freude bereiten.",
|
||
"Kreativität begleitet mich schon mein ganzes Leben. Deshalb findest du bei mir nicht nur klassische Häkelarbeiten oder Schmuck, sondern immer wieder neue kreative Ideen und Projekte, die mit viel Liebe entstehen.",
|
||
],
|
||
},
|
||
{
|
||
title: "Qualität mit Herz",
|
||
paragraphs: [
|
||
"Für mich bedeutet Handarbeit Persönlichkeit.",
|
||
"Kein Produkt entsteht am Fließband.",
|
||
"Jedes einzelne Stück wird von mir sorgfältig geplant, gefertigt und kontrolliert.",
|
||
"Dabei lege ich besonderen Wert auf hochwertige Materialien, saubere Verarbeitung, liebevolle Details, langlebige Qualität und einzigartige Designs.",
|
||
],
|
||
},
|
||
{
|
||
title: "Mehr als nur ein Hobby",
|
||
paragraphs: [
|
||
"Hinter meiner Kreativität steckt weit mehr als Wolle und Perlen.",
|
||
"Ich bin ein Mensch, der mit ganzem Herzen bei der Sache ist. Wenn ich etwas tue, dann mit Leidenschaft, Geduld und dem Wunsch, etwas Besonderes zu erschaffen.",
|
||
"Es macht mich glücklich, wenn meine Werke anderen Menschen Freude schenken – sei es als Geschenk für einen lieben Menschen oder einfach als kleine Aufmerksamkeit für sich selbst.",
|
||
],
|
||
},
|
||
{
|
||
title: "Mein kleiner Herzensshop",
|
||
paragraphs: [
|
||
"Mein Shop ist deshalb nicht einfach nur ein Ort, an dem Produkte verkauft werden.",
|
||
"Er ist ein Teil von mir.",
|
||
"Hier stecken unzählige Stunden Arbeit, Kreativität, Herzblut und ganz viel Liebe in jedem einzelnen Werk.",
|
||
"Genau das macht jedes Stück einzigartig.",
|
||
],
|
||
},
|
||
{
|
||
title: "Danke, dass du da bist",
|
||
paragraphs: [
|
||
"Vielen Dank, dass du dir die Zeit nimmst, meine kleine kreative Welt kennenzulernen und meine Leidenschaft zu unterstützen.",
|
||
"Ich wünsche dir ganz viel Freude beim Stöbern und hoffe, dass du genau das eine Stück findest, das dein Herz höherschlagen lässt.",
|
||
],
|
||
},
|
||
],
|
||
closing: "Mit Liebe handgemacht – Masche für Masche und Perle für Perle.",
|
||
},
|
||
shipping: {
|
||
eyebrow: "Versand & Zahlung", title: "Versand & Zahlung",
|
||
shippingTitle: "📦 Versand",
|
||
shippingItems: [
|
||
"Versand ausschließlich mit DHL", "Lieferländer: Deutschland, Österreich, Schweiz, Luxemburg",
|
||
"Lieferzeit: 2–7 Werktage", "Versandkosten sind pro Produkt hinterlegt und zusätzlich nach Warenwert & Land gestaffelt",
|
||
"Versandkostenfrei ab 75 € Warenwert", "Der Versand erfolgt erst nach Zahlungseingang",
|
||
"Bei Lieferungen in die Schweiz können Schweizer Einfuhrumsatzsteuer und Zollgebühren anfallen, die von dir als Empfänger:in getragen werden",
|
||
],
|
||
paymentTitle: "💳 Zahlungsarten", paymentItems: ["PayPal", "Klarna", "Kreditkarte (Visa & Mastercard)", "Banküberweisung (Vorkasse)"],
|
||
todoNote: "Konkrete Versandkosten-Staffel je Land/Warenwert wird ergänzt, sobald VanVan die finalen DHL-Konditionen festgelegt hat.",
|
||
},
|
||
cart: {
|
||
eyebrow: "Warenkorb", title: "Dein Warenkorb", empty: "Dein Warenkorb ist noch leer.",
|
||
subtotal: "Zwischensumme", shipping: "Versand", shippingCalculated: "wird im Checkout berechnet",
|
||
total: "Gesamt", remaining: (v: string) => `Noch ${v} bis zum kostenlosen Versand.`, freeShipping: "🩵 Du bekommst kostenlosen Versand!",
|
||
toCheckout: "Weiter zum Checkout", remove: "Entfernen", perItem: "/ Stück",
|
||
discount: "Rabatt", mengenrabatt: (p: string) => `Mengenrabatt -${p}%`,
|
||
mengenrabattTier: (ab: string, p: string) => `ab ${ab} Stück -${p}%`,
|
||
couponLabel: "🎟️ Gutscheincode", couponPlaceholder: "Code eingeben", couponApply: "Einlösen", couponRemove: "Entfernen",
|
||
buyNow: "Jetzt kaufen", keptInCart: "Bleibt im Warenkorb, wird noch nicht gekauft",
|
||
couponInvalid: "Code ungültig oder abgelaufen.", couponApplied: (code: string) => `Gutschein „${code}" eingelöst`,
|
||
partnerDiscount: "🤝 Partner-Rabatt",
|
||
partnerCodeLabel: "🤝 Partner-Rabattcode", partnerCodePlaceholder: "Code eingeben", partnerCodeApply: "Einlösen", partnerCodeRemove: "Entfernen",
|
||
partnerCodeInvalid: "Code ungültig oder abgelaufen.", partnerCodeApplied: (code: string) => `Partner-Code „${code}" eingelöst`,
|
||
loyaltyDiscount: "🎁 Treuebonus (-20 %)",
|
||
loyaltyBannerTitle: "🎁 Dein Treuebonus ist bereit!",
|
||
loyaltyBannerText: "Wähle unten den Artikel aus, auf den du 20 % Rabatt erhältst.",
|
||
loyaltySelectLabel: "Für 20 % Treuebonus auswählen",
|
||
loyaltySelectedLabel: "🎁 -20 % Treuebonus angewendet",
|
||
gratisPraemie: "Gratis-Prämie aus deinem Abo",
|
||
aboDiscount: "🎫 Abo-Rabatt",
|
||
},
|
||
checkout: {
|
||
eyebrow: "Checkout", title: "Bestellung abschließen",
|
||
todoNote: "Phase 1 – Demo-Checkout. Es findet noch keine echte Zahlung statt. Die vollständige Anbindung an PayPal, Klarna und Banküberweisung sowie die Bestellverwaltung folgen in Phase 2 (Cloudflare Worker + D1, siehe Tech-Stack-Entscheidung im Projekt-Vault).",
|
||
step1: "2. Kontakt & Lieferadresse", email: "E-Mail", firstName: "Vorname", lastName: "Nachname",
|
||
street: "Straße & Hausnummer", zip: "PLZ", city: "Ort", country: "Land",
|
||
step2: "1. Zahlungsart",
|
||
step3: "3. Bestellübersicht", agbPrefix: "Ich habe die", agbLink: "AGB", agbSuffix: "gelesen und akzeptiere sie.",
|
||
revocationPrefix: "Ich habe die", revocationLink: "Widerrufsbelehrung", revocationAnd: "und",
|
||
privacyLink: "Datenschutzerklärung", revocationSuffix: "zur Kenntnis genommen.",
|
||
bankTransfer: "Banküberweisung (Vorkasse)", orderButton: "Jetzt zahlungspflichtig bestellen", emptyCartAlert: "Dein Warenkorb ist leer.",
|
||
creditCard: "Kreditkarte", creditCardSub: "Visa & Mastercard",
|
||
payPalHint: "Bezahle sicher und schnell direkt mit deinem PayPal-Konto.",
|
||
klarnaHint: "Rechnung, Ratenkauf oder Sofortüberweisung – wähle bei Klarna, wie du zahlen möchtest.",
|
||
klarnaConnect: "Weiter zu Klarna →", klarnaConnecting: "Verbinde mit Klarna …", klarnaConnected: "Verbindung zu Klarna hergestellt (Demo)",
|
||
cardHint: "Deine Kartendaten werden sicher übertragen.", cardNumber: "Kartennummer", cardExpiry: "Gültig bis", cardCvc: "CVC",
|
||
bankHintReal: "Bitte überweise den Rechnungsbetrag nach Bestellabschluss an folgendes Konto. Deine Ware wird nach Zahlungseingang verschickt.",
|
||
bankPlaceholder: "Die Bankverbindung wird dir nach Bestelleingang per E-Mail zugesendet.",
|
||
bankHolder: "Kontoinhaber:in", bankIban: "IBAN", bankBic: "BIC", bankBankName: "Bank",
|
||
shippingHintTitle: "Versandhinweis",
|
||
shippingHint: "Versand ausschließlich per DHL nach Deutschland, Österreich, Schweiz und Luxemburg. Lieferzeit 2–7 Werktage. Versandkostenfrei ab 75 €. Versand erst nach Zahlungseingang.",
|
||
shippingLink: "Mehr zu Versand & Zahlung →",
|
||
thankYouEyebrow: "Danke", thankYouTitle: "Deine Bestellung ist eingegangen",
|
||
thankYouLead: "Das ist aktuell eine Demo-Bestätigung (Phase 1, ohne echte Zahlungsabwicklung). Sobald der echte Checkout live ist, bekommst du hier und per E-Mail eine richtige Bestellbestätigung.",
|
||
continueShopping: "Weiter stöbern", total: "Gesamt", free: "kostenlos",
|
||
},
|
||
account: {
|
||
eyebrow: "Mein Konto", title: "Anmelden oder als Gast bestellen",
|
||
todoNote: "Phase 1 – Demo-Anmeldung ohne echte Passwortprüfung: Jede E-Mail-Adresse funktioniert, das Passwort-Feld ist reine Vorschau. Die Bestellungen im Konto sind Beispieldaten. Eine echte Anmeldung mit Datenbank kommt in Phase 2.",
|
||
loginTitle: "Anmelden", email: "E-Mail", password: "Passwort", loginButton: "Anmelden", forgotPassword: "Passwort vergessen?",
|
||
newTitle: "Neu hier?", newText: "Lege ein Konto an, um Bestellhistorie, Wunschliste und Sendungsverfolgung an einem Ort zu haben – oder bestelle einfach als Gast, ganz ohne Konto.",
|
||
guestButton: "Als Gast weiter einkaufen",
|
||
loginError: "Bitte gib eine E-Mail-Adresse ein.",
|
||
socialHeading: "Schneller anmelden mit",
|
||
socialGoogle: "Mit Google anmelden", socialApple: "Mit Apple anmelden", socialPaypal: "Mit PayPal anmelden",
|
||
socialComingSoon: "Kommt in Phase 2: Sobald die echte Konto-Anbindung steht, kannst du dich hier direkt anmelden — ganz ohne neues Passwort.",
|
||
orDivider: "oder mit E-Mail",
|
||
showPassword: "Passwort anzeigen", hidePassword: "Passwort verbergen",
|
||
rememberMe: "Angemeldet bleiben",
|
||
consentPrefix: "Mit der Anmeldung akzeptierst du unsere", consentLink: "Datenschutzerklärung", consentSuffix: ".",
|
||
previewLink: "👁 Vorschau: So sieht der Bereich für angemeldete Kund:innen aus",
|
||
previewName: "Marie L.",
|
||
},
|
||
accountDash: {
|
||
eyebrow: "Mein Konto", greeting: (name: string) => `Hallo ${name} 🩵`, lead: "Schön, dass du wieder da bist. Hier findest du alle deine Bestellungen, deine Wunschliste und deine Daten auf einen Blick.",
|
||
previewNote: "Phase 1: Deine Anmeldung, dein Profil und deine Rezensionen werden schon jetzt echt auf diesem Gerät gespeichert. Nur die Bestellungen unten sind Beispieldaten zur Gestaltung — echte Bestellungen kommen in Phase 2 mit Zahlungsanbindung und Datenbank (Cloudflare Worker + D1).",
|
||
notLoggedIn: "Du bist nicht angemeldet — du wirst zur Anmeldung weitergeleitet …",
|
||
logout: "Abmelden",
|
||
navLabel: "Kontobereich-Navigation",
|
||
statOrders: "Bestellungen", statWishlist: "Wunschliste", statOpen: "Offene Sendungen", statData: "Meine Daten", statLoyalty: "Treuebonus",
|
||
datenHeaderBtn: "👤 Meine Daten",
|
||
loyaltyTitle: "🎁 Mein Treuebonus",
|
||
loyaltyProgressTemplate: "Dein Bestellfortschritt: {cur} von {ziel} Bestellungen",
|
||
loyaltyRemainingOne: "Dir fehlt noch 1 Bestellung, bis du 20 % Rabatt auf einen Artikel deiner Wahl erhältst.",
|
||
loyaltyRemainingOther: "Dir fehlen noch {n} Bestellungen, bis du 20 % Rabatt auf einen Artikel deiner Wahl erhältst.",
|
||
loyaltyUnlockedTitle: "🎉 Treuebonus freigeschaltet",
|
||
loyaltyUnlockedText: "Du hast zehn Bestellungen abgeschlossen und erhältst bei deiner nächsten Bestellung 20 % Rabatt auf einen Artikel deiner Wahl.",
|
||
loyaltyGoToCart: "Artikel im Warenkorb auswählen →",
|
||
loyaltyExplainer: "Es zählen nur vollständig abgeschlossene und bezahlte Bestellungen. Nach der Einlösung beginnt dein Fortschritt wieder bei null.",
|
||
loyaltyLockedTitle: "🔒 Nur mit aktivem Abo verfügbar",
|
||
loyaltyLockedText: "Der Treuebonus ist ein Extra für unsere Abo-Mitglieder. Schließe ein Abo ab, um Bestellungen für deine 20 %-Belohnung zu sammeln.",
|
||
loyaltyLockedBtn: "Zum Abo →",
|
||
statAbo: "Mein Abo",
|
||
aboHeaderBtn: "🎫 Mein Abo verwalten",
|
||
aboTitle: "🎫 Mein Abo",
|
||
aboIntro: "Sichere dir dauerhaften Rabatt auf jede Bestellung und hol dir kostenlose Teddys als Dankeschön — automatisch, jeden Monat.",
|
||
aboNameKlein: "Kleines Abo", aboNameMittel: "Mittleres Abo", aboNameGross: "Großes Abo",
|
||
aboPreisSuffix: "/ Monat",
|
||
aboVorteilKlein: "5 % Rabatt auf jede Bestellung. Nach jedem vollen Abo-Jahr: 1 kleiner Teddy gratis.",
|
||
aboVorteilMittel: "10 % Rabatt auf jede Bestellung. Nach jedem vollen Abo-Jahr: 1 großer Teddy gratis.",
|
||
aboVorteilGross: "20 % Rabatt auf jede Bestellung. Alle 6 Monate ein kleiner Teddy, nach jedem vollen Jahr zusätzlich ein großer Teddy.",
|
||
aboAbschliessenBtn: "Abo abschließen",
|
||
aboAktivesLabel: "✓ Dein aktuelles Abo",
|
||
aboWechselnBtn: "Zu diesem Abo wechseln",
|
||
aboNichtBuchbar: "Derzeit nicht buchbar",
|
||
aboStatusTitle: "Dein Abo-Status",
|
||
aboFieldStufe: "Abo-Stufe", aboFieldPreis: "Monatlicher Preis", aboFieldRabatt: "Enthaltener Rabatt",
|
||
aboFieldStart: "Startdatum", aboFieldNaechsteZahlung: "Nächste Zahlung", aboFieldLaufzeit: "Bisherige Laufzeit",
|
||
aboMonateSuffix: "Monate",
|
||
aboFortschrittKleinTemplate: "🧸 Noch {n} Monat(e) bis zum nächsten kleinen Teddy",
|
||
aboFortschrittGrossTemplate: "🧸 Noch {n} Monat(e) bis zum nächsten großen Teddy",
|
||
aboPraemienErhaltenTemplate: "Bereits erhalten: {klein}× kleiner Teddy, {gross}× großer Teddy",
|
||
aboPraemienVerfuegbarTitle: "🎉 Verfügbare Prämien",
|
||
aboKeinePraemienVerfuegbar: "Aktuell keine Prämie zum Einlösen verfügbar.",
|
||
aboEinloesenBtn: "Jetzt einlösen",
|
||
aboEinloesenKleinLabel: "Kleiner Teddy", aboEinloesenGrossLabel: "Großer Teddy",
|
||
aboEingeloestHinweis: "🧸 In den Warenkorb gelegt!",
|
||
aboZahlungSimBtn: "Monatszahlung simulieren (Demo)",
|
||
aboZahlungSimHinweis: "Phase 1: Es gibt noch keine echte wiederkehrende Zahlung im Hintergrund. Mit diesem Knopf testest du, was bei der nächsten erfolgreichen Monatsabbuchung passiert.",
|
||
aboKuendigenBtn: "Abo kündigen",
|
||
aboKuendigenConfirm: "Abo wirklich kündigen? Deine Vorteile bleiben bis zum Ende der bezahlten Laufzeit aktiv.",
|
||
aboGekuendigtHinweisTemplate: "Gekündigt am {datum}. Deine Vorteile bleiben bis zum Ende der bezahlten Laufzeit aktiv, danach endet dein Abo automatisch.",
|
||
aboWechselTitle: "Zu einem anderen Abo wechseln",
|
||
aboBenachrichtigungenTitle: "🔔 Benachrichtigungen",
|
||
aboKeineBenachrichtigungen: "Noch keine Benachrichtigungen — hier erscheinen automatisch Meldungen zu deinem Abo, z. B. bei jeder erfolgreichen Zahlung, einer neuen Teddy-Prämie oder einem Stufenwechsel.",
|
||
aboNichtAktivBadge: "⏸ Rabatt pausiert",
|
||
aboExplainer: "Alle Angaben werden aktuell sicher auf diesem Gerät gespeichert (Phase 1). Eine geräteübergreifende Datenbank folgt mit der echten Zahlungsanbindung in Phase 2.",
|
||
notifAboAbgeschlossen: "Dein Abo wurde erfolgreich abgeschlossen — willkommen! 🎉",
|
||
notifAboGewechselt: "Du hast erfolgreich in ein anderes Abo gewechselt ({stufe}).",
|
||
notifAboZahlungErfolgreich: "Deine monatliche Abo-Zahlung war erfolgreich. ✅",
|
||
notifAboTeddyKleinFrei: "🧸 Neue Prämie freigeschaltet: ein kleiner Teddy wartet auf dich!",
|
||
notifAboTeddyGrossFrei: "🧸 Neue Prämie freigeschaltet: ein großer Teddy wartet auf dich!",
|
||
notifAboBaldPraemie: "🧸 Fast geschafft — nächsten Monat wartet deine nächste Teddy-Prämie!",
|
||
notifAboGekuendigt: "Du hast dein Abo gekündigt. Deine Vorteile bleiben bis zum Ende der bezahlten Laufzeit aktiv.",
|
||
notifAboTeddyKleinEingeloest: "🧸 Kleiner Teddy eingelöst — er liegt jetzt kostenlos in deinem Warenkorb.",
|
||
notifAboTeddyGrossEingeloest: "🧸 Großer Teddy eingelöst — er liegt jetzt kostenlos in deinem Warenkorb.",
|
||
noOpenOrders: "Aktuell keine offenen Sendungen — alle Bestellungen sind schon angekommen. 🎉",
|
||
noArrivedOrders: "Noch keine angekommenen Bestellungen — hier erscheinen deine Bestellungen, sobald sie geliefert wurden.",
|
||
ordersTitle: "📦 Meine Bestellungen",
|
||
orderNo: "Bestellung", orderDate: "Bestellt am", orderTotal: "Gesamt", orderItems: "Artikel",
|
||
trackingLabel: "Sendungsverfolgung", trackingBtn: "Sendung verfolgen →", invoiceBtn: "Rechnung ansehen", reorderBtn: "Nochmal bestellen",
|
||
invoiceTitle: "Rechnung", invoiceNumberLabel: "Rechnungsnummer", invoiceDateLabel: "Rechnungsdatum",
|
||
invoiceSellerLabel: "Verkäufer", invoiceBillToLabel: "Rechnungsempfänger",
|
||
invoiceItemLabel: "Artikel", invoiceQtyLabel: "Menge", invoiceUnitPriceLabel: "Einzelpreis", invoiceSumLabel: "Gesamtbetrag",
|
||
invoiceCloseBtn: "Schließen", invoiceDownloadBtn: "Rechnung downloaden", invoiceDownloading: "Wird erstellt …",
|
||
statusBezahlt: "Bezahlt", statusBearbeitung: "In Bearbeitung", statusVersandVorbereitet: "Versand vorbereitet", statusVersendet: "Versendet", statusAbgeschlossen: "Abgeschlossen",
|
||
wishlistTitle: "🩵 Meine Wunschliste", wishlistEmpty: "Deine Wunschliste ist noch leer — stöbere im Shop und speichere deine Lieblingsstücke mit dem Herz-Symbol.",
|
||
recentTitle: "🕘 Zuletzt angesehen",
|
||
profileTitle: "👤 Meine Daten", profileName: "Name", profileEmail: "E-Mail", profileAddress: "Lieferadresse", profileEdit: "Daten bearbeiten",
|
||
reviewBtn: "🩵 Rezension schreiben", reviewedBadge: "✓ Bewertet",
|
||
nameSave: "Speichern", nameSaved: "Gespeichert ✓",
|
||
usernameLabel: "Benutzername (Spitzname)", usernameHint: "Optional — ein Bonus, falls du lieber mit einem Spitzname statt deinem Namen angezeigt werden willst.", usernameSave: "Speichern", usernameSaved: "Gespeichert ✓",
|
||
photoLabel: "Profilfoto", photoChange: "Foto ändern", photoRemove: "Entfernen",
|
||
},
|
||
},
|
||
en: {
|
||
nav: { shop: "Shop", sale: "Sale", creative: "About the Maker", faq: "FAQ", contact: "Contact", account: "My Account", login: "Sign in" },
|
||
accountMenu: { myAccount: "My Account", logout: "Sign out" },
|
||
topbar: "Free shipping from €75 within DE/AT/CH/LU",
|
||
footer: {
|
||
tagline: "Handmade with love – creativity to gift and to keep.",
|
||
shopHeading: "Shop", serviceHeading: "Service", legalHeading: "Legal",
|
||
shipping: "Shipping & Payment", account: "My Account",
|
||
copyright: "Sole proprietorship · Small business per §19 UStG (German VAT law)",
|
||
legalNoteTitle: "Note on legal pages",
|
||
legalNote: "Imprint, privacy policy, terms & conditions, withdrawal notice and the sample withdrawal form are, for legal accuracy, only available in German.",
|
||
},
|
||
badge: { neu: "New", bestseller: "Bestseller", sale: "Sale", handgemacht: "Handmade", ausverkauft: "Sold out" },
|
||
common: {
|
||
addToCart: "Add to cart", soldOut: "Sold out", addedToCart: "Added to cart ✓",
|
||
onlyXLeft: (n: string) => `Only ${n} left in stock`, maxInCart: "The maximum available quantity is already in your cart", maxInCartShort: "Already in cart",
|
||
browseShop: "Browse now", viewAll: "View all →", viewAllSale: "View all offers →",
|
||
toShop: "To the shop →", moreAboutMe: "More about me →", discoverNow: "Discover now",
|
||
installApp: "Install app", installAppShort: "Install",
|
||
vatNote: "Under §19 UStG (German small-business rule) no VAT is charged or shown.",
|
||
allPricesPlusShipping: "All prices plus shipping.", plusShipping: "plus shipping",
|
||
quantity: "Quantity", photoSoon: "Product photo coming soon", portraitSoon: "VanVan's portrait photo coming soon",
|
||
prevPhoto: "Previous photo", nextPhoto: "Next photo",
|
||
handmadeBadge: "🩵 Handmade",
|
||
},
|
||
product: {
|
||
articleNo: "Item number", material: "Material", size: "Size", colors: "Colors",
|
||
included: "What's included", care: "Care instructions", delivery: "Delivery time",
|
||
recommendations: "You might also like",
|
||
todoFields: "GPSR notices, warnings, manufacturer details and product videos will be added once VanVan provides real product data (Phase 2, admin area).",
|
||
photoNote: "real photos will be added by VanVan later",
|
||
reviewsTitle: "Customer reviews", noReviews: "No reviews yet for this product — be the first!",
|
||
reviewCount: (n: number) => `${n} review${n === 1 ? "" : "s"}`,
|
||
writeReviewTitle: "🩵 Your review", yourRating: "Your rating", yourReview: "What did you like? (optional)",
|
||
yourName: "Your name", submitReview: "Publish review", reviewSaved: "Thanks for your review! ✓",
|
||
reviewNeedsRating: "Please choose 1–5 hearts.", reviewFromOrder: (nr: string) => `You're reviewing your order ${nr}.`,
|
||
loginHintReview: "Signed in as", notLoggedInReview: "You're not signed in — your review will be published under the name you enter.",
|
||
},
|
||
shop: {
|
||
title: "All products", lead: "Browse all handmade pieces – filter and sort to your liking.",
|
||
filters: "Filters", allCategories: "All categories", priceUpTo: "Price up to", priceUpToValue: (v: number) => `up to €${v}`,
|
||
onlyAvailable: "In-stock items only", filterNote: "Material and color filters will follow once more products are in the shop.",
|
||
sortNew: "New", sortBestseller: "Bestseller", sortPriceAsc: "Price: low to high", sortPriceDesc: "Price: high to low", sortRating: "Top rated",
|
||
resultCount: (n: number) => `${n} product${n === 1 ? "" : "s"}`, noResults: "No products found – please adjust your filters.",
|
||
breadcrumbShop: "Shop", categoryEmpty: "No products in this category yet – check back soon.",
|
||
categoryLabel: "Category", productSingular: "product", productPlural: "products", sortLabel: "Sort by", subcategoriesLabel: "Subcategories", mainCategoryLabel: "Main category", subcategoryEmpty: "VanVan will be adding the first products here soon – check back shortly.", moreAbout: "More about", moreVariants: "More designs",
|
||
moreAboutCharacterLead: "If you'd like to learn more about me, click",
|
||
minRatingLabel: "Minimum rating", minRatingAny: "All ratings",
|
||
},
|
||
reviews: {
|
||
heading: "What our customers say", lead: "Real feedback on our handmade pieces.",
|
||
basedOn: (n: number) => `based on ${n} review${n === 1 ? "" : "s"}`,
|
||
toProduct: "View product →",
|
||
},
|
||
sale: {
|
||
eyebrow: "% Sale", title: "Current offers", lead: "Time-limited discounts on selected handmade pieces.",
|
||
empty: "No promotion is running at the moment – check back soon.",
|
||
},
|
||
faq: {
|
||
title: "Frequently Asked Questions",
|
||
items: [
|
||
{ q: "How long does delivery take?", a: "Usually 2–7 business days within Germany, Austria, Switzerland and Luxembourg. Custom pieces may take a little longer – noted directly on the product page." },
|
||
{ q: "From when is shipping free?", a: "From an order value of €75 we ship free of charge via DHL within the countries we deliver to. Below that, shipping costs depend on the product, country and order value – details on our Shipping & Payment page." },
|
||
{ q: "Can I request custom or personalized items?", a: "Yes, gladly! Just reach out via the contact form – we'll see what's possible." },
|
||
{ q: "How do I care for my handmade items?", a: "Care instructions are listed on the respective product page. As our pieces are hand-crocheted or hand-knitted, we generally recommend gentle hand-washing at a low temperature, no tumble dryer, and drying flat to preserve shape and fibres." },
|
||
{ q: "Which payment methods are accepted?", a: "PayPal, Klarna, credit card (Visa & Mastercard) and bank transfer (prepayment)." },
|
||
{ q: "Can I return my order?", a: "The statutory 14-day right of withdrawal applies (see our withdrawal notice). For custom-made pieces tailored to you, the right of withdrawal may be excluded by law; for standard items from our range it applies as usual." },
|
||
{ q: "Do I have to pay VAT?", a: "No. Van's DIY & Bastelbedarf is a small business per §19 UStG – no VAT is charged or shown." },
|
||
{ q: "Do I need an account to order?", a: "No, you can conveniently check out as a guest. An account is worthwhile though for order history, wishlist and shipment tracking all in one place." },
|
||
],
|
||
},
|
||
contact: {
|
||
title: "Get in touch", lead: "Questions about a product, your order, or a custom request? Feel free to reach out!",
|
||
name: "Name", email: "Email", subject: "Subject", message: "Message",
|
||
gdprPrefix: "I have read the", gdprLink: "privacy policy", gdprSuffix: "and agree to the processing of my data.",
|
||
send: "Send message", sentDemo: "Thank you! (Demo – no real submission yet in Phase 1)",
|
||
todoNote: "TODO Phase 2: connect this form to a real backend/email service (Cloudflare Worker). Currently no real sending happens.",
|
||
directTitle: "Direct contact", emailPlaceholderNote: "(placeholder address)", orderNote: "Please include your order number for order-related questions.",
|
||
responseTitle: "Response time", responseNote: "Usually within 1–2 business days.",
|
||
},
|
||
about: {
|
||
eyebrow: "About the Maker", title: "Hi, I'm VanVan 🩵",
|
||
lead: "Welcome to my little workshop! Everything you find in the shop is made here by hand – stitch by stitch, bead by bead.",
|
||
valuesTitle: "What matters to me",
|
||
values: [
|
||
{ icon: "🧵", title: "Craftsmanship", text: "No mass production – every piece is made individually and with care." },
|
||
{ icon: "🩵", title: "Quality", text: "Carefully chosen materials for durable, beautiful results." },
|
||
{ icon: "🎁", title: "Personal", text: "Whether a gift or a treat for yourself – every product carries a piece of heart." },
|
||
],
|
||
story: [
|
||
{
|
||
title: "My journey began with a single stitch",
|
||
paragraphs: [
|
||
"About six years ago, I discovered my passion for crochet. It all started out of pure curiosity. Without any courses or prior experience, I taught myself everything step by step.",
|
||
"With every new stitch, every small mistake and every finished project, not only my skills grew — so did my enthusiasm for this wonderful craft.",
|
||
"Today, crochet is far more than just a hobby to me. It's my creative outlet, a way to turn ideas into reality and to bring a smile to people's faces with lovingly made one-of-a-kind pieces.",
|
||
"I especially love making amigurumis. I'm fascinated by how a simple ball of yarn gradually turns into a little character — each one with its own unique charm.",
|
||
],
|
||
},
|
||
{
|
||
title: "Creativity knows no limits",
|
||
paragraphs: [
|
||
"Alongside crochet, I also discovered my passion for handmade jewelry.",
|
||
"With great care, I make bracelets, necklaces, keychains and other accessories. I love combining different materials, colors and charms to create new designs again and again.",
|
||
"Every piece of jewelry should not only look beautiful, but bring its new owner joy for a long time to come.",
|
||
"Creativity has been with me my whole life. That's why you'll find more at my shop than just classic crochet work or jewelry — always new creative ideas and projects, made with a lot of love.",
|
||
],
|
||
},
|
||
{
|
||
title: "Quality with heart",
|
||
paragraphs: [
|
||
"To me, handmade means personality.",
|
||
"No product comes off an assembly line.",
|
||
"Every single piece is carefully planned, crafted and checked by me.",
|
||
"I place special value on high-quality materials, clean workmanship, loving details, lasting quality and unique designs.",
|
||
],
|
||
},
|
||
{
|
||
title: "More than just a hobby",
|
||
paragraphs: [
|
||
"Behind my creativity lies far more than yarn and beads.",
|
||
"I'm someone who puts her whole heart into what she does. When I do something, I do it with passion, patience and the wish to create something special.",
|
||
"It makes me happy when my work brings joy to others — whether as a gift for someone special or as a little treat for yourself.",
|
||
],
|
||
},
|
||
{
|
||
title: "My little heart-shop",
|
||
paragraphs: [
|
||
"That's why my shop isn't just a place where products are sold.",
|
||
"It's a part of me.",
|
||
"Countless hours of work, creativity, heart and so much love go into every single piece here.",
|
||
"That's exactly what makes each piece unique.",
|
||
],
|
||
},
|
||
{
|
||
title: "Thank you for being here",
|
||
paragraphs: [
|
||
"Thank you so much for taking the time to get to know my little creative world and for supporting my passion.",
|
||
"I wish you lots of joy browsing, and I hope you find exactly the one piece that makes your heart skip a beat.",
|
||
],
|
||
},
|
||
],
|
||
closing: "Handmade with love – stitch by stitch and bead by bead.",
|
||
},
|
||
shipping: {
|
||
eyebrow: "Shipping & Payment", title: "Shipping & Payment",
|
||
shippingTitle: "📦 Shipping",
|
||
shippingItems: [
|
||
"Shipped exclusively via DHL", "Countries we deliver to: Germany, Austria, Switzerland, Luxembourg",
|
||
"Delivery time: 2–7 business days", "Shipping costs are set per product and further tiered by order value & country",
|
||
"Free shipping from €75 order value", "Shipping only starts after payment has been received",
|
||
"Deliveries to Switzerland may be subject to Swiss import VAT and customs fees, payable by you as the recipient",
|
||
],
|
||
paymentTitle: "💳 Payment methods", paymentItems: ["PayPal", "Klarna", "Credit card (Visa & Mastercard)", "Bank transfer (prepayment)"],
|
||
todoNote: "Concrete shipping-cost tiers per country/order value will be added once VanVan finalizes the DHL terms.",
|
||
},
|
||
cart: {
|
||
eyebrow: "Cart", title: "Your cart", empty: "Your cart is still empty.",
|
||
subtotal: "Subtotal", shipping: "Shipping", shippingCalculated: "calculated at checkout",
|
||
total: "Total", remaining: (v: string) => `${v} more for free shipping.`, freeShipping: "🩵 You qualify for free shipping!",
|
||
toCheckout: "Continue to checkout", remove: "Remove", perItem: "/ item",
|
||
discount: "Discount", mengenrabatt: (p: string) => `Bulk discount -${p}%`,
|
||
mengenrabattTier: (ab: string, p: string) => `from ${ab} pcs -${p}%`,
|
||
couponLabel: "🎟️ Coupon code", couponPlaceholder: "Enter code", couponApply: "Apply", couponRemove: "Remove",
|
||
buyNow: "Buy now", keptInCart: "Stays in cart, not purchased yet",
|
||
couponInvalid: "Code invalid or expired.", couponApplied: (code: string) => `Coupon "${code}" applied`,
|
||
partnerDiscount: "🤝 Partner discount",
|
||
partnerCodeLabel: "🤝 Partner discount code", partnerCodePlaceholder: "Enter code", partnerCodeApply: "Apply", partnerCodeRemove: "Remove",
|
||
partnerCodeInvalid: "Code invalid or expired.", partnerCodeApplied: (code: string) => `Partner code "${code}" applied`,
|
||
loyaltyDiscount: "🎁 Loyalty reward (-20%)",
|
||
loyaltyBannerTitle: "🎁 Your loyalty reward is ready!",
|
||
loyaltyBannerText: "Pick the item below that you'd like 20% off.",
|
||
loyaltySelectLabel: "Select for 20% loyalty reward",
|
||
loyaltySelectedLabel: "🎁 -20% loyalty reward applied",
|
||
gratisPraemie: "Free reward from your subscription",
|
||
aboDiscount: "🎫 Subscription discount",
|
||
},
|
||
checkout: {
|
||
eyebrow: "Checkout", title: "Complete your order",
|
||
todoNote: "Phase 1 – demo checkout. No real payment is processed yet. Full integration with PayPal, Klarna and bank transfer, plus order management, follow in Phase 2 (Cloudflare Worker + D1, see the tech-stack decision in the project vault).",
|
||
step1: "2. Contact & shipping address", email: "Email", firstName: "First name", lastName: "Last name",
|
||
street: "Street & house number", zip: "ZIP code", city: "City", country: "Country",
|
||
step2: "1. Payment method",
|
||
step3: "3. Order summary", agbPrefix: "I have read the", agbLink: "terms & conditions", agbSuffix: "and accept them.",
|
||
revocationPrefix: "I have taken note of the", revocationLink: "withdrawal notice", revocationAnd: "and",
|
||
privacyLink: "privacy policy", revocationSuffix: ".",
|
||
bankTransfer: "Bank transfer (prepayment)", orderButton: "Order now, subject to payment", emptyCartAlert: "Your cart is empty.",
|
||
creditCard: "Credit card", creditCardSub: "Visa & Mastercard",
|
||
payPalHint: "Pay securely and instantly with your PayPal account.",
|
||
klarnaHint: "Invoice, installments or instant transfer – choose how you'd like to pay with Klarna.",
|
||
klarnaConnect: "Continue to Klarna →", klarnaConnecting: "Connecting to Klarna …", klarnaConnected: "Connected to Klarna (demo)",
|
||
cardHint: "Your card details are transmitted securely.", cardNumber: "Card number", cardExpiry: "Expiry", cardCvc: "CVC",
|
||
bankHintReal: "Please transfer the invoice amount to the following account after completing your order. Your items ship once payment is received.",
|
||
bankPlaceholder: "Bank details will be sent to you by email after your order.",
|
||
bankHolder: "Account holder", bankIban: "IBAN", bankBic: "BIC", bankBankName: "Bank",
|
||
shippingHintTitle: "Shipping note",
|
||
shippingHint: "Shipped exclusively via DHL to Germany, Austria, Switzerland and Luxembourg. Delivery time 2–7 business days. Free shipping from €75. Shipping only starts after payment has been received.",
|
||
shippingLink: "More on shipping & payment →",
|
||
thankYouEyebrow: "Thank you", thankYouTitle: "Your order has been received",
|
||
thankYouLead: "This is currently a demo confirmation (Phase 1, no real payment processing). Once the real checkout is live, you'll receive a proper order confirmation here and by email.",
|
||
continueShopping: "Continue browsing", total: "Total", free: "free",
|
||
},
|
||
account: {
|
||
eyebrow: "My Account", title: "Sign in or check out as a guest",
|
||
todoNote: "Phase 1 – demo sign-in without real password checking: any email address works, the password field is a preview only. Orders shown in the account are example data. A real login with a database is coming in Phase 2.",
|
||
loginTitle: "Sign in", email: "Email", password: "Password", loginButton: "Sign in", forgotPassword: "Forgot password?",
|
||
newTitle: "New here?", newText: "Create an account to keep order history, wishlist and tracking in one place – or simply check out as a guest, no account needed.",
|
||
guestButton: "Continue shopping as guest",
|
||
loginError: "Please enter an email address.",
|
||
socialHeading: "Sign in faster with",
|
||
socialGoogle: "Sign in with Google", socialApple: "Sign in with Apple", socialPaypal: "Sign in with PayPal",
|
||
socialComingSoon: "Coming in Phase 2: once the real account backend is live, you'll be able to sign in here directly — no new password needed.",
|
||
orDivider: "or with email",
|
||
showPassword: "Show password", hidePassword: "Hide password",
|
||
rememberMe: "Keep me signed in",
|
||
consentPrefix: "By signing in you accept our", consentLink: "privacy policy", consentSuffix: ".",
|
||
previewLink: "👁 Preview: what signed-in customers see",
|
||
previewName: "Marie L.",
|
||
},
|
||
accountDash: {
|
||
eyebrow: "My Account", greeting: (name: string) => `Hello ${name} 🩵`, lead: "Good to see you again. Here you'll find all your orders, your wishlist and your details at a glance.",
|
||
previewNote: "Phase 1: your sign-in, your profile and your reviews are already genuinely saved on this device. Only the orders below are example data for design purposes — real orders arrive in Phase 2 with payment integration and a database (Cloudflare Worker + D1).",
|
||
notLoggedIn: "You're not signed in — redirecting you to sign in …",
|
||
logout: "Sign out",
|
||
navLabel: "Account section navigation",
|
||
statOrders: "Orders", statWishlist: "Wishlist", statOpen: "Open shipments", statData: "My details", statLoyalty: "Loyalty reward",
|
||
datenHeaderBtn: "👤 My details",
|
||
loyaltyTitle: "🎁 My loyalty reward",
|
||
loyaltyProgressTemplate: "Your order progress: {cur} of {ziel} orders",
|
||
loyaltyRemainingOne: "You need 1 more order to get 20% off an item of your choice.",
|
||
loyaltyRemainingOther: "You need {n} more orders to get 20% off an item of your choice.",
|
||
loyaltyUnlockedTitle: "🎉 Loyalty reward unlocked",
|
||
loyaltyUnlockedText: "You've completed ten orders and get 20% off an item of your choice on your next order.",
|
||
loyaltyGoToCart: "Choose item in cart →",
|
||
loyaltyExplainer: "Only fully completed and paid orders count. After redemption your progress starts again from zero.",
|
||
loyaltyLockedTitle: "🔒 Only available with an active subscription",
|
||
loyaltyLockedText: "The loyalty reward is an extra for our subscription members. Subscribe to start collecting orders towards your 20% reward.",
|
||
loyaltyLockedBtn: "Go to subscription →",
|
||
statAbo: "My Subscription",
|
||
aboHeaderBtn: "🎫 Manage my subscription",
|
||
aboTitle: "🎫 My Subscription",
|
||
aboIntro: "Get a permanent discount on every order and free teddies as a thank-you — automatically, every month.",
|
||
aboNameKlein: "Small plan", aboNameMittel: "Medium plan", aboNameGross: "Large plan",
|
||
aboPreisSuffix: "/ month",
|
||
aboVorteilKlein: "5% off every order. After each full subscription year: 1 small teddy for free.",
|
||
aboVorteilMittel: "10% off every order. After each full subscription year: 1 large teddy for free.",
|
||
aboVorteilGross: "20% off every order. A small teddy every 6 months, plus a large teddy after every full year.",
|
||
aboAbschliessenBtn: "Subscribe",
|
||
aboAktivesLabel: "✓ Your current plan",
|
||
aboWechselnBtn: "Switch to this plan",
|
||
aboNichtBuchbar: "Currently unavailable",
|
||
aboStatusTitle: "Your subscription status",
|
||
aboFieldStufe: "Plan", aboFieldPreis: "Monthly price", aboFieldRabatt: "Included discount",
|
||
aboFieldStart: "Start date", aboFieldNaechsteZahlung: "Next payment", aboFieldLaufzeit: "Duration so far",
|
||
aboMonateSuffix: "months",
|
||
aboFortschrittKleinTemplate: "🧸 {n} more month(s) until your next small teddy",
|
||
aboFortschrittGrossTemplate: "🧸 {n} more month(s) until your next large teddy",
|
||
aboPraemienErhaltenTemplate: "Already received: {klein}× small teddy, {gross}× large teddy",
|
||
aboPraemienVerfuegbarTitle: "🎉 Available rewards",
|
||
aboKeinePraemienVerfuegbar: "No reward available to redeem right now.",
|
||
aboEinloesenBtn: "Redeem now",
|
||
aboEinloesenKleinLabel: "Small teddy", aboEinloesenGrossLabel: "Large teddy",
|
||
aboEingeloestHinweis: "🧸 Added to your cart!",
|
||
aboZahlungSimBtn: "Simulate monthly payment (demo)",
|
||
aboZahlungSimHinweis: "Phase 1: there is no real recurring payment running in the background yet. Use this button to test what happens on the next successful monthly payment.",
|
||
aboKuendigenBtn: "Cancel subscription",
|
||
aboKuendigenConfirm: "Really cancel your subscription? Your benefits stay active until the end of the paid period.",
|
||
aboGekuendigtHinweisTemplate: "Cancelled on {datum}. Your benefits stay active until the end of the paid period, then your subscription ends automatically.",
|
||
aboWechselTitle: "Switch to a different plan",
|
||
aboBenachrichtigungenTitle: "🔔 Notifications",
|
||
aboKeineBenachrichtigungen: "No notifications yet — updates about your subscription will appear here automatically, e.g. every successful payment, a new teddy reward, or a plan switch.",
|
||
aboNichtAktivBadge: "⏸ Discount paused",
|
||
aboExplainer: "All data is currently stored securely on this device (Phase 1). A cross-device database follows with real payment integration in Phase 2.",
|
||
notifAboAbgeschlossen: "Your subscription was successfully set up — welcome! 🎉",
|
||
notifAboGewechselt: "You successfully switched to a different plan ({stufe}).",
|
||
notifAboZahlungErfolgreich: "Your monthly subscription payment was successful. ✅",
|
||
notifAboTeddyKleinFrei: "🧸 New reward unlocked: a small teddy is waiting for you!",
|
||
notifAboTeddyGrossFrei: "🧸 New reward unlocked: a large teddy is waiting for you!",
|
||
notifAboBaldPraemie: "🧸 Almost there — your next teddy reward is waiting next month!",
|
||
notifAboGekuendigt: "You cancelled your subscription. Your benefits stay active until the end of the paid period.",
|
||
notifAboTeddyKleinEingeloest: "🧸 Small teddy redeemed — it's now in your cart for free.",
|
||
notifAboTeddyGrossEingeloest: "🧸 Large teddy redeemed — it's now in your cart for free.",
|
||
noOpenOrders: "No open shipments right now — every order has already arrived. 🎉",
|
||
noArrivedOrders: "No delivered orders yet — your orders will appear here once they've arrived.",
|
||
ordersTitle: "📦 My orders",
|
||
orderNo: "Order", orderDate: "Ordered on", orderTotal: "Total", orderItems: "Items",
|
||
trackingLabel: "Tracking", trackingBtn: "Track shipment →", invoiceBtn: "View invoice", reorderBtn: "Order again",
|
||
invoiceTitle: "Invoice", invoiceNumberLabel: "Invoice number", invoiceDateLabel: "Invoice date",
|
||
invoiceSellerLabel: "Seller", invoiceBillToLabel: "Billed to",
|
||
invoiceItemLabel: "Item", invoiceQtyLabel: "Qty", invoiceUnitPriceLabel: "Unit price", invoiceSumLabel: "Total amount",
|
||
invoiceCloseBtn: "Close", invoiceDownloadBtn: "Download invoice", invoiceDownloading: "Preparing …",
|
||
statusBezahlt: "Paid", statusBearbeitung: "In progress", statusVersandVorbereitet: "Preparing shipment", statusVersendet: "Shipped", statusAbgeschlossen: "Completed",
|
||
wishlistTitle: "🩵 My wishlist", wishlistEmpty: "Your wishlist is still empty — browse the shop and save your favourites with the heart icon.",
|
||
recentTitle: "🕘 Recently viewed",
|
||
profileTitle: "👤 My details", profileName: "Name", profileEmail: "Email", profileAddress: "Delivery address", profileEdit: "Edit details",
|
||
reviewBtn: "🩵 Write a review", reviewedBadge: "✓ Reviewed",
|
||
nameSave: "Save", nameSaved: "Saved ✓",
|
||
usernameLabel: "Username (nickname)", usernameHint: "Optional — a bonus if you'd rather be shown with a nickname instead of your name.", usernameSave: "Save", usernameSaved: "Saved ✓",
|
||
photoLabel: "Profile photo", photoChange: "Change photo", photoRemove: "Remove",
|
||
},
|
||
},
|
||
ch: {
|
||
nav: { shop: "Shop", sale: "Aktion", creative: "Über d'Kreativi", faq: "FAQ", contact: "Kontakt", account: "Mis Konto", login: "Aamälde" },
|
||
accountMenu: { myAccount: "Mis Konto", logout: "Abmälde" },
|
||
topbar: "Gratisversand ab 75 € innerhalb DE/AT/CH/LU",
|
||
footer: {
|
||
tagline: "Vo Hang gmacht mit Härz – Sächeli zum Verschänke und Sälber Bhalte.",
|
||
shopHeading: "Shop", serviceHeading: "Service", legalHeading: "Rechtligs",
|
||
shipping: "Versand & Zahlig", account: "Mis Konto",
|
||
copyright: "Einzelunternehmen · Kleinunternehmer gmäss §19 UStG (dütsches Rächt)",
|
||
legalNoteTitle: "Hinwys zu de rächtliche Syte",
|
||
legalNote: "Impressum, Datenschutz, AGB, Widerrufsbelehrig und s'Muster-Widerrufsformular gits us rächtliche Gründ nur uf Dütsch.",
|
||
},
|
||
badge: { neu: "Neu", bestseller: "Bestseller", sale: "Aktion", handgemacht: "Handgmacht", ausverkauft: "Usverkauft" },
|
||
common: {
|
||
addToCart: "In Warenchorb", soldOut: "Usverkauft", addedToCart: "Zum Warenchorb dezuegfüegt ✓",
|
||
onlyXLeft: (n: string) => `Nume no ${n} a Lager`, maxInCart: "D'maximal verfügbari Mengi isch scho im Warenchorb", maxInCartShort: "Scho im Warenchorb",
|
||
browseShop: "Jetzt use luege", viewAll: "Alles aluege →", viewAllSale: "Alli Aktione →",
|
||
toShop: "Zum Shop →", moreAboutMe: "Meh über mich →", discoverNow: "Jetzt aluege",
|
||
installApp: "App installiere", installAppShort: "Installiere",
|
||
vatNote: "Gemäss §19 UStG (dütsches Rächt) wird kei Umsatzsteuer berechnet und usgwiese.",
|
||
allPricesPlusShipping: "Alli Pryse zzgl. Versand.", plusShipping: "zzgl. Versand",
|
||
quantity: "Aazahl", photoSoon: "Produktfoto chunnt bald", portraitSoon: "Porträtfoto vo VanVan chunnt bald",
|
||
prevPhoto: "Vorherigs Foto", nextPhoto: "Nächschts Foto",
|
||
handmadeBadge: "🩵 Vo Hang gmacht",
|
||
},
|
||
product: {
|
||
articleNo: "Artikelnummer", material: "Material", size: "Grösse", colors: "Farbe",
|
||
included: "Lieferumfang", care: "Pflegehinwys", delivery: "Lieferzyt",
|
||
recommendations: "Das chönnt dir au gfalle",
|
||
todoFields: "GPSR-Hinwys, Warnhinwys, Hersteller/Herstelleradrässe und Produktvideo werded ergänzt, sobald echti Produktdate vo VanVan da sind (Phase 2, Adminbereich).",
|
||
photoNote: "echti Fotis macht VanVan später drby",
|
||
reviewsTitle: "Kundebewärtige", noReviews: "No kei Bewärtige für das Produkt — sei du dr Erschti!",
|
||
reviewCount: (n: number) => `${n} Bewärtig${n === 1 ? "" : "e"}`,
|
||
writeReviewTitle: "🩵 Dini Bewärtig", yourRating: "Dini Bewärtig", yourReview: "Was hat dir gfalle? (optional)",
|
||
yourName: "Din Name", submitReview: "Bewärtig veröffentliche", reviewSaved: "Danke für dini Bewärtig! ✓",
|
||
reviewNeedsRating: "Bitte wähl 1–5 Herzli us.", reviewFromOrder: (nr: string) => `Du bewärtisch dini Bstellig ${nr}.`,
|
||
loginHintReview: "Aagmäldet als", notLoggedInReview: "Du bisch nid aagmäldet — dini Bewärtig wird mit em iigäbene Name veröffentlicht.",
|
||
},
|
||
shop: {
|
||
title: "Alli Produkt", lead: "Lueg dr alli vo Hang gmachte Sächeli a – filtere und sortiere, wie's dir passt.",
|
||
filters: "Filter", allCategories: "Alli Kategorie", priceUpTo: "Pris bis", priceUpToValue: (v: number) => `bis ${v} €`,
|
||
onlyAvailable: "Nur wo grad a Lager isch", filterNote: "Material- und Farbfilter chöme, sobald meh Produkt im Sortiment sind.",
|
||
sortNew: "Neu", sortBestseller: "Bestseller", sortPriceAsc: "Pris ufsteigend", sortPriceDesc: "Pris absteigend", sortRating: "Beschti Bewärtig",
|
||
resultCount: (n: number) => `${n} Produkt`, noResults: "Kei Produkt gfunde – bitte Filter apasse.",
|
||
breadcrumbShop: "Shop", categoryEmpty: "In däre Kategorie sind grad no kei Produkt hinterlegt – lueg spöter nomal verbi.",
|
||
categoryLabel: "Kategorie", productSingular: "Produkt", productPlural: "Produkt", sortLabel: "Sortiere", subcategoriesLabel: "Unterkategorie", mainCategoryLabel: "Hauptkategorie", subcategoryEmpty: "Für das da stellt VanVan bald die erschte Produkt i – lueg bald wieder verbi.", moreAbout: "Meh über", moreVariants: "Witeri Modell",
|
||
moreAboutCharacterLead: "Wenn du meh über mich erfahre witsch, dänn klick",
|
||
minRatingLabel: "Mindestbewärtig", minRatingAny: "Alli Bewärtige",
|
||
},
|
||
reviews: {
|
||
heading: "Das säge eusi Kunde", lead: "Echti Rückmäldige zu eusne vo Hang gmachte Sächeli.",
|
||
basedOn: (n: number) => `basierend uf ${n} Bewärtig${n === 1 ? "" : "e"}`,
|
||
toProduct: "Zum Produkt →",
|
||
},
|
||
sale: {
|
||
eyebrow: "% Aktion", title: "Aktuelli Aktion", lead: "Zytlich begrenzti Rabatt uf uswählti, vo Hang gmachti Sächeli.",
|
||
empty: "Momentan lauft käni Aktion – lueg spöter nomal verbi.",
|
||
},
|
||
faq: {
|
||
title: "Häufigi Frage",
|
||
items: [
|
||
{ q: "Wie lang geits bis d'Lieferig chunnt?", a: "Normalerwiis 2–7 Werktäg innerhalb Dütschland, Öschterrych, dr Schwiz und Luxemburg. Bi Sondranfertigunge cha's chli länger gah – das staht denn direkt uf dr Produktsyte." },
|
||
{ q: "Ab wenn isch dr Versand gratis?", a: "Ab emene Warewärt vo 75 € schicke mir innerhalb vo de belieferte Länder gratis mit DHL. Drunder richte sich d'Versandchoschte nach Produkt, Land und Warewärt – Details dezue findsch uf dr Syte Versand & Zahlig." },
|
||
{ q: "Cha ich Sonderwünsch oder öppis Individuells bstelle?", a: "Ja, gärn! Schrib eus eifach übers Kontaktformular – mir luege, was geit." },
|
||
{ q: "Wie pfläg ich mini vo Hang gmachte Sächeli?", a: "D'gnaue Pflegehinwys stöh jewils uf dr Produktsyte. Wil eusi Sächeli vo Hang ghäklet oder gstrickt sind, empfähle mir grundsätzlich schonendi Handwösch bi niedriger Temperatur, kei Tumbler und liegend a dr Luft träechne, dass Form und Fase erhalte bliebe." },
|
||
{ q: "Weli Zahligsarte werded akzeptiert?", a: "PayPal, Klarna, Kreditkarte (Visa & Mastercard) und Banküberwysig (Vorusszahlig)." },
|
||
{ q: "Cha ich mini Bschtellig zrugg gäh?", a: "Es gilt das gsetzlichi 14-tägig Widerrufsrächt (lueg üsi Widerrufsbelehrig aa). Bi Sondranfertigunge, wo speziell uf dich gmacht sind, cha das Widerrufsrächt gsetzlich usgschlosse si, bi Standardartikel us eusem Sortimänt gilt's regulär." },
|
||
{ q: "Muess ich Umsatzsteuer zahle?", a: "Nei. Van's DIY & Bastelbedarf isch Kleinunternehmer gemäss §19 UStG – es wird kei Umsatzsteuer berechnet und usgwiese." },
|
||
{ q: "Bruuch ich es Kundekonto zum Bstelle?", a: "Nei, du chasch au eifach als Gast bstelle. Es Konto lohnt sich aber für d'Bstellhistorie, d'Wunschlischte und d'Sändigsverfolgig a eim Ort." },
|
||
],
|
||
},
|
||
contact: {
|
||
title: "Schrib eus", lead: "Hesch Frage zu emene Produkt, dinere Bschtellig oder öppis Spezielles? Mäld dich gärn!",
|
||
name: "Name", email: "E-Mail", subject: "Betreff", message: "Nachricht",
|
||
gdprPrefix: "Ich ha d'", gdprLink: "Datenschutzerklärig", gdprSuffix: "gläse und bin mit dr Verarbeitig vo mine Date iverstande.",
|
||
send: "Nachricht abschicke", sentDemo: "Merci! (Demo – noch keine echte Übertragung in Phase 1)",
|
||
todoNote: "TODO Phase 2: Formular a e echti Backend-/E-Mail-Aabindig (Cloudflare Worker) aaschliesse. Momentan ohni echte Versand.",
|
||
directTitle: "Direkte Kontaktdate", emailPlaceholderNote: "(Platzhalter-Adrässe)", orderNote: "Für Bstellfrage bitte d'Bstellnummere aagäh.",
|
||
responseTitle: "Antwortzyt", responseNote: "Meistens innerhalb vo 1–2 Werktage.",
|
||
},
|
||
about: {
|
||
eyebrow: "Über d'Kreativi", title: "Hoi zäme, ich bin VanVan 🩵",
|
||
lead: "Willkomme i minere chline Werkstatt! Da entsteit alles, wo du im Shop findsch, vo Hang – Stich für Stich, Perle für Perle.",
|
||
valuesTitle: "Was mir wichtig isch",
|
||
values: [
|
||
{ icon: "🧵", title: "Handarbeit", text: "Kes Masseprodukt – jedes Sächeli wird einzeln und mit Sorgfalt gmacht." },
|
||
{ icon: "🩵", title: "Qualität", text: "Sorgfältig uswählti Materialie für hebigi, schöni Ergebnis." },
|
||
{ icon: "🎁", title: "Persönlich", text: "Öb Gschänk oder für dich sälber – jedes Produkt treit es Stückli Härzbluet." },
|
||
],
|
||
story: [
|
||
{
|
||
title: "Mini Reis het aafange mit-ere einzige Masche",
|
||
paragraphs: [
|
||
"Vor öppe sächs Jahr han ich mini Leidenschaft fürs Häkle entdeckt. Aagfange het alles us purer Neugier. Ohni Kurs oder Vorchänntnis han ich mer Schritt für Schritt alles sälber bybracht.",
|
||
"Mit jeder neue Masche, jedem chline Fähler und jedem fertige Projekt isch nid nur mis Chönne gwachsen, sondern au mini Begeisterig für das wundervolle Handwerch.",
|
||
"Hüt isch Häkle für mich viu meh als nur es Hobby. Es isch min kreative Usgliich, e Möglichkeit, Idee Wirklichkeit werde z'lah und Lüt mit liebevoll gstaltete Unikate es Lächle is Gsicht z'zaubere.",
|
||
"Bsungers d'Herstellig vo Amigurumis begeistert mich geng wieder vo Neuem. Es fasziniert mich, wie us emene eifache Chnaul Wolle nach und nach chlini Persönlichkeite entstöh – jedi einzelni mit ihrem ganz eigene Charme.",
|
||
],
|
||
},
|
||
{
|
||
title: "Kreativität känt kei Grenze",
|
||
paragraphs: [
|
||
"Näben em Häkle han ich au mini Leidenschaft für sälber gmachte Modeschmuck entdeckt.",
|
||
"Mit viu Sorgfalt fertig ich Armbändel, Halschette, Schlüsselaahänger und witeri Accessoires a. Debi ha ich's gärn, verschiedeni Materialie, Farbe und Aahänger mitenand z'kombiniere und geng wieder neui Designs entstöh z'lah.",
|
||
"Jedes Schmuckstück söll nid nur schön uszgseh, sondern sim neue Bsitzer lang Freud bringe.",
|
||
"Kreativität begleitet mich scho mis ganze Läbe. Drum findsch bi mir nid nur klassischi Häkelarbeite oder Schmuck, sondern geng wieder neui kreativi Idee und Projäkt, wo mit viu Liebi entstöh.",
|
||
],
|
||
},
|
||
{
|
||
title: "Qualität mit Härz",
|
||
paragraphs: [
|
||
"Für mich bedütet Handarbeit Persönlichkeit.",
|
||
"Kes Produkt entsteit am Fliessband.",
|
||
"Jedes einzelne Stück wird vo mir sorgfältig plant, gfertigt und kontrolliert.",
|
||
"Debi leg ich bsundere Wärt uf hochwärtigi Materialie, suberi Verarbeitig, liebevolli Detail, hebigi Qualität und einzigartigi Designs.",
|
||
],
|
||
},
|
||
{
|
||
title: "Meh als nur es Hobby",
|
||
paragraphs: [
|
||
"Hinter minere Kreativität steckt viu meh als Wolle und Perle.",
|
||
"Ich bi e Mensch, wo mit ganzem Härz debi isch. Wenn ich öppis mach, denn mit Leidenschaft, Geduld und em Wunsch, öppis Bsunders z'erschaffe.",
|
||
"Es mached mich glücklich, wenn mini Wärch andere Lüt Freud schänke – sig's als Gschänk für en liebe Mensch oder eifach als chlini Ufmerksamkeit für sich sälber.",
|
||
],
|
||
},
|
||
{
|
||
title: "Min chline Härzens-Lade",
|
||
paragraphs: [
|
||
"Min Lade isch drum nid eifach nur en Ort, wo Produkt verchauft werde.",
|
||
"Er isch en Teil vo mir.",
|
||
"Da steckn unzählegi Stund Arbet, Kreativität, Härzbluet und ganz viu Liebi i jedem einzelne Wärch.",
|
||
"Genau das mached jedes Stück einzigartig.",
|
||
],
|
||
},
|
||
{
|
||
title: "Merci, dass du da bisch",
|
||
paragraphs: [
|
||
"Merci vilmal, dass du dir d'Zyt nimmsch, mini chlini kreativi Wält kenne z'lehre und mini Leidenschaft z'unterstütze.",
|
||
"Ich wünsche dir ganz viu Freud bim Stöbere und hoffe, dass du genau das eint Stück findsch, wo dis Härz höcher schla lat.",
|
||
],
|
||
},
|
||
],
|
||
closing: "Mit Liebi vo Hang gmacht – Masche für Masche und Perle für Perle.",
|
||
},
|
||
shipping: {
|
||
eyebrow: "Versand & Zahlig", title: "Versand & Zahlig",
|
||
shippingTitle: "📦 Versand",
|
||
shippingItems: [
|
||
"Versand nume mit DHL", "Lieferländer: Dütschland, Öschterrych, d'Schwiz, Luxemburg",
|
||
"Lieferzyt: 2–7 Werktäg", "Versandchoschte sind pro Produkt hinterlegt und zuesätzlich nach Warewärt & Land gstaffelt",
|
||
"Gratisversand ab 75 € Warewärt", "Dr Versand geit erscht los, wenn d'Zahlig igange isch",
|
||
"Bi Liefrige i d'Schwiz chöi schwyzerischi Iifuehrumsatzsteuer und Zollgebühre afalle, wo du als Empfänger:in trage muesch",
|
||
],
|
||
paymentTitle: "💳 Zahligsarte", paymentItems: ["PayPal", "Klarna", "Kreditkarte (Visa & Mastercard)", "Banküberwysig (Vorusszahlig)"],
|
||
todoNote: "Di gnaui Versandchoschte-Staffle je Land/Warewärt wird ergänzt, sobald VanVan di definitive DHL-Konditione festgleit hät.",
|
||
},
|
||
cart: {
|
||
eyebrow: "Warenchorb", title: "Din Warenchorb", empty: "Din Warenchorb isch no leer.",
|
||
subtotal: "Zwüschesumme", shipping: "Versand", shippingCalculated: "wird im Checkout berechnet",
|
||
total: "Total", remaining: (v: string) => `No ${v} bis zum Gratisversand.`, freeShipping: "🩵 Du übercho't Gratisversand!",
|
||
toCheckout: "Wyter zum Checkout", remove: "Ewägmache", perItem: "/ Stuck",
|
||
discount: "Rabatt", mengenrabatt: (p: string) => `Mengerabatt -${p}%`,
|
||
mengenrabattTier: (ab: string, p: string) => `ab ${ab} Stuck -${p}%`,
|
||
couponLabel: "🎟️ Gutschy-Code", couponPlaceholder: "Code igäh", couponApply: "Ilöse", couponRemove: "Ewägmache",
|
||
buyNow: "Jetzt chaufe", keptInCart: "Blibt im Warenchorb, wird no nid chauft",
|
||
couponInvalid: "Code ungültig oder abgloffe.", couponApplied: (code: string) => `Gutschy „${code}" iglöst`,
|
||
partnerDiscount: "🤝 Partner-Rabatt",
|
||
partnerCodeLabel: "🤝 Partner-Rabattcode", partnerCodePlaceholder: "Code igäh", partnerCodeApply: "Ilöse", partnerCodeRemove: "Ewägmache",
|
||
partnerCodeInvalid: "Code ungültig oder abgloffe.", partnerCodeApplied: (code: string) => `Partner-Code „${code}" iglöst`,
|
||
loyaltyDiscount: "🎁 Treuebonus (-20 %)",
|
||
loyaltyBannerTitle: "🎁 Din Treuebonus isch parat!",
|
||
loyaltyBannerText: "Wähl unde dr Artikel us, uf dä du 20 % Rabatt übercho.",
|
||
loyaltySelectLabel: "Für 20 % Treuebonus uswähle",
|
||
loyaltySelectedLabel: "🎁 -20 % Treuebonus aagwändet",
|
||
gratisPraemie: "Gratisprämie us dim Abo",
|
||
aboDiscount: "🎫 Abo-Rabatt",
|
||
},
|
||
checkout: {
|
||
eyebrow: "Checkout", title: "Bschtellig abschliesse",
|
||
todoNote: "Phase 1 – Demo-Checkout. Es git no kei echti Zahlig. D'vollständigi Aabindig a PayPal, Klarna und Banküberwysig sowie d'Bstellverwaltig chöme i Phase 2.",
|
||
step1: "2. Kontakt & Lieferadrässe", email: "E-Mail", firstName: "Vorname", lastName: "Nachname",
|
||
street: "Strasse & Huusnummere", zip: "PLZ", city: "Ort", country: "Land",
|
||
step2: "1. Zahligsart",
|
||
step3: "3. Bschtellübersicht", agbPrefix: "Ich ha d'", agbLink: "AGB", agbSuffix: "gläse und akzeptiere si.",
|
||
revocationPrefix: "Ich ha d'", revocationLink: "Widerrufsbelehrig", revocationAnd: "und d'",
|
||
privacyLink: "Datenschutzerklärig", revocationSuffix: "zur Kenntnis gnoh.",
|
||
bankTransfer: "Banküberwysig (Vorusszahlig)", orderButton: "Jetzt zahligspflichtig bstelle", emptyCartAlert: "Din Warenchorb isch leer.",
|
||
creditCard: "Kreditkarte", creditCardSub: "Visa & Mastercard",
|
||
payPalHint: "Zahl sicher und schnäll dirräkt mit dim PayPal-Konto.",
|
||
klarnaHint: "Rächnig, Ratechauf oder Sofortiübrwysig – wähl bi Klarna, wie du zahle wosch.",
|
||
klarnaConnect: "Wyter zu Klarna →", klarnaConnecting: "Verbindet mit Klarna …", klarnaConnected: "Verbindig zu Klarna hergstellt (Demo)",
|
||
cardHint: "Dini Kartedate werde sicher übertreit.", cardNumber: "Kartenummere", cardExpiry: "Gültig bis", cardCvc: "CVC",
|
||
bankHintReal: "Bitte überwys dr Rächnigsbetrag nach Bstellabschluss uf das Konto. Dini Ware wird nach Zahligsigang verschickt.",
|
||
bankPlaceholder: "D'Bankverbindig wird dir nach Bstelligang per E-Mail zuegschickt.",
|
||
bankHolder: "Kontoinhaber:in", bankIban: "IBAN", bankBic: "BIC", bankBankName: "Bank",
|
||
shippingHintTitle: "Versandhinwys",
|
||
shippingHint: "Versand nume per DHL nach Dütschland, Öschterrych, d'Schwiz und Luxemburg. Lieferzyt 2–7 Werktäg. Gratisversand ab 75 €. Dr Versand geit erscht los, wenn d'Zahlig igange isch.",
|
||
shippingLink: "Meh zu Versand & Zahlig →",
|
||
thankYouEyebrow: "Merci", thankYouTitle: "Dini Bschtellig isch igange",
|
||
thankYouLead: "Das isch momentan e Demo-Bstätigung (Phase 1, ohni echti Zahligsabwicklig). Sobald dr echt Checkout live isch, überchunnsch du da und per E-Mail e richtigi Bstellbstätigung.",
|
||
continueShopping: "Wyter luege", total: "Total", free: "gratis",
|
||
},
|
||
account: {
|
||
eyebrow: "Mis Konto", title: "Aamälde oder als Gast bstelle",
|
||
todoNote: "Phase 1 – Demo-Aamäldig ohni echti Passwortprüefig: jedi E-Mail-Adrässe funktioniert, s'Passwort-Fäld isch nume Vorschau. D'Bstellige im Konto sind Bispieldate. E echti Aamäldig mit Datebank chunnt i Phase 2.",
|
||
loginTitle: "Aamälde", email: "E-Mail", password: "Passwort", loginButton: "Aamälde", forgotPassword: "Passwort vergässe?",
|
||
newTitle: "Neu da?", newText: "Leg es Konto a, für Bstellhistorie, Wunschlischte und Sändigsverfolgig a einem Ort z'ha – oder bstell eifach als Gast, ganz ohni Konto.",
|
||
guestButton: "Als Gast wyter yichaufe",
|
||
loginError: "Bitte gib e E-Mail-Adrässe i.",
|
||
socialHeading: "Schnäller aamälde mit",
|
||
socialGoogle: "Mit Google aamälde", socialApple: "Mit Apple aamälde", socialPaypal: "Mit PayPal aamälde",
|
||
socialComingSoon: "Chunnt i Phase 2: Sobald d'echti Konto-Aabindig staht, chasch di da direkt aamälde — ganz ohni nöis Passwort.",
|
||
orDivider: "oder mit E-Mail",
|
||
showPassword: "Passwort azeige", hidePassword: "Passwort verstecke",
|
||
rememberMe: "Aagmäldet bliebe",
|
||
consentPrefix: "Mit dr Aamäldig akzeptiersch üsi", consentLink: "Datenschutzerklärig", consentSuffix: ".",
|
||
previewLink: "👁 Vorschau: so gseht dr Bereich für aagmäldeti Kund:ine us",
|
||
previewName: "Marie L.",
|
||
},
|
||
accountDash: {
|
||
eyebrow: "Mis Konto", greeting: (name: string) => `Hoi ${name} 🩵`, lead: "Schön, bisch wieder da. Da findsch alli dini Bstellige, dini Wunschlischte und dini Date uf ein Blick.",
|
||
previewNote: "Phase 1: dini Aamäldig, dis Profil und dini Bewärtige werde scho jetzt echt uf däm Gerät gspeicheret. Nume d'Bstellige unde sind Bispieldate für d'Gstaltig — echti Bstellige chöme i Phase 2 mit Zahligsaabindig und Datebank (Cloudflare Worker + D1).",
|
||
notLoggedIn: "Du bisch nid aagmäldet — du wirsch zur Aamäldig wytergleitet …",
|
||
logout: "Abmälde",
|
||
navLabel: "Kontobereich-Navigation",
|
||
statOrders: "Bstellige", statWishlist: "Wunschlischte", statOpen: "Offni Sändige", statData: "Mini Date", statLoyalty: "Treuebonus",
|
||
datenHeaderBtn: "👤 Mini Date",
|
||
loyaltyTitle: "🎁 Mis Treuebonus",
|
||
loyaltyProgressTemplate: "Din Bstellfortschritt: {cur} vo {ziel} Bstellige",
|
||
loyaltyRemainingOne: "Dir fehlt no 1 Bstellig, bis du 20 % Rabatt uf en Artikel dinere Wahl übercho.",
|
||
loyaltyRemainingOther: "Dir fehle no {n} Bstellige, bis du 20 % Rabatt uf en Artikel dinere Wahl übercho.",
|
||
loyaltyUnlockedTitle: "🎉 Treuebonus freigschaltet",
|
||
loyaltyUnlockedText: "Du hesch zäh Bstellige abgschlosse und übercho bi dinere nächschte Bstellig 20 % Rabatt uf en Artikel dinere Wahl.",
|
||
loyaltyGoToCart: "Artikel im Warenchorb uswähle →",
|
||
loyaltyExplainer: "Es zelle nume vollständig abgschlosseni und bezahlti Bstellige. Nach dr Ilösig fangt din Fortschritt wieder bi null a.",
|
||
loyaltyLockedTitle: "🔒 Nume mit aktivem Abo verfüegbar",
|
||
loyaltyLockedText: "Dr Treuebonus isch es Extra für üsi Abo-Mitglieder. Schliess es Abo ab, um Bstellige für dini 20 %-Belohnig z sammle.",
|
||
loyaltyLockedBtn: "Zum Abo →",
|
||
statAbo: "Mis Abo",
|
||
aboHeaderBtn: "🎫 Mis Abo verwalte",
|
||
aboTitle: "🎫 Mis Abo",
|
||
aboIntro: "Sicher dir en dauerhafte Rabatt uf jedi Bstellig und hol dir gratis Teddys als Dankeschön — automatisch, jede Monet.",
|
||
aboNameKlein: "Chliises Abo", aboNameMittel: "Mittleres Abo", aboNameGross: "Grosses Abo",
|
||
aboPreisSuffix: "/ Monet",
|
||
aboVorteilKlein: "5 % Rabatt uf jedi Bstellig. Nach jedem volle Abo-Jahr: 1 chliine Teddy gratis.",
|
||
aboVorteilMittel: "10 % Rabatt uf jedi Bstellig. Nach jedem volle Abo-Jahr: 1 grosse Teddy gratis.",
|
||
aboVorteilGross: "20 % Rabatt uf jedi Bstellig. Alli 6 Monet en chliine Teddy, nach jedem volle Jahr zuesätzlich en grosse Teddy.",
|
||
aboAbschliessenBtn: "Abo abschliesse",
|
||
aboAktivesLabel: "✓ Dis aktuells Abo",
|
||
aboWechselnBtn: "Zu dem Abo wechsle",
|
||
aboNichtBuchbar: "Momentan nöd buechbar",
|
||
aboStatusTitle: "Din Abo-Status",
|
||
aboFieldStufe: "Abo-Stufe", aboFieldPreis: "Monetliche Priis", aboFieldRabatt: "Enthaltene Rabatt",
|
||
aboFieldStart: "Startdatum", aboFieldNaechsteZahlung: "Nächschti Zahlig", aboFieldLaufzeit: "Bisherigi Laufziit",
|
||
aboMonateSuffix: "Monet",
|
||
aboFortschrittKleinTemplate: "🧸 No {n} Monet bis zum nächschte chliine Teddy",
|
||
aboFortschrittGrossTemplate: "🧸 No {n} Monet bis zum nächschte grosse Teddy",
|
||
aboPraemienErhaltenTemplate: "Scho erhalte: {klein}× chliine Teddy, {gross}× grosse Teddy",
|
||
aboPraemienVerfuegbarTitle: "🎉 Verfüegbari Prämie",
|
||
aboKeinePraemienVerfuegbar: "Momentan kei Prämie zum Ilöse verfüegbar.",
|
||
aboEinloesenBtn: "Jetzt ilöse",
|
||
aboEinloesenKleinLabel: "Chliine Teddy", aboEinloesenGrossLabel: "Grosse Teddy",
|
||
aboEingeloestHinweis: "🧸 In Warechorb gleit!",
|
||
aboZahlungSimBtn: "Monetszahlig simuliere (Demo)",
|
||
aboZahlungSimHinweis: "Phase 1: Es git no kei echti wiederkehrendi Zahlig im Hintergrund. Mit dem Chnopf teschtisch, was bi dr nächschte erfolgriiche Monetsabbuechig passiert.",
|
||
aboKuendigenBtn: "Abo kündige",
|
||
aboKuendigenConfirm: "Abo würklich kündige? Dini Vorteil bliibed bis am Ändi vo dr bezahlte Laufziit aktiv.",
|
||
aboGekuendigtHinweisTemplate: "Kündet am {datum}. Dini Vorteil bliibed bis am Ändi vo dr bezahlte Laufziit aktiv, dernah ändet dis Abo automatisch.",
|
||
aboWechselTitle: "Zu emene andere Abo wechsle",
|
||
aboBenachrichtigungenTitle: "🔔 Benachrichtigunge",
|
||
aboKeineBenachrichtigungen: "No kei Benachrichtigunge — da erscheined automatisch Meldige zu dim Abo, z. B. bi jeder erfolgriiche Zahlig, ere nöie Teddy-Prämie oder emene Stufewechsel.",
|
||
aboNichtAktivBadge: "⏸ Rabatt pausiert",
|
||
aboExplainer: "Alli Aagabe werded aktuell sicher uf dem Gerät gspeicheret (Phase 1). Ä geräteübergriifendi Datebank chunt mit dr echte Zahligs-Aabindig i Phase 2.",
|
||
notifAboAbgeschlossen: "Dis Abo isch erfolgriich abgschlosse worde — willkomme! 🎉",
|
||
notifAboGewechselt: "Du bisch erfolgriich in es anders Abo gwechslet ({stufe}).",
|
||
notifAboZahlungErfolgreich: "Dini monetlichi Abo-Zahlig isch erfolgriich gsi. ✅",
|
||
notifAboTeddyKleinFrei: "🧸 Nöii Prämie freigschaltet: en chliine Teddy wartet uf dich!",
|
||
notifAboTeddyGrossFrei: "🧸 Nöii Prämie freigschaltet: en grosse Teddy wartet uf dich!",
|
||
notifAboBaldPraemie: "🧸 Fasch gschafft — nächschte Monet wartet dini nächschti Teddy-Prämie!",
|
||
notifAboGekuendigt: "Du hesch dis Abo kündet. Dini Vorteil bliibed bis am Ändi vo dr bezahlte Laufziit aktiv.",
|
||
notifAboTeddyKleinEingeloest: "🧸 Chliine Teddy ilöst — er liit jetzt gratis in dim Warechorb.",
|
||
notifAboTeddyGrossEingeloest: "🧸 Grosse Teddy ilöst — er liit jetzt gratis in dim Warechorb.",
|
||
noOpenOrders: "Momentan kei offni Sändige — alli Bstellige sind scho aacho. 🎉",
|
||
noArrivedOrders: "No kei aacho Bstellige — da erschine dini Bstellige, sobald sie glifert worde sind.",
|
||
ordersTitle: "📦 Mini Bstellige",
|
||
orderNo: "Bstellig", orderDate: "Bstellt am", orderTotal: "Total", orderItems: "Artikel",
|
||
trackingLabel: "Sändigsverfolgig", trackingBtn: "Sändig verfolge →", invoiceBtn: "Rächnig aluege", reorderBtn: "Nomal bstelle",
|
||
invoiceTitle: "Rächnig", invoiceNumberLabel: "Rächnigsnummere", invoiceDateLabel: "Rächnigsdatum",
|
||
invoiceSellerLabel: "Verchöifer", invoiceBillToLabel: "Rächnigsempfänger",
|
||
invoiceItemLabel: "Artikel", invoiceQtyLabel: "Mengi", invoiceUnitPriceLabel: "Ystückspreis", invoiceSumLabel: "Gsamtbetrag",
|
||
invoiceCloseBtn: "Schlüsse", invoiceDownloadBtn: "Rächnig downloade", invoiceDownloading: "Wird erstellt …",
|
||
statusBezahlt: "Zahlt", statusBearbeitung: "I dr Bearbeitig", statusVersandVorbereitet: "Versand vorbereitet", statusVersendet: "Verschickt", statusAbgeschlossen: "Abgschlosse",
|
||
wishlistTitle: "🩵 Mini Wunschlischte", wishlistEmpty: "Dini Wunschlischte isch no leer — lueg im Shop verbi und spicher dini Lieblingssächeli mit em Härz-Symbol.",
|
||
recentTitle: "🕘 Zletscht aagluegt",
|
||
profileTitle: "👤 Mini Date", profileName: "Name", profileEmail: "E-Mail", profileAddress: "Lieferadrässe", profileEdit: "Date bearbeite",
|
||
reviewBtn: "🩵 Bewärtig schrybe", reviewedBadge: "✓ Bewärtet",
|
||
nameSave: "Spichere", nameSaved: "Gspicheret ✓",
|
||
usernameLabel: "Benutzername (Spitzname)", usernameHint: "Optional — es Bonus, falls du liebr mit emene Spitzname statt dim Name aazeigt wirsch.", usernameSave: "Spichere", usernameSaved: "Gspicheret ✓",
|
||
photoLabel: "Profilfoto", photoChange: "Foto ändere", photoRemove: "Entferne",
|
||
},
|
||
},
|
||
fr: {
|
||
nav: { shop: "Boutique", sale: "Soldes", creative: "À propos de la créatrice", faq: "FAQ", contact: "Contact", account: "Mon compte", login: "Se connecter" },
|
||
accountMenu: { myAccount: "Mon compte", logout: "Se déconnecter" },
|
||
topbar: "Livraison gratuite dès 75 € en DE/AT/CH/LU",
|
||
footer: {
|
||
tagline: "Fait main avec amour – de la créativité à offrir ou à garder.",
|
||
shopHeading: "Boutique", serviceHeading: "Service", legalHeading: "Mentions légales",
|
||
shipping: "Livraison & Paiement", account: "Mon compte",
|
||
copyright: "Entreprise individuelle · Petite entreprise selon §19 UStG (droit allemand)",
|
||
legalNoteTitle: "Remarque sur les pages légales",
|
||
legalNote: "Les mentions légales, la politique de confidentialité, les CGV, le droit de rétractation et le formulaire type de rétractation ne sont disponibles qu'en allemand, pour des raisons de conformité juridique.",
|
||
},
|
||
badge: { neu: "Nouveau", bestseller: "Best-seller", sale: "Soldes", handgemacht: "Fait main", ausverkauft: "Épuisé" },
|
||
common: {
|
||
addToCart: "Ajouter au panier", soldOut: "Épuisé", addedToCart: "Ajouté au panier ✓",
|
||
onlyXLeft: (n: string) => `Plus que ${n} en stock`, maxInCart: "La quantité maximale disponible est déjà dans votre panier", maxInCartShort: "Déjà dans le panier",
|
||
browseShop: "Découvrir la boutique", viewAll: "Tout voir →", viewAllSale: "Toutes les offres →",
|
||
toShop: "Vers la boutique →", moreAboutMe: "En savoir plus sur moi →", discoverNow: "Découvrir maintenant",
|
||
installApp: "Installer l'app", installAppShort: "Installer",
|
||
vatNote: "Conformément à l'§19 UStG (droit allemand), aucune TVA n'est calculée ni indiquée.",
|
||
allPricesPlusShipping: "Tous les prix hors frais de port.", plusShipping: "hors frais de port",
|
||
quantity: "Quantité", photoSoon: "Photo du produit à venir", portraitSoon: "Photo de VanVan à venir",
|
||
prevPhoto: "Photo précédente", nextPhoto: "Photo suivante",
|
||
handmadeBadge: "🩵 Fait main",
|
||
},
|
||
product: {
|
||
articleNo: "Référence", material: "Matière", size: "Taille", colors: "Couleurs",
|
||
included: "Contenu de la livraison", care: "Entretien", delivery: "Délai de livraison",
|
||
recommendations: "Cela pourrait aussi vous plaire",
|
||
todoFields: "Les mentions GPSR, avertissements, coordonnées du fabricant et vidéos produit seront ajoutés dès que VanVan fournira les données réelles (phase 2, espace admin).",
|
||
photoNote: "VanVan ajoutera de vraies photos plus tard",
|
||
reviewsTitle: "Avis clients", noReviews: "Pas encore d'avis pour ce produit — soyez le/la premier(ère) !",
|
||
reviewCount: (n: number) => `${n} avis`,
|
||
writeReviewTitle: "🩵 Votre avis", yourRating: "Votre note", yourReview: "Qu'avez-vous aimé ? (facultatif)",
|
||
yourName: "Votre nom", submitReview: "Publier l'avis", reviewSaved: "Merci pour votre avis ! ✓",
|
||
reviewNeedsRating: "Merci de choisir 1 à 5 cœurs.", reviewFromOrder: (nr: string) => `Vous évaluez votre commande ${nr}.`,
|
||
loginHintReview: "Connecté(e) en tant que", notLoggedInReview: "Vous n'êtes pas connecté(e) — votre avis sera publié sous le nom que vous indiquez.",
|
||
},
|
||
shop: {
|
||
title: "Tous les produits", lead: "Parcourez toutes les pièces faites main – filtrez et triez selon vos envies.",
|
||
filters: "Filtres", allCategories: "Toutes les catégories", priceUpTo: "Prix jusqu'à", priceUpToValue: (v: number) => `jusqu'à ${v} €`,
|
||
onlyAvailable: "Articles disponibles uniquement", filterNote: "Les filtres matière et couleur arriveront dès que l'assortiment sera plus large.",
|
||
sortNew: "Nouveautés", sortBestseller: "Best-sellers", sortPriceAsc: "Prix croissant", sortPriceDesc: "Prix décroissant", sortRating: "Mieux notés",
|
||
resultCount: (n: number) => `${n} produit${n === 1 ? "" : "s"}`, noResults: "Aucun produit trouvé – veuillez ajuster les filtres.",
|
||
breadcrumbShop: "Boutique", categoryEmpty: "Aucun produit dans cette catégorie pour le moment – repassez bientôt.",
|
||
categoryLabel: "Catégorie", productSingular: "produit", productPlural: "produits", sortLabel: "Trier par", subcategoriesLabel: "Sous-catégories", mainCategoryLabel: "Catégorie principale", subcategoryEmpty: "VanVan ajoutera bientôt les premiers produits ici – repassez bientôt.", moreAbout: "En savoir plus sur", moreVariants: "Autres modèles",
|
||
moreAboutCharacterLead: "Si tu veux en savoir plus sur moi, clique",
|
||
minRatingLabel: "Note minimale", minRatingAny: "Toutes les notes",
|
||
},
|
||
reviews: {
|
||
heading: "Ce que disent nos client(e)s", lead: "De vrais retours sur nos pièces faites main.",
|
||
basedOn: (n: number) => `basé sur ${n} avis`,
|
||
toProduct: "Voir le produit →",
|
||
},
|
||
sale: {
|
||
eyebrow: "% Soldes", title: "Offres actuelles", lead: "Réductions limitées dans le temps sur une sélection de pièces faites main.",
|
||
empty: "Aucune promotion en cours actuellement – repassez bientôt.",
|
||
},
|
||
faq: {
|
||
title: "Questions fréquentes",
|
||
items: [
|
||
{ q: "Combien de temps prend la livraison ?", a: "Généralement 2 à 7 jours ouvrés en Allemagne, Autriche, Suisse et au Luxembourg. Pour les pièces sur mesure, cela peut prendre un peu plus de temps – indiqué directement sur la page produit." },
|
||
{ q: "À partir de quand la livraison est-elle gratuite ?", a: "À partir de 75 € d'achat, nous livrons gratuitement via DHL dans les pays desservis. En dessous, les frais de port dépendent du produit, du pays et du montant de la commande – détails sur notre page Livraison & Paiement." },
|
||
{ q: "Puis-je commander une pièce personnalisée ?", a: "Oui, avec plaisir ! Écrivez-nous simplement via le formulaire de contact – nous verrons ce qui est possible." },
|
||
{ q: "Comment entretenir mes produits faits main ?", a: "Les instructions d'entretien figurent sur chaque page produit. Nos pièces étant crochetées ou tricotées à la main, nous recommandons en général un lavage à la main délicat à basse température, sans sèche-linge, et un séchage à plat pour préserver la forme et les fibres." },
|
||
{ q: "Quels moyens de paiement sont acceptés ?", a: "PayPal, Klarna, carte bancaire (Visa & Mastercard) et virement bancaire (paiement anticipé)." },
|
||
{ q: "Puis-je retourner ma commande ?", a: "Le droit de rétractation légal de 14 jours s'applique (voir notre notice de rétractation). Pour les pièces personnalisées sur mesure, le droit de rétractation peut être exclu par la loi ; pour les articles standards de notre gamme, il s'applique normalement." },
|
||
{ q: "Dois-je payer la TVA ?", a: "Non. Van's DIY & Bastelbedarf est une petite entreprise selon l'§19 UStG – aucune TVA n'est calculée ni indiquée." },
|
||
{ q: "Ai-je besoin d'un compte client pour commander ?", a: "Non, vous pouvez aussi commander confortablement en tant qu'invité. Un compte est toutefois utile pour regrouper l'historique des commandes, la liste de souhaits et le suivi de livraison." },
|
||
],
|
||
},
|
||
contact: {
|
||
title: "Écrivez-nous", lead: "Des questions sur un produit, votre commande ou une demande personnalisée ? N'hésitez pas à nous contacter !",
|
||
name: "Nom", email: "E-mail", subject: "Objet", message: "Message",
|
||
gdprPrefix: "J'ai lu la", gdprLink: "politique de confidentialité", gdprSuffix: "et j'accepte le traitement de mes données.",
|
||
send: "Envoyer le message", sentDemo: "Merci ! (Démo – pas encore d'envoi réel en phase 1)",
|
||
todoNote: "À faire en phase 2 : connecter ce formulaire à un vrai service backend/e-mail (Cloudflare Worker). Actuellement aucun envoi réel n'a lieu.",
|
||
directTitle: "Contact direct", emailPlaceholderNote: "(adresse provisoire)", orderNote: "Pour toute question de commande, merci d'indiquer le numéro de commande.",
|
||
responseTitle: "Délai de réponse", responseNote: "Généralement sous 1 à 2 jours ouvrés.",
|
||
},
|
||
about: {
|
||
eyebrow: "À propos de la créatrice", title: "Bonjour, je suis VanVan 🩵",
|
||
lead: "Bienvenue dans mon petit atelier ! Tout ce que vous trouvez dans la boutique est fait main ici – point par point, perle par perle.",
|
||
valuesTitle: "Ce qui compte pour moi",
|
||
values: [
|
||
{ icon: "🧵", title: "Artisanat", text: "Pas de production de masse – chaque pièce est réalisée individuellement et avec soin." },
|
||
{ icon: "🩵", title: "Qualité", text: "Des matériaux choisis avec soin pour des résultats durables et beaux." },
|
||
{ icon: "🎁", title: "Personnel", text: "Cadeau ou plaisir pour soi-même – chaque produit porte un peu de cœur." },
|
||
],
|
||
story: [
|
||
{
|
||
title: "Mon aventure a commencé avec une seule maille",
|
||
paragraphs: [
|
||
"Il y a environ six ans, j'ai découvert ma passion pour le crochet. Tout a commencé par pure curiosité. Sans cours ni expérience préalable, j'ai tout appris moi-même, étape par étape.",
|
||
"À chaque nouvelle maille, chaque petite erreur et chaque projet terminé, non seulement mon savoir-faire grandissait, mais aussi mon enthousiasme pour cet artisanat merveilleux.",
|
||
"Aujourd'hui, le crochet est pour moi bien plus qu'un simple loisir. C'est mon exutoire créatif, une façon de donner vie à mes idées et de faire sourire les gens avec des pièces uniques façonnées avec amour.",
|
||
"La création d'amigurumis me fascine particulièrement. Je suis fascinée de voir comment une simple pelote de laine se transforme peu à peu en petit personnage — chacun avec son propre charme.",
|
||
],
|
||
},
|
||
{
|
||
title: "La créativité ne connaît pas de limites",
|
||
paragraphs: [
|
||
"En plus du crochet, j'ai aussi découvert ma passion pour les bijoux faits main.",
|
||
"Avec beaucoup de soin, je fabrique des bracelets, colliers, porte-clés et autres accessoires. J'adore combiner différents matériaux, couleurs et breloques pour créer sans cesse de nouveaux designs.",
|
||
"Chaque bijou doit non seulement être beau, mais aussi apporter longtemps de la joie à son nouveau propriétaire.",
|
||
"La créativité m'accompagne depuis toujours. C'est pourquoi vous trouverez chez moi non seulement du crochet classique ou des bijoux, mais toujours de nouvelles idées et projets créatifs, façonnés avec beaucoup d'amour.",
|
||
],
|
||
},
|
||
{
|
||
title: "La qualité avec du cœur",
|
||
paragraphs: [
|
||
"Pour moi, l'artisanat, c'est la personnalité.",
|
||
"Aucun produit ne sort d'une chaîne de production.",
|
||
"Chaque pièce est soigneusement planifiée, façonnée et contrôlée par mes soins.",
|
||
"J'accorde une importance particulière aux matériaux de qualité, à une finition soignée, à des détails pleins d'amour, à une qualité durable et à des designs uniques.",
|
||
],
|
||
},
|
||
{
|
||
title: "Bien plus qu'un simple loisir",
|
||
paragraphs: [
|
||
"Derrière ma créativité se cache bien plus que de la laine et des perles.",
|
||
"Je suis quelqu'un qui met tout son cœur dans ce qu'elle fait. Quand je fais quelque chose, c'est avec passion, patience et l'envie de créer quelque chose de spécial.",
|
||
"Cela me rend heureuse quand mes créations apportent de la joie aux autres — que ce soit comme cadeau pour un être cher ou comme petit plaisir pour soi-même.",
|
||
],
|
||
},
|
||
{
|
||
title: "Ma petite boutique de cœur",
|
||
paragraphs: [
|
||
"Ma boutique n'est donc pas simplement un endroit où l'on vend des produits.",
|
||
"Elle fait partie de moi.",
|
||
"D'innombrables heures de travail, de créativité, de passion et énormément d'amour se cachent dans chaque pièce.",
|
||
"C'est exactement ce qui rend chaque pièce unique.",
|
||
],
|
||
},
|
||
{
|
||
title: "Merci d'être là",
|
||
paragraphs: [
|
||
"Merci beaucoup de prendre le temps de découvrir mon petit monde créatif et de soutenir ma passion.",
|
||
"Je te souhaite beaucoup de plaisir à parcourir la boutique, et j'espère que tu trouveras exactement la pièce qui fera battre ton cœur plus fort.",
|
||
],
|
||
},
|
||
],
|
||
closing: "Fait main avec amour – maille après maille et perle après perle.",
|
||
},
|
||
shipping: {
|
||
eyebrow: "Livraison & Paiement", title: "Livraison & Paiement",
|
||
shippingTitle: "📦 Livraison",
|
||
shippingItems: [
|
||
"Livraison exclusivement par DHL", "Pays livrés : Allemagne, Autriche, Suisse, Luxembourg",
|
||
"Délai de livraison : 2 à 7 jours ouvrés", "Les frais de port sont définis par produit et échelonnés selon la valeur de la commande et le pays",
|
||
"Livraison gratuite dès 75 € d'achat", "L'expédition n'a lieu qu'après réception du paiement",
|
||
"Pour les livraisons en Suisse, la TVA à l'importation suisse et des frais de douane peuvent s'appliquer, à la charge du/de la destinataire",
|
||
],
|
||
paymentTitle: "💳 Moyens de paiement", paymentItems: ["PayPal", "Klarna", "Carte bancaire (Visa & Mastercard)", "Virement bancaire (paiement anticipé)"],
|
||
todoNote: "Le barème précis des frais de port par pays/valeur de commande sera ajouté dès que VanVan aura fixé les conditions DHL définitives.",
|
||
},
|
||
cart: {
|
||
eyebrow: "Panier", title: "Votre panier", empty: "Votre panier est encore vide.",
|
||
subtotal: "Sous-total", shipping: "Livraison", shippingCalculated: "calculée au moment du paiement",
|
||
total: "Total", remaining: (v: string) => `Encore ${v} avant la livraison gratuite.`, freeShipping: "🩵 Vous bénéficiez de la livraison gratuite !",
|
||
toCheckout: "Passer au paiement", remove: "Retirer", perItem: "/ pièce",
|
||
discount: "Remise", mengenrabatt: (p: string) => `Remise de quantité -${p}%`,
|
||
mengenrabattTier: (ab: string, p: string) => `dès ${ab} pièces -${p}%`,
|
||
couponLabel: "🎟️ Code promo", couponPlaceholder: "Entrer le code", couponApply: "Valider", couponRemove: "Retirer",
|
||
buyNow: "Acheter maintenant", keptInCart: "Reste dans le panier, pas encore acheté",
|
||
couponInvalid: "Code invalide ou expiré.", couponApplied: (code: string) => `Code promo « ${code} » appliqué`,
|
||
partnerDiscount: "🤝 Remise partenaire",
|
||
partnerCodeLabel: "🤝 Code partenaire", partnerCodePlaceholder: "Entrer le code", partnerCodeApply: "Valider", partnerCodeRemove: "Retirer",
|
||
partnerCodeInvalid: "Code invalide ou expiré.", partnerCodeApplied: (code: string) => `Code partenaire « ${code} » appliqué`,
|
||
loyaltyDiscount: "🎁 Récompense fidélité (-20 %)",
|
||
loyaltyBannerTitle: "🎁 Votre récompense fidélité est prête !",
|
||
loyaltyBannerText: "Choisissez ci-dessous l'article sur lequel vous voulez -20 %.",
|
||
loyaltySelectLabel: "Choisir pour la récompense fidélité de 20 %",
|
||
loyaltySelectedLabel: "🎁 Récompense fidélité de -20 % appliquée",
|
||
gratisPraemie: "Récompense gratuite de votre abonnement",
|
||
aboDiscount: "🎫 Remise d'abonnement",
|
||
},
|
||
checkout: {
|
||
eyebrow: "Paiement", title: "Finaliser la commande",
|
||
todoNote: "Phase 1 – paiement de démonstration. Aucun paiement réel n'est encore traité. L'intégration complète avec PayPal, Klarna et le virement bancaire, ainsi que la gestion des commandes, suivront en phase 2.",
|
||
step1: "2. Contact & adresse de livraison", email: "E-mail", firstName: "Prénom", lastName: "Nom",
|
||
street: "Rue & numéro", zip: "Code postal", city: "Ville", country: "Pays",
|
||
step2: "1. Moyen de paiement",
|
||
step3: "3. Récapitulatif de commande", agbPrefix: "J'ai lu les", agbLink: "CGV", agbSuffix: "et je les accepte.",
|
||
revocationPrefix: "J'ai pris connaissance de la", revocationLink: "notice de rétractation", revocationAnd: "et de la",
|
||
privacyLink: "politique de confidentialité", revocationSuffix: ".",
|
||
bankTransfer: "Virement bancaire (paiement anticipé)", orderButton: "Commander avec obligation de paiement", emptyCartAlert: "Votre panier est vide.",
|
||
creditCard: "Carte bancaire", creditCardSub: "Visa & Mastercard",
|
||
payPalHint: "Payez en toute sécurité et instantanément avec votre compte PayPal.",
|
||
klarnaHint: "Facture, paiement en plusieurs fois ou virement instantané – choisissez comment payer avec Klarna.",
|
||
klarnaConnect: "Continuer vers Klarna →", klarnaConnecting: "Connexion à Klarna …", klarnaConnected: "Connecté à Klarna (démo)",
|
||
cardHint: "Vos données de carte sont transmises en toute sécurité.", cardNumber: "Numéro de carte", cardExpiry: "Date d'expiration", cardCvc: "CVC",
|
||
bankHintReal: "Veuillez virer le montant de la facture sur le compte suivant après avoir finalisé votre commande. Vos articles sont expédiés dès réception du paiement.",
|
||
bankPlaceholder: "Les coordonnées bancaires vous seront envoyées par e-mail après votre commande.",
|
||
bankHolder: "Titulaire du compte", bankIban: "IBAN", bankBic: "BIC", bankBankName: "Banque",
|
||
shippingHintTitle: "Remarque sur la livraison",
|
||
shippingHint: "Livraison exclusivement par DHL en Allemagne, Autriche, Suisse et au Luxembourg. Délai de livraison 2 à 7 jours ouvrés. Livraison gratuite dès 75 €. L'expédition n'a lieu qu'après réception du paiement.",
|
||
shippingLink: "En savoir plus sur la livraison & le paiement →",
|
||
thankYouEyebrow: "Merci", thankYouTitle: "Votre commande a bien été reçue",
|
||
thankYouLead: "Ceci est actuellement une confirmation de démonstration (phase 1, sans traitement réel du paiement). Une fois le vrai paiement en ligne, vous recevrez ici et par e-mail une véritable confirmation de commande.",
|
||
continueShopping: "Continuer mes achats", total: "Total", free: "gratuit",
|
||
},
|
||
account: {
|
||
eyebrow: "Mon compte", title: "Se connecter ou commander en tant qu'invité",
|
||
todoNote: "Phase 1 – connexion de démonstration sans vérification réelle du mot de passe : n'importe quelle adresse e-mail fonctionne, le champ mot de passe n'est qu'un aperçu. Les commandes affichées dans le compte sont des exemples. Une vraie connexion avec base de données arrivera en phase 2.",
|
||
loginTitle: "Se connecter", email: "E-mail", password: "Mot de passe", loginButton: "Se connecter", forgotPassword: "Mot de passe oublié ?",
|
||
newTitle: "Nouveau ici ?", newText: "Créez un compte pour retrouver l'historique des commandes, la liste de souhaits et le suivi au même endroit – ou commandez simplement en tant qu'invité, sans compte.",
|
||
guestButton: "Continuer mes achats en tant qu'invité",
|
||
loginError: "Veuillez saisir une adresse e-mail.",
|
||
socialHeading: "Connexion plus rapide avec",
|
||
socialGoogle: "Se connecter avec Google", socialApple: "Se connecter avec Apple", socialPaypal: "Se connecter avec PayPal",
|
||
socialComingSoon: "Disponible en phase 2 : dès que la vraie connexion au compte sera en place, vous pourrez vous connecter directement ici — sans nouveau mot de passe.",
|
||
orDivider: "ou avec e-mail",
|
||
showPassword: "Afficher le mot de passe", hidePassword: "Masquer le mot de passe",
|
||
rememberMe: "Rester connecté(e)",
|
||
consentPrefix: "En vous connectant, vous acceptez notre", consentLink: "politique de confidentialité", consentSuffix: ".",
|
||
previewLink: "👁 Aperçu : ce que voient les client(e)s connecté(e)s",
|
||
previewName: "Marie L.",
|
||
},
|
||
accountDash: {
|
||
eyebrow: "Mon compte", greeting: (name: string) => `Bonjour ${name} 🩵`, lead: "Ravie de vous revoir. Retrouvez ici toutes vos commandes, votre liste de souhaits et vos données en un coup d'œil.",
|
||
previewNote: "Phase 1 : votre connexion, votre profil et vos avis sont déjà réellement enregistrés sur cet appareil. Seules les commandes ci-dessous sont des exemples destinés à la conception — les vraies commandes arriveront en phase 2 avec le paiement et une base de données (Cloudflare Worker + D1).",
|
||
notLoggedIn: "Vous n'êtes pas connecté(e) — redirection vers la connexion …",
|
||
logout: "Se déconnecter",
|
||
navLabel: "Navigation de l'espace client",
|
||
statOrders: "Commandes", statWishlist: "Liste de souhaits", statOpen: "Envois en cours", statData: "Mes données", statLoyalty: "Récompense",
|
||
datenHeaderBtn: "👤 Mes données",
|
||
loyaltyTitle: "🎁 Ma récompense fidélité",
|
||
loyaltyProgressTemplate: "Votre progression : {cur} sur {ziel} commandes",
|
||
loyaltyRemainingOne: "Il vous manque encore 1 commande pour obtenir 20 % de réduction sur l'article de votre choix.",
|
||
loyaltyRemainingOther: "Il vous manque encore {n} commandes pour obtenir 20 % de réduction sur l'article de votre choix.",
|
||
loyaltyUnlockedTitle: "🎉 Récompense fidélité débloquée",
|
||
loyaltyUnlockedText: "Vous avez validé dix commandes et bénéficiez de 20 % de réduction sur l'article de votre choix lors de votre prochaine commande.",
|
||
loyaltyGoToCart: "Choisir l'article dans le panier →",
|
||
loyaltyExplainer: "Seules les commandes entièrement finalisées et payées comptent. Après utilisation, votre progression repart de zéro.",
|
||
loyaltyLockedTitle: "🔒 Disponible uniquement avec un abonnement actif",
|
||
loyaltyLockedText: "La récompense fidélité est un bonus réservé à nos abonné(e)s. Abonnez-vous pour commencer à cumuler des commandes vers votre récompense de 20 %.",
|
||
loyaltyLockedBtn: "Voir l'abonnement →",
|
||
statAbo: "Mon abonnement",
|
||
aboHeaderBtn: "🎫 Gérer mon abonnement",
|
||
aboTitle: "🎫 Mon abonnement",
|
||
aboIntro: "Profitez d'une remise permanente sur chaque commande et d'oursons en peluche gratuits en cadeau — automatiquement, chaque mois.",
|
||
aboNameKlein: "Petit abonnement", aboNameMittel: "Abonnement moyen", aboNameGross: "Grand abonnement",
|
||
aboPreisSuffix: "/ mois",
|
||
aboVorteilKlein: "5 % de remise sur chaque commande. Après chaque année d'abonnement complète : 1 petit ours en peluche offert.",
|
||
aboVorteilMittel: "10 % de remise sur chaque commande. Après chaque année d'abonnement complète : 1 grand ours en peluche offert.",
|
||
aboVorteilGross: "20 % de remise sur chaque commande. Un petit ours tous les 6 mois, et un grand ours en plus après chaque année complète.",
|
||
aboAbschliessenBtn: "S'abonner",
|
||
aboAktivesLabel: "✓ Votre abonnement actuel",
|
||
aboWechselnBtn: "Passer à cet abonnement",
|
||
aboNichtBuchbar: "Actuellement indisponible",
|
||
aboStatusTitle: "Statut de votre abonnement",
|
||
aboFieldStufe: "Formule", aboFieldPreis: "Prix mensuel", aboFieldRabatt: "Remise incluse",
|
||
aboFieldStart: "Date de début", aboFieldNaechsteZahlung: "Prochain paiement", aboFieldLaufzeit: "Durée jusqu'ici",
|
||
aboMonateSuffix: "mois",
|
||
aboFortschrittKleinTemplate: "🧸 Encore {n} mois avant votre prochain petit ours",
|
||
aboFortschrittGrossTemplate: "🧸 Encore {n} mois avant votre prochain grand ours",
|
||
aboPraemienErhaltenTemplate: "Déjà reçus : {klein}× petit ours, {gross}× grand ours",
|
||
aboPraemienVerfuegbarTitle: "🎉 Récompenses disponibles",
|
||
aboKeinePraemienVerfuegbar: "Aucune récompense à échanger pour le moment.",
|
||
aboEinloesenBtn: "Échanger maintenant",
|
||
aboEinloesenKleinLabel: "Petit ours", aboEinloesenGrossLabel: "Grand ours",
|
||
aboEingeloestHinweis: "🧸 Ajouté à votre panier !",
|
||
aboZahlungSimBtn: "Simuler le paiement mensuel (démo)",
|
||
aboZahlungSimHinweis: "Phase 1 : il n'y a pas encore de vrai paiement récurrent en arrière-plan. Ce bouton permet de tester ce qui se passe lors du prochain paiement mensuel réussi.",
|
||
aboKuendigenBtn: "Résilier l'abonnement",
|
||
aboKuendigenConfirm: "Résilier vraiment l'abonnement ? Vos avantages restent actifs jusqu'à la fin de la période payée.",
|
||
aboGekuendigtHinweisTemplate: "Résilié le {datum}. Vos avantages restent actifs jusqu'à la fin de la période payée, puis votre abonnement se termine automatiquement.",
|
||
aboWechselTitle: "Passer à une autre formule",
|
||
aboBenachrichtigungenTitle: "🔔 Notifications",
|
||
aboKeineBenachrichtigungen: "Pas encore de notifications — les mises à jour de votre abonnement apparaîtront ici automatiquement, par ex. à chaque paiement réussi, une nouvelle récompense en peluche ou un changement de formule.",
|
||
aboNichtAktivBadge: "⏸ Remise suspendue",
|
||
aboExplainer: "Toutes les données sont actuellement stockées en sécurité sur cet appareil (Phase 1). Une base de données multi-appareils suivra avec le vrai paiement en Phase 2.",
|
||
notifAboAbgeschlossen: "Votre abonnement a été souscrit avec succès — bienvenue ! 🎉",
|
||
notifAboGewechselt: "Vous êtes passé(e) avec succès à un autre abonnement ({stufe}).",
|
||
notifAboZahlungErfolgreich: "Votre paiement mensuel d'abonnement a été effectué avec succès. ✅",
|
||
notifAboTeddyKleinFrei: "🧸 Nouvelle récompense débloquée : un petit ours vous attend !",
|
||
notifAboTeddyGrossFrei: "🧸 Nouvelle récompense débloquée : un grand ours vous attend !",
|
||
notifAboBaldPraemie: "🧸 Presque au but — votre prochaine récompense en peluche arrive le mois prochain !",
|
||
notifAboGekuendigt: "Vous avez résilié votre abonnement. Vos avantages restent actifs jusqu'à la fin de la période payée.",
|
||
notifAboTeddyKleinEingeloest: "🧸 Petit ours échangé — il est maintenant gratuit dans votre panier.",
|
||
notifAboTeddyGrossEingeloest: "🧸 Grand ours échangé — il est maintenant gratuit dans votre panier.",
|
||
noOpenOrders: "Aucun envoi en cours pour le moment — toutes les commandes sont déjà arrivées. 🎉",
|
||
noArrivedOrders: "Aucune commande livrée pour le moment — vos commandes apparaîtront ici dès qu'elles seront arrivées.",
|
||
ordersTitle: "📦 Mes commandes",
|
||
orderNo: "Commande", orderDate: "Commandé le", orderTotal: "Total", orderItems: "Articles",
|
||
trackingLabel: "Suivi", trackingBtn: "Suivre l'envoi →", invoiceBtn: "Voir la facture", reorderBtn: "Commander à nouveau",
|
||
invoiceTitle: "Facture", invoiceNumberLabel: "Numéro de facture", invoiceDateLabel: "Date de facture",
|
||
invoiceSellerLabel: "Vendeur", invoiceBillToLabel: "Facturé à",
|
||
invoiceItemLabel: "Article", invoiceQtyLabel: "Qté", invoiceUnitPriceLabel: "Prix unitaire", invoiceSumLabel: "Montant total",
|
||
invoiceCloseBtn: "Fermer", invoiceDownloadBtn: "Télécharger la facture", invoiceDownloading: "Préparation …",
|
||
statusBezahlt: "Payée", statusBearbeitung: "En préparation", statusVersandVorbereitet: "Envoi en préparation", statusVersendet: "Expédiée", statusAbgeschlossen: "Terminée",
|
||
wishlistTitle: "🩵 Ma liste de souhaits", wishlistEmpty: "Votre liste de souhaits est encore vide — parcourez la boutique et enregistrez vos coups de cœur avec l'icône en forme de cœur.",
|
||
recentTitle: "🕘 Vus récemment",
|
||
profileTitle: "👤 Mes données", profileName: "Nom", profileEmail: "E-mail", profileAddress: "Adresse de livraison", profileEdit: "Modifier mes données",
|
||
reviewBtn: "🩵 Écrire un avis", reviewedBadge: "✓ Avis publié",
|
||
nameSave: "Enregistrer", nameSaved: "Enregistré ✓",
|
||
usernameLabel: "Nom d'utilisateur (surnom)", usernameHint: "Facultatif — un bonus si vous préférez être affiché(e) avec un surnom plutôt que votre nom.", usernameSave: "Enregistrer", usernameSaved: "Enregistré ✓",
|
||
photoLabel: "Photo de profil", photoChange: "Changer la photo", photoRemove: "Supprimer",
|
||
},
|
||
},
|
||
} as const;
|
||
|
||
export type UiDict = (typeof ui)["de"];
|
||
|
||
export function useTranslations(locale: Locale): UiDict {
|
||
return ui[locale];
|
||
}
|