如何在 laravel 中获取我的控制器中的语言
How can I get the lang inside my controller in laravel
我正在向带有 axios 的控制器发送 post 请求。语言设置为 fr
并且所有 blade 文本也更改为 fr
但是如果我使用 axios 发送 post 请求它不会从控制器转换。我试图在控制器中查看语言,它始终显示 en
。
这是我使用的代码..
加载登录名的初始路径blade
Route::get('/{lang?}/login', 'Auth\LoginController@showLoginForm')->name('login');
这个路由在一个中间件里面,它根据 lang 变量设置 lang。
Post 使用 axios 请求
Route::post('user/login', [
'uses' => 'loginController@login'
]);
里面loginController@login
$loc=config('app.locale');
\Log::info($loc); // It always shows en
我正在尝试 return 像这样的翻译文本
return response()->json([
'error' => trans('Invalid Details') // I am using string as key in fr.json file
],401);
**我认为 trans 函数对我不起作用,甚至在我的 blade 中也不行,在 blade @lang('key') 和 {{__(key')} } 工作正常但不是 trans 函数
**
无论是 ajax 请求还是 plain get 请求,我是否必须在每个路由中设置语言环境?因为我在最初加载页面时设置了语言环境,所以我是否也必须为 ajax 请求再次设置语言环境?
谢谢。
如果你想在你的控制器中设置本地,
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'
]]);
});
我正在向带有 axios 的控制器发送 post 请求。语言设置为 fr
并且所有 blade 文本也更改为 fr
但是如果我使用 axios 发送 post 请求它不会从控制器转换。我试图在控制器中查看语言,它始终显示 en
。
这是我使用的代码..
加载登录名的初始路径blade
Route::get('/{lang?}/login', 'Auth\LoginController@showLoginForm')->name('login');
这个路由在一个中间件里面,它根据 lang 变量设置 lang。
Post 使用 axios 请求
Route::post('user/login', [
'uses' => 'loginController@login'
]);
里面loginController@login
$loc=config('app.locale');
\Log::info($loc); // It always shows en
我正在尝试 return 像这样的翻译文本
return response()->json([
'error' => trans('Invalid Details') // I am using string as key in fr.json file
],401);
**我认为 trans 函数对我不起作用,甚至在我的 blade 中也不行,在 blade @lang('key') 和 {{__(key')} } 工作正常但不是 trans 函数 **
无论是 ajax 请求还是 plain get 请求,我是否必须在每个路由中设置语言环境?因为我在最初加载页面时设置了语言环境,所以我是否也必须为 ajax 请求再次设置语言环境?
谢谢。
如果你想在你的控制器中设置本地,
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'
]]);
});