使用i18next进行翻译时缺少密钥

k5ifujac  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(172)

我在Next JS项目中使用next-i18 next来处理翻译。我想在缺少key时调用后端将其存储在数据库中。
我发现i18 next中有相应的函数,特别是通过设置saveMissingmissingKeyHandler函数(参见此处:https://www.i18next.com/overview/configuration-options
但是,当添加missingKeyHandler到我的next-i18next.config.js文件时,我得到了这个错误:“error - SerializableError:在“/dashboard/assettrack”中序列化从getServerSideProps返回的._nextI18Next.userConfig.missingKeyHandler时出错。原因:function无法序列化为JSON。请只返回JSON可序列化的数据类型。“
这是我的下一个i18 next。config.js文件:

module.exports = {
i18n: {
    defaultLocale: "en",
    locales: ["en","es","ca"]
},
localePath: path.resolve('./appdata/locales'),
localeStructure: '{{lng}}/{{ns}}',
debug: process.env.NODE_ENV === 'development',
reloadOnPrerender: process.env.NODE_ENV === 'development',
saveMissing: true,
missingKeyHandler: (lng, ns, key, fallbackValue) => {
    const message = `Missing translation key [${key}] for [${lng}/${ns}], fallbackValue: ${fallbackValue}`;
    console.warn(message);
    return { message };
}

}
这当然是有道理的,但问题是,如何添加自己的missingKeyHandler函数?
我还尝试创建一个自定义useTranslation钩子来扩展原生useTranslation钩子,但我还没有成功。

368yc8dk

368yc8dk1#

这可能是因为你返回的是一个对象而不是一个值,而且我不会返回message(因为预期的翻译将被替换为message),而是fallbackValue

missingKeyHandler: (lng, ns, key, fallbackValue) => {
    const message = `Missing translation key [${key}] for [${lng}/${ns}], fallbackValue: ${fallbackValue}`;
    console.warn(message);
    return fallbackValue;
}

相关问题