Testing web applications

How to test a multilingual website: locales, currencies, dates, URLs, and fallbacks

A multilingual website is not simply the same page with different words. Changing language can also change currency, date formatting, navigation, page URLs, and the space required by a label. This guide explains how to cover those differences with shared automated scenarios instead of cloning the entire suite for every language.

Why one copy of every test per language breaks down

Consider the same checkout in English, Czech, and Slovak. With three copied tests, every checkout change has to be implemented three times. Before long, one copy uses the new delivery flow, another still targets the old screen, and the third runs successfully while asserting a different business outcome.

Language and region are also easy to conflate. English for the United Kingdom may use a different currency, time zone, and date format from English for the United States. A locale therefore represents an agreed combination of linguistic and regional conventions, not merely the label displayed in a language switcher.

Share the scenario and control the locale matrix

Separate behaviour from localised data

Keep the checkout steps and expected business outcome in one scenario. Supply the language, region, currency, expected URL, and necessary text values through configuration. The test then receives different inputs without duplicating the logic that defines success.

Find controls using stable semantics or an agreed test identifier. A selector tied to the English word “Continue” fails in Czech even when the application is working correctly. The broader guide to preparing a website for test automation explains the other conditions that keep a scenario maintainable.

Check more than translated labels

Playwright can emulate browser locale and time zone. That setting does not necessarily switch every application: the product may derive language from the URL, account, cookie, or a server header. Set the same inputs that the real product uses, then assert the visible output and business outcome.

Run combinations according to risk

The primary locale can receive broad coverage on regular changes. Other languages can run critical journeys plus checks for their specific risks, such as an address form, currency formatting, or a right-to-left layout. As with a cross-browser test matrix, coverage should reflect actual usage, supported markets, and the impact of a defect.

A short multilingual smoke suite can run at a suitable point in CI/CD. A wider matrix may run overnight or before release so that it does not delay every small change.

What functional automation cannot judge

An automated check can expose missing copy, a wrong currency, a broken URL, or text overflowing its container. It cannot judge whether a translation sounds natural, uses the right tone, or carries the intended cultural meaning. Linguistic review and an SEO audit of localised pages—including hreflang and indexation—are separate activities outside this functional test.

What you gain

Next step

List the supported language-and-region combinations. For each, record the critical journey, currency, date format, URL rule, and expected fallback. Use that information to create one shared scenario and run it against a small matrix selected by risk.

Related topics

You might also be interested in

Catch bugs before they reach users

End-to-end tests of key scenarios can run automatically in CI/CD to catch bugs before they reach customers.