2016-05-04 22 views
1

私はi18nextをアプリケーションの国際化に使用しています。i18nextの言語変数

私はこのようにそれを初期化しています:変数__lng____ns__はのため

i18n.init({debug: false, getAsync: false, resGetPath: _this.buildPath + _this.i18nPath + '__lng__/__ns__.json'}); 

何をして立っていますか?

答えて

0
  • __lng__
  • __ns__をロードするための言語である

をロードするための名前空間には、基本的にそれはあなたがlng: 'en-US'で初期化ならば、それはロードしようとしていることを意味している:

  1. _this.buildPath + _this.i18nPath + 'en-US/translation.json'
  2. _this.buildPath + _this.i18nPath + 'en/translation.json'
  3. _this.buildPath + _this.i18nPath + 'dev/translation.json'

DEVがデフォルトfalback言語&翻訳であるためには、デフォルトの名前空間です。

ドキュメントhereは、バックエンドの仕組みに応じていくつかの使い方を示すので便利です。

EDIT:ロードされる言語を設定するにはいくつかの方法があります。これを行う最も簡単な方法は、値lngとしてi18n.init()の値を渡すことです。この例は次のようになります。

i18n.init({ 
    debug: false, 
    getAsync: false, 
    lng: _this.language, 
    fallbackLng: _this.defaultLanguage, 
    resGetPath: _this.buildPath + _this.i18nPath + '__lng__/__ns__.json' 
}); 

この例では、あなたと同じですが、明示的に言語を設定します。また、fallbackLngと設定しますが、サポートされていない言語がデフォルトにフォールバックするように、ユーザーから何らかの形で言語を受け入れる場合(たとえばbrowser language)は、主に便利です。あらかじめ承認された値からの選択のみが許可されている場合、これは必須ではないかもしれません。

+0

ありがとうございます。一般的に私は今、どのように動作するのか理解しています。 しかし、変数 'lng'は決して初期化されません。その場合、値はどこから得られますか? –

+0

私はいくつかのビットを答えに加えました。うまくいけば、あなたはどのように言語を設定することができるのかがはっきりしていますが、あなたが意味するものではないかもしれないことに気付きました。言語があなたのためにどのように設定されているのかを知っていれば、i18​​nextの[this function](https://github.com/i18next/i18next/blob/1.11.2/i18next.js#L1843)からクッキー、localStorage、そして 'window.navigator'プロパティから正しい言語を使用してください。 – joelnb

+0

それは私が探していた答えでした:)もう一度ありがとう、あなたは本当に私を助けました! –