すべてのルートに$ locale-variableのプレフィックスを付けることにしました。これは、Google検索で見つかったコードです:laravelの言語変更URLの生成
$locale = Request::segment(1);
if (in_array($locale, Config::get('app.available_locales'))) {
App::setLocale($locale);
} else {
$locale = null;
}
Route::group(array('prefix' => $locale), function() {
//All my routes
});
ここで、ロケール間をジャンプするために動的にURLを生成したいと思います。現在のURLまたはルートを生成する方法が必要ですが、$ locale-parameterを置き換えてください。あなたは、この擬似コードに似た何かを書くことができる必要があります:
route(Route::Current(), [$locale => 'foo'])
質問:
私は私の現在のURLを取得し、その中で一つの引数を交換したいです。それ、どうやったら出来るの?
アップデート1:私のルートの名前を与える
、私はこれを行うことができるよ:
route('index', 'foo') //Gives mywebsite.com?foo
このしかし、指名手配結果、mywebsite.com/fooを生成しません。 。代わりにmywebsite.com?fooを生成します。私の推測では、ルートはこのルートがネストされ、フラグメントのプレフィックスが付いていることを理解していないので、代わりに引数として扱います。それは私が変更したいロケールが助けにはならないであることを指定:
route('index', ['locale' => 'foo']) //Gives mywebsite.com?locale=foo
アップデート2:代わりに言うために接頭辞を変更する
:
Route::group(array('prefix' => '{locale?}'), function() {
はルート()の作業を行います:
route('index', ['locale' => 'foo']) //Gives mywebsite.com/foo
ただし、いくつかのURLが破損しています。そのうちのいくつかは変数で始まるため、 routes.phpのは「fooは」今、言語としてのURL mywebsite.com/fooを解釈したよう
Route::get('/{id}', '[email protected]');
:ルートグループ内の次のルートは、作業を停止します。 routes.phpにlocaleのデフォルト値を設定して{route?}の代わりに{route}と書くことができるようにする方法があれば、それがデフォルトロケールにリダイレクトされるようにすれば問題は解決します。
アップデート3:
「プレフィックス」=>「{?ロケールを}」を有するの方向に移動するには、代わりに追求する価値があるとあまりにも多くのサブ問題につながります。問題は、現在のURLからURLを生成することに戻りますが、URLに言語を挿入することになります。私は現在、これは最も単純な解決策であるため、正規表現の置き換えだけでこれを行うことを検討しています。
あなたは 'すべての[my] routes'にプレフィックスを付けたいと思いますが、それをオプションにしたいと思っていますか?あなたは本当に何をしたいですか?私はあなたのルートのすべてまたは無しにプレフィックスを付ける方が良いと思います。 – Yannici
私は、ロケールがURLにあるロケールシステムを使いたいと思っています。ロケールがurl/requestから欠落している場合は、デフォルトのロケールを使用する必要があります。 – Rkey
Laravelは最初のパラメータをいつロケールとして解釈するのか、そうでないのかをわからないので、これは簡単ではないと思います。 – Yannici