# AI Translation Progress Graph

**URL:** https://meta.discourse.org/t/ai-translation-progress-graph/405915
**Category:** Data & reporting
**Tags:** translation, ai
**Created:** [June 23, 2026, 3:12pm UTC](https://meta.discourse.org/t/ai-translation-progress-graph/405915 "2026-06-23T15:12:06Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![LotusJeff](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lotusjeff/32/477888_2.png) [@LotusJeff](https://meta.discourse.org/u/LotusJeff)
#### Post date: [June 23, 2026, 3:12pm UTC](https://meta.discourse.org/t/ai-translation-progress-graph/405915/1 "2026-06-23T15:12:06Z")

</div>

I activated ai translations on my self-hosted Discourse server yesterday. Everything is going well… sort of.

The translation progress graph is either not refreshing or inaccurate. Here is what I am seeing:

 ![image](https://global.discourse-cdn.com/meta/original/4X/2/6/2/262739cb8065eb2b54f5e4f270f363d61b008f2e.png)

This would indicate that I am at 99% for all posts since Feb 23, 2026.

This is not accurate. I have roughly 3,000 posts for this timeframe. Based on the translation logs, it is currently working on posts from about 6 days ago.

So, does anyone know:

- What is the refresh rate for this graph?
- The [data explorer](https://meta.discourse.org/t/32566?silent=true) query for posts waiting to be translated?
- The [data explorer](https://meta.discourse.org/t/32566?silent=true) query for posts translated?
- The [data explorer](https://meta.discourse.org/t/32566?silent=true) query for posts that was tried to translate but failed do to some error/reason.

Thank you in advance.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [June 23, 2026, 4:17pm UTC](https://meta.discourse.org/t/ai-translation-progress-graph/405915/2 "2026-06-23T16:17:37Z")

</div>

> [@LotusJeff](#):
>
> - What is the refresh rate for this graph?

We had to cache this page as it was timing out on big sites.

> [@LotusJeff](#):
>
> This is not accurate. I have roughly 3,000 posts for this timeframe. Based on the translation logs, it is currently working on posts from about 6 days ago.

The translation has basically two steps:

1. Detect post original language
2. Translate to every other language

At the beginning, your site will mostly be stuck doing step 1, which we initially showed in this translation progress page but have since removed because feedback said it was “too much information”.

That said, this is good feedback. The progress page cache and lack of information of locale detection is making the experience here awful at the beginning of the process.

Last thing, we set the backfill rate very conservatively, you may want to increase it according to your budget.

---

<div class="post-metadata">

### Author: ![LotusJeff](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lotusjeff/32/477888_2.png) [@LotusJeff](https://meta.discourse.org/u/LotusJeff)
#### Post date: [June 23, 2026, 4:53pm UTC](https://meta.discourse.org/t/ai-translation-progress-graph/405915/3 "2026-06-23T16:53:01Z")

</div>

I would suggest considering a simpler reporting approach.

Based on my understanding, the translation process works in two stages:

1. Translate eligible topic data.
2. Translate eligible post data.

From an administrative and reporting perspective, I am less interested in what is currently in flight and more interested in overall progress against the eligible workload. I would prefer to see reporting based on the configured translation eligibility rules.

For example:

**Status**

Backfill settings are configured to translate all content created after February 23, 2026.

| Area | Total | Eligible | Translated | Completed |
| --- | --- | --- | --- | --- |
| Topics | 25,000 | 540 | 450 | 83% |
| Posts | 400,000 | 3,700 | 800 | 22% |

**Failed Translations**

| Post ID | Reason |
| --- | --- |
| 34543 | Malformed characters on line xxxx |

* * *

The current graph appears to show operational activity, which is certainly useful. However, what I really want to understand is how much of the eligible work has been completed.

Personally, I am not very interested in completion percentages by language. A topic or post is either translated or it is not. The key question for me is how much of the configured backlog has been processed successfully.

This approach also seems like it would be more database-friendly since it focuses on aggregate counts rather than tracking progress across every language combination.

If language-specific reporting is still valuable, perhaps it could be exposed through a filter. An administrator could select a language and view the same progress table for that language only.

Just some thoughts.

p.s.

> [@Falco](#):
>
> We had to cache this page as it was timing out on big sites.

What is the current cache timeframe?

---

<div class="post-metadata">

### Author: ![LotusJeff](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lotusjeff/32/477888_2.png) [@LotusJeff](https://meta.discourse.org/u/LotusJeff)
#### Post date: [June 24, 2026, 4:06pm UTC](https://meta.discourse.org/t/ai-translation-progress-graph/405915/4 "2026-06-24T16:06:57Z")

</div>

I have been working on the [data explorer](https://meta.discourse.org/t/32566?silent=true) SQL to create the report listed above. I am not a SQL expert, but these are working. The queries below will provide this level of information.

# Translation Status Report

| Area | Eligible | Translated | To Be Translated |
| --- | --- | --- | --- |
| Topics | 540 | 450 | 90 |
| Posts | 3,700 | 800 | 2900 |

# Topics:

```sql
-- Setup:
-- Upate sql your translation settings
-- Days to Backfill - Interval 'xxx'
-- Category to ignore - Category_id NOT IN ()
-- Topic type - Regular or private_message
--
-- Translation status:
-- Total Topics to translate: comment out both 'and topics.locale' where statements
-- Topics not translated: uncomment only - topics.locale is null
-- Topics translated: uncomment only - topics.local = 'en'

SELECT count(distinct topics.id)
     FROM topics
     JOIN posts ON topics.id = posts.topic_id
    WHERE posts.created_at >= NOW() - INTERVAL '100 days' 
     AND posts.user_id > 0
     AND topics.category_id NOT IN (22,3)
     AND topics.archetype = 'regular'
-- AND topics.locale = 'en'
-- AND topics.locale is null

```

# Posts:

```sql
-- Setup:
-- Upate sql your translation settings
-- Days to Backfill - Interval 'xxx'
-- Category to ignore - Category_id NOT IN ()
-- Topic type - Regular or private_message
--
-- Translation status:
-- Total posts to translate: comment out both 'and posts.locale' where statements
-- posts not translated: uncomment only - posts.locale is null
-- posts translated: uncomment only - posts.locale = 'en'

SELECT count(*)
     FROM posts
     JOIN topics ON topics.id = posts.topic_id
    WHERE posts.created_at >= NOW() - INTERVAL '100 days' 
     AND posts.user_id > 0
     AND topics.category_id NOT IN (22,3)
     AND topics.archetype = 'regular'
-- AND posts.locale = 'en'
-- AND posts.locale is null

```

---

<div class="post-metadata">

### Author: ![nat](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nat/32/235063_2.png) [@nat](https://meta.discourse.org/u/nat)
#### Post date: [June 24, 2026, 5:19pm UTC](https://meta.discourse.org/t/ai-translation-progress-graph/405915/5 "2026-06-24T17:19:29Z")

</div>

Thanks a ton for the feedback @LotusJeff

I’m noting down some of your points here and will make improvements soon™ (probably July).

Re: the DE queries, let me get back to you tomorrow for a more precise one.

---

<div class="post-metadata">

### Author: ![nat](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nat/32/235063_2.png) [@nat](https://meta.discourse.org/u/nat)
#### Post date: [July 24, 2026, 5:04am UTC](https://meta.discourse.org/t/ai-translation-progress-graph/405915/9 "2026-07-24T05:04:37Z")

</div>

> [@nat](#):
>
> let me get back to you tomorrow

Tomorrow took a while…

I had contemplated just responding to you with another [data explorer](https://meta.discourse.org/t/32566?silent=true) query, but I agree the translation progress graph could do with an improvement and it is timely to do so.

Here’s a quick update on what we’ve done:

### loading 💀

Cosmetic, but always nice

 ![loading](https://global.discourse-cdn.com/meta/original/4X/a/f/8/af89f4da507e189a20aafd4ad7b73747c8cccd56.jpeg)

### Cached timing and progress per content type

The loading time for this page is going to be very long because of posts. We already have a cache (2h), and will indicate as well. Since we also do more than posts and topics now, we show progress for them.

 ![breakdown](https://global.discourse-cdn.com/meta/original/4X/0/5/b/05bf28884e351f3a4acf2a461d14835bb69f5102.png)

> **Here's an idea of what it will look like when it's incomplete**
>
> ![incomplete example](https://global.discourse-cdn.com/meta/original/4X/8/f/e/8fefa34d8b0bb0f51f218028824f8a9142a6ebda.jpeg)

### Per-locale breakdown for each content type

This level of detail is actually quite time-consuming to query for, and are details that don’t always need to be seen, so we only show them when the admin wants to see it.

 ![further breakdown](https://global.discourse-cdn.com/meta/original/4X/7/4/b/74bb5ab4171afa7a23d0583616687285eabc2a51.png)

* * *

This is now available, so just update your site and you should be all set.

---

<div class="post-metadata">

### Author: ![LotusJeff](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lotusjeff/32/477888_2.png) [@LotusJeff](https://meta.discourse.org/u/LotusJeff)
#### Post date: [July 27, 2026, 3:55am UTC](https://meta.discourse.org/t/ai-translation-progress-graph/405915/10 "2026-07-27T03:55:53Z")

</div>

I have been traveling for the last couple of days and was able to update tonight.

This is way more useful and self-explanatory. It has a nice overview of what is being translated. Being able to drill into the details by topics and posts is also helpful.

The only thing that appears off is the help icon contents for Eligible within topics/posts. It says “Content already in this language excluded”. This should be the total population waiting to be translated. Minor tweak.

Great job and thank you for making this improvement to the translation status page.

Now, if we could set translations to a date-specific date rather than days in the past to remove the topic/post translation mismatch. I would not have to do any manual tweaking of the translation settings to keep posts and topics date-concurrent.

> [@Request for a date picker in AI Translate settings](https://meta.discourse.org/t/request-for-a-date-picker-in-ai-translate-settings/405828):
>
> Minor Feature request. In the AI Translate Settings field: AI translation backfill max age days Can we get a date picker implemented with this field? For us folks who have forums with content going back decades (1999). It means we are older and don’t want to deal with math in our heads. grinning_face_with_smiling_eyes

---

<div class="post-metadata">

### Author: ![nat](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nat/32/235063_2.png) [@nat](https://meta.discourse.org/u/nat)
#### Post date: [July 27, 2026, 10:02am UTC](https://meta.discourse.org/t/ai-translation-progress-graph/405915/11 "2026-07-27T10:02:10Z")

</div>

> [@LotusJeff](#):
>
> Now, if we could set translations to a date-specific date

Agree. Will chime in on that topic.
