Some checks failed
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>
154 lines
7.6 KiB
JSON
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"
|
|
}
|
|
}
|
|
}
|
|
}
|