KamoCRM

One engine, MADLAD-400, for every language pair

FeatureTranslateService
Shipped
October 22, 2026 at 4:41 PM UTC
Author
Kamo
Commit
5c7605b

Replaces the LibreTranslate, Bergamot and IndicTrans providers with MadladProvider (klusterservices madlad/). Their languages did not overlap, and a pair none of them had came back as its English source and was saved as the translation; MADLAD translates between any two of ~400 languages, so inbound chat in any language reaches English too. - The provider sends a list of texts in one request: a 3B model is bound by reading its weights, and 16 short strings took 9.7 s together against 25.8 s one by one. ProviderRouter.translateAll groups a batch's keys (32 texts / 6,000 characters), and a group the engine fails is retried text by text so one bad text fails alone. - TranslationService.batch masks protected names first, sends each distinct text once, in groups, and restores the names after; a reply that lost one is still translated around the names. The caller's deadline is checked between groups. - Until the engine has answered /languages the provider claims Kamo's 22 languages, never none: an unclaimed pair is returned as its English source and saved as the translation. - A timeout is still never retried; 503 busy and 5xx are, inside the caller's deadline. Background work holds one slot per pod so a chat message never queues behind a sync.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing