Skip to content

Language, transcription & translation

The TalX interface is fully translated into 91 languages – and “fully” really does mean everything: screens, dialogues, notifications, presence information with correct plural forms, and the system notices that appear in the chat history.

Right-to-left languages (Arabic, Urdu, Persian) are shown with a mirrored layout and the matching icon variants. Constructions like “file(s)” do not exist; number words are formed grammatically.

If a translation is missing, English steps in – never an empty string.

Under every voice message there is “show transcript”. Tapping it produces the text on the device. Available in six languages, configurable per chat.

How that works, and what it means:

  • Recognition runs locally with an offline engine. The audio never leaves the device.
  • The language model is not shipped with the app but loaded and unpacked once, the first time you transcribe. While that happens the interface says “loading language model…”.
  • The result is cached locally – tapping again is instant.
  • The transcript is a purely local artefact. It is not transmitted, is not part of the end-to-end encryption, and is deleted along with the message.

Why the model is verified before it is used

Section titled “Why the model is verified before it is used”

The language models come from a third-party server and are then parsed by native code. HTTPS only covers the transport – it does not help against a compromised server or a certificate slipped in from a normally trusted authority.

Every archive is therefore checked against a checksum built into the app and the expected size before it is unpacked. If anything deviates, it is deleted and never touched.

The checksum deliberately lives in the code instead of being fetched at runtime: the vendor does publish checksums – but on the same server. Whoever controls that server forges both. Only a value shipped with the app and covered by its signature protects against a swap at the source.

Text messages and transcripts can be translated between 20 languages: German, English, French, Spanish, Italian, Polish, Russian, Chinese, Hindi, Japanese, Arabic, Turkish, Dutch, Romanian, Greek, Portuguese, Croatian, Korean, Thai and Swedish.

On the device – and that was not a free choice. Calling a cloud translator would hand the plaintext of every translated message to a third party, which is exactly what TalX prevents with the Double Ratchet and ML-KEM. That would not be a compromise but the cancellation of the product promise.

Instead an on-device translator runs: it downloads a language model once (around 30 MB per language) and then computes offline. As with the transcription model: the model comes from the network, the content stays here.

Details you notice in everyday use:

  • “Translate” only appears when there is something to translate. Language detection runs when a message is displayed, not on receipt – for messages never read the computation would be wasted.
  • Very short texts are not analysed at all. With “ok” every language detector guesses, and a wrong offer is more annoying than none.
  • After translating, it says “show original” – the source text is never lost.
  • The result is cached locally, together with the target language. If you switch interface language you get a matching new translation rather than a stale one.
  • The target language is the interface language you have set. If it is one of the other 71 languages the translator does not know, no offer appears.
  • Translating is a deliberate user action, so no Wi-Fi is enforced. If you tap it on mobile data, you want a result now.