[英]Configure supported language on mcamara/laravel-localization
[英]mcamara/laravel-localization named routes localization
我根據文檔和users
表在laravel 5.6
設置了mcamara/laravel-localization 1.3庫,我創建了每次用戶切換語言時設置的lang
列(這允許我以適當的語言發送“背景”循環電子郵件或設置適當的用戶登錄后的語言)。 我在web.php
中的LaravelLocalization::setLocale()
組中設置了所有路由(如文檔所述)。
我想在我的控制器中使用命名路由,例如在用戶登錄后重定向到正確的頁面(用戶來自 EN 登錄頁面,但他的lang='pl'
)。 在我的LoginController@redirectTo()
我只使用:
App::setLocale(Auth::user()->lang);
$url = route('dashboard.index');
return $url;
// current result $url = 'http://ebnavi.localhost/en/panel/raporty'
// desired result $url = 'http://ebnavi.localhost/pl/panel/raporty'
它不起作用。 我在文檔中沒有找到關於此的直接說明。
那么怎么做呢?
幾個小時后,我終於在互聯網上找到了這個解決方案:
$url = LaravelLocalization::getLocalizedURL($locale, route($routeName));
並創建以下輔助函數來實現此任務
function localRoute($routeName, $locale = null)
{
if (!$locale && Auth::user()) $locale = Auth::user()->lang;
return $locale ? LaravelLocalization::getLocalizedURL($locale, route($routeName)) : route($routeName);
}
在我們的控制器中,我們可以這樣使用它:
$url = localRoute('dashboard.index');
但是可能存在一些更好的方法嗎?
我解決了這個問題
授權成功,需要從數據庫發送用戶locale
登錄控制器\\已驗證
\LaravelLocalization::setLocale(\Auth::user()->language);
在頁面 HTML 上指定活動區域設置
<html lang="{{ \LaravelLocalization::setLocale(\Auth::user()->language) }}">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.