Локализация не работает для всех URL в Laravel - PullRequest
2 голосов
/ 28 января 2020

Я применил локализацию в моем Laravel проекте. Но локализация вызывает ошибку для некоторого URL.

У меня есть две языковые кнопки en и bn в моем разделе заголовка. пока пользователь нажимает любую кнопку языка, весь сайт будет преобразован в этот язык.

кнопка

<li><a href="{{ 'locale/en' }}">English</a></li>
<li><a href="{{ 'locale/bn' }}">Bangla</a></li>

.env

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:Dm34MLg8AbQk4ADyIG9cYPaIwYbQgrUgrN7Ani/x+JA=
APP_DEBUG=true
APP_URL=http://localhost:90/office/sencare/

веб. php

Route::get('/doctor', 'homeController@doctor'); //route A
Route::get('/doctor/{data}', 'homeController@doctor_detail'); //route B
Route::get('/technology', 'homeController@technology');//route A
Route::get('/technology/{data}', 'homeController@technology_detail'); //route B

Route::group(['prefix' => 'admin'], function () {
    Voyager::routes();
});

// ================LOCALIZATION=============
Route::get('locale/{locale}',function ($locale){
    Session::put('locale',$locale);
    return redirect()->back();
});
// ================LOCALIZATION=============

/*=============START CUSTOMIZE ERROR PAGE===========*/
Route::any('{catchall}', function() {  
  return App::call('App\Http\Controllers\errorController@error');

})->where('catchall', '.*');
/*=============END CUSTOMIZE ERROR PAGE===========*/

Локализация Middlewer

public function handle($request, Closure $next)
    {
        if(\Session::get('locale')){

            \App::setLocale(\Session::get('locale'));

        }

        return $next($request);
    }

Так, пока пользователь посещает страницы в A введите маршруты и нажмите любую языковую кнопку, чтобы преобразовать страницу, она работает нормально и конвертируется.

Но пока пользователь посещает страницы в B, введите маршруты и нажмите любую языковую кнопку, чтобы преобразовать страницу. , а затем получил страницу ошибки в настройке маршрутов ошибок.

сообщение об ошибке

СТРАНИЦА НЕ НАЙДЕНА Запрошенный URL неверен.

Другой момент заключается в том, что, хотя я нажимал на кнопку языка под A типом страницы маршрута, URL оставался прежним. Но для страницы маршрута типа B после нажатия кнопки языка, URL изменился. Например:

http://localhost: 90 / Офис / Sencare / Доктор / Язык / ru / 10 * *

это locale/en/ не подходит для любой другой URL.

Как решить эту проблему?

Кто-нибудь, пожалуйста, помогите? Заранее спасибо.

1 Ответ

0 голосов
/ 28 января 2020

Из кода HTML, который вы разместили, я вижу, что ваши языковые кнопки используют относительный путь URL. Это означает, что путь не начинается с прямого слэ sh.

Относительные пути добавляют URL к URL текущей страницы. Например, если пользователь на странице http://localhost:90/Office/sencare/doctor/ щелкает ссылку Bangla, он будет переведен в http://localhost:90/Office/sencare/doctor/locale/bn.

Вместо того, чтобы использовать относительный путь для ваших URL-адресов, вы должны изменить их на абсолютные. добавив вперед перед ними sla sh.

<li><a href="{{ '/locale/en' }}">English</a></li>
<li><a href="{{ '/locale/bn' }}">Bangla</a></li>
...