当翻译竟然变成了文本编辑
原文:李笑来@学习学习再学习
翻译一本书只需要一天时间!
—— 这是我今天做的事情。
月初的时候,摸索了一阵 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 1
activate
set w_position to its position set w_size to its size end tell
end tell
set 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,好像我还能再读至少两三千本好书呢……』
就这样。