2016-05-04 101 views
1

我正在使用i18next來進行應用程序的國際化。i18next中的語言變量

我初始化這樣的:

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

變量__lng____ns__代表什麼做的?

回答

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'

因爲開發是默認falback語言&翻譯是默認的命名空間。

您可能會發現文檔here很有用,因爲它顯示了使用它們的一些更多方法,具體取決於您的後端如何工作。

編輯:有很多方法來設置加載的語言。最簡單的方法是將值作爲的lng參數。例如:

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

我在答案中增加了一些內容,希望能更清楚地說明你如何設置語言,但現在我意識到這可能不是你的意思。如果你的意思是如何爲你設置語言,那麼它來自於[this function](https://github.com/i18next/i18next/blob/1.11.2/i18next.js#L1843)in i18next,它檢測到從cookies,localStorage和'window.navigator'屬性中使用正確的語言。 – joelnb

+0

這就是我正在尋找的答案:)非常感謝你一次,你真的幫了我很多! –