2016-10-04 6 views
0

ルーティングのために$ stateProviderを使用し、翻訳のために角度変換しています。私が達成したいのは、選択した言語をURLにバインドさせ、[default = en]で言語をオプションにすることです。 ように:

www.mydomain.com/home 
www.mydomain.com/en/home 
www.mydomain.com/ar/home 

それに応じて対応させてください。

私は私が

www.mydomain.com/home 

よう

www.mydomain.com/en/home 

またはそれなしのような言語パラメータをホームページに行きたい

$urlRouterProvider.otherwise("/home"); 
$stateProvider 
     // Homepage: 
     .state("app", { 
      url: "/:lang?", 
      abstract: true, 
      template: '<ui-view/>' 
     }) 


     .state("app.home", { 
      url: "/home", 
      templateUrl: "common/views/main.html" 
     }); 

このコードを使用おかげ

答えて

0

ますできるURLをpecifyあなたのコントローラで

$urlRouterProvider.otherwise("/home"); 
$stateProvider 
    // Homepage: 
    .state("app", { 
     url: "/:lang", 
     abstract: true, 
     template: '<ui-view/>' 
    }) 
    .state("app.home", { 
     url: "/home", 
     templateUrl: "common/views/main.html" 
    }); 

$state.go("app",{lang:"en"}); 

注意:url変数の名前は$状態に置かと同じでなければなりません

+0

iが www.mydomain.com/home www.mydomain.com/en/home –

+0

iは[www.mydomain.com/home] に移動することができ [www.mydomain.com/enに移動することができ/ home] –

+0

言語なしでナビゲートする必要があります。 –

0

あなたはオプションのためのsquash: trueオプションを指定することができます構成のプロパティーのparamsのパラメーター。パラメータの値がデフォルトの値である場合、これもその周りのスラッシュを削除します。

$urlRouterProvider.otherwise("/home"); 
$stateProvider 
    // Homepage: 
    .state("app", { 
     url: "/:lang", 
     params: {squash: true, value: 'en'} 
     abstract: true, 
     template: '<ui-view/>' 
    }) 


    .state("app.home", { 
     url: "/home", 
     templateUrl: "common/views/main.html" 
    }); 

これは、生成されたルートにデフォルト値が含まれないこと、そう/en/home作品、ui-sref='app.home({lang:"en"})'とのリンクが/homeが得られるにもかかわらず、ではない/en/home注意。あとでvalue: nullを設定し、後で$ stateParams.langがnullの場合、言語選択ロジックで"en"をデフォルトとして使用することができます。

+0

がen/homeで動作していない –

+0

私はこの解決策を見つけて答えを更新しましたが、これもあなたの場合に有効です。 – yscik

+0

感謝します。 –

関連する問題