Estoy usando i18next para la internacionalización. Para un idioma predeterminado, lo configuré para detectar el idioma de la consulta de URL o del encabezado de idioma aceptado. (hay dos idiomas, "?lng=en" y "?lng=zh-hant") Ahora me pregunto cómo agregar cualquiera de las consultas de dos idiomas a la URL predeterminada http://example.com/ para que se convierte en http://example.com/?lng=en , después de detectar el idioma del encabezado accept-language. Quiero que la consulta de idioma esté siempre presente en la URL, y quiero que se establezca como el idioma preferido desde el encabezado de idioma aceptado.
Intenté analizar el lenguaje de aceptación y luego redirigir usando app.use() en Express, pero no tuve éxito. No pude encontrar algo relevante para mi situación y soy bastante nuevo en Javascript.
En resumen, quiero agregar la variable "lng" de loadPath() a la URL como consulta.
const i18next = require('i18next'); const Backend = require('i18next-fs-backend'); const middleware = require('i18next-http-middleware'); i18next.use(Backend) .use(middleware.LanguageDetector) .init({ detection: detection_options, fallbackLng: 'en', backend: { loadPath(lng, ns) { if (lng === 'zh' || lng === 'zh-HK' || lng === 'zh-TW') { return path.join(__dirname, 'locales/zh-hant.json'); } else if (lng === 'en-US') { return path.join(__dirname, 'locales/en.json'); } return path.join(__dirname, 'locales/{{lng}}.json'); } } }) app.use(middleware.handle(i18next));