Laravel’s Notification locale issue

I was checking the locale issue on my own application and found out this interesting issue. I am using Laravel’s user preferred locales for the notification translation. But, it keep going with our application default language. It does not use the user’s preferred locales.

https://laravel.com/docs/8.x/notifications#localizing-notifications
https://laravel.com/docs/8.x/notifications#user-preferred-locales

I keep trying out and testing out. And found out the issue. It was because I am using the translation on the construct. Not inside the channels. Like the following…

class UserAlert extends Notification
{
    use Queueable;

    protected $title;

    protected $body;

    /**
     * Create a new notification instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->title = trans('notification.title');
        $this->body = trans('notification.body');
    }

That’s causing the issue. I have to use like the following. Inside the notification channel. Otherwise it will keep using the application’s default language.

    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return ['mail'];
    }

    /**
     * Get the mail representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return \Illuminate\Notifications\Messages\MailMessage
     */
    public function toMail($notifiable)
    {
        $title = trans('notification.title');
        $body = trans('notification.body');
        

That’s the issue with the Notification Locale. I hope this was helpful. I am not sure about others, I use to come back to my blog and read hahaha. Happy debugging.

Leave a Reply