The*_*eky 3 notifications laravel lumen
随着 Laravel 5.7 的发布,Illuminate\Notifications\Notification 类开始提供一个 locale 方法来设置所需的语言。格式化通知时,应用程序将更改为此区域设置,然后在格式化完成后恢复到先前的区域设置。以下是此功能的示例:
$user->notify((new InvoicePaid($invoice))->locale('ar'));
Run Code Online (Sandbox Code Playgroud)
我只需要在 lumen(最新版本)中使用这个功能,但是当我实现那个 Like文档时说我得到了一个错误
Call to undefined method Laravel\Lumen\Application::getLocale()
这是因为在流明应用中没有getLocale或没有setLocale方法..所以有任何解决这个问题的想法。
Lumen 和 Laravel 之间的区别在于,在 Laravel 中你调用Application->setLocale().
这做了三件事,如上所述:
app.locale但是,在 Lumen 中,您可以直接使用app('translator')->setLocale()或调用翻译器App::make('translator')->setLocale(),
所以这里的不同之处在于不会自动设置 config 变量并且不会触发 locale.changed 事件。
Laravel 的 Application 类也会更新配置并触发一个事件:
public function setLocale($locale)
{
$this['config']->set('app.locale', $locale);
$this['translator']->setLocale($locale);
$this['events']->fire('locale.changed', [$locale]);
}
Run Code Online (Sandbox Code Playgroud)
在 Laravel 中,getLocale 只是读取配置变量:
public function getLocale()
{
return $this['config']->get('app.locale');
}
Run Code Online (Sandbox Code Playgroud)
对于翻译思想来说,重要的是翻译者。Laravel 的 trans 助手看起来像这样:
function trans($id = null, $parameters = [], $domain = 'messages', $locale = null)
{
if (is_null($id)) {
return app('translator');
}
return app('translator')->trans($id, $parameters, $domain, $locale);
}
Run Code Online (Sandbox Code Playgroud)
您需要使用上述 3 种方法使您的应用程序扩展另一个类
| 归档时间: |
|
| 查看次数: |
983 次 |
| 最近记录: |