Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Interpolation with trans creates missing file even when the literal is in location files. #1186

Closed
SalahAdDin opened this issue Oct 20, 2020 · 28 comments

Comments

@SalahAdDin
Copy link

SalahAdDin commented Oct 20, 2020

🐛 Bug Report

Every time I launch the server i18n generates a new missing file(because I delete the previous one) even when I put the translation in the respective file:
Screen Capture_select-area_20201020180845

This means every time I pass to a different language the literal is not translated:
Screen Capture_select-area_20201020180943

To Reproduce

I created my component with the next code:

const Layout = ({ preview, children }) => {
  const { t } = useTranslation()
  return (
    <>
      <Container
        component="main"
        maxWidth="md"
        style={{ marginTop: 100, marginBottom: 100 }}
      >
        {preview ? (
          <Alert
            severity="warning"
            action={
              <Button color="inherit" size="small" href="/api/exit-preview">
                {t("exit")}
              </Button>
            }
            style={{ marginBottom: 20 }}
          >
            <AlertTitle>{t("alert.preview-mode.title")}</AlertTitle>
            <Trans i18nKey="alert.preview-mode.message">
              You are looking the website in — <strong>preview mode</strong>.
            </Trans>
          </Alert>
        ) : null}
        {children}
      </Container>
    </>
  )
}

Each time I launch the application(yarn dev), it creates a new missing file for the same line in all idioms but English(the main one).

Expected behavior

It must be corrected translate to Spanish or another language:

"message": "Está viendo el sitio en — <strong>modo previsualización</strong>.",

Your Environment

  • runtime version: node v14.12.0.
  • i18next version: i.e. ^19.6.3
  • os: Manjaro Linux.
@jamuhl
Copy link
Member

jamuhl commented Oct 20, 2020

On server there is no suspense -> so you got to preload all languages/namespaces

@SalahAdDin
Copy link
Author

On server there is no suspense -> so you got to preload all languages/namespaces

I don't understand this @jamuhl

@jamuhl
Copy link
Member

jamuhl commented Oct 20, 2020

when the server renders there is no async loading for translations possible...as the react render serverside does not wait

have a look at: https://github.com/i18next/i18next-http-middleware/blob/master/example/deno/index.js#L28

@jamuhl
Copy link
Member

jamuhl commented Oct 20, 2020

and further on https://github.com/isaachinman/next-i18next to get an inspiration on how to solve SSR

@SalahAdDin
Copy link
Author

But, why does t function work and the Trans component does not work?

@jamuhl
Copy link
Member

jamuhl commented Oct 20, 2020

Makes no sense...if so - create a codesandbox for reproduction...

only option would be you have using Trans in a component not having useTranslation

@SalahAdDin
Copy link
Author

SalahAdDin commented Oct 20, 2020

Yes, i'm not using useTranslation, did you see my code?

Well, i tried passing the t function from the hook and it does not work:

            <Trans i18nKey="alert.preview-mode.message" t={t}>
              You are looking the website in — <strong>preview mode</strong>.
            </Trans>

I realized if i delete the common.missing.json file, i can get access to the translations, but if i relaunch node, i get those files again.

I have been researching about this and i found i could escape the html tags inside of the translation function, but this is unsafe; so, what's the correct way to do this?

@jamuhl
Copy link
Member

jamuhl commented Oct 21, 2020

in your sample above you're using useTranslation...but I guess I see the problem...and honestly setting debug: true on init you would see what is happening.

You're using the namespace common but neither set that on Trans nor set it to be loaded in useTranslation (or is that your defaultNS?):

const { t } = useTranslation(['translation', 'common']);

   <Trans i18nKey="common:alert.preview-mode.message" t={t}>
      You are looking the website in — <strong>preview mode</strong>.
   </Trans>

@SalahAdDin
Copy link
Author

@jamuhl It is my default's namespace.

@adrai
Copy link
Member

adrai commented Oct 21, 2020

@SalahAdDin please set debug to true and show the log statements.
Best would be to have a reproducable example.

@SalahAdDin
Copy link
Author

OK, i'm getting this in debug mode:
image

@SalahAdDin
Copy link
Author

More specifically:

i18next::backendConnector: loaded namespace common for language es {
  alert: {
    'preview-mode': {
      title: 'Advertencia',
      message: 'Está viendo el sitio en — <strong>modo previsualización</strong>.'
    }
  },
  error: {
    '404': {
      title: '{{statusCode}} - Página no encontrada',
      disclaimer: 'No podemos encontrar la página que busca.'
    },
    '500': {
      title: '{{statusCode}} - Error interno en el servidor',
      disclaimer: 'Hemos experimentado un error interno en el servidor y estamos trabajando para resolverlo.'
    },
    status: {
      with: 'Un error {{statusCode}} ocurrió en el servidor.',
      without: 'Un error ocurrió en el servidor.'
    }
  },
  exit: 'Salir',
  home: 'Inicio',
  main: 'Principal',
  resources: 'Recursos',
  me: 'Yo',
  pages: 'Páginas',
  projects: 'Proyectos'
}
i18next::backendConnector: loaded namespace skill-type for language es {
  database: 'Base de Datos',
  framework: 'Marco de Trabajo',
  language: 'Lenguaje',
  operating_system: 'Sistema Operativo',
  programming_language: 'Lenguaje de Programación',
  technical: 'Técnica',
  technology: 'Tecnología',
  tools: 'Herramientas'
}
i18next::backendConnector: loaded namespace common for language tr {
  alert: { 'preview-mode': { title: '', message: '' } },
  error: {
    '404': {
      title: '{{statusCode}} - Sayfa bulunamadı',
      disclaimer: 'İstediğiniz sayfası bulamadık.'
    },
    '500': { title: '{{statusCode}} - ', disclaimer: '' },
    status: { with: '', without: '' }
  },
  exit: 'Çık',
  home: 'Ana sayfa',
  main: 'Ana',
  resources: 'Kaynaklar',
  me: 'Ben',
  pages: 'Sayfalar',
  projects: 'Projelers'
}
i18next::backendConnector: loaded namespace skill-type for language tr {
  database: 'Database',
  framework: 'Çerçeve',
  language: 'Dil',
  operating_system: 'İşletim Sistemi',
  programming_language: 'Programlama Dili',
  technical: 'Teknik',
  technology: 'Teknoloji',
  tools: 'Araçlar'
}
i18next::backendConnector: loaded namespace common for language en {
  alert: {
    'preview-mode': {
      title: 'Warning',
      message: 'You are looking the website in — <bold>preview mode</bold>.'
    }
  },
  error: {
    '404': {
      title: '{{statusCode}} - Page not found',
      disclaimer: "We can't find the page you are looking for."
    },
    '500': {
      title: '{{statusCode}} - Internal server error',
      disclaimer: 'We have experienced an internal server error and are working to resolve it.'
    },
    status: {
      with: 'A {{statusCode}} error occurred on server.',
      without: 'An error occurred on the server.'
    }
  },
  exit: 'Exit',
  home: 'Home',
  main: 'Main',
  resources: 'Resources',
  me: 'Me',
  pages: 'Pages',
  projects: 'Projects'
}
i18next::backendConnector: loaded namespace skill-type for language en {
  database: 'Database',
  framework: 'Framework',
  language: 'Language',
  operating_system: 'Operating System',
  programming_language: 'Programming_Language',
  technical: 'Technical',
  technology: 'Technology',
  tools: 'Tools'
}
i18next: initialized {
  debug: true,
  initImmediate: false,
  ns: [ 'common', 'skill-type' ],
  defaultNS: 'common',
  fallbackLng: false,
  fallbackNS: false,
  whitelist: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitWhitelist: false,
  supportedLngs: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitSupportedLngs: false,
  load: 'currentOnly',
  preload: [ 'es', 'tr', 'en' ],
  simplifyPluralSuffix: true,
  keySeparator: '.',
  nsSeparator: ':',
  pluralSeparator: '_',
  contextSeparator: '_',
  partialBundledLanguages: false,
  saveMissing: true,
  updateMissing: true,
  saveMissingTo: 'fallback',
  saveMissingPlurals: true,
  missingKeyHandler: false,
  missingInterpolationHandler: false,
  postProcess: false,
  postProcessPassResolved: false,
  returnNull: true,
  returnEmptyString: true,
  returnObjects: false,
  joinArrays: false,
  returnedObjectHandler: false,
  parseMissingKeyHandler: false,
  appendNamespaceToMissingKey: false,
  appendNamespaceToCIMode: false,
  overloadTranslationOptionHandler: [Function: handle],
  interpolation: {
    escapeValue: false,
    formatSeparator: ',',
    format: [Function: format]
  },
  defaultLanguage: 'en',
  otherLanguages: [ 'es', 'tr' ],
  localePath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales',
  localeStructure: '{{lng}}/{{ns}}',
  localeExtension: 'json',
  localeSubpaths: {},
  use: [],
  browserLanguageDetection: true,
  serverLanguageDetection: true,
  ignoreRoutes: [ '/_next/', '/static/', '/public/', '/api/' ],
  customDetectors: [],
  detection: {
    caches: [ 'cookie' ],
    cookieSameSite: 'strict',
    lookupCookie: 'next-i18next',
    order: [ 'cookie', 'header', 'querystring' ],
    lookupQuerystring: 'lng',
    lookupSession: 'lng',
    lookupFromPathIndex: 0,
    getPath: [Function: getPath],
    getOriginalUrl: [Function: getOriginalUrl],
    getUrl: [Function: getUrl],
    setUrl: [Function: setUrl],
    getParams: [Function: getParams],
    getSession: [Function: getSession],
    getQuery: [Function: getQuery],
    getCookies: [Function: getCookies],
    getBody: [Function: getBody],
    getHeaders: [Function: getHeaders],
    getHeader: [Function: getHeader],
    setHeader: [Function: setHeader],
    setContentType: [Function: setContentType],
    setStatus: [Function: setStatus],
    send: [Function: send]
  },
  react: { wait: true, useSuspense: false },
  strictMode: true,
  errorStackTraceLimit: 0,
  shallowRender: false,
  allLanguages: [ 'es', 'tr', 'en' ],
  backend: {
    loadPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.json',
    addPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.missing.json',
    ident: 2,
    parse: [Function: parse],
    stringify: [Function: stringify]
  }
}
i18next::backendConnector: loaded namespace common for language es {
  alert: {
    'preview-mode': {
      title: 'Advertencia',
      message: 'Está viendo el sitio en — <strong>modo previsualización</strong>.'
    }
  },
  error: {
    '404': {
      title: '{{statusCode}} - Página no encontrada',
      disclaimer: 'No podemos encontrar la página que busca.'
    },
    '500': {
      title: '{{statusCode}} - Error interno en el servidor',
      disclaimer: 'Hemos experimentado un error interno en el servidor y estamos trabajando para resolverlo.'
    },
    status: {
      with: 'Un error {{statusCode}} ocurrió en el servidor.',
      without: 'Un error ocurrió en el servidor.'
    }
  },
  exit: 'Salir',
  home: 'Inicio',
  main: 'Principal',
  resources: 'Recursos',
  me: 'Yo',
  pages: 'Páginas',
  projects: 'Proyectos'
}
i18next::backendConnector: loaded namespace skill-type for language es {
  database: 'Base de Datos',
  framework: 'Marco de Trabajo',
  language: 'Lenguaje',
  operating_system: 'Sistema Operativo',
  programming_language: 'Lenguaje de Programación',
  technical: 'Técnica',
  technology: 'Tecnología',
  tools: 'Herramientas'
}
i18next::backendConnector: loaded namespace common for language tr {
  alert: { 'preview-mode': { title: '', message: '' } },
  error: {
    '404': {
      title: '{{statusCode}} - Sayfa bulunamadı',
      disclaimer: 'İstediğiniz sayfası bulamadık.'
    },
    '500': { title: '{{statusCode}} - ', disclaimer: '' },
    status: { with: '', without: '' }
  },
  exit: 'Çık',
  home: 'Ana sayfa',
  main: 'Ana',
  resources: 'Kaynaklar',
  me: 'Ben',
  pages: 'Sayfalar',
  projects: 'Projelers'
}
i18next::backendConnector: loaded namespace skill-type for language tr {
  database: 'Database',
  framework: 'Çerçeve',
  language: 'Dil',
  operating_system: 'İşletim Sistemi',
  programming_language: 'Programlama Dili',
  technical: 'Teknik',
  technology: 'Teknoloji',
  tools: 'Araçlar'
}
i18next::backendConnector: loaded namespace common for language en {
  alert: {
    'preview-mode': {
      title: 'Warning',
      message: 'You are looking the website in — <bold>preview mode</bold>.'
    }
  },
  error: {
    '404': {
      title: '{{statusCode}} - Page not found',
      disclaimer: "We can't find the page you are looking for."
    },
    '500': {
      title: '{{statusCode}} - Internal server error',
      disclaimer: 'We have experienced an internal server error and are working to resolve it.'
    },
    status: {
      with: 'A {{statusCode}} error occurred on server.',
      without: 'An error occurred on the server.'
    }
  },
  exit: 'Exit',
  home: 'Home',
  main: 'Main',
  resources: 'Resources',
  me: 'Me',
  pages: 'Pages',
  projects: 'Projects'
}
i18next::backendConnector: loaded namespace skill-type for language en {
  database: 'Database',
  framework: 'Framework',
  language: 'Language',
  operating_system: 'Operating System',
  programming_language: 'Programming_Language',
  technical: 'Technical',
  technology: 'Technology',
  tools: 'Tools'
}
i18next: initialized {
  debug: true,
  initImmediate: false,
  ns: [ 'common', 'skill-type' ],
  defaultNS: 'common',
  fallbackLng: false,
  fallbackNS: false,
  whitelist: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitWhitelist: false,
  supportedLngs: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitSupportedLngs: false,
  load: 'currentOnly',
  preload: [ 'es', 'tr', 'en' ],
  simplifyPluralSuffix: true,
  keySeparator: '.',
  nsSeparator: ':',
  pluralSeparator: '_',
  contextSeparator: '_',
  partialBundledLanguages: false,
  saveMissing: true,
  updateMissing: true,
  saveMissingTo: 'fallback',
  saveMissingPlurals: true,
  missingKeyHandler: false,
  missingInterpolationHandler: false,
  postProcess: false,
  postProcessPassResolved: false,
  returnNull: true,
  returnEmptyString: true,
  returnObjects: false,
  joinArrays: false,
  returnedObjectHandler: false,
  parseMissingKeyHandler: false,
  appendNamespaceToMissingKey: false,
  appendNamespaceToCIMode: false,
  overloadTranslationOptionHandler: [Function: handle],
  interpolation: {
    escapeValue: false,
    formatSeparator: ',',
    format: [Function: format]
  },
  defaultLanguage: 'en',
  otherLanguages: [ 'es', 'tr' ],
  localePath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales',
  localeStructure: '{{lng}}/{{ns}}',
  localeExtension: 'json',
  localeSubpaths: {},
  use: [],
  browserLanguageDetection: true,
  serverLanguageDetection: true,
  ignoreRoutes: [ '/_next/', '/static/', '/public/', '/api/' ],
  customDetectors: [],
  detection: {
    caches: [ 'cookie' ],
    cookieSameSite: 'strict',
    lookupCookie: 'next-i18next',
    order: [ 'cookie', 'header', 'querystring' ],
    lookupQuerystring: 'lng',
    lookupSession: 'lng',
    lookupFromPathIndex: 0,
    getPath: [Function: getPath],
    getOriginalUrl: [Function: getOriginalUrl],
    getUrl: [Function: getUrl],
    setUrl: [Function: setUrl],
    getParams: [Function: getParams],
    getSession: [Function: getSession],
    getQuery: [Function: getQuery],
    getCookies: [Function: getCookies],
    getBody: [Function: getBody],
    getHeaders: [Function: getHeaders],
    getHeader: [Function: getHeader],
    setHeader: [Function: setHeader],
    setContentType: [Function: setContentType],
    setStatus: [Function: setStatus],
    send: [Function: send]
  },
  react: { wait: true, useSuspense: false },
  strictMode: true,
  errorStackTraceLimit: 0,
  shallowRender: false,
  allLanguages: [ 'es', 'tr', 'en' ],
  backend: {
    loadPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.json',
    addPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.missing.json',
    ident: 2,
    parse: [Function: parse],
    stringify: [Function: stringify]
  }
}
i18next: init: no languageDetector is used and no lng is defined
i18next: initialized {
  debug: true,
  initImmediate: false,
  ns: [ 'common', 'skill-type' ],
  defaultNS: 'common',
  fallbackLng: false,
  fallbackNS: false,
  whitelist: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitWhitelist: false,
  supportedLngs: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitSupportedLngs: false,
  load: 'currentOnly',
  preload: [ 'es', 'tr', 'en' ],
  simplifyPluralSuffix: true,
  keySeparator: '.',
  nsSeparator: ':',
  pluralSeparator: '_',
  contextSeparator: '_',
  partialBundledLanguages: false,
  saveMissing: true,
  updateMissing: true,
  saveMissingTo: 'fallback',
  saveMissingPlurals: true,
  missingKeyHandler: false,
  missingInterpolationHandler: false,
  postProcess: false,
  postProcessPassResolved: false,
  returnNull: true,
  returnEmptyString: true,
  returnObjects: false,
  joinArrays: false,
  returnedObjectHandler: false,
  parseMissingKeyHandler: false,
  appendNamespaceToMissingKey: false,
  appendNamespaceToCIMode: false,
  overloadTranslationOptionHandler: [Function: handle],
  interpolation: {
    escapeValue: false,
    formatSeparator: ',',
    format: [Function: format]
  },
  defaultLanguage: 'en',
  otherLanguages: [ 'es', 'tr' ],
  localePath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales',
  localeStructure: '{{lng}}/{{ns}}',
  localeExtension: 'json',
  localeSubpaths: {},
  use: [],
  browserLanguageDetection: true,
  serverLanguageDetection: true,
  ignoreRoutes: [ '/_next/', '/static/', '/public/', '/api/' ],
  customDetectors: [],
  detection: {
    caches: [ 'cookie' ],
    cookieSameSite: 'strict',
    lookupCookie: 'next-i18next',
    order: [ 'cookie', 'header', 'querystring' ],
    lookupQuerystring: 'lng',
    lookupSession: 'lng',
    lookupFromPathIndex: 0,
    getPath: [Function: getPath],
    getOriginalUrl: [Function: getOriginalUrl],
    getUrl: [Function: getUrl],
    setUrl: [Function: setUrl],
    getParams: [Function: getParams],
    getSession: [Function: getSession],
    getQuery: [Function: getQuery],
    getCookies: [Function: getCookies],
    getBody: [Function: getBody],
    getHeaders: [Function: getHeaders],
    getHeader: [Function: getHeader],
    setHeader: [Function: setHeader],
    setContentType: [Function: setContentType],
    setStatus: [Function: setStatus],
    send: [Function: send]
  },
  react: { wait: true, useSuspense: false },
  strictMode: true,
  errorStackTraceLimit: 0,
  shallowRender: false,
  allLanguages: [ 'es', 'tr', 'en' ],
  backend: {
    loadPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.json',
    addPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.missing.json',
    ident: 2,
    parse: [Function: parse],
    stringify: [Function: stringify]
  },
  isClone: true
}
i18next: languageChanged en
i18next: languageChanged en
i18next::translator: updateKey en common alert.preview-mode.message You are looking the website in<strong>preview mode</strong>.
event - build page: /404
wait  - compiling...
event - compiled successfully
i18next: init: no languageDetector is used and no lng is defined
i18next: initialized {
  debug: true,
  initImmediate: false,
  ns: [ 'common', 'skill-type' ],
  defaultNS: 'common',
  fallbackLng: false,
  fallbackNS: false,
  whitelist: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitWhitelist: false,
  supportedLngs: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitSupportedLngs: false,
  load: 'currentOnly',
  preload: [ 'es', 'tr', 'en' ],
  simplifyPluralSuffix: true,
  keySeparator: '.',
  nsSeparator: ':',
  pluralSeparator: '_',
  contextSeparator: '_',
  partialBundledLanguages: false,
  saveMissing: true,
  updateMissing: true,
  saveMissingTo: 'fallback',
  saveMissingPlurals: true,
  missingKeyHandler: false,
  missingInterpolationHandler: false,
  postProcess: false,
  postProcessPassResolved: false,
  returnNull: true,
  returnEmptyString: true,
  returnObjects: false,
  joinArrays: false,
  returnedObjectHandler: false,
  parseMissingKeyHandler: false,
  appendNamespaceToMissingKey: false,
  appendNamespaceToCIMode: false,
  overloadTranslationOptionHandler: [Function: handle],
  interpolation: {
    escapeValue: false,
    formatSeparator: ',',
    format: [Function: format]
  },
  defaultLanguage: 'en',
  otherLanguages: [ 'es', 'tr' ],
  localePath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales',
  localeStructure: '{{lng}}/{{ns}}',
  localeExtension: 'json',
  localeSubpaths: {},
  use: [],
  browserLanguageDetection: true,
  serverLanguageDetection: true,
  ignoreRoutes: [ '/_next/', '/static/', '/public/', '/api/' ],
  customDetectors: [],
  detection: {
    caches: [ 'cookie' ],
    cookieSameSite: 'strict',
    lookupCookie: 'next-i18next',
    order: [ 'cookie', 'header', 'querystring' ],
    lookupQuerystring: 'lng',
    lookupSession: 'lng',
    lookupFromPathIndex: 0,
    getPath: [Function: getPath],
    getOriginalUrl: [Function: getOriginalUrl],
    getUrl: [Function: getUrl],
    setUrl: [Function: setUrl],
    getParams: [Function: getParams],
    getSession: [Function: getSession],
    getQuery: [Function: getQuery],
    getCookies: [Function: getCookies],
    getBody: [Function: getBody],
    getHeaders: [Function: getHeaders],
    getHeader: [Function: getHeader],
    setHeader: [Function: setHeader],
    setContentType: [Function: setContentType],
    setStatus: [Function: setStatus],
    send: [Function: send]
  },
  react: { wait: true, useSuspense: false },
  strictMode: true,
  errorStackTraceLimit: 0,
  shallowRender: false,
  allLanguages: [ 'es', 'tr', 'en' ],
  backend: {
    loadPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.json',
    addPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.missing.json',
    ident: 2,
    parse: [Function: parse],
    stringify: [Function: stringify]
  },
  isClone: true
}
i18next: languageChanged es
i18next: languageChanged es
i18next::interpolator: missed to pass in variable statusCode for interpolating {{statusCode}} - Página no encontrada
i18next::backendConnector: loaded namespace common for language es {
  alert: {
    'preview-mode': {
      title: 'Advertencia',
      message: 'Está viendo el sitio en — <strong>modo previsualización</strong>.'
    }
  },
  error: {
    '404': {
      title: '{{statusCode}} - Página no encontrada',
      disclaimer: 'No podemos encontrar la página que busca.'
    },
    '500': {
      title: '{{statusCode}} - Error interno en el servidor',
      disclaimer: 'Hemos experimentado un error interno en el servidor y estamos trabajando para resolverlo.'
    },
    status: {
      with: 'Un error {{statusCode}} ocurrió en el servidor.',
      without: 'Un error ocurrió en el servidor.'
    }
  },
  exit: 'Salir',
  home: 'Inicio',
  main: 'Principal',
  resources: 'Recursos',
  me: 'Yo',
  pages: 'Páginas',
  projects: 'Proyectos'
}
i18next::backendConnector: loading namespace common.missing for language es failed Error: ENOENT: no such file or directory, open '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/es/common.missing.json'
    at Object.openSync (fs.js:466:3)
    at Object.readFileSync (fs.js:369:35)
    at readFileInNodeSync (/home/joselito92/Proyectos/Work/portfolio/frontend/node_modules/i18next-fs-backend/cjs/readFile.js:30:13)
    at readFileSync (/home/joselito92/Proyectos/Work/portfolio/frontend/node_modules/i18next-fs-backend/cjs/readFile.js:102:12)
    at Backend.read (/home/joselito92/Proyectos/Work/portfolio/frontend/node_modules/i18next-fs-backend/cjs/index.js:71:54)
    at Connector.read (/home/joselito92/Proyectos/Work/portfolio/frontend/node_modules/i18next/dist/cjs/i18next.js:1582:34)
    at Connector.loadOne (/home/joselito92/Proyectos/Work/portfolio/frontend/node_modules/i18next/dist/cjs/i18next.js:1640:12)
    at /home/joselito92/Proyectos/Work/portfolio/frontend/node_modules/i18next/dist/cjs/i18next.js:1616:16
    at Array.forEach (<anonymous>)
    at Connector.prepareLoading (/home/joselito92/Proyectos/Work/portfolio/frontend/node_modules/i18next/dist/cjs/i18next.js:1615:21) {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/es/common.missing.json'
}
i18next::backendConnector: loaded namespace skill-type for language es {
  database: 'Base de Datos',
  framework: 'Marco de Trabajo',
  language: 'Lenguaje',
  operating_system: 'Sistema Operativo',
  programming_language: 'Lenguaje de Programación',
  technical: 'Técnica',
  technology: 'Tecnología',
  tools: 'Herramientas'
}
i18next::backendConnector: loaded namespace common for language tr {
  alert: { 'preview-mode': { title: '', message: '' } },
  error: {
    '404': {
      title: '{{statusCode}} - Sayfa bulunamadı',
      disclaimer: 'İstediğiniz sayfası bulamadık.'
    },
    '500': { title: '{{statusCode}} - ', disclaimer: '' },
    status: { with: '', without: '' }
  },
  exit: 'Çık',
  home: 'Ana sayfa',
  main: 'Ana',
  resources: 'Kaynaklar',
  me: 'Ben',
  pages: 'Sayfalar',
  projects: 'Projelers'
}
i18next::backendConnector: loading namespace common.missing for language tr failed Error: ENOENT: no such file or directory, open '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/tr/common.missing.json'
    at Object.openSync (fs.js:466:3)
    at Object.readFileSync (fs.js:369:35)
    at readFileInNodeSync (/home/joselito92/Proyectos/Work/portfolio/frontend/node_modules/i18next-fs-backend/cjs/readFile.js:30:13)
    at readFileSync (/home/joselito92/Proyectos/Work/portfolio/frontend/node_modules/i18next-fs-backend/cjs/readFile.js:102:12)
    at Backend.read (/home/joselito92/Proyectos/Work/portfolio/frontend/node_modules/i18next-fs-backend/cjs/index.js:71:54)
    at Connector.read (/home/joselito92/Proyectos/Work/portfolio/frontend/node_modules/i18next/dist/cjs/i18next.js:1582:34)
    at Connector.loadOne (/home/joselito92/Proyectos/Work/portfolio/frontend/node_modules/i18next/dist/cjs/i18next.js:1640:12)
    at /home/joselito92/Proyectos/Work/portfolio/frontend/node_modules/i18next/dist/cjs/i18next.js:1616:16
    at Array.forEach (<anonymous>)
    at Connector.prepareLoading (/home/joselito92/Proyectos/Work/portfolio/frontend/node_modules/i18next/dist/cjs/i18next.js:1615:21) {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/tr/common.missing.json'
}
i18next::backendConnector: loaded namespace skill-type for language tr {
  database: 'Database',
  framework: 'Çerçeve',
  language: 'Dil',
  operating_system: 'İşletim Sistemi',
  programming_language: 'Programlama Dili',
  technical: 'Teknik',
  technology: 'Teknoloji',
  tools: 'Araçlar'
}
i18next::backendConnector: loaded namespace common for language en {
  alert: {
    'preview-mode': {
      title: 'Warning',
      message: 'You are looking the website in — <bold>preview mode</bold>.'
    }
  },
  error: {
    '404': {
      title: '{{statusCode}} - Page not found',
      disclaimer: "We can't find the page you are looking for."
    },
    '500': {
      title: '{{statusCode}} - Internal server error',
      disclaimer: 'We have experienced an internal server error and are working to resolve it.'
    },
    status: {
      with: 'A {{statusCode}} error occurred on server.',
      without: 'An error occurred on the server.'
    }
  },
  exit: 'Exit',
  home: 'Home',
  main: 'Main',
  resources: 'Resources',
  me: 'Me',
  pages: 'Pages',
  projects: 'Projects'
}
i18next::backendConnector: loaded namespace common.missing for language en {
  alert: {
    'preview-mode': {
      message: 'You are looking the website in — <strong>preview mode</strong>.'
    }
  }
}
i18next::backendConnector: loaded namespace skill-type for language en {
  database: 'Database',
  framework: 'Framework',
  language: 'Language',
  operating_system: 'Operating System',
  programming_language: 'Programming_Language',
  technical: 'Technical',
  technology: 'Technology',
  tools: 'Tools'
}
i18next: initialized {
  debug: true,
  initImmediate: false,
  ns: [ 'common', 'common.missing', 'skill-type' ],
  defaultNS: 'common',
  fallbackLng: false,
  fallbackNS: false,
  whitelist: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitWhitelist: false,
  supportedLngs: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitSupportedLngs: false,
  load: 'currentOnly',
  preload: [ 'es', 'tr', 'en' ],
  simplifyPluralSuffix: true,
  keySeparator: '.',
  nsSeparator: ':',
  pluralSeparator: '_',
  contextSeparator: '_',
  partialBundledLanguages: false,
  saveMissing: true,
  updateMissing: true,
  saveMissingTo: 'fallback',
  saveMissingPlurals: true,
  missingKeyHandler: false,
  missingInterpolationHandler: false,
  postProcess: false,
  postProcessPassResolved: false,
  returnNull: true,
  returnEmptyString: true,
  returnObjects: false,
  joinArrays: false,
  returnedObjectHandler: false,
  parseMissingKeyHandler: false,
  appendNamespaceToMissingKey: false,
  appendNamespaceToCIMode: false,
  overloadTranslationOptionHandler: [Function: handle],
  interpolation: {
    escapeValue: false,
    formatSeparator: ',',
    format: [Function: format]
  },
  defaultLanguage: 'en',
  otherLanguages: [ 'es', 'tr' ],
  localePath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales',
  localeStructure: '{{lng}}/{{ns}}',
  localeExtension: 'json',
  localeSubpaths: {},
  use: [],
  browserLanguageDetection: true,
  serverLanguageDetection: true,
  ignoreRoutes: [ '/_next/', '/static/', '/public/', '/api/' ],
  customDetectors: [],
  detection: {
    caches: [ 'cookie' ],
    cookieSameSite: 'strict',
    lookupCookie: 'next-i18next',
    order: [ 'cookie', 'header', 'querystring' ],
    lookupQuerystring: 'lng',
    lookupSession: 'lng',
    lookupFromPathIndex: 0,
    getPath: [Function: getPath],
    getOriginalUrl: [Function: getOriginalUrl],
    getUrl: [Function: getUrl],
    setUrl: [Function: setUrl],
    getParams: [Function: getParams],
    getSession: [Function: getSession],
    getQuery: [Function: getQuery],
    getCookies: [Function: getCookies],
    getBody: [Function: getBody],
    getHeaders: [Function: getHeaders],
    getHeader: [Function: getHeader],
    setHeader: [Function: setHeader],
    setContentType: [Function: setContentType],
    setStatus: [Function: setStatus],
    send: [Function: send]
  },
  react: { wait: true, useSuspense: false },
  strictMode: true,
  errorStackTraceLimit: 0,
  shallowRender: false,
  allLanguages: [ 'es', 'tr', 'en' ],
  backend: {
    loadPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.json',
    addPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.missing.json',
    ident: 2,
    parse: [Function: parse],
    stringify: [Function: stringify]
  }
}
i18next: init: no languageDetector is used and no lng is defined
i18next: initialized {
  debug: true,
  initImmediate: false,
  ns: [ 'common', 'skill-type' ],
  defaultNS: 'common',
  fallbackLng: false,
  fallbackNS: false,
  whitelist: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitWhitelist: false,
  supportedLngs: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitSupportedLngs: false,
  load: 'currentOnly',
  preload: [ 'es', 'tr', 'en' ],
  simplifyPluralSuffix: true,
  keySeparator: '.',
  nsSeparator: ':',
  pluralSeparator: '_',
  contextSeparator: '_',
  partialBundledLanguages: false,
  saveMissing: true,
  updateMissing: true,
  saveMissingTo: 'fallback',
  saveMissingPlurals: true,
  missingKeyHandler: false,
  missingInterpolationHandler: false,
  postProcess: false,
  postProcessPassResolved: false,
  returnNull: true,
  returnEmptyString: true,
  returnObjects: false,
  joinArrays: false,
  returnedObjectHandler: false,
  parseMissingKeyHandler: false,
  appendNamespaceToMissingKey: false,
  appendNamespaceToCIMode: false,
  overloadTranslationOptionHandler: [Function: handle],
  interpolation: {
    escapeValue: false,
    formatSeparator: ',',
    format: [Function: format]
  },
  defaultLanguage: 'en',
  otherLanguages: [ 'es', 'tr' ],
  localePath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales',
  localeStructure: '{{lng}}/{{ns}}',
  localeExtension: 'json',
  localeSubpaths: {},
  use: [],
  browserLanguageDetection: true,
  serverLanguageDetection: true,
  ignoreRoutes: [ '/_next/', '/static/', '/public/', '/api/' ],
  customDetectors: [],
  detection: {
    caches: [ 'cookie' ],
    cookieSameSite: 'strict',
    lookupCookie: 'next-i18next',
    order: [ 'cookie', 'header', 'querystring' ],
    lookupQuerystring: 'lng',
    lookupSession: 'lng',
    lookupFromPathIndex: 0,
    getPath: [Function: getPath],
    getOriginalUrl: [Function: getOriginalUrl],
    getUrl: [Function: getUrl],
    setUrl: [Function: setUrl],
    getParams: [Function: getParams],
    getSession: [Function: getSession],
    getQuery: [Function: getQuery],
    getCookies: [Function: getCookies],
    getBody: [Function: getBody],
    getHeaders: [Function: getHeaders],
    getHeader: [Function: getHeader],
    setHeader: [Function: setHeader],
    setContentType: [Function: setContentType],
    setStatus: [Function: setStatus],
    send: [Function: send]
  },
  react: { wait: true, useSuspense: false },
  strictMode: true,
  errorStackTraceLimit: 0,
  shallowRender: false,
  allLanguages: [ 'es', 'tr', 'en' ],
  backend: {
    loadPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.json',
    addPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.missing.json',
    ident: 2,
    parse: [Function: parse],
    stringify: [Function: stringify]
  },
  isClone: true
}
i18next: languageChanged es
i18next: languageChanged es
i18next::translator: updateKey es common alert.preview-mode.message You are looking the website in<strong>preview mode</strong>.

@adrai
Copy link
Member

adrai commented Oct 21, 2020

set updateMissing to false

@SalahAdDin
Copy link
Author

@adrai But why is it missing that chain? It is already on files as you can see.

@adrai
Copy link
Member

adrai commented Oct 21, 2020

saveMissing: saves the keys that are missed
updateMissing: saves the keys that differs its value

https://www.i18next.com/overview/configuration-options#missing-keys

@SalahAdDin
Copy link
Author

So, why do they differ then?

@adrai
Copy link
Member

adrai commented Oct 21, 2020

Because your defaultValue is different from translated value

@adrai
Copy link
Member

adrai commented Oct 21, 2020

in your code: "You are looking the website in — <strong>preview mode</strong>."
in your json: "You are looking the website in — <bold>preview mode</bold>."

@SalahAdDin
Copy link
Author

well, i changed that <bold/> to <strong/> and it still does not match.

@adrai
Copy link
Member

adrai commented Oct 21, 2020

log?

@SalahAdDin
Copy link
Author

defaultLanguage: 'en',
  otherLanguages: [ 'es', 'tr' ],
  localePath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales',
  localeStructure: '{{lng}}/{{ns}}',
  localeExtension: 'json',
  localeSubpaths: {},
  use: [],
  browserLanguageDetection: true,
  serverLanguageDetection: true,
  ignoreRoutes: [ '/_next/', '/static/', '/public/', '/api/' ],
  customDetectors: [],
  detection: {
    caches: [ 'cookie' ],
    cookieSameSite: 'strict',
    lookupCookie: 'next-i18next',
    order: [ 'cookie', 'header', 'querystring' ],
    lookupQuerystring: 'lng',
    lookupSession: 'lng',
    lookupFromPathIndex: 0,
    getPath: [Function: getPath],
    getOriginalUrl: [Function: getOriginalUrl],
    getUrl: [Function: getUrl],
    setUrl: [Function: setUrl],
    getParams: [Function: getParams],
    getSession: [Function: getSession],
    getQuery: [Function: getQuery],
    getCookies: [Function: getCookies],
    getBody: [Function: getBody],
    getHeaders: [Function: getHeaders],
    getHeader: [Function: getHeader],
    setHeader: [Function: setHeader],
    setContentType: [Function: setContentType],
    setStatus: [Function: setStatus],
    send: [Function: send]
  },
  react: { wait: true, useSuspense: false },
  strictMode: true,
  errorStackTraceLimit: 0,
  shallowRender: false,
  allLanguages: [ 'es', 'tr', 'en' ],
  backend: {
    loadPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.json',
    addPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.missing.json',
    ident: 2,
    parse: [Function: parse],
    stringify: [Function: stringify]
  }
}
i18next::backendConnector: loaded namespace common for language es {
  alert: {
    'preview-mode': {
      title: 'Advertencia',
      message: 'Está viendo el sitio en — <strong>modo previsualización</strong>.'
    }
  },
  error: {
    '404': {
      title: '{{statusCode}} - Página no encontrada',
      disclaimer: 'No podemos encontrar la página que busca.'
    },
    '500': {
      title: '{{statusCode}} - Error interno en el servidor',
      disclaimer: 'Hemos experimentado un error interno en el servidor y estamos trabajando para resolverlo.'
    },
    status: {
      with: 'Un error {{statusCode}} ocurrió en el servidor.',
      without: 'Un error ocurrió en el servidor.'
    }
  },
  exit: 'Salir',
  home: 'Inicio',
  main: 'Principal',
  resources: 'Recursos',
  me: 'Yo',
  pages: 'Páginas',
  projects: 'Proyectos'
}
i18next::backendConnector: loaded namespace skill-type for language es {
  database: 'Base de Datos',
  framework: 'Marco de Trabajo',
  language: 'Lenguaje',
  operating_system: 'Sistema Operativo',
  programming_language: 'Lenguaje de Programación',
  technical: 'Técnica',
  technology: 'Tecnología',
  tools: 'Herramientas'
}
i18next::backendConnector: loaded namespace common for language tr {
  alert: { 'preview-mode': { title: '', message: '' } },
  error: {
    '404': {
      title: '{{statusCode}} - Sayfa bulunamadı',
      disclaimer: 'İstediğiniz sayfası bulamadık.'
    },
    '500': { title: '{{statusCode}} - ', disclaimer: '' },
    status: { with: '', without: '' }
  },
  exit: 'Çık',
  home: 'Ana sayfa',
  main: 'Ana',
  resources: 'Kaynaklar',
  me: 'Ben',
  pages: 'Sayfalar',
  projects: 'Projelers'
}
i18next::backendConnector: loaded namespace skill-type for language tr {
  database: 'Database',
  framework: 'Çerçeve',
  language: 'Dil',
  operating_system: 'İşletim Sistemi',
  programming_language: 'Programlama Dili',
  technical: 'Teknik',
  technology: 'Teknoloji',
  tools: 'Araçlar'
}
i18next::backendConnector: loaded namespace common for language en {
  alert: {
    'preview-mode': {
      title: 'Warning',
      message: 'You are looking the website in — <strong>preview mode</strong>.'
    }
  },
  error: {
    '404': {
      title: '{{statusCode}} - Page not found',
      disclaimer: "We can't find the page you are looking for."
    },
    '500': {
      title: '{{statusCode}} - Internal server error',
      disclaimer: 'We have experienced an internal server error and are working to resolve it.'
    },
    status: {
      with: 'A {{statusCode}} error occurred on server.',
      without: 'An error occurred on the server.'
    }
  },
  exit: 'Exit',
  home: 'Home',
  main: 'Main',
  resources: 'Resources',
  me: 'Me',
  pages: 'Pages',
  projects: 'Projects'
}
i18next::backendConnector: loaded namespace skill-type for language en {
  database: 'Database',
  framework: 'Framework',
  language: 'Language',
  operating_system: 'Operating System',
  programming_language: 'Programming_Language',
  technical: 'Technical',
  technology: 'Technology',
  tools: 'Tools'
}
i18next: initialized {
  debug: true,
  initImmediate: false,
  ns: [ 'common', 'skill-type' ],
  defaultNS: 'common',
  fallbackLng: false,
  fallbackNS: false,
  whitelist: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitWhitelist: false,
  supportedLngs: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitSupportedLngs: false,
  load: 'currentOnly',
  preload: [ 'es', 'tr', 'en' ],
  simplifyPluralSuffix: true,
  keySeparator: '.',
  nsSeparator: ':',
  pluralSeparator: '_',
  contextSeparator: '_',
  partialBundledLanguages: false,
  saveMissing: true,
  updateMissing: true,
  saveMissingTo: 'fallback',
  saveMissingPlurals: true,
  missingKeyHandler: false,
  missingInterpolationHandler: false,
  postProcess: false,
  postProcessPassResolved: false,
  returnNull: true,
  returnEmptyString: true,
  returnObjects: false,
  joinArrays: false,
  returnedObjectHandler: false,
  parseMissingKeyHandler: false,
  appendNamespaceToMissingKey: false,
  appendNamespaceToCIMode: false,
  overloadTranslationOptionHandler: [Function: handle],
  interpolation: {
    escapeValue: false,
    formatSeparator: ',',
    format: [Function: format]
  },
  defaultLanguage: 'en',
  otherLanguages: [ 'es', 'tr' ],
  localePath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales',
  localeStructure: '{{lng}}/{{ns}}',
  localeExtension: 'json',
  localeSubpaths: {},
  use: [],
  browserLanguageDetection: true,
  serverLanguageDetection: true,
  ignoreRoutes: [ '/_next/', '/static/', '/public/', '/api/' ],
  customDetectors: [],
  detection: {
    caches: [ 'cookie' ],
    cookieSameSite: 'strict',
    lookupCookie: 'next-i18next',
    order: [ 'cookie', 'header', 'querystring' ],
    lookupQuerystring: 'lng',
    lookupSession: 'lng',
    lookupFromPathIndex: 0,
    getPath: [Function: getPath],
    getOriginalUrl: [Function: getOriginalUrl],
    getUrl: [Function: getUrl],
    setUrl: [Function: setUrl],
    getParams: [Function: getParams],
    getSession: [Function: getSession],
    getQuery: [Function: getQuery],
    getCookies: [Function: getCookies],
    getBody: [Function: getBody],
    getHeaders: [Function: getHeaders],
    getHeader: [Function: getHeader],
    setHeader: [Function: setHeader],
    setContentType: [Function: setContentType],
    setStatus: [Function: setStatus],
    send: [Function: send]
  },
  react: { wait: true, useSuspense: false },
  strictMode: true,
  errorStackTraceLimit: 0,
  shallowRender: false,
  allLanguages: [ 'es', 'tr', 'en' ],
  backend: {
    loadPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.json',
    addPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.missing.json',
    ident: 2,
    parse: [Function: parse],
    stringify: [Function: stringify]
  }
}
i18next: init: no languageDetector is used and no lng is defined
i18next: initialized {
  debug: true,
  initImmediate: false,
  ns: [ 'common', 'skill-type' ],
  defaultNS: 'common',
  fallbackLng: false,
  fallbackNS: false,
  whitelist: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitWhitelist: false,
  supportedLngs: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitSupportedLngs: false,
  load: 'currentOnly',
  preload: [ 'es', 'tr', 'en' ],
  simplifyPluralSuffix: true,
  keySeparator: '.',
  nsSeparator: ':',
  pluralSeparator: '_',
  contextSeparator: '_',
  partialBundledLanguages: false,
  saveMissing: true,
  updateMissing: true,
  saveMissingTo: 'fallback',
  saveMissingPlurals: true,
  missingKeyHandler: false,
  missingInterpolationHandler: false,
  postProcess: false,
  postProcessPassResolved: false,
  returnNull: true,
  returnEmptyString: true,
  returnObjects: false,
  joinArrays: false,
  returnedObjectHandler: false,
  parseMissingKeyHandler: false,
  appendNamespaceToMissingKey: false,
  appendNamespaceToCIMode: false,
  overloadTranslationOptionHandler: [Function: handle],
  interpolation: {
    escapeValue: false,
    formatSeparator: ',',
    format: [Function: format]
  },
  defaultLanguage: 'en',
  otherLanguages: [ 'es', 'tr' ],
  localePath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales',
  localeStructure: '{{lng}}/{{ns}}',
  localeExtension: 'json',
  localeSubpaths: {},
  use: [],
  browserLanguageDetection: true,
  serverLanguageDetection: true,
  ignoreRoutes: [ '/_next/', '/static/', '/public/', '/api/' ],
  customDetectors: [],
  detection: {
    caches: [ 'cookie' ],
    cookieSameSite: 'strict',
    lookupCookie: 'next-i18next',
    order: [ 'cookie', 'header', 'querystring' ],
    lookupQuerystring: 'lng',
    lookupSession: 'lng',
    lookupFromPathIndex: 0,
    getPath: [Function: getPath],
    getOriginalUrl: [Function: getOriginalUrl],
    getUrl: [Function: getUrl],
    setUrl: [Function: setUrl],
    getParams: [Function: getParams],
    getSession: [Function: getSession],
    getQuery: [Function: getQuery],
    getCookies: [Function: getCookies],
    getBody: [Function: getBody],
    getHeaders: [Function: getHeaders],
    getHeader: [Function: getHeader],
    setHeader: [Function: setHeader],
    setContentType: [Function: setContentType],
    setStatus: [Function: setStatus],
    send: [Function: send]
  },
  react: { wait: true, useSuspense: false },
  strictMode: true,
  errorStackTraceLimit: 0,
  shallowRender: false,
  allLanguages: [ 'es', 'tr', 'en' ],
  backend: {
    loadPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.json',
    addPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.missing.json',
    ident: 2,
    parse: [Function: parse],
    stringify: [Function: stringify]
  },
  isClone: true
}
i18next: languageChanged es
i18next: languageChanged es
i18next::translator: updateKey es common alert.preview-mode.message You are looking the website in<strong>preview mode</strong>.
i18next::backendConnector: loaded namespace common for language es {
  alert: {
    'preview-mode': {
      title: 'Advertencia',
      message: 'Está viendo el sitio en — <strong>modo previsualización</strong>.'
    }
  },
  error: {
    '404': {
      title: '{{statusCode}} - Página no encontrada',
      disclaimer: 'No podemos encontrar la página que busca.'
    },
    '500': {
      title: '{{statusCode}} - Error interno en el servidor',
      disclaimer: 'Hemos experimentado un error interno en el servidor y estamos trabajando para resolverlo.'
    },
    status: {
      with: 'Un error {{statusCode}} ocurrió en el servidor.',
      without: 'Un error ocurrió en el servidor.'
    }
  },
  exit: 'Salir',
  home: 'Inicio',
  main: 'Principal',
  resources: 'Recursos',
  me: 'Yo',
  pages: 'Páginas',
  projects: 'Proyectos'
}
i18next::backendConnector: loaded namespace skill-type for language es {
  database: 'Base de Datos',
  framework: 'Marco de Trabajo',
  language: 'Lenguaje',
  operating_system: 'Sistema Operativo',
  programming_language: 'Lenguaje de Programación',
  technical: 'Técnica',
  technology: 'Tecnología',
  tools: 'Herramientas'
}
i18next::backendConnector: loaded namespace common for language tr {
  alert: { 'preview-mode': { title: '', message: '' } },
  error: {
    '404': {
      title: '{{statusCode}} - Sayfa bulunamadı',
      disclaimer: 'İstediğiniz sayfası bulamadık.'
    },
    '500': { title: '{{statusCode}} - ', disclaimer: '' },
    status: { with: '', without: '' }
  },
  exit: 'Çık',
  home: 'Ana sayfa',
  main: 'Ana',
  resources: 'Kaynaklar',
  me: 'Ben',
  pages: 'Sayfalar',
  projects: 'Projelers'
}
i18next::backendConnector: loaded namespace skill-type for language tr {
  database: 'Database',
  framework: 'Çerçeve',
  language: 'Dil',
  operating_system: 'İşletim Sistemi',
  programming_language: 'Programlama Dili',
  technical: 'Teknik',
  technology: 'Teknoloji',
  tools: 'Araçlar'
}
i18next::backendConnector: loaded namespace common for language en {
  alert: {
    'preview-mode': {
      title: 'Warning',
      message: 'You are looking the website in — <strong>preview mode</strong>.'
    }
  },
  error: {
    '404': {
      title: '{{statusCode}} - Page not found',
      disclaimer: "We can't find the page you are looking for."
    },
    '500': {
      title: '{{statusCode}} - Internal server error',
      disclaimer: 'We have experienced an internal server error and are working to resolve it.'
    },
    status: {
      with: 'A {{statusCode}} error occurred on server.',
      without: 'An error occurred on the server.'
    }
  },
  exit: 'Exit',
  home: 'Home',
  main: 'Main',
  resources: 'Resources',
  me: 'Me',
  pages: 'Pages',
  projects: 'Projects'
}
i18next::backendConnector: loaded namespace skill-type for language en {
  database: 'Database',
  framework: 'Framework',
  language: 'Language',
  operating_system: 'Operating System',
  programming_language: 'Programming_Language',
  technical: 'Technical',
  technology: 'Technology',
  tools: 'Tools'
}
i18next: initialized {
  debug: true,
  initImmediate: false,
  ns: [ 'common', 'skill-type' ],
  defaultNS: 'common',
  fallbackLng: false,
  fallbackNS: false,
  whitelist: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitWhitelist: false,
  supportedLngs: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitSupportedLngs: false,
  load: 'currentOnly',
  preload: [ 'es', 'tr', 'en' ],
  simplifyPluralSuffix: true,
  keySeparator: '.',
  nsSeparator: ':',
  pluralSeparator: '_',
  contextSeparator: '_',
  partialBundledLanguages: false,
  saveMissing: true,
  updateMissing: true,
  saveMissingTo: 'fallback',
  saveMissingPlurals: true,
  missingKeyHandler: false,
  missingInterpolationHandler: false,
  postProcess: false,
  postProcessPassResolved: false,
  returnNull: true,
  returnEmptyString: true,
  returnObjects: false,
  joinArrays: false,
  returnedObjectHandler: false,
  parseMissingKeyHandler: false,
  appendNamespaceToMissingKey: false,
  appendNamespaceToCIMode: false,
  overloadTranslationOptionHandler: [Function: handle],
  interpolation: {
    escapeValue: false,
    formatSeparator: ',',
    format: [Function: format]
  },
  defaultLanguage: 'en',
  otherLanguages: [ 'es', 'tr' ],
  localePath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales',
  localeStructure: '{{lng}}/{{ns}}',
  localeExtension: 'json',
  localeSubpaths: {},
  use: [],
  browserLanguageDetection: true,
  serverLanguageDetection: true,
  ignoreRoutes: [ '/_next/', '/static/', '/public/', '/api/' ],
  customDetectors: [],
  detection: {
    caches: [ 'cookie' ],
    cookieSameSite: 'strict',
    lookupCookie: 'next-i18next',
    order: [ 'cookie', 'header', 'querystring' ],
    lookupQuerystring: 'lng',
    lookupSession: 'lng',
    lookupFromPathIndex: 0,
    getPath: [Function: getPath],
    getOriginalUrl: [Function: getOriginalUrl],
    getUrl: [Function: getUrl],
    setUrl: [Function: setUrl],
    getParams: [Function: getParams],
    getSession: [Function: getSession],
    getQuery: [Function: getQuery],
    getCookies: [Function: getCookies],
    getBody: [Function: getBody],
    getHeaders: [Function: getHeaders],
    getHeader: [Function: getHeader],
    setHeader: [Function: setHeader],
    setContentType: [Function: setContentType],
    setStatus: [Function: setStatus],
    send: [Function: send]
  },
  react: { wait: true, useSuspense: false },
  strictMode: true,
  errorStackTraceLimit: 0,
  shallowRender: false,
  allLanguages: [ 'es', 'tr', 'en' ],
  backend: {
    loadPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.json',
    addPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.missing.json',
    ident: 2,
    parse: [Function: parse],
    stringify: [Function: stringify]
  }
}
event - build page: /404
wait  - compiling...
i18next: init: no languageDetector is used and no lng is defined
i18next: initialized {
  debug: true,
  initImmediate: false,
  ns: [ 'common', 'skill-type' ],
  defaultNS: 'common',
  fallbackLng: false,
  fallbackNS: false,
  whitelist: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitWhitelist: false,
  supportedLngs: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitSupportedLngs: false,
  load: 'currentOnly',
  preload: [ 'es', 'tr', 'en' ],
  simplifyPluralSuffix: true,
  keySeparator: '.',
  nsSeparator: ':',
  pluralSeparator: '_',
  contextSeparator: '_',
  partialBundledLanguages: false,
  saveMissing: true,
  updateMissing: true,
  saveMissingTo: 'fallback',
  saveMissingPlurals: true,
  missingKeyHandler: false,
  missingInterpolationHandler: false,
  postProcess: false,
  postProcessPassResolved: false,
  returnNull: true,
  returnEmptyString: true,
  returnObjects: false,
  joinArrays: false,
  returnedObjectHandler: false,
  parseMissingKeyHandler: false,
  appendNamespaceToMissingKey: false,
  appendNamespaceToCIMode: false,
  overloadTranslationOptionHandler: [Function: handle],
  interpolation: {
    escapeValue: false,
    formatSeparator: ',',
    format: [Function: format]
  },
  defaultLanguage: 'en',
  otherLanguages: [ 'es', 'tr' ],
  localePath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales',
  localeStructure: '{{lng}}/{{ns}}',
  localeExtension: 'json',
  localeSubpaths: {},
  use: [],
  browserLanguageDetection: true,
  serverLanguageDetection: true,
  ignoreRoutes: [ '/_next/', '/static/', '/public/', '/api/' ],
  customDetectors: [],
  detection: {
    caches: [ 'cookie' ],
    cookieSameSite: 'strict',
    lookupCookie: 'next-i18next',
    order: [ 'cookie', 'header', 'querystring' ],
    lookupQuerystring: 'lng',
    lookupSession: 'lng',
    lookupFromPathIndex: 0,
    getPath: [Function: getPath],
    getOriginalUrl: [Function: getOriginalUrl],
    getUrl: [Function: getUrl],
    setUrl: [Function: setUrl],
    getParams: [Function: getParams],
    getSession: [Function: getSession],
    getQuery: [Function: getQuery],
    getCookies: [Function: getCookies],
    getBody: [Function: getBody],
    getHeaders: [Function: getHeaders],
    getHeader: [Function: getHeader],
    setHeader: [Function: setHeader],
    setContentType: [Function: setContentType],
    setStatus: [Function: setStatus],
    send: [Function: send]
  },
  react: { wait: true, useSuspense: false },
  strictMode: true,
  errorStackTraceLimit: 0,
  shallowRender: false,
  allLanguages: [ 'es', 'tr', 'en' ],
  backend: {
    loadPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.json',
    addPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.missing.json',
    ident: 2,
    parse: [Function: parse],
    stringify: [Function: stringify]
  },
  isClone: true
}
i18next: languageChanged en
event - compiled successfully
i18next: init: no languageDetector is used and no lng is defined
i18next: initialized {
  debug: true,
  initImmediate: false,
  ns: [ 'common', 'skill-type' ],
  defaultNS: 'common',
  fallbackLng: false,
  fallbackNS: false,
  whitelist: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitWhitelist: false,
  supportedLngs: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitSupportedLngs: false,
  load: 'currentOnly',
  preload: [ 'es', 'tr', 'en' ],
  simplifyPluralSuffix: true,
  keySeparator: '.',
  nsSeparator: ':',
  pluralSeparator: '_',
  contextSeparator: '_',
  partialBundledLanguages: false,
  saveMissing: true,
  updateMissing: true,
  saveMissingTo: 'fallback',
  saveMissingPlurals: true,
  missingKeyHandler: false,
  missingInterpolationHandler: false,
  postProcess: false,
  postProcessPassResolved: false,
  returnNull: true,
  returnEmptyString: true,
  returnObjects: false,
  joinArrays: false,
  returnedObjectHandler: false,
  parseMissingKeyHandler: false,
  appendNamespaceToMissingKey: false,
  appendNamespaceToCIMode: false,
  overloadTranslationOptionHandler: [Function: handle],
  interpolation: {
    escapeValue: false,
    formatSeparator: ',',
    format: [Function: format]
  },
  defaultLanguage: 'en',
  otherLanguages: [ 'es', 'tr' ],
  localePath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales',
  localeStructure: '{{lng}}/{{ns}}',
  localeExtension: 'json',
  localeSubpaths: {},
  use: [],
  browserLanguageDetection: true,
  serverLanguageDetection: true,
  ignoreRoutes: [ '/_next/', '/static/', '/public/', '/api/' ],
  customDetectors: [],
  detection: {
    caches: [ 'cookie' ],
    cookieSameSite: 'strict',
    lookupCookie: 'next-i18next',
    order: [ 'cookie', 'header', 'querystring' ],
    lookupQuerystring: 'lng',
    lookupSession: 'lng',
    lookupFromPathIndex: 0,
    getPath: [Function: getPath],
    getOriginalUrl: [Function: getOriginalUrl],
    getUrl: [Function: getUrl],
    setUrl: [Function: setUrl],
    getParams: [Function: getParams],
    getSession: [Function: getSession],
    getQuery: [Function: getQuery],
    getCookies: [Function: getCookies],
    getBody: [Function: getBody],
    getHeaders: [Function: getHeaders],
    getHeader: [Function: getHeader],
    setHeader: [Function: setHeader],
    setContentType: [Function: setContentType],
    setStatus: [Function: setStatus],
    send: [Function: send]
  },
  react: { wait: true, useSuspense: false },
  strictMode: true,
  errorStackTraceLimit: 0,
  shallowRender: false,
  allLanguages: [ 'es', 'tr', 'en' ],
  backend: {
    loadPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.json',
    addPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.missing.json',
    ident: 2,
    parse: [Function: parse],
    stringify: [Function: stringify]
  },
  isClone: true
}
i18next: languageChanged tr
i18next: languageChanged en
i18next: languageChanged tr
i18next::interpolator: missed to pass in variable statusCode for interpolating {{statusCode}} - Sayfa bulunamadı
i18next::backendConnector: loaded namespace common for language es {
  alert: {
    'preview-mode': {
      title: 'Advertencia',
      message: 'Está viendo el sitio en — <strong>modo previsualización</strong>.'
    }
  },
  error: {
    '404': {
      title: '{{statusCode}} - Página no encontrada',
      disclaimer: 'No podemos encontrar la página que busca.'
    },
    '500': {
      title: '{{statusCode}} - Error interno en el servidor',
      disclaimer: 'Hemos experimentado un error interno en el servidor y estamos trabajando para resolverlo.'
    },
    status: {
      with: 'Un error {{statusCode}} ocurrió en el servidor.',
      without: 'Un error ocurrió en el servidor.'
    }
  },
  exit: 'Salir',
  home: 'Inicio',
  main: 'Principal',
  resources: 'Recursos',
  me: 'Yo',
  pages: 'Páginas',
  projects: 'Proyectos'
}
i18next::backendConnector: loaded namespace skill-type for language es {
  database: 'Base de Datos',
  framework: 'Marco de Trabajo',
  language: 'Lenguaje',
  operating_system: 'Sistema Operativo',
  programming_language: 'Lenguaje de Programación',
  technical: 'Técnica',
  technology: 'Tecnología',
  tools: 'Herramientas'
}
i18next::backendConnector: loaded namespace common for language tr {
  alert: { 'preview-mode': { title: '', message: '' } },
  error: {
    '404': {
      title: '{{statusCode}} - Sayfa bulunamadı',
      disclaimer: 'İstediğiniz sayfası bulamadık.'
    },
    '500': { title: '{{statusCode}} - ', disclaimer: '' },
    status: { with: '', without: '' }
  },
  exit: 'Çık',
  home: 'Ana sayfa',
  main: 'Ana',
  resources: 'Kaynaklar',
  me: 'Ben',
  pages: 'Sayfalar',
  projects: 'Projelers'
}
i18next::backendConnector: loaded namespace skill-type for language tr {
  database: 'Database',
  framework: 'Çerçeve',
  language: 'Dil',
  operating_system: 'İşletim Sistemi',
  programming_language: 'Programlama Dili',
  technical: 'Teknik',
  technology: 'Teknoloji',
  tools: 'Araçlar'
}
i18next::backendConnector: loaded namespace common for language en {
  alert: {
    'preview-mode': {
      title: 'Warning',
      message: 'You are looking the website in — <strong>preview mode</strong>.'
    }
  },
  error: {
    '404': {
      title: '{{statusCode}} - Page not found',
      disclaimer: "We can't find the page you are looking for."
    },
    '500': {
      title: '{{statusCode}} - Internal server error',
      disclaimer: 'We have experienced an internal server error and are working to resolve it.'
    },
    status: {
      with: 'A {{statusCode}} error occurred on server.',
      without: 'An error occurred on the server.'
    }
  },
  exit: 'Exit',
  home: 'Home',
  main: 'Main',
  resources: 'Resources',
  me: 'Me',
  pages: 'Pages',
  projects: 'Projects'
}
i18next::backendConnector: loaded namespace skill-type for language en {
  database: 'Database',
  framework: 'Framework',
  language: 'Language',
  operating_system: 'Operating System',
  programming_language: 'Programming_Language',
  technical: 'Technical',
  technology: 'Technology',
  tools: 'Tools'
}
i18next: initialized {
  debug: true,
  initImmediate: false,
  ns: [ 'common', 'skill-type' ],
  defaultNS: 'common',
  fallbackLng: false,
  fallbackNS: false,
  whitelist: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitWhitelist: false,
  supportedLngs: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitSupportedLngs: false,
  load: 'currentOnly',
  preload: [ 'es', 'tr', 'en' ],
  simplifyPluralSuffix: true,
  keySeparator: '.',
  nsSeparator: ':',
  pluralSeparator: '_',
  contextSeparator: '_',
  partialBundledLanguages: false,
  saveMissing: true,
  updateMissing: true,
  saveMissingTo: 'fallback',
  saveMissingPlurals: true,
  missingKeyHandler: false,
  missingInterpolationHandler: false,
  postProcess: false,
  postProcessPassResolved: false,
  returnNull: true,
  returnEmptyString: true,
  returnObjects: false,
  joinArrays: false,
  returnedObjectHandler: false,
  parseMissingKeyHandler: false,
  appendNamespaceToMissingKey: false,
  appendNamespaceToCIMode: false,
  overloadTranslationOptionHandler: [Function: handle],
  interpolation: {
    escapeValue: false,
    formatSeparator: ',',
    format: [Function: format]
  },
  defaultLanguage: 'en',
  otherLanguages: [ 'es', 'tr' ],
  localePath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales',
  localeStructure: '{{lng}}/{{ns}}',
  localeExtension: 'json',
  localeSubpaths: {},
  use: [],
  browserLanguageDetection: true,
  serverLanguageDetection: true,
  ignoreRoutes: [ '/_next/', '/static/', '/public/', '/api/' ],
  customDetectors: [],
  detection: {
    caches: [ 'cookie' ],
    cookieSameSite: 'strict',
    lookupCookie: 'next-i18next',
    order: [ 'cookie', 'header', 'querystring' ],
    lookupQuerystring: 'lng',
    lookupSession: 'lng',
    lookupFromPathIndex: 0,
    getPath: [Function: getPath],
    getOriginalUrl: [Function: getOriginalUrl],
    getUrl: [Function: getUrl],
    setUrl: [Function: setUrl],
    getParams: [Function: getParams],
    getSession: [Function: getSession],
    getQuery: [Function: getQuery],
    getCookies: [Function: getCookies],
    getBody: [Function: getBody],
    getHeaders: [Function: getHeaders],
    getHeader: [Function: getHeader],
    setHeader: [Function: setHeader],
    setContentType: [Function: setContentType],
    setStatus: [Function: setStatus],
    send: [Function: send]
  },
  react: { wait: true, useSuspense: false },
  strictMode: true,
  errorStackTraceLimit: 0,
  shallowRender: false,
  allLanguages: [ 'es', 'tr', 'en' ],
  backend: {
    loadPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.json',
    addPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.missing.json',
    ident: 2,
    parse: [Function: parse],
    stringify: [Function: stringify]
  }
}
i18next: init: no languageDetector is used and no lng is defined
i18next: initialized {
  debug: true,
  initImmediate: false,
  ns: [ 'common', 'skill-type' ],
  defaultNS: 'common',
  fallbackLng: false,
  fallbackNS: false,
  whitelist: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitWhitelist: false,
  supportedLngs: [ 'es', 'tr', 'en', 'cimode' ],
  nonExplicitSupportedLngs: false,
  load: 'currentOnly',
  preload: [ 'es', 'tr', 'en' ],
  simplifyPluralSuffix: true,
  keySeparator: '.',
  nsSeparator: ':',
  pluralSeparator: '_',
  contextSeparator: '_',
  partialBundledLanguages: false,
  saveMissing: true,
  updateMissing: true,
  saveMissingTo: 'fallback',
  saveMissingPlurals: true,
  missingKeyHandler: false,
  missingInterpolationHandler: false,
  postProcess: false,
  postProcessPassResolved: false,
  returnNull: true,
  returnEmptyString: true,
  returnObjects: false,
  joinArrays: false,
  returnedObjectHandler: false,
  parseMissingKeyHandler: false,
  appendNamespaceToMissingKey: false,
  appendNamespaceToCIMode: false,
  overloadTranslationOptionHandler: [Function: handle],
  interpolation: {
    escapeValue: false,
    formatSeparator: ',',
    format: [Function: format]
  },
  defaultLanguage: 'en',
  otherLanguages: [ 'es', 'tr' ],
  localePath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales',
  localeStructure: '{{lng}}/{{ns}}',
  localeExtension: 'json',
  localeSubpaths: {},
  use: [],
  browserLanguageDetection: true,
  serverLanguageDetection: true,
  ignoreRoutes: [ '/_next/', '/static/', '/public/', '/api/' ],
  customDetectors: [],
  detection: {
    caches: [ 'cookie' ],
    cookieSameSite: 'strict',
    lookupCookie: 'next-i18next',
    order: [ 'cookie', 'header', 'querystring' ],
    lookupQuerystring: 'lng',
    lookupSession: 'lng',
    lookupFromPathIndex: 0,
    getPath: [Function: getPath],
    getOriginalUrl: [Function: getOriginalUrl],
    getUrl: [Function: getUrl],
    setUrl: [Function: setUrl],
    getParams: [Function: getParams],
    getSession: [Function: getSession],
    getQuery: [Function: getQuery],
    getCookies: [Function: getCookies],
    getBody: [Function: getBody],
    getHeaders: [Function: getHeaders],
    getHeader: [Function: getHeader],
    setHeader: [Function: setHeader],
    setContentType: [Function: setContentType],
    setStatus: [Function: setStatus],
    send: [Function: send]
  },
  react: { wait: true, useSuspense: false },
  strictMode: true,
  errorStackTraceLimit: 0,
  shallowRender: false,
  allLanguages: [ 'es', 'tr', 'en' ],
  backend: {
    loadPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.json',
    addPath: '/home/joselito92/Proyectos/Work/portfolio/frontend/public/static/locales/{{lng}}/{{ns}}.missing.json',
    ident: 2,
    parse: [Function: parse],
    stringify: [Function: stringify]
  },
  isClone: true
}
i18next: languageChanged tr
i18next: languageChanged tr
i18next::translator: updateKey tr common alert.preview-mode.message You are looking the website in<strong>preview mode</strong>.

@adrai
Copy link
Member

adrai commented Oct 21, 2020

the log statement tells this: "i18next::translator: updateKey tr common alert.preview-mode.message You are looking the website in — <strong>preview mode</strong>."

This means your tr translations are not like what is generated by your code: You are looking the website in — <strong>preview mode</strong>.

Looking at your tr common.json file:

alert: { 'preview-mode': { title: '', message: '' } }

"You are looking the website in — <strong>preview mode</strong>." !== ""

@SalahAdDin
Copy link
Author

Yeah, that one is missing, but for it is not for Spanish, so, why does it crash for Spanish?

@adrai
Copy link
Member

adrai commented Oct 21, 2020

What do you mean by "crash for Spanish"?


i18next::translator: updateKey es common alert.preview-mode.message You are looking the website in — <strong>preview mode</strong>.

i18next::backendConnector: loaded namespace common for language es {
  alert: {
    'preview-mode': {
      title: 'Advertencia',
      message: 'Está viendo el sitio en — <strong>modo previsualización</strong>.'
    }
  },

@adrai
Copy link
Member

adrai commented Oct 21, 2020

I really suggest to set updateMissing to false for your setup:

image

saveMissing: true
updateMissing: false

@SalahAdDin
Copy link
Author

@adrai When i say it crash for Spanish, it means even when there is a translation literal for spanish, it is not translated in front-end.

I deactivated updateMissing, by the way, and it does work.

@adrai
Copy link
Member

adrai commented Oct 21, 2020

So it works now? Can the issue be closed?

@SalahAdDin
Copy link
Author

It can be closed, yes, but i didn't understand the problem with the updateMissing option.

@adrai adrai closed this as completed Oct 21, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants