《实现领域驱动设计》的翻译错误

潘加宇 [2019/6/4]

为了准备“领域驱动设计用语溯源”演讲(https://sz2019.archsummit.com/presentation/1791),把历年名字里带有"领域驱动设计"的书再过一遍。

一般来说有英文资源我尽量看英文。之前在某群里看到有人夸"Implementing Domain-Driven Design"中译本翻译得好,根据我的经验,中译本经得起推敲的不多,于是就把该书英中对照看了一下。

iddd.png

翻过前面的"译者序",原书第一句的翻译就存在不少问题。

第一句原文:

"With Implementing Domain-Driven Design, Vaughn has made an important contribution not only to the literature of the Domain-Driven Design community, but also to the literature of the broader enterprise application architecture field.

第一句译文:

iddd01.png

较大的问题:

(1)with......是"在……中"的意思吗?

(2)community的意思是"社群",翻译成"领域"不合适。

(3)贡献是针对literature而说的,译文没有体现这一点。

较小的问题:

(1)important翻译为"卓越",合适吗?

(2)"卓越的贡献"合适吗?"卓越"用于形容人物或才能,贡献是否用"卓著"?

(3)"宽阔"用于空间,表达所涉及范围应该用"广泛"更合适。

不是问题:

(1)field翻译为"领域"是可以的,不过本书的主要词汇之一Domain把"领域"这个词给占了,联想到上面的community也被译为“领域”,几个不同的词都译作“领域”,给人有偷懒的感觉。换另一个词更好一些,我也想不出什么好词,反正不能叫"字段"。

建议译文:

凭着《实现领域驱动设计》,Vaughn不仅为领域驱动设计社群,而且为更广的企业应用架构范围(?)的著作做出了重要的贡献。

凭着《实现领域驱动设计》,Vaughn不仅为领域驱动设计社群,而且为更广的企业应用架构范围(?)贡献了重要的著作。

再看第二句,问题还要更多。

第二句原文:

In key chapters on Architecture and Repositories, for example, Vaughn shows how DDD fits with the expanding array of architecture styles and persistence technologies for enterprise applications—including SOA and REST, NoSQL and data grids—that has emerged in the decade since Eric Evans' seminal book was first published.

第二句译文:

iddd02.png

较大问题:

(1)SOA and REST, NoSQL and data grids,其中SOA和REST是一起的,对应于前面的architecture styles,NoSQL和data grid是一起的,对应于前面的persistence technologies,不应打散了一个顿号并列到底。这个地方应该不是译者故意发挥,而是没有看懂原文含义。

(2)expanding译成了"各种",这个词的意思应该是"日益扩张"。我们耳熟能详的“……日益增长的物质文化需要,是****现代化建设的根本目标”里的“日益增长的”官方翻译是和这个差不多的growing。用这个词的意思是,就算各种新概念如雨后春笋般冒头,DDD依然适用。译成"各种"就变成了静态的了。

(3)array的意思没有体现。可译为"阵列",对,就是RAID那个阵列,别译为“数组”就行。原文意思应该是SOA、REST、NoSQL、data grid这堆东西摆出来像阵列一样吓人,而且还在日益扩张。

(4)key翻译成"核心"不合适。

key和core不是一回事。key是钥匙,core是锁芯。我在网上找了个图:

keycore.gif

(来自http://www2.diebold.com/ficcdsvdoc/TechPubs/books/tp-820984-001/tp-820984-001_fram.htm

用面向对象的知识来说,对象的key是标识,对象的core应该是封装起来的。

当然,也许原文未必了解key和core的区别,就像我们平时说中文时很多用词顺口就说了,未必了解其背景。不过既然原文用了key,译者还是应该要尽量忠实原文。

较小问题:

(1)decade的意思没有体现。

(2)was first published里的first没有体现。原文加上first是严谨的,因为一本书如果受欢迎可能会印很多次。

(3)多了原文没有的“那本DDD”几个字。

(4)fit翻译成"融合"合适吗?是不是"匹配"更合适?

建议译文:

例如,在架构和仓储的关键章节, Vaughn展示了DDD如何匹配企业应用日益扩张的架构风格和持久技术阵列—包括在Eric Evan的开山之作第一次出版之后的十年间出现的SOA和REST,以及NoSQL和数据网格

特别说明:

(1)

我的意思不是“老外写的每一个词都是精华,我们要一点不漏的吸收”。

国内业界有一些环节的实践环境比国外好,译者水平比作者高完全有可能。不过,即使译者觉得自己水平比作者高,即使译者认为原文太土,也尽量不要去歪曲原文的意思。如果不同意原文的意见,可以加注。

如果简单一句话的翻译都要变出这么多花样,那会不会让读者担心,其他地方的文字,有多少是原文的本意,有多少是译者曲解呢?

iddd03.png
iddd04.png
iddd05.png
iddd06.png

(电视剧《三国》截屏)

(2)

本书的翻译算不差的了,因为同行的衬托。

前些年我们也以翻译或审稿的方式参与了很多软件开发书籍中译本的制作,包括最早的清华蓝皮《领域驱动设计》,其中有一些做得很差,我们自己也知道。翻译稿费低、时间紧、译者工作忙等等,差就差吧,尽量不要乱吹就是了。

(3)

我不是主张一定要看原文。我看原文是因为很多时候看完要去讲给其他人听,如果我这一关都出问题了,不是坑了其他人嘛。

如果对该主题的理解不如译者,英语水平也不如译者,还是看中译本产生误解的可能性小,而且效率还高。

以上,供参考。

weixinpanjiayu2.jpg