[ANN]The Babel Reunited translation plugin has started public beta testing in the DAO category

本分类已经打开 Babel Reunited 插件,并开始进行公测。

什么是 Babel Reunited 插件:Babel Reunited enters public beta — a new foundation for the future development of Nervos Talk

几点说明:

  • 新发布的帖子会自动翻译为多种语言,帖子上方会出现语言切换标签。
  • 公测期间不会翻译已有的旧帖子,正式上线后会统一对历史帖子进行全量翻译。

如遇到问题或有任何反馈请在此贴反馈: Babel Reunited enters public beta — a new foundation for the future development of Nervos Talk

感谢。

10 Likes

以前的翻译插件有时候翻译出来不太准确,以前发帖的时候,都要中英文各来一遍,增加了不少工作量,这个更新精准地解决了这个痛点。同时,若这个功能可以很好地运行之后,可以进一步优化版区,比如不需要顶层的中文、英文、西班牙语三个顶层版区了。

现在这条我测试一下评论是否支持自动翻译。

  • 评论发出去的时候几个语言选项是灰色不能点击,但稍候我再刷新页面,便可选择了,影响不大
  • 我现在编辑这条评论,查看插件是否正常
    • 正常,符合预期。
6 Likes

评论支持翻译,现在的工作流程是:当文章发出后会立即显示出来(原文),后台会异步用 AI 进行翻译,在翻译完成前,上面几个语言的按钮是灰色的。几秒后翻译结束,按钮会自动高亮且可查看。

目前老帖子的语言按钮也是灰色的,因为老文章没有提前在后台翻译好(正式发布时会翻译),但现在点击灰色按钮后,后台会立刻开始翻译。

另外 Babel Reunited 和 Discourse 默认的翻译最大的区别:Babel Reunited 可以配置不同的大模型进行翻译,目前使用的是 GPT 4.1 mini, 感觉效果及格但比默认的 google 翻译好不少,前后文也大得多。我们论坛的文章有些非常长,默认翻译不支持这么长的上下文。

之后还会测试更高级的模型,看是否可以进一步提高翻译质量,最终找到最适合我们论坛的翻译模型。

7 Likes

好像还是有一些内容没有翻译过来,例如在Declassified: DAO v1.1 Telegram Files - #7 by phroi 这个长文中,点击简体中文以后,还有一些显示的是英文,不知道是不是BUG。

例如

2 Likes

Spotted a couple more issues in: DAO v1.1 Public Testing Report - #2 by phroi

  1. The telegram link disappeared
  2. The quoted text disappeared
  3. @ magicsheep handle disappeared
  4. Links at the bottom are presented differently (not a deal breaker)

See for reference:

vs

Keep up the Great Work, Phroi

这个帖子之前提到的问题应该已经 fix 了,我简单总结一下

根本原因

单次 LLM 请求有输出 token 上限(gpt-4.1-mini 是 32K)。一篇中英混排的长帖翻译成中文,输出 token 很容易撞顶,API 就在半路停了。而且原来的 markdown 保护逻辑把整个链接都替换成 token,模型压根看不到链接文字。另一方面 gpt-4.1-mini 翻译质量确实一般,有很多机器翻译的痕迹。

这次的修复

  1. 分段翻译(Chunked translation)
    长帖自动按段落/代码块切成多个 chunk,每段独立翻译再拼回,不会再被输出上限切断。chunk 边界保留空白,段落不会粘连。
  2. 链接标题能翻译了
    只保护 URL,链接显示文字交给模型翻。
  3. 提示词更明确
    告诉模型要翻译所有外语文本(包括引用、标题),但保留专有名词(Google Workspace、CKB Community Fund DAO 等)原样。
  4. 新增 Claude 支持
    后台可以选 Claude Opus 4.7 / Sonnet 4.6 / Haiku 4.5。实测 Sonnet 4.6 质量明显优于 mini:全角标点、中英文自动加空格、术语统一。

我并有强制触发之前 mini 翻译的文章重新用 Sonnet 翻译,如果你想这么做,可以编辑你的帖子,比如增加一个空格,这样可以手动触发用 Sonnet 重新翻译。

之前提到的帖子 DAO v1.1 Public Testing Report - #2 by phroi ,大部分问题都解决了,还有一些小问题可能需要调试,大家可以试用一下新模型的翻译质量

@phroi @woodbury.bit

5 Likes

Great job!! So far the only minor difference is that bare links previews are rendered differently (for example, see how the following link is rendered on original vs translation). Everything else is perfect! :clap::clap::clap:

BTW should we introduce a new (moderator enabled) mixed language category to broaden the scope of Babel Reunited?

See for example the following:

We could turn it into a CKB Community Fund DAO topic to enable Babel, but it seems arbitrary.

Phroi

2 Likes

Hey @terrytai, Ijust noticed something wrong with a translation formatting: I tried a couple times to work around the issue, but translation seems broken from the first revision until the current one

1 Like

Same issue on this one:

Same issues on this one as the other two :backhand_index_pointing_up:

@phroi 你报的这三个帖子的问题已经定位并修复了,我说明一下。

根本原因

这个 bug 其实是上次那轮修复引入分段翻译时带进来的。长帖会按段落和代码块切成几段分别翻译,问题出在切分点:当一段刚好结束在代码块的结束标记处,段落之间的那个空行被分到了下一段的开头,而翻译返回时开头的空白会被去掉,于是拼回来时就和后面的正文粘在了一起。

markdown 看到这种情况就认为代码块没有闭合,把后面所有内容——标题、表格、列表——全部当成代码显示,直到遇到下一个 ``` 才恢复。所以你看到的是"格式坏掉",但内容其实一个字都没丢,只是渲染错了。

这也解释了你为什么试几次都绕不过去:切分位置完全由文章内容决定,重新翻译结果一模一样,三种语言坏得也完全一致。

修复了三件事

  1. 分段边界的空白处理,保证无论怎么切都能原样拼回。用你报的这三篇原文实测,管线输出与原文逐字节一致。
  2. 译文现在走和原帖完全相同的后处理流程,图片能放大了,链接也会展开成预览卡片(10360
    那篇的架构图之前在译文里直接变成了一行 upload:// 文本)。
  3. 翻译时链接和代码会被替换成占位符避免模型改动,如果模型把占位符吞了,以前会静默存一份缺内容的译文,现在直接判定失败。之前 telegram 链接和 @handle 消失就是这个原因。

另外补了一组回归测试,直接用你报的这三篇当测试数据,以后再改分段逻辑弄坏了会立刻发现。

具体实现感兴趣的话可以看这几个 commit:Comparing 5d4898b...11c9c7d · BlackKingBarOrg/babel-reunited · GitHub

部署安排(已部署到 production)

代码已经提交给管理员,部署完成后会统一重新翻译这三个帖子。之后如果还发现哪个帖子翻译有问题,作者自己就能触发重译:编辑帖子随便加一个空格保存即可。系统靠内容 hash 判断是否需要重译,hash 一变就会自动重新翻译。

感谢持续反馈问题,这三个案例信息很完整,帮了大忙。

3 Likes