假设我有两种翻译资源(即语言)。一项资源包含软件中使用的所有密钥的值。该资源(此处称为“en”)被配置为后备资源。另一个资源(此处称为“cn”)没有所有键的值。假设默认语言是“cn”。
现在我们可以使用
const translation = t("some_key")
查找键。 编辑:因此,translation
现在可能取自“cn”或“en”,具体取决于它是否在“cn”中定义。
如何确定
translation
的语言;或者更一般地说,如何让 i18next 查找某些键并返回有关所使用资源的信息?
我对扫描所有资源以查找
translation
的方法不感兴趣,也不对基于 translation
内容的启发式方法感兴趣。
lang
属性。本地化在服务器端运行并通过 JSON 传输 – 所以这不是 i18next-react
。
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.70 将 returnDetails 从
true
更改为 false
也许您可以尝试获取 i18n 的语言环境。例如,在 Vue 2 中,您可以通过以下方式获取它:
let lang = this.$i18n.locale //return lang set ('es', 'en', 'cn', 'fr', etc)