KamoCRM

Never send a brand name to an engine, for every caller

FixTranslateService
Shipped
October 5, 2026 at 5:10 AM UTC
Author
Kamo
Commit
92de29f

The es locale rendered RingCentral as "RingConexión central" and JustCall as "SóloCall"; zh read "AI Members" as Amnesty International members. The dictionary's translate.ts has masked its do-not-translate list since 2026-09-28, but chat messages, help articles and every other caller of this service still sent the names through bare. TranslationService now masks the protected terms (Kamo and every Kamo* product, Kamo Meet, Microsoft, Zoho and 230 more) as KMPH<n> sentinels, the token every engine here carries through, numbered after any the caller already sent, and restores them. A text that is only names is its own translation and is not sent. A reply that lost a name is translated again around the names, piece by piece. The list is protected-terms.json, a copy of the dictionary's scripts/protected-terms.json (case-sensitive, whole-word, longest first). Tests: ProtectedTermsTest 9, TranslationServiceTest 10 (6 new).

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