__lng__
язык для загрузки
__ns__
это пространство имен для загрузки
В основном это означает, что если вы инициализацию с lng: 'en-US'
он будет пытаться нагрузки:
_this.buildPath + _this.i18nPath + 'en-US/translation.json'
_this.buildPath + _this.i18nPath + 'en/translation.json'
_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), чтобы любые неподдерживаемые языки возвращались к умолчанию. Если вы разрешаете только выбор из предварительно утвержденных значений, это может не потребоваться.
Большое спасибо за ваш ответ! Как правило, я понимаю, как это работает. Но переменная 'lng' никогда не инициализируется, откуда она получается в этом случае? –
Я добавил несколько бит в ответ, который, надеюсь, сделает его более ясным, как вы можете установить язык, но я понимаю, что это может быть не то, что вы имели в виду. Если вы имели в виду, как теперь устанавливается язык для вас, тогда он исходит из [этой функции] (https://github.com/i18next/i18next/blob/1.11.2/i18next.js#L1843) в i18next, который обнаруживает правильный язык для использования из файлов cookie, localStorage и затем свойства 'window.navigator'. – joelnb
Это был ответ, который я искал :) Большое вам спасибо, вы очень помогли мне! –