2016-02-05 95 views
2

我試圖本地化我的應用程序,但似乎我錯過了一些東西。我以前沒有任何關於這方面的知識,因此很難開始。這裏是我的routes.php文件Laravel 5多語言不起作用

Route::get('/lang/{lang}', '[email protected]'); 

這裏是我的LangController.php

public function index($lang) 

{ 
    $langs =['en', 'de']; 
    if(in_array($lang, $langs)){ 
     Session:set('lang', $lang); 
     return Redirect::back(); 
    } 
} 

我在中間件設置:(Lang.php)

public function handle($request, Closure $next) 

{ 

    if($lang = Session::get('lang')){ 
     \Lang::setLocale($lang); 
    } 

    return $next($request); 
} 

在HTTP \內核中啓用它.php:

protected $middleware = [ 

    \App\Http\Middleware\Lang::class, 
     \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
    \App\Http\Middleware\EncryptCookies::class, 
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
    \Illuminate\Session\Middleware\StartSession::class, 
    \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
    \App\Http\Middleware\VerifyCsrfToken::class, 

    ]; 

In my blade.php

{{ Lang::get('home.hello')}} 
    CURRENT: {{ Lang::getLocale() }} <br /> <br /> 
<a href="{{ url('lang/de') }}">Germany</a> | <a href="{{ url('lang/en') }}">English</a> 

請help.I看不出有什麼我失蹤... 在勵磁電流時,按德國也建議立即進行刪除是「德」,當按下英語是建議立即進行刪除是「恩」,但是當按德國仍留'en'...(默認是'en'config/app.php - >'locale'=>'en',)

回答

1

因爲你在中間件中使用會話,所以你需要的值不會是直到StartSession中間件設置會話。除此之外,你也有很小的語法錯誤在你的控制器代碼

protected $middleware = [ 
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
    \App\Http\Middleware\EncryptCookies::class, 
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
    \Illuminate\Session\Middleware\StartSession::class, // Init session 
    \App\Http\Middleware\Lang::class, // Set locale 
    \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
    \App\Http\Middleware\VerifyCsrfToken::class, 
]; 

所以,你應該某處後添加您的中間件,像這樣。在您的index控制器方法中將值分配給會話時,您忘記爲範圍解析運算符添加第二個冒號(:)。所以這個:

Session:set('lang', $lang); 

應該是這樣的:

Session::set('lang', $lang); 
+0

我試過,但它仍然沒有工作.... – pape

+0

什麼Laravel版本您使用的? 5.0,5.1或5.2? – Bogdan

+0

我使用laravel 5.1 – pape