工具分享

Auto-i18n是一个使用 ChatGPT 自动将 Markdown 文件批量翻译为多语言的工具。

特点

Auto-i18n实现了博客文章i18n(Internationalization)的完全自动化。仅需将博文推送至GitHub仓库,即可借助GitHub Actions实现自动转译为多种语言,或者下载源码执行。目前支持英语、西班牙语和阿拉伯语,其他语言只需要根据源码格式修改成对应的即可。

⚠️注意:最好手动校验翻译无误再发布。

⚠️再注意:如果提供的文章不完整,有可能会出现ChatGPT翻译并自动续写完整的情况,也不知道这是BUG还是Feature。(HaHaHa)

补充

如果Markdown中包含Front Matter,将保留Front Matter的原始内容。Front Matter部分参数翻译的功能项目正在开发中。

这里我个人增加了一些Prompts,可以翻译Front Matter中指定参数的内容:

Prompts:”Suppose the following text is a JSON format. The value of the key for {param} translates into {target_lang} and other key are not changed. maintain the original markdown format.\n\n\n{text}\n\n\nTranslated into {target_lang}:”

相关函数为translate_front_matter,可参考auto-translater.py

在翻译文件函数translate_file中增加front_matter_text = translate_front_matter(front_matter_text, lang, 'title')即可只翻译参数为title的内容,其他保持原语言。

⚠️当然,直接交给ChatGPT作内容识别可能会存在错误,仍然需要手动校验。

部署

  1. 源码执行
  • 首先,将仓库克隆到本地。

  • env_template.py重命名为env.py,并填写ChatGPT API信息。

  • 运行pip install openai PyYAML安装必要依赖。

  • 运行auto-translater程序,它会自动处理测试目录testdir/to-translate下的所有Markdown文件,批量翻译为英语、西班牙语、阿拉伯语。

  1. Github Actions执行
  • 可以在自己项目仓库下创建.github/workflows/ci.yml,当检测到GitHub仓库更新后,可以使用GitHub Actions自动进行翻译处理,并自动commit回原仓库。
  • ci.yml的内容可参考模板:ci_template.yml
  • 在仓库的Settings-Secrets and variables-Repository secrets中添加两个secrets:CHATGPT_API_BASECHATGPT_API_KEY,并在程序auto-translater.py中将import env语句注释掉。

平台

全平台支持

Github Actions


声明

本文仅作为工具分享记录。

本文永久记录于区块链博客xlog