对于多语言网站,在所有控制器的所有方法中都有这一行:\ App :: setLocale(session(' lang'));
我可以把它放在哪里不重复? (在AppServiceProvider中尝试过,...)
或者多语种网站还有其他可能性吗?
干杯,
伊夫
答案 0 :(得分:0)
执行此类操作的最佳位置可能是middleware。
在自定义中间件的handle
功能中,您可以访问会话,因此您可以更改区域设置。然后,您可以将此中间件应用于所有适用的路由甚至是中间件组。
答案 1 :(得分:0)
默认情况下,laravel在config/app.php
文件
您可以通过动态修改语言环境值来简单地覆盖它。我建议您在App\Providers\AppServiceProvider
方法的boot
上添加代码。
你可以用两种方式实现它
// Modifying config value
$this->app['config']['app.locale'] = session("lang", "en");
或
// Setting by App::setLocale
$this->app->setLocale(session("lang", "en"));
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
// Modifying config value
$this->app['config']['app.locale'] = session("lang", "en");
// or
// Setting by App::setLocale
$this->app->setLocale(session("lang", "en"));
}
}