如何在Laravel 5.7中翻译密码重置电子邮件?

时间:2018-10-01 22:05:09

标签: php laravel

我正在尝试翻译Laravel 5.7中的密码重置电子邮件,默认情况下为英语。

通常-对于登录,注册和密码重置视图-您可以翻译/resources/lang/下的文件,但在电子邮件中找不到与正文对应的行。

如何翻译密码重置电子邮件?

4 个答案:

答案 0 :(得分:6)

在方法Illuminate\Auth\Notifications\ResetPassword::toMail()中,您可以看到Lang::getFromJson()方法用于填充电子邮件:

return (new MailMessage)
    ->subject(Lang::getFromJson('Reset Password Notification'))
    ->line(Lang::getFromJson('You are receiving this email because we received a password reset request for your account.'))
    ->action(Lang::getFromJson('Reset Password'), url(config('app.url').route('password.reset', $this->token, false)))
    ->line(Lang::getFromJson('If you did not request a password reset, no further action is required.'));

因此,您应该能够将这些翻译添加到resources/lang/xx.json文件as described in the documentation中(向下滚动到“将翻译字符串用作键”。)

这也适用于Illuminate\Auth\Notifications\VerifyEmail中的电子邮件验证消息。

例如,这可能是resources/lang/fr.json的内容(原谅我25年前的高中法语)

{
    "If you did not request a password reset, no further action is required.": "Si vous ne demandez pas le réinitialisation de votre mot de passe, vous ne pouvez rien faire"
}

对于这两个类,模板文件Illuminate/Notifications/resources/views/email.blade.php包含标准Blade @lang标签中的其他文本,可以使用位于resources/lang/xx/messages.php的消息文件来翻译这些文本

例如,这可能是resources/lang/fr/messages.php的内容:

<?php
return [
    "Regards" => "Félicitations",
];

答案 1 :(得分:1)

刚刚发现您还可以翻译json文件中的@lang标签:

{
  "Regards": "Met vriendelijke groet",
  "If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser: [:actionURL](:actionURL)": "Als u problemen ondervindt bij het klikken op de knop \":actionText\" kopieert en plakt u de onderstaande URL in uw webbrowser\n[:actionURL](:actionURL)",
  "All rights reserved.": "Alle rechten voorbehouden."
}

在存储库中查找所有翻译文件:

https://github.com/caouecs/Laravel-lang

答案 2 :(得分:0)

即使在Laravel 6.0中,翻译也应采用json格式。 该文件位于此处: resources / lang / fr.json

答案 3 :(得分:0)

已准备好使用laravel https://github.com/Laravel-Lang/lang的75种语言的翻译清单 可能是您的语言存在于此列表中。