Stop a locize call from reaching the browser when a locize namespace throws an empty json response with x-cache: Error from cloud front in headers
I'm using a i18next-chained-backend to use multiple backend to use local translations by default and override with locize translations if a name space exists.
So my local translations file loads up and then the locize call goes to fetch a particular namespace, even though the particular namespace doesn't exist on locize, locize gives a 200 response code with a x-cache: Error from cloud front and not a 404 not found as a response.
Я пытаюсь остановить этот вызов locize, если пространство имен не существует. Я попытался добавить failLoadingOnEmptyJSON: true в свой бэкэнд, но это тоже не помогает моему делу.
Пожалуйста, дайте мне знать, есть ли способ, которым я могу остановить этот вызов locize в любом случае, используя заголовки x-cache в ответе или failLoadingOnEmptyJSON или любой другой способ также приветствуется. Вызов locize имеет динамическое пространство имен, и я использую его для переопределения моих локальных переводов, когда пространство имен существует в locize, и пытаюсь остановить вызов в случае, если пространство имен не существует в locize. Также дайте мне знать, если вы считаете, что это невозможно. Благодарю.
Это мой код, и я использую следующий импорт
i18next from 'i18next';
Backend from 'i18next-chained-backend';
Locize from 'i18next-locize-backend';
HttpApi from 'i18next-http-backend';
i18next
.use(Backend)
.init({
fallbackLng:
{
'default': ['en-US']
},
load: 'currentOnly',
ns: ['translations', `domain-${window.location.hostname}`],
defaultNS: `domain-${window.location.hostname}`,
fallbackNS: [`domain-${window.location.hostname}`, 'translations'],
order: ['localStorage', 'querystring', 'navigator'],
lookupQuerystring: 'lng',
allowMultiLoading: true,
backend: {
backends: [
HttpApi,
Locize
],
backendOptions: [
{
loadPath: config.webPaths.assets + 'locales/{{lng}}/{{ns}}.json' // xhr load path for my own fallback
},
{
failLoadingOnEmptyJSON: true,
projectId: '',
referenceLng: 'en-US',
}
]
},
debug: true,
detection: {
caches: []
},
keySeparator: false, // we use content as keys
interpolation: {
formatSeparator: ','
},
react: {
wait: true
}
}, (err, t) => {
if (err) return console.log('Something went wrong while loading.', err);
}) ```