Choose a path
There are four ways in. They share the same translations and the same static bundles; they differ in how the page reaches the visitor.
| Path | Best for | Separate language URLs (/fr/) | Translated pages indexable by search engines |
|---|---|---|---|
| WordPress plugin | WordPress sites | Yes, planned in the SEO module of the plugin | Yes, when language URLs and hreflang are on |
| Shopify app | Shopify stores | Yes, Shopify serves its own language URLs | Yes for content written through Shopify's translations API |
| Script snippet | Wix, Squarespace, Webflow, Framer, Ghost, HubSpot, BigCommerce, plain HTML, SPAs | No: one URL, text swapped in the browser | Limited, see SEO and the script snippet |
| Framework SDKs | Next.js (static export), Nuxt (generate), Astro, plain static HTML | Yes, written at build time under /fr/ | Yes, with hreflang and canonical links |
| Edge delivery | WordPress, server-rendered shops, any site behind a CDN with edge code | Yes, served at the edge under /fr/ | Yes, with hreflang and canonical links (not deployed yet) |
| API | CI, headless sites, custom platforms | Your build decides | Your build decides |
How to decide#
- If your platform has a native route (WordPress, Shopify), use it. It is the only route that gives crawlers real translated pages.
- If organic search traffic in other languages matters and your platform offers native multilingual URLs (Wix Multilingual offers subfolder, subdomain or parameter URLs; Webflow Localization is verify, its help pages could not be fetched; for Squarespace the official route found is a Weglot integration, no native multilingual feature was found), prefer those and use the snippet only for what they do not cover.
- If visitors are already on your site and you want them to read it in their language, or you need something that works on any platform in minutes, use the snippet.
- If you generate pages at build time, use the API to push strings and pull translations, then publish.
Plain statement. Google recommends separate URLs for each language version rather than cookies or browser settings (managing multi-regional sites). A script that swaps text on one URL cannot provide that. Nothing in these docs claims otherwise.