MDN翻译小总结

加入MDN翻译

一开始学习前端时经常查的手册是 www.w3school.com.cncss.doyoe.com,后来在金山的招聘信息中看到了很多新的前端技术名词,其中有 MDN。发现 MDN 上面的要更详细些,尤其是 DOM 方面,好吧其实是很多方面,所以经常会在午休甚至上班时间学习 MDN 上面的基础知识。为啥说在午休及甚至上班呢?这是我第一份前端工作,特点是:工资少,加班多。

大概过了四五个月之后,2014年五月份换了一份工作,在学习怎么输出格式化的 JSON 数据时,在 MDN 上了解到了 JSON.stringify() 方法的第二第三个参数,顺便也学习了JSON.parse()方法。突然发觉自己能翻译这两个页面时,就顺便翻译了。第二天看到紫云飞修改了一下,我就查看改了哪些,发现自己确实没翻译好,那两个方法没有理解透。不过 MDN 翻译之路已经起步了,慢慢总结需要改进的地方。

然后,我加入了 MDN 中文翻译的 Leader 紫云飞创建的一个群,这个群联系方式页面太难找了,以至于我再找时都找不到了,我加入群里时算上我只有三个人。正好换的工作双休、不加班,且工作不繁忙,我就晚上用来学习及翻译 MDN 上面的文档,主要是 JavaScript 内置对象的属性和方法。翻译的速度并不算快,因为我要先技术过关,即使以前学过,但是一些细节需要学习,而且有些句子并不好翻译。快的话,10分钟能翻译一个页面,慢的话一晚上可能都翻译不完一个页面。七八两个月份是高产期,到九月份之后,工作忙了,晚上大部分时间学习 seajs、nodejs、hexo 等其他知识了,翻译就慢下来了。而且有时候会想翻译 MDN 有什么意义,因为我怀疑会有多少人看 MDN 的中文页面呢,基础的前端 JavaScript 知识可以通过《JavaScript权威指南》和《JavaScript高级程序设计》来学习,而且也有国内的参考手册。当然我没有页面浏览的数据,所以觉得人少只是自己的臆测。另外,对我自己来说还是有意义的,一来学习基础知识,二来增加点儿翻译经验。

几个方面的总结:

我的翻译流程:

  1. 通读英文文档,并练习,有不少是以前学过,但是学得不细的;
  2. 如果有插入超链接,复制Source并把“en-US”替换为“zh-CN”,这是紫云飞教的,我一直手动一个个改的,反正也不多;
  3. 先把标题快速翻译完;
  4. 从头开始往下翻译,不断查字典,不断做练习等,直到翻译完;
  5. 通读一遍查看错别字及格式错误;
  6. 提交,再浏览一遍确认。

MDN文档编辑器

需要调整格式的地方并不多,只需保留英文文档格式通常就可以了。经常用的格式也就是H2H3pCode,以及插入链接和代码块。我以前遇到的最大麻烦就是插入代码块老是有问题,不是没有高亮效果,就是高亮嵌套高亮了,后来明白了选择Syntax Highlighter下拉列表对应的编程语言,初始化一个代码块,然后将英文的代码块复制粘贴到初始化的代码块中,但必须粘贴纯文本

另外一个要学习的地方就是 MDN 的宏标记,或者叫宏标签,英文称为“Custom macros”,可以查看 Custom macros,比如{% raw %}{{APIRef("DOM Events")}}{% endraw %}用来显示文档左侧的树形导航,比如{% raw %}{{jsxref("Boolean")}}{% endraw %}用来插入链接到Boolean对象页面的超链接,且语言为当前文档采用的语言。还可以查看相应宏标记的源码:https://developer.mozilla.org/en-US/docs/Template:jsxref

中英文混合编辑

主要有两个问题:一是中文和英文之间是否有空格;二是标点符号的使用,主要就是引号、括号、中文顿号与英文逗号。我参考了知乎上面的回答,我自己选择加空格,文章以中文为主时,也以中文标点为主。请查看知乎的讨论:

当然,这个问题以及排版问题对我来说很复杂,涉及很多细节,我只是统一了自己的风格。MDN 上面各人编辑的风格也不同,目前没有统一的规范供参考。

术语管理

这里的术语主要包括前端技术术语以及标题。前端技术术语一部分自然属于计算机科学与技术,另一部分是前端独有的,甚至会出现创造的词汇。我个人对于那些翻译很固定的词汇才会只保留中文,对于其他的会在括号里面注明英文,毕竟有部分英文术语可能有两种或多种中文翻译,怕拿捏不准;对于新出现的词汇一定保留英文,有些感觉一时很难翻译,或者一句话才能讲清楚。

而对于标题,主要是一二级标题,因为这些是文档之间公用的,而且又是很多人在翻译,所以还是要统一管理的。虽然 MDN 提供了术语的管理页面,但是极少查看,作用不大。

国内有计算机技术相关的术语库:国家科技名词审查委员会微软的术语库。但是这两个只是供参考用的,既无法解决术语的统一性,也无法解决前端技术的快速发展。所以我有时会参考《JavaScript高级程序设计》这本书的一些术语翻译,之所以会参考这本,因为手头上没有其他相关的前端书,这本书的翻译质量高,读的人多。当然我确实应该参考更多的前端及其他计算机编程书籍的,另外也经常查有道词典。

所以,我期待能有个专门管理术语的网站,就像 github 一样,可以在翻译某个项目时建立一个术语库,可以在翻译某本书时建立一个术语库,也可以专门为前端建立一个权威的术语库,人人都可以建立,最终马太效应会让术语变得统一,我想这也符合语言的发展规律吧,统一才能交流。不仅仅计算机领域,各行各业都要翻译,也不仅仅英语翻译为中文,日语、韩语、俄语都需要。

中文翻译贡献者

以前紫云飞做过一个 2014 年统计,大概有 400 个人都翻译过。不过,70%都只翻译了一个页面,这其中又有不少只翻译了一句话。我也不知道为什么他们只翻译一个页面就不再翻译了。我猜想可能的原因:翻译比较枯燥,只是尝鲜的,编辑器不好用,觉得难翻译的,只是顺手翻译的等等。我突然觉得贡献者翻译的页数跟一些 github 上面的项目提交记录一样,会有几个贡献特别多的,但是贡献少的也是需要的。

今年,紫云飞会把新来的翻译者邀请到QQ群,QQ群以前几乎没人说话的,现在稍微活跃了点儿,每月翻译的页面似乎比去年增加了一点儿。我自己翻译的速度也慢了,每月只有几个页面,也不知道自己何时会停止,我想着把最常需要的翻译完。MDN 上面有些文档质量低,有些就直接照搬的 W3C 上面的规范,有些又缺 help.dottoro.com 上面的细节,而我的英文写作能力又渣,自己不想完善英文文档,也不太想翻译这些了。

对于 2015 年,如果工作不忙的话,我还是想着继续翻译 MDN 的文档,想着翻译 CSS 与 SVG 方面的,并尝试做几个相关的小工具。