SYCGeeks

Vancouver, Canada · Prices in CAD

SYCGeeksSYCGeeks

Support · Websites · 14 min read

Shipping a site in English and French

Official-language work is architecture, not a plugin that swaps strings.

AI-generated product prototypes and a finished bottle

Canada is not a flag icon in the corner

If you serve Quebec, a federal audience, or simply want the site to feel finished in this country, English and French need a real information architecture. A plugin that swaps strings and leaves the URL, the date format, and the button width in English is a costume. SYCGeeks has shipped bilingual work from Vancouver since 2015. We treat the second language as a second site that shares a spine — not as a toggle you flip when a minister is in town.

Say in the brief whether both languages must be correct on day one. That sentence changes the quote and the calendar. A custom website launch already includes bilingual routes when you buy them. An extra language you did not buy at launch is a published add-on, typically one to two weeks, about 25 percent less if you are on monthly or yearly care. We will not pretend a machine dump is a second site so the homepage can show a flag.

Bilingual work is not only for companies with a Montreal office. Clinics that take patients from both sides of the river, manufacturers that bid federally, tourism operators, and professional firms with a college rule all need both languages to be true. If you only need English, say that. We would rather ship one complete language than two thin ones. Hiding French behind a globe icon trains searchers and staff to treat it as optional.

Write admin@sycgeeks.ca with the languages, the provinces you actually serve, and any legal constraint — health claims, a professional college, a federal program. Book a Square appointment on Pacific time if you would rather talk. No account is required to book. Bring the phrases you already use on the voicemail and the invoice. Those are often more honest than the English marketing deck.

URLs and the switch that keeps people in place

We design the language switch so a person on a service page lands on the same service in the other language, not on the homepage. If /services/square-appointments becomes /fr/services/rendez-vous-square, that pair is a contract. Broken pairs are how someone books the wrong clinic or reads the English liability page after choosing Français. We map every launch URL in week two, before visual design, because a pretty switch on a missing pair is still a bug.

Pick a URL pattern and keep it. Prefixes (/en/, /fr/) are honest for a Next.js app. A .ca with a language cookie and no visible prefix is how people share the wrong link in a text message. We prefer visible language in the path so a printed QR code, a federal PDF, and a Google result all agree. Subdirectories beat query strings. Query strings get stripped by mail clients and by people who tidy a URL.

hreflang, canonicals, and the sitemap are part of the architecture, not an SEO extra. Each English page names its French equivalent and itself. A page that exists in one language only must say so — no silent 200 on a thin machine translation. If a service is not offered in Quebec, do not invent a French page that implies it is. Completeness is a legal and a search problem.

WordPress and Next.js can both hold this if we lock the model. WordPress needs a language plugin we are willing to care for, not whichever one a theme bundled. Next.js needs a routing convention your future developer can read without calling us. We document the pair list in the project notes. If you add a page after launch, the add-on includes the other language when the project already is bilingual. A unilingual extra page on a bilingual site is how the architecture rots.

Button width, headlines, and the lie of string swap

French is not a thinner English. “Book” and “Prendre rendez-vous” are not the same object. “Cart” and “Panier” sometimes are; “Checkout” and “Passer à la caisse” are not. We design buttons, navigation, and cards for the longer string first when both languages are in scope. Squeezing French into an English component is how you get hyphenation, hidden overflow, and a tap target that fails WCAG on a phone.

Headlines are rewritten, not squeezed. A Vancouver studio line that works in eight English words may need a different metaphor in French, or no metaphor at all. We do not run a heading through a tool and then reduce the letter-spacing until it fits. If the English heading is a pun on “coast,” the French heading should be a true sentence about the work. Tone is part of the design system.

Dates, money, and units change. Canadians expect CAD named on the page. French pages should not say “$50” as if the currency were obvious to a reader in France or a bot. We write 50 $ CA, or we name Canadian dollars in the sentence. Dates on a federal or Quebec-facing page should not assume MM/DD. A booking widget that shows “03/04” without a month name will book the wrong day. That is a product defect.

Navigation labels need a human, not a glossary. “Care,” “Insights,” and “Work” do not have one French word that keeps the brand. We pick phrases your staff will actually say on the phone: Entretien, Guides, Projets — or whatever is true for you. Then we keep them. A French menu that changes every release trains nobody. The same person who signs English navigation should sit with the person who signs French, in week two, on Pacific time.

Quebec, federal work, and who needs both on day one

Quebec-facing work and federal-facing work are not the same obligation, and we will not collapse them into “be bilingual.” If you advertise, contract, or deliver services to Quebec consumers, French must be genuine: public pages, checkout, warranties, and the phrases on the receipt. If you sell to a federal department or a Crown corporation, both official languages usually need to be complete, including PDFs and error states, because the buyer will test them. If you are a Vancouver clinic with the occasional francophone patient, you may still want French service pages and a French booking path without translating every blog post from 2018.

We are a Vancouver studio. We do not give legal advice, and we will not pretend a website quote replaces counsel in Montreal. We will ask who you serve, where the contract is signed, and whether a college or a funder has a language rule. Send that rule in the brief. Designing for it in week one is cheaper than rebuilding navigation in week nine because a reviewer in Gatineau opened the French 404.

Federal audiences also notice English-only PDFs linked from a French page, English alt text, and a chatbot that replies “Sorry, I only speak English.” Chat and analytics are still personal information under PIPEDA. If the French page collects a name, the privacy statement on that page must be French and must say why. A US privacy generator that mentions CCPA and California is not a Canadian bilingual page. We rewrite it or we do not launch that form.

If Quebec is not in the brief and you want English only, we will still avoid fake bilingual signals — a decorative “FR” that 404s, a Google Translate widget, a footer that says “Nous parlons français” with no French page behind it. Those signals create a duty you did not staff. Honesty in one language is better than theatre in two.

Forms, checkout labels, and testing both languages

We test both languages before launch, including forms. That means filling the booking form in French, submitting a lead in English, and paying a test CAD amount if checkout is in scope. It means reading the confirmation email, not only the thank-you page. If Square holds the calendar, the service names in the appointment list must match the language the client chose. A French booker who receives “Discovery conversation — 30 min” is not finished.

Field labels, help text, and validation belong in the language of the form. A French form that yells “Phone is required” in English after submit is a defect. Postal-code patterns differ in how we explain them, not in the Canadian format. We do not validate a Quebec postal code as a US ZIP. We do not require a state dropdown on a Canadian bilingual checkout. Those are US template leftovers and they cost conversions.

GST/HST labels must be readable in both languages. “Tax” is lazy. “GST/HST” and “TPS/TVH” are what a Canadian expects to see near a price. If you only charge GST in British Columbia on a given item, the line should say that, not “VAT.” We decide tax behaviour before we pick a theme or a component library. Theme shopping after tax is how you launch a store that looks finished and is not.

Keyboard and screen-reader paths are tested in both languages because French labels change the length of the announcement. A skip link that says “Skip to content” needs a French pair. The language of the page must be set in the HTML so a screen reader does not pronounce French with English phonemes. That is launch work, not a later compliance package. If you need a dedicated compliance program, that is a separate three-to-five-week engagement we can attach to the same project.

Who writes, who reviews, who signs

Name two signers if you need two languages: one for English, one for French. They can be the same person. They often are not. A bilingual associate in Montreal and a managing partner in Vancouver will disagree about vous versus a warmer tone, about “courriel” versus leftover “email,” about whether a service is “accompagnement” or “soutien.” That disagreement is week-two work. It is not a Slack thread at 11 p.m. Pacific the night before launch.

We write in Canadian French, vous, for studio-facing copy and we expect your French signer to correct the words that belong to your trade. We will not invent medical or legal French. If nobody on your side can sign French, say so in the first note. We can structure routes and ship English complete. We will not publish a voice we cannot defend to your college.

Machine translation is a draft input, never a shippable page. If your team pastes a tool’s output into the CMS, we will send it back. The reserved care hour is not for laundering a dump. If you want a later language pass, buy the add-on. Care is $450 a month or $4,500 a year; the language add-on is cheaper on care, and it includes navigation, legal, and checkout labels — not a blog archive you never asked readers to visit.

Keep a short glossary in the project notes: the product name that does not translate, the city names you will not Frenchify, the words you have already printed on a van. Future you will thank present you when a new page is opened a year later. We log glossary decisions the same way we log a tax rule. If it only lives in someone’s head, it is not shipped.

Shipping English first without faking French

If you only have English copy on day one, we can still structure the French routes, reserve button widths, and ship a complete first language. The switch can wait, or it can point to a short French page that states what is coming and how to reach you — in real French, with a phone number and admin@sycgeeks.ca if that is how you want to be reached. What we will not do is publish twenty English pages wrapped in a translate widget.

Tell us the date French must be true. A federal bid, a Quebec campaign, a college audit — those are real dates. We would rather put the language pass on the first CAD quote than discover it in week eight of a six-to-ten-week marketing site. Content and approvals move bilingual calendars even more than unilingual ones, because two people must sign. Name them.

After launch, new pages on a bilingual project are bilingual. That is in the extra-page add-on when the project already is. A new collection on a store, a checkout change, product stills — each has a published duration and a care price. We reopen the same project. You do not start again with a stranger. If production French breaks — a form dropping submissions, a receipt in the wrong language — call +1 (672) 200-7924 on a weekday. That line is for heat.

Care after launch is how a bilingual site stays true: $450 a month or $4,500 a year, hosting watch, small copy updates, one reserved hour, a note of what changed. A French typo in a fee is care. A third language is a quote. A new checkout rail is a quote. Ask if you are unsure. The answer is a sentence, not a new contract. Book time on Pacific time if you want to walk the architecture before you write the brief.

A working bilingual checklist for week two

By the end of week two we want a table, not a vibe: every launch URL in English, the French pair, and a name next to the signer. Service pages, legal pages, booking or checkout, 404, and the email templates are rows. Blog posts, old PDFs, and a careers page from 2019 are not rows unless they are in the signed scope. If a row has no French signer, that page does not ship in French. We would rather drop the page than invent a voice.

The same table lists the strings that break layout: primary buttons, navigation, the cart label, the appointment duration line, the tax line. We measure them in both languages on a phone-width canvas before we lock the components. If “Prendre rendez-vous — 45 min — 150 $ CA” does not fit, we change the component, not the grammar. Operators should see this table in the dashboard so a partner in Montreal is not guessing from a screenshot of the English file.

Week two is also when we write the three sentences a receptionist will say when someone asks if the site is in French. If the answer is “not yet,” the site should agree. If the answer is “yes, book in the other language and we will confirm,” the booking path must do that. A bilingual promise that only lives on the phone is how you get angry notes to admin@sycgeeks.ca that are really notes to you. Align the script and the routes before visual polish.

If you cannot finish the table in week two, we pause. A six-to-ten-week marketing site does not get faster when language pairs are invented in week seven. Call +1 (672) 200-7924 only if a live bilingual path is already broken. For a project that has not launched, write or book. Bring the table, even if half the cells are empty. Empty cells we can plan around. Invisible work we cannot.

Keep reading