2016-04-14 13 views
23

私のアプリケーションは、角度変換、角度UIルータ、およびテンプレートを使用しています。 index.htmlを除くアプリケーションのhtmlページはテンプレートにパッケージ化されており、Amazon CloudFrontはS3にバックアップされています。私がしたいのは、ドメイン名の後の2文字コードに応じて言語を動的に切り替える方法を見つけることです。可能であれば、ユーザーのロケールでピックアップし、デフォルトの切り替えに使用します。角度変換および角度uiルータで言語を動的に切り替えるにはどうすればよいですか?

私がこれをやりたいのは、Googleが下記のように住所に国コードを入れることをお勧めしているので、SEO目的のためです。ここで

は、私がこれまで持っているものです。

ルータファイル

var home = { 
     name: 'home', 
     url: '/home/' 
    }; 

    var homeAccess = { 
     name: 'home.access', 
     url: 'access', 
     views: { 
      '[email protected]': { 
       templateProvider: ['$templateCache', ($templateCache) => { 
        return $templateCache.get('webapi.html'); 
       }], 
      } 
     } 
    }; 

どういうわけか、私は、検索エンジンが選択したときようにそれをしたいと思い:

www.example.com/de/home/webapi or 
www.example.com/en/home/webapi or 
www.example.com/fr/home/webapi 

角度ルータことwebapi.htmlファイルを提供する前に適切な言語ファイルに切り替えます。

どのように私がこれを行うことができたかに関する提案は非常に感謝します。理想的には私とコミュニティの他の人たちが必要なことをするのに役立つ言語ファイルスイッチャーを使った簡単な例を見たいと思っています。 、

Localize URL's with ui-router and angular-translate

答えは良いがあるが、私もこの質問を開いて、私はより良い、より更新答えを得ることができることを願っています:

はそこに他の同様の質問がありますのでご注意くださいおそらくいくつかの国際化のSEOのヒントが投げ込まれています。私はちょうどこれがこのフォーラムで人々を助けるためのより多くの答えがより良いより重要なことだと思う。

$stateProvider.state('common', { 
    abstract: true, 
    url: '/{lang:(?:es|en)}' 
}); 

とした後、あなたのhome状態が共通の子供のようになります。:今

$stateProvider.state('common.home', { 
    url: '/home', 
    templateUrl: 'views/home.html', 
}); 

セットアップができ

+1

ベースタグはどうですか?適切な言語に切り替えるとうまくいくはずですか?または、ドメイン名のルートを指し、return $ templateCache.get(myLocale + '/ home/webapi.html');を使用します。 – Walfrat

+0

あなたが参照している質問によく解説されている回答があります(http://stackoverflow.com/questions/24281652/localize-urls-with-ui-router-and-angular-translate?rq=1)。あなたはもう少し把握することができますが、SEOの観点からのAngular 1.xは余分な行動がなければ十分な結果を得られません。あなたが完全なSEOの効果を達成したい場合は、事前レンダリングなど。あなたが利用できるサービスの1つ:https://prerender.io/ – shershen

答えて

10

あなたは、共通の抽象UI-ルータの状態や設定がお使いの言語設定を作成する必要があります言語切り替えオン状態変更イベント:

app.run(($rootScope) => { 
    $rootScope.$on('$stateChangeSuccess', (event, toState, toParams) => { 
    if(toParams.lang && $translate.use() !== toParams.lang){ 
     $translate.use(toParams.lang); 
    } 
    }); 
}); 

[19.04.2016]私はまだGoogleが賢明な方法であなたのWebアプリケーションを解析できないと宣言します。関連質問 - SEO: How does Google index Angular applications 2016

だから私だけでなく、@shershenは、私はより良いSEOのためのprerender.ioサービスを使用することをお勧めします。

関連する問題