关于翻译风格的几点讨论

起因

最近读者群中有一些关于 cnswift 翻译风格的争论,主要是关于一些相关功能专业名词歧义选取问题,作为站长,现在我来统一和各位讨论一下 cnswift 的翻译风格。

分类

对于 cnswift 来说,读者对翻译中存在的讨论,可粗略分为四类:

  1. 其他编程语言中有的相关功能,苹果给改名了——比如“构造器”(Constructor),Swift 中称作“初始化器”(Initializer);
  2. 编程语言日新月异,英文新概念层出不穷,于是新功能中文翻译尚无定论——比如“Closure”(闭包),这个名词新出现大家各自翻译,并没有“官方或权威定论”(事实上现在大家已经公认翻译为“闭包”了,但值得一提的是“尾随闭包”有些地方依旧有“拖挂闭包”等翻译);
  3. 歧义和混淆,比如 delegate 这个东西,通常音译和意译相符大家会选择“代理”,但如果译成“委托”也是正确的,这种歧义中,我结合我自己学习经历,我认为翻译为“委托”更容易理解,就选择了后者;
  4. 翻译风格不同,如 However,学校教学一般会指定为“无论如何”,但我习惯将它翻译为“总之”。

讨论

接下来,我们就针对这四类问题分别展开讨论。

1、改名问题

如同上文例子中所述,苹果对一些编程中的传统概念进行了改名,最典型的就是“Constructor”变“Initializer”,类似的还有“Nullable”变“Optional”、“Class Variable”变“Property”、“Inline Class”和“Lambda”变“Closure”等,这些功能在传统编程概念中都有翻译,比如“构造器”、“可空类型”、“类变量”以及“匿名类”、“匿名函数”等等,但现在苹果对 Swift 的这些类似概念进行了改名,我在读其他人的翻译时就理解的很痛苦,作为一个零基础的自学小伙,我表示根本看不懂,因为这些翻译和编程语言关键字根本对不上。后来只好咬牙去读苹果官方的文档,于是豁然开朗——原来人家叫这个名字。

总之,可能是因为我从未接触过比如 C 或 Java 语言的官方文档,所以我对那些传统“专业名词”也没什么感冒,我认为保持苹果官方原本风格“原汁原味”地提供翻译才能更好的帮助初学者进行理解,不然将来和我一样的多少自学者,查个资料连英文和中文的名字都对不上,就显得很尴尬。

所以这也确定了本站的翻译基调,尽可能地往原装靠。毕竟,人家叫的就是“Optional”而不是“Nullable”,你不能说改就给人家改回去。

2、造词问题

Swift 发布,引入了一些比较新颖的概念,也可能有些比较前瞻的开发者早已有所耳闻,但显然,在 Swift 发布之前他们并没有旧这些概念该翻译为什么中文而达成一致。就拿可选项的“Unwrapping”来说,“wrapping”有包裹打包卷起来的意思,于是有翻译“解包”的,有翻译“解封”的……这些都是正确的,毕竟意思不变。但可选项是一个结构体,里边包含了空的可能,在使用的时候把它展开,拿到里边的东西,我认为这样似乎更直观合理,于是我使用了“展开”来描述这一操作。

“self-contained”这个词很不常见,“Closures are self-contained blocks of functionality”,这句话究竟该怎么翻译?很多人就直接翻译为“闭包是功能性自足的(代码)块(段)”,自足是个什么?自给自足?这里我进行了衍生意译,将之翻译为“独立”,即“闭包是功能性独立的代码块”,实际翻译原文是“闭包是可以在你的代码中被传递和引用的功能性独立模块”。

3、歧义和混淆

有些词汇英文和中文存在一对多和多对一的情况,这样就给翻译带来了困难,由上文可知我在翻译过程中想要尽可能还原苹果文档原本的意思,比如对于“协议”,苹果就用了“adopted”和“conform”两个词汇,很多网站统一翻译,因为似乎在其他语言中并不过于区分这两个操作,实际上它在 Swift 中指代不同的情况,这里我将前者翻译为“采纳”,后者翻译为“遵循”,我们可以说“你的类如果采纳了协议,就需要遵循这个协议,满足协议的需求”。

再比如“collection”和“set”都是集合,但此集合非彼集合,这在翻译过程中造成了混淆,集合的分类下有“数组”、“字典”……以及“集合”?所以“字典”是“集合”?总之,这样的混淆造成了相当大的困惑,我将后者改名为“合集”加以区分。

还有上文提到的“代理”和“委托”的选择等,这里不再赘述。

4、翻译风格

这一类问题大多存在于和传统风格不同,但又无可厚非的选择上,每个人有不同的风格,我恰好是那个喜欢对抗通俗和权威的人,我对这一类翻译总会优先选择最利于理解和贴近我认为原本作者意图的词汇上。比如“Access Control”,“权限控制”,但实际上“access”大多用在进入、访问这个意思上,说是“权限控制”没什么毛病,但“访问控制”则更贴近原文意图。另外“optional”这个词很有意思,苹果在“可选项”这一章对它的应用可谓是无所不用其极,我花了很大的力气统一了中文的叙述规则,比如某类型是“可选的”,它是“可选项”,操作这个“可选项 a”等等。

总之,对于翻译风格这一块,我是比较坚持的,我认为不论是哪种风格,只有各位读者的偏好,并无客观对错,但无论是选择哪一种风格,只要前后一致即可,这和编程当中人们经常在讨论的代码风格概念相差不大,不论写代码的风格怎样,只要不来回改变就是最好的风格。

额外

当然,有些客观的专业名词还是要遵守的,比如“Store Properties”,我先前的翻译是“储存属性”,但经过讨论之后,工科传统习惯是翻译为“存储属性”,最终还是改掉了,但我还是觉得“储存”更直观(毕竟用“存储”才显得更专业)。

现在 cnswift 的翻译中,还有一点我确实不满意但似乎并没有很多读者注意到,那就是翻译后的被动语态问题,中文通常不会强调被动,比如“方法此时可被调用”,我们会说“方法此时可调用”,但很多地方并没有统一掉(说明其实影响不大?)。

总之,这篇文章用以解释为何 cnswift 在一些专业翻译选手眼中会显得十分业余,我创建这个网站的初衷也是想要帮助那些零基础的选手,我不希望这个翻译写的多么冠冕堂皇,只求能够让人直接快速阅读学习,它贴近原装,即使将来读者遇到、查询官方文档,也能快速将知识对应起来,这才是它最重大的意义。