'react-18n not loading from the changed path if the changeLanguage is triggered
Config looks like
import i18n from "i18next";
import { initReactI18next } from "react-i18next";
import Backend from "i18next-chained-backend";
import HttpBackend from "i18next-http-backend";
import {APP_S3_HOST,EnvStage } from "./constants";
import FsBackend from "i18next-fs-backend";
export enum Languages {
en = "en-US",
dede = "de-DE",
esXN = "es-XN",
fiFI = "fi-FI",
frfr = "fr-FR",
itIT = "it-IT",
jajp = "ja-JP",
ptBR = "pt-BR",
svSE = "sv-SE",
zhcn = "zh-CN"
}
i18n
.use(Backend) // passes i18n down to react-i18next
.use(initReactI18next)
.init({
fallbackLng: "en",
react: { useSuspense: false },
cleanCode: true,
supportedLngs: [ "en", "en-US","de-DE", "es-XN", "fi-FI", "fr-FR","it-IT", "ja-JP", "pt-BR","sv-SE", "zh-CN"],
debug: process.env.REACT_APP_STAGE == EnvStage.DEV, // debug messages, shows missing keys etc
backend: {
backends: [HttpBackend, FsBackend],
backendOptions: [
{
loadPath: (lng: string) => {
return ["en", "en-US"].includes(lng) ? `${APP_S3_HOST}/templates/${lng}.json` : `${APP_S3_HOST}/translations/${Languages[lng]}.json`;
}
},
{
loadPath: './i18n/en.json'
}
]
},
interpolation: {
escapeValue: false // react already safes from xss
}
});
export default i18n;
When changeLanguage method is triggered which looks as follows:
const changeLanguage = (language: Languages) => async dispatch => {
await i18n.changeLanguage(language);
dispatch({ type: GeneralActionType.CHANGE_LANGUAGE, payload: language });
};
i18n continues to look into templates folder instead of translations folder. Why does that seem to be the case when loadPath has the correct loading logic
loadPath: (lng: string) => {
return ["en", "en-US"].includes(lng) ? `${APP_S3_HOST}/templates/${lng}.json` : `${APP_S3_HOST}/translations/${Languages[lng]}.json`;
}
If I select "fr-FR" language, it says:
GET FAILED S3BUCKET/templates/fr-FR.json
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
