Design a Live Translation Chat App

Hard60 min
1 / 30
understanding3 min read

Problem framing: every reader reads in their own language

What a live translation chat is and why per-recipient translation defines it

Problem framing: every reader reads in their own language

A live translation chat lets people who do not share a language hold a real-time conversation: each person types in their own language and reads everyone else's messages already translated into theirs. The fact that defines the architecture is that translation is per-recipient-locale, not per-message: one message sent into a group whose members read five different languages must be rendered in five languages, and which language depends on who is reading, not on who is writing.

So the spine is a normal chat (send, fan-out, deliver) with a translation stage inserted on the delivery path: detect the source language of each message, then for each recipient render it in that recipient's preferred locale, showing the original alongside the translation. The crucial economy is that translation is keyed by language pair, not by recipient — the same source text translated to the same target locale is identical for everyone, so a 100-person group in 5 locales needs 5 translations, not 100. State this framing up front: it is a chat system whose hard part is a cache-backed, per-locale translation stage on delivery, with graceful fallback when machine translation is unavailable.

Key Highlights

  • Each person types in their language, reads others in their own
  • Translation is per-recipient-locale, decided by the reader, not the writer
  • Translate on the delivery path: detect source, render per target locale
  • Key translations by language pair, not recipient (K locales, not N people)
Interview move
Open by stating translation is per-recipient-locale but keyed by language pair. That single sentence frames both the feature and the cost optimization.
Avoid
Translating once per recipient. The same text to the same locale is identical, so cache by language pair or you pay N times for K distinct results.

Section Rescue Kit

Buzzwords to use:

Per-recipient-locale translationLanguage-pair cache key

Safe statements:

  • "It is a chat system whose hard part is a cache-backed per-locale translation stage on delivery."
  • "Translations are keyed by language pair, so a big multilingual group costs K translations, not N."
Design a Live Translation Chat App - System Design | WinJob | WinJob