refactor: complete module-driven architecture migration

This commit completes the migration to a fully module-driven architecture:

## Models Migration
- Moved all domain models from models/database/ to their respective modules:
  - tenancy: User, Admin, Vendor, Company, Platform, VendorDomain, etc.
  - cms: MediaFile, VendorTheme
  - messaging: Email, VendorEmailSettings, VendorEmailTemplate
  - core: AdminMenuConfig
- models/database/ now only contains Base and TimestampMixin (infrastructure)

## Schemas Migration
- Moved all domain schemas from models/schema/ to their respective modules:
  - tenancy: company, vendor, admin, team, vendor_domain
  - cms: media, image, vendor_theme
  - messaging: email
- models/schema/ now only contains base.py and auth.py (infrastructure)

## Routes Migration
- Moved admin routes from app/api/v1/admin/ to modules:
  - menu_config.py -> core module
  - modules.py -> tenancy module
  - module_config.py -> tenancy module
- app/api/v1/admin/ now only aggregates auto-discovered module routes

## Menu System
- Implemented module-driven menu system with MenuDiscoveryService
- Extended FrontendType enum: PLATFORM, ADMIN, VENDOR, STOREFRONT
- Added MenuItemDefinition and MenuSectionDefinition dataclasses
- Each module now defines its own menu items in definition.py
- MenuService integrates with MenuDiscoveryService for template rendering

## Documentation
- Updated docs/architecture/models-structure.md
- Updated docs/architecture/menu-management.md
- Updated architecture validation rules for new exceptions

## Architecture Validation
- Updated MOD-019 rule to allow base.py in models/schema/
- Created core module exceptions.py and schemas/ directory
- All validation errors resolved (only warnings remain)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-01 21:02:56 +01:00
parent 09d7d282c6
commit d7a0ff8818
307 changed files with 5536 additions and 3826 deletions

View File

@@ -135,257 +135,6 @@
"account": "Konto",
"wishlist": "Wunschliste"
},
"dashboard": {
"title": "Dashboard",
"welcome": "Willkommen zurück",
"overview": "Übersicht",
"quick_stats": "Schnellstatistiken",
"recent_activity": "Letzte Aktivitäten",
"total_products": "Produkte gesamt",
"total_orders": "Bestellungen gesamt",
"total_customers": "Kunden gesamt",
"total_revenue": "Gesamtumsatz",
"active_products": "Aktive Produkte",
"pending_orders": "Ausstehende Bestellungen",
"new_customers": "Neue Kunden",
"today": "Heute",
"this_week": "Diese Woche",
"this_month": "Dieser Monat",
"this_year": "Dieses Jahr",
"error_loading": "Fehler beim Laden des Dashboards",
"no_data": "Keine Daten verfügbar"
},
"products": {
"title": "Produkte",
"product": "Produkt",
"add_product": "Produkt hinzufügen",
"edit_product": "Produkt bearbeiten",
"delete_product": "Produkt löschen",
"product_name": "Produktname",
"product_code": "Produktcode",
"sku": "SKU",
"price": "Preis",
"sale_price": "Verkaufspreis",
"cost": "Kosten",
"stock": "Lagerbestand",
"in_stock": "Auf Lager",
"out_of_stock": "Nicht auf Lager",
"low_stock": "Geringer Bestand",
"availability": "Verfügbarkeit",
"available": "Verfügbar",
"unavailable": "Nicht verfügbar",
"brand": "Marke",
"category": "Kategorie",
"categories": "Kategorien",
"image": "Bild",
"images": "Bilder",
"main_image": "Hauptbild",
"gallery": "Galerie",
"weight": "Gewicht",
"dimensions": "Abmessungen",
"color": "Farbe",
"size": "Größe",
"material": "Material",
"condition": "Zustand",
"new": "Neu",
"used": "Gebraucht",
"refurbished": "Generalüberholt",
"no_products": "Keine Produkte gefunden",
"search_products": "Produkte suchen...",
"filter_by_category": "Nach Kategorie filtern",
"filter_by_status": "Nach Status filtern",
"sort_by": "Sortieren nach",
"sort_newest": "Neueste",
"sort_oldest": "Älteste",
"sort_price_low": "Preis: Niedrig bis Hoch",
"sort_price_high": "Preis: Hoch bis Niedrig",
"sort_name_az": "Name: A-Z",
"sort_name_za": "Name: Z-A"
},
"orders": {
"title": "Bestellungen",
"order": "Bestellung",
"order_id": "Bestellnummer",
"order_number": "Bestellnummer",
"order_date": "Bestelldatum",
"order_status": "Bestellstatus",
"order_details": "Bestelldetails",
"order_items": "Bestellartikel",
"order_total": "Bestellsumme",
"subtotal": "Zwischensumme",
"shipping": "Versand",
"tax": "Steuer",
"discount": "Rabatt",
"customer": "Kunde",
"shipping_address": "Lieferadresse",
"billing_address": "Rechnungsadresse",
"payment_method": "Zahlungsmethode",
"payment_status": "Zahlungsstatus",
"tracking": "Sendungsverfolgung",
"tracking_number": "Sendungsnummer",
"carrier": "Versanddienstleister",
"no_orders": "Keine Bestellungen gefunden",
"search_orders": "Bestellungen suchen...",
"filter_by_status": "Nach Status filtern",
"status_pending": "Ausstehend",
"status_processing": "In Bearbeitung",
"status_shipped": "Versendet",
"status_delivered": "Zugestellt",
"status_cancelled": "Storniert",
"status_refunded": "Erstattet",
"status_confirmed": "Bestätigt",
"status_rejected": "Abgelehnt",
"confirm_order": "Bestellung bestätigen",
"reject_order": "Bestellung ablehnen",
"set_tracking": "Sendungsverfolgung setzen",
"view_details": "Details ansehen"
},
"customers": {
"title": "Kunden",
"customer": "Kunde",
"add_customer": "Kunde hinzufügen",
"edit_customer": "Kunde bearbeiten",
"customer_name": "Kundenname",
"customer_email": "Kunden-E-Mail",
"customer_phone": "Kundentelefon",
"customer_number": "Kundennummer",
"first_name": "Vorname",
"last_name": "Nachname",
"company": "Firma",
"total_orders": "Bestellungen gesamt",
"total_spent": "Gesamtausgaben",
"last_order": "Letzte Bestellung",
"registered": "Registriert",
"no_customers": "Keine Kunden gefunden",
"search_customers": "Kunden suchen..."
},
"inventory": {
"title": "Inventar",
"stock_level": "Lagerbestand",
"quantity": "Menge",
"reorder_point": "Nachbestellpunkt",
"adjust_stock": "Bestand anpassen",
"stock_in": "Wareneingang",
"stock_out": "Warenausgang",
"transfer": "Transfer",
"history": "Verlauf",
"low_stock_alert": "Warnung bei geringem Bestand",
"out_of_stock_alert": "Warnung bei Ausverkauf"
},
"marketplace": {
"title": "Marktplatz",
"import": "Importieren",
"export": "Exportieren",
"sync": "Synchronisieren",
"source": "Quelle",
"source_url": "Quell-URL",
"import_products": "Produkte importieren",
"start_import": "Import starten",
"importing": "Importiere...",
"import_complete": "Import abgeschlossen",
"import_failed": "Import fehlgeschlagen",
"import_history": "Import-Verlauf",
"job_id": "Auftrags-ID",
"started_at": "Gestartet um",
"completed_at": "Abgeschlossen um",
"duration": "Dauer",
"imported_count": "Importiert",
"error_count": "Fehler",
"total_processed": "Gesamt verarbeitet",
"progress": "Fortschritt",
"no_import_jobs": "Noch keine Imports",
"start_first_import": "Starten Sie Ihren ersten Import mit dem Formular oben"
},
"letzshop": {
"title": "Letzshop-Integration",
"connection": "Verbindung",
"credentials": "Zugangsdaten",
"api_key": "API-Schlüssel",
"api_endpoint": "API-Endpunkt",
"auto_sync": "Auto-Sync",
"sync_interval": "Sync-Intervall",
"every_hour": "Jede Stunde",
"every_day": "Jeden Tag",
"test_connection": "Verbindung testen",
"save_credentials": "Zugangsdaten speichern",
"connection_success": "Verbindung erfolgreich",
"connection_failed": "Verbindung fehlgeschlagen",
"last_sync": "Letzte Synchronisation",
"sync_status": "Sync-Status",
"import_orders": "Bestellungen importieren",
"export_products": "Produkte exportieren",
"no_credentials": "Konfigurieren Sie Ihren API-Schlüssel in den Einstellungen",
"carriers": {
"dhl": "DHL",
"ups": "UPS",
"fedex": "FedEx",
"dpd": "DPD",
"gls": "GLS",
"post_luxembourg": "Post Luxemburg",
"other": "Andere"
}
},
"team": {
"title": "Team",
"members": "Mitglieder",
"add_member": "Mitglied hinzufügen",
"invite_member": "Mitglied einladen",
"remove_member": "Mitglied entfernen",
"role": "Rolle",
"owner": "Inhaber",
"manager": "Manager",
"editor": "Bearbeiter",
"viewer": "Betrachter",
"permissions": "Berechtigungen",
"pending_invitations": "Ausstehende Einladungen",
"invitation_sent": "Einladung gesendet",
"invitation_accepted": "Einladung angenommen"
},
"settings": {
"title": "Einstellungen",
"general": "Allgemein",
"store": "Shop",
"store_name": "Shop-Name",
"store_description": "Shop-Beschreibung",
"contact_email": "Kontakt-E-Mail",
"contact_phone": "Kontakttelefon",
"business_address": "Geschäftsadresse",
"tax_number": "Steuernummer",
"currency": "Währung",
"timezone": "Zeitzone",
"language": "Sprache",
"language_settings": "Spracheinstellungen",
"default_language": "Standardsprache",
"dashboard_language": "Dashboard-Sprache",
"storefront_language": "Shop-Sprache",
"enabled_languages": "Aktivierte Sprachen",
"notifications": "Benachrichtigungen",
"email_notifications": "E-Mail-Benachrichtigungen",
"integrations": "Integrationen",
"api_keys": "API-Schlüssel",
"webhooks": "Webhooks",
"save_settings": "Einstellungen speichern",
"settings_saved": "Einstellungen erfolgreich gespeichert"
},
"profile": {
"title": "Profil",
"my_profile": "Mein Profil",
"edit_profile": "Profil bearbeiten",
"personal_info": "Persönliche Informationen",
"first_name": "Vorname",
"last_name": "Nachname",
"email": "E-Mail",
"phone": "Telefon",
"avatar": "Profilbild",
"change_avatar": "Profilbild ändern",
"security": "Sicherheit",
"two_factor": "Zwei-Faktor-Authentifizierung",
"sessions": "Aktive Sitzungen",
"preferences": "Präferenzen",
"language_preference": "Sprachpräferenz",
"save_profile": "Profil speichern",
"profile_updated": "Profil erfolgreich aktualisiert"
},
"errors": {
"generic": "Ein Fehler ist aufgetreten",
"not_found": "Nicht gefunden",
@@ -414,35 +163,6 @@
"logout_title": "Abmelden bestätigen",
"logout_message": "Sind Sie sicher, dass Sie sich abmelden möchten?"
},
"notifications": {
"title": "Benachrichtigungen",
"mark_read": "Als gelesen markieren",
"mark_all_read": "Alle als gelesen markieren",
"no_notifications": "Keine Benachrichtigungen",
"new_order": "Neue Bestellung",
"order_updated": "Bestellung aktualisiert",
"low_stock": "Warnung bei geringem Bestand",
"import_complete": "Import abgeschlossen",
"import_failed": "Import fehlgeschlagen"
},
"shop": {
"welcome": "Willkommen in unserem Shop",
"browse_products": "Produkte durchstöbern",
"add_to_cart": "In den Warenkorb",
"buy_now": "Jetzt kaufen",
"view_cart": "Warenkorb ansehen",
"checkout": "Zur Kasse",
"continue_shopping": "Weiter einkaufen",
"start_shopping": "Einkaufen starten",
"empty_cart": "Ihr Warenkorb ist leer",
"cart_total": "Warenkorbsumme",
"proceed_checkout": "Zur Kasse gehen",
"payment": "Zahlung",
"place_order": "Bestellung aufgeben",
"order_placed": "Bestellung erfolgreich aufgegeben",
"thank_you": "Vielen Dank für Ihre Bestellung",
"order_confirmation": "Bestellbestätigung"
},
"footer": {
"all_rights_reserved": "Alle Rechte vorbehalten",
"powered_by": "Unterstützt von"
@@ -471,206 +191,5 @@
"time": "HH:mm",
"datetime": "DD.MM.YYYY HH:mm",
"currency": "{amount} {symbol}"
},
"platform": {
"nav": {
"pricing": "Preise",
"find_shop": "Finden Sie Ihren Shop",
"start_trial": "Kostenlos testen",
"admin_login": "Admin-Login",
"vendor_login": "Händler-Login",
"toggle_menu": "Menü umschalten",
"toggle_dark_mode": "Dunkelmodus umschalten"
},
"hero": {
"badge": "{trial_days}-Tage kostenlose Testversion - Keine Kreditkarte erforderlich",
"title": "Leichtes OMS für Letzshop-Verkäufer",
"subtitle": "Bestellverwaltung, Lager und Rechnungsstellung für den luxemburgischen E-Commerce. Schluss mit Tabellenkalkulationen. Führen Sie Ihr Geschäft.",
"cta_trial": "Kostenlos testen",
"cta_find_shop": "Finden Sie Ihren Letzshop"
},
"pricing": {
"title": "Einfache, transparente Preise",
"subtitle": "Wählen Sie den Plan, der zu Ihrem Unternehmen passt. Alle Pläne beinhalten eine {trial_days}-tägige kostenlose Testversion.",
"monthly": "Monatlich",
"annual": "Jährlich",
"save_months": "Sparen Sie 2 Monate!",
"most_popular": "AM BELIEBTESTEN",
"recommended": "EMPFOHLEN",
"contact_sales": "Kontaktieren Sie uns",
"start_trial": "Kostenlos testen",
"per_month": "/Monat",
"per_year": "/Jahr",
"custom": "Individuell",
"orders_per_month": "{count} Bestellungen/Monat",
"unlimited_orders": "Unbegrenzte Bestellungen",
"products_limit": "{count} Produkte",
"unlimited_products": "Unbegrenzte Produkte",
"team_members": "{count} Teammitglieder",
"unlimited_team": "Unbegrenztes Team",
"letzshop_sync": "Letzshop-Synchronisierung",
"eu_vat_invoicing": "EU-MwSt-Rechnungen",
"analytics_dashboard": "Analyse-Dashboard",
"api_access": "API-Zugang",
"multi_channel": "Multi-Channel-Integration",
"products": "Produkte",
"team_member": "Teammitglied",
"unlimited": "Unbegrenzt",
"order_history": "Monate Bestellhistorie",
"trial_note": "Alle Pläne beinhalten eine {trial_days}-tägige kostenlose Testversion. Keine Kreditkarte erforderlich.",
"back_home": "Zurück zur Startseite"
},
"features": {
"letzshop_sync": "Letzshop-Synchronisierung",
"inventory_basic": "Grundlegende Lagerverwaltung",
"inventory_locations": "Lagerstandorte",
"inventory_purchase_orders": "Bestellungen",
"invoice_lu": "Luxemburg-MwSt-Rechnungen",
"invoice_eu_vat": "EU-MwSt-Rechnungen",
"invoice_bulk": "Massenrechnungen",
"customer_view": "Kundenliste",
"customer_export": "Kundenexport",
"analytics_dashboard": "Analyse-Dashboard",
"accounting_export": "Buchhaltungsexport",
"api_access": "API-Zugang",
"automation_rules": "Automatisierungsregeln",
"team_roles": "Teamrollen und Berechtigungen",
"white_label": "White-Label-Option",
"multi_vendor": "Multi-Händler-Unterstützung",
"custom_integrations": "Individuelle Integrationen",
"sla_guarantee": "SLA-Garantie",
"dedicated_support": "Dedizierter Kundenbetreuer"
},
"addons": {
"title": "Erweitern Sie Ihre Plattform",
"subtitle": "Fügen Sie Ihre Marke, professionelle E-Mail und erweiterte Sicherheit hinzu.",
"per_year": "/Jahr",
"per_month": "/Monat",
"custom_domain": "Eigene Domain",
"custom_domain_desc": "Nutzen Sie Ihre eigene Domain (meinedomain.com)",
"premium_ssl": "Premium SSL",
"premium_ssl_desc": "EV-Zertifikat für Vertrauenssiegel",
"email_package": "E-Mail-Paket",
"email_package_desc": "Professionelle E-Mail-Adressen"
},
"find_shop": {
"title": "Finden Sie Ihren Letzshop",
"subtitle": "Verkaufen Sie bereits auf Letzshop? Geben Sie Ihre Shop-URL ein, um zu beginnen.",
"placeholder": "Geben Sie Ihre Letzshop-URL ein (z.B. letzshop.lu/vendors/mein-shop)",
"button": "Meinen Shop finden",
"claim_shop": "Diesen Shop beanspruchen",
"already_claimed": "Bereits beansprucht",
"no_account": "Sie haben kein Letzshop-Konto?",
"signup_letzshop": "Registrieren Sie sich zuerst bei Letzshop",
"then_connect": ", dann kommen Sie zurück, um Ihren Shop zu verbinden.",
"search_placeholder": "Letzshop-URL oder Shopname eingeben...",
"search_button": "Suchen",
"examples": "Beispiele:",
"claim_button": "Diesen Shop beanspruchen und kostenlos testen",
"not_found": "Wir konnten keinen Letzshop mit dieser URL finden. Bitte überprüfen Sie und versuchen Sie es erneut.",
"or_signup": "Oder registrieren Sie sich ohne Letzshop-Verbindung",
"need_help": "Brauchen Sie Hilfe?",
"no_account_yet": "Sie haben noch kein Letzshop-Konto? Kein Problem!",
"create_letzshop": "Letzshop-Konto erstellen",
"signup_without": "Ohne Letzshop registrieren",
"looking_up": "Suche Ihren Shop...",
"found": "Gefunden:",
"claimed_badge": "Bereits beansprucht"
},
"signup": {
"step_plan": "Plan wählen",
"step_shop": "Shop beanspruchen",
"step_account": "Konto",
"step_payment": "Zahlung",
"choose_plan": "Wählen Sie Ihren Plan",
"save_percent": "Sparen Sie {percent}%",
"trial_info": "Wir erfassen Ihre Zahlungsdaten, aber Sie werden erst nach Ende der Testphase belastet.",
"connect_shop": "Verbinden Sie Ihren Letzshop",
"connect_optional": "Optional: Verknüpfen Sie Ihr Letzshop-Konto, um Bestellungen automatisch zu synchronisieren.",
"connect_continue": "Verbinden und fortfahren",
"skip_step": "Diesen Schritt überspringen",
"create_account": "Erstellen Sie Ihr Konto",
"first_name": "Vorname",
"last_name": "Nachname",
"company_name": "Firmenname",
"email": "E-Mail",
"password": "Passwort",
"password_hint": "Mindestens 8 Zeichen",
"continue": "Weiter",
"continue_payment": "Weiter zur Zahlung",
"back": "Zurück",
"add_payment": "Zahlungsmethode hinzufügen",
"no_charge_note": "Sie werden erst nach Ablauf Ihrer {trial_days}-tägigen Testphase belastet.",
"processing": "Verarbeitung...",
"start_trial": "Kostenlose Testversion starten",
"creating_account": "Erstelle Ihr Konto..."
},
"success": {
"title": "Willkommen bei Wizamart!",
"subtitle": "Ihr Konto wurde erstellt und Ihre {trial_days}-tägige kostenlose Testphase hat begonnen.",
"what_next": "Was kommt als Nächstes?",
"step_connect": "Letzshop verbinden:",
"step_connect_desc": "Fügen Sie Ihren API-Schlüssel hinzu, um Bestellungen automatisch zu synchronisieren.",
"step_invoicing": "Rechnungsstellung einrichten:",
"step_invoicing_desc": "Konfigurieren Sie Ihre Rechnungseinstellungen für die luxemburgische Compliance.",
"step_products": "Produkte importieren:",
"step_products_desc": "Synchronisieren Sie Ihren Produktkatalog von Letzshop.",
"go_to_dashboard": "Zum Dashboard",
"login_dashboard": "Zum Dashboard anmelden",
"need_help": "Brauchen Sie Hilfe beim Einstieg?",
"contact_support": "Kontaktieren Sie unser Support-Team"
},
"cta": {
"title": "Bereit, Ihre Bestellungen zu optimieren?",
"subtitle": "Schließen Sie sich Letzshop-Händlern an, die Wizamart für ihre Bestellverwaltung vertrauen. Starten Sie heute Ihre {trial_days}-tägige kostenlose Testversion.",
"button": "Kostenlos testen"
},
"footer": {
"tagline": "Leichtes OMS für Letzshop-Verkäufer. Verwalten Sie Bestellungen, Lager und Rechnungen.",
"quick_links": "Schnelllinks",
"platform": "Plattform",
"contact": "Kontakt",
"copyright": "© {year} Wizamart. Entwickelt für den luxemburgischen E-Commerce.",
"privacy": "Datenschutzerklärung",
"terms": "Nutzungsbedingungen",
"about": "Über uns",
"faq": "FAQ",
"contact_us": "Kontaktieren Sie uns"
},
"modern": {
"badge_integration": "Offizielle Integration",
"badge_connect": "In 2 Minuten verbinden",
"hero_title_1": "Für den luxemburgischen E-Commerce entwickelt",
"hero_title_2": "Das Back-Office, das Letzshop Ihnen nicht gibt",
"hero_subtitle": "Synchronisieren Sie Bestellungen, verwalten Sie Lager, erstellen Sie Rechnungen mit korrekter MwSt und besitzen Sie Ihre Kundendaten. Alles an einem Ort.",
"cta_trial": "{trial_days}-Tage kostenlos testen",
"cta_how": "Sehen Sie, wie es funktioniert",
"hero_note": "Keine Kreditkarte erforderlich. Einrichtung in 5 Minuten. Jederzeit kündbar.",
"pain_title": "Kommt Ihnen das bekannt vor?",
"pain_subtitle": "Das sind die täglichen Frustrationen von Letzshop-Verkäufern",
"pain_manual": "Manuelle Bestelleingabe",
"pain_manual_desc": "Bestellungen von Letzshop in Tabellenkalkulationen kopieren. Jeden. Einzelnen. Tag.",
"pain_inventory": "Lagerchaos",
"pain_inventory_desc": "Der Bestand in Letzshop stimmt nicht mit der Realität überein. Überverkäufe passieren.",
"pain_vat": "Falsche MwSt-Rechnungen",
"pain_vat_desc": "EU-Kunden brauchen die korrekte MwSt. Ihr Buchhalter beschwert sich.",
"pain_customers": "Verlorene Kunden",
"pain_customers_desc": "Letzshop besitzt Ihre Kundendaten. Sie können nicht retargeten oder Loyalität aufbauen.",
"how_title": "So funktioniert es",
"how_subtitle": "Vom Chaos zur Kontrolle in 4 Schritten",
"how_step1": "Letzshop verbinden",
"how_step1_desc": "Geben Sie Ihre Letzshop-API-Zugangsdaten ein. In 2 Minuten erledigt, keine technischen Kenntnisse erforderlich.",
"how_step2": "Bestellungen kommen rein",
"how_step2_desc": "Bestellungen werden automatisch synchronisiert. Bestätigen und Tracking direkt von Wizamart hinzufügen.",
"how_step3": "Rechnungen erstellen",
"how_step3_desc": "Ein Klick, um konforme PDF-Rechnungen mit korrekter MwSt für jedes EU-Land zu erstellen.",
"how_step4": "Ihr Geschäft ausbauen",
"how_step4_desc": "Exportieren Sie Kunden für Marketing. Verfolgen Sie Lagerbestände. Konzentrieren Sie sich auf den Verkauf, nicht auf Tabellenkalkulationen.",
"features_title": "Alles, was ein Letzshop-Verkäufer braucht",
"features_subtitle": "Die operativen Tools, die Letzshop nicht bietet",
"cta_final_title": "Bereit, die Kontrolle über Ihr Letzshop-Geschäft zu übernehmen?",
"cta_final_subtitle": "Schließen Sie sich luxemburgischen Händlern an, die aufgehört haben, gegen Tabellenkalkulationen zu kämpfen, und begonnen haben, ihr Geschäft auszubauen.",
"cta_final_note": "Keine Kreditkarte erforderlich. Einrichtung in 5 Minuten. Volle Professional-Funktionen während der Testphase."
}
}
}

View File

@@ -135,257 +135,6 @@
"account": "Compte",
"wishlist": "Liste de souhaits"
},
"dashboard": {
"title": "Tableau de bord",
"welcome": "Bienvenue",
"overview": "Vue d'ensemble",
"quick_stats": "Statistiques rapides",
"recent_activity": "Activité récente",
"total_products": "Total des produits",
"total_orders": "Total des commandes",
"total_customers": "Total des clients",
"total_revenue": "Chiffre d'affaires total",
"active_products": "Produits actifs",
"pending_orders": "Commandes en attente",
"new_customers": "Nouveaux clients",
"today": "Aujourd'hui",
"this_week": "Cette semaine",
"this_month": "Ce mois",
"this_year": "Cette année",
"error_loading": "Erreur lors du chargement du tableau de bord",
"no_data": "Aucune donnée disponible"
},
"products": {
"title": "Produits",
"product": "Produit",
"add_product": "Ajouter un produit",
"edit_product": "Modifier le produit",
"delete_product": "Supprimer le produit",
"product_name": "Nom du produit",
"product_code": "Code produit",
"sku": "SKU",
"price": "Prix",
"sale_price": "Prix de vente",
"cost": "Coût",
"stock": "Stock",
"in_stock": "En stock",
"out_of_stock": "Rupture de stock",
"low_stock": "Stock faible",
"availability": "Disponibilité",
"available": "Disponible",
"unavailable": "Indisponible",
"brand": "Marque",
"category": "Catégorie",
"categories": "Catégories",
"image": "Image",
"images": "Images",
"main_image": "Image principale",
"gallery": "Galerie",
"weight": "Poids",
"dimensions": "Dimensions",
"color": "Couleur",
"size": "Taille",
"material": "Matériau",
"condition": "État",
"new": "Neuf",
"used": "Occasion",
"refurbished": "Reconditionné",
"no_products": "Aucun produit trouvé",
"search_products": "Rechercher des produits...",
"filter_by_category": "Filtrer par catégorie",
"filter_by_status": "Filtrer par statut",
"sort_by": "Trier par",
"sort_newest": "Plus récent",
"sort_oldest": "Plus ancien",
"sort_price_low": "Prix : croissant",
"sort_price_high": "Prix : décroissant",
"sort_name_az": "Nom : A-Z",
"sort_name_za": "Nom : Z-A"
},
"orders": {
"title": "Commandes",
"order": "Commande",
"order_id": "ID de commande",
"order_number": "Numéro de commande",
"order_date": "Date de commande",
"order_status": "Statut de la commande",
"order_details": "Détails de la commande",
"order_items": "Articles de la commande",
"order_total": "Total de la commande",
"subtotal": "Sous-total",
"shipping": "Livraison",
"tax": "Taxe",
"discount": "Remise",
"customer": "Client",
"shipping_address": "Adresse de livraison",
"billing_address": "Adresse de facturation",
"payment_method": "Mode de paiement",
"payment_status": "Statut du paiement",
"tracking": "Suivi",
"tracking_number": "Numéro de suivi",
"carrier": "Transporteur",
"no_orders": "Aucune commande trouvée",
"search_orders": "Rechercher des commandes...",
"filter_by_status": "Filtrer par statut",
"status_pending": "En attente",
"status_processing": "En cours",
"status_shipped": "Expédiée",
"status_delivered": "Livrée",
"status_cancelled": "Annulée",
"status_refunded": "Remboursée",
"status_confirmed": "Confirmée",
"status_rejected": "Rejetée",
"confirm_order": "Confirmer la commande",
"reject_order": "Rejeter la commande",
"set_tracking": "Définir le suivi",
"view_details": "Voir les détails"
},
"customers": {
"title": "Clients",
"customer": "Client",
"add_customer": "Ajouter un client",
"edit_customer": "Modifier le client",
"customer_name": "Nom du client",
"customer_email": "E-mail du client",
"customer_phone": "Téléphone du client",
"customer_number": "Numéro client",
"first_name": "Prénom",
"last_name": "Nom",
"company": "Entreprise",
"total_orders": "Total des commandes",
"total_spent": "Total dépensé",
"last_order": "Dernière commande",
"registered": "Inscrit",
"no_customers": "Aucun client trouvé",
"search_customers": "Rechercher des clients..."
},
"inventory": {
"title": "Inventaire",
"stock_level": "Niveau de stock",
"quantity": "Quantité",
"reorder_point": "Seuil de réapprovisionnement",
"adjust_stock": "Ajuster le stock",
"stock_in": "Entrée de stock",
"stock_out": "Sortie de stock",
"transfer": "Transfert",
"history": "Historique",
"low_stock_alert": "Alerte stock faible",
"out_of_stock_alert": "Alerte rupture de stock"
},
"marketplace": {
"title": "Marketplace",
"import": "Importer",
"export": "Exporter",
"sync": "Synchroniser",
"source": "Source",
"source_url": "URL source",
"import_products": "Importer des produits",
"start_import": "Démarrer l'importation",
"importing": "Importation en cours...",
"import_complete": "Importation terminée",
"import_failed": "Échec de l'importation",
"import_history": "Historique des importations",
"job_id": "ID du travail",
"started_at": "Démarré à",
"completed_at": "Terminé à",
"duration": "Durée",
"imported_count": "Importés",
"error_count": "Erreurs",
"total_processed": "Total traité",
"progress": "Progression",
"no_import_jobs": "Aucune importation pour le moment",
"start_first_import": "Lancez votre première importation avec le formulaire ci-dessus"
},
"letzshop": {
"title": "Intégration Letzshop",
"connection": "Connexion",
"credentials": "Identifiants",
"api_key": "Clé API",
"api_endpoint": "Point d'accès API",
"auto_sync": "Synchronisation automatique",
"sync_interval": "Intervalle de synchronisation",
"every_hour": "Toutes les heures",
"every_day": "Tous les jours",
"test_connection": "Tester la connexion",
"save_credentials": "Enregistrer les identifiants",
"connection_success": "Connexion réussie",
"connection_failed": "Échec de la connexion",
"last_sync": "Dernière synchronisation",
"sync_status": "Statut de synchronisation",
"import_orders": "Importer les commandes",
"export_products": "Exporter les produits",
"no_credentials": "Configurez votre clé API dans les paramètres pour commencer",
"carriers": {
"dhl": "DHL",
"ups": "UPS",
"fedex": "FedEx",
"dpd": "DPD",
"gls": "GLS",
"post_luxembourg": "Post Luxembourg",
"other": "Autre"
}
},
"team": {
"title": "Équipe",
"members": "Membres",
"add_member": "Ajouter un membre",
"invite_member": "Inviter un membre",
"remove_member": "Retirer un membre",
"role": "Rôle",
"owner": "Propriétaire",
"manager": "Gestionnaire",
"editor": "Éditeur",
"viewer": "Lecteur",
"permissions": "Permissions",
"pending_invitations": "Invitations en attente",
"invitation_sent": "Invitation envoyée",
"invitation_accepted": "Invitation acceptée"
},
"settings": {
"title": "Paramètres",
"general": "Général",
"store": "Boutique",
"store_name": "Nom de la boutique",
"store_description": "Description de la boutique",
"contact_email": "E-mail de contact",
"contact_phone": "Téléphone de contact",
"business_address": "Adresse professionnelle",
"tax_number": "Numéro de TVA",
"currency": "Devise",
"timezone": "Fuseau horaire",
"language": "Langue",
"language_settings": "Paramètres de langue",
"default_language": "Langue par défaut",
"dashboard_language": "Langue du tableau de bord",
"storefront_language": "Langue de la boutique",
"enabled_languages": "Langues activées",
"notifications": "Notifications",
"email_notifications": "Notifications par e-mail",
"integrations": "Intégrations",
"api_keys": "Clés API",
"webhooks": "Webhooks",
"save_settings": "Enregistrer les paramètres",
"settings_saved": "Paramètres enregistrés avec succès"
},
"profile": {
"title": "Profil",
"my_profile": "Mon profil",
"edit_profile": "Modifier le profil",
"personal_info": "Informations personnelles",
"first_name": "Prénom",
"last_name": "Nom",
"email": "E-mail",
"phone": "Téléphone",
"avatar": "Avatar",
"change_avatar": "Changer l'avatar",
"security": "Sécurité",
"two_factor": "Authentification à deux facteurs",
"sessions": "Sessions actives",
"preferences": "Préférences",
"language_preference": "Préférence de langue",
"save_profile": "Enregistrer le profil",
"profile_updated": "Profil mis à jour avec succès"
},
"errors": {
"generic": "Une erreur s'est produite",
"not_found": "Non trouvé",
@@ -414,35 +163,6 @@
"logout_title": "Confirmer la déconnexion",
"logout_message": "Êtes-vous sûr de vouloir vous déconnecter ?"
},
"notifications": {
"title": "Notifications",
"mark_read": "Marquer comme lu",
"mark_all_read": "Tout marquer comme lu",
"no_notifications": "Aucune notification",
"new_order": "Nouvelle commande",
"order_updated": "Commande mise à jour",
"low_stock": "Alerte stock faible",
"import_complete": "Importation terminée",
"import_failed": "Échec de l'importation"
},
"shop": {
"welcome": "Bienvenue dans notre boutique",
"browse_products": "Parcourir les produits",
"add_to_cart": "Ajouter au panier",
"buy_now": "Acheter maintenant",
"view_cart": "Voir le panier",
"checkout": "Paiement",
"continue_shopping": "Continuer vos achats",
"start_shopping": "Commencer vos achats",
"empty_cart": "Votre panier est vide",
"cart_total": "Total du panier",
"proceed_checkout": "Passer à la caisse",
"payment": "Paiement",
"place_order": "Passer la commande",
"order_placed": "Commande passée avec succès",
"thank_you": "Merci pour votre commande",
"order_confirmation": "Confirmation de commande"
},
"footer": {
"all_rights_reserved": "Tous droits réservés",
"powered_by": "Propulsé par"
@@ -471,206 +191,5 @@
"time": "HH:mm",
"datetime": "DD/MM/YYYY HH:mm",
"currency": "{amount} {symbol}"
},
"platform": {
"nav": {
"pricing": "Tarifs",
"find_shop": "Trouvez votre boutique",
"start_trial": "Essai gratuit",
"admin_login": "Connexion Admin",
"vendor_login": "Connexion Vendeur",
"toggle_menu": "Basculer le menu",
"toggle_dark_mode": "Basculer le mode sombre"
},
"hero": {
"badge": "Essai gratuit de {trial_days} jours - Aucune carte de crédit requise",
"title": "OMS léger pour les vendeurs Letzshop",
"subtitle": "Gestion des commandes, stocks et facturation conçue pour le e-commerce luxembourgeois. Arrêtez de jongler avec les tableurs. Gérez votre entreprise.",
"cta_trial": "Essai gratuit",
"cta_find_shop": "Trouvez votre boutique Letzshop"
},
"pricing": {
"title": "Tarification simple et transparente",
"subtitle": "Choisissez le plan adapté à votre entreprise. Tous les plans incluent un essai gratuit de {trial_days} jours.",
"monthly": "Mensuel",
"annual": "Annuel",
"save_months": "Économisez 2 mois !",
"most_popular": "LE PLUS POPULAIRE",
"recommended": "RECOMMANDÉ",
"contact_sales": "Contactez-nous",
"start_trial": "Essai gratuit",
"per_month": "/mois",
"per_year": "/an",
"custom": "Sur mesure",
"orders_per_month": "{count} commandes/mois",
"unlimited_orders": "Commandes illimitées",
"products_limit": "{count} produits",
"unlimited_products": "Produits illimités",
"team_members": "{count} membres d'équipe",
"unlimited_team": "Équipe illimitée",
"letzshop_sync": "Synchronisation Letzshop",
"eu_vat_invoicing": "Facturation TVA UE",
"analytics_dashboard": "Tableau de bord analytique",
"api_access": "Accès API",
"multi_channel": "Intégration multi-canal",
"products": "produits",
"team_member": "membre d'équipe",
"unlimited": "Illimité",
"order_history": "mois d'historique",
"trial_note": "Tous les plans incluent un essai gratuit de {trial_days} jours. Aucune carte de crédit requise.",
"back_home": "Retour à l'accueil"
},
"features": {
"letzshop_sync": "Synchronisation Letzshop",
"inventory_basic": "Gestion de stock de base",
"inventory_locations": "Emplacements d'entrepôt",
"inventory_purchase_orders": "Bons de commande",
"invoice_lu": "Facturation TVA Luxembourg",
"invoice_eu_vat": "Facturation TVA UE",
"invoice_bulk": "Facturation en masse",
"customer_view": "Liste des clients",
"customer_export": "Export clients",
"analytics_dashboard": "Tableau de bord analytique",
"accounting_export": "Export comptable",
"api_access": "Accès API",
"automation_rules": "Règles d'automatisation",
"team_roles": "Rôles et permissions",
"white_label": "Option marque blanche",
"multi_vendor": "Support multi-vendeurs",
"custom_integrations": "Intégrations personnalisées",
"sla_guarantee": "Garantie SLA",
"dedicated_support": "Gestionnaire de compte dédié"
},
"addons": {
"title": "Améliorez votre plateforme",
"subtitle": "Ajoutez votre marque, e-mail professionnel et sécurité renforcée.",
"per_year": "/an",
"per_month": "/mois",
"custom_domain": "Domaine personnalisé",
"custom_domain_desc": "Utilisez votre propre domaine (mondomaine.com)",
"premium_ssl": "SSL Premium",
"premium_ssl_desc": "Certificat EV pour les badges de confiance",
"email_package": "Pack Email",
"email_package_desc": "Adresses e-mail professionnelles"
},
"find_shop": {
"title": "Trouvez votre boutique Letzshop",
"subtitle": "Vous vendez déjà sur Letzshop ? Entrez l'URL de votre boutique pour commencer.",
"placeholder": "Entrez votre URL Letzshop (ex: letzshop.lu/vendors/ma-boutique)",
"button": "Trouver ma boutique",
"claim_shop": "Réclamer cette boutique",
"already_claimed": "Déjà réclamée",
"no_account": "Vous n'avez pas de compte Letzshop ?",
"signup_letzshop": "Inscrivez-vous d'abord sur Letzshop",
"then_connect": ", puis revenez connecter votre boutique.",
"search_placeholder": "Entrez l'URL Letzshop ou le nom de la boutique...",
"search_button": "Rechercher",
"examples": "Exemples :",
"claim_button": "Réclamez cette boutique et démarrez l'essai gratuit",
"not_found": "Nous n'avons pas trouvé de boutique Letzshop avec cette URL. Vérifiez et réessayez.",
"or_signup": "Ou inscrivez-vous sans connexion Letzshop",
"need_help": "Besoin d'aide ?",
"no_account_yet": "Vous n'avez pas encore de compte Letzshop ? Pas de problème !",
"create_letzshop": "Créer un compte Letzshop",
"signup_without": "S'inscrire sans Letzshop",
"looking_up": "Recherche de votre boutique...",
"found": "Trouvé :",
"claimed_badge": "Déjà réclamée"
},
"signup": {
"step_plan": "Choisir le plan",
"step_shop": "Réclamer la boutique",
"step_account": "Compte",
"step_payment": "Paiement",
"choose_plan": "Choisissez votre plan",
"save_percent": "Économisez {percent}%",
"trial_info": "Nous collecterons vos informations de paiement, mais vous ne serez pas débité avant la fin de l'essai.",
"connect_shop": "Connectez votre boutique Letzshop",
"connect_optional": "Optionnel : Liez votre compte Letzshop pour synchroniser automatiquement les commandes.",
"connect_continue": "Connecter et continuer",
"skip_step": "Passer cette étape",
"create_account": "Créez votre compte",
"first_name": "Prénom",
"last_name": "Nom",
"company_name": "Nom de l'entreprise",
"email": "E-mail",
"password": "Mot de passe",
"password_hint": "Minimum 8 caractères",
"continue": "Continuer",
"continue_payment": "Continuer vers le paiement",
"back": "Retour",
"add_payment": "Ajouter un moyen de paiement",
"no_charge_note": "Vous ne serez pas débité avant la fin de votre essai de {trial_days} jours.",
"processing": "Traitement en cours...",
"start_trial": "Démarrer l'essai gratuit",
"creating_account": "Création de votre compte..."
},
"success": {
"title": "Bienvenue sur Wizamart !",
"subtitle": "Votre compte a été créé et votre essai gratuit de {trial_days} jours a commencé.",
"what_next": "Et maintenant ?",
"step_connect": "Connecter Letzshop :",
"step_connect_desc": "Ajoutez votre clé API pour commencer à synchroniser automatiquement les commandes.",
"step_invoicing": "Configurer la facturation :",
"step_invoicing_desc": "Configurez vos paramètres de facturation pour la conformité luxembourgeoise.",
"step_products": "Importer les produits :",
"step_products_desc": "Synchronisez votre catalogue de produits depuis Letzshop.",
"go_to_dashboard": "Aller au tableau de bord",
"login_dashboard": "Connexion au tableau de bord",
"need_help": "Besoin d'aide pour démarrer ?",
"contact_support": "Contactez notre équipe support"
},
"cta": {
"title": "Prêt à optimiser vos commandes ?",
"subtitle": "Rejoignez les vendeurs Letzshop qui font confiance à Wizamart pour leur gestion de commandes. Commencez votre essai gratuit de {trial_days} jours aujourd'hui.",
"button": "Essai gratuit"
},
"footer": {
"tagline": "OMS léger pour les vendeurs Letzshop. Gérez commandes, stocks et facturation.",
"quick_links": "Liens rapides",
"platform": "Plateforme",
"contact": "Contact",
"copyright": "© {year} Wizamart. Conçu pour le e-commerce luxembourgeois.",
"privacy": "Politique de confidentialité",
"terms": "Conditions d'utilisation",
"about": "À propos",
"faq": "FAQ",
"contact_us": "Nous contacter"
},
"modern": {
"badge_integration": "Intégration officielle",
"badge_connect": "Connexion en 2 minutes",
"hero_title_1": "Conçu pour le e-commerce luxembourgeois",
"hero_title_2": "Le back-office que Letzshop ne vous donne pas",
"hero_subtitle": "Synchronisez les commandes, gérez les stocks, générez des factures avec la TVA correcte et possédez vos données clients. Tout en un seul endroit.",
"cta_trial": "Essai gratuit de {trial_days} jours",
"cta_how": "Voir comment ça marche",
"hero_note": "Aucune carte de crédit requise. Configuration en 5 minutes. Annulez à tout moment.",
"pain_title": "Ça vous dit quelque chose ?",
"pain_subtitle": "Ce sont les frustrations quotidiennes des vendeurs Letzshop",
"pain_manual": "Saisie manuelle des commandes",
"pain_manual_desc": "Copier-coller les commandes de Letzshop vers des tableurs. Chaque. Jour.",
"pain_inventory": "Chaos des stocks",
"pain_inventory_desc": "Le stock dans Letzshop ne correspond pas à la réalité. Les surventes arrivent.",
"pain_vat": "Mauvaises factures TVA",
"pain_vat_desc": "Les clients UE ont besoin de la TVA correcte. Votre comptable se plaint.",
"pain_customers": "Clients perdus",
"pain_customers_desc": "Letzshop possède vos données clients. Vous ne pouvez pas les recibler ou fidéliser.",
"how_title": "Comment ça marche",
"how_subtitle": "Du chaos au contrôle en 4 étapes",
"how_step1": "Connecter Letzshop",
"how_step1_desc": "Entrez vos identifiants API Letzshop. Fait en 2 minutes, aucune compétence technique requise.",
"how_step2": "Les commandes arrivent",
"how_step2_desc": "Les commandes se synchronisent automatiquement. Confirmez et ajoutez le suivi directement depuis Wizamart.",
"how_step3": "Générer des factures",
"how_step3_desc": "Un clic pour créer des factures PDF conformes avec la TVA correcte pour tout pays UE.",
"how_step4": "Développez votre entreprise",
"how_step4_desc": "Exportez les clients pour le marketing. Suivez les stocks. Concentrez-vous sur la vente, pas les tableurs.",
"features_title": "Tout ce dont un vendeur Letzshop a besoin",
"features_subtitle": "Les outils opérationnels que Letzshop ne fournit pas",
"cta_final_title": "Prêt à prendre le contrôle de votre entreprise Letzshop ?",
"cta_final_subtitle": "Rejoignez les vendeurs luxembourgeois qui ont arrêté de lutter contre les tableurs et ont commencé à développer leur entreprise.",
"cta_final_note": "Aucune carte de crédit requise. Configuration en 5 minutes. Toutes les fonctionnalités Pro pendant l'essai."
}
}
}

View File

@@ -135,257 +135,6 @@
"account": "Kont",
"wishlist": "Wonschlëscht"
},
"dashboard": {
"title": "Dashboard",
"welcome": "Wëllkomm zréck",
"overview": "Iwwersiicht",
"quick_stats": "Séier Statistiken",
"recent_activity": "Rezent Aktivitéit",
"total_products": "Produkter insgesamt",
"total_orders": "Bestellungen insgesamt",
"total_customers": "Clienten insgesamt",
"total_revenue": "Ëmsaz insgesamt",
"active_products": "Aktiv Produkter",
"pending_orders": "Aussteesend Bestellungen",
"new_customers": "Nei Clienten",
"today": "Haut",
"this_week": "Dës Woch",
"this_month": "Dëse Mount",
"this_year": "Dëst Joer",
"error_loading": "Feeler beim Lueden vum Dashboard",
"no_data": "Keng Donnéeën disponibel"
},
"products": {
"title": "Produkter",
"product": "Produkt",
"add_product": "Produkt derbäisetzen",
"edit_product": "Produkt änneren",
"delete_product": "Produkt läschen",
"product_name": "Produktnumm",
"product_code": "Produktcode",
"sku": "SKU",
"price": "Präis",
"sale_price": "Verkafspräis",
"cost": "Käschten",
"stock": "Lager",
"in_stock": "Op Lager",
"out_of_stock": "Net op Lager",
"low_stock": "Niddregen Stock",
"availability": "Disponibilitéit",
"available": "Disponibel",
"unavailable": "Net disponibel",
"brand": "Mark",
"category": "Kategorie",
"categories": "Kategorien",
"image": "Bild",
"images": "Biller",
"main_image": "Haaptbild",
"gallery": "Galerie",
"weight": "Gewiicht",
"dimensions": "Dimensiounen",
"color": "Faarf",
"size": "Gréisst",
"material": "Material",
"condition": "Zoustand",
"new": "Nei",
"used": "Gebraucht",
"refurbished": "Iwwerholl",
"no_products": "Keng Produkter fonnt",
"search_products": "Produkter sichen...",
"filter_by_category": "No Kategorie filteren",
"filter_by_status": "No Status filteren",
"sort_by": "Sortéieren no",
"sort_newest": "Neisten",
"sort_oldest": "Eelsten",
"sort_price_low": "Präis: Niddreg op Héich",
"sort_price_high": "Präis: Héich op Niddreg",
"sort_name_az": "Numm: A-Z",
"sort_name_za": "Numm: Z-A"
},
"orders": {
"title": "Bestellungen",
"order": "Bestellung",
"order_id": "Bestellungs-ID",
"order_number": "Bestellungsnummer",
"order_date": "Bestellungsdatum",
"order_status": "Bestellungsstatus",
"order_details": "Bestellungsdetailer",
"order_items": "Bestellungsartikelen",
"order_total": "Bestellungstotal",
"subtotal": "Subtotal",
"shipping": "Versand",
"tax": "Steier",
"discount": "Rabatt",
"customer": "Client",
"shipping_address": "Liwweradress",
"billing_address": "Rechnungsadress",
"payment_method": "Bezuelmethod",
"payment_status": "Bezuelstatus",
"tracking": "Tracking",
"tracking_number": "Trackingnummer",
"carrier": "Transporteur",
"no_orders": "Keng Bestellunge fonnt",
"search_orders": "Bestellunge sichen...",
"filter_by_status": "No Status filteren",
"status_pending": "Aussteesend",
"status_processing": "A Veraarbechtung",
"status_shipped": "Verschéckt",
"status_delivered": "Geliwwert",
"status_cancelled": "Annuléiert",
"status_refunded": "Rembourséiert",
"status_confirmed": "Bestätegt",
"status_rejected": "Ofgeleent",
"confirm_order": "Bestellung bestätegen",
"reject_order": "Bestellung oflehnen",
"set_tracking": "Tracking setzen",
"view_details": "Detailer kucken"
},
"customers": {
"title": "Clienten",
"customer": "Client",
"add_customer": "Client derbäisetzen",
"edit_customer": "Client änneren",
"customer_name": "Clientennumm",
"customer_email": "Client E-Mail",
"customer_phone": "Client Telefon",
"customer_number": "Clientennummer",
"first_name": "Virnumm",
"last_name": "Nonumm",
"company": "Firma",
"total_orders": "Bestellungen insgesamt",
"total_spent": "Total ausginn",
"last_order": "Lescht Bestellung",
"registered": "Registréiert",
"no_customers": "Keng Clienten fonnt",
"search_customers": "Clienten sichen..."
},
"inventory": {
"title": "Inventar",
"stock_level": "Lagerniveau",
"quantity": "Quantitéit",
"reorder_point": "Nobestellungspunkt",
"adjust_stock": "Lager upaassen",
"stock_in": "Lager eran",
"stock_out": "Lager eraus",
"transfer": "Transfer",
"history": "Geschicht",
"low_stock_alert": "Niddreg Lager Alarm",
"out_of_stock_alert": "Net op Lager Alarm"
},
"marketplace": {
"title": "Marchéplaz",
"import": "Import",
"export": "Export",
"sync": "Synchroniséieren",
"source": "Quell",
"source_url": "Quell URL",
"import_products": "Produkter importéieren",
"start_import": "Import starten",
"importing": "Importéieren...",
"import_complete": "Import fäerdeg",
"import_failed": "Import feelgeschloen",
"import_history": "Importgeschicht",
"job_id": "Job ID",
"started_at": "Ugefaang um",
"completed_at": "Fäerdeg um",
"duration": "Dauer",
"imported_count": "Importéiert",
"error_count": "Feeler",
"total_processed": "Total veraarbecht",
"progress": "Fortschrëtt",
"no_import_jobs": "Nach keng Import Jobs",
"start_first_import": "Start Ären éischten Import mat der Form uewendriwwer"
},
"letzshop": {
"title": "Letzshop Integratioun",
"connection": "Verbindung",
"credentials": "Umeldungsdaten",
"api_key": "API Schlëssel",
"api_endpoint": "API Endpunkt",
"auto_sync": "Automatesch Sync",
"sync_interval": "Sync Intervall",
"every_hour": "All Stonn",
"every_day": "All Dag",
"test_connection": "Verbindung testen",
"save_credentials": "Umeldungsdaten späicheren",
"connection_success": "Verbindung erfollegräich",
"connection_failed": "Verbindung feelgeschloen",
"last_sync": "Läschte Sync",
"sync_status": "Sync Status",
"import_orders": "Bestellungen importéieren",
"export_products": "Produkter exportéieren",
"no_credentials": "Konfiguréiert Ären API Schlëssel an den Astellungen fir unzefänken",
"carriers": {
"dhl": "DHL",
"ups": "UPS",
"fedex": "FedEx",
"dpd": "DPD",
"gls": "GLS",
"post_luxembourg": "Post Lëtzebuerg",
"other": "Anerer"
}
},
"team": {
"title": "Team",
"members": "Memberen",
"add_member": "Member derbäisetzen",
"invite_member": "Member invitéieren",
"remove_member": "Member ewechhuelen",
"role": "Roll",
"owner": "Proprietär",
"manager": "Manager",
"editor": "Editeur",
"viewer": "Betruechter",
"permissions": "Rechter",
"pending_invitations": "Aussteesend Invitatiounen",
"invitation_sent": "Invitatioun geschéckt",
"invitation_accepted": "Invitatioun ugeholl"
},
"settings": {
"title": "Astellungen",
"general": "Allgemeng",
"store": "Buttek",
"store_name": "Butteknumm",
"store_description": "Buttekbeschreiwung",
"contact_email": "Kontakt E-Mail",
"contact_phone": "Kontakt Telefon",
"business_address": "Geschäftsadress",
"tax_number": "Steiernummer",
"currency": "Wärung",
"timezone": "Zäitzon",
"language": "Sprooch",
"language_settings": "Sproochastellungen",
"default_language": "Standard Sprooch",
"dashboard_language": "Dashboard Sprooch",
"storefront_language": "Buttek Sprooch",
"enabled_languages": "Aktivéiert Sproochen",
"notifications": "Notifikatiounen",
"email_notifications": "E-Mail Notifikatiounen",
"integrations": "Integratiounen",
"api_keys": "API Schlësselen",
"webhooks": "Webhooks",
"save_settings": "Astellunge späicheren",
"settings_saved": "Astellungen erfollegräich gespäichert"
},
"profile": {
"title": "Profil",
"my_profile": "Mäi Profil",
"edit_profile": "Profil änneren",
"personal_info": "Perséinlech Informatiounen",
"first_name": "Virnumm",
"last_name": "Nonumm",
"email": "E-Mail",
"phone": "Telefon",
"avatar": "Avatar",
"change_avatar": "Avatar änneren",
"security": "Sécherheet",
"two_factor": "Zwee-Faktor Authentifikatioun",
"sessions": "Aktiv Sessiounen",
"preferences": "Astellungen",
"language_preference": "Sproochpräferenz",
"save_profile": "Profil späicheren",
"profile_updated": "Profil erfollegräich aktualiséiert"
},
"errors": {
"generic": "E Feeler ass opgetrueden",
"not_found": "Net fonnt",
@@ -414,35 +163,6 @@
"logout_title": "Ofmellen bestätegen",
"logout_message": "Sidd Dir sécher datt Dir Iech ofmelle wëllt?"
},
"notifications": {
"title": "Notifikatiounen",
"mark_read": "Als gelies markéieren",
"mark_all_read": "Alles als gelies markéieren",
"no_notifications": "Keng Notifikatiounen",
"new_order": "Nei Bestellung",
"order_updated": "Bestellung aktualiséiert",
"low_stock": "Niddreg Lager Alarm",
"import_complete": "Import fäerdeg",
"import_failed": "Import feelgeschloen"
},
"shop": {
"welcome": "Wëllkomm an eisem Buttek",
"browse_products": "Produkter duerchsichen",
"add_to_cart": "An de Kuerf",
"buy_now": "Elo kafen",
"view_cart": "Kuerf kucken",
"checkout": "Bezuelen",
"continue_shopping": "Weider akafen",
"start_shopping": "Ufänken mat Akafen",
"empty_cart": "Äre Kuerf ass eidel",
"cart_total": "Kuerf Total",
"proceed_checkout": "Zur Bezuelung goen",
"payment": "Bezuelung",
"place_order": "Bestellung opgi",
"order_placed": "Bestellung erfollegräich opginn",
"thank_you": "Merci fir Är Bestellung",
"order_confirmation": "Bestellungsbestätegung"
},
"footer": {
"all_rights_reserved": "All Rechter reservéiert",
"powered_by": "Ënnerstëtzt vun"
@@ -471,206 +191,5 @@
"time": "HH:mm",
"datetime": "DD.MM.YYYY HH:mm",
"currency": "{amount} {symbol}"
},
"platform": {
"nav": {
"pricing": "Präisser",
"find_shop": "Fannt Äre Buttek",
"start_trial": "Gratis Testen",
"admin_login": "Admin Login",
"vendor_login": "Händler Login",
"toggle_menu": "Menü wiesselen",
"toggle_dark_mode": "Däischter Modus wiesselen"
},
"hero": {
"badge": "{trial_days}-Deeg gratis Testversioun - Keng Kreditkaart néideg",
"title": "Liichtt OMS fir Letzshop Verkeefer",
"subtitle": "Bestellungsverwaltung, Lager an Rechnungsstellung fir de lëtzebuergeschen E-Commerce. Schluss mat Tabellen. Féiert Äert Geschäft.",
"cta_trial": "Gratis Testen",
"cta_find_shop": "Fannt Äre Letzshop Buttek"
},
"pricing": {
"title": "Einfach, transparent Präisser",
"subtitle": "Wielt de Plang deen zu Ärer Firma passt. All Pläng enthalen eng {trial_days}-Deeg gratis Testversioun.",
"monthly": "Monatslech",
"annual": "Jäerlech",
"save_months": "Spuert 2 Méint!",
"most_popular": "AM BELÉIFSTEN",
"recommended": "EMPFOHLEN",
"contact_sales": "Kontaktéiert eis",
"start_trial": "Gratis Testen",
"per_month": "/Mount",
"per_year": "/Joer",
"custom": "Personnaliséiert",
"orders_per_month": "{count} Bestellungen/Mount",
"unlimited_orders": "Onbegrenzt Bestellungen",
"products_limit": "{count} Produkter",
"unlimited_products": "Onbegrenzt Produkter",
"team_members": "{count} Teammemberen",
"unlimited_team": "Onbegrenzt Team",
"letzshop_sync": "Letzshop Synchronisatioun",
"eu_vat_invoicing": "EU TVA Rechnungen",
"analytics_dashboard": "Analyse Dashboard",
"api_access": "API Zougang",
"multi_channel": "Multi-Channel Integratioun",
"products": "Produkter",
"team_member": "Teammember",
"unlimited": "Onbegrenzt",
"order_history": "Méint Bestellungshistorique",
"trial_note": "All Pläng enthalen eng {trial_days}-Deeg gratis Testversioun. Keng Kreditkaart néideg.",
"back_home": "Zréck op d'Haaptsäit"
},
"features": {
"letzshop_sync": "Letzshop Synchronisatioun",
"inventory_basic": "Basis Lagerverwaltung",
"inventory_locations": "Lagerstanduerten",
"inventory_purchase_orders": "Bestellungen",
"invoice_lu": "Lëtzebuerg TVA Rechnungen",
"invoice_eu_vat": "EU TVA Rechnungen",
"invoice_bulk": "Massrechnungen",
"customer_view": "Clientelëscht",
"customer_export": "Client Export",
"analytics_dashboard": "Analyse Dashboard",
"accounting_export": "Comptabilitéits Export",
"api_access": "API Zougang",
"automation_rules": "Automatiséierungsreegelen",
"team_roles": "Team Rollen an Autorisatiounen",
"white_label": "White-Label Optioun",
"multi_vendor": "Multi-Händler Ënnerstëtzung",
"custom_integrations": "Personnaliséiert Integratiounen",
"sla_guarantee": "SLA Garantie",
"dedicated_support": "Dedizéierte Kontobetreier"
},
"addons": {
"title": "Erweidert Är Plattform",
"subtitle": "Füügt Är Mark, professionell Email a verbessert Sécherheet derbäi.",
"per_year": "/Joer",
"per_month": "/Mount",
"custom_domain": "Eegen Domain",
"custom_domain_desc": "Benotzt Är eegen Domain (mengdomain.lu)",
"premium_ssl": "Premium SSL",
"premium_ssl_desc": "EV Zertifikat fir Vertrauensbadgen",
"email_package": "Email Package",
"email_package_desc": "Professionell Email Adressen"
},
"find_shop": {
"title": "Fannt Äre Letzshop Buttek",
"subtitle": "Verkaaft Dir schonn op Letzshop? Gitt Är Buttek URL an fir unzefänken.",
"placeholder": "Gitt Är Letzshop URL an (z.B. letzshop.lu/vendors/mäi-buttek)",
"button": "Mäi Buttek fannen",
"claim_shop": "Dëse Buttek reklaméieren",
"already_claimed": "Scho reklaméiert",
"no_account": "Kee Letzshop Kont?",
"signup_letzshop": "Registréiert Iech éischt bei Letzshop",
"then_connect": ", dann kommt zréck fir Äre Buttek ze verbannen.",
"search_placeholder": "Letzshop URL oder Butteknumm aginn...",
"search_button": "Sichen",
"examples": "Beispiller:",
"claim_button": "Dëse Buttek reklaméieren a gratis testen",
"not_found": "Mir konnten keen Letzshop Buttek mat dëser URL fannen. Iwwerpréift w.e.g. a probéiert nach eng Kéier.",
"or_signup": "Oder registréiert Iech ouni Letzshop Verbindung",
"need_help": "Braucht Dir Hëllef?",
"no_account_yet": "Dir hutt nach keen Letzshop Kont? Keen Problem!",
"create_letzshop": "Letzshop Kont erstellen",
"signup_without": "Ouni Letzshop registréieren",
"looking_up": "Sich Äre Buttek...",
"found": "Fonnt:",
"claimed_badge": "Scho reklaméiert"
},
"signup": {
"step_plan": "Plang wielen",
"step_shop": "Buttek reklaméieren",
"step_account": "Kont",
"step_payment": "Bezuelung",
"choose_plan": "Wielt Äre Plang",
"save_percent": "Spuert {percent}%",
"trial_info": "Mir sammelen Är Bezuelungsinformatiounen, awer Dir gitt eréischt nom Enn vun der Testperiod belaaschtt.",
"connect_shop": "Verbannt Äre Letzshop Buttek",
"connect_optional": "Optional: Verlinkt Äre Letzshop Kont fir Bestellungen automatesch ze synchroniséieren.",
"connect_continue": "Verbannen a weider",
"skip_step": "Dëse Schrëtt iwwersprangen",
"create_account": "Erstellt Äre Kont",
"first_name": "Virnumm",
"last_name": "Numm",
"company_name": "Firmennumm",
"email": "Email",
"password": "Passwuert",
"password_hint": "Mindestens 8 Zeechen",
"continue": "Weider",
"continue_payment": "Weider zur Bezuelung",
"back": "Zréck",
"add_payment": "Bezuelungsmethod derbäisetzen",
"no_charge_note": "Dir gitt eréischt nom Enn vun Ärer {trial_days}-Deeg Testperiod belaaschtt.",
"processing": "Veraarbechtung...",
"start_trial": "Gratis Testversioun starten",
"creating_account": "Erstellt Äre Kont..."
},
"success": {
"title": "Wëllkomm bei Wizamart!",
"subtitle": "Äre Kont gouf erstallt an Är {trial_days}-Deeg gratis Testversioun huet ugefaang.",
"what_next": "Wat kënnt duerno?",
"step_connect": "Letzshop verbannen:",
"step_connect_desc": "Füügt Äre API Schlëssel derbäi fir Bestellungen automatesch ze synchroniséieren.",
"step_invoicing": "Rechnungsstellung astellen:",
"step_invoicing_desc": "Konfiguréiert Är Rechnungsastellungen fir Lëtzebuerger Konformitéit.",
"step_products": "Produkter importéieren:",
"step_products_desc": "Synchroniséiert Äre Produktkatalog vu Letzshop.",
"go_to_dashboard": "Zum Dashboard",
"login_dashboard": "Am Dashboard umellen",
"need_help": "Braucht Dir Hëllef beim Ufänken?",
"contact_support": "Kontaktéiert eist Support Team"
},
"cta": {
"title": "Prett fir Är Bestellungen ze optiméieren?",
"subtitle": "Schléisst Iech Letzshop Händler un déi Wizamart fir hir Bestellungsverwaltung vertrauen. Fänkt haut Är {trial_days}-Deeg gratis Testversioun un.",
"button": "Gratis Testen"
},
"footer": {
"tagline": "Liichtt OMS fir Letzshop Verkeefer. Verwaltt Bestellungen, Lager an Rechnungen.",
"quick_links": "Séier Linken",
"platform": "Plattform",
"contact": "Kontakt",
"copyright": "© {year} Wizamart. Gemaach fir de lëtzebuergeschen E-Commerce.",
"privacy": "Dateschutzrichtlinn",
"terms": "Notzungsbedéngungen",
"about": "Iwwer eis",
"faq": "FAQ",
"contact_us": "Kontaktéiert eis"
},
"modern": {
"badge_integration": "Offiziell Integratioun",
"badge_connect": "An 2 Minutten verbannen",
"hero_title_1": "Gemaach fir de lëtzebuergeschen E-Commerce",
"hero_title_2": "De Back-Office dee Letzshop Iech net gëtt",
"hero_subtitle": "Synchroniséiert Bestellungen, verwaltt Lager, erstellt Rechnunge mat der korrekter TVA a besëtzt Är Clientsdaten. Alles un engem Plaz.",
"cta_trial": "{trial_days}-Deeg gratis testen",
"cta_how": "Kuckt wéi et funktionéiert",
"hero_note": "Keng Kreditkaart néideg. Setup an 5 Minutten. Ëmmer kënnegen.",
"pain_title": "Kënnt Iech dat bekannt vir?",
"pain_subtitle": "Dat sinn d'deeglech Frustratioune vu Letzshop Verkeefer",
"pain_manual": "Manuell Bestellungsagab",
"pain_manual_desc": "Bestellunge vu Letzshop an Tabelle kopéieren. All. Eenzelen. Dag.",
"pain_inventory": "Lager Chaos",
"pain_inventory_desc": "De Stock an Letzshop stëmmt net mat der Realitéit iwwereneen. Iwwerverkeef passéieren.",
"pain_vat": "Falsch TVA Rechnungen",
"pain_vat_desc": "EU Cliente brauchen déi korrekt TVA. Äre Comptabel beschwéiert sech.",
"pain_customers": "Verluer Clienten",
"pain_customers_desc": "Letzshop besëtzt Är Clientsdaten. Dir kënnt se net retargeten oder Loyalitéit opbauen.",
"how_title": "Wéi et funktionéiert",
"how_subtitle": "Vum Chaos zur Kontroll an 4 Schrëtt",
"how_step1": "Letzshop verbannen",
"how_step1_desc": "Gitt Är Letzshop API Zougangsdaten an. An 2 Minutte fäerdeg, keng technesch Kenntnisser néideg.",
"how_step2": "Bestellunge kommen eran",
"how_step2_desc": "Bestellunge ginn automatesch synchroniséiert. Confirméiert an Tracking direkt vu Wizamart derbäisetzen.",
"how_step3": "Rechnunge generéieren",
"how_step3_desc": "Ee Klick fir konform PDF Rechnunge mat korrekter TVA fir all EU Land ze erstellen.",
"how_step4": "Äert Geschäft ausbauen",
"how_step4_desc": "Exportéiert Clientë fir Marketing. Verfolgt Lagerstänn. Konzentréiert Iech op de Verkaf, net op Tabellen.",
"features_title": "Alles wat e Letzshop Verkeefer brauch",
"features_subtitle": "D'operativ Tools déi Letzshop net bitt",
"cta_final_title": "Prett fir d'Kontroll iwwer Äert Letzshop Geschäft ze iwwerhuelen?",
"cta_final_subtitle": "Schléisst Iech lëtzebuerger Händler un déi opgehalen hunn géint Tabellen ze kämpfen an ugefaang hunn hiert Geschäft auszbauen.",
"cta_final_note": "Keng Kreditkaart néideg. Setup an 5 Minutten. Voll Professional Fonctiounen während der Testperiod."
}
}
}