我昨天在我的自托管 Discourse 服务器上启用了 AI 翻译功能。一切进展顺利……或者说,勉强算顺利。
翻译进度图要么没有刷新,要么数据不准确。以下是我看到的界面:
这显示自 2026 年 2 月 23 日以来,所有帖子的翻译进度都达到了 99%。
这并不准确。在这个时间段内,我大约有 3,000 个帖子。根据翻译日志,目前它正在处理大约 6 天前的帖子。
所以,有人知道吗:
- 这个图表的刷新频率是多少?
- 等待翻译的帖子的数据探索器(Data Explorer)查询语句是什么?
- 已翻译帖子的数据探索器查询语句是什么?
- 尝试翻译但失败(由于某种错误或原因)的帖子的数据探索器查询语句是什么?
提前感谢。
Falco
(Falco)
2
由于该页面在大型网站上会出现超时,我们不得不对其进行缓存。
翻译基本上分为两个步骤:
- 检测帖子的原始语言
- 翻译成其他所有语言
在初期,您的站点将主要停留在第一步,我们最初在这个翻译进度页面中展示了这一步,但后来因为反馈称其“信息量过大”而将其移除。
话虽如此,这是一个很好的反馈。进度页面的缓存以及缺乏语言环境检测信息,使得该过程初期的体验非常糟糕。
最后一点,我们设置的回填速率非常保守,您可能需要根据您的预算进行调整。
我建议考虑采用更简单的报告方式。
根据我的理解,翻译流程分为两个阶段:
- 翻译符合条件的主题数据。
- 翻译符合条件的帖子数据。
从管理和报告的角度来看,我对当前正在处理的内容不太感兴趣,更关心的是相对于符合条件的总工作量的整体进度。我希望看到的报告应基于配置的翻译资格规则。
例如:
状态
回填设置已配置为翻译2026年2月23日之后创建的所有内容。
| 区域 |
总数 |
符合条件 |
已翻译 |
已完成 |
| 主题 |
25,000 |
540 |
450 |
83% |
| 帖子 |
400,000 |
3,700 |
800 |
22% |
翻译失败
| 帖子 ID |
原因 |
| 34543 |
第 xxxx 行存在格式错误的字符 |
当前的图表似乎显示的是操作活动,这确实很有用。然而,我真正想了解的是符合条件的已完成工作量有多少。
就我个人而言,我对按语言划分的完成百分比并不太感兴趣。一个主题或帖子要么已翻译,要么未翻译。对我来说,关键问题是已成功处理了多少配置的积压工作。
这种方法似乎对数据库也更友好,因为它侧重于聚合计数,而不是跟踪每种语言组合的进度。
如果特定语言的报告仍然有价值,也许可以通过过滤器来展示。管理员可以选择一种语言,仅查看该语言的相同进度表。
仅是一些想法。
附注:
当前的缓存时间范围是多少?
我一直在编写用于生成上述报表的数据探索器 SQL 查询。虽然我不是 SQL 专家,但这些查询目前都能正常运行。下面的查询语句可以提供这一层级的信息。
翻译状态报告
| 区域 |
符合条件 |
已翻译 |
待翻译 |
| 话题 |
540 |
450 |
90 |
| 帖子 |
3,700 |
800 |
2900 |
话题:
-- 设置:
-- 更新 SQL 中的翻译设置
-- 回填天数 - Interval 'xxx'
-- 忽略的类别 - Category_id NOT IN ()
-- 话题类型 - Regular 或 private_message
--
-- 翻译状态:
-- 待翻译的总话题数:注释掉两个 'and topics.locale' 的 where 语句
-- 未翻译的话题:仅取消注释 - topics.locale is null
-- 已翻译的话题:仅取消注释 - 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
帖子:
-- 设置:
-- 更新 SQL 中的翻译设置
-- 回填天数 - Interval 'xxx'
-- 忽略的类别 - Category_id NOT IN ()
-- 话题类型 - Regular 或 private_message
--
-- 翻译状态:
-- 待翻译的总帖子数:注释掉两个 'and posts.locale' 的 where 语句
-- 未翻译的帖子:仅取消注释 - posts.locale is null
-- 已翻译的帖子:仅取消注释 - 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
nat
(Natalie T)
5
非常感谢你的反馈 @LotusJeff
我会记下你提到的几点,并尽快做出改进™(大概是在七月)。
关于德语查询,我明天再给你更精确的答复。
nat
(Natalie T)
9
明天花了一点时间……
我曾考虑过只是用另一个数据浏览器查询来回复你,但我同意翻译进度图确实需要改进,现在正是时候。
以下是我们已完成工作的简要更新:
加载中 
虽然只是外观上的改进,但总是令人愉悦
按内容类型缓存时间和进度
由于帖子较多,此页面的加载时间将会很长。我们已有缓存(2小时),并会加以说明。由于我们现在处理的不仅仅是帖子和主题,因此还会显示它们的进度。
以下是未完成时的预览示例
每种内容类型的按语言环境细分
查询此级别的详细信息实际上非常耗时,而且这些细节并非总是需要查看,因此仅当管理员希望查看时才会显示。
该功能现已可用,因此只需更新您的站点即可。
过去几天我一直在出差,直到今晚才有机会进行更新。
这个功能确实更有用,也更直观易懂。它提供了翻译内容的清晰概览。能够按主题和帖子深入查看详细信息也非常有帮助。
唯一看起来有点不对劲的是主题/帖子中“符合条件”帮助图标的内容。它显示的是“已排除此语言中已有的内容”。这里应该显示的是等待翻译的内容总量。这是一个小调整。
干得漂亮,感谢您对翻译状态页面进行的改进。
现在,如果我们能将翻译设置为特定日期,而不是过去的天数,以消除主题/帖子翻译的不匹配,那该多好。这样我就不必手动调整翻译设置,以保持帖子和主题的日期同步了。