Home / Blog / Web app localization: Best practices and workflow

Web app localization: Best practices and workflow

Product localization
Helmut Juskewycz
CEO & Founder of LingoHub

Last updated

8/7/2026

Read time

6 min

Best for

Managers

Quality badge displayed across a grid, illustrating consistent localization quality across multilingual content and web app localization.

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, or fr-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.

LingoHub project tab displaying project language settings, with English as the source and German, French, and Russian as target languages, with status bars.
Repository synchronization connects localization progress directly with the development workflow.

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.

LingoHub translation editor showing placeholders, a context image, and translation history.
Translators can review placeholders, context images, and translation history alongside the source string.

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.

LingoHub translation editor showing an automated character-length quality warning.
Automated quality checks flag issues such as character-limit violations before release.

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.

LingoHub project dashboard showing localization progress and review status for Arabic, German, and Italian.
Language-level progress helps teams decide which locales are ready for review or release.

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