Создать приложение React - загрузка переводов i18n по относительному пути

Приложение My React загружается по относительному пути, задав переменную homepage в package.json. Однако i18next-http-backend по-прежнему пытается загрузить переводы из http://localhost:3000/locales/en/translation.json вместо http://localhost:3000/myapp/locales/en/translation.json. Я даже попытался установить опцию loadPath (хотя не уверен в синтаксисе), но это не сработало. См. Ниже:

i18n
  .use(Backend)
  .use(initReactI18next)
  .init({
    fallbackLng: 'en',
    debug: true,
    loadPath: `${process.env.PUBLIC_URL}/locales/{{lng}}/{{ns}}.json`,

    interpolation: {
      escapeValue: false // not needed for react as it escapes by default
    }
  })

Как я могу заставить это работать?


person Naresh    schedule 18.10.2020    source источник
comment
ваша папка locales находится в общей папке?   -  person Tuhin    schedule 18.10.2020
comment
да. Файл перевода находится здесь: /public/locales/en/translation.json   -  person Naresh    schedule 18.10.2020
comment
loadPath должен находиться под внутренним объектом. Я имею в виду, что у вас должно быть что-то вроде этого {debug: true, backend: {loadPath:}} в вашем init   -  person young B    schedule 03.05.2021


Ответы (1)


loadPath необходимо установить как часть инициализации Backend, поэтому вам нужно сделать следующее ...

i18n
  .use(Backend)
  .use(initReactI18next)
  .init({
    fallbackLng: 'en',
    debug: true,
    backend: {
        loadPath: `${process.env.PUBLIC_URL}/locales/{{lng}}/{{ns}}.json`,
    }
    interpolation: {
      escapeValue: false // not needed for react as it escapes by default
    }
  })
person Nujumo    schedule 19.10.2020
comment
Вы только что сделали мой день :-) - person Naresh; 19.10.2020