fix(storefront): i18n sweep + locale-aware reset-password and welcome email
Some checks failed
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>
This commit is contained in:
@@ -123,7 +123,7 @@
|
||||
"visit_platform": "Besuchen Sie unsere Plattform",
|
||||
"already_have_account": "Haben Sie bereits ein Konto?",
|
||||
"create_account": "Konto erstellen",
|
||||
"continue_shopping": "Weiter einkaufen",
|
||||
"back_to_home": "Zurück zur Startseite",
|
||||
"admin_login": "Admin-Anmeldung",
|
||||
"merchant_login": "Händler-Anmeldung",
|
||||
"store_login": "Shop-Portal-Anmeldung",
|
||||
@@ -140,7 +140,27 @@
|
||||
"reset_link_sent": "Wir haben einen Link zum Zurücksetzen des Passworts an Ihre E-Mail-Adresse gesendet. Bitte überprüfen Sie Ihren Posteingang und klicken Sie auf den Link.",
|
||||
"didnt_receive_email": "E-Mail nicht erhalten? Überprüfen Sie Ihren Spam-Ordner oder",
|
||||
"try_again": "versuchen Sie es erneut",
|
||||
"remember_password": "Passwort wieder eingefallen?"
|
||||
"remember_password": "Passwort wieder eingefallen?",
|
||||
"reset_password_subtitle": "Neues Passwort erstellen",
|
||||
"reset_your_password": "Passwort zurücksetzen",
|
||||
"reset_password_form_desc": "Geben Sie unten Ihr neues Passwort ein. Es muss mindestens 8 Zeichen lang sein.",
|
||||
"new_password_placeholder": "Neues Passwort eingeben",
|
||||
"confirm_password_placeholder": "Neues Passwort bestätigen",
|
||||
"resetting": "Wird zurückgesetzt...",
|
||||
"reset_password_btn": "Passwort zurücksetzen",
|
||||
"password_reset_complete": "Passwort zurückgesetzt",
|
||||
"password_reset_success_desc": "Ihr Passwort wurde erfolgreich zurückgesetzt. Sie können sich jetzt mit dem neuen Passwort anmelden.",
|
||||
"invalid_or_expired_link": "Ungültiger oder abgelaufener Link",
|
||||
"invalid_or_expired_link_desc": "Dieser Link zum Zurücksetzen des Passworts ist ungültig oder abgelaufen. Bitte fordern Sie einen neuen Link an.",
|
||||
"request_new_link": "Neuen Link anfordern",
|
||||
"email_required": "E-Mail ist erforderlich",
|
||||
"invalid_email": "Bitte geben Sie eine gültige E-Mail-Adresse ein",
|
||||
"forgot_password_failed": "Link konnte nicht gesendet werden. Bitte erneut versuchen.",
|
||||
"password_required": "Passwort ist erforderlich",
|
||||
"password_too_short": "Das Passwort muss mindestens 8 Zeichen lang sein",
|
||||
"please_confirm_password": "Bitte bestätigen Sie Ihr Passwort",
|
||||
"passwords_do_not_match": "Passwörter stimmen nicht überein",
|
||||
"reset_password_failed": "Passwort konnte nicht zurückgesetzt werden. Bitte erneut versuchen."
|
||||
},
|
||||
"nav": {
|
||||
"dashboard": "Dashboard",
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
"visit_platform": "Visit our platform",
|
||||
"already_have_account": "Already have an account?",
|
||||
"create_account": "Create an account",
|
||||
"continue_shopping": "Continue shopping",
|
||||
"back_to_home": "Back to Home",
|
||||
"admin_login": "Admin Login",
|
||||
"merchant_login": "Merchant Login",
|
||||
"store_login": "Store Portal Login",
|
||||
@@ -140,7 +140,27 @@
|
||||
"reset_link_sent": "We've sent a password reset link to your email. Please check your inbox and click the link to reset your password.",
|
||||
"didnt_receive_email": "Didn't receive the email? Check your spam folder or",
|
||||
"try_again": "try again",
|
||||
"remember_password": "Remember your password?"
|
||||
"remember_password": "Remember your password?",
|
||||
"reset_password_subtitle": "Create new password",
|
||||
"reset_your_password": "Reset Your Password",
|
||||
"reset_password_form_desc": "Enter your new password below. Password must be at least 8 characters.",
|
||||
"new_password_placeholder": "Enter new password",
|
||||
"confirm_password_placeholder": "Confirm new password",
|
||||
"resetting": "Resetting...",
|
||||
"reset_password_btn": "Reset Password",
|
||||
"password_reset_complete": "Password Reset Complete",
|
||||
"password_reset_success_desc": "Your password has been successfully reset. You can now sign in with your new password.",
|
||||
"invalid_or_expired_link": "Invalid or Expired Link",
|
||||
"invalid_or_expired_link_desc": "This password reset link is invalid or has expired. Please request a new password reset link.",
|
||||
"request_new_link": "Request New Link",
|
||||
"email_required": "Email is required",
|
||||
"invalid_email": "Please enter a valid email address",
|
||||
"forgot_password_failed": "Failed to send reset link. Please try again.",
|
||||
"password_required": "Password is required",
|
||||
"password_too_short": "Password must be at least 8 characters",
|
||||
"please_confirm_password": "Please confirm your password",
|
||||
"passwords_do_not_match": "Passwords do not match",
|
||||
"reset_password_failed": "Failed to reset password. Please try again."
|
||||
},
|
||||
"nav": {
|
||||
"dashboard": "Dashboard",
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
"visit_platform": "Visitez notre plateforme",
|
||||
"already_have_account": "Vous avez déjà un compte ?",
|
||||
"create_account": "Créer un compte",
|
||||
"continue_shopping": "Continuer vos achats",
|
||||
"back_to_home": "Retour à l'accueil",
|
||||
"admin_login": "Connexion Admin",
|
||||
"merchant_login": "Connexion Marchand",
|
||||
"store_login": "Connexion Portail Magasin",
|
||||
@@ -140,7 +140,27 @@
|
||||
"reset_link_sent": "Nous avons envoyé un lien de réinitialisation à votre adresse e-mail. Veuillez vérifier votre boîte de réception et cliquer sur le lien.",
|
||||
"didnt_receive_email": "Vous n'avez pas reçu l'e-mail ? Vérifiez votre dossier spam ou",
|
||||
"try_again": "réessayez",
|
||||
"remember_password": "Vous vous souvenez de votre mot de passe ?"
|
||||
"remember_password": "Vous vous souvenez de votre mot de passe ?",
|
||||
"reset_password_subtitle": "Créer un nouveau mot de passe",
|
||||
"reset_your_password": "Réinitialisez votre mot de passe",
|
||||
"reset_password_form_desc": "Saisissez votre nouveau mot de passe ci-dessous. Il doit comporter au moins 8 caractères.",
|
||||
"new_password_placeholder": "Saisissez le nouveau mot de passe",
|
||||
"confirm_password_placeholder": "Confirmez le nouveau mot de passe",
|
||||
"resetting": "Réinitialisation...",
|
||||
"reset_password_btn": "Réinitialiser le mot de passe",
|
||||
"password_reset_complete": "Mot de passe réinitialisé",
|
||||
"password_reset_success_desc": "Votre mot de passe a été réinitialisé avec succès. Vous pouvez maintenant vous connecter avec votre nouveau mot de passe.",
|
||||
"invalid_or_expired_link": "Lien invalide ou expiré",
|
||||
"invalid_or_expired_link_desc": "Ce lien de réinitialisation est invalide ou a expiré. Veuillez en demander un nouveau.",
|
||||
"request_new_link": "Demander un nouveau lien",
|
||||
"email_required": "L'e-mail est obligatoire",
|
||||
"invalid_email": "Veuillez saisir une adresse e-mail valide",
|
||||
"forgot_password_failed": "Échec de l'envoi du lien. Veuillez réessayer.",
|
||||
"password_required": "Le mot de passe est obligatoire",
|
||||
"password_too_short": "Le mot de passe doit contenir au moins 8 caractères",
|
||||
"please_confirm_password": "Veuillez confirmer votre mot de passe",
|
||||
"passwords_do_not_match": "Les mots de passe ne correspondent pas",
|
||||
"reset_password_failed": "Échec de la réinitialisation. Veuillez réessayer."
|
||||
},
|
||||
"nav": {
|
||||
"dashboard": "Tableau de bord",
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
"visit_platform": "Besicht eis Plattform",
|
||||
"already_have_account": "Hutt Dir schonn e Kont?",
|
||||
"create_account": "E Kont erstellen",
|
||||
"continue_shopping": "Weider akafen",
|
||||
"back_to_home": "Zréck op d'Haaptsäit",
|
||||
"admin_login": "Admin Login",
|
||||
"merchant_login": "Händler Login",
|
||||
"store_login": "Buttek-Portal Login",
|
||||
@@ -140,7 +140,27 @@
|
||||
"reset_link_sent": "Mir hunn e Link fir d'Passwuert zréckzesetzen op Är E-Mail-Adress geschéckt. Kuckt w.e.g. Ären Posteingang a klickt op de Link.",
|
||||
"didnt_receive_email": "E-Mail net kritt? Kuckt Ären Spam-Dossier oder",
|
||||
"try_again": "probéiert et nach eng Kéier",
|
||||
"remember_password": "Passwuert erëm agefall?"
|
||||
"remember_password": "Passwuert erëm agefall?",
|
||||
"reset_password_subtitle": "Neit Passwuert erstellen",
|
||||
"reset_your_password": "Ärt Passwuert zrécksetzen",
|
||||
"reset_password_form_desc": "Gitt hei drënner Ärt neit Passwuert an. Et muss mindestens 8 Zeechen laang sinn.",
|
||||
"new_password_placeholder": "Neit Passwuert agi",
|
||||
"confirm_password_placeholder": "Neit Passwuert bestätegen",
|
||||
"resetting": "Gëtt zréckgesat...",
|
||||
"reset_password_btn": "Passwuert zrécksetzen",
|
||||
"password_reset_complete": "Passwuert zréckgesat",
|
||||
"password_reset_success_desc": "Ärt Passwuert ass erfollegräich zréckgesat. Dir kënnt Iech elo mat Ärem neie Passwuert aloggen.",
|
||||
"invalid_or_expired_link": "Ongëltege oder ofgelafenen Link",
|
||||
"invalid_or_expired_link_desc": "Dëse Link fir d'Passwuert zréckzesetzen ass ongëlteg oder ofgelaf. Bitt e neie Link un.",
|
||||
"request_new_link": "Neie Link ufroen",
|
||||
"email_required": "E-Mail ass obligatoresch",
|
||||
"invalid_email": "Gitt w.e.g. eng gëlteg E-Mail-Adress un",
|
||||
"forgot_password_failed": "Link konnt net geschéckt ginn. Probéiert nach eng Kéier.",
|
||||
"password_required": "Passwuert ass obligatoresch",
|
||||
"password_too_short": "D'Passwuert muss mindestens 8 Zeechen hunn",
|
||||
"please_confirm_password": "Bestätegt w.e.g. Ärt Passwuert",
|
||||
"passwords_do_not_match": "D'Passwierder stëmmen net iwwerteneen",
|
||||
"reset_password_failed": "Passwuert konnt net zréckgesat ginn. Probéiert nach eng Kéier."
|
||||
},
|
||||
"nav": {
|
||||
"dashboard": "Dashboard",
|
||||
|
||||
Reference in New Issue
Block a user