Laravel auth通过电子邮件发送本地化

时间:2017-05-02 20:16:25

标签: laravel

Laravel使用Illuminate\Auth\Notifications\ResetPassword类发送密码重置电子邮件。消息是用英文写的。如何将其翻译成另一种语言。发布供应商文件不会复制此类。我无法编辑它,因为它在供应商文件中,并且不在vcs存储库中。

1 个答案:

答案 0 :(得分:2)

电子邮件通知是从CanResetPassword特征发送的,您需要覆盖对此负责的方法并提供您自己的通知类。

User extends Authenticatable
{
    // ...
    public function sendPasswordResetNotification($token)
    {
        $this->notify(new MyResetPasswordNotification($token));
    }
    // ...
}

并创建通知:

MyResetPasswordNotification extends Notification
{
    public $token;

    public function __construct($token)
    {
        $this->token = $token;
    }

    public function via($notifiable)
    {
        return ['mail'];
    }

    public function toMail($notifiable)
    {
        return (new MailMessage)
            ->line(trans('reset_password.first_line'))
            ->action(trans('reset_password.action', ['route' => route('password.reset', $this->token)))
            ->line(trans('reset_password.last_line');
    }
}

现在您只需要提供翻译。