Skip to content

getStaticPaths

getStaticPaths is a bit special in Astro. On one hand it’s absolutely necessary for dynamic SSG routes but it runs before everything, even middlewares.

Under the hood, the package uses a middleware so we can’t access any of the standard utilities inside of getStaticPaths. Instead, we provide getLocalePlaceholder and getDefaultLocalePlaceholder function that is a build time macro. That means it will be replaced by it’s literal value. For instance:

1
---
2
import { getLocalePlaceholder, getDefaultLocalePlaceholder } from "i18n:astro"
3
4
export const getStaticPaths = () => {
5
const locale = getLocalePlaceholder()
6
const defaultLocale = getDefaultLocalePlaceholder()
7
8
return []
9
}
10
---

Will be replaced by the following, no matter the context:

1
---
2
import { getLocalePlaceholder, getDefaultLocalePlaceholder } from "i18n:astro"
3
4
export const getStaticPaths = () => {
5
const locale = "en"
6
const defaultLocale = "en"
7
8
return []
9
}
10
---

Be careful not to use getLocalePlaceholder or getDefaultLocalePlaceholder in interpolations or it could result in invalid code.