Introduce multi-language UI support via react-i18next. Adds a Language section to Settings (hidden when only one language is configured), backed by a new LanguageContext with localStorage persistence and browser-locale detection. All hardcoded UI strings across components, hooks, and markdown renderers were extracted into en/fr translation bundles (src/locales/*.json).
Admins control availability via a new `i18n.activeLanguages` / `i18n.defaultLanguage` block in orbitchat.yaml (defaults to English-only, so existing deployments are unaffected).
Also fixes a regression where switching languages could unexpectedly re-sync the agent route and spawn a new conversation, by decoupling the mount/popstate location-sync effect from the translation function's identity.