diff --git a/app/modules/customers/locales/de.json b/app/modules/customers/locales/de.json index 10739522..7d102d71 100644 --- a/app/modules/customers/locales/de.json +++ b/app/modules/customers/locales/de.json @@ -59,6 +59,95 @@ "profile": "Profil", "addresses": "Adressen", "settings": "Einstellungen" + }, + "pages": { + "dashboard": { + "title": "Mein Konto", + "welcome_back": "Willkommen zurück, {name}!", + "profile_card_title": "Profil", + "profile_card_subtitle": "Informationen bearbeiten", + "addresses_card_title": "Adressen", + "addresses_card_subtitle": "Adressen verwalten", + "messages_card_title": "Nachrichten", + "messages_card_subtitle": "Support kontaktieren", + "unread_messages_singular": "{count} ungelesene Nachricht", + "unread_messages_plural": "{count} ungelesene Nachrichten", + "summary_title": "Kontoübersicht", + "customer_since": "Kunde seit", + "logout": "Abmelden", + "logout_confirm_title": "Abmeldung bestätigen", + "logout_confirm_message": "Sind Sie sicher, dass Sie sich abmelden möchten? Sie müssen sich erneut anmelden, um auf Ihr Konto zuzugreifen.", + "logout_success": "Abmeldung erfolgreich", + "logout_failed": "Abmeldung fehlgeschlagen" + }, + "profile": { + "breadcrumb_account": "Mein Konto", + "breadcrumb_profile": "Profil", + "title": "Mein Profil", + "subtitle": "Verwalten Sie Ihre Kontoinformationen und Einstellungen", + "info_section_title": "Profilinformationen", + "info_section_subtitle": "Persönliche Daten aktualisieren", + "email_label": "E-Mail-Adresse", + "save_changes": "Änderungen speichern", + "saving": "Speichern...", + "prefs_section_title": "Einstellungen", + "prefs_section_subtitle": "Verwalten Sie Ihre Kontoeinstellungen", + "preferred_language": "Bevorzugte Sprache", + "use_shop_default": "Shop-Standard verwenden", + "marketing_communications": "Marketing-Kommunikation", + "marketing_desc": "E-Mails über neue Produkte, Angebote und Aktionen erhalten", + "save_preferences": "Einstellungen speichern", + "change_password_subtitle": "Aktualisieren Sie Ihr Kontopasswort", + "changing": "Wird geändert...", + "account_info": "Kontoinformationen", + "member_since": "Mitglied seit", + "profile_updated": "Profil erfolgreich aktualisiert", + "preferences_updated": "Einstellungen erfolgreich aktualisiert", + "password_changed": "Passwort erfolgreich geändert", + "failed_to_load": "Profil konnte nicht geladen werden", + "failed_to_save_profile": "Profil konnte nicht gespeichert werden", + "failed_to_save_preferences": "Einstellungen konnten nicht gespeichert werden", + "failed_to_change_password": "Passwort konnte nicht geändert werden" + }, + "addresses": { + "title": "Meine Adressen", + "subtitle": "Verwalten Sie Ihre Liefer- und Rechnungsadressen", + "add_address": "Adresse hinzufügen", + "empty_state_title": "Noch keine Adressen", + "empty_state_subtitle": "Fügen Sie Ihre erste Adresse hinzu, um den Bezahlvorgang zu beschleunigen.", + "add_first_address": "Erste Adresse hinzufügen", + "default_shipping": "Standard-Lieferadresse", + "default_billing": "Standard-Rechnungsadresse", + "shipping": "Lieferung", + "billing": "Rechnung", + "set_default": "Als Standard festlegen", + "edit_address": "Adresse bearbeiten", + "add_new_address": "Neue Adresse", + "address_type": "Adresstyp", + "shipping_address": "Lieferadresse", + "billing_address": "Rechnungsadresse", + "company_optional": "Unternehmen (optional)", + "address_line_1": "Adresse", + "address_line_2_optional": "Adresszusatz (optional)", + "postal_code": "Postleitzahl", + "city": "Stadt", + "country": "Land", + "set_as_default_shipping": "Als Standard-Lieferadresse festlegen", + "set_as_default_billing": "Als Standard-Rechnungsadresse festlegen", + "save_changes": "Änderungen speichern", + "saving": "Speichern...", + "delete_address": "Adresse löschen", + "delete_confirm": "Sind Sie sicher, dass Sie diese Adresse löschen möchten? Dieser Vorgang ist nicht rückgängig zu machen.", + "deleting": "Wird gelöscht...", + "address_updated": "Adresse aktualisiert", + "address_added": "Adresse hinzugefügt", + "address_deleted": "Adresse gelöscht", + "default_updated": "Standardadresse aktualisiert", + "failed_to_load": "Adressen konnten nicht geladen werden. Bitte erneut versuchen.", + "failed_to_save": "Adresse konnte nicht gespeichert werden. Bitte erneut versuchen.", + "failed_to_delete": "Adresse konnte nicht gelöscht werden", + "failed_to_set_default": "Standardadresse konnte nicht festgelegt werden" + } } } } diff --git a/app/modules/customers/locales/en.json b/app/modules/customers/locales/en.json index b91b68e4..8bfd1079 100644 --- a/app/modules/customers/locales/en.json +++ b/app/modules/customers/locales/en.json @@ -59,6 +59,95 @@ "profile": "Profile", "addresses": "Addresses", "settings": "Settings" + }, + "pages": { + "dashboard": { + "title": "My Account", + "welcome_back": "Welcome back, {name}!", + "profile_card_title": "Profile", + "profile_card_subtitle": "Edit your information", + "addresses_card_title": "Addresses", + "addresses_card_subtitle": "Manage addresses", + "messages_card_title": "Messages", + "messages_card_subtitle": "Contact support", + "unread_messages_singular": "{count} unread message", + "unread_messages_plural": "{count} unread messages", + "summary_title": "Account Summary", + "customer_since": "Customer Since", + "logout": "Logout", + "logout_confirm_title": "Logout Confirmation", + "logout_confirm_message": "Are you sure you want to logout? You'll need to sign in again to access your account.", + "logout_success": "Logged out successfully", + "logout_failed": "Logout failed" + }, + "profile": { + "breadcrumb_account": "My Account", + "breadcrumb_profile": "Profile", + "title": "My Profile", + "subtitle": "Manage your account information and preferences", + "info_section_title": "Profile Information", + "info_section_subtitle": "Update your personal details", + "email_label": "Email Address", + "save_changes": "Save Changes", + "saving": "Saving...", + "prefs_section_title": "Preferences", + "prefs_section_subtitle": "Manage your account preferences", + "preferred_language": "Preferred Language", + "use_shop_default": "Use shop default", + "marketing_communications": "Marketing Communications", + "marketing_desc": "Receive emails about new products, offers, and promotions", + "save_preferences": "Save Preferences", + "change_password_subtitle": "Update your account password", + "changing": "Changing...", + "account_info": "Account Information", + "member_since": "Member Since", + "profile_updated": "Profile updated successfully", + "preferences_updated": "Preferences updated successfully", + "password_changed": "Password changed successfully", + "failed_to_load": "Failed to load profile", + "failed_to_save_profile": "Failed to save profile", + "failed_to_save_preferences": "Failed to save preferences", + "failed_to_change_password": "Failed to change password" + }, + "addresses": { + "title": "My Addresses", + "subtitle": "Manage your shipping and billing addresses", + "add_address": "Add Address", + "empty_state_title": "No addresses yet", + "empty_state_subtitle": "Add your first address to speed up checkout.", + "add_first_address": "Add Your First Address", + "default_shipping": "Default Shipping", + "default_billing": "Default Billing", + "shipping": "Shipping", + "billing": "Billing", + "set_default": "Set as Default", + "edit_address": "Edit Address", + "add_new_address": "Add New Address", + "address_type": "Address Type", + "shipping_address": "Shipping Address", + "billing_address": "Billing Address", + "company_optional": "Company (optional)", + "address_line_1": "Address", + "address_line_2_optional": "Address Line 2 (optional)", + "postal_code": "Postal Code", + "city": "City", + "country": "Country", + "set_as_default_shipping": "Set as default shipping address", + "set_as_default_billing": "Set as default billing address", + "save_changes": "Save Changes", + "saving": "Saving...", + "delete_address": "Delete Address", + "delete_confirm": "Are you sure you want to delete this address? This action cannot be undone.", + "deleting": "Deleting...", + "address_updated": "Address updated", + "address_added": "Address added", + "address_deleted": "Address deleted", + "default_updated": "Default address updated", + "failed_to_load": "Failed to load addresses. Please try again.", + "failed_to_save": "Failed to save address. Please try again.", + "failed_to_delete": "Failed to delete address", + "failed_to_set_default": "Failed to set default address" + } } } } diff --git a/app/modules/customers/locales/fr.json b/app/modules/customers/locales/fr.json index baee97f1..ac7c82b8 100644 --- a/app/modules/customers/locales/fr.json +++ b/app/modules/customers/locales/fr.json @@ -59,6 +59,95 @@ "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" + } } } } diff --git a/app/modules/customers/locales/lb.json b/app/modules/customers/locales/lb.json index e31667d4..a7ef26b9 100644 --- a/app/modules/customers/locales/lb.json +++ b/app/modules/customers/locales/lb.json @@ -59,6 +59,95 @@ "profile": "Profil", "addresses": "Adressen", "settings": "Astellungen" + }, + "pages": { + "dashboard": { + "title": "Mäi Kont", + "welcome_back": "Wëllkomm zréck, {name} !", + "profile_card_title": "Profil", + "profile_card_subtitle": "Informatiounen änneren", + "addresses_card_title": "Adressen", + "addresses_card_subtitle": "Adressen verwalten", + "messages_card_title": "Noriichten", + "messages_card_subtitle": "Support kontaktéieren", + "unread_messages_singular": "{count} ongeliesen Noriicht", + "unread_messages_plural": "{count} ongeliesen Noriichten", + "summary_title": "Kontoiwwersiicht", + "customer_since": "Client zënter", + "logout": "Ofmellen", + "logout_confirm_title": "Ofmellen bestätegen", + "logout_confirm_message": "Sidd Dir sécher datt Dir Iech ofmellen wëllt? Dir musst Iech erëm aloggen fir op Äre Kont ze zougräifen.", + "logout_success": "Erfollegräich ofgemellt", + "logout_failed": "Ofmellen feelgeschloen" + }, + "profile": { + "breadcrumb_account": "Mäi Kont", + "breadcrumb_profile": "Profil", + "title": "Mäi Profil", + "subtitle": "Verwalt Är Kontodaten an Astellungen", + "info_section_title": "Profilinformatiounen", + "info_section_subtitle": "Är perséinlech Donnéeën updaten", + "email_label": "E-Mail-Adress", + "save_changes": "Änneren späicheren", + "saving": "Späicheren...", + "prefs_section_title": "Astellungen", + "prefs_section_subtitle": "Verwalt Är Kontosastellungen", + "preferred_language": "Bevorzucht Sprooch", + "use_shop_default": "Buttek-Standard benotzen", + "marketing_communications": "Marketing-Kommunikatioun", + "marketing_desc": "E-Maile mat neie Produkter, Offeren a Promotioune kréien", + "save_preferences": "Astellunge späicheren", + "change_password_subtitle": "Aktualiséiert Äert Kontopasswuert", + "changing": "Änneren...", + "account_info": "Kontoinformatiounen", + "member_since": "Member zënter", + "profile_updated": "Profil erfollegräich aktualiséiert", + "preferences_updated": "Astellungen erfollegräich aktualiséiert", + "password_changed": "Passwuert erfollegräich geännert", + "failed_to_load": "Profil konnt net geluede ginn", + "failed_to_save_profile": "Profil konnt net späichert ginn", + "failed_to_save_preferences": "Astellunge konnten net späichert ginn", + "failed_to_change_password": "Passwuert konnt net geännert ginn" + }, + "addresses": { + "title": "Meng Adressen", + "subtitle": "Verwalt Är Liwwer- a Rechnungsadressen", + "add_address": "Adress derbäisetzen", + "empty_state_title": "Nach keng Adressen", + "empty_state_subtitle": "Setzt Är éischt Adress derbäi fir den Bezuelvirgang ze beschleunegen.", + "add_first_address": "Éischt Adress derbäisetzen", + "default_shipping": "Standard-Liwweradress", + "default_billing": "Standard-Rechnungsadress", + "shipping": "Liwwerung", + "billing": "Rechnung", + "set_default": "Als Standard festleeën", + "edit_address": "Adress änneren", + "add_new_address": "Nei Adress", + "address_type": "Adresstyp", + "shipping_address": "Liwweradress", + "billing_address": "Rechnungsadress", + "company_optional": "Entreprise (fakultativ)", + "address_line_1": "Adress", + "address_line_2_optional": "Adresszousatz (fakultativ)", + "postal_code": "Postleitzuel", + "city": "Stad", + "country": "Land", + "set_as_default_shipping": "Als Standard-Liwweradress festleeën", + "set_as_default_billing": "Als Standard-Rechnungsadress festleeën", + "save_changes": "Änneren späicheren", + "saving": "Späicheren...", + "delete_address": "Adress läschen", + "delete_confirm": "Sidd Dir sécher datt Dir dës Adress läsche wëllt? Dës Aktioun kann net réckgängeg gemaach ginn.", + "deleting": "Läschen...", + "address_updated": "Adress aktualiséiert", + "address_added": "Adress derbäigesat", + "address_deleted": "Adress geläscht", + "default_updated": "Standardadress aktualiséiert", + "failed_to_load": "Adressen konnten net geluede ginn. Probéiert nach eng Kéier.", + "failed_to_save": "Adress konnt net späichert ginn. Probéiert nach eng Kéier.", + "failed_to_delete": "Adress konnt net geläscht ginn", + "failed_to_set_default": "Standardadress konnt net festgeluecht ginn" + } } } } diff --git a/app/modules/customers/routes/api/storefront.py b/app/modules/customers/routes/api/storefront.py index bc97ee4f..5dc6502d 100644 --- a/app/modules/customers/routes/api/storefront.py +++ b/app/modules/customers/routes/api/storefront.py @@ -270,11 +270,12 @@ def forgot_password( reset_link = f"{scheme}://{host}/account/reset-password?token={plaintext_token}" email_service = EmailService(db) + request_language = getattr(request.state, "language", None) email_service.send_template( template_code="password_reset", to_email=customer.email, to_name=customer.full_name, - language=customer.preferred_language or "en", + language=request_language or customer.preferred_language or "en", variables={ "customer_name": customer.first_name or customer.full_name, "reset_link": reset_link, diff --git a/app/modules/customers/services/customer_service.py b/app/modules/customers/services/customer_service.py index 54110a55..a9d4e47e 100644 --- a/app/modules/customers/services/customer_service.py +++ b/app/modules/customers/services/customer_service.py @@ -568,6 +568,7 @@ class CustomerService: last_name: str = "", phone: str | None = None, birth_date: date | None = None, + preferred_language: str | None = None, ) -> Customer: """ Create a customer for loyalty/external enrollment. @@ -606,6 +607,7 @@ class CustomerService: last_name=last_name, phone=phone, birth_date=birth_date, + preferred_language=preferred_language, hashed_password=unusable_hash, customer_number=cust_number, store_id=store_id, diff --git a/app/modules/customers/templates/customers/storefront/addresses.html b/app/modules/customers/templates/customers/storefront/addresses.html index 9c8c85c1..53499b3b 100644 --- a/app/modules/customers/templates/customers/storefront/addresses.html +++ b/app/modules/customers/templates/customers/storefront/addresses.html @@ -1,7 +1,7 @@ {# app/templates/storefront/account/addresses.html #} {% extends "storefront/base.html" %} -{% block title %}My Addresses - {{ store.name }}{% endblock %} +{% block title %}{{ _('customers.storefront.pages.addresses.title') }} - {{ store.name }}{% endblock %} {% block alpine_data %}addressesPage(){% endblock %} @@ -10,14 +10,14 @@
Manage your shipping and billing addresses
+{{ _('customers.storefront.pages.addresses.subtitle') }}
Add your first address to speed up checkout.
+{{ _('customers.storefront.pages.addresses.empty_state_subtitle') }}