我正在向带有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请求再次执行此操作?
谢谢。
答案 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'
]]);
});