我遇到了gatsby-source-graphcms和gatsby-plugin-react-i18next之间的挑战/可能的不兼容性,因此似乎几乎没有在线信息,我想知道是否有人之前遇到过这个问题。
我正在为一个使用Gatsby by-source-graphcms和Gatsby File System Route API动态构建页面的站点添加本地化。一切都很顺利,直到我试图使用gatsby-plugin-react-i18next提供的$language
GraphQL查询变量与GraphCMS中的locale
过滤器字段,这产生了这个错误消息:
Variable "$language" of type "String!" used in position expecting type "GraphCMS_Locale"
我能找到的唯一一个类似问题的参考是在GraphCMS的公共Slack上,有人提到放弃gatsby-source-graphcms,我喜欢gatsby-source-graphql,因为这个。然而,我很犹豫要不要这样做,因为这基本上意味着我要重写整个网站!😢
我一直在试图找到一些方法来为页面查询提供第二个变量,它从gatsby-plugin-react-i18next复制值$language
变量,但被声明为GraphCMS的正确数据类型,或者以某种方式将字符串转换为GraphCMS_locale
,但迄今为止没有运气。
有没有人找到一种方法,使gatsby-source-graphcms很好地发挥gatsby-plugin-react-i18下一个请?
WIP代码可以在这里看到:https://github.com/binghamchris/paddelbuch/blob/feature-i18n/src/pages/index.js
如果代码在某个地方有点糟糕,请道歉。我不是一个web开发人员(这是一个我自愿参加的社区项目,那里没有专业的web开发人员),我真的只是在复制和粘贴代码😉
提前感谢任何人可以提供的任何帮助
我发现了一个超级黑客的解决方案,灵感来自@notrab的善意帮助,以防它帮助其他人:我在gatsby-node.js中添加了以下内容:
exports.createSchemaCustomization = ({
actions: { createTypes, printTypeDefinitions }
}) => {
createTypes(`
type Locale implements Node {
language: GraphCMS_Locale
}
`);
};
这改变了i18next翻译数据中language
字段上的GraphQL数据类型到GraphCMS_Locale
,这意味着gatsby-plugin-react-i18next
和gatsby-source-graphcms
所需的数据类型都匹配…到目前为止,它似乎是在开发模式下工作!