Digamos que tengo dos recursos de traducción (es decir, idiomas). Un recurso contiene valores para todas las claves utilizadas en el software. Este recurso (aquí denominado "en") está configurado como respaldo. El otro recurso (aquí denominado "cn") no tiene valores para todas las claves. Supongamos que el idioma predeterminado es "cn".
Ahora podemos buscar una clave usando const translation = t("some_key") . Editar : por lo tanto, podría ser que la translation ahora se tome de "cn" o "en", dependiendo de si se define en "cn".
Cómo determinar el idioma de translation ; o, de manera más general, ¿cómo hacer que i18next busque alguna clave y también devuelva información sobre el recurso utilizado?
No estoy interesado en enfoques que exploren todos los recursos para la translation , ni en enfoques heurísticos basados en los contenidos de la translation .
Motivo de la pregunta: quiero aplicar el atributo lang correcto en el navegador en un determinado elemento DOM. La localización se ejecuta en el lado del servidor y se transmite a través de JSON, por lo que no se trata de i18next-react .
internamente i18next tiene una función de resolución que devuelve el idioma utilizado...
Puede intentar acceder a i18next.translator.resolve (clave, opciones) pero, como se dijo, esto no está documentado y no es una interfaz pública oficial.
Editar: Desde v21.7.0 hay una nueva opción returnDetails que se puede establecer en verdadero para obtener toda la información relevante.
const resolved = t('key', { returnDetails: true }); resolved.res; resolved.usedKey; resolved.exactUsedKey; resolved.usedNS; resolved.usedLng;Tal vez pueda intentar obtener la configuración regional para i18n. Por ejemplo, en Vue 2, puedes obtenerlo con:
let lang = this.$i18n.locale //return lang set ('es', 'en', 'cn', 'fr', etc)