乐趣区

关于运维:如何翻译-Markdown-文件2几种商业及开源解决方案介绍

背景

近期在搭建英文博客 -<e-whisper.com>, 须要对现有的所有中文 Markdown 翻译为英文。

需要如下:

  • 将 Markdown 文件从中文 (zh-CN) 翻译为英文 (en)
  • 翻译后要保留 Markdown 的残缺格局
  • 局部 Markdown block 不须要翻译,如:front-matter、代码块 等

然而理论应用中,试了好几款翻译(包含 Google,DeepL,Azure), 后果发现成果都不现实。

也找到了一些专门针对 markdown 的翻译计划,基本上都是这种计划:将 Markdown 拆分为 ” 段 ”.

一起看看吧。

Markdown 商业及开源解决方案

  • simpleen: 商业版
  • GT4T: 商业版
  • markdown-translator: GitHub 开源我的项目,基于 JavaScript 和 Azure Translate 免费 API
  • Markdown Docs Translator: GitHub 开源我的项目,基于 Python 和 支流收费翻译 API (Yandex/Google/Bing/Deepl)
  • ChatGPT + Prompt(markdown+ 翻译)?

Simpleen

Simpleen 是个在线翻译服务,你能够通过不同的形式应用 Simpleen 来翻译和本地化你的软件:
应用在线 web 翻译器,在本地应用 CLI(间断翻译)或通过 API 自定义应用。其后端是调用 Deppl 的翻译服务。

以下是应用其翻译的成果:

能够看到,翻译除了将[toc] 翻译为 \[toc] 之外,其余都齐全精确。

另外上图也能够看到,Simpleen 定位十分精确,就是针对开发者群体的,还有 Variable 相干性能。

Simpleen 一大特色性能是:Custom Translator, 如:

  • Python-i18n
  • Vue I18n
  • YAML
  • JSON
  • Markdown

同时 Simpleen 也反对自定义词库性能,称为:Glossaries. 能够自定义个人词库。

Simpleen 就是将残缺的 markdown 文档,依照 markdown 语法格局,将其拆分为一个个的 Segment. 并对每一个 Segment 进行翻译,如下:

通过 Segments 也能够看出,Simpleen 是将上篇提到的 2 种办法联合起来实现:

  1. 将 Markdown 转换为 html
  2. 将 html 拆分为 Segments
  3. 将 Segment 逐个翻译
  4. 将翻译后的 Segment html 转换为 markdown.

Simpleen 应用总结

长处:

  • 准确度高
  • 实用的特色性能:Custom Translator
  • 实用的特色性能:Variable 反对
  • 实用的特色性能:Glossaries
  • 底层基于 Deepl, Deepl 的翻译成果是最天然的。
  • 多种应用形式:web/api/cli

毛病:

  • 贵,基于 Segment 免费,价格也贵的厉害。

    • 最便宜的月费也得 $15, 并且只有 1,000 Text Segments

GT4T

📝Reference:

GT4T 不只是又一个翻译利用。它是一个超级插件,能够帮忙你在任何 Windows/Mac 窗口中应用任何语言写作;也是一个超级文件翻译器,你能够不必上传,在你本人的电脑上翻译文件。

官网宣传其特色性能有:

  • 超级插件:运行在 29 个主动翻译引擎之上。无论哪个语言,GT4T 总是能为你提供最好的主动翻译。
  • GT4T 文件翻译器:GT4T 文件翻译器能够批量翻译文件。GT4T 能够解决包含 Office 或桌面出版文档在内的 20 种文件类型。而且如果你从事翻译业务并应用 CAT 工具,你也能够应用 GT4T 来翻译 Trados 或其余 CAT 我的项目。也有本人的词汇表。

其在 [Translate Markdown/reStructuredText/AsciiDoc/DocBook XML and other documents
](https://gt4t.cn/docs/en/file-translator/markdown/) 这里声称能够翻译 Markdown, 具体步骤也很具体,这里就不开展了。

然而我在理论应用中,一方面发现它是个桌面 app, 没有 api/cli, 不适宜开发者的应用需要,另一方面它对 markdown 的翻译后果相比 Simpleen 准确度欠佳。

markdown-translator

应用 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 文档 翻译性能。
然而价格比 文本翻译 略贵。

以下是我的一些感触:

长处:

  • 基于 Azure Translate API, 将 markdown 拆分为 ” 段 ” 后调用一次 API 获取残缺翻译后果,价格可承受
  • 翻译后 Markdown 格局根本没有谬误。
  • CLI 的计划联合一些脚本,能够实现批量翻译,效率很高。

比方很简略的一个脚本,实现批量翻译:

#!/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 Translate API, 我个人感觉 Azure 的翻译成果没有 Deppl 的好。
  • Markdown 内嵌的一些 front-matter 等,翻译还是存在问题。倡议翻译前先将 front-matter 拿掉。
  • 可能还是 Azure Translate API 的问题,对同一个词汇前后会呈现好多不同版本的翻译后词汇(没有自定义词汇表导致的), 另外上下文也不是特地连贯。

目前的集体感触是根本可用,然而还是有一些非凡需要无奈满足,后续我可能会尝试间接应用 Azure 最新提供的 Python SDK 进行开发定制。

Markdown Docs Translator

Markdown Docs Translator 是一个 Markdown 文档的主动翻译器,用 Python 构建。该工具反对多种翻译服务,并提供各种选项来定制翻译过程。

性能:

  • 反对多种翻译服务(Yandex, Google, Bing, Deepl)。
  • 多线程以放慢翻译速度。
  • 笼罩原始文件、删除原始文件或用翻译文本创立一个新文件的选项。
  • 缓存以放慢反复翻译。
  • 动词程度管制。

具体应用办法也是先装置再通过 CLI 应用:

pipx install md-translate
md-translate path_to_file_or_folder -F source_lang -T target_lang -P service [OPTIONS]

之前,我试用了好屡次,都没有胜利,可能是跟它应用的是翻译的收费接口无关,容易被封,无奈提供稳固的服务。

最近看了一下,它曾经改为基于 selenium 模仿浏览器的行为去拜访,可能会好一些。后续有机会试试。

另外它的代码构造也很清晰明了,后续也认真学习一下它的源码。

ChatGPT + Prompt ?

这应该也是一种思路,利用 ChatGPT 的弱小能力。然而关键点在于如何提供无效的 Prompt, Prompt 可能是要强调 Markdown 语法,并利用 ChatGPT 出众的上下文了解和自然语言翻译能力给出翻译后果。

甚至还能够利用 ChatGPT 已有的能力,对文章进行进一步的润色、补充、语气调整等。

将来可期。

不过可能大量翻译的话,API 调用费用会贵上不少吧?

总结

本文很通俗地总结了一些我收集到的 markdown 文档的翻译计划。

次要是基于:将 Markdown 拆分为 ” 段 ” 的思路。

或者是:将 Markdown 拆分为 ” 段 ” 和 将 Markdown 翻译为 HTML 二者联合起来。

这里我理解了 4 种:

  • simpleen: 商业版
  • GT4T: 商业版
  • markdown-translator: GitHub 开源我的项目,基于 JavaScript 和 Azure Translate 免费 API
  • Markdown Docs Translator: GitHub 开源我的项目,基于 Python 和 支流收费翻译 API (Yandex/Google/Bing/Deepl)

相干计划必定很多,笔者因为精力和工夫所限,无奈一一列举。欢送各位补充~

同时也联合近期 ChatGPT 的爆火,提出用 ChatGPT 翻译 markdown 的可能性。

心愿对您有所帮忙。

三人行, 必有我师; 常识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写.

退出移动版