如何在Laravel中进行多语言(本地化)?

时间:2018-08-24 13:30:58

标签: php laravel localization multilingual

我试图在laravel中创建本地化,并在laravel官方文档中给出了本地化,它的工作原理很吸引人!!但是,它仅适用于单个请求。我希望它适用于所有请求,直到用户更改语言为止。 如何不仅在laravel文档中给出的单个请求中在laravel中创建多语言站点?

1 个答案:

答案 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文件将名为uzfrviews/lang的文件夹创建到messages.php文件夹中。

现在在此文件中定义您的翻译,例如'welcome' => 'bonju'文件夹中的fr 'welcome' => 'salom'文件夹中的uz 'welcome' => 'Welcome My Friends'文件夹中的en

然后在视图模板文件中可以翻译消息,以便... @lang('messages.welcome')

那就结束了!现在,您可以通过单击我们在第一步中创建的锚标签来对其进行检查。