2015-11-02 56 views
1

我正在更新使用laravel 4.2構建的站點。 我正在添加多種內容語言,並且遇到了一個問題,即順利地更改本地本地地址碼 。Laravel 4.2本地更改

我希望每一頁必須有一個/local段(/en/de/hr)附加到其URL的選項,但會dissapear。

是我的目標,在這個場景是檢查URL在其末端/local段,如果它不只是設置的地方在Session並重新加載頁面,而不在結束/local段。

也有類似的主題hereherehere,但沒有什麼會給訪問者改變任何網頁上的語言,仍然讓他留在網站上不改變URL的選項。

+0

請張貼你到目前爲止(routes文件和其他任何相關)的代碼。 – Bogdan

+0

我剛剛爲此做了一個可能的解決方案。我會在幾分鐘後發佈它 – Traveller

+0

我沒有放任何代碼示例,因爲它們與默認的相同。 – Traveller

回答

0

這個解決方案竟然適用於我。 我認爲還有改進的空間,但是效果很好。

這種解決方案相對於其他類似的人的好處是,本地化是爲每一個環節,但不會更改語言後修改routes.php和 不重裝他的網站主頁。

我filter.php:

// filter.php 

App::before(function($request) 
{ 
    // Setting the locale 
    $segments = $request->segments(); 
    $locale = ""; 
    $index = 0; 
    foreach($segments as $segment){ 
     $index++; 
     $locale = $segment; 
    } 

    // Set the local in Session if it's supported 
    if ($index > 0 && array_key_exists($locale, Config::get('app.locales'))) { 
     Session::put('locale', $locale); 
     $segments = array_slice($segments,0, $index-1); 
     // Reload the site without the ending /language part 
     return Redirect::to(implode('/', $segments)); 
    } 
    if(!Session::has('locale')) 
    { 
     Session::put('locale', $request->getPreferredLanguage(Config::get('app.languages'))); 
    } 

    App::setLocale(Session::get('locale')); 

}); 

這是我app.php:

//app.php 
... 
    'locales' => ['en' => 'English', 'hr' => 'Hrvatski'], 

    'languages' => ['en', 'hr'], 
...