我试图在laravel中创建本地化,并在laravel官方文档中给出了本地化,它的工作原理很吸引人!!但是,它仅适用于单个请求。我希望它适用于所有请求,直到用户更改语言为止。 如何不仅在laravel文档中给出的单个请求中在laravel中创建多语言站点?
答案 0 :(得分:0)
首先,我们需要编写一些锚标记(使用您的锚标记:在home.blade.php页面中)以切换如下所示的语言...
<a href="{{url('change/locale/en')}}">ENGLISH</a>
<a href="{{url('change/locale/fr')}}">FRENCH</a>
<a href="{{url('change/locale/uz')}}">UZBEK</a>
然后我们需要创建如下所示的Route来接受请求...
Route::get('change/locale/{lang}', function($lang){
Session::put('locale', $lang);
return redirect()->back();
});
下一步是在终端中运行此命令以创建名为LanguageMiddleware
的中间件
php artisan make:middleware LanguageMiddleware
之后,打开我们创建的LanguageMiddleware
到app / Http / Middleware文件夹中,并将这对代码替换为handle方法
public function handle($request, Closure $next)
{
if ( Session::has('locale')) {
App::setLocale(Session::get('locale'));
}
return $next($request);
}
现在将我们的\App\Http\Middleware\LanguageMiddleware::class,
类添加到Kernel.php到protected $middlewareGroups
->
web
数组中。
并使用en
文件将名为uz
,fr
,views/lang
的文件夹创建到messages.php
文件夹中。
现在在此文件中定义您的翻译,例如'welcome' => 'bonju'
文件夹中的fr
'welcome' => 'salom'
文件夹中的uz
'welcome' => 'Welcome My Friends'
文件夹中的en
。
然后在视图模板文件中可以翻译消息,以便... @lang('messages.welcome')
那就结束了!现在,您可以通过单击我们在第一步中创建的锚标签来对其进行检查。