Help › Install on your site

Deploy translated pages on Netlify or Vercel

Partly builtLast updated

On this page

Both hosts can run a step after your build that writes translated copies of your pages. The result is the same as the static site kit: language folders, hreflang tags and the loader tag.

The recipes are in the repository. Nothing is published to a plugin directory or registry: OPEN. You copy the folders you need into your project, because the tools are not on npm.

Netlify#

A local build plugin runs after the build. It downloads your published files from the delivery address into a cache folder and checks the signature, every checksum and that the version did not go back. Then it writes the translated pages and checks the output. Settings include the source language, your site address, the delivery address, the site key and the public key. You can choose to deploy only the source language if the files cannot be loaded, instead of failing the build.

Vercel#

Vercel has no plugin system like Netlify's. Instead, set the build command to run your normal build and then the prerender step. If that step fails, the build fails and nothing is deployed. The previous deployment keeps serving. The settings are environment variables, and they hold public values only: the build folder, the source language, your site address, the delivery address, the site key and the public key.

The cache folder is not kept between Vercel builds. If every delivery address is down and there is no cache, the step fails, unless you tell it to warn and deploy the source language.

What both cover#

Static output only: plain HTML, Astro static, Next.js static export, Nuxt generate, Eleventy and Hugo. Pages made for each request, such as Next.js server components or Nuxt server rendering, are not changed by a build step. Use the framework kits or the loader for those. See Install on Next.js.

Checks that fail the build#

A bad signature, a changed file, a version that went back, or a hreflang problem such as missing return links or a missing default. Hand-written alternate links in your source pages are the usual cause of the last one.