The challenge
Five sites, two languages, one brand.
Over the years the company had ended up with five HubSpot sites, one of them a separate French-Canadian site. Each had its own copy, its own forms and its own idea of what things were called. Updating a page meant updating it several times, and the French site always lagged behind the English ones.
The goal was one WordPress site in English and Canadian French, with the old domains retired and redirected so nothing they had earned in search was lost. Machine translation made the volume affordable, but this is a technical industry. Left alone, DeepL will happily translate a company name that happens to be an ordinary English word, or turn an acronym every buyer knows into something nobody searches for.
And translation can’t stop at the page copy. Contact forms, validation messages, gated-content emails, downloads, site search and the locations map all had to work in French too, or a French-Canadian visitor would hit English the moment they tried to get in touch.
The approach
How I tackled it.
-
Consolidate and map
Inventoried all five HubSpot sites, merged their content into one WordPress structure, and planned the redirects so each retired URL lands on its English or French equivalent.
-
Build the glossary first
Before running the bulk translation, built the do-not-translate list and the preferred-term dictionary that DeepL would follow on every string.
-
Translate the plumbing
Routed forms, validation, emails, gated downloads, search and maps through the same translation layer as the pages, so nothing falls back to English.
-
Verify every page
Compared all 140 English pages with their French versions to catch English left behind and names that should never have been translated.
The glossary
Deciding what not to translate.
The most important part of this project wasn’t code. It was working out which words DeepL should leave alone, and which French words the company actually uses. A wrong translation of a brand name or a product term reads as careless to a buyer in Montréal, and it’s repeated on every page that mentions it.
I started from the company’s own French. The old French-Canadian site was the best record of how they already spoke to Canadian customers: which product and partner names stayed in English, which terms were localized, and which phrasing their team preferred. That gave the first draft of the list.
Then I sorted every candidate term into groups, because each group follows a different rule. Company and brand names, including a recently merged company whose name is a plain English word, are never translated. Manufacturer and partner names, product lines and model numbers stay as they are. Standards bodies and certifications keep their official names. Industry acronyms like RFID, UPC and SKU stay in English, because that’s what Canadian buyers search for.
The second half of the glossary is the dictionary of preferred terms: where there is a French word, use the Canadian one. “Courriel” rather than “e-mail”, “articles” rather than “messages” for blog posts, and the company’s own wording for its services. DeepL applies these on every string, so the choice is made once instead of fixed page by page.
Only then did the bulk translation run. Afterwards I compared every English page with its French version, looking for two kinds of mistake: English that was left behind, and names that got translated. Each find became a glossary entry rather than a one-off edit, so the fix also applies to every page that uses the term and to content written after launch.
The glossary lives in TranslatePress and DeepL, not in code, so the marketing team can keep adding to it as new products and partners come along.
What I built
One site, fully bilingual, end to end.
- English and Canadian French Every page under /fr/ with French titles and descriptions, translated URLs, fr-CA locale and hreflang pairs for search engines.
- Forms that answer in French Contact and gated-content forms show French validation messages and accept accented names like François and Montréal, and their emails go out in the visitor's language.
- French downloads and search Gated content delivers the French PDF when one exists, and site search finds French terms while still matching English acronyms.
- A language switcher that stays put Desktop, mobile header and mobile menu switchers take visitors to the same page in the other language, with links rewritten so French visitors stay on French pages.
The results
What changed.
One site to update instead of five, with French-Canadian visitors getting the same experience as English ones, from the first page to the follow-up email.
- 5 sites → 1 Five HubSpot sites consolidated into one WordPress site, with the old domains redirected.
- 140 pages in two languages Every page checked side by side in English and Canadian French.
- Glossary-driven translation Brand names, product terms and acronyms stay right on every page, including new ones.
Tech stack
- WordPress
- WPBakery
- TranslatePress
- DeepL
- HubSpot
- Contact Form 7
- PHP
- Redirects & hreflang
