Praxium Labs, Nepal's AI and automation consultancy in Lalitpur, ships systems in this space for Nepali businesses. A bilingual Nepali-English website is a real engineering project, not a Google-Translate widget. Done well, it ranks for both languages, feels native to each audience, and serves Devanagari content at the same performance as the English version. Done badly, it confuses search engines and looks machine-translated.
URL strategy — pick one and stick to it
- Path-based (recommended):
example.com/for English,example.com/ne/for Nepali. Easy to set up, easy for search engines - Subdomain:
en.example.com/ne.example.com. More setup overhead, no clear benefit - Country TLD:
example.com(English) /example.com.np(Nepali). Useful only if you have separate businesses per market - Query parameter:
?lang=ne. Worst option for SEO — search engines may not index separately
hreflang tags
Every page declares its language alternatives:
In <head>
<link rel="alternate" hreflang="en" href="https://example.com/page" />
<link rel="alternate" hreflang="ne" href="https://example.com/ne/page" />
<link rel="alternate" hreflang="x-default" href="https://example.com/page" />
Fonts for Devanagari
- Noto Sans Devanagari — Google's reference Devanagari font; comprehensive coverage, slightly clinical
- Mukta — popular for Nepali web, good readability
- Hind — designed for Devanagari + Latin, good for bilingual sites
- Annapurna SIL — designed by SIL with Nepali language usage in mind
- Self-host them: Google Fonts adds latency and privacy concerns; serve via your own /assets
Subsetting matters: a full Noto Sans Devanagari font is 200+ KB. Subsetting to just the characters you use can drop it to 40-60 KB. Use glyphhanger or Fonttools.
Content storage
- JSON locale files: simplest, works with any framework.
/locales/en.jsonand/locales/ne.json - CMS with locale support: Sanity, Strapi, Payload all support per-field localisation natively
- Translation memory: Crowdin / Lokalise / Phrase if you have a translator team
- Never auto-translate for production. Auto-translation feels obviously machine-generated and hurts trust
Language-switching UX
- Visible toggle in the header — usually "EN / नेपाली"
- Auto-detect on first visit based on browser language, but always show the toggle (do not lock users into the detected choice)
- Remember the choice in localStorage so it persists across visits
- Map between languages: when on /ne/blog/foo, toggle goes to /blog/foo (not back to /ne/). Maintain a slug mapping per locale
- Avoid mid-page switches — confuse users; keep the language consistent within a session unless they switch deliberately
SEO considerations
- Separate page titles and meta descriptions per language — never just copy the English version into the Nepali page
- Internal linking: link Nepali content to Nepali content; English to English. Cross-language links via the language switcher only
- Sitemap: include both language versions; use hreflang in the sitemap (sitemap.org schema)
- Local content for each language — write for the Nepali audience natively when in Nepali (different examples, different tone, sometimes different content priorities)
Search-bar tokenisation
In-site search for a Devanagari-content site needs Devanagari-aware tokenisation. Default Elasticsearch / Postgres full-text tokenisers split on whitespace, which works passably for Devanagari but misses compound words and conjuncts. Use the ICU tokeniser plugin for Elasticsearch, or pgroonga for Postgres, both of which handle Devanagari morphology better than the defaults. For SEO-side considerations on bilingual sites, see our SEO playbook.
Translation workflow at scale
- Source of truth: English typically; translate from English to Nepali
- Translator brief: include glossary of technical terms, brand-voice notes, cultural-context instructions
- Quality control: back-translate sampled Nepali content to English; compare to original
- Versioning: when English content updates, mark Nepali version stale until re-translated
- AI-assist: Claude / GPT for first-draft translation + human polish is the modern workflow; budget ~30-50% of pure-human translation cost
Frequently asked questions
Should I use Romanised Nepali or Devanagari?
Devanagari for formal / older / news-style audiences. Romanised Nepali for chat-style / younger / SMS-style content. Some sites support both; most pick one based on audience research. For SEO, Devanagari ranks better for serious Nepali queries.
How much extra does bilingual build cost?
+30-60% over a single-language site if planned from the start, more if retrofitted. The cost is in translation (NPR 3-8 / English word) and per-page i18n discipline, not in framework features.
Will Google show my Nepali pages to Nepali users?
Yes, if you signal correctly with hreflang and language metadata. Google's language detection is robust; the keyword is signalling clearly so Google does not have to guess.
Do I need a Nepali domain (.com.np)?
Not for SEO — .com.np is fine but does not give a meaningful ranking boost over .com with proper geo / language signals. .com.np is mostly a branding / trust signal for the Nepali audience.
What about RTL layouts?
Nepali is left-to-right. No RTL needed. Do not apply Arabic / Hebrew RTL patterns to Devanagari content.
How do I handle dates and numbers?
Use international standard formats consistently. For Nepali audiences, additionally display Bikram Sambat date alongside Gregorian (e.g., "2082-02-08 (2026-05-22)"). For numbers, the Nepali lakh / crore convention is widely understood; Western million / billion is also acceptable in English content.
Do I need RTL support?
No — Nepali script is left-to-right. Do not apply RTL CSS or markup.
Who can build this in Nepal?
Praxium Labs — Nepal's AI and automation consultancy, based in Lalitpur — designs and builds the systems described in this guide for Nepali businesses and for international teams hiring from Nepal. Start a project or see all services.