Do you want to define a fallback which uses local translations?
Last updated
Browser fallback with local / bundled translations
With i18next you can configure a fallback backend to be used in the browser. It will try to load from your primary backend (in this case from your ) and if the primary backend is not reachable or does not serve translations, your second backend (in this case translations) will be used. This is all possible thanks to the .
You can also lazy load the in memory translations, i.e. when using webpack
import i18next from "i18next";
import ChainedBackend from "i18next-chained-backend";
import HttpBackend from "i18next-http-backend";
import resourcesToBackend from "i18next-resources-to-backend";
i18next
.use(ChainedBackend)
.init({
fallbackLng: "en",
// ... your i18next config
backend: {
backends: [
HttpBackend,
resourcesToBackend((lng, ns) => import(`./locales/${lng}/${ns}.json`))
],
backendOptions: [{
loadPath: '/locales/{{lng}}/{{ns}}.json'
}]
}
});
Server side fallback with filesystem
On server side you can also use the i18next-fs-backend for example instead of the in memory fallback.
import i18next from "i18next";
import ChainedBackend from "i18next-chained-backend";
import HttpBackend from "i18next-http-backend";
import FsBackend from "i18next-fs-backend";
i18next
.use(ChainedBackend)
.init({
fallbackLng: "en",
// ... your i18next config
backend: {
backends: [
HttpBackend,
FsBackend
],
backendOptions: [{
loadPath: '/locales/{{lng}}/{{ns}}.json'
}, {
loadPath: './locales_cache/{{lng}}/{{ns}}.json'
}]
}
});
More information can be found here:
More information can be found here:
We suggest not to use multiple backends with the in combination with saveMissing or updateMissing, because it may happen, that the trigger for this is based on stale data.