Skip to content

Instantly share code, notes, and snippets.

@bmihelac
Created October 17, 2018 09:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bmihelac/7bf6223badc4a226fe7b58e396f4e166 to your computer and use it in GitHub Desktop.
Save bmihelac/7bf6223badc4a226fe7b58e396f4e166 to your computer and use it in GitHub Desktop.
Copy pages starting with prefix for every language. Add lang to context.
import { getLanguageFromPath } from './utils'
exports.onCreatePage = ({ page, actions }, pluginOptions) => {
const languages = pluginOptions.languages
if (!languages) {
throw Error(
`Plugin "gatsby-plugin-i18n-pages" require languages`
)
}
const { createPage, deletePage } = actions
return new Promise(resolve => {
if (!page.context.i18nPage) {
if (page.path.startsWith(pluginOptions.prefix)) {
// create page for each language
const prefix = pluginOptions.prefix
languages.forEach(language => {
const newPage = Object.assign({}, page)
newPage.path = page.path.replace(prefix, `/${language}/`)
newPage.context = {
...newPage.context,
lang: language,
i18nPage: true,
}
createPage(newPage)
})
deletePage(page)
} else {
const newPage = Object.assign({}, page)
newPage.context = {
...page.context,
i18nPage: true,
lang: getLanguageFromPath(page.path, languages) || languages[0],
}
deletePage(page)
createPage(newPage)
}
}
resolve()
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment