Lumen 和 Laravel 之间的区别在于,在 Laravel 中你调用Application->setLocale()
.
如上所述,这会做三件事:
- 设置配置
app.locale
- 在翻译器上设置区域设置
- 触发 locale.changed 事件
In Lumen不过,你可以直接打电话给翻译员app('translator')->setLocale()
or 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]);
}
在 Laravel 中, getLocale 只是读取配置变量:
public function getLocale()
{
return $this['config']->get('app.locale');
}
对于翻译思想来说,重要的是译者。 Laravel 的跨式助手看起来像这样:
function trans($id = null, $parameters = [], $domain = 'messages', $locale = null)
{
if (is_null($id)) {
return app('translator');
}
return app('translator')->trans($id, $parameters, $domain, $locale);
}
您需要使您的应用程序使用上述 3 种方法扩展另一个类