2017-06-16 8 views
1

ページ上で翻訳を行うには、Accept-Languageリクエストヘッダー値を知る必要があります。私はクライアントでAccept-Languageリクエストヘッダー値を取得する方法

$httpProvider.interceptors.push(requestInterceptor); 

のようなインターセプターを作成しようとしたが、私のインターセプタの

request: function (config) { 

方法で私はAccept-Languageヘッダーが表示されません。 Accept、Cache-Control、If-Modified-Since、Pragmaが表示されますが、ブラウザにはAccept-Languageが表示されます。

+0

ヘッダー情報を追加できるヘッダーオブジェクトまたは配列が必要です。 Angular2/4には次のようなものがあります。 var headers = new Headers(); headers.append( 'Accept-Language'、 '' xyz); this.http.post(url、data、{ headers:headers }) – moohkooh

+0

@moohkoohリクエストブラウザでは、言語コードがヘッダーに設定されています。私はそれを設定する必要はありません、私はブラウザが設定値を知る必要があります。 –

答えて

2

すべてのリクエストヘッダーがAngularJSリクエストインターセプタのconfigパラメータで利用できるわけではありません。他のヘッダー値は、要求を構成する際に追加されるブラウザー設定です。

使用することはできますが、正しい言語が提供されているかどうかはわかりません。

VAR言語= window.navigator.userLanguageまたは window.navigator.language。

サーバだけがAccept-Languageの値を見ることができます。だから私は最良の方法は、サーバーの応答本体からこの値を取得し、クッキー(名前の例AcceptLanguageCookie)を暗記し、その後、あなたの迎撃器でこのようなAccept-Languageを上回ることができると思います。

var app = angular.module("app", []); 

app.config(["$httpProvider", function($httpProvider) { 
    // set Accept-Language header on all requests 
    $httpProvider.defaults.headers.common["Accept-Language"] = $cookies.get("AcceptLanguageCookie"); 
}]); 
+0

私は答えを編集しました。これがあなたを助けることができればと思います –

関連する問題