获得 250$ 的奖励——我是这样给 Astro 贡献文档翻译
文档翻译——你的开源起点
可能有很多人想要参与开源做一些实质性的项目,却不知道该从哪开始。而文档翻译是一个很好的起点,因为它不需要你有很多的技术基础,只需要你有一定的英语基础,能够看懂英文文档,然后翻译成中文就可以了。这就有点类似于我们看电影时的字幕组角色。
为什么文档需要翻译?
作为一名程序员,想想你在学习一门技术时,如果有中文文档,那么你会选择看中文文档还是英文文档?我想大部分人都会选择看中文文档。毕竟我们母语本身就是中文,所以能更快阅读和理解当中的内容;但当一个文档只有英文版本时,除了需要借助翻译工具之外,甚至还需要我们的脑子还将其「编译」成中文才能进一步理解文档所表达的意思。
文档翻译是一件双赢的事情,不仅是满足使用者(即程序员)需要,也有利于开源项目的进一步推广,毕竟 i18n(internationalization,国际化)也是衡量一个开源项目质量的重要参考。但这个事情单靠项目作者是不可能完成对所有语言的支持,因此就得借助开源社区的力量。
我最开始翻译的文档是为 Python 中目前知名的 TUI 框架 Textual 翻译其 Tutorial 文档,告诉用户该如何快速上手 Textual。可惜的是 Textual 当时还处于比较早期的阶段,并没有发布稳定版本,所以理所当然我这个 PR(Pull Request)最终就被毙掉了。
这也提醒每个在参与开源项目的人,在提交 PR 之前最好先通过 Issue 或者其他方式与项目作者进行沟通,避免重复性工作或者做无用功。
给 Astro 贡献翻译
2022 年到 2023 年间我处于裸辞躺平的状态,相比于工作来说会悠闲和轻松不少,也让我探索了不少工作之外的人生道路,比如创作付费栏目和写作成为自己的第一副业,又比如给 Astro 贡献翻译以消磨时光。
最开始我也并没有想过通过 Astro 贡献翻译来获得奖励金,只是恰好碰到了 liruifengv 在推特上发布一则推文问是否有人愿意帮忙翻译 Astro 的文档,我就顺手回复了一下,没想到后来就真的开始了翻译。
当天就有好多位朋友参与到了翻译中,liruifengv 直接单独开了一个 Issue 方便大家认领翻译任务,只不过那时我比较闲没有上班所以就「全力输出」完成了不少翻译任务,多线输出。
经过所有人的努力,我们仅大概两周的时间 Astro 的中文文档就已经和英文文档保持了绝对的同步,Astro 官方也对此进行了转发。
翻译流程
除了时间充裕之外,翻译时我尽可能将流程标准化这样基本上每次就只是重复性地经历几个过程,而不需要太多的修改。
首先,在翻译之前只需要访问 Astro 官方搭建的 i18n 翻译状态追踪页面,查看中文文档哪些文档需要被更新或翻译。不得不说 Astro 官方的这套系统十分好用,它可以清楚地显示当前哪些文档需要被翻译又或是哪些文档的翻译需要被更新,以及每个文档的翻译进度如何。这也是 Astro 中文文档能在短短两个星期左右就完成翻译的重要原因之一。当然这个过程你可以做成自动化,类似于爬虫或者 RSS 订阅,这样你就可以在文档更新时第一时间得到通知。
紧接就是在开源社区一套普遍的流程:Fork Astro 的文档仓库(如果已 Fork 则省略),然后将你 Fork 后的仓库 Clone 到本地然后创建一个 Git 分支并在此之上进行翻译或更新,最后推送至 GitHub 上并创建 PR(Pull Request)等待其他人审核(Review)并合并到主分支。
当然以下有一些特别的注意事项仅供参考:
- 在你着手开始之前,最好是先到 Astro 文档仓库的 Pull Request 页面筛选并查询一下看看是否有人已经在翻译了,避免重复性工作或翻译冲突,如果没有人在翻译那么你就可以开始在本地进行翻译了;
- 尽可能地将关联更新的文档放在一个 PR 中进行翻译或更新,方便追踪;
- 偶尔要检查一下当前所翻译或更新文档的上游是否有更新,GitHub 提供了文件的历史提交记录页面方便你核对。
可能以上的流程在从文字层面看起来会有些复杂,但实际上只要你熟悉了之后就很快能够快速地上手,这个过程也能帮助你加深对 Git 命令的掌握。
善用工具
除此之外,我在翻译或更新内容时也会用到一些工具进行辅助。因为我本身就是一个不折不扣的工具控,不论是在写前端还是后端项目,我总会希望通过某些工具链来帮助我提升代码质量,如 Linter 或者 Formatter 等。当然即便是写纯文本时也是如此,这也包括翻译文档。
时至今日我一直在用 Autocorrect 来帮助我格式化 Markdown(或 MDX)中的内容,以实现更好的排版。它是一个类似于 盘古之白 的文本格式化工具,尤其适合 CJK 的文本格式化,它可以自动在中文和英文之间添加空格,并统一将英文标点符号转换成中文标点符号等。这个工具基于 Rust 编写,性能强劲并且提供了 VS Code 插件,即便我在进行长文创作时都能快速地对内容进行格式化。
当然这仅是我工具链中的一环,如果你对此感兴趣,可以阅读我早期在少数派上写过一篇的文章:《如何在 VS Code 上配置一套趁手的写作环境》
除此之外就是使用 ChatGPT。毕竟在 AI 爆发元年,不使用 AI 工具的人会显得有些过于落伍。相信你或多或少已经在网上见识到了不少 AI 的能力展示,这里我也就不过多赘述。AI 在重复性内容上往往做的会比人类更好——比如翻译。因此在为 Astro 翻译文档时很大程度上我都会借助 ChatGPT 辅助,以加快我的翻译速度。
以下是我在翻译时所使用的 Prompt:
以上的 Prompt 你仍可以进一步修改,或者使用 宝玉 xp 的 Prompt 技巧 以提升 ChatGPT 的翻译质量,告别「机翻感」。
看到这有人会说,那你不就是作弊了吗?
诚然,即便是如今的图文出版社编辑和译者在将外国书籍进行本土化翻译时,也是先借助必要的翻译工具进行粗略的机翻,然后再由人工进行精校。毕竟那么多内容,如果像中学做英语阅读理解那样去逐字逐句翻译,效率非常低下;同理,我借助 ChatGPT 来翻译也是如此,毕竟开源本不是我们的本职工作,都全凭个人热爱利用业余时间进行,所以如何提高个人时间的利用率是门方法论。
不过如果你正打算利用翻译来提升你的英语水平,那么逐字逐句翻译是一个不错的选择,因为这样你可以更好地理解原文的含义,从而更好地进行翻译。
需要指出的是,即便使用了 ChatGPT 得到的翻译内容也不是完美的,仍需要我们进一步去润色,比如在翻译《Deploy your Astro Site to AWS》 时,原文开头中有一段内容是这样说的:
AWS is a full-featured web app hosting platform that can be used to deploy an Astro site. Deploying your project to AWS requires using the AWS console. (Most of these actions can also be done using the AWS CLI). This guide will walk you through the steps to deploy your site to AWS starting with the most basic method. Then, it will demonstrate adding additional services to improve cost efficiency and performance.
通过 ChatGPT 得到的内容是:
AWS 是一个功能全面的 web 应用托管平台,可以用来部署 Astro 网站。 将你的项目部署到 AWS 需要使用 AWS 控制台。(大部分这些操作也可以通过 AWS CLI 来完成)。本指南将带领你从最基本的方法开始,一步步部署你的网站到 AWS。然后,它将展示如何添加额外的服务以提高成本效率和性能。
翻译无功无过,但对「it will demonstrate adding additional services to improve cost efficiency and performance.」这部分我觉得 ChatGPT 翻译得过于平实。因为「improve cost efficiency and performance」完全可以用 2023 年的一个网络热词来概括——降本增效。
「降本增效」这一词颇具讽刺意味,不得不说这在 Astro 中文文档中增添了很多乐趣,相信当国内的程序员来读到这里时应该会不自觉地会心一笑。所以最后我就在 ChatGPT 的基础上进行了润色,将原本「它将展示如何添加额外的服务以提高成本效率和性能。」翻译成了「它将展示如何添加额外的服务以降本增效。」
结尾
在获得 Astro 社区奖励金之前,我和 liruifengv 也曾获得过 Astro 官方所发的一套包含了贴纸和棒球帽的周边,这也是我第一从开源中获得精神外的物质奖励。
但没想到 2024 年初就收到了来自于 Astro 社区的奖励金,某种程度上也算是对我去年一段时间努力的认可。
当然这些都还是次要的,而给 Astro 贡献文档翻译这个过程所给我带来的意义才是最重要的:开源很酷,得到了别人的认可也很酷,能在世界一隅留下自己的足迹也很酷。