繁体   English   中英

Laravel 9、用preferredLocale发送通知

[英]Laravel 9, send notification with preferredLocale

我正在创建一个双语应用程序,我在其中实现了数据库和电子邮件通知。

例如,通知是用户已开始新对话的信息。 不幸的是,发送到数据库的通知是以发送它们的用户的语言发送的(设置语言: App::setLocale(Auth()->user->locale); )而不是以接收者的语言发送。

我用:

use Illuminate\Contracts\Translation\HasLocalePreference;
 
class User extends Model implements HasLocalePreference
{
    /**
     * Get the user's preferred locale.
     *
     * @return string
     */
    public function preferredLocale()
    {
        return $this->locale;
    }
}

奇怪的是,email 通知以这种方式工作。

我这样翻译通知:

$customer->notify(new NewMessageNotification($message, trans('notifications.new_message', ['user' => $user->name])));

我试过这种方式,但它没有改变任何东西:

https://setkyar.medium.com/fixing-laravels-notification-locale-issue-9ad74c2652ca

虽然现在我想知道是否保存在密钥库中并仅在阅读时翻译会不会更好,以便在更改语言时翻译所有收到的通知。 唯一的问题是那时候怎么做。

如果我理解得很好,您想根据目标语言而不是发件人语言发送通知。 如果是,preferredLocale 可能不起作用,但您可以尝试在通知触发器上定义语言,如下所示:

$customer->notify(new NewMessageNotification($message, trans('notifications.new_message', ['user' => $user->name]))->locale('pt'));

我发现我以两种语言保存到数据库中,并且在阅读时,我检查用户设置的语言以显示适当的版本。

转念一想,以当前设置的语言显示通知似乎比发送时更合乎逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM