For a static or small site, an agent builds the core in a weekend: a build step that pulls text out of your pages, translates it with DeepL or an LLM, keeps a translation memory so edits survive, and writes /fr/ and /de/ copies with hreflang tags and a language switcher. It gets hard on live sites. Weglot detects new content by itself, reads pages rendered by JavaScript, translates URLs and metadata, and lets editors fix strings in a visual editor. If your site runs on a CMS or a shop, its plugins are the real product.
Before you buildWeglot Free covers one translated language for up to 2,000 words. A small landing page may fit, and then you need neither a subscription nor a replacement.
Build me a static-site translator to replace Weglot for my own website. Requirements: - Node.js 22 + TypeScript CLI (`translate-site`, installed with `npm link`). Input: a folder of built HTML (SITE_DIR in .env). Output: the same site plus one folder per language (/fr/, /de/ ...) in OUT_DIR. The source language and target languages live in ./config.yaml. - Extraction: parse each page with `cheerio` and collect text nodes plus title, meta description, og: tags, alt, aria-label and placeholder attributes. Skip script, style, code and pre elements and anything marked translate="no" or class `notranslate`. Split text into sentence-sized units and hash each. - Storage: better-sqlite3 in ./data/memory.db with source text, language, translation, status (machine or edited) and the hash, so unchanged text is never translated twice and an edited string is never overwritten. - Translation: `deepl-node` when DEEPL_API_KEY is set, otherwise any OpenAI-compatible endpoint from .env. A glossary table (term, language, forced translation) goes with every request. Keep inline tags and placeholders intact and fail any unit whose tag count differs from the source. - Output pages: set `<html lang>`, rewrite internal links to the language folder, add `<link rel="alternate" hreflang>` for every language plus x-default, translate the canonical and og:url, and inject a language switcher (a plain `<select>`, no framework) before `</body>`. Write a sitemap with xhtml:link alternates. - Review: `translate-site review` serves http://127.0.0.1:5500 with a table of strings per language, inline editing that sets the status to edited, and a page preview in an iframe. - Memory export and import as CSV per language, and a count of unique words per language so you know what you are translating. - No accounts, no telemetry, local-first: only translation API calls leave the machine, and the README names exactly which text is sent. - Out of scope: JavaScript-rendered content, translating URL slugs, live proxying, CMS plugins, redirecting visitors by browser language. - README: setup, the .env keys, running it in CI before deploy, and a warning that machine translation needs a human read before launch.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Weglot.
Add a Weglot importer to the translator in this folder. Requirements: - `translate-site import-weglot <file>` reads a CSV or XLIFF exported from the Weglot dashboard (Translations > Languages > Actions > Export). - Match each row's original text to units in ./data/memory.db by exact text first, then by whitespace-normalised text, and store the translation as edited. - Print counts of matched, unmatched and conflicting rows, and write unmatched rows to ./import-unmatched.csv. - Never overwrite an existing edited string without --force. - Update the README.
Add slug translation to the translator in this folder. Requirements: - A `slugs` table maps each source path to a translated slug per language, filled by the same translation step and editable on the review page. - Slugs are lowercased, accent-stripped, hyphenated and unique within a language; a clash adds a short suffix. - Output files use the translated path; internal links, hreflang, canonical and the sitemap all use it too. - Write a `_redirects` file that sends the old /fr/<source-slug> path to the new one. - Update the README.
Add language suggestion to the translator in this folder. Requirements: - Inject a small script that reads navigator.languages on the first visit and shows a banner offering the matching language, without redirecting automatically. - Remember a dismissal or choice in localStorage and never show the banner twice. - Never touch crawlers' requests: the script only changes the page on the client, and the HTML for every language stays reachable at its own URL. - Update the README.
A site owner gets a second language in an afternoon without touching templates: install a plugin, pick languages, fix the odd string. The word-based pricing climbs with a growing site, but nothing needs developer time, which is why shops and agencies keep paying.
Estimate · Hosting is whatever your static site already costs. Translation is the only running cost: DeepL's free API tier or a few cents of LLM tokens per thousand words, paid again only for changed text. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | 2,000 words, 1 translated language, limited support. |
| Starter | $17 | $14.17 | 10,000 words, 1 translated language. |
| Business | $32 | $26.67 | 50,000 words, 3 translated languages. |
| Pro | $87 | $72.50 | 200,000 words, 5 translated languages. |
| Advanced | $329 | $274.17 | 1,000,000 words, 10 translated languages. |
| Extended | $769 | $640.83 | 5,000,000 words, 20 translated languages. |
| Enterprise | custom | — | Dedicated contract with custom terms, DPA and SLA, wire transfer payment. |
Free covers 2,000 words and one translated language with limited support. Paid plans start with a 14-day trial and no card is needed.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Plugins and apps for WordPress, Shopify, Wix and Webflow that need no code, A visual editor where non-developers fix translations on the live page.
About $17 a month on the Starter plan, $204 a year (checked 2026-10-19).
Plugins and apps for WordPress, Shopify, Wix and Webflow that need no code; A visual editor where non-developers fix translations on the live page; Automatic detection of new content, plus translated metadata and URL slugs; A language switcher and visitor-language redirection out of the box; Glossary and translation rules per project, and ordering human translation from agencies. If any of those matter to you, keep paying.
Yes: TranslatePress (open source), Polylang (open source), LibreTranslate (open source).