我在Next JS项目中使用next-i18 next来处理翻译。我想在缺少key
时调用后端将其存储在数据库中。
我发现i18 next中有相应的函数,特别是通过设置saveMissing
和missingKeyHandler
函数(参见此处: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钩子,但我还没有成功。
1条答案
按热度按时间368yc8dk1#
这可能是因为你返回的是一个对象而不是一个值,而且我不会返回message(因为预期的翻译将被替换为message),而是fallbackValue