2017-03-01 144 views
2

有沒有一種簡單的方法可以在Laravel 5.4中翻譯我的路線。坐落在這裏我的翻譯文件:Laravel 5.4:翻譯路線

/resources 
    /lang 
     /en 
      routes.php 
     /de 
      routes.php 

在我web.php我這樣定義我的路線:

Route::get('/{locale}', function ($locale) { 
    App::setLocale($locale); 

    return view('welcome'); 
}); 

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

我發現非常複雜的解決方案或解決方案,爲Laravel 4.我相信Laravel也提供了一個簡單的解決方案。有人能向我解釋最好的方法嗎?

謝謝。

+0

試試這個https://laracasts.com/discuss/channels/tips/example-on-how-to-use-multiple-locales-in-your-laravel-5-website –

+0

我會測試它 - 謝謝。 – Sascha

回答

2

我們通常像這樣做

獲取當前的語言:

$request = request()->segment(1); 
$language = null; 
if (!empty($request) && in_array($request,config('translatable.locales'))) { 
    $language = $request; 
    App::setLocale($language); 
} else { 
    $language = 'nl'; 
} 

路線:

Route::group(['prefix' => $language], function() { 
    Route::get(trans('routes.newsletter'), array('as' => 'newsletter.index', 'uses' => '[email protected]')); 
1

我在config文件夾中創建的文件translatable.php:

<?php 

return [ 

    'locales' => ['en', 'de'], 

]; 

web.php:

$request = request()->segment(1); 
$language = null; 

if (!empty($request) && in_array($request,config('translatable.locales'))) { 
    $language = $request; 
    App::setLocale($language); 
} else { 
    $language = 'de'; 
} 

Route::get('/', function() { 
    return redirect()->action('[email protected]'); 
}); 

Route::group(['prefix' => $language], function() { 

    /* 
    Route::get('/', function(){ 
     return View::make('welcome'); 
    }); 
    */ 

    Route::get('/', 
     array( 'as'  => 'welcome.index', 
       'uses' => 'WelcomeContro[email protected]')); 


    Route::get(trans('routes.contact'), 
     array('as'  => 'contact.index', 
       'uses' => '[email protected]')); 

}); 

工作正常 - 謝謝。重定向也是最佳實踐嗎? 致以問候