Files
orion/app/modules/customers/locales/fr.json
Samir Boulahtit 10a99f98fe
Some checks failed
CI / ruff (push) Successful in 19s
CI / validate (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / pytest (push) Has been cancelled
fix(storefront): i18n sweep + locale-aware reset-password and welcome email
Test 5 (storefront password reset + customer dashboard) surfaced five
issues that all traced back to missing i18n plumbing:

- Forgot-password email arrived in EN regardless of storefront locale —
  handler now prefers request.state.language over customer.preferred_language,
  and loyalty self-enrollment backfills preferred_language for new + returning
  customers so future locale-sensitive flows hit the right language without
  being told twice.
- reset-password.html rendered "undefined" icon boxes because $icon magic
  wasn't loaded in the standalone page — replaced with inline SVGs matching
  the forgot-password.html convention.
- reset-password.html was hardcoded English: added lang attr, full _()
  sweep (22 new auth.* keys × 4 locales), language selector, and JS
  validation strings exposed via tojson.
- "Continue shopping" CTA renamed to "Back to Home" (auth.back_to_home,
  4 locales) on login + forgot + reset — loyalty storefronts have no
  catalog to continue to, mirroring the earlier enroll-success rename.
- /account dashboard, profile, addresses were hardcoded English in the
  body (menu was FR because base layout uses _()). New customers.storefront
  .pages.{dashboard,profile,addresses}.* namespace (~80 keys × 4 locales),
  templates updated, Alpine JS strings injected via window.__*I18n.

18 files, 18 changed; arch validation: 126 warnings before = 126 after,
mkdocs --strict clean.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 23:06:11 +02:00

154 lines
7.6 KiB
JSON

{
"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",
"merchant": "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..."
},
"features": {
"customer_view": {
"name": "Vue client",
"description": "Voir et gérer les informations clients"
},
"customer_export": {
"name": "Export clients",
"description": "Exporter les données clients"
},
"customer_messaging": {
"name": "Messagerie clients",
"description": "Envoyer des messages aux clients"
}
},
"messages": {
"failed_to_toggle_customer_status": "Échec du changement de statut du client",
"failed_to_load_customer_details": "Échec du chargement des détails du client",
"failed_to_load_customer_orders": "Échec du chargement des commandes du client"
},
"menu": {
"store_operations": "Opérations du magasin",
"customers_section": "Clients",
"customers": "Clients",
"all_customers": "Tous les clients"
},
"permissions": {
"customers_view": "Voir les clients",
"customers_view_desc": "Voir la liste et les détails des clients",
"customers_edit": "Modifier les clients",
"customers_edit_desc": "Modifier les informations client",
"customers_delete": "Supprimer les clients",
"customers_delete_desc": "Supprimer les fiches clients",
"customers_export": "Exporter les clients",
"customers_export_desc": "Exporter les données clients"
},
"storefront": {
"account": {
"dashboard": "Tableau de bord",
"profile": "Profil",
"addresses": "Adresses",
"settings": "Paramètres"
},
"pages": {
"dashboard": {
"title": "Mon compte",
"welcome_back": "Bon retour, {name} !",
"profile_card_title": "Profil",
"profile_card_subtitle": "Modifier vos informations",
"addresses_card_title": "Adresses",
"addresses_card_subtitle": "Gérer vos adresses",
"messages_card_title": "Messages",
"messages_card_subtitle": "Contacter le support",
"unread_messages_singular": "{count} message non lu",
"unread_messages_plural": "{count} messages non lus",
"summary_title": "Résumé du compte",
"customer_since": "Client depuis",
"logout": "Se déconnecter",
"logout_confirm_title": "Confirmer la déconnexion",
"logout_confirm_message": "Êtes-vous sûr de vouloir vous déconnecter ? Vous devrez vous reconnecter pour accéder à votre compte.",
"logout_success": "Déconnexion réussie",
"logout_failed": "Échec de la déconnexion"
},
"profile": {
"breadcrumb_account": "Mon compte",
"breadcrumb_profile": "Profil",
"title": "Mon profil",
"subtitle": "Gérez les informations et préférences de votre compte",
"info_section_title": "Informations du profil",
"info_section_subtitle": "Mettez à jour vos informations personnelles",
"email_label": "Adresse e-mail",
"save_changes": "Enregistrer",
"saving": "Enregistrement...",
"prefs_section_title": "Préférences",
"prefs_section_subtitle": "Gérez les préférences de votre compte",
"preferred_language": "Langue préférée",
"use_shop_default": "Utiliser la langue de la boutique",
"marketing_communications": "Communications marketing",
"marketing_desc": "Recevoir des e-mails sur les nouveaux produits, offres et promotions",
"save_preferences": "Enregistrer les préférences",
"change_password_subtitle": "Mettez à jour le mot de passe de votre compte",
"changing": "Changement...",
"account_info": "Informations du compte",
"member_since": "Membre depuis",
"profile_updated": "Profil mis à jour avec succès",
"preferences_updated": "Préférences mises à jour avec succès",
"password_changed": "Mot de passe modifié avec succès",
"failed_to_load": "Échec du chargement du profil",
"failed_to_save_profile": "Échec de l'enregistrement du profil",
"failed_to_save_preferences": "Échec de l'enregistrement des préférences",
"failed_to_change_password": "Échec du changement de mot de passe"
},
"addresses": {
"title": "Mes adresses",
"subtitle": "Gérez vos adresses de livraison et de facturation",
"add_address": "Ajouter une adresse",
"empty_state_title": "Aucune adresse",
"empty_state_subtitle": "Ajoutez votre première adresse pour accélérer le paiement.",
"add_first_address": "Ajouter votre première adresse",
"default_shipping": "Livraison par défaut",
"default_billing": "Facturation par défaut",
"shipping": "Livraison",
"billing": "Facturation",
"set_default": "Définir par défaut",
"edit_address": "Modifier l'adresse",
"add_new_address": "Nouvelle adresse",
"address_type": "Type d'adresse",
"shipping_address": "Adresse de livraison",
"billing_address": "Adresse de facturation",
"company_optional": "Société (facultatif)",
"address_line_1": "Adresse",
"address_line_2_optional": "Complément d'adresse (facultatif)",
"postal_code": "Code postal",
"city": "Ville",
"country": "Pays",
"set_as_default_shipping": "Définir comme adresse de livraison par défaut",
"set_as_default_billing": "Définir comme adresse de facturation par défaut",
"save_changes": "Enregistrer",
"saving": "Enregistrement...",
"delete_address": "Supprimer l'adresse",
"delete_confirm": "Êtes-vous sûr de vouloir supprimer cette adresse ? Cette action est irréversible.",
"deleting": "Suppression...",
"address_updated": "Adresse mise à jour",
"address_added": "Adresse ajoutée",
"address_deleted": "Adresse supprimée",
"default_updated": "Adresse par défaut mise à jour",
"failed_to_load": "Échec du chargement des adresses. Veuillez réessayer.",
"failed_to_save": "Échec de l'enregistrement de l'adresse. Veuillez réessayer.",
"failed_to_delete": "Échec de la suppression de l'adresse",
"failed_to_set_default": "Échec de la définition de l'adresse par défaut"
}
}
}
}