Most "multilingual" routing is a locale header and a prayer. Ours started from an embarrassing observation: on our internal Québécois French eval set, the spread between the best and worst frontier models was wider than the spread on English tasks — and the cheapest model was rarely the worst.
Detection without latency
Language detection runs in the gateway before provider selection, on a fast character-n-gram classifier — no model call, sub-millisecond, and it handles code-switched text ("peux-tu refactor cette fonction?") by scoring per-segment rather than per-request. If confidence is low, we don't guess; the request routes exactly as you wrote it.
Routing on measured quality
When switchgate/auto sees francophone traffic, it consults a routing table built from GateBench-FR — our French rubric set covering instruction-following, register (tu/vous matters in production copy), Québec-specific vocabulary, and structured output. The table is re-scored on every model release; when a new checkpoint improves its French, traffic shifts within hours, not quarters.
The failure modes we watch
Two honest caveats. First, detection is conservative on very short prompts — "ok" is not a language. Second, per-model French quality can regress silently on provider-side updates, which is why the eval re-runs on a schedule instead of on announcements. You can always pin a model and opt out of the whole thing; the feature is for the default path, not a cage.
French-aware routing is on for switchgate/auto today. Explicit model IDs are never rerouted.