2017-01-10 4 views
0

私はこのようになりますこれは、私の意見では、ブレードをしました:Laravel 5.x:ビュー/ブレードのURLのロケールを置き換える方法は?

@if (App::getLocale() == 'de') 
    <a href="/en/dashboard"> 
     <i class="fa fa-language">ENGLISH</i> 
    </a> 
@elseif (App::getLocale() == 'en') 
    <a href="/de/dashboard"> 
     <i class="fa fa-language">GERMAN</i> 
    </a> 
@endif 

は、これは私が他の言語に切り替えることを可能にするボタンを作成します。

うーん... URLはまた、これらのいずれかになります。

/en/settings 
/en/logbook 

私が欲しい、ボタンは同じページにリダイレクトしますが、異なる言語であること:

  • /ENは、 /ダッシュボード - > /デ/ダッシュボード
  • /EN /設定 - > /デ/設定
  • /EN /ログブック - > /デ/ログブック

使用する{{ Request::url() }}私は現在のURLを取得できますが、今は異なるロケールだけでこのURLを使用するための最良の方法/ソリューションは何ですか?

{{ Request::url() }}は、例えば/en/dashboardを含んでおり、今は/de/dashboardが必要になります。

Laravel関数がありますか?これをPHPでコード化する必要がありますか?ブレード?

答えて

1

私はこの小さなヘルパー機能を約2年前に書いています。 $locale変数を渡してURLの最初のセグメントに追加すると効果的です。

public static function getLocaleChangerURL($locale){ 
    $uri = $_SERVER['REQUEST_URI']; 
    $uri = explode('/', $uri); 
    unset($uri[0]); 
    unset($uri[1]); 
    $url = url($locale); 
    foreach($uri as $u){ 
     $url .= '/'.$u; 
    } 
    return $url; 
} 
+0

ありがとうございました! :) – user2966991

0

私はこの方法が好きです。

public static function getLocaleChangerURL($locale) 
{ 
    $uri = request()->segments(); 

    $uri[0] = $locale; 

    return implode($uri, '/'); 
}