Laravel Breeze重置密码页面自定义翻译不生效问题咨询
Laravel自定义密码翻译不生效问题解决
问题背景
- 已创建自定义翻译文件
lang/en/passwords.php和lang/de/passwords.php,其中包含'user'键的自定义翻译文本 - 在
forgot-password.blade.php中通过__($status)调用翻译,当$status对应passwords.user时,始终加载vendor目录下的默认翻译内容,自定义翻译不生效 - 将自定义文件中的键改为
'User'(首字母大写),同时调用时改为passwords.User,自定义翻译即可正常生效 - 已执行清除缓存、修改会话区域设置等操作,问题仍存在
原因分析
Laravel内置的密码重置状态常量对应的翻译键是首字母大写的,比如Password::INVALID_USER对应的翻译键为passwords.User,而非passwords.user。当使用小写键名时,Laravel在自定义文件中找不到匹配项,就会自动 fallback 到vendor目录里的默认翻译文件(默认文件中该键为User),因此出现小写键不生效、大写键生效的现象。
解决方案
- 统一翻译键名大小写:将自定义翻译文件中的
'user'键改为'User',与Laravel默认键名保持一致:
// lang/en/passwords.php return [ 'reset' => 'Your password has been reset.', 'sent' => 'We have emailed your password reset link.', 'throttled' => 'Please wait before retrying.', 'token' => 'This password reset token is invalid.', 'User' => "If a user with that email address exists, you will receive a password reset email.", ];
- 确保代码中调用的翻译键与自定义文件键名完全匹配,或直接使用Laravel提供的状态常量对应的翻译键,避免手动拼写错误。
内容的提问来源于stack exchange,提问作者pa2Codes
相关产品推荐
相关产品推荐

