0

我正在使用 Laravel 框架开发一个多语言 Web 应用程序。所以在这个应用程序中,我有一个特殊的条件来做多语言功能,如下所示。

  • 用户可以从一些标志中进行选择并手动更改语言。它将他的 URL 更改为 /{lang} .. 例如,webapp.com/cs - 所以他将看到捷克语的所有内容。webapp.com/en - 用英语查看所有内容。
  • 选择的本地化应该是持久的,因此当用户更改页面或其他内容时不会消失 - 它应该始终在 URL 中。

我创建了 Route 以在会话中设置语言环境,如下所示。

    Route::get('/{locale}', function ($locale) {
    session()->put('locale', $locale);
    return back();
  });

并创建中间件并将其添加到 http\Kernel 中的 $middlewareGroups 中。

下面是我的中间件。

public function handle($request, Closure $next)
    {
        if (session()->has('locale')) {
            app()->setLocale(session('locale'));
        }

        return $next($request);
    }

本地化进展顺利,它提供了正确的翻译和一切。但我需要在 URL 中显示语言是什么。例如 webapp.com/cs,webapp.com/en。如果有人可以帮助我解决这个问题,那就太好了。

谢谢。

4

1 回答 1

0

你可以试试这个

在您的每条路线中,您都可以像这样附加当前的本地语言

Route::get('/home/'.app()->getLocale(),'HomeController@index');

还有一件事你应该看到这个

路由内部的 Laravel app()->getLocale() 总是打印默认的“en”

希望这可以帮助 :)

于 2019-04-08T12:13:04.823 回答