Tendría que analizar la cadena en req.headers["accept-language"]
. Lo cual le dará una lista de prioridad de los idiomas preferidos del cliente. También puede marcar req.acceptsLanguages(lang [, ...])
si su idioma es compatible o no.
Recomiendo utilizar express-request-language para hacer cualquier trabajo de búsqueda de idiomas, ya que podría ser muy difícil hacerlo bien desde el principio.
La mayoría de las veces, igualar un idioma no es suficiente. Un usuario puede querer cambiar un idioma preferido. express-request-language
le ayudan a almacenar un idioma preferido en una cookie, también le da a su servidor una ruta URL para cambiar un idioma preferido.
Todos arriba funcionalidad se puede hacer con sólo un par de líneas de código:
app.use(requestLanguage({
languages: ['en-US', 'zh-CN'],
cookie: {
name: 'language',
options: { maxAge: 24*3600*1000 },
url: '/languages/{language}'
}
}));
En caso de no coincidencia, el middleware también coincidirá con un idioma predeterminado (en-US
arriba).
req.headers ["accept-language"] devuelve: "uk, ru; q = 0.8, en-us; q = 0.5, en; q = 0.3" El idioma seleccionado es "uk". ¿Cómo obtener este idioma de la lista? –
@OlegDats El módulo de configuración regional le ayudará a analizar eso, pero básicamente significa que el usuario desea las configuraciones regionales (en orden de preferencia) uk (UK English), ru (Russian), en-us (US English), en (plain inglés), q es un factor de ponderación, más alto q significa mayor preferencia. –
@JoachimIsaksson uk no es inglés británico, eso sería 'en-gb'. Probablemente uk es ucraniano. Las primeras dos letras son siempre lanuages, no regiones. – UpTheCreek