Locales
Use locales for multilingual and regional content.
Prismic supports creating localized versions of your content for different languages and regions. Each locale uses a code like en-us
or fr-ca
to represent a specific language and region combination.
Learn how content writers use locales
See the Next.js, Nuxt, or SvelteKit guides for framework-specific examples.
Fetch content from locales
Use the Prismic client’s lang
query parameter to fetch from a specific locale:
// Fetches all blog posts from the `en-ca` locale.
const blogPosts = await client.getAllByType("blog_post", {
lang: "en-ca",
});
Use the *
wildcard to fetch content from all locales:
// Fetches all blog posts from all locales.
const page = await client.getAllByType("blog_post", {
lang: "*",
});
By default, pages are fetched from your repository’s master locale:
const client = createClient("example-prismic-repo");
// Fetches all blog posts from the master locale.
const blogPosts = await client.getAllByType("blog_post");
Learn more about the lang
query parameter
Add locales to routes
You can add locales to page URLs by configuring your website’s route resolvers.
The following example route resolver adds a page’s locale to the start of its URL via the :lang
keyword. The :lang
keyword is replaced with the page’s locale.
{
"type": "page",
"path": "/:lang/:uid"
}
The above route resolver may output a URL like /en-ca/my-first-post
.
The :lang?
keyword (with a ?
) omits the locale if the page is from the master locale.
{
"type": "page",
"path": "/:lang?/:uid"
}
If en-ca
is the master locale, the previous /en-ca/my-first-post
example URL would be /my-first-post
instead.
Learn more about routes
Locales in the API
The Content API provides a page’s locale in its lang
property:
{
"id": "YCiUyRUAACQAxfZK",
"uid": "my-first-post",
"url": "/blog/my-first-post",
"type": "blog_post",
"href": "https://example-prismic-repo.cdn.prismic.io/api/v2/...",
"tags": ["Tag 1", "Tag 2"],
"first_publication_date": "2021-02-14T03:22:26+0000",
"last_publication_date": "2022-07-09T00:36:18+0000",
"slugs": ["my-first-post"],
"linked_documents": [],
"lang": "fr-fr",
"alternate_languages": [],
"data": {
// ...
}
}
A page’s translated versions are listed in the page’s alternate_languages
property.
{
"id": "YCiUyRUAACQAxfZK",
"uid": "my-first-post",
// ...
"alternate_languages": [
{
"id": "XTb4mBAAACQAOfrg",
"type": "homepage",
"lang": "fr-fr"
}
],
"data": {
// ...
}
}