簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM