Editor's note: This is the English working draft of what will become our flagship French-language piece for Quebec readers. The French edition will be written for a Quebec audience, not machine-translated, and will be the primary version.
Most AI building guides are written in English, for an English-speaking market. If you build a bilingual app for Quebec, you have more to think about: language rules, privacy rules, and users who expect a product that feels native in French, not translated as an afterthought.
The good news is that AI coding agents make building bilingual products much easier than it used to be. This guide covers the rules to know, practical patterns for building in French with AI, and a short list of resources.
This is general information, not legal advice. Check your specific obligations with a professional or the relevant authority.
The rules: French language
The Office québécois de la langue française (OQLF) states the basics plainly in its fact sheet for businesses (OQLF fact sheet, PDF):
- If your business operates in Quebec, its website must be available in French. You can offer other languages too, but all of the content, product pages included, must be available in French and be of equivalent quality.
- Commercial posts, brochures, catalogues and ads you publish on your website and social media must be written in French. Other languages are allowed as long as the content aimed at Quebec customers is always available in French.
- The same fact sheet reports that 3 in 4 people in Quebec say they prefer to shop and look for information online in French.
For the software your team uses, the OQLF says employers must make the French version of any software available to staff, in-house applications included, and install it in French by default on workstations. Businesses that employ 25 or more people in Quebec for six months are subject to the francization process and must register with the OQLF (OQLF, information technology, citing the Charter of the French language, arts. 4 and 141).
What this means for builders: if you're building an internal tool or a client-facing app for a Quebec business, plan for French from day one. Retrofitting a second language into hard-coded strings is the expensive way to do it.
The rules: privacy (Law 25)
Quebec's Law 25 matters for any app that handles personal information, and AI features often do. A few provisions are especially relevant (CAI, main changes):
- Privacy impact assessment (EFVP) for any project to acquire, develop or overhaul an information system involving personal information, and before communicating personal information outside Quebec. If your AI feature sends customer data to a service hosted elsewhere, that's worth looking at closely.
- Highest-privacy defaults. Privacy settings for technology products offered to the public must default to the highest level of confidentiality.
- A privacy policy in clear, simple terms, published on your website.
- Data portability, in force since September 22, 2024: on request, you must provide a person's computerized personal information in a structured, commonly used format (CAI). We cover this in more depth in our piece on owning your code and data.
How to build a bilingual app for Quebec with AI: patterns that work
1. Put the language strategy in your agent's instructions
Your AGENTS.md (or CLAUDE.md) should state the rules once, so you don't repeat them in every chat:
## Language
- The product is bilingual: French (fr-CA) and English (en).
- French is a first-class language, never a fallback. Every user-facing
string must exist in both dictionaries before a feature is "done".
- Never hard-code user-facing text in components. Use the dictionaries
in app/[lang]/dictionaries/.
- Use Quebec French terminology (e.g., "courriel", not "e-mail").
When unsure of a term, flag it for human review instead of guessing.
2. Use locale routing from the start
Next.js supports internationalized routing with sub-paths like /fr/products or with separate domains, and its guide shows a dictionary pattern with app/[lang]/ and one JSON file per language, loaded on the server so translations don't bloat the client bundle (Next.js internationalization). Ask your agent to set this up before it builds features.
3. Make translation part of the workflow, not a final step
Agents are good at keeping two dictionaries in sync. Claude Code's docs even show translation as a CI task: claude -p "translate new strings into French and raise a PR for review" (Claude Code overview). Note the "for review" part. A fluent French speaker should approve user-facing text, especially legal, marketing and error messages.
4. Package your terminology as a skill
Build a small agent skill, for example quebec-french-review, that checks new strings against your glossary. Keep the glossary in the skill's references/ folder so it loads only when needed (Agent Skills spec). Build the glossary from an authoritative source. The OQLF's Vitrine linguistique includes the Grand dictionnaire terminologique (specialized terms, definitions and translations) and the Banque de dépannage linguistique (grammar, spelling, syntax and writing). Our AGENTS.md starter template already includes a rule that every user-facing string must exist in both languages.
5. Search that understands French
If your app has search, don't use English-only defaults. PostgreSQL, which powers Supabase, "comes with predefined configurations for many languages" and includes a French Snowball stemmer (PostgreSQL docs). That means a search for "facturation" can also match related word forms:
select title
from articles
where to_tsvector('french', title || ' ' || body)
@@ plainto_tsquery('french', 'facturation client');
For a bilingual table, store the language for each row and use the matching configuration.
6. Test in French, not just in English
Ask your agent for tests that render key pages in fr and check that no English strings slip through. Also check accents in URLs, sorting and email templates. French text often runs longer than English, so check that buttons and headings don't break your layout.
Resources worth bookmarking
- Vitrine linguistique (OQLF): terminology and writing help, including the Grand dictionnaire terminologique.
- OQLF: business obligations for websites and software: the official source on language obligations.
- Commission d'accès à l'information: Law 25 guidance for businesses.
- Mila: the Quebec Artificial Intelligence Institute, a Montreal-based research community of more than 1,400 machine learning researchers. Worth following for research, events and training.
- Next.js internationalization guide: the routing and dictionary patterns above.
Why this matters
Quebec builders sometimes treat French as a compliance cost. We think it's an opportunity. Few AI resources are written for French-speaking builders, and a product that feels native in French stands out. That's why the French version of this guide will be our flagship piece. À suivre.
Keep reading
- Own your code and data: why it matters when you build with AI
- What are agent skills? How to write your first SKILL.md
- What is AGENTS.md? How to write one your coding agents follow
FAQ
Does my website need to be in French in Quebec?
Yes, if your business operates in Quebec. The OQLF says all website content, product pages included, must be available in French and be of equivalent quality.
Can I use AI to translate my app into French?
AI agents are good at keeping English and French dictionaries in sync, but a fluent French speaker should review user-facing text, especially legal, marketing and error messages.
Does Law 25 apply to AI features?
Law 25 applies to personal information, and AI features often process it. Sending customer data to a service outside Quebec calls for a privacy impact assessment first. This is general information, not legal advice.
How do I make Postgres search work in French?
Use the french text search configuration with to_tsvector and plainto_tsquery. PostgreSQL ships with a French Snowball stemmer, so related word forms match.
