Estoy usando la biblioteca i18next en la versión "i18next": "^21.8.0" para localizar mi aplicación React.
Cuando traté de recargar un recurso en espera, vi muchos ejemplos, pero nadie pudo mostrarme cómo cargar un archivo json asíncrono.
Cuando intento agregar el recurso a través de console.log(await langRequest) , obtengo la entrada correcta.
Existe la función que me devuelve el archivo JSON correctamente:
const langRequest = async () => { const url = createUrl('Ajax/GetStrings', { lang: 'he' }); const languageResponse = await get(url); return languageResponse; }Y está el método init:
i18n.use(initReactI18next).init({ resources: { he: { translation: await langRequest } }, fallbackLng: 'en', debug: true, react: { useSuspense: false } }) Traté de escribir este código sin await antes de langRequest pero aún no funciona.
El init está fuera de los corchetes de componentes.
Intenté usar un recurso vacío e i18next.addResourceBundle(language, {languageResponse}); en useEffect, pero obtuve el siguiente error:
bundle.js:149045 No capturado (en promesa) TypeError: key.indexOf no es una función en cleanKey (bundle.js:149045:23) en getLastOfPath (bundle.js:149069:8) en getPath (bundle.js:149092: 25) en ResourceStore.addResourceBundle (bundle.js:149411:18) en I18n._this2. [como addResourceBundle] (bundle.js:151544:50) en bundle.js:868:53
¡Muchas gracias a todos los ayudantes!
La carga de recursos a través de http no funciona así... Necesita un complemento de backend i18next.
Puede encontrar una publicación de blog completa basada en reaccionar aquí .
También echa un vistazo a esta documentación .