如何翻译 Markdown 文件?-2-几种商业及开源解决方案介绍

news2025/2/23 18:05:03

背景

近期在搭建英文博客-<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 的翻译服务。

以下是使用其翻译的效果:

Simpleen 翻译效果

可以看到,翻译除了将[toc] 翻译为 \[toc] 之外,其他都完全准确。

另外上图也可以看到,Simpleen 定位非常准确,就是针对开发者群体的,还有 Variable 相关功能。

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

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

同时 Simpleen 也支持自定义词库功能,称为:Glossaries. 可以自定义个人词库。

Simpleen 就是将完整的 markdown 文档,按照 markdown 语法格式,将其拆分为一个个的 Segment. 并对每一个 Segment 进行翻译,如下:

Simpleen Segments

通过 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

Simpleen Price

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 这里宣称可以翻译 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 编写.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/656247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑蓝屏问题

如何使用DISM命令行工具修复Windows 10映像 - 系统极客 (sysgeek.cn) 电脑每周基本都会出现一次蓝屏问题&#xff1a;THREAD_STUCK_IN_DEVICE_DRIVER 售后重装系统&#xff0c;换主板&#xff0c;换硬盘都没有用&#xff0c;实在是人麻了 不知道有没有用&#xff0c;先记录一…

“边玩边赚”的区块链游戏发展前景和趋势

2008年&#xff0c;一个真实的故事。 大学期间&#xff0c;睡在我下铺的兄弟没日没夜地玩一款电脑游戏——《热血江湖》&#xff0c;期末考试和考研都没能阻止他。而最终&#xff0c;是游戏里的一把枪让他改邪归正。因为他把那件装备卖给了一个北京人&#xff0c;价格高达3000…

IT专业相关介绍【活动】

IT专业相关介绍【活动】 前言IT专业相关介绍一、IT专业的就业前景和发展趋势二、了解IT专业的分类和方向三、你对本专业的看法和感想四、本专业对人能力素养的要求五、建议和思考六、计算机思维能力测试 最后 前言 2023-6-17 10:00:29 以下内容源自《【活动】》 仅供学习交流…

Spring-kafka的消费者模型和实现原理

在使用Spring-kafka时,一般都是通过使用@KafkaListener注解的方法来实现消息监听和消费。今天写一下基于这个注解实现的消费端模型和实现的原理。 Kafka消费模型 我们在使用@KafkaListener注解实现消费者时消费者模型是这样的: 每个@KafkaListener注解对应有一个Concurren…

python窗口程序button事件处理

import tkinter as tk def add_counter(): #增加计数print("add....")def zero_counter(): #归零计数print("zero....")#窗口的属性&#xff08;大小&#xff0c;&#xff09; root tk.Tk() root.geometry("400x200200200") root.title(&q…

亚马逊云科技中国峰会:深度学习Amazon DeepRacer

序言 Amazon DeepRacer是什么&#xff1f; Amazon DeepRacer是亚马逊推出的一款基于深度学习和强化学习技术的自主驾驶模拟赛车平台。它提供了一个云端仿真环境和一个物理赛车模型&#xff0c;让用户可以通过编写代码和训练模型来控制赛车的行驶&#xff0c;从而学习和应用深…

【LeetCode】HOT 100(14)

题单介绍&#xff1a; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合初识算法与数据结构的新手和想要在短时间内高效提升的人&#xff0c;熟练掌握这 100 道题&#xff0c;你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

音视频开发Level0: 入门级20~25k的工作

今天给大家分享一个音视频开发领域&#xff0c;入门级别的工作&#xff0c;要求不高。 主要做什么呢&#xff0c;行车记录仪&#xff0c;运动相机&#xff0c;各种拍摄器材包括医疗领域的喉镜啊&#xff0c;等等。 这种产品&#xff0c;招人的公司深圳最多&#xff0c;因为深…

Mac 多版本jdk安装与切换

macOS上可以安装多个版本的jdk&#xff0c;方法如下&#xff1a; 1.下载jdk 在Oracle官网上下载不同版本的jdk&#xff1a; JDK下载 知乎 - 安全中心 下载Java11版本链接 jdk11​www.oracle.com/java/technologies/javase-jdk11-downloads.html 2.安装jdk 运行此安装包&…

electron-vue 安装 sqlite3 详细步骤

1 安装 Visual Studio 2019 使用 Visual Studio instaler 安装Visual Studio 2019&#xff0c; 安装桌面应用 使用c的桌面开发, 勾选 MSVC 相应的选项。 2. 安装 node 13 版本 可以根据自己实际情况安装版本 使用 cmd 管理员身份或者 powerShell 管理员身份 执行以下命令&…

骨传导蓝牙立体声耳机怎么选,列举几款值得购买的骨传导耳机

骨传导耳机的出现&#xff0c;使得很多人摆脱了佩戴入耳式耳机的困扰&#xff0c;同时也为骨传导耳机的发展起到了很大的推动作用。骨传导耳机是一种通过骨头传声的耳机&#xff0c;由于其不需要入耳&#xff0c;所以不会因为长时间佩戴而引起耳道的不适感&#xff0c;在使用时…

baichuan-7B: 开源可商用支持中英文的最好大模型

背景 baichuan-7B 是由百川智能开发的一个开源可商用的大规模预训练语言模型。 基于 Transformer 结构&#xff0c;在大约1.2万亿 tokens 上训练的70亿参数模型&#xff0c;支持中英双语&#xff0c;上下文窗口长度为4096。 在标准的中文和英文权威 benchmark&#xff08;C-…

【FreeRTOS】——列表与列表项列表相关API函数(初始化、插入、移除)

目录 前言&#xff1a; 一、列表与列表项 二、列表相关API函数 ①初始化列表vListInitialise() ②初始化列表项vListInitialise() ③列表插入列表项&#xff08;升序&#xff09;函数vListInsert() ④列表插入列表项&#xff08;无序&#xff09;函数vListInsertEnd() …

开源赋能 普惠未来——回顾全球数字经济大会及开放原子全球开源峰会(Intel专题)

一、峰会背景 2023年6月11日至13日&#xff0c;中国北京迎来了一场全球数字经济大会和开放原子全球开源峰会的盛会。这次大会在北京北人亦创国际会展中心隆重举行&#xff0c;为来自世界各地的数字经济和开源社区的代表们提供了一个共同交流、合作的平台。 本次大会以"开…

GAMES101笔记 Lecture02 线性代数基础

目录 A Swift and Brutal Introduction to Linear AlgebraGarphics Dependencies(图形学的依赖)Basic mathematics(基础的数学)Basic physics(基础的物理)Misc(杂项)And a bit of asethetics(以及一点美学) Vectors(向量)Vector Normalization(向量归一化)Vector Addition(向量…

记录好项目D7

记录好项目 你好呀&#xff0c;这里是我专门记录一下从某些地方收集起来的项目&#xff0c;对项目修改&#xff0c;进行添砖加瓦&#xff0c;变成自己的闪亮项目。修修补补也可以成为毕设哦 本次的项目是个酒店预订管理系统 技术栈&#xff1a;springbootjavamysqlmybatis …

从0到1学会在Linux中部署SpringBoot+Vue前后端分离项目

1.打包Vue前端项目 使用npm run build命令打包前端项目 前端项目会 打包到dist文件夹中 2.打包SpringBoot后端项目 点击生命周期的package命令&#xff0c;对后端项目进行打包 target目录下的renren-fast.jar就是刚刚打包的后端项目 后端打包项目有一个小技巧&#xff0c;就…

基于VUE3+Layui从头搭建通用后台管理系统(前端篇)一:项目规划及初始化

一、项目内容 使用vue3+Layui实现通用管理系统前端,使用vue3+layui搭建系统UI界面,使用nodejs搭建模拟web服务器,使用echarts实现系统可视化模块,可以此项目为基础进行扩展开发,快速搭建管理系统,具体内容如下:   1. 常见功能实现: 实现用户登录(用户名密码登录、手…

【c语言】 -- 详解数组篇

&#x1f4d5;博主介绍&#xff1a;目前大一正在学习c语言&#xff0c;数据结构&#xff0c;计算机网络。 c语言学习&#xff0c;是为了更好的学习其他的编程语言&#xff0c;C语言是母体语言&#xff0c;是人机交互接近底层的桥梁。 本章来学习数据的存储。 让我们开启c语言学…

XSS测试-业务安全测试实操(11)

XSS测试 测试原理和方法 跨站脚本漏洞是Web应用程序在将数据输出到网页的时候存在问题,导致恶意攻击者可以往Web页面里插入恶意JavaScript、HTML代码,并将构造的恶意数据显示在页面的漏洞中。攻击者一般利用此漏洞窃取或操纵客户会话和 Cookie,用于模仿合法用户,从而使攻击…