Translation completeness
When you enable a language, the question that matters is “is this language ready for customers?” Atender answers it with two surfaces on the Languages subtab: a Translation Sync control card and a per-language coverage panel.
The Translation Sync card
Below the Secondary Languages list, the Translation Sync card carries two actions:
- Sync Translations — Queues translation jobs only for content that doesn’t have an up-to-date translation in each active language. The normal everyday button.
- Force Retranslate All — Re-translates everything, including content already translated. Useful after a wholesale prompt or terminology change. Expensive — uses AI inference for every article in every language.
When you click either button, a translation job kicks off and the card shows live progress until it finishes.
Job statuses
A translation job moves through five states:
- Pending — Job is queued but hasn’t started running.
- Scanning — Atender is walking your KB to figure out what needs translating in each language.
- Translating — The actual translation work is running. The progress counts tick up as articles complete.
- Completed — All queued work finished. The job is done.
- Failed — The job hit an error and stopped. The card shows the failure reason.
The card polls every five seconds while a job is running, so you can watch the numbers move in real time.
What the job carries
For each running job you can see:
- Articles — completed / total across all secondary languages
- Categories — completed / total
- Subcategories — completed / total
- Skipped counts for each — content that was already translated and didn’t need work this time
- Target language count — how many languages this job is translating into
- Started at / completed at — timestamps for the job’s run window
The split between Total and Skipped is the difference between “all the content that exists” and “the content this run actually touched”. After a fresh enable, those two numbers are close. After steady-state operation, most runs skip most content and only translate the bits that changed.
The per-language coverage panel
Each secondary language has its own coverage card pulled from translation stats. It shows three counters:
- Articles translated / total — How many published articles have a translation in this language.
- Categories translated / total — How many categories have a name and description in this language.
- Subcategories translated / total — How many subcategories are translated.
When all three counters match (translated == total), the language is fully covered. Until then, customers in this language fall back to the default language on the untranslated items.
What gets translated
The translation pipeline operates at four levels:
- Article title — Yes
- Article summary — Yes
- Article body — Yes
- Article keywords — Yes (each language has its own keyword list)
- Category name and description — Yes
- Subcategory name and description — Yes
- Section name and description — Yes
- Public UI strings (search box label, “Was this helpful?”, etc.) — Yes — handled separately by the public renderer
- Tag names — No — tag slugs and display names stay in the default language
For brand names and product names you don’t want translated, use protected terms.
How completeness ties to retrieval
Search and AI retrieval honor the customer’s language when one exists, with a fallback to the default:
- A customer browsing in Swedish gets Swedish chunks when they exist for an article.
- An article without a Swedish translation falls back to the default-language version. The article still loads — it just renders in the default language.
- AI agents (Sidekick, web chat, voice) follow the same fallback logic when retrieving in a customer’s language.
So an article at 80% translation coverage in Swedish doesn’t break — it just serves 20% of articles in the default language until the next sync.
Triggering re-translation
Translations are queued by an explicit Sync click, not automatically on save. If you edit an article in the primary language and want translations to refresh, click Sync Translations afterward.
There’s no per-article translation button in the editor — sync runs at the language level and works through whatever needs translating across the whole KB.