【发布时间】:2021-04-24 11:19:45
【问题描述】:
我在 Gatsby 中使用客户端路由和 gatsby-plugin-react-i18next。当我尝试访问其中一个客户端路由而不使用默认语言时,例如url 以/sv 为前缀,然后我知道该路由不存在。如果我将前缀 /sv 添加到路由器基本路径,Default 组件/路径正在工作,但 Profile 组件/路径不起作用。
使用不带/sv 前缀的默认语言时,一切正常。
src/pages/account.tsx
<Router basepath={'/account'}>
<AccountRoute path="/profile" component={Profile} />
<Default path="/" />
</Router>
gatsby-node.js
exports.onCreatePage = async ({ page, actions }) => {
const { createPage } = actions
if (page.path.match(/^\/account/)) {
page.matchPath = "/account/*"
createPage(page)
}
}
我还尝试将前缀 /sv 添加到 gatsby-node.js 中的 matchPath,但随后我被重定向到双前缀 /sv/sv 路由存在。如果我告诉gatsby-plugin-react-i18next 不要为帐户页面生成语言页面,我会得到相同的结果。
gatsby-config.js
{
resolve: `gatsby-plugin-react-i18next`,
options: {
...
},
pages: [
{
matchPath: '/:lang?/account/(.*)',
getLanguageFromPath: true
},
]
}
【问题讨论】:
-
这仍然有效吗?您遗漏了一些配置,有些不需要:gatsbyjs.com/plugins/gatsby-plugin-react-i18next 请仔细阅读文档。
-
是的!我仍然记得让 Linux 运行的美好时光,每个问题的答案都是 RTFM。 SO 的伟大之处在于它不是手册,而是快速查找表。但是,我已经阅读了您链接的页面,并且没有提到 gatsby i18next 插件如何处理客户端路由问题。如果您知道答案,我们仍然感谢您的意见!
标签: gatsby i18next reach-router