2012-12-07 92 views
1

我有一個網絡,我想添加一個本地化。在Laravel中使用語言路由URL

目前我routes.php文件看起來像

Route::controller('browse'); 
Route::controller('search'); 
Route::controller('support'); 
Route::controller('filter'); 

所以網址是網址/瀏覽(等)

我試圖讓喜歡/ URL/EN /瀏覽/ URL/CS網址/瀏覽,/ URL /德/瀏覽(等所有控制器)

如果沒有語言航線之前,這將增加,並重定向

我試圖使或(與/瀏覽向後兼容)發現如此我簡單的解決方案與過濾器,不成功。 感謝您的幫助!

回答

2

嘗試在config中使用默認應用程序語言和支持的語言數組。

如果您在支持的語言中使用了某種語言,那麼以該語段開頭的任何路由都將設置當前的語言,並將被視爲根網址。

與您的要求有一點不同之處在於,不使用URL中的語言,默認語言將被接受而不是重定向。

編輯:過濾器,可以幫助你的重定向。

Route::filter('pattern: *', array('name' => 'langredirect', function() 
{ 
    $uri = Request::server('request_uri'); 
    $segments = explode('/', $uri); 
    if (! array_get(Config::get('application.languages'), $segments[1])) 
    { 
     return Redirect::to(URL::base() . '/' . Config::get('application.language') . $uri); 
    } 
})); 
+0

噢,我在我的消息來源甚至在文檔中都沒有找到類似的東西。但在最新版本的github上,我發現它。謝謝!順便說一句:任何簡單的posiblility,使其重定向? (沒有編輯laravel本身) – Jindra

+0

原因是當en是默認的那麼:url/en和url導致相同的內容,我想有唯一的搜索引擎網址等 – Jindra

+0

我編輯了答案,用重定向過濾器。 – TLGreg