如何获取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;
假设我有两种翻译资源(即语言)。一个资源包含软件中使用的所有密钥的值。此资源(此处称为“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;