Thanks for your answer.
I'm using gatsby-node, createPages and a link resolver:
exports.createPages = async ({ graphql, actions }) => {
const { createPage } = actions
const pages = await graphql(`{
allPrismicLanding {
nodes {
url
type
lang
}
}
allPrismicAbout {
nodes {
url
type
lang
}
}
allPrismicPricing {
nodes {
url
type
lang
}
}
allPrismicCustomers {
nodes {
url
type
lang
}
}
allPrismicBlog {
nodes {
url
type
lang
}
}
allPrismicBlogArticle {
nodes {
url
uid
type
lang
}
}
allPrismicContact {
nodes {
url
type
lang
}
}
allPrismicTermsAndConditions {
nodes {
url
type
lang
}
}
allPrismicGdprAndPdpa {
nodes {
url
type
lang
}
}
allPrismicSla {
nodes {
url
type
lang
}
}
}`)
pages.data.allPrismicLanding.nodes.forEach((page) => {
createPage({
path: page.url,
component: path.resolve(__dirname, './src/pages/index.js'),
context: { ...page },
})
})
pages.data.allPrismicAbout.nodes.forEach((page) => {
createPage({
path: page.url,
component: path.resolve(__dirname, './src/pages/about.js'),
context: { ...page },
})
})
pages.data.allPrismicPricing.nodes.forEach((page) => {
createPage({
path: page.url,
component: path.resolve(__dirname, './src/pages/pricing.js'),
context: { ...page },
})
})
pages.data.allPrismicCustomers.nodes.forEach((page) => {
createPage({
path: page.url,
component: path.resolve(__dirname, './src/pages/customers.js'),
context: { ...page },
})
})
pages.data.allPrismicBlog.nodes.forEach((page) => {
createPage({
path: page.url,
component: path.resolve(__dirname, './src/pages/blog.js'),
context: { ...page },
})
})
pages.data.allPrismicBlogArticle.nodes.forEach((page) => {
createPage({
path: page.url,
component: path.resolve(__dirname, './src/templates/post.js'),
context: { ...page },
})
})
pages.data.allPrismicContact.nodes.forEach((page) => {
createPage({
path: page.url,
component: path.resolve(__dirname, './src/pages/contact.js'),
context: { ...page },
})
})
pages.data.allPrismicTermsAndConditions.nodes.forEach((page) => {
createPage({
path: page.url,
component: path.resolve(__dirname, './src/pages/terms.js'),
context: { ...page },
})
})
pages.data.allPrismicGdprAndPdpa.nodes.forEach((page) => {
createPage({
path: page.url,
component: path.resolve(__dirname, './src/pages/pdpa.js'),
context: { ...page },
})
})
pages.data.allPrismicSla.nodes.forEach((page) => {
createPage({
path: page.url,
component: path.resolve(__dirname, './src/pages/sla.js'),
context: { ...page },
})
})
}
const { defaultLanguage } = require('../../prismic-config');
const linkResolver = (doc) => {
if (doc.type === 'landing') {
return doc.lang === defaultLanguage
? `/${defaultLanguage}/`
: `/${doc.lang}/`;
}
if (doc.type === 'about') {
return doc.lang === defaultLanguage
? `/${defaultLanguage}/about`
: `/${doc.lang}/about`;
}
if (doc.type === 'customers') {
return doc.lang === defaultLanguage
? `/${defaultLanguage}/customers`
: `/${doc.lang}/customers`;
}
if (doc.type === 'pricing') {
return doc.lang === defaultLanguage
? `/${defaultLanguage}/pricing`
: `/${doc.lang}/pricing`;
}
if (doc.type === 'contact') {
return doc.lang === defaultLanguage
? `/${defaultLanguage}/contact`
: `/${doc.lang}/contact`;
}
if (doc.type === 'terms_and_conditions') {
return doc.lang === defaultLanguage
? `/${defaultLanguage}/terms`
: `/${doc.lang}/terms`;
}
if (doc.type === 'gdpr_and_pdpa') {
return doc.lang === defaultLanguage
? `/${defaultLanguage}/pdpa`
: `/${doc.lang}/pdpa`;
}
if (doc.type === 'sla') {
return doc.lang === defaultLanguage
? `/${defaultLanguage}/sla`
: `/${doc.lang}/sla`;
}
if (doc.type === 'blog') {
return doc.lang === defaultLanguage
? `/${defaultLanguage}/blog`
: `/${doc.lang}/blog`;
}
if (doc.type === "blog_article") {
return doc.lang === defaultLanguage
? `/${defaultLanguage}/blog/`+ doc.uid
: `/${doc.lang}/blog/`+ doc.uid;
}
return `/${defaultLanguage}`;
}
module.exports = linkResolver;