干货|人人都是翻译项目的Master

在平时的工作中,我们都会经常查阅一些英文文档来解决平时遇到的问题和拓宽视野。看到好的文章或者书籍有没有想要和小伙伴分享的冲动,那么我们一起来翻译吧~

翻译主张 “信 达 雅” 。“信”指意义不悖原文,即是译文要准确,不偏离,不遗漏,也不要随意增减意思;“达”指不拘泥于原文形式,译文通顺明白;“雅”则指译文时选用的词语要得体,追求文章本身的古雅,简明优雅。身为非专业翻译人员,要达到以上三点不是很容易的,但是我们要尽可能往这个方向上努力。一是提高自己的表达水平和阅读能力;二是能够让读者更加的明白作者本来的思想。有句话说得好:当把别人讲明白的时候,自己才算是真正的理解了。

2017 年 6 月 5 日,iKcamp 开始翻译第二本书 —— 《JavaScript 轻量级函数式编程》。如果你看过 iKcamp 最近在掘金、知乎或者公众号上发过的关于这本书的文章,应该对本书有一个大致的了解,本书的作者是火爆全球的 《你不知道的 JavaScript》 一书原作者 。旨在探索函数式编程的核心思想,但是并不会使用大量复杂的概念来诠释,所以称之为“轻量级函数式编程”。“轻量”并不意味着本书是一本“入门级”的书籍,相反,本书包含各种复杂的细节,深入探讨每个知识点,希望可以让读者对函数式编程有一个更深的理解。

身为这次翻译项目的 Master,在这个过程中学会了如何组织一次翻译项目,如何定制翻译计划。秉承着 iKcamp 的分享精神,下面介绍一下我们这次翻译的流程、遇到的一些问题、解决的方式以及待优化的点。希望大家看了之后可以对组织翻译项目有一定的理解,然后也可以提出自己的建议或者解决方案,也可以应用在自己的项目中。

项目详情:
  • 书名:《Functional-Light JavaScript》
  • 作者: Kyle Simpson
  • 文章数量: 21 篇
  • 参与成员: iKcamp 中的 17 名童鞋
  • 预计完成时间: 2 个月

需要考虑的问题:

在开始翻译之前,有很多问题都需要考虑好,下面几点也是我在项目开始之前都考虑的问题,列出来和大家探讨一下:

  • 如何确保翻译质量
  • 如何让每位成员都熟知翻译流程翻译规范
  • 如何确保翻译进度
  • 成员之间的联系方式

解决方案

1、如何确保翻译质量

翻译项目自然是翻译质量最重要,那么如何在成员还不算少的情况下确保翻译质量和翻译进度呢?
和小伙伴 Au 商量一番之后,我们决定采用分组制的策略。Master 对接组长,组长对接组内成员,组长由有翻译经验的小伙伴担当。分组的好处有以下几点。

  • 由于组长已经参加过翻译计划,就能更好的解答组内小伙伴的疑问
  • 组长有更自由的职责分配和更多的权利来掌控组内成员的翻译进度和翻译质量
  • 由组长把控组内的翻译质量,继而再由 Master 管控小组的翻译质量

成员分配图

2、如何让每位成员都熟知翻译流程翻译规范

如果让每位成员都熟知翻译流程翻译规范,那么就要满足下面的几点要求:

  • 要有一个文档,上面清晰的写着如何走完整个翻译流程。
  • 这个文档要方便打开,并且支持各个系统,没有格式的阻碍。
  • 每位小伙伴都可以随时访问到。

基于以上几点要求,我们最终采取的策略是在 GitHub 上新建一个仓库,用 Markdown 的形式,以读者的视角把整个翻译流程展示出来。具体链接可以戳这里

3、如何确保翻译进度

其实这个是很头疼的一点,因为参与的小伙伴可能来自不同的公司和不同的部门,那么他们的时间也是不确定的。可能有时候忙一些,有时候闲一些,怎么才能在确保翻译进度的前提下让小伙伴高质量的完成翻译呢?

我当时想的办法是给每一个流程规定一个 deadline,这个 deadline 是根据项目进度来说能给的最宽裕的时间,然后在认领翻译的时候,小伙伴可以根据自己最近时间的宽裕程度来决定翻译完成的时间,只要在这个 deadline 之前都可以。下面是我们认领时候的一张截图。

1d86009f04cbf5dd75afa2f4f5f69cc8

基本格式为:认领类型(翻译/校对认领)- 截止时间
这样就可以不用强制每个人的进度,让小伙伴自己来掌控进度。时间是自己选的,哈哈,那就要在规定的时间完成咯。

4、成员之间的联系方式

iKcamp 的小伙伴来自不同的公司和不通的部门,但是现在共同参加了一个翻译项目。那么如何可以让小伙伴都能明确的知道目前项目的进度以及一起讨论问题呢?这里我们就需要一个平台,可以可视化目前项目的进度,还需要一个可以交流的平台。
当时我想到了一下几种工具:

  • Google Docs
  • Teambition
  • GitHub
  • 微信

当时觉得用 Teambition 还不错,可视化,而且能清楚的看到项目目前的进度,可是后来对比了一下 GitHub 的方案,发现其实这些 GitHub 也能做到,比如说用 GitHub 的 label,给每个流程的 label 命名也能很清晰的看到目前项目的进度,而且 GitHub 相对于技术人员更专业一些。关于讨论问题这方面,就要找到一个让大家都能参与进来,而且很方便的工具。所以最后就选用了 GitHub 来可视化项目的进度,用微信群来讨论。

解决了上面的问题,那其实准备工作就做的差不多了,下面就按照流程一步一步的来就好啦。

开始翻译

翻译大概可以概括为以下几步:

  • 准备工作
  • 以小组的形式自愿认领翻译文章
  • 翻译,校对
  • 整合

一、准备

Master 把每篇文章提一个 issue,并且每个 issue 附上相对应的 label,用 label 可以很直观的来确认文章目前的进度。我把 issue 的 label 分为 8 种:

2fe62ad888f36798321ad94ab2c6e82e

不同的 label 对应着目前的文章进度。在 issue 的下方附上对应原文的地址,这样可以让译者更方便的找到对应的原文去翻译,还是上面的那张图片:

51e71f6e0d07dc5cd3d6d2743467897e

二、主要翻译流程

认领文章

分好小组之后,下面开始以组为单位认领翻译文章。每个小组内的小伙伴会商量一下想翻译哪些文章,然后再以组为单位到 label 为翻译认领的 issue 下面认领文章。

认领翻译的流程

组长到对应的 issue 下面留言“认领翻译”之后, Master 会把 issue 的状态由 “翻译认领” 切换为 “正在翻译”。

3cfe083870de1fec04af03e2b5d8e4f7

分配好小组,认领完文章之后,会留时间让大家认真的阅读翻译流程和翻译规范。磨刀不误砍柴工,这些都是翻译工作开始之前的基础,熟悉了这些之后,能够避免很多错误和减少校对的工作量。

开始翻译

函数式编程专有名词库

在翻译的过程中,难免会遇到很多描述不太清楚的专有名词,一个办法是小组内进行讨论,最后商量出来结果,小组内统一翻译。可是这样有一个不好的地方就是:小组内虽然统一了,可是组与组之间并没有统一。所以在这里,我们建了一个函数式编程专有名词库,把在翻译过程中遇到的专有名词及其翻译都添加到这个库中,这样大家翻译的时候遇到不太明白的就可以在此库中查找,统一了大家的翻译,不会出现一词两译的情况。

因为本书的主题是函数式编程,所以这个名词库里大部分都是函数式编程相关的专有名词。大家可以按照项目的不同来决定名词库的主题,也可以把翻译过程中遇到的所有名词都放在一起,这个就看你们的需求啦。

翻译完成

小伙伴完成翻译之后,要在 GitHub 上发起 Pull request,然后在 PR 下留言写上对应的 issue 链接。这样 PR 和 issue 就关联起来了。之后的工作就主要在 PR 下留言完成。

下面为发起 Pull request 的两种方式:

4960db6d62f456b1b7c08cf7f4ccbb32

点击按钮之后,会出现下面的页面,在图中可以看到,先选择目标分支,然后选择翻译时自己建的分支,此时就会产生文件的对比,然后点击下方的 Create pull request 绿色按钮,就成功的发起了一个 Pull request。

b162c23c66151b2d3c57feab7054ec3c

到目前为止,翻译流程已经结束了,翻译过程可以概括为下面的几步:

翻译流程

校对

如何校对

当译者完成翻译发起 Pull request 之后,在对应的 Pull request 下方会有译者的提交记录。

01c02499fa9df0802dd71697718e617c

点进去,就会看到译者的改动点,把鼠标放到你认为需要修改的那一行,会出来一个深蓝色的加号,点击加号,会出来一个文本框,在里面输入你的建议,点击绿色按钮 Start a review 即可。

d0992cc74046db9d9db9241c36d08fb7

一校:组内校对

第一轮校对是组内校对,组内成员之间交换文章,检查基本的语法和格式问题并修改。这样在进行第二轮校对的时候就减轻少了一些工作量。

组内校对

二校:认领校对

一校完成之后,相当于每篇文章都符合基本的格式规范,都能够表达出来作者的基本思想了。下一步就要开始进行“真正的”校对 —— 二校。二校主要校对文章句子的准确度和顺畅度,还有格式。

和认领翻译的文章一样,不做任何限制,组内成员商量想要认领的文章,然后到 label 为校对认领的 PR 下面留言认领校对。

认领校对

修改

每次校对完成之后,翻译此文章的小伙伴都要根据校对者的意见进行一次修改。在修改过程中可以把一些想法和建议丢到小组内商量,如果和校对者意见不一致的地方,也可以在校对者的留言下方进行回复商量。最终确定修改的方案。

终校

经历了一次翻译、两次校对和两次修改之后,文章整体都差不多了,不过还差最后一步,就是作为一名读者去真正的阅读文章:切身的去体会读者的感受;句子读着是否顺口;有没有格式错误影响阅读体验。所以接下来就是最后一轮校对 —— 终校。每位小伙伴可以选择自己感兴趣的文章进行校对。同时也鼓励大家,有哪些看不懂的地方就在下方留言,我们一同讨论解决办法。

关于校对

在此大家可能会有一个误会,就是校对比翻译更轻松一些。其实我并不是这样认为的。我觉得翻译和校对同样重要,他们的时间比重应该是大差不差的。校对者要确保文章的表达力度、格式及能否被读者所理解,付出的时间也和翻译相当或者更甚。所以,我们的校对不止进行了一遍。尽量做到能清楚的表达作者的意思,而且容易让读者理解。
在此次的翻译中,我也为大家留了充足的时间去校对,文本格式、表达意思都会去斟酌,相信付出的时间和成果是成正比的。

整合

文章有很多互相引用的地方,比如第 6 章会引用第 2 章的段落标题。由于在翻译过程中译者对于作者的思想和上下文的语境可能理解的不是很透彻,所以我们把这一步放在了最后。在最后一步我们统一修改引用的地方,确保上下文一致。

三、结尾

整个翻译项目大致是上面介绍的这些,流程可以概括为下图:
总流程

历经 2 个月,在 iKcamp 小伙伴的热情和坚持下本书顺利完成。我相信,iKcamp 的小伙伴在本次翻译中也收获颇丰,同时也克服了很大的困难。在工作压力大的情况下,还能保质保量的完成本书的工作,不仅是热情,还有责任感在推动着我们完成本书的翻译工作。在此特特别的感谢 ikcamp 的全体成员。也欢迎有兴趣的小伙伴加入到 iKcamp 中来,我们一起玩技术~

不过对于翻译项目的 Master 来说,道路还很遥远,因为是第一次担任翻译项目的 Master,很多地方还是欠缺经验,在这个过程中多亏了 Au 还有周妈妈以及小伙伴们的帮忙和配合才完成了此书的翻译。这次翻译流程还有以下需要优化的点,之后大家在组织翻译项目的时候可以想一些更有趣的方法。

  • 在翻译和校对阶段的无缝衔接
  • 保持项目进度
  • 翻译的统一性

本次翻译项目产出的成果

iKcamp原创新书《移动Web前端高效开发实战》已在亚马逊、京东、当当开售。


iKcamp最新活动

报名地址:http://www.huodongxing.com/ev...

“天天练口语”小程序总榜排名第四、教育类排名第一的研发团队,面对面沟通交流。

### 回答1: Spark Streaming 和 Flink 都是流处理框架,但在一些方面有所不同。 1. 数据处理模型 Spark Streaming 基于批处理模型,将流数据分成一批批进行处理。而 Flink 则是基于流处理模型,可以实时处理数据流。 2. 窗口处理 Spark Streaming 的窗口处理是基于时间的,即将一段时间内的数据作为一个窗口进行处理。而 Flink 的窗口处理可以基于时间和数据量,可以更加灵活地进行窗口处理。 3. 状态管理 Spark Streaming 的状态管理是基于 RDD 的,需要将状态存储在内存中。而 Flink 的状态管理是基于内存和磁盘的,可以更加灵活地管理状态。 4. 容错性 Flink 的容错性比 Spark Streaming 更加强大,可以在节点故障时快速恢复,而 Spark Streaming 则需要重新计算整个批次的数据。 总的来说,Flink 在流处理方面更加强大和灵活,而 Spark Streaming 则更适合批处理和数据仓库等场景。 ### 回答2: Spark Streaming 和 Flink 都是流处理框架,它们都支持低延迟的流处理和高吞吐量的批处理。但是,它们在处理数据流的方式和性能上有许多不同之处。下面是它们的详细比较: 1. 处理模型 Spark Streaming 采用离散化流处理模型(DPM),将长周期的数据流划分为离散化的小批量,每个批次的数据被存储在 RDD 中进行处理,因此 Spark Streaming 具有较好的容错性和可靠性。而 Flink 采用连续流处理模型(CPM),能够在其流处理过程中进行事件时间处理和状态管理,因此 Flink 更适合处理需要精确时间戳和状态管理的应用场景。 2. 数据延迟 Spark Streaming 在处理数据流时会有一定的延迟,主要是由于对数据进行缓存和离散化处理的原因。而 Flink 的数据延迟比 Spark Streaming 更低,因为 Flink 的数据处理和计算过程是实时进行的,不需要缓存和离散化处理。 3. 机器资源和负载均衡 Spark Streaming 采用了 Spark 的机器资源调度和负载均衡机制,它们之间具有相同的容错和资源管理特性。而 Flink 使用 Yarn 和 Mesos 等分布式计算框架进行机器资源调度和负载均衡,因此 Flink 在大规模集群上的性能表现更好。 4. 数据窗口处理 Spark Streaming 提供了滑动、翻转和窗口操作等灵活的数据窗口处理功能,可以使用户更好地控制数据处理的逻辑。而 Flink 也提供了滚动窗口和滑动窗口处理功能,但相对于 Spark Streaming 更加灵活,可以在事件时间和处理时间上进行窗口处理,并且支持增量聚合和全量聚合两种方式。 5. 集成生态系统 Spark Streaming 作为 Apache Spark 的一部分,可以充分利用 Spark 的分布式计算和批处理生态系统,并且支持许多不同类型的数据源,包括Kafka、Flume和HDFS等。而 Flink 提供了完整的流处理生态系统,包括流SQL查询、流机器学习和流图形处理等功能,能够灵活地适应不同的业务场景。 总之,Spark Streaming 和 Flink 都是出色的流处理框架,在不同的场景下都能够发挥出很好的性能。选择哪种框架取决于实际需求和业务场景。 ### 回答3: Spark Streaming和Flink都是流处理引擎,但它们的设计和实现方式有所不同。在下面的对比中,我们将比较这两种流处理引擎的主要特点和差异。 1. 处理模型 Spark Streaming采用离散流处理模型,即将数据按时间间隔分割成一批一批数据进行处理。这种方式可以使得Spark Streaming具有高吞吐量和低延迟,但也会导致数据处理的粒度比较粗,难以应对大量实时事件的高吞吐量。 相比之下,Flink采用连续流处理模型,即数据的处理是连续的、实时的。与Spark Streaming不同,Flink的流处理引擎能够应对各种不同的实时场景。Flink的实时流处理能力更强,因此在某些特定的场景下,它的性能可能比Spark Streaming更好。 2. 窗口计算 Spark Streaming内置了许多的窗口计算支持,如滑动窗口、滚动窗口,但支持的窗口计算的灵活性较低,只适合于一些简单的窗口计算。而Flink的窗口计算支持非常灵活,可以支持任意窗口大小或滑动跨度。 3. 数据库支持 在处理大数据时,存储和读取数据是非常重要的。Spark Streaming通常使用HDFS作为其数据存储底层的系统。而Flink支持许多不同的数据存储形式,包括HDFS,以及许多其他开源和商业的数据存储,如Kafka、Cassandra和Elasticsearch等。 4. 处理性能 Spark Streaming的性能比Flink慢一些,尤其是在特定的情况下,例如在处理高吞吐量的数据时,在某些情况下可能受制于分批处理的架构。Flink通过其流处理模型和不同的调度器和优化器来支持更高效的实时数据处理。 5. 生态系统 Spark有着庞大的生态系统,具有成熟的ML库、图处理库、SQL框架等等。而Flink的生态系统相对较小,但它正在不断地发展壮大。 6. 规模性 Spark Streaming适用于规模小且不太复杂的项目。而Flink可扩展性更好,适用于更大、更复杂的项目。Flink也可以处理无限制的数据流。 综上所述,Spark Streaming和Flink都是流处理引擎,它们有各自的优缺点。在选择使用哪一个流处理引擎时,需要根据实际业务场景和需求进行选择。如果你的业务场景较为复杂,需要处理海量数据并且需要比较灵活的窗口计算支持,那么Flink可能是更好的选择;如果你只需要简单的流处理和一些通用的窗口计算,Spark Streaming是更为简单的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值