- Add database fields for language preferences: - Vendor: dashboard_language, storefront_language, storefront_languages - User: preferred_language - Customer: preferred_language - Add language middleware for request-level language detection: - Cookie-based persistence - Browser Accept-Language fallback - Vendor storefront language constraints - Add language API endpoints (/api/v1/language/*): - POST /set - Set language preference - GET /current - Get current language info - GET /list - List available languages - DELETE /clear - Clear preference - Add i18n utilities (app/utils/i18n.py): - JSON-based translation loading - Jinja2 template integration - Language resolution helpers - Add reusable language selector macros for templates - Add languageSelector() Alpine.js component - Add translation files (en, fr, de, lb) in static/locales/ - Add architecture rules documentation for language implementation - Update marketplace-product-detail.js to use native language names 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
476 lines
16 KiB
JSON
476 lines
16 KiB
JSON
{
|
|
"common": {
|
|
"save": "Enregistrer",
|
|
"cancel": "Annuler",
|
|
"delete": "Supprimer",
|
|
"edit": "Modifier",
|
|
"create": "Créer",
|
|
"update": "Mettre à jour",
|
|
"add": "Ajouter",
|
|
"remove": "Retirer",
|
|
"close": "Fermer",
|
|
"back": "Retour",
|
|
"next": "Suivant",
|
|
"previous": "Précédent",
|
|
"submit": "Soumettre",
|
|
"confirm": "Confirmer",
|
|
"yes": "Oui",
|
|
"no": "Non",
|
|
"ok": "OK",
|
|
"done": "Terminé",
|
|
"loading": "Chargement...",
|
|
"saving": "Enregistrement...",
|
|
"processing": "Traitement...",
|
|
"searching": "Recherche...",
|
|
"refresh": "Actualiser",
|
|
"retry": "Réessayer",
|
|
"view": "Voir",
|
|
"view_details": "Voir les détails",
|
|
"view_all": "Voir tout",
|
|
"show_more": "Voir plus",
|
|
"show_less": "Voir moins",
|
|
"search": "Rechercher",
|
|
"filter": "Filtrer",
|
|
"sort": "Trier",
|
|
"export": "Exporter",
|
|
"import": "Importer",
|
|
"download": "Télécharger",
|
|
"upload": "Téléverser",
|
|
"select": "Sélectionner",
|
|
"select_all": "Tout sélectionner",
|
|
"deselect_all": "Tout désélectionner",
|
|
"actions": "Actions",
|
|
"status": "Statut",
|
|
"date": "Date",
|
|
"time": "Heure",
|
|
"name": "Nom",
|
|
"email": "E-mail",
|
|
"phone": "Téléphone",
|
|
"address": "Adresse",
|
|
"description": "Description",
|
|
"notes": "Notes",
|
|
"total": "Total",
|
|
"amount": "Montant",
|
|
"quantity": "Quantité",
|
|
"price": "Prix",
|
|
"items": "Articles",
|
|
"id": "ID",
|
|
"type": "Type",
|
|
"category": "Catégorie",
|
|
"tags": "Tags",
|
|
"active": "Actif",
|
|
"inactive": "Inactif",
|
|
"enabled": "Activé",
|
|
"disabled": "Désactivé",
|
|
"pending": "En attente",
|
|
"completed": "Terminé",
|
|
"failed": "Échoué",
|
|
"success": "Succès",
|
|
"error": "Erreur",
|
|
"warning": "Avertissement",
|
|
"info": "Info",
|
|
"all": "Tous",
|
|
"none": "Aucun",
|
|
"other": "Autre",
|
|
"unknown": "Inconnu",
|
|
"not_available": "N/D",
|
|
"required": "Obligatoire",
|
|
"optional": "Optionnel",
|
|
"language": "Langue",
|
|
"settings": "Paramètres",
|
|
"help": "Aide",
|
|
"support": "Support",
|
|
"contact": "Contact",
|
|
"about": "À propos",
|
|
"privacy": "Confidentialité",
|
|
"terms": "Conditions",
|
|
"copyright": "Droits d'auteur"
|
|
},
|
|
"auth": {
|
|
"sign_in": "Se connecter",
|
|
"sign_out": "Se déconnecter",
|
|
"sign_up": "S'inscrire",
|
|
"login": "Connexion",
|
|
"logout": "Déconnexion",
|
|
"register": "Inscription",
|
|
"forgot_password": "Mot de passe oublié ?",
|
|
"reset_password": "Réinitialiser le mot de passe",
|
|
"change_password": "Changer le mot de passe",
|
|
"username": "Nom d'utilisateur",
|
|
"password": "Mot de passe",
|
|
"confirm_password": "Confirmer le mot de passe",
|
|
"current_password": "Mot de passe actuel",
|
|
"new_password": "Nouveau mot de passe",
|
|
"remember_me": "Se souvenir de moi",
|
|
"email_placeholder": "Entrez votre e-mail",
|
|
"username_placeholder": "Entrez votre nom d'utilisateur",
|
|
"password_placeholder": "Entrez votre mot de passe",
|
|
"login_success": "Connexion réussie",
|
|
"login_failed": "Échec de la connexion",
|
|
"logout_success": "Vous avez été déconnecté",
|
|
"invalid_credentials": "Nom d'utilisateur ou mot de passe invalide",
|
|
"session_expired": "Votre session a expiré. Veuillez vous reconnecter.",
|
|
"account_locked": "Votre compte a été verrouillé",
|
|
"account_inactive": "Votre compte est inactif"
|
|
},
|
|
"nav": {
|
|
"dashboard": "Tableau de bord",
|
|
"products": "Produits",
|
|
"orders": "Commandes",
|
|
"customers": "Clients",
|
|
"inventory": "Inventaire",
|
|
"analytics": "Analyses",
|
|
"reports": "Rapports",
|
|
"settings": "Paramètres",
|
|
"profile": "Profil",
|
|
"team": "Équipe",
|
|
"marketplace": "Marketplace",
|
|
"integrations": "Intégrations",
|
|
"notifications": "Notifications",
|
|
"help": "Aide",
|
|
"home": "Accueil",
|
|
"shop": "Boutique",
|
|
"cart": "Panier",
|
|
"checkout": "Paiement",
|
|
"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é",
|
|
"unauthorized": "Non autorisé",
|
|
"forbidden": "Interdit",
|
|
"bad_request": "Requête invalide",
|
|
"server_error": "Erreur serveur",
|
|
"network_error": "Erreur réseau",
|
|
"timeout": "Délai d'attente dépassé",
|
|
"validation_error": "Erreur de validation",
|
|
"field_required": "Ce champ est obligatoire",
|
|
"invalid_email": "Adresse e-mail invalide",
|
|
"invalid_phone": "Numéro de téléphone invalide",
|
|
"password_mismatch": "Les mots de passe ne correspondent pas",
|
|
"password_too_short": "Le mot de passe est trop court",
|
|
"try_again": "Veuillez réessayer",
|
|
"contact_support": "Veuillez contacter le support si le problème persiste"
|
|
},
|
|
"confirmations": {
|
|
"delete_title": "Confirmer la suppression",
|
|
"delete_message": "Êtes-vous sûr de vouloir supprimer cet élément ?",
|
|
"delete_warning": "Cette action est irréversible.",
|
|
"cancel_title": "Confirmer l'annulation",
|
|
"cancel_message": "Êtes-vous sûr de vouloir annuler ?",
|
|
"unsaved_changes": "Vous avez des modifications non enregistrées. Êtes-vous sûr de vouloir quitter ?",
|
|
"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"
|
|
},
|
|
"time": {
|
|
"now": "Maintenant",
|
|
"today": "Aujourd'hui",
|
|
"yesterday": "Hier",
|
|
"tomorrow": "Demain",
|
|
"this_week": "Cette semaine",
|
|
"last_week": "La semaine dernière",
|
|
"this_month": "Ce mois-ci",
|
|
"last_month": "Le mois dernier",
|
|
"this_year": "Cette année",
|
|
"ago": "il y a",
|
|
"seconds": "secondes",
|
|
"minutes": "minutes",
|
|
"hours": "heures",
|
|
"days": "jours",
|
|
"weeks": "semaines",
|
|
"months": "mois",
|
|
"years": "années"
|
|
},
|
|
"formats": {
|
|
"date": "DD/MM/YYYY",
|
|
"time": "HH:mm",
|
|
"datetime": "DD/MM/YYYY HH:mm",
|
|
"currency": "{amount} {symbol}"
|
|
}
|
|
}
|