Localization is one of those things that sounds simple until you try to do it well. "Just translate the website" turns into questions about which markets to enter first, how to handle right-to-left languages, what to do about date formats, and whether your checkout flow even works with non-Latin characters.
I've seen companies spend months localizing into 20 languages and getting zero traction, and I've seen others pick 3 languages strategically and triple their international revenue. The difference is almost always the strategy, not the translation quality.
This guide walks through building a localization strategy from scratch, with practical steps and honest trade-offs at each stage.
Step 1: Pick your markets before you pick your languages
The most common mistake is starting with languages instead of markets. "Let's add Spanish" sounds reasonable until you realize you need to decide between Spain Spanish and Latin American Spanish, that payment methods differ between Mexico and Argentina, and that your pricing needs to work in both euros and pesos.
Start with market selection based on data you already have:
- Where is your traffic already coming from? Check Google Analytics for countries with meaningful organic traffic or sign-up attempts. If you're getting 500 visits a month from Germany but your site is English-only, there's latent demand.
- Where are your competitors succeeding internationally? If a competitor has a German or Japanese version of their product, they've already validated that market for you.
- Where is your product a good cultural fit? A task management tool works globally. A tax compliance product needs heavy adaptation per jurisdiction. Know the difference.
- What's your payment infrastructure? Stripe covers 46 countries. If your payment processor doesn't support a market, localization won't help you sell there.
Rank your top 3-5 markets by a combination of existing demand signals, competitive validation, and implementation feasibility. Then determine which languages those markets need.
Step 2: Audit what needs localizing (it's more than text)
Translation is maybe 40% of localization. The rest is everything that changes between markets:
Content and UI
- All user-facing strings (buttons, labels, error messages, notifications)
- Marketing pages (homepage, pricing, feature pages, blog if relevant)
- Documentation, help center, FAQ
- Email templates (transactional and marketing)
- In-app onboarding flows
Formatting and conventions
- Date formats (DD/MM/YYYY vs MM/DD/YYYY vs YYYY-MM-DD)
- Number formatting (1,234.56 vs 1.234,56)
- Currency display and positioning (€100 vs 100 € vs $100)
- Address formats (they vary wildly between countries)
- Phone number formats
- Measurement units (metric vs imperial)
Design and layout
- Text expansion (German text is typically 30% longer than English)
- Right-to-left (RTL) support for Arabic, Hebrew, Farsi
- Font support for CJK characters, Thai, Hindi scripts
- Color and imagery associations (colors carry different meanings across cultures)
Legal and compliance
- Privacy policies per jurisdiction (GDPR, LGPD, PIPA)
- Terms of service adaptations
- Cookie consent requirements
- Tax handling (VAT, GST, sales tax)
Create a spreadsheet that maps every localizable element against your target markets. This becomes your scope document. Without it, you'll discover gaps in production.
Step 3: Choose your i18n architecture
Before translating anything, your codebase needs to support multiple languages. This is internationalization (i18n), the engineering foundation that localization builds on.
The key decisions:
String extraction method. Use an i18n library that extracts translatable strings into key-value files. For React, react-intl or react-i18next. For Next.js, the built-in i18n routing plus next-intl. For backend services, simple JSON/YAML files work. For implementation details, see the Langbly API documentation.
URL structure. Three options: subdirectories (example.com/de/), subdomains (de.example.com), or separate domains (example.de). Subdirectories are easiest to implement and maintain, and they consolidate SEO authority. Go with subdirectories unless you have a specific reason not to. Our multilingual SEO guide covers the SEO implications of each approach.
Content management. Static strings (UI labels) live in code. Dynamic content (blog posts, product descriptions) needs a CMS that supports multi-language content. If you're using a headless CMS, check that it supports localized fields natively.
Locale detection. How do you decide which language to show? Options: browser language header, IP geolocation, user preference stored in profile, URL path. Best practice: default based on browser language, let users override, and remember their choice.
Step 4: Set up your translation workflow
This is where most teams either overengineer or underengineer. Here's a pragmatic workflow for different stages:
Stage 1: Getting started (1-3 languages, small team)
Keep it simple. Extract strings into JSON files, translate them using a translation API or freelancer, review with a native speaker, and deploy. No fancy tooling needed.
A translation API like Langbly can handle the initial translation. The quality of context-aware translation is good enough for UI strings and straightforward content. Have a native speaker review the output before shipping. This gets you to market fast without a big upfront investment.
Stage 2: Scaling (4-10 languages, regular updates)
At this point, managing JSON files manually becomes painful. Introduce a translation management system (TMS) like Crowdin, Lokalise, or Phrase. These tools:
- Sync with your code repository (pull new strings, push translations)
- Provide a translation interface for translators
- Track translation progress per language
- Support translation memory (reuse previous translations for similar strings)
- Integrate with machine translation APIs for first-pass translation
The workflow becomes: developer adds new strings, TMS detects them, machine translation generates a first draft, human translator reviews and corrects, approved translations sync back to code.
Stage 3: Mature (10+ languages, continuous deployment)
At scale, you need continuous localization. New features ship with translations ready on day one. This requires:
- CI/CD integration with your TMS
- Automated quality checks (missing translations, placeholder mismatches, character length violations)
- Glossary management for consistent terminology
- Style guides per language
- Dedicated localization manager or team
Step 5: Decide on translation quality tiers
Not everything needs the same translation quality. Being honest about this saves money and time:
| Content type | Quality tier | Approach | Cost |
|---|---|---|---|
| Legal docs, terms | Highest | Professional human translation | $0.10-0.20/word |
| Marketing pages, homepage | High | Machine translation + human post-editing | $0.04-0.08/word |
| UI strings, notifications | Medium | Machine translation + native speaker review | $0.01-0.03/word |
| User-generated content, reviews | Acceptable | Machine translation only | $0.002-0.004/word |
| Internal tools, admin panels | Basic | Machine translation, no review | $0.002/word |
This tiered approach means you're spending $0.15/word on your terms of service (where errors have legal consequences) but only $0.002/word on translating user reviews (where "good enough" is genuinely good enough).
For context-aware machine translation costs, check our pricing page. At $1.99-$3.80 per million characters, even the "machine translation + human review" tier is extremely affordable.
Step 6: Handle locale-specific formatting
This is the part teams forget until a customer in Germany reports that "1,234.56" looks wrong (it should be "1.234,56"). Use the Intl API in JavaScript for formatting:
// Numbers
new Intl.NumberFormat('de-DE').format(1234.56) // "1.234,56"
new Intl.NumberFormat('en-US').format(1234.56) // "1,234.56"
// Dates
new Intl.DateTimeFormat('de-DE').format(new Date()) // "18.2.2026"
new Intl.DateTimeFormat('en-US').format(new Date()) // "2/18/2026"
// Currency
new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' })
.format(99.99) // "99,99 €"
Context-aware translation APIs like Langbly handle some of this automatically. When translating text that contains numbers or dates, the output adapts formatting to match the target locale. This is one area where NMT engines like Google Translate consistently fall short, as covered in our Google Translate accuracy analysis.
Step 7: Measure what matters
Localization is an investment, and you should track its return. Key metrics:
- Traffic by language/region: Is localized content attracting visitors? Use GA4 segments by language.
- Conversion rate by locale: Does your localized checkout convert as well as English? If not, investigate where users drop off.
- Support tickets by language: A spike in support requests from a newly localized market often signals translation quality issues or missing localizations.
- Time to localize new features: As your process matures, this should decrease. If it's increasing, your workflow has scaling problems.
- Revenue per localized market: The ultimate metric. Is each localized market generating enough revenue to justify the ongoing investment?
Set a target for each new market: "German localization should reach X in monthly revenue within 6 months, or we'll re-evaluate." This prevents the common trap of localizing into languages that don't generate returns.
Common mistakes to avoid
Localizing everything at once. Start with your core conversion path: landing page, signup, pricing, and the main product experience. Blog posts and documentation can follow later.
Ignoring text expansion. German, Finnish, and Russian text is typically 20-35% longer than English. If your UI is pixel-perfect in English, it will break in German. Design with flexible layouts from the start.
Hardcoding strings. Every user-facing string should be extracted to a translation file. That includes error messages, tooltips, placeholder text, image alt text, and email subject lines. Every hardcoded string you miss is a localization bug waiting to happen.
Forgetting about SEO. Each localized version of a page needs its own URL, unique meta tags, and hreflang annotations. Without hreflang, Google may show the wrong language version to users, or treat your localized pages as duplicate content.
Skipping the native speaker review. Machine translation has gotten remarkably good, but it still makes mistakes that only a native speaker would catch. Budget at least a quick review pass for customer-facing content.
Over-investing in low-traffic languages. It's tempting to "be global" and support 40 languages. But if 80% of your international revenue comes from 5 languages, focus your quality efforts there. The long tail can run on machine translation with lighter review.
A realistic timeline
| Phase | Duration | What happens |
|---|---|---|
| i18n setup | 1-2 weeks | Extract strings, set up i18n library, URL structure, locale detection |
| First language | 1-2 weeks | Translate core path, test thoroughly, ship to production |
| Learn and iterate | 2-4 weeks | Monitor metrics, fix issues, gather feedback from native speakers |
| Scale to 3-5 languages | 2-4 weeks | Apply learnings, set up TMS if needed, translate remaining languages |
| Ongoing | Continuous | New features ship with translations, quality reviews, market performance tracking |
Total time to first localized market: 2-4 weeks for a typical SaaS product. If it's taking longer than that, you're probably overengineering the initial setup.
Bottom line
Localization strategy boils down to: pick the right markets, scope what needs localizing, build the engineering foundation, set up a repeatable workflow, and measure results. Start small, learn from your first market, and scale from there.
The translation part, which feels like the hard part, is actually the most solved problem in the chain. Context-aware translation APIs handle it at a fraction of what it cost even two years ago. The real challenge is everything around the translation: the formatting, the design adaptation, the market-specific content, and the ongoing maintenance.
Get those right, and translation becomes a line item instead of a bottleneck.
Related reading
- Software localization: a developer's guide
- Multilingual SEO: how to rank in multiple languages
- Translation APIs for e-commerce
- Is Google Translate accurate enough for localization?
- Best translation API in 2026. Compare providers on quality, pricing, and language coverage.