如何在laravel

时间:2017-10-07 08:46:05

标签: php laravel laravel-5 laravel-5.5

我正在向带有axios的控制器发送帖子请求。语法设置为fr,所有刀片文本也更改为fr但如果我使用axios发送帖子请求,则不会从控制器转换。我试图在控制器中看到语言,它总是显示en

这是我正在使用的代码..

加载登录刀片的初始路径

Route::get('/{lang?}/login', 'Auth\LoginController@showLoginForm')->name('login');

这个路由在中间件中,根据lang变量设置lang。

使用axios发布请求

Route::post('user/login', [
   'uses' => 'loginController@login'
 ]);

内部loginController@login

$loc=config('app.locale');
\Log::info($loc); // It always shows en

我正在尝试像这样返回翻译文本

return response()->json([
      'error' => trans('Invalid Details') // I am using string as key in fr.json file
 ],401);

**我认为反式功能对我来说不起作用,即使在我的刀片中,刀片@lang('key')和{{__(key')}}工作得很好但不是trans函数 **

我是否必须在每个路由中设置区域设置,无论是ajax请求还是普通get请求?因为我在最初加载页面时设置了语言环境所以我是否还要为ajax请求再次执行此操作?

谢谢。

1 个答案:

答案 0 :(得分:2)

如果要在控制器中设置本地,

function showLoginForm($language){
    app()->setLocale($language);
    ........
    ........
}

如果要为所有子路径设置本地,请尝试按照一个

// set locale for '/admin/anything/[en|fr|ru|jp]/anything' only
if (in_array(Request::segment(1),['en', 'fr', 'ru', 'jp'])) {
    App::setLocale(Request::segment(1));
} else {
    // set default / fallback locale
    App::setLocale('en');
}

Route::group(['prefix' => '{locale}'], function() {
    Route::resource('product', 'ProductController', ['except' => [
    'show'
    ]]);
});