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

问题描述 投票:0回答:3

假设我有两种翻译资源(即语言)。一项资源包含软件中使用的所有密钥的值。该资源(此处称为“en”)被配置为后备资源。另一个资源(此处称为“cn”)没有所有键的值。假设默认语言是“cn”。

现在我们可以使用

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

如何确定

translation
的语言;或者更一般地说,如何让 i18next 查找某些键并返回有关所使用资源的信息?

我对扫描所有资源以查找

translation
的方法不感兴趣,也不对基于
translation
内容的启发式方法感兴趣。

问题原因:我想在浏览器中的某个 DOM 元素上应用正确的

lang
属性。本地化在服务器端运行并通过 JSON 传输 – 所以这不是
i18next-react

javascript i18next
3个回答
2
投票

i18next 内部有一个解析函数,可以返回所使用的语言…

您可以尝试访问 i18next.translator.resolve(key, options) 但正如所说,这是无证的,不是官方的公共接口。

编辑:从 v21.7.0 开始,有一个新选项

returnDetails
,可以将其设置为 true 以获取所有相关信息。

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

0
投票

如果是版本 0.70 将 returnDetails 从

true
更改为
false


-1
投票

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

let lang = this.$i18n.locale //return lang set ('es', 'en', 'cn', 'fr', etc)
© www.soinside.com 2019 - 2024. All rights reserved.