- Shipped
- September 28, 2026 at 9:39 PM UTC
- Author
- Kamo
- Commit
- 1b8cafe
No provider claimed en->ta (LibreTranslate lists no Tamil, Bergamot serves German only), so the router returned the English source for every Tamil request, and the dictionary sync wrote it as the value: kamo-internal's ta.json equalled English in 34,549 of 34,779 keys. IndicTransProvider claims exactly en->ta, the pair the klusterservices indictrans/ pod serves; ta->en would need the indic->en model, which is not deployed, so it stays unclaimed. It speaks the engine's LibreTranslate-shaped API behind the same auth proxy token, with LibreTranslateProvider's retry policy (a 4xx other than 429 is final; a 503 busy is tried again inside a 100 s budget). The router tries it after Bergamot and before LibreTranslate. ProviderRouter now logs one line per translation: the pair, the provider that actually answered, the sizes and the time, never the text ("translated en->ta provider=indictrans chars=21->34 ms=412"). translate.indictrans.base-url goes into application.yml and the k8s ConfigMap, which replaces it in production.
