原文:李笑来@学习学习再学习

翻译一本书只需要一天时间!

—— 这是我今天做的事情。

月初的时候,摸索了一阵 Google Cloud Translation API,过程中发现了 DeepL,直接就转了过去,买了 Pro 服务,每个月 24 美元不到,一年下来,连 300 美元都不到…… 便宜得令人发指。

DeepL 的机器翻译,能以惊人的速度和准确率翻译任何语言到任何语言 —— 我都不想在这里用感叹号了……

然后呢?

然后,翻译基本上成为了『较为低级的文字编辑工作』,绝大多数的键盘敲打,都是为了诸如以下的事情:

  • 单双直引号要转换为适合中文排版的引号,『』「」;

  • 两个减号构成的破折号 -- 要换成前后有恰当空格的 unicode 破折号 ——;

  • 英文与数字与中文之间要有空格,比如,在 2021 年;

  • 书名、杂志名、文章名,要换上 《》;

  • 避免中文字符采用斜体风格,要把它们换成加重风格

  • 人名的姓与名之间的 - 要换成 ·;

  • 省略号也要换 ……
    如果英文的原文写作风格真的非常符合 Plain English,不大耍文采的话,那么,DeepL 的翻译几乎可以称得上完美。

这一点,曾经当过写作老师的我有着格外的感触。舞文弄墨的文采,常常降低有效知识的传播。也因此,我养成了自己的『大白话文风』,尽量不使用没必要的成语,尽量不使用除了类比之外的修辞(类比,是几乎唯一的能够跨语言、跨文化的修辞手段)……

少数情况下,需要注意的是:

  • 特定概念的翻译,以及在前后文中的统一。比如,Collective Fitness,被翻译成『共同健康』显然是不符合上下文的,应该是『集体适应』;

  • 少数情况下,有些短语可能被『智能翻译』漏掉。比如,

    When St. Elizabeth of Hungary was lying in state, “a crowd of worshippers came and cut or tore strips of the linen enveloping her face; they cut off the hair, the nails, even the nipples.”

    当匈牙利的圣伊丽莎白躺在床上时,『一群崇拜者来到这里,剪掉或撕掉包裹在她脸上的亚麻布条;他们剪掉了头发、指甲,甚至乳头。』

    这句话里的 … was lying in state,指的是『(尸体)被公众瞻仰』。所以,需要调整一下:

    当匈牙利的圣伊丽莎尸体被公众瞻仰时,『一群崇拜者来到这里,剪掉或撕掉包裹在她脸上的亚麻布条;他们剪掉了头发、指甲,甚至乳头。』

  • 有些时候,会不由自主地想加一些注释,比如:

    译注:『来自上面的死亡』,来自 1979 年的电影《末日降临》(The Apocalypse Now,该片被中译为《现代启示录》—— 我猜片名翻译者是把 Apocalypse 这个词意思硬往宗教意义上理解去了……)。片中比尔上校的直升机上刷着这个标语。另外,二战末期,美国空军的第七轰炸队(7th Bomb Wing)的机身上,也写着这个标语的拉丁语版:Mors Ab Alto。从上下文语境上来看,『来自上面的死亡』这个词汇,作者指的应该是现代战争。

  • 只有少数情况下,整个句子的翻译会出问题,这时只需要顺手改一下即可。只不过,『发现这种句子』需要的是『时时刻刻处于精读状态』的能力,貌似跟翻译能力关系不大。

以上这些细琐无聊的又(极大量)或者即便麻烦也相当有趣的细节工作(极少量),完全不费劲,首先是因为工具太方便,其次是因为精读本来就不是干速度的;但,实际上更为关键的动力,从我自己的感受来看,完全是自己的『文本格式控』……

别看我自己写文章经常不小心带上错别字(我把这事儿怪罪于拼音输入法而不是自己的粗心大意),但,我就是完全受不了一个文本在电脑上的显示丑陋。在这方面我是个极端的强迫症患者,反正就是一定要想办法把排版搞得极其舒服才行!

于是,这个成了一个意想不到的动力,令我在原本就很强的精读能力上又多了一层注意力集中的重要理由 —— 反正一点都不觉得累。

我给 VSCode 设置了很多快捷键,以便我在编辑文本的时候『最顺手』:

[{"key": "ctrl+shift+9","command": "editor.action.insertSnippet","args": {"snippet": "($TM_SELECTED_TEXT$0)"},"when": "editorTextFocus&&editorHasSelection"},{"key": "ctrl+shift+'","command": "editor.action.insertSnippet","args": {"snippet": "“$TM_SELECTED_TEXT$0”"},"when": "editorTextFocus&&editorHasSelection"},{"key": "ctrl+'","command": "editor.action.insertSnippet","args": {"snippet": "‘$TM_SELECTED_TEXT$0’"},"when": "editorTextFocus&&editorHasSelection"},{"key": "ctrl+shift+[Backslash]","command": "editor.action.insertSnippet","args": {"snippet": "【$TM_SELECTED_TEXT$0】"},"when": "editorTextFocus&&editorHasSelection"},{"key": "ctrl+shift+[Slash]","command": "editor.action.insertSnippet","args": {"snippet": "《$TM_SELECTED_TEXT$0》"},"when": "editorTextFocus&&editorHasSelection"},{"key": "ctrl+shift+[BracketRight]","command": "editor.action.insertSnippet","args": {"snippet": "「$TM_SELECTED_TEXT$0」"},"when": "editorTextFocus&&editorHasSelection"},{"key": "ctrl+shift+[BracketLeft]","command": "editor.action.insertSnippet","args": {"snippet": "『$TM_SELECTED_TEXT$0』"},"when": "editorTextFocus&&editorHasSelection"}  ,{"key": "ctrl+shift+-","command": "editor.action.insertSnippet","args": {"snippet": " —— "},"when": "editorTextFocus&&editorHasSelection"},{"key": "ctrl+shift+=","command": "editor.action.insertSnippet","args": {"snippet": " $TM_SELECTED_TEXT$0 "},"when": "editorTextFocus&&editorHasSelection"},{"key": "ctrl+alt+cmd+a","command": "editor.action.insertSnippet","args": {"snippet": "<a href=\"\" target=\"_blank\">$TM_SELECTED_TEXT$0</a>"},"when": "editorTextFocus&&editorHasSelection&&editorLangId==html"},  {"key": "ctrl+alt+cmd+b","command": "editor.action.insertSnippet","args": {"snippet": "<strong>$TM_SELECTED_TEXT$0</strong>"},"when": "editorTextFocus&&editorHasSelection&&editorLangId==html"},{"key": "ctrl+alt+cmd+i","command": "editor.action.insertSnippet","args": {"snippet": "<em>$TM_SELECTED_TEXT$0</em>"},"when": "editorTextFocus&&editorHasSelection&&editorLangId==html"},{"key": "ctrl+alt+cmd+u","command": "editor.action.insertSnippet","args": {"snippet": "<u>$TM_SELECTED_TEXT$0</u>"},"when": "editorTextFocus&&editorHasSelection&&editorLangId==html"},{"key": "ctrl+alt+cmd+d","command": "editor.action.insertSnippet","args": {"snippet": "<del>$TM_SELECTED_TEXT$0</del>"},"when": "editorTextFocus&&editorHasSelection&&editorLangId==html"},{"key": "ctrl+tab","command": "cursorRight","when": "editorTextFocus&&!editorHasSelection"},{"key": "ctrl+alt+cmd+backspace","command": "editor.emmet.action.removeTag"},{"key": "ctrl+shift+l","command": "editor.emmet.action.wrapWithAbbreviation"}
]

不仅如此,还可以从很多小地方提高效率。比如,DeepL 的 Insert to... 按钮(看起来像是个 Electron App 的链接)没有快捷键(从任何文本编辑器里往 DeepL 传输文本倒是有个快捷键,连续快速按两次 ⌘ c)…… 于是,写了个 AppleScript 脚本,然后在 Alfred 里设置了个快捷键(用来运行这个脚本):

on alfred_script(q)    tell application "System Events"tell process "DeepL" to tell window 1activateset w_position to its position            set w_size to its size        end tellend tellset px to item 1 of w_position    set py to item 2 of w_position    set sx to item 1 of w_size    set sy to item 2 of w_size    tell application "System Events"click at {px + sx - 190, py + sy - 95} -- Insert to link            end tellend alfred_script

(不知道上面的动图是否能正确显示……)

别看这只是把一个『把鼠标挪过去,对准那个链接(按钮)点一下』的动作换成了『按一个组合快捷键』,实际上省下的是无数的『你还要扭头再扭回来』的动作……

在这个过程中,如果你会用正则表达式,那就更爽了,因为编辑大文本的时候,熟练使用正则表达式,可以帮你瞬间收缩替换成百上千个你需要更改的地方 —— 纯手工修改在这样的工具面前,就好像是电影阿凡达里那些土著人用来攻击武装直升机的弓箭一样。

翻译,竟然就这样成了『低级文字编辑工作』……

这给我带来的好处太多了。

家人英语阅读并不熟练,但,现在不怕了,真有好书的时候,我直接动手就完了 —— 反正自己不仅要精读,还可能精读很多遍。翻译现在成了『稍带手』的事儿。他们不用等到市场上有中文版才能看 —— a) 过去要等上至少一年;b) 同时也有可能压根就等不着;c) 就算最终等到了,也更可能是垃圾翻译 —— 能翻译的就翻译,不管翻译得好不好;翻译不出来的,就干脆删掉;翻译错了、翻译反了都干脆不知道;前后不一致,上下文不连贯,句子不通顺,相比来看都是小问题了……

现在好了,极低成本低完成 —— 这里我所说的成本,主要是时间成本。如果不是书籍,而是一篇文章,那就更应该这么做了!

翻译,不再是为了出版 —— 按照我们国家的版税习惯,翻译书籍基本上是不可能赚到什么钱的…… 这也解释了为什么那些认真的译者们每一个都值得尊重。

现在呢?翻译,反正不是为了钱,而是为了照顾家人和朋友 —— 有点酷。

DeepL 给我带来的另外一个好处让我心花怒放,现在我可以直接看任何语言的书了。尤其是历史方面的书籍,意大利历史得看意大利文的,日本历史得看日文的,俄罗斯历史得看俄文的,不是吗?这实在是太解脱了!

今年年初的时候,我恍然间发现,二十多岁的时候立下的愿望(这一辈子认真读一千本好书)竟然实现了!很是高兴了一阵子…… 现在有了 DeepL,折腾了一个来月的感想是,『WOW,好像我还能再读至少两三千本好书呢……』

就这样。

当翻译变成了文本编辑。。。相关推荐

  1. 沙拉查词配置浏览器外翻译(为你的电脑配置一个随时翻译器吧!)

    目录 前言 一.插件安装(以安装用户可跳转至步骤二) 二.配置桌面翻译 三.使用方法及分析 四.适用场景(插件级翻译的优势) 总结 前言 1.撰写本篇文章旨在提供一种轻量级(插件级)的桌面翻译的解决方 ...

  2. 七个高效的文本编辑习惯(以Vim为例)

    本文由 伯乐在线 - dryrun 翻译自 Bram Moolenaar.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. [感谢@dryrun 的热心翻译.如果其他朋友也有不错的原创或译文,可以尝 ...

  3. swift 富文本编辑_如何使用Swift构建协作式文本编辑器

    swift 富文本编辑 by Neo Ighodaro 由新Ighodaro 如何使用Swift构建协作式文本编辑器 (How to build a collaborative text editor ...

  4. 神奇的文本编辑,惊人的移花接木 | ACM MM 2019 论文赏析

    点击我爱计算机视觉标星,更快获取CVML新技术 本文简要介绍 ACM Multimedia 2019录用论文"EditingText in the Wild"的主要工作.该论文主要 ...

  5. 翻译qmake文档(二) Getting Started

    翻译qmake文档 目录 原英文文档: http://qt-project.org/doc/qt-5/qmake-tutorial.html 本教程教讲授qmake基础知识.这个手册里的其它专题包含更 ...

  6. python qt gui快速编程 pdf_翻译:《用python和Qt进行GUI编程》——介绍

    介绍: 这本书讲的是如何利用Python和Qt来开发GUI应用程序的.仅仅需要一点点必备的知识:你可以使用一些面相对象的语言来编程,例如C++,C#,java或者python等等.在富文本编辑的那些章 ...

  7. (个人翻译)Scrivener交互式手册中文版FowWindows 03基础操作

    文章目录 新手指引 主界面 活页夹 使用活页夹 特殊文件夹 其他文件夹没有特别之处 搜索 编辑器 使用编辑器 头视图 脚视图 检视器 概要与笔记 概要索引卡 笔记 标签与状态 书签 项目书签 元数据 ...

  8. 文本编辑快捷键_42种以上几乎可以在任何地方工作的文本编辑键盘快捷键

    文本编辑快捷键 Whether you're typing an email in your browser or writing in a word processor, there are con ...

  9. ApacheCN 翻译、校对、笔记整理活动(有偿)进度公告 2022.7

    命令行上的数据科学第二版[校对][千字两元] 仓库:https://github.com/apachecn/ds-cmd-line-2e-zh 整体进度:https://github.com/apac ...

最新文章

  1. 大国AI竞赛中国忙赶超,但美国仍主导全球AI芯片设计
  2. 基于人工智能智商研究的智能定律初探
  3. leetcode 10 Regular Expression Matching
  4. 优化group by 语句
  5. EBS常用表_Dictionary
  6. ASP.NET验证控件之RequiredFieldValidator
  7. mysql延迟关联为什么快_MySQL 覆盖索引与延迟关联详解
  8. printf 指针地址_指针搞都不懂,好意思说自己会C语言?
  9. oracle中where中使用函数,Oracle 尽量避免在 SQL语句的WHERE子句中使用函数
  10. Java基础入门笔记-布尔类型变量
  11. python进程池和线程池_Python中的进程池与线程池(包含代码)
  12. Diango 框架起步
  13. PCL之统计异常值去除滤波器--StatisticalOutlierRemoval
  14. 电蚊拍GB4706检测及安规测试设备
  15. 最新Mac安装/卸载pip教程
  16. 紧急求助SPSS大神。spss在xml神经网络预测值为空是怎么回事?
  17. 01.数模竞赛论文的写作
  18. practice是什么意思_practice是什么意思 还有practice的用法
  19. 动态分区式内存管理(完整代码)
  20. 魅族20值得入手吗 魅族20参数配置

热门文章

  1. (43)FPGA时序逻辑与组合逻辑(时序逻辑)
  2. 【蓝桥杯单片机】定时器和中断
  3. ajax html页面传值乱码,jQuery Ajax传值到Servlet出现乱码问题的解决方法
  4. 创建struct fib_info函数分析
  5. GStreamer 编写一个简单的MP3播放器
  6. 嵌入式Linux系统编程学习之七gdb调试器
  7. 【LeetCode】剑指 Offer 30. 包含min函数的栈
  8. 源码分析Dubbo服务提供者启动流程-上篇
  9. 2018.09.19 atcoder AtCoDeer and Election Report(贪心)
  10. Java中Lambda表达式的使用(转)