AI摘要
如果你平时主要用中文写博客,但又希望英文访客能看懂文章内容,那么 SmartTranslate 这类“后台预生成英文翻译”的方案,会比前台实时调用 AI 更适合长期使用。
这个插件是基于 Typecho 做的一个文章翻译增强插件,核心思路很简单:
- 原始中文文章保持不变
- 后台批量生成英文翻译
- 英文结果写入 Typecho 自定义字段
- 前台直接读取英文内容
- 用户可在主题设置面板里切换显示英文
目前这套方案主要在 Handsome 主题 下使用和调试,其他主题暂未测试。
插件特点
SmartTranslate` 目前的主要功能包括:
- 支持通过 OpenAI 兼容接口生成英文翻译
- 支持后台批量生成文章英文内容
- 支持把翻译结果保存到 Typecho 自定义字段
- 支持手动编辑英文标题和英文正文
- 前台不实时请求 AI,访问更稳定
- 可接入 Handsome 主题右侧小齿轮设置面板
- 适合“中文原文 + 英文展示”的博客场景
和前台实时翻译相比,这种方式的优势很明显:
- 不容易卡页面
- 不影响访客阅读
- 不暴露 API Key
- 译文可人工修订
- 更适合正式博客环境
适用场景
这个插件更适合下面这类博客:
- 主要写中文技术文章
- 想兼顾英文访客阅读
- 不想维护一篇文章两份内容
- 希望翻译结果可以后续人工修改
- 使用 Typecho 搭建个人博客
- 当前主题为 Handsome
需要说明的是:
当前版本主要适配 Handsome 主题,其他主题暂未做完整兼容测试。
如果你不是 Handsome 用户,建议先在测试环境自行验证。
工作原理
插件当前采用的是“后台生成,前台读取”的思路。
完整流程如下:
- 在后台配置翻译接口
- 后台批量生成文章英文翻译
- 插件把英文标题和英文正文写入 Typecho 字段
- 前台根据访客环境或手动开关决定是否显示英文
- 如果需要,还可以继续手动编辑译文
也就是说,前台本身不负责“翻译”,只负责“展示已经生成好的英文内容”。
翻译结果存储方式
插件不会修改原始文章正文,而是把英文内容保存到 Typecho 自定义字段中。
当前使用的字段名是:
smart_translate_en_title
smart_translate_en_body含义如下:
- smart\_translate\_en\_title:英文标题
- smart\_translate\_en\_body:英文正文 HTML
这样做的好处是:
- 原始文章不受影响
- Typecho 原生结构兼容性更好
- 方便手动编辑和备份
- 以后也更方便扩展其他语言
安装方式
把插件目录上传到:
/usr/plugins/SmartTranslate/
然后进入 Typecho 后台,在插件列表中启用它。
插件配置教程
启用后,先进入插件设置页,配置翻译接口参数。
1. 启用插件
先确认插件已开启。
如果你刚修改过代码或接口参数,建议重新保存一次配置。
2. API Key
填写你的接口密钥
3. Provider URL
填写兼容 OpenAI 的接口地址,例如:
https://api.openai.com
插件会自动兼容常见写法。
4. Model
填写你要使用的模型,例如:
gpt-4o-mini
如果你使用的是第三方兼容服务,也可以填该服务支持的模型名。
5. 请求超时
如果文章较长,建议把请求超时设置得宽松一些。
推荐值:
60
如果你的接口响应较慢,可以适当调高。
6. 调试日志
测试阶段建议开启,便于排查:
- 接口超时
- 返回为空
- 模型名称不支持
- 翻译未写入字段
等功能稳定后再关闭。
使用方法
1. 后台批量生成英文翻译
进入插件后台管理页后,可以对文章执行批量英文翻译生成。
插件会读取文章原文,生成英文标题和英文正文,并保存到对应字段中。
2. 编辑已生成的英文内容
如果你希望对翻译做人工润色,可以点击文章标题或文章 CID,进入翻译编辑页。
在这里你可以修改:
- 英文标题
- 英文正文
修改后保存即可,前台读取的就是你最终保存的版本。
3. 前台显示英文内容
当前台检测到英文环境,或者用户手动开启英文显示时,插件会优先读取字段中的英文内容并展示。
如果某篇文章还没有生成英文翻译,则前台仍然显示中文原文,不影响正常访问。
Handsome 主题适配说明
这套插件目前主要面向 Handsome 主题 使用。
目前适配内容主要包括:
- 接入右侧小齿轮设置面板
- 在主题设置面板中放置英文显示开关
- 支持文章页与列表页的英文内容切换
- 尽量兼容 Handsome 的前端交互方式
但仍需说明:
目前仅确认 Handsome 主题适用,其他主题未测试。
如果你使用的是其他 Typecho 主题,可能会遇到下面这些情况:
- 设置面板无法正常挂载
- 文章标题选择器不匹配
- 列表页英文标题不显示
- PJAX 逻辑不兼容
所以非 Handsome 用户建议优先自行测试。
为什么选择“后台预生成”而不是“前台实时翻译”
一开始更容易想到的方案,通常是访客打开页面时直接调用 AI 翻译。
但这种方式在博客场景下问题很多:
- 首次访问容易卡
- 页面滚动和交互可能受影响
- PJAX 场景容易出现切换异常
- 接口超时会直接影响阅读体验
- 成本不可控
所以当前版本选择了更稳妥的方式:
- 后台生成
- 字段存储
- 前台只读
这更适合技术博客、个人站点和长期维护。
当前版本说明
目前这套插件更适合这样使用:
- 用中文写文章
- 后台统一生成英文版
- 需要时再手动修正文案
- 前台给英文访客展示英文内容
它不是完整的多语言博客系统,而是一个更偏“英文展示增强”的方案。
后续可扩展方向
如果后面继续完善,可以考虑增加这些功能:
1. 支持更多语言
例如:
- 日文
- 韩文
- 法文
2. 增加翻译状态标记
例如:
- 未生成
- 已生成
- 已人工修订
3. 原文更新后提醒重新翻译
如果中文原文修改过,可以提示重新生成英文内容。
4. 多语言 SEO 支持
例如:
- hreflang
- 独立英文路由
- 英文页面 meta 信息