使用Laravel 5进行电子邮件本地化

时间:2015-02-12 10:00:16

标签: php email laravel localization

我是Laravel的新手,在用户通过表单注册后尝试发送电子邮件。我正在使用Laravel附带的默认身份验证文件并对其进行了修改。例如:我只想要一个唯一的电子邮件地址进行注册,然后发送凭据并自动登录新用户。

为了将来的目的,我也在处理存储翻译的语言文件。

我已经将AuthController定制为也接受了MailerContract,并且在postRegistration函数中我发送的电子邮件如下:

/**
     * Handle a registration request for the application.
     *
     * @param  \Illuminate\Foundation\Http\FormRequest  $request
     * @return \Illuminate\Http\Response
     */
    public function postRegister(Request $request)
    {
        $validator = $this->registrar->validator($request->all());

        if ($validator->fails())
        {
            $this->throwValidationException(
                $request, $validator
            );
        }

        $input = $request->all();
        $input['password'] = str_random(8);

        $this->auth->login($this->registrar->create($input));

        $this->mailer->send('emails.welcome', ['email' => $input['email'], 'password' => $input['password']], function($message) use($input) {
            $message->to($input['email'])->subject(trans('emails.welcome:subject'));
        });

        return redirect($this->redirectPath());
    }

我注意到我的主题值没有被翻译。如何在控制器/特征中使用语言文件? Laravel不从视图中选择这个吗?

根据要求,语言文件的一部分:(/resources/lang/nl/emails.php

<?php

return [
    'welcome:subject' => 'Uw inloggegevens' // Dutch for Your login credentials
];

2 个答案:

答案 0 :(得分:1)

您需要在/resources/lang/nl/emails.php中使用多维数组:

return [
    'welcome' => [
        'subject' => 'Uw inloggegevens',
    ],
];

在trans函数中使用点符号而不是冒号:

$message->to($input['email'])->subject(trans('emails.welcome.subject'));

答案 1 :(得分:0)

我遇到了本地化的另一件事,并在SO上问了一个问题。似乎使用中间件是解决方案,因为它在应用程序中设置了正确的语言。

感谢@lukasgeiter,答案可以在这里找到:Localization with Laravel5 without domain.com/language/