0 レビュー
1 回答
php-Laravelでスイッチ言語を作成する方法は?
翻訳スイッチャーの作成に問題があります。これは私がすでに行ったことです。
ステップ1 :すべてのルートの前にロケールパラメータ{languge}を付けました
Route::redirect('/', '/en');
Route::group(['prefix' => '{language}'], function () {
//products routes
Route::get('/', '[email protected]' )->name('acceuil');
Route::get('/boutique/{slug}', '[email protected]' )->name('product.show');
Route::get('/search', '[email protected]' )->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 :ここで、次のように、ロケールパラメータ{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は機能しません:
何か案は ?
わからない
0
レビュー
答え :
解決:
これは私にとってはうまくいくようです:
{{ route(Route::currentRouteName(), array_merge(['fr'], array_slice(($rp = Route::current()->parameters()), 1, count($rp)))) }}
array_slice
する必要があります。次に、それらを新しい言語とマージできます。言語を現在のパラメーターとマージするため、順序によって常に言語が最初になり、その後に現在のパラメーターの順序が決まります。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。