3
多言語ラーベルウェブサイトhereの作成に関する記事があり、魅力的です。Artisanサービスが実行されている場合にのみ動作する言語切り替えツール
しかし、私は(例えば私のホスティングサービス上で)php artisan serve
を実行していないとき、言語を切り替えること「ORIGINAL_LANGUAGE/LANG/destination_language」にリダイレクトしていないし、私に404 RouteNotFoundを与える:
NotFoundHttpException in RouteCollection.php line 179:
in RouteCollection.php line 179
at RouteCollection->match(object(Request)) in LanguageController.php line
22
at LanguageController->switchLang(object(Request), 'fr')
at call_user_func_array(array(object(LanguageController), 'switchLang'),
array('request' => object(Request), 'lang' => 'fr')) in Controller.php
line 55
at Controller->callAction('switchLang', array('request' =>
object(Request), 'lang' => 'fr')) in ControllerDispatcher.php line 44
at ControllerDispatcher->dispatch(object(Route),
object(LanguageController), 'switchLang') in Route.php line 204
at Route->runController() in Route.php line 160
at Route->run() in Router.php line 559
私は全く持っています。
public function switchLang(Request $request, $lang)
{
// Store the URL on which the user was
$previous_url = url()->previous();
// Transform it into a correct request instance
$previous_request = app('request')->create($previous_url);
// Get Query Parameters if applicable
$query = $previous_request->query();
// In case the route name was translated
$route_name = app('router')->getRoutes()->match($previous_request)->getName();
// Store the segments of the last request as an array
$segments = $previous_request->segments();
// Check if the first segment matches a language code
if (array_key_exists($lang, config('translatable.locales'))) {
// If it was indeed a translated route name
if ($route_name && Lang::has('routes.'.$route_name, $lang)) {
// Translate the route name to get the correct URI in the required language, and redirect to that URL.
if (count($query)) {
return redirect()->to($lang . '/' . trans('routes.' . $route_name, [], $lang) . '?' . http_build_query($query));
}
return redirect()->to($lang . '/' . trans('routes.' . $route_name, [], $lang));
}
// Replace the first segment by the new language code
$segments[0] = $lang;
// Redirect to the required URL
if (count($query)) {
return redirect()->to(implode('/', $segments).'?'.http_build_query($query));
}
return redirect()->to(implode('/', $segments));
}
return redirect()->back();
}
はそれが助けのご希望をありがとう
:それはから来る場所についての考え方は、ここに私のLanguageController.php方法switchLang()
です。! 10
(私はそれがルート/パブリックフォルダのルーティングの問題だと思うが、どこに見つけることができない)