The decisions, in the order they matter
Multi-language is three decisions wearing one label: which languages (each is a content commitment, not a checkbox), URL structure (separate paths or subdomains per language, this drives SEO), and the tooling (WordPress plugin vs routing-level i18n on a custom stack). Teams that decide the tool first usually redo the other two. The SEO layer, hreflang annotations, language-specific sitemaps, consistent canonicals, is where most builds quietly bleed rankings; the technical SEO page covers that layer.
WordPress: WPML vs Polylang, honestly
WPML: the full-featured incumbent, translates everything (posts, plugins, theme strings, e-commerce), integrates with translation services, paid annually. The trade: heavy, and its complexity can bite on large estates. Polylang: lighter, freer core tier, excellent language/taxonomy handling, with some premium features (machine-translation integration) on paid add-ons. The honest chooser: content-heavy multilingual commerce with deep plugin integration → WPML's completeness earns its weight; a leaner editorial site with clean needs → Polylang. Both handle the SEO essentials (hreflang, per-language URLs) when configured correctly, which is the caveat: misconfigured multilingual SEO is worse than monolingual, because it multiplies duplicate-content signals.
Custom stacks: routing-level i18n
Modern frameworks (Next.js, Astro, SvelteKit) handle localization at the routing level, language-prefixed paths, localized builds, content fetched per locale from a headless CMS or structured files. This is the cleanest architecture for content that lives in structured systems, and it avoids the plugin layer entirely, at the cost of building the translation workflow (editors, approvals, syncing) that WPML gives you boxed.
The real cost nobody prices: translation
The plugin is the cheap part. Every page, product, and interface string exists per language, forever, translated by humans (best quality, real cost), machine translation (fast, needs review for anything customer-facing), or a hybrid workflow. Plus locale details: date formats, currencies, RTL layouts where applicable. Budget translation as an ongoing content discipline, not a launch checkbox, and scope it with the build, because the number is meaningless without it. The rate context, the calculator for the build, and the brief naming your languages and markets starts the scoping.