Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

250
Vistas
Express React i18n: No se puede OBTENER /locales/resources.json (JS / TS / Node)

Estoy trabajando en una aplicación React con backend NodeJS . Como Middleware, estaba usando Koa antes, ahora cambié a ExpressJS .

Necesito ajustar las traducciones de i18n a Express.
Hice todo lo que se explica en la documentación, pero, sin embargo, recibo el siguiente error al consultar mis archivos .json:
" No se puede OBTENER /locales/resources.json "

Ni siquiera configuro estos archivos en esta ruta.
Mis traducciones se guardan en, por ejemplo: "packages/backend/src/i18n/de-DE/common.json"
=> "paquetes/backend/src/i18n/ etiqueta de idioma /common.json"

Aquí está mi router.ts:

 import * as Express from 'express'; import documentRouter from './documentRouter'; import pdfRouter from './pdfRouter'; import debugRouter from './debugRouter'; import * as i18next from 'i18next'; // @ts-ignore import * as Backend from 'i18next-node-fs-backend'; // @ts-ignore import middleware from 'i18next-express-middleware'; // @ts-ignore i18next.use(Backend) .use(middleware.LanguageDetector) .init({ initImmediate: false, backend: { // translation resources loadPath: __dirname + '../i18n/{{lng}}/{{ns}}.json' // addPath: __dirname, '../i18n/{{lng}}/{{ns}}.missing.json' }, preload: ['en-US', 'en-GB', 'de-DE', 'fr-FR'], fallbackLng: 'de-DE', }); const app = Express(); // @ts-ignore app.use(middleware.handle(i18next)); export default (app: Express.Application) => { app.use([debugRouter, documentRouter, pdfRouter]); };

la configuración anterior se veía así:

 import * as Koa from 'koa'; import documentRouter from './documentRouter'; import errorReportsRouter from './errorReportsRouter'; import pdfRouter from './pdfRouter'; import debugRouter from './debugRouter'; import * as i18next from 'i18next'; // @ts-ignore import * as Backend from 'i18next-fs-backend'; // @ts-ignore import * as koaI18next from 'koa-i18next'; // @ts-ignore i18next.use(Backend).init({ initImmediate: false, backend: { // translation resources loadPath: path.resolve(__dirname, '../i18n/{{lng}}/{{ns}}.json'), addPath: path.resolve(__dirname, '../i18n/{{lng}}/{{ns}}.missing.json'), }, preload: ['en-US', 'en-GB', 'de-DE', 'fr-FR'], fallbackLng: 'de-DE', }); export default (app: Koa) => { app.use(debugRouter.routes()); app.use(documentRouter.routes()); app.use(errorReportsRouter.routes()); app.use(pdfRouter.routes()); app.use( koaI18next.getResourcesHandler(i18next, { path: '/locales/resources.json', }) ); };
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Me perdí la parte de 'enlace' de la implementación anterior.

 path: '/locales/resources.json'

i18n no tenía acceso a los archivos básicamente. Usé el controlador de recursos para redirigir correctamente y usar el middleware, ahora funciona como antes.

Código actualizado:

 import * as Express from 'express'; import documentRouter from './documentRouter'; import pdfRouter from './pdfRouter'; import debugRouter from './debugRouter'; import * as i18next from 'i18next'; // @ts-ignore import * as Backend from 'i18next-fs-backend'; // @ts-ignore import middleware from 'i18next-http-middleware'; // @ts-ignore i18next.use(Backend).init({ initImmediate: false, backend: { // translation resources loadPath: path.resolve(__dirname, '../i18n/{{lng}}/{{ns}}.json'), addPath: path.resolve(__dirname, '../i18n/{{lng}}/{{ns}}.missing.json'), }, preload: ['en-US', 'en-GB', 'de-DE', 'fr-FR'], fallbackLng: 'de-DE', }); export default (app: Express.Application) => { // load translation resources //@ts-ignore app.get("/locales/resources.json", middleware.getResourcesHandler(i18next)); app.use([debugRouter, documentRouter, pdfRouter]); //@ts-ignore app.use(middleware.handle(i18next)); };
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda