Engineering

Translating the words is the easy half

Webflow Localize costs $9 a month for up to three locales and 10,000 translated words, checked on the pricing page today, and the AI translation inside it is genuinely useful. What it cannot do is format a German price, round a yen amount, or decide whether to show tax. Most of what breaks when you sell into a second country has nothing to do with words.

The add-on bills words, because words are what it can see

Webflow sells Localize in two tiers. Essential is $9 a month for up to three locales and 10,000 words. Advanced is $29 for up to ten locales and 50,000 words, and it is the tier that unlocks localized URLs, asset localization and automatic visitor routing. Both are priced per site. If you run four brand sites in four markets, you are buying the add-on four times.

One line in Webflow's own help center matters more than the price: Localize does not support Ecommerce site plan features, so products, categories and pages cannot be localized when both are enabled. If you are a marketing site, that line costs you nothing. If you sell things, it is the whole ballgame. The Team plan at $2,500 a month on an annual contract bundles Localize, which is a different conversation entirely.

I want to be fair about this. The pricing is scoped sensibly to what the feature actually does, which is content. Webflow is not overcharging for translation. It is just that translation was never the hard part.

Currency and dates are runtime logic, not content

Take one number, 123456.789, and three markets. The browser formats it as "123.456,79 \u20ac" for de-DE, because German swaps the thousands separator and the decimal comma and puts the symbol at the end. For ja-JP it gives "\uffe5123,457", because the yen has no minor unit and the value rounds. For en-IN, limited to three significant digits, it returns "1,23,000", because Indian grouping puts separators in places that will look like a bug to anyone who has not seen it before.

Every one of those came from Intl.NumberFormat, which has shipped in browsers since September 2017 and costs nothing. None of them is a string a translator can produce. A CMS locale field will happily hold "\u20ac1,234.56" as text, that text will render in Germany, and it will stay wrong until a German customer writes in to ask why your prices look American.

Tax display is worse, because it is a branch rather than a format. Showing VAT-inclusive prices in the EU and tax-exclusive prices in the US is a rule that depends on who is looking. Rules want tests. You can write a test against a function. You cannot write one against a CMS field.

Routing stops being an upgrade and becomes a config line

In Astro you declare locales and a defaultLocale, then decide with prefixDefaultLocale whether your English pages live at /about or /en/about. Mapping a locale to its own domain is an object: fr to fr.example.com, es to example.es. That needs server output and a configured site, with no prerendered pages, which is a real constraint worth knowing before you promise it. Reading what the visitor asked for is Astro.preferredLocale, computed from the Accept-Language header against your own locale list.

Webflow puts the same visitor routing behind the $29 Advanced tier, and domain-level routing behind Advanced or Enterprise. The gap is not that one approach works and the other does not. It is that in the first case the behaviour sits in a file you can read, change at 11pm, and diff against last week.

When we moved Stay World Class off Webflow and Xano onto Next.js, NestJS and Supabase, the part that took planning was the 4-stage ETL that mapped legacy platform IDs onto PostgreSQL UUIDs without losing a single relationship. The visible payoff was performance: Lighthouse went from 55.91 to 91 out of 100 and LCP got 77% faster. The quieter payoff was that per-market behaviour stopped being a plan tier.

When staying on the add-on is the right call

One extra language on a marketing site, no store, one currency, no per-market pricing. Nine dollars a month, AI translation included, live this afternoon. I cannot build you anything that beats that, and I would not try. Same for three locales of the same product sold the same way everywhere, where the only difference between markets is which words appear.

The line is crossed when money, tax or per-market behaviour enters the picture. At that point you are writing logic, and logic belongs somewhere it can be reviewed and tested rather than in a translation field. If you are not there yet, stay where you are. The add-on will keep doing its job, and you will know the day it stops.

Sources

Is your platform outgrowing its stack?

Book a call and we'll walk through how we'd approach your platform, with an estimate grounded in a working prototype.