Skip to content

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-bord

Default locale: English (/en). Redirect / based on browser Accept-Language header.

Translation files

services/web/messages/
  en.json
  fr.json

Organized 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

  • hreflang tags 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