烂翻译
微软中文翻译有时很烂。IE 高级选项里面那个“重新使用启动快捷方式的窗口”已经不用去说它了(实际是“启动快捷方式时重复使用现有窗口”)。有时候,对话框里面,应该由英文翻译成中文的时候调整一下语序,却因为一个文本框夹在当中而连这个也不调。在 Visio 2001 里看见意思是“上一次”的 last 被翻译成“最后一个”。真不知道他们懂不懂英文,还是时间太急了在赶工。Reset 在某些地方明明是“复位”的意思,却都用“重置”这样一个生造词。怪不得我看微软自己的工程师都用英文版的微软软件,因为中文版的软件有些实在翻译得太差了。翻译得差的软件有:Visio、Visual Studio .NET 2002、MSDN 2002。其中 MSDN 2002 还可能是原文本来就比较啰嗦。
不过,还有更离奇的事:国产的 Kill 防病毒软件也算是有名了,为什么它的中文也不怎么样:Kill 企业版中实时监视器选项中压缩文件选项里面有一个“对压缩文件使用的扫描方式”。光看这个词以为是扫描病毒的方式。但是里面有两个选项“文件扩展名”和“文件内容”。怎么想也想不清楚这是扫描病毒的方式——难道扫描病毒的时候只扫描“扩展名”就可以吗?后来才知道,这是指识别压缩文件类型的方式。比如说一个文件扩展名是 zip,但是它里面的内容可能不是 zip 格式。而 zip 格式的文件的内容以“PK”开始。所以有这两种方式来识别压缩文件的格式。我想虽然这不能算是翻译错误,但也是含义不清吧。
IE 选项里面:Latin Based 翻译成“以拉丁文为基础的”。我本来想译成“基于拉丁文的”,后来想想这个翻译也不好。应该是“拉丁语系”这个翻译最好。
Mozilla 里有一个翻译,就是自动识别编码中的“Universal”,被翻译成了“世界语”。实际上它的意思是所有语言,而“世界语”一般是一个专称。
翻译得好的书很多。以前我买的一本清华松岗的《MS-DOS 6.22 使用手册》(郑全战、成秀珍编著),尽管是参考了 MS-DOS 联机帮助的,但是里面的翻译真正做到了“信、达、雅”,使我这个在高中时候对计算机还不太懂的人很容易就学到了有关 MS-DOS 的许多知识。所以我现在做网页,对翻译也是一丝不苟。我的 Windows 初学者园地里面的文章,我是先写英文版的,写完了再翻译成中文的。另外,台湾的侯捷先生翻译的一些书,我也很喜欢。他的翻译很准确,这一点非常好。我的好友高博,他学习了侯捷先生的译作之后,自己也以“信、达、雅”为要求,翻译了一本《C++ 99 种常见错误》,在此我对 C++ 爱好者强烈推荐此书!
微软中国在 Windows 3.2 中文版的时候翻译的质量也是相当差的。那个时候中文版 Windows 3.2 的自述文件是错误百出。后来到了 98 年,出 Windows 98 中文版的时候,翻译已经做得不错了。当然 Windows 95 和 NT 4.0 的翻译也还是可以的。基本上就是那段时间里面的翻译做得最好。后来到 Windows 2000 的翻译,一些术语就开始变化了。那些术语的变化,一是与以前的翻译法不同,二是有些的确没有以前的恰当。Windows XP 再往后,翻译就又有些质量下降了。从 Windows 2000 开始的翻译者一定换过了,呵呵。Windows 2000 系统启动的时候会显示“正在加载计算机设置”,“正在准备网络连接”,“正在应用安全策略”,“正在加载个人设置”。我感觉这些消息很烦人,但是调试系统故障时可能这些消息还是比较有用的。呵呵。我还是喜欢 NT 4.0 那简洁明了的风格。
究其原因,大约是微软中国 2001 年以后做的翻译越来越多了,所以人员良莠不齐,另外新术语也越来越多,很多在没有定下最恰当的翻译之前都先暂且用一个词来放着。比如“通用语言运行时”,这个词从英文看是 Common Language Runtime,很明显是一个名词。但是中文不同,中文里面“时”有时可以作状语。所以在不同的上下文间,“通用语言运行时”这个翻译很有可能会让人感觉不舒服。最好就是这样,写成“CLR”。写成 CLR 没有什么不好的。比如说现在的“CD 唱片”,就是叫 CD 嘛。CD 是什么?又叫“光盘”,但是英文里面 CD 是 compact disc,就是微型盘片。难道有把 CD 叫成“微型盘片”的吗?没有。所以并不是说中文翻译里面就不可以有英文,而是一定要让人可以看懂。看 .NET 版 MSDN 的人一般都懂什么是 CLR。就算不懂,在词汇表里总也可以查得到。所以没什么问题。
最近又看见 VS .NET 2002 中文版里面 DataGrid 控件的属性生成器里面分页选项中有一个“数字按钮”,我想来想去不对,大概是“Number Of Buttons”,就是“按钮的数目”吧。
计算机书籍翻译的误区——学生译书给老师看
《光明日报》8 月 25 日刊登台湾知名计算机科普作家侯捷的文章指出,在海峡两岸,计算机翻译书籍是所有书籍中最有市场、单价最高、却又最轻率推出的一个书种。本来理应由专业翻译执笔的工作,却以一群毛头小伙为翻译主力,又缺乏把关的专家学者。
计算机的发展速度太快,令书籍出版者每每在“过时与库存”的压力下,不敢给译者充裕的时间完成作品。另一方面,又由于计算机书籍市场需求量大,因此出版者睁一眼闭一眼,把糊里糊涂弄出的蹩脚货出版给读者看。一些在校生、兼职打工者,成了出版者经常找的翻译人。于是造就了“学生译书给老师看,小孩译书给大人看”的奇怪现象。
我又想起了 VS.NET 的一个小翻译错误:在保存所有文件之后,状态栏显示“已保存的项”。我想,这可能是因为英文是“Items saved”引起了歧义的缘故吧。原则上说完整的这句话应该是“Items are saved”。这样就不会有歧义了。但是现在少掉了这个“are”,结果就让翻译的人搞错了,因为 Items saved 可能用在“The items saved include all files in the project”这样的场合。其涵义是“所保存的项包括项目中的所有文件”。怎样解决这个歧义的问题呢?我想是不是可以在资源文件里面这一个字符串边上注释一下:for file save event。也许就可以减少这样的错误。另外,我又想到一种减少翻译错误的办法:给出每个单词及词组的上下文。
我在 2009 年在工作中亲自参与了微软软件翻译过程的一个步骤,体会了一下烂翻译是怎么形成的。首先,像我的角色,软件工程师,需要做“本地化之前的注释”。这是什么呢,就是在软件翻译之前,软件的资源文件里面有很多字符串,有些是需要翻译的,有些是不需要也不允许翻译的,有些需要翻译的字符串里面有一部分是不允许翻译的。那么软件工程师根据自己对软件的理解,对这些字符串加以标记和注释。
不需要翻译的字符串通常就是文件名、组件名等。需要翻译的字符串里面可能有一些产品名等是不需要翻译的,把它标记出来。
那么对于需要翻译的部分作什么注释呢?这就要有点想象力了。要想象一下,字符串的内容有什么歧义,翻译人员对其可能有哪几种理解?这样一来就明白了。首先是技术术语。翻译人员不一定是技术专家,虽然他们一直做技术翻译,但是对于软件的了解还是不如软件工程师。因此对某些容易引起歧义的技术术语要加以注释。比如同样是 cluster,要用英文写清楚是“簇”还是“集群”;volume 则要写清楚是“音量”还是“磁盘卷”。
有趣的是,有些约定俗成的词语,在英文里本就是不准确的,但因为历史原因使用到现在。比如前面说到的“磁盘”,disk,现在的闪存存储器不是盘,我们也把它叫做“U 盘”。当然老外还是称其为“USB flash drive”,USB 闪存驱动器。但是 Windows 里面还是有多处统称其为“disk”的。类似的,Unix 里面更古老的传统,程序的内存映像叫“core dump”,其中的 core(芯)要追溯到很古董的“磁芯存储器”。
除了术语之外,有什么需要注释的呢?要看到字符串的内容,有时并不是一句完整的句子。比如说:{0} Added: {1}。这个是一条防火墙规则的名称,其中 {0} 是产品名,{1} 是防火墙规则名。在没有注释的情况下,简体中文版翻译出来:{0} 已添加:{1}。当然这个翻译不能算错,意思是差不多的,但翻译工程师可能会有疑问:这个到底是什么意思呢?如果在注释里写清楚了 {0} 和 {1} 的意思,他/她心里就更有底了。再举一个例子:disk space allocated。如果不作注释,你能知道这个是“已分配的磁盘空间”呢,还是“磁盘空间已经分配好了”的意思呢?所以要在注释里用英文写清楚:allocated 是过去分词,此句表示已分配的磁盘空间(disk space that was allocated)。