Two issues caused the admin sidebar to show a mix of French and English:
1. Only 3 of 14 modules had "menu" translations in their locale files.
When a key was missing, _translate_label() fell back to English Title
Case from the key name — mixing with French from modules that had
translations. Added menu sections to all 4 languages (en, fr, de, lb)
across 13 modules.
2. The language middleware hardcoded admin to "en" ignoring user preference,
while the menu API fell back to DEFAULT_LANGUAGE ("fr") when
preferred_language was NULL. Fixed middleware to respect user's
preferred_language and menu API to use middleware-resolved language
as fallback.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
239 lines
13 KiB
JSON
239 lines
13 KiB
JSON
{
|
|
"platform": {
|
|
"nav": {
|
|
"pricing": "Tarifs",
|
|
"find_shop": "Trouvez votre boutique",
|
|
"start_trial": "Essai gratuit",
|
|
"admin_login": "Connexion Admin",
|
|
"store_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_store": "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",
|
|
"merchant_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."
|
|
}
|
|
},
|
|
"features": {
|
|
"cms_pages_limit": {
|
|
"name": "Pages CMS",
|
|
"description": "Nombre maximum de pages de contenu",
|
|
"unit": "pages"
|
|
},
|
|
"cms_custom_pages_limit": {
|
|
"name": "Pages personnalisées",
|
|
"description": "Nombre maximum de pages personnalisées",
|
|
"unit": "pages"
|
|
},
|
|
"cms_basic": {
|
|
"name": "CMS de base",
|
|
"description": "Fonctionnalités de gestion de contenu de base"
|
|
},
|
|
"cms_seo": {
|
|
"name": "Outils SEO",
|
|
"description": "Outils d'optimisation pour les moteurs de recherche"
|
|
},
|
|
"cms_scheduling": {
|
|
"name": "Planification de contenu",
|
|
"description": "Planifier du contenu pour publication future"
|
|
},
|
|
"cms_templates": {
|
|
"name": "Modèles de pages",
|
|
"description": "Accès aux modèles de pages premium"
|
|
}
|
|
},
|
|
"menu": {
|
|
"content_management": "Gestion du contenu",
|
|
"shop_content": "Contenu du magasin",
|
|
"content_pages": "Pages de contenu",
|
|
"store_themes": "Thèmes du magasin",
|
|
"media_library": "Médiathèque"
|
|
}
|
|
}
|