TL;DR: Web app identity surfaces can be internationalised quickly without treating translation as a separate project, according to WorkOS. WorkOS describes how it localized AuthKit into 90 languages in five weeks by combining extracted strings, FormatJS, accept-language negotiation, and LLM translation workflows, showing how quickly web app identity surfaces can be internationalised without treating translation as a separate project. The deeper lesson is that identity UX now extends into localisation, where governance failures show up as broken trust, inconsistent sign-in flows, and unmanaged text drift.
At a glance
What this is: This is a practical localization guide showing how WorkOS moved AuthKit to 90 languages in five weeks using extracted strings, FormatJS, language negotiation, and LLM translation workflows.
Why it matters: It matters because identity teams increasingly own localisation quality at sign-in and sign-up, where text, language direction, and fallback behaviour shape trust, conversion, and support load.
Context
Localization is the practice of adapting an application so text, formatting, and layout match the user's language and regional conventions. In identity surfaces, that means sign-in, sign-up, emails, tooltips, and error messages all need the same language treatment, or the user experience feels fragmented.
The governance gap is not translation alone. Once identity UX extends into multiple languages, teams must control string extraction, fallback logic, right-to-left rendering, and content drift across release cycles. That makes localisation part of IAM experience design, not a separate content exercise.
WorkOS frames its own implementation as a fast path for a web-based product, which is useful as a pattern, but the broader lesson is that scaling identity UX across locales creates operational complexity that most teams underestimate.
Key questions
Q: How should teams localise sign-in and sign-up flows without breaking the user experience
A: Treat locale selection, translated strings, text direction, and font support as one identity experience. Use a single negotiation path, extract every user-facing string into translation resources, and test the rendered result in each locale before release. Identity flows fail when translation is correct but layout, fallback, or formatting is inconsistent.
Q: Why do localisation projects often fail in identity screens even when translation quality is high
A: Identity screens depend on more than language. Labels, placeholders, browser metadata, right-to-left layout, and button sizing all affect whether the flow feels coherent. A translation can be accurate and still create a broken sign-in experience if the surrounding UI, fallback language, or text direction is not governed together.
Q: What are the best practices for extracting text from web app identity components
A: Search for hard-coded strings in JSX, default props, metadata, and helper functions, then move them into translatable resources with stable IDs and descriptions. That lets linting catch new violations, keeps translations close to code, and prevents untranslated text from reappearing as the application changes.
Q: What should product teams do when translated labels overflow identity UI controls
A: Identify the controls most likely to break under longer translations, such as buttons, input labels, and recovery prompts, then redesign those components for variable text length. Teams should measure the longest expected strings, review them in target locales, and reserve room for scripts that expand more than English.
Technical breakdown
Accept-language negotiation and locale selection
Web apps usually learn a user's preferred language from the browser's accept-language header, which can contain multiple tags and quality weights. A locale is more than a language code: it can specify region, script, and fallback preferences. In practice, teams should not hand-parse these values. Library-based negotiation lets the application choose the best supported locale while preserving deterministic fallback behaviour across sign-in and account flows. That matters because identity journeys often span server and client components, emails, and API errors, all of which must resolve to the same locale logic.
Practical implication: define a single locale selection path and reuse it across every identity touchpoint.
FormatJS string extraction and translation IDs
FormatJS separates user-facing strings from component code and associates each string with a stable identifier, description, and translation values. That makes translations co-located with the application and easier to maintain when components change. It also exposes hidden hard-coded strings through linting, which is important because untranslated placeholders, labels, and messages often remain in default parameters or metadata. For identity products, this reduces the chance that a login field, consent prompt, or recovery message falls out of sync with the rest of the experience.
Practical implication: enforce extraction rules so identity text cannot ship outside the translation pipeline.
Right-to-left rendering and cross-locale UI integrity
Supporting additional languages is not only about translated words. Right-to-left languages require directional layout changes, icons that flip correctly, and fonts with broad script coverage. Long translated labels can also overflow buttons, inputs, and narrow controls, which turns localisation into a layout governance problem as much as a language problem. Identity surfaces are especially sensitive here because small components such as sign-in buttons, password prompts, and recovery links carry disproportionate trust weight. When those elements break, the product appears incomplete even if authentication still works.
Practical implication: test identity UI in RTL modes and lengthier translations before release.
NHI Mgmt Group analysis
Identity UX is now a governance surface, not just a design surface: Once sign-in and sign-up flows are localised, the organisation is governing how identity itself is experienced across languages, not merely translating copy. That shifts localisation into the same control plane as authentication consistency, error handling, and trust signalling. The practical conclusion is that identity teams need to treat language coverage as part of user access design.
String extraction is the control that makes localisation scalable: Hard-coded text is the real operational failure mode because it hides inside components, default props, and metadata. When strings are not extracted early, localisation becomes reactive, brittle, and incomplete. The practitioner takeaway is to make translatable text discoverable by design, or the localisation programme will always trail the product.
Locale handling and UI rendering must be governed together: Accept-language negotiation, text direction, and font coverage are separate mechanisms that converge on one user-visible outcome. If they are managed independently, identity flows can authenticate correctly while still feeling broken to the user. The implication is that teams should evaluate localisation as an end-to-end identity experience control, not as a copy management task.
LLM-assisted translation lowers effort but raises consistency risk: Frontier models can accelerate translation volume, yet output quality still depends on context, terminology, and review discipline. That means localisation governance shifts from manual translation throughput to control over terminology drift, fallback behaviour, and exception handling. The conclusion is that speed matters, but consistent identity UX still depends on human-owned review boundaries.
Locale breadth creates hidden operational debt in identity systems: Supporting 90 languages sounds like coverage, but the real burden is maintaining each string, fallback, and UI state over time. The more languages a product supports, the more opportunity there is for inconsistent sign-in, stale copy, and inaccessible layouts. Practitioners should expect localisation debt to behave like any other lifecycle problem: it accumulates unless it is governed continuously.
From our research library:
- AI-related credential leaks surged 81.5% year-over-year in 2025, with the surrounding AI infrastructure leaking 5x faster than core LLM providers, according to the State of Secrets Sprawl 2026.
What this signals
Locale coverage is a lifecycle problem: Once an identity product supports many languages, translation files, fallback logic, and UI rendering all need the same governance discipline as any other release artifact. Teams that treat localisation as a one-time project tend to accumulate drift in sign-in prompts, recovery flows, and transactional messaging.
Identity teams should expect translation quality to be only one part of the control set. The harder operational work is proving that every locale still renders correctly across auth surfaces, email templates, and browser metadata after each code change.
For practitioners
- Define a single locale resolution path Use one locale-selection mechanism for sign-in pages, app chrome, transactional emails, and API-facing messages so every identity touchpoint resolves the same preferred language and fallback order.
- Extract every user-facing string Move labels, placeholders, error text, tooltips, and email content into translatable resources so developers stop shipping hard-coded identity messages in component code and default parameters.
- Test right-to-left identity flows Validate chevron direction, layout spacing, and font coverage in RTL locales before release, because sign-in and recovery screens fail visibly when directional assumptions are wrong.
- Audit long-label overflow risk Compare translation length against the base language and rework narrow controls where translated labels push buttons, forms, or prompts beyond their intended layout.
- Set human review boundaries for LLM output Use LLM translation workflows for speed, but route terminology, fallback strings, and customer-facing exceptions through manual review to prevent drift in identity-critical wording.
Key takeaways
- Localization changes identity UX from a single-language assumption into a governed multi-locale operating model.
- The main failure modes are untranslated strings, inconsistent fallback behaviour, and layout breakage in right-to-left or long-text languages.
- Teams that want scalable identity localisation need one locale path, extracted strings, and release-time testing across target languages.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
OWASP ASVS, NIST SP 800-53 Rev 5, NIST CSF 2.0 and NIST Zero Trust (SP 800-207) set the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| OWASP ASVS | V3 — Web Frontend Security | Locale rendering and translated UI states affect identity screen integrity and consistency. |
| Recommendation — Verify translated auth screens for layout, input, and rendering issues across supported locales. | ||
| NIST SP 800-53 Rev 5 | AU-3 — Content of Audit Records | Locale selection and translation changes need traceable change history in production identity flows. |
| Recommendation — Log locale-selection and translation updates so identity changes remain reviewable and attributable. | ||
| NIST CSF 2.0 | PR.AA-05 — Access Permissions, Entitlements and Authorizations | Identity UX localisation influences how users understand and interact with access-bearing flows. |
| Recommendation — Align translated identity prompts with authorisation flow design so users receive consistent access messages. | ||
| NIST Zero Trust (SP 800-207) | Section 2.3 — Continuous Verification | Consistent locale handling supports trustworthy identity interactions across access sessions. |
| Recommendation — Apply consistent locale handling wherever access decisions depend on user-facing identity interactions. | ||
Key terms
- Localization: Localization is the process of adapting a digital experience so it works naturally for a specific language, region, and culture. In identity programmes, it covers sign-in text, recovery messages, email content, directionality, and formatting so the access journey remains clear and trustworthy for each user group.
- Accept-Language: Accept-Language is an HTTP request header that tells an application which languages the user prefers. Identity systems can use it to select the best supported locale automatically, then fall back to a broader language variant when an exact match is unavailable.
- Right-to-Left Rendering: Right-to-left rendering is the layout handling required for languages that read from the right side of the screen toward the left. In identity UX, it affects page direction, icons, spacing, and control alignment, and failures are often visible immediately to users.
- String Extraction: String extraction is the practice of identifying user-facing text in code and moving it into translatable resources. For identity products, it prevents hard-coded labels, error messages, and placeholders from bypassing translation workflows and creating inconsistent user experiences.
Deepen your knowledge
NHI governance, agentic AI identity, and machine identity lifecycle are core topics in our NHI Foundation Level course, the industry's only accredited NHI security programme. If you are building or maturing an IAM programme, it is worth exploring.
Published by the NHIMG editorial team on June 7, 2026.
Updated on October 7, 2026.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org