【问题标题】:Laravel localization with urlLaravel 本地化 url
【发布时间】:2019-08-29 13:49:10
【问题描述】:

我正在使用 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。如果有人能帮我解决这个问题,那就太好了。

谢谢。

【问题讨论】:

标签: php laravel laravel-localization


【解决方案1】:

你可以试试这个,

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

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

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

Laravel app()->getLocale() inside routes always print the default "en"

希望这会有所帮助:)

【讨论】:

  • 您提供的链接引导我找到正确的答案。这是关于 mcamara/laravel-localization 插件。谢谢
猜你喜欢
  • 1970-01-01
  • 2018-07-14
  • 1970-01-01
  • 2020-05-13
  • 2021-04-03
  • 2014-06-26
  • 1970-01-01
  • 2019-03-19
  • 1970-01-01
相关资源
最近更新 更多