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:
@@ -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."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user