【问题标题】:how to create a switch language in Laravel?如何在 Laravel 中创建切换语言?
【发布时间】:2021-08-05 19:30:13
【问题描述】:

我在构建翻译切换器时遇到问题,这是我已经做过的:

第 1 步:我已经为所有路由添加了语言环境参数 {languge}

Route::redirect('/', '/en');

Route::group(['prefix' => '{language}'], function () {
            //products routes
                    Route::get('/',  'ProductController@index' )->name('acceuil');
                    Route::get('/boutique/{slug}',  'ProductController@show' )->name('product.show');
                    Route::get('/search',  'ProductController@search' )->name('product.search');

              });
              

第 2 步:然后我创建了一个中间件,用于根据请求设置应用程序的语言

 public function handle($request, Closure $next)
    {
        App::setLocale($request->language);
        return $next($request);
    }

第 3 步:这里我将语言环境参数 {languge} 添加到所有现有链接中,如下所示:

<form method="POST" action="{{ route('register', app()->getLocale()) }}">

这里一切都很好,但是:

这里我想创建一个语言切换器,这就是我所做的:

第 4 步:这里我将 Locale 参数 {languge} 添加到所有现有链接,如下所示:

<ul class="nav navbar-nav navbar-right">
                                <li class="dropdown">
                                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{{ _('language')  }}<span class="caret"></span></a>
                                    <ul class="dropdown-menu">
                                    <li><a href="{{ route(  Route::currentRouteName(), 'fr' ) }}">{{ _('Francais') }}</a></li>
                                    <li role="separator" class="divider"></li>
                                    <li><a  href="{{ route(  Route::currentRouteName(), 'en' ) }}">{{ _('anglais')  }}</a></li>  
                                    
                                    </ul>
                                </li>
                            </ul> 

              

问题是我有不同的路线,其中一些需要参数,然后第 4 步不起作用:

有什么想法吗?

【问题讨论】:

    标签: php laravel language-translation


    【解决方案1】:

    这似乎对我有用:

    {{ route(Route::currentRouteName(), array_merge(['fr'], array_slice(($rp = Route::current()->parameters()), 1, count($rp)))) }}
    

    首先我们需要从参数中array_slice旧语言,然后我们可以将它们与新语言合并。由于我们将语言与当前参数合并,因此顺序将始终为我们提供语言优先和当前参数的后续排序。

    【讨论】:

      猜你喜欢
      • 2021-11-26
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-13
      • 2018-06-05
      相关资源
      最近更新 更多