Services

How to Build a Multilingual Website: From hreflang to Translation Workflow

2026.08.27 · 65 views
How to Build a Multilingual Website: From hreflang to Translation Workflow

The first locale eats 65% of the budget, the second is cheap: three pricing tiers, a 90-day roadmap, and five real traps

Share:

One English catalog, 13x the overseas clicks

A Taiwanese automation-equipment maker had 42 product pages and 18 technical documents in Chinese. Exports were 55% of revenue, yet overseas visitors landed on Chinese-only pages. Before we started, Search Console showed 3,100 monthly impressions from outside Taiwan and 47 clicks. Ninety-two days after the English and Japanese versions launched, non-Taiwan clicks hit 610. Content quality never changed. What changed was having a separately indexable locale version.

When it fits, and when it doesn't

Do it now if

  • Exports or cross-border sales are 20%+ of revenue and your Chinese content is mature
  • You're a B2B manufacturer whose buyers search English spec keywords
  • You already have overseas distributors or a defined foreign customer base

Don't do it yet if

  • Your Chinese site hasn't proven traffic or conversion — don't duplicate the problem
  • Nobody can maintain foreign content long-term (updates are a permanent cost)
  • The target market lacks regulatory approval, payment rails, or support-hour coverage

Alternatives matrix

Option Entry cost Upside Downside
Live translation plugins (Weglot-class) NT$500–5,000/month Live in a week, no code changes Client-side replacement, limited SEO value
CMS multilingual plugins (WPML/Polylang) NT$30,000–80,000 Mature ecosystem, editor-friendly Locks you to WordPress, performance cost
Framework i18n + TMS (next-intl/Laravel + Crowdin) NT$60,000–350,000 Best performance and SEO, unlimited locales Heaviest upfront refactor
Separate ccTLD sites NT$150,000+ per site Strongest geo signal Authority starts at zero; ops multiplies per site

Full process breakdown (five phases, 26–48 working days)

  • 1. Strategy and audit (3–5 days): crawl with Screaming Frog, build a "locale matrix" in Notion (which pages, how many languages, what word count), decide the URL strategy. Deliverables: matrix, word-count estimate.
  • 2. String extraction and i18n refactor (5–10 days): pull hardcoded Chinese into message keys, adopt next-intl or Laravel Localization, build locale routing and fallbacks. Deliverables: en.json skeleton, staging environment.
  • 3. Translation and review (10–20 days, parallel with dev): push language files to Crowdin, machine-translate as a baseline, native translators post-edit while glossary and translation memory build up. Deliverable: complete language files.
  • 4. Localized UI and SEO (5–8 days): fix layout overflow, currency and date formats, font subsetting; implement bidirectional hreflang, x-default, multilingual sitemaps. Google requires language versions to list each other — annotations without return links are ignored (Google Search Central, checked 2026-08-27). Deliverable: a build passing the Merkle hreflang tool.
  • 5. Acceptance and handover (3–5 days): native-speaker UAT, per-locale Search Console submission, handover of the update SOP. Deliverables: acceptance checklist, operations manual.

Real cost breakdown (TWD)

  • Entry NT$60,000–120,000: one locale on an existing site, 20–30 static pages, subdirectory architecture, complete hreflang and sitemap
  • Standard NT$150,000–350,000: 3–4 locales, multilingual CMS fields, switcher UX, currency and timezone localization, automated translation pipeline
  • Enterprise NT$400,000–900,000: 5+ locales, two-way TMS sync, multi-region domains, localized legal pages, multi-currency payments

Hidden costs people forget

  • Professional translation: ZH→EN roughly NT$1.5–3.5/character, ZH→JA roughly NT$2–4/character
  • Crowdin paid plans start at US$59/month (Pro) and US$179/month (Team) — official pricing page, checked 2026-08-27, excluding tax
  • Machine-translation API usage (DeepL / Google Cloud Translation), billed per character
  • Recreating text baked into images: NT$300–800 each; catalog sites routinely exceed 50
  • Japanese/Korean font subsetting and CDN bandwidth (Cloudflare's free tier suffices)
  • Annual maintenance: 2–4 hours per locale per month for content sync

Implementation reality vs. client expectation

  • Expectation: one more language is 20% more work. Reality: 60–70% of the first locale's cost is refactoring and string extraction. Locales two and three only need translation, with marginal cost dropping to 15–25%.
  • Expectation: Google will figure out this is the English version. Reality: the documentation is blunt — Google does not use hreflang or the HTML lang attribute to detect language, it uses algorithms. hreflang declares "localized variants of the same content."
  • Expectation: once translation is done, we're finished. Reality: the long-term cost is content governance — who owns the source of truth, how fast foreign versions sync. Without an SOP you'll have three contradictory sites within two years.

Common traps and how to dodge them

  • Forced IP-based redirects: a Taiwanese client travelling in Japan gets locked into the Japanese version. Use a suggestion banner with user override, and set x-default.
  • Missing hreflang return links: A points to B, B doesn't point back, the whole set is void. Run a scripted bidirectional diff before launch.
  • Shipping raw machine translation site-wide: brand trust dies once. Use MT only for repetitive UI strings; key pages get human post-editing.
  • Strings never fully extracted: halfway through translation you find error messages, email templates, and PDF reports were missed. Do a complete sweep in Phase 2.
  • Overflow and untranslated meta: German runs long, Japanese wraps without spaces, Arabic is RTL, and titles and og:image often stay Chinese. Build a "longest string" variant in Figma and key-ify meta fields.

Success metrics and the 90-day roadmap

  • Day 30: index coverage ≥ 90% per locale, zero hreflang errors, GA4 baselines established
  • Day 60: target keywords in the top 50; foreign-page bounce rate within 15% of the Chinese version
  • Day 90: non-Taiwan inquiries ≥ 15% of Chinese-version volume; conversion ranked by locale, deciding whether to add a fourth locale or deepen existing ones

Decision checklist

  • [ ] I can name the top three target countries
  • [ ] I have 10–20 target keywords for that market
  • [ ] Exports or overseas customers are 20%+ of revenue
  • [ ] I know my Chinese site's monthly traffic and conversion rate
  • [ ] Someone internally can maintain foreign content long-term
  • [ ] I'm willing to budget for annual translation updates
  • [ ] There are no regulatory barriers in the target market
  • [ ] I've decided the URL strategy
  • [ ] I have native speakers available for acceptance testing
  • [ ] I understand SEO takes 3–6 months to become clear

Eight or more checked and it's worth doing. Fewer than five, shore up the fundamentals first.

FAQ

Can I just use a Google Translate plugin?

Translation plugins swap text client-side, and without separate URLs there's no separate index — overseas organic traffic stays near zero. If you only need comprehension for customers who already found you, a plugin is fine. To acquire new customers, you need real multilingual architecture.

Subdirectory, subdomain, or ccTLD?

Nine out of ten SMEs should pick subdirectories (/en/, /ja/): shared domain authority, one certificate, lowest maintenance. Subdomains suit regional teams running content independently. ccTLDs give the strongest geo signal but mean growing a new site from zero.

How long until multilingual SEO shows results?

Indexing usually completes in 2–6 weeks; rankings and inquiries take 3–6 months, and it still needs local backlinks and update frequency.

Next step

ScriptWalker's Multilingual & Localization Build starts at NT$60,000 (one locale added to an existing site). We can run a free locale feasibility scan first: we crawl your current URL and report total page count, estimated word count, and a three-tier quote within two working days.

Share: