Bridge Training
i18n

Detection

Browser language detection and localStorage persistence.

Import from @workspace/i18n/detection.

Detection Flow

detectPreferredLanguage follows this priority order:

localStorage ("preferred-language")
        ↓ not found or not in allowedCodes
navigator.language (base code, e.g. "en" from "en-US")
        ↓ not found or not in allowedCodes
fallback parameter

detectPreferredLanguage

Detects the user's preferred language by checking localStorage first, then the browser's navigator.language. Returns a language guaranteed to be in the allowedCodes array.

import { detectPreferredLanguage } from '@workspace/i18n/detection';
import { ALL_LANGUAGE_CODES } from '@workspace/i18n/constants';

// For apps/web (all languages)
const preferred = detectPreferredLanguage(ALL_LANGUAGE_CODES, 'fr');

// For apps/app (subset)
const appPreferred = detectPreferredLanguage(['fr', 'en'] as const, 'fr');
ParameterTypeDescription
allowedCodesreadonly T[]The languages supported by the app
fallbackTThe fallback language if detection fails

saveLanguagePreference

Saves the user's language preference to localStorage. Call this when the user explicitly chooses a language (e.g., from a dropdown or the "stay" button on a language banner).

import { saveLanguagePreference } from '@workspace/i18n/detection';

saveLanguagePreference('en');
// localStorage.setItem("preferred-language", "en")

Silently handles environments where localStorage is unavailable (SSR, private browsing).

clearLanguagePreference

Removes the stored language preference from localStorage. Useful for testing or resetting user preferences.

import { clearLanguagePreference } from '@workspace/i18n/detection';

clearLanguagePreference();
// localStorage.removeItem("preferred-language")

On this page