Appearance
Bilingual Support (FR/EN)
Montreal is a bilingual city. MTL Rent must work equally well in French and English.
Strategy
UI strings — full translation
All buttons, labels, navigation, error messages, placeholder text, and static content translated via i18n framework.
Listing content — original + AI translation
Listings stay in the language the landlord writes them in. Tenants can request an AI translation on demand (see AI Features).
Technical approach
Framework: next-intl
- Mature, well-maintained Next.js i18n library
- Works with App Router and server components
- Message files in JSON format
URL structure
Locale prefix on all routes:
/en/listings /fr/listings
/en/listings/:id /fr/listings/:id
/en/map /fr/carte
/en/dashboard /fr/tableau-de-bordDefault locale: English (/en). Redirect / based on browser Accept-Language header.
Translation files
services/web/messages/
en.json
fr.jsonOrganized by page/feature:
json
{
"common": {
"search": "Search",
"filters": "Filters",
"login": "Log in"
},
"listings": {
"title": "Browse Listings",
"noResults": "No listings found"
}
}Language switcher
- Dropdown or toggle in header
- Preserves current page and query params
- Stores preference in cookie for return visits
SEO considerations
hreflangtags on all pages linking FR/EN equivalents- Translated meta titles and descriptions
- Sitemap includes both language versions
- Canonical URLs per language
Scope
Phase 9 (initial)
- UI string translations only
- Language switcher
- URL routing with locale prefix
Phase 10 (with AI)
- On-demand listing description translation
- Cached translations in database
- Landlord review of translated content