我在gatsby-source-graphcms和gatsby-plugin-react-i18next之间遇到了一个挑战/可能的不兼容,对于这个问题,网上似乎没有任何信息,我想知道以前是否有人遇到过这个问题。
我正在为一个使用gatsby-source-graphcms和Gatsby文件系统路由API动态构建页面的站点添加本地化。一切都很顺利,直到我尝试使用由gatsby- GraphQL -react-i18next提供的$language插件查询变量和GraphCMS中的locale筛选器字段,这会产生以下错误消息:
Variable "$language" of type "String!" used in position expecting type "GraphCMS_Locale"
我能找到的关于类似问题的唯一参考文献是在graphcms的公共松弛上,其中有人提到因为这个原因而放弃了gatsby-source-graphcms,我更喜欢gatsby-source-graphql。然而,我对此犹豫不决,因为这基本上意味着为我重写整个网站!?
我一直在尝试寻找一些方法来提供页面查询的第二个变量,它复制了来自gatsby-plugin-react-i18next的值$language变量,但被声明为GraphCMS的正确数据类型,或者可能是以某种方式将字符串转换为GraphCMS_locale,但到目前为止还没有成功。
有没有人能找到一种方法让gatsby-source-graphcms很好地使用gatsby-plugin-react-i18next?
这个的WIP代码可以在这里看到:https://github.com/binghamchris/paddelbuch/blob/feature-i18n/src/pages/index.js
如果代码在某处有点糟糕,我深表歉意。我不是web开发人员(这是我自愿参与的一个社区项目,那里没有专业的web开发人员),我只是在钻研复制粘贴代码?
提前感谢任何人所能提供的任何帮助
发布于 2021-08-12 15:00:58
受到@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都需要匹配...到目前为止,它似乎在开发模式下工作!
https://stackoverflow.com/questions/68701185
复制相似问题