如何获取i18next.t返回的字符串的语言?

How to obtain the language of the string returned by i18next.t?

假设我有两种翻译资源(即语言)。一个资源包含软件中使用的所有密钥的值。此资源(此处称为“en”)配置为回退。其他资源(此处称为“cn”)并不具有所有键的值。假设默认语言是“cn”。

现在我们可以使用 const translation = t("some_key") 查找密钥。 编辑:因此,translation现在可能取自“cn”或“en”,具体取决于它是否在“cn”中定义。

如何判断translation的语言;或者更一般地说,如何让 i18next 查找一些键以及有关已用资源的 return 信息?

我对为 translation 扫描所有资源的方法不感兴趣,也不对基于 translation.

内容的启发式方法感兴趣

提问原因:我想在浏览器中的某个DOM元素上应用正确的lang属性。本地化在服务器端是 运行 并通过 JSON 传输 – 所以这不是关于 i18next-react.

也许您可以尝试获取 i18n 的语言环境。例如,在 Vue 2 中,您可以通过以下方式获取它:

let lang = this.$i18n.locale //return lang set ('es', 'en', 'cn', 'fr', etc)

i18next 内部有一个解析函数,returns 使用的语言…

您可以尝试访问 i18next.translator.resolve(key, options) 但是就像说的那样,这是没有记录的,而不是官方的 public 界面。

编辑:从 v21.7.0 开始有一个新选项 returnDetails 可以设置为 true 以获取所有相关信息。

  const resolved = t('key', { returnDetails: true });
  resolved.res;
  resolved.usedKey;
  resolved.exactUsedKey;
  resolved.usedNS;
  resolved.usedLng;