Имеется мультиязычный сайт. Пользователь может выбрать язык, пользователю могут отправляться письма. Письма необходимо отравлять на языке, выбранном пользователем.
Как это вижу я:
Создаю шаблоны письма для каждого языка
views/emails
en/
welcome.blade.php
ru/
welcome.blade.php
ar/
welcome.blade.php
Для удобства навелосипедил небольшой трейт
trait TranslatableMail
{
protected function localizedView($name, $locale = null): string
{
$localizedView = 'emails.'.($locale ?? $this->user->language).'.'.$name;
return View::exists($localizedView) ? $localizedView : 'mails.en.'.$name;
}
}
И подмешиваю в свои Mailable классы
class WelcomeMail extends Mailable implements ShouldQueue
{
use Queueable, SerializesModels;
use TranslatableMail;
public function build(): WelcomeMail {
return $this->from(config('mail.from.address'), config('mail.from.name'))
->subject(__('mail.subject.welcome', [], $this->user->language))
->view($this->localizedView('welcome'));
}
}
В принципе, всё работает, но может есть какие-то общепринятые практики?