近期在搭建英文博客-<e-whisper.com>, 需要对现有的所有中文 Markdown 翻译为英文。
需求如下:
但是实际使用中,试了好几款翻译(包括 Google,DeepL,Azure), 结果发现效果都不理想。
也找到了一些专门针对 markdown 的翻译方案,基本上都是这种方案:将 Markdown 拆分为"段".
一起看看吧。
Simpleen 是个在线翻译服务,你可以通过不同的方式使用 Simpleen 来翻译和本地化你的软件:
使用在线 web 翻译器,在本地使用 CLI(连续翻译)或通过 API 自定义使用。其后端是调用 Deppl 的翻译服务。
以下是使用其翻译的效果:
可以看到,翻译除了将[toc]
翻译为 \[toc]
之外,其他都完全准确。
另外上图也可以看到,Simpleen 定位非常准确,就是针对开发者群体的,还有 Variable 相关功能。
Simpleen 一大特色功能是:Custom Translator, 如:
同时 Simpleen 也支持自定义词库功能,称为:Glossaries. 可以自定义个人词库。
Simpleen 就是将完整的 markdown 文档,按照 markdown 语法格式,将其拆分为一个个的 Segment. 并对每一个 Segment 进行翻译,如下:
通过 Segments 也可以看出,Simpleen 是将上篇提到的 2 种方法结合起来实现:
优点:
缺点:
📝Reference:
GT4T 不只是又一个翻译应用。它是一个超级插件,可以帮助你在任何 Windows/Mac 窗口中使用任何语言写作;也是一个超级文件翻译器,你可以不用上传,在你自己的电脑上翻译文件。
官方宣传其特色功能有:
其在 Translate Markdown/reStructuredText/AsciiDoc/DocBook XML and other documents
这里宣称可以翻译 Markdown, 具体步骤也很详细,这里就不展开了。
但是我在实际使用中,一方面发现它是个桌面 app, 没有 api/cli, 不适合开发者的使用需求,另一方面它对 markdown 的翻译结果相比 Simpleen 准确度欠佳。
使用 Azure 文本翻译 API 直接翻译 Markdown 文件
其使用的前提条件是:从 Azure 服务 获取文本翻译 API 密钥
主要是通过 CLI 的方式使用:
# install cli
npm install markdown-translator -g
# set key from Azure Text Translate API
md-translator set --key <your key>
md-translator set --region <your region>
# do translate
md-translator translate --src README.md --dest README.zh.md --to zh
# get more information
md-translator --help
也可以通过模块方式使用:
# install module
npm install markdown-translator
const markdownTranslate = require('markdown-translator')
markdownTranslate({
src,
// 要么
text,
from,
to,
subscriptionKey,
}).then((res) => {
// deal with result
})
目前我的英文站:https://e-whisper.com/ 就是完全基于这种方式翻译的。大家可以去访问看一下,评价一下翻译效果怎么样。
它的实现方案也是:将 markdown 文档拆分为"段", 再进行翻译。
后端调用的是 Azure https://api.cognitive.microsofttranslator.com/ 的 3.0 的文本翻译接口。
另外 Azure 也直接支持 Markdown 文档 翻译功能。
但是价格比文本翻译略贵。
以下是我的一些感受:
优点:
比如很简单的一个脚本,实现批量翻译:
#!/bin/bash
# 遍历指定目录下的所有文件
for MD in source/_posts/*; do
echo "------Translating ${MD}------"
md-translator translate --from zh-CN --to en --src ${MD} --dest ${MD} 2>&1 >>logs/md-translator.log
done
缺点:
目前的个人感受是基本可用,但是还是有一些特殊需求无法满足,后续我可能会尝试直接使用 Azure 最新提供的 Python SDK 进行开发定制。
Markdown Docs Translator 是一个 Markdown 文档的自动翻译器,用 Python 构建。该工具支持多种翻译服务,并提供各种选项来定制翻译过程。
功能:
具体使用方法也是先安装再通过 CLI 使用:
pipx install md-translate
md-translate path_to_file_or_folder -F source_lang -T target_lang -P service [OPTIONS]
之前,我试用了好多次,都没有成功,可能是跟它使用的是翻译的免费接口有关,容易被封,无法提供稳定的服务。
最近看了一下,它已经改为基于 selenium 模拟浏览器的行为去访问,可能会好一些。后续有机会试试。
另外它的代码结构也很清晰明了,后续也仔细学习一下它的源码。
这应该也是一种思路,利用 ChatGPT 的强大能力。但是关键点在于如何提供有效的 Prompt, Prompt 可能是要强调 Markdown 语法,并利用 ChatGPT 出众的上下文理解和自然语言翻译能力给出翻译结果。
甚至还可以利用 ChatGPT 已有的能力,对文章进行进一步的润色、补充、语气调整等。
未来可期。
不过可能大量翻译的话,API 调用费用会贵上不少吧?
本文很浅显地总结了一些我收集到的 markdown 文档的翻译方案。
主要是基于:将 Markdown 拆分为"段" 的思路。
或者是:将 Markdown 拆分为"段" 和 将 Markdown 翻译为 HTML 二者结合起来。
这里我了解了 4 种:
相关方案肯定很多,笔者由于精力和时间所限,无法一一列举。欢迎各位补充~
同时也结合近期 ChatGPT 的爆火,提出用 ChatGPT 翻译 markdown 的可能性。
希望对您有所帮助。