
Table of content
A translated interface is not necessarily a localized web application.
Your app can display every sentence in another language and still frustrate users with broken layouts, incorrect plural forms, unfamiliar date formats, truncated buttons, or a checkout flow that does not fit the local market.
Effective web app localization starts much earlier than translation. It requires an internationalized codebase, a reliable way to manage strings, context for translators, automated quality checks, and a workflow that keeps translations aligned with every product release.
This guide explains how to localize a web app from planning to production. It covers string architecture, variables and plural forms, locale-sensitive data, right-to-left layouts, continuous localization, quality assurance, and release measurement.
What is web app localization?
Web app localization is the process of adapting a browser-based application for users in a specific language or market.
It includes translating interface text, but it goes further. A localized web app also handles:
dates, times, numbers, currencies, and units;
names, addresses, and form fields;
plural forms and grammatical variations;
text expansion and responsive layouts;
right-to-left scripts;
images, icons, colors, and cultural references;
legal, privacy, payment, and market-specific requirements;
support content, emails, notifications, and error messages.
The goal is to make the product feel natural and usable in each target market.
Internationalization vs. localization vs. translation
These terms describe different parts of the process.
Term | Meaning | Example |
Internationalization (i18n) | Preparing the product and codebase for multiple locales | Moving interface text out of source code and supporting local date formats |
Localization (l10n) | Adapting the complete experience for a language or market | Translating the UI, adjusting layouts, currencies, forms, and local requirements |
Translation | Converting written content from one language into another | Translating “Create account” into German |
Internationalization is the foundation. If strings are hardcoded, sentences are assembled from fragments, or layouts only fit English, translators cannot solve the underlying product problems.
Web app localization vs. website and mobile app localization
A marketing website, a web application, and a mobile app may share content, but their localization requirements differ.
Area | Website | Web application | Mobile application |
Typical content | Pages, articles, landing pages | Dynamic interfaces, dashboards, forms, notifications | Native or hybrid screens and store listings |
Main localization unit | Page or CMS entry | Component, message, or resource string | Platform-specific resource string |
Release process | CMS publishing | Product and CI/CD workflow | App build, review, and store release |
Key technical risks | SEO, metadata, internal links | Variables, state, permissions, dynamic content | Screen constraints, platform formats, store metadata |
This guide focuses on dynamic web applications, including SaaS products, customer portals, dashboards, and browser-based tools.
1. Define markets, languages, and locales
Do not begin by asking, “Which languages can we translate?” Start with, “Which users and markets should the product serve?”
A language does not always equal a market. English for the United States may require different terminology, currencies, legal copy, and date formats than English for the United Kingdom. French for France may differ from French for Canada.
Before development begins:
Review existing users, product analytics, sales demand, and support requests by market.
Estimate the amount and type of content that requires localization.
Identify market-specific product, payment, legal, and support requirements.
Select precise locale identifiers, such as
de-DE,de-AT, orfr-CA.Decide which locale acts as the fallback when a translation is missing.
Define who owns terminology, approvals, releases, and local performance.
Use consistent locale identifiers across your code, resource files, analytics, and localization platform. Our guide to ISO 639 language codes explains the language component of these identifiers.
2. Internationalize the codebase before translating
Internationalization removes assumptions about one language or market from the product architecture.
Use Unicode throughout the stack
Use UTF-8 for source files, APIs, databases, and HTML. Test that data remains intact from user input through storage and display. Unicode support should include search, sorting, validation, export files, and integrations (not merely visible interface text).
Keep translatable text out of source code
Do not hardcode user-facing content inside components or business logic. Store it in structured resource files or another localization layer.
Instead of using the English sentence as a permanent identifier, use stable keys that describe the message and context:
{
"checkout.payment_failed": "Your payment could not be processed.",
"checkout.retry_button": "Try again"
}
Good keys remain stable when the source text changes. They also help developers and translators understand where a message belongs.
Do not build sentences from fragments
Word order changes between languages. A sentence assembled from separate strings may work in English but become impossible to translate naturally elsewhere.
Avoid structures such as:
"You have " + count + " new messages"
Provide the complete message as one translatable unit. This allows the translator to change the order of words and variables.
Design a fallback strategy
Decide what happens when a translation is unavailable.
A fallback locale can prevent an empty interface, but it should not hide missing translations indefinitely. Log missing keys, surface them during development, and include them in release checks.
3. Handle variables, plurals, and dynamic content safely
Web applications contain names, counts, dates, prices, links, and other values that change at runtime. These variables must remain intact without forcing every language into English grammar.
Use named placeholders that reveal their purpose:
Welcome back, {userName}.
Avoid placeholders such as {0} or %s when the format supports descriptive names. Translators can work more confidently when they know whether a value represents a name, number, date, or product.
Plural rules also vary by language. English generally distinguishes between “one” and “other,” while other languages may require additional forms.
An ICU-style message keeps the complete sentence and its plural variants together:
{count, plural,
=0 {No files uploaded}
one {# file uploaded}
other {# files uploaded}
}
The Unicode ICU MessageFormat documentation explains why complete messages, placeholders, and language-specific plural rules should be handled as one unit.
Protect variables during translation with automated checks. A missing or modified placeholder can cause incorrect text and runtime errors.
4. Format dates, numbers, currencies, and units by locale
Do not ask translators to manually rewrite dynamic dates or prices. Format structured values at runtime using the user’s locale.
JavaScript’s internationalization API can format dates, numbers, currencies, lists, relative time, and plural rules:
const price = new Intl.NumberFormat(locale, {
style: "currency",
currency,
}).format(amount);
const date = new Intl.DateTimeFormat(locale, {
dateStyle: "medium",
}).format(createdAt);
The Intl documentation on MDN provides the available constructors and locale options.
Test at least the following variables:
decimal and thousands separators;
currency symbol and placement;
12-hour and 24-hour time;
calendar and date order;
measurement units;
negative numbers and percentages;
time zones and daylight-saving changes;
names, addresses, phone numbers, and postal codes.
Form fields need the same attention. Naming conventions differ widely between cultures, so avoid assuming that every person has a Western-style first name, middle name, and family name. The W3C provides practical guidance on designing forms and databases for personal names around the world.
Store the underlying data in a consistent machine-readable form. Apply the localized presentation only when displaying it to the user.
5. Build layouts for text expansion and different scripts
Translated text does not occupy a predictable amount of space. A short English label may become much longer in German, Finnish, or French. Other languages may use a different script, writing direction, or line-breaking behavior.
Design interfaces that can adapt:
avoid fixed-width containers for text;
allow buttons and navigation items to grow;
avoid embedding text in images;
support multi-line labels where appropriate;
test long names, values, and validation messages;
use fonts that contain every required character;
confirm that truncation does not remove essential meaning.
Support right-to-left layouts intentionally
Arabic, Hebrew, and other right-to-left languages need more than right-aligned text.
Set the document or component direction correctly, and prefer CSS logical properties, such as margin-inline-start, over physical properties, such as margin-left. Mirror directional navigation when appropriate, but do not flip universal symbols or media controls without checking their meaning.
For the technical implementation, follow the W3C guidance on structural markup and right-to-left text in HTML, including the use of the HTML dir attribute and logical CSS properties.
Test mixed-direction content such as an Arabic sentence containing a phone number, email address, product code, or Latin brand name. Our guide to right-to-left and left-to-right localization covers the design implications in more detail.
6. Choose a localization approach for your framework
React, Vue, Angular, Next.js, and other frameworks have established internationalization libraries and patterns. Choose an actively maintained solution that supports the requirements of your product.
Evaluate whether it can handle the following:
plural and select rules;
named placeholders;
locale-aware date and number formatting;
resource-file formats supported by your workflow;
namespaces or modules for large applications;
lazy loading and code splitting by locale;
server-side rendering where required;
fallback languages;
missing-key detection;
TypeScript or compile-time checks;
integration with your testing and build process.
Treat each component as a localization unit. Keep related messages together and load only the resources required for the current part of the application. This makes large translation catalogs easier to maintain and can reduce unnecessary client-side payloads.
Do not choose a library based only on how quickly it translates a “Hello world” example. Test it against your hardest cases: nested variables, plurals, server rendering, validation messages, rich text, and locale switching.
7. Create a continuous localization workflow
A web app changes continuously. Localization must keep pace with new features, revised interface copy, and bug fixes.
A workflow could look like this:
Source change
→ extract or update resource files
→ sync new and changed strings
→ translate and review with context
→ run linguistic and technical checks
→ return approved resources to the repository
→ test and deploy
Avoid sending spreadsheets and resource files manually between developers, translators, and product managers. Manual handoffs make it difficult to identify the latest version and easy to overwrite completed work.
Instead, connect localization to the development workflow:
Developers add or update resource strings in a feature branch.
Repository changes synchronize with the localization platform.
New strings are assigned to the appropriate workflow and locale.
Translators receive context, terminology, and visual references.
Automated checks identify broken placeholders, markup, and length issues.
Approved translations return through a pull request or controlled sync.
Automated tests validate resources before deployment.
Our localization workflow automation connects translation, review, quality checks, and delivery. Teams using Git can also connect resource files through the GitHub integration instead of moving files manually.

Keep code and translation responsibilities clear. Developers own internationalization and technical integrity. Linguists own language quality. Product and market owners decide whether the complete localized experience is ready to release.
8. Give translators context and terminology
An isolated string rarely contains enough information to produce the right translation.

Consider the English word “Save.” It could mean saving a document, saving money, or protecting an item for later. The correct translation may change depending on the action.
Provide:
a description of where the string appears;
screenshots or an in-context preview;
character limits when they are genuine design constraints;
information about variables and markup;
the user’s goal and the action triggered;
approved product terminology;
tone, formality, and audience guidance;
previous translations and related messages.
Glossaries help teams define approved terminology, while localization style guides document voice, formality, and language-specific rules. A translation memory can reuse previously approved content, but every match should still be evaluated in its new context.
9. Test localized web applications before release
Localization testing should verify language, layout, functionality, and market fit.
Pseudo-localization
Pseudo-localization replaces source text with altered characters and expanded strings before translation begins. It helps teams detect:
hardcoded text;
clipped or fixed-width components;
unsupported characters;
strings missing from resource files;
incorrect concatenation;
assumptions about writing direction.
Run pseudo-localization early in development rather than waiting for translations to be completed.
Automated resource checks
Validate the following:
required keys exist in every release locale;
placeholders match the source message;
resource files parse correctly;
markup remains valid;
duplicate or obsolete keys are controlled;
translations respect genuine length constraints.
Our automated quality checks can flag issues involving placeholders, markup, spacing, terminology, duplication, and text length during translation.

Linguistic and in-context review
A linguist should review the translation inside the running product. A sentence that looks correct in a spreadsheet may feel wrong beside a button, error state, or form field.
Review terminology, grammar, tone, clarity, and consistency. Confirm that the interface helps the user complete the intended task.
Functional and visual testing
Test complete flows in every priority locale:
registration and login;
onboarding;
forms and validation;
search and filtering;
payments and invoices;
transactional emails and notifications;
permissions and error states;
exports and generated files;
help and support links.
Include different devices, browsers, screen sizes, long strings, RTL layouts, and slow network conditions.
10. Release by locale and measure the result
Not every language has to launch at the same time. A staged rollout reduces risk and gives the team space to respond to real user feedback.

Before launch, define what success means for each market. Useful metrics include:
activation and onboarding completion;
conversion rate;
task completion and feature adoption;
support requests by locale;
translation defects and missing-key errors;
retention and churn;
page or screen abandonment;
time required to localize each release.
Monitor qualitative feedback as well. Local users can reveal terminology, cultural, and workflow problems that aggregate analytics will not explain.
Treat localization as part of ongoing product development. New source copy, components, and features should automatically enter the same controlled workflow as the initial release.
Common web app localization mistakes
Avoid these recurring problems:
Starting translation before internationalizing the codebase.
Hardcoding interface text inside components.
Building sentences from translated fragments.
Treating every language as if it had English plural rules.
Using vague numbered placeholders without context.
Formatting dates, prices, and units as translated text.
Designing fixed-width interfaces that only fit English.
Treating RTL support as simple right alignment.
Sending files manually without clear version control.
Giving translators strings without screenshots or descriptions.
Testing translations outside the running application.
Using machine translation for user-facing content without suitable review and quality controls.
Launching a language without local support, legal, or product readiness.
Measuring localization only by the number of translated words.
Web app localization checklist
Before releasing a new locale, confirm:
[ ] The target market and locale are clearly defined.
[ ] All user-facing strings are externalized from source code.
[ ] UTF-8 works across the complete data flow.
[ ] Strings are complete messages rather than sentence fragments.
[ ] Variables use clear names and remain protected during translation.
[ ] Plural and grammatical variations follow locale-specific rules.
[ ] Dates, numbers, currencies, time zones, and units are formatted at runtime.
[ ] The interface supports text expansion and different scripts.
[ ] RTL behavior has been tested where required.
[ ] Resource files synchronize with the development workflow.
[ ] Translators receive screenshots, descriptions, terminology, and style guidance.
[ ] Automated checks validate placeholders, markup, keys, and file structure.
[ ] A linguist has reviewed translations inside the product.
[ ] Critical user flows pass functional and visual testing.
[ ] Missing translations have a documented fallback and reporting strategy.
[ ] Analytics can segment adoption, conversion, and defects by locale.
Where a translation management system fits
A translation management system does not replace internationalization or product ownership. It connects the people and assets involved once translatable content leaves the codebase.
For a continuously developed web application, look for:
repository, API, and workflow integrations;
support for your resource-file formats;
branching and controlled synchronization;
roles, assignments, reviews, and status tracking;
glossary, style guide, and translation-memory support;
screenshots and contextual information;
placeholder, markup, terminology, and length checks;
reporting and a complete history of changes.
Our translation management system buyer’s checklist explains how to evaluate these capabilities against your team and release process.
LingoHub brings repository synchronization, translation workflows, language assets, collaboration, and quality checks into one environment. This helps developers and linguists work on the same release without relying on disconnected files and manual handoffs.
Explore web app localization with LingoHub.
Frequently asked questions
What is the difference between web app localization and translation?
Translation changes written content from one language into another. Web app localization adapts the complete product experience, including interface text, formats, layouts, variables, forms, workflows, and market-specific requirements.
When should web app localization begin?
Internationalization should begin during product architecture and component development. Translation can start once the source content and workflow are stable enough, but localization requirements should influence the product before the first translated release.
Which content should be localized in a web application?
Localize visible interface text, validation and error messages, onboarding, emails, notifications, help content, generated documents, metadata, images with text, and relevant legal or payment information. Also adapt formats and workflows that differ by locale.
How do you manage web app translations in a CI/CD workflow?
Store translatable content in structured resource files, synchronize changes with a localization platform, run translation and review workflows, return approved resources through your repository, and validate them during testing and builds.
How should a web app handle missing translations?
Use a documented fallback locale to avoid empty interfaces, but log and monitor missing keys. Missing translations should fail development or release checks when they affect critical experiences.
Do web applications need different code for every language?
Usually not. An internationalized application separates localizable resources and locale-specific formatting from the core business logic. Some markets may still require different components or flows for legal, payment, cultural, or product reasons.
Related articles

8 tips to rule web design for a global website
How to approach the design for a global resource, what to consider and what to focus on? You will find all this and more inside the article.

Web app localization: Best practices and workflow
Learn how to localize a web app with internationalization, string management, RTL support, continuous localization, QA, and release-ready workflows.

The role of languages in web development teams #InsideSaaS
Discover SaaS localization best practices, learn the benefits of multilingual software, and explore practical strategies for translating products.
