Skip to main content

Overview

The language middleware detects user language preference from Accept-Language header, cookies, or query parameters. Use it when you need:
  • Multi-language support
  • Content localization
  • Language-based routing

Installation

Quick Start

Configuration

Options

Examples

Basic Detection

From Query Parameter

Language-Based Routing

Detection Order

  1. Query parameter (?lang=es)
  2. Cookie (lang=es)
  3. Accept-Language header
  4. Default language

API Reference

Functions

Technical Details

Implementation Architecture

The language middleware uses a multi-source detection strategy with priority-based resolution:
  1. Context Storage: Detected language is stored in the request context using a private contextKey type
  2. Case-Insensitive Matching: All language comparisons are performed case-insensitively using lowercase normalization
  3. Regional Support: Handles both base language codes (e.g., “en”) and regional variants (e.g., “en-US”, “en-GB”)
  4. Quality-Based Parsing: Accept-Language header parsing respects quality values (q-values) for prioritization

Key Components

  • isSupported(): Validates if a language code exists in the supported languages map
  • normalize(): Converts detected language codes to the exact format defined in supported languages
  • parseAcceptLanguage(): Parses Accept-Language header with quality values, sorts by quality descending
  • Path Prefix Handling: When enabled, strips the language prefix from the URL path (e.g., /fr/page becomes /page)

Configuration Defaults

Best Practices

  • Support common language codes
  • Provide language switcher UI
  • Persist user preference
  • Use ISO 639-1 codes (en, es, fr)

Testing

The middleware includes comprehensive test coverage for all detection mechanisms and edge cases: