2016-07-22 3 views
3

私はwebappで作業しています。私はi18nextを使用しており、オプションで "lng"を指定しない限り、言語を検出しません。 「navigator.language || navigator.userLanguage」を使用すると、Chromeで問題ありません。それは "en"のようなものを返します。しかし、例えばFirefoxは、 "en-GB"を返します。私は地域別翻訳を使用せず、i18nextは "en-GB"を "en"にリダイレクトしません。それで、システムは動作しません。ブラウザの言語を検出してi18nextで使用する際に問題が発生する

$(document).ready(function(){ 
 
     i18next.use(i18nextXHRBackend); 
 
     i18next.init({ 
 
      'debug': true, 
 
      'lng': navigator.language || navigator.userLanguage, 
 
      'fallbackLng': 'en', 
 
      'load': 'currentOnly', 
 
      'backend': { 
 
      loadPath: 'locales/{{lng}}/{{ns}}.json' 
 
      } 
 
     }, function() { 
 
      jqueryI18next.init(i18next, $); 
 
      $('body').localize(); 
 
     }); 
 
    });

+0

これはおそらく非常によくサポートされている機能ではありません... 'navigator.language.substr(0、2)'で十分でしょうか?そうすれば 'en-GB'は 'en'に変わります...これは本当に 'lng'に対してi18nextが受け入れる値のリストに依存します。 –

+0

@AurelBílýそれはそれで動作します。ありがとう。だから、私のコードに何も間違っていませんか? – mutlucan96

答えて

1

i18nextは、地域の言語をサポートしています...それはローカライズが何であるかです:

は、ここに私のコードです。

あなたは領域なしだけの言語をサポートしたい場合は、load: 'languageOnly'を設定します。

$(document).ready(function(){ 
    i18next.use(i18nextXHRBackend); 
    i18next.init({ 
     'debug': true, 
     'load': 'languageOnly', 
     'lng': navigator.language || navigator.userLanguage, 
     'fallbackLng': 'en', 
     'load': 'currentOnly', 
     'backend': { 
     loadPath: 'locales/{{lng}}/{{ns}}.json' 
     } 
    }, function() { 
     jqueryI18next.init(i18next, $); 
     $('body').localize(); 
    }); 
}); 

これは検索にエンGB受諾避けるだけENを使用します。これを設定しないと、i18nextは同じ結果を出力しますが、en-GB変換をロードしようとします。

関連する問題