Laravel:无法在Mailable中设置语言环境

时间:2018-07-03 06:53:35

标签: php laravel laravel-5 locale

我已更新为Laravel 5.6,并且希望使用Mailable类中的新locale method

我创建了一个可邮寄的类

php artisan make:mail Test --markdown="emails.test"

这是我的刀片文件:

@component('mail::message')
@lang('list.test')
@endcomponent

如果我发送邮件

  $test = new \App\Mail\Test();
  $test->locale('de');
  \Mail::to('myemail@test.com')->send($test);

然后,该邮件未使用来自resources/lang/de/list.php的我的语言环境文件

<?php 

   return [ 'test' => 'Dies ist ein Test'];

那是为什么?

2 个答案:

答案 0 :(得分:2)

在Mail Facade中使用语言环境。

$test = new \App\Mail\Test();
\Mail::to('myemail@test.com')->locale('de')->send($test);

Mail Facade和Mailable指的是不同的类。将locale()与Mailable结合使用,请尝试此操作。

 $test = new \App\Mail\Test();
 $test->locale('de')->send();

答案 1 :(得分:1)

尝试将语言环境传递给构造函数并进行设置,然后在build函数中进行设置:

public $locale;

public function __construct(string $locale = 'de')
{
    $this->locale = $locale;
}

public function build()
{
    return $this->locale($this->locale)
                ->from('example@example.com')
                ->view('emails.example');
}