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?
I have the a similar problem after making all the same changes in my hosted instance. In this case I’m using openai 4o. It seems to translate only the past 3 or 4 posts and nothing further. I still have plenty of credit available on my api key.
Where I’m at currently. I ran the test with the API key it’s fine. Like I said, translated like 3-4 pots then no others, also new posts are being added and no translations on those.
At the moment GPT-5 is so slow that its use shound be targeted to different type things. But sure, that is matter of taste and it depends.
But I’m using Chat GPT/GPT-5 in Finnish every now and then. Earlier 4x-series where actually quite good with a small and hard language such Finnish. Now… I would never use it for translations. Perhaps GPT-5 and next generations evolve and do better job in the future and perhaps it is already spotless between major languages.
But sure, that was totally off topic, but perhaps it can be allowed this one time. You did find needed solution after all. But my vague point is this topic should never born, because , at the moment and by my experiences, no one should never use GPT-5 for translations in the first place.
As mentioned by @GrahamMai_translation_backfill_hourly_rate needs to be set by your site admin as it is a hidden setting.
Other than what’s mentioned in the FAQ, could you folks check -
Check the graph at https://your-site.com/admin/plugins/discourse-ai/ai-translations. How many eligible posts are there? If it doesn’t show up, you’ll need to update
Run this query in discourse-data explorer if you have it:
SELECT
a.id,
a.created_at,
a.raw_request_payload,
a.raw_response_payload,
a.post_id
FROM ai_api_audit_logs a
WHERE a.created_at > '2025-09-01'
AND a.feature_name = 'translation'
ORDER BY a.created_at DESC
LIMIT 100
open a post is a backfill candidate, is the locale detected?