如何在 Laravel 中制作多语言(本地化)?

how to make multilingual (localization) in Laravel?

我已经尝试在 laravel 中创建本地化以及在 laravel 官方文档中给出,并且它非常有效!!但是它仅适用于单个请求。我希望它适用于所有请求,直到用户更改语言。 如何在 laravel 中不仅针对 laravel 文档中给出的单个请求创建多语言站点?

首先我们需要写几个锚标签(使用你的:在你的 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::get('change/locale/{lang}', function($lang){
        Session::put('locale', $lang);
        return redirect()->back();
    });

下一步是 运行 在您的终端中使用此命令创建名为 LanguageMiddleware

的中间件
    php artisan make:middleware LanguageMiddleware

之后让我们打开我们在 app/Http/Middleware 文件夹中创建的 LanguageMiddleware 并将这对代码替换为句柄方法

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 文件 (en,fr,uz)

现在您的文件夹必须看起来像这样。

现在你可以这样调用你的字典了

@lang('messages.greeting')

到此结束!现在您可以通过单击我们在第一步中创建的锚标记来检查它。