2017-10-07 78 views
2

我正在向axios的控制器發送一個post請求。 languge設置爲fr,並且所有刀片文本也更改爲fr,但是如果我使用axios發送了post請求,它不會從控制器轉換。我試圖看到控制器中的語言,它總是顯示en我怎樣才能得到我的控制器在laravel內的lang

這裏是我使用..

初始路徑來加載登錄葉片

Route::get('/{lang?}/login', 'Auth\[email protected]')->name('login'); 

其中根據lang變量設置LANG中間件內這條路線的代碼。

發佈採購信息使用愛可信

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

[email protected]

$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')}} work ju st罰款,但沒有反式功能 **

我是否必須在每個路由中設置區域設置,無論是ajax請求還是純請求?因爲我最初加載頁面時設置了語言環境,所以我還必須再次爲ajax請求執行此操作嗎?

謝謝。

回答

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' 
    ]]); 
}); 
+0

好,我試圖硬集本地,然後試圖翻譯。它設置了本地但沒有翻譯。 '$ loc = config('app.locale'); \ Log :: info($ loc);' trans('Invalid Details') 雖然我在調用trans函數之前硬編碼本地,但它沒有工作 – sadek

+0

'config('app.locale')'只會收到當前的本地語言代碼。要設置語言,請使用'app() - > setLocale('fr)' –

+0

對不起,我喜歡這個'\ App :: setLocale('fr');'它設置正確 – sadek