I’m trying to enable automatic content localization (AI translation backfill) on my self-hosted Discourse instance and I’ve followed all the available guidelines, but I’m not seeing any translations appear.
Here’s what I’ve done so far:
Enabled content localization enabled
Selected at least one language in content localization supported locales
Enabled ai translation enabled
Chosen a working ai translation model (test is successful)
Set ai_translation_backfill_hourly_rate to a number greater than 0 (using the environment variable method in app.yml)
Set ai translation max age days to a large value
After saving and rebuilding, I posted topics in a different language than my user language preference, but nothing gets translated. I don’t see any evidence of translation jobs running (tried checking Sidekiq scheduled/queues), and the user-facing content remains untranslated.
Is there anything else I should check, or any way to better diagnose why the translation backfill is not triggering?
What is your ai_translation_backfill_hourly_rate – can you try 20 to begin with? It would help if you could share all the values.
Are all your posts public and not in restricted categories? If ai_translation_backfill_limit_to_public_content is disabled, you won’t have any posts translated.
SiteSetting.ai_translation_verbose_logs=true will show some details when it’s successful.
Alternatively if you have data explorer, you can try the following to see
if there are any LLM calls to translate
or if post locales are getting detected but the posts are not translated
SELECT COUNT(*)
FROM ai_api_audit_logs
WHERE feature_name = 'translation'
SELECT COUNT(*)
FROM posts
WHERE (locale IS NOT NULL AND locale <> '')
Yes, I can see these jobs in Sidekiq under /sidekiq/scheduler:
Jobs::PostLocalizationBackfill
Jobs::TopicLocalizationBackfill
Jobs::TopicsLocaleDetectionBackfill
They all appear with status “OK” and have recently run.
I also noticed that the topic titles are being translated correctly, but the post content itself is not translated yet.
Should I simply wait longer for the content to be processed, or is there another setting that I need to check for post content translation?