Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

251
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!