One Build, Two Languages: What a Bilingual Platform Actually Looks Like
One Build, Two Languages: What a Bilingual Platform Actually Looks Like
Every small business in a bilingual market has the same website problem. You build it in English, and then someone asks the obvious question: where's the French?
The honest answer is usually a translate widget stapled to the header. The URL stays English. The page titles stay English. The checkout stays English. Search engines see one site with a cookie preference, and your French-speaking customers see a business that tolerates them.
I got tired of watching that be the answer, so this week I shipped a demo that does it properly: Nordet Supply — a fictional Ottawa–Gatineau janitorial and packaging distributor, in English at bilingual-demo.webfacemedia.dev and fully in French at bilingual-demo.webfacemedia.dev/fr. Same catalogue, same store, same team page — one build, two languages, no widget.
What "Properly" Actually Means
Real bilingual is not a dropdown that swaps words. It is the whole surface of the site, twice:
- Translated addresses. The French store lives at /fr/boutique, the about page at /fr/a-propos — not /fr/about with French words in it. Search engines index these as the French pages they are.
- Translated titles and descriptions. A French product page shows a French title in the browser tab and in Google, with proper hreflang linking so each language finds its twin.
- A language switcher that knows where you are. Switch languages on a product page and you land on that product in the other language — not back on the homepage.
- Even the 404. If a French visitor hits a dead link, the "page not found" is in French. Details like that are the difference between bilingual and translated.
The Store Didn't Get a Pass Either
The part most bilingual sites quietly give up on is commerce. This one didn't. The shop carries a real catalogue — janitorial, paper, foodservice packaging, can liners — organized by category, with per-product pages, case pricing, and a working checkout in both languages. Business customers get net-term accounts and add their PO number at checkout; everyone else checks out directly. Free local delivery over $150 across Ottawa and Gatineau, on the company's own trucks, twice a week.
None of that is mocked. The cart, the account flow, the delivery promise — it all runs, in English and in French.
What It Inherits From the Platform
This is the part I actually care about. Nordet was built by my planning system from a plain-English brief, and because it sits on the same platform every client site runs on, it didn't just get a homepage and a contact form. It inherited:
- A complete store system — products, categories, checkout, shipping rules — not a plugin someone has to babysit.
- The full multilingual layer — translated slugs, per-language metadata, hreflang, the switcher, the localized 404 — because it's in the template, not bolted on.
- One place to run it all. Both languages live in the same content system. Change a price once, it's right in both languages. Add a product once, it exists in both stores.
- A build that took one pass. Brief in, branded multi-page site with a working bilingual store out. The eight things it exposed that same day got fixed in the template the same day — so the next bilingual site starts where this one finished.
Why I Build Demos Like This
Nobody was paying for Nordet. I built it because the fastest way to find every place a platform falls down is to make it do the hard thing for real. A bilingual store is the hard thing: it touches content, commerce, SEO, and the build system all at once. If the platform survives that, a client's bilingual site is no longer a project risk — it's a feature they already own.
If your business serves customers in two languages and your website only speaks one — or speaks the second through a widget — that's exactly the kind of build I do. My contact page is open.