2017-03-01 134 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]')); 

}); 

工作正常 - 谢谢。重定向也是最佳实践吗? 致以问候