这篇文章上次修改于 352 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

为什么不直接使用翻译器?

诸如 DeepL 一类的工具可以很方便地做到选中段落的翻译。当 DeepL 在后台运行时,选中论文中的段落后,双击⌘(Cmd) + C即可立刻将选中内容拷贝到 DeepL 中翻译。使用「有道词典」等 App,甚至可以做到划出段落时自动弹出浮窗翻译。

那么为什么不直接使用这些翻译器呢?笔者在使用这些翻译器时,常出现的一个问题是处理论文中的单词折行。例如,单词translate出现在行尾时,会被排版系统拆分为trans-late,其中trans-放在前一行尾,late放在后一行始。在拷贝到翻译器中时,这些折行仍会出现在段落中,变成trans- late这样的文本。一些翻译器在处理这种文本时会出现问题,例如 DeepL 有时会把它们当作两个单词对待,有时又会莫名其妙丢词错译。

一个简单的处理方式是:把段落粘贴到一个字处理软件中,例如 VSCode,或者笔者使用的 Kate,然后使用「查找-替换」功能将所有的-(短横线+空格)替换为空,然后再将替换好的文本拷贝到翻译器里。如果只是偶尔使用的话,这样也未尝不可,但经常需要调用翻译功能时,这样重复就太繁琐了。

因此笔者尝试将这一过程自动化。说到自动化,很多人会想到 Alfred ,但笔者没有为之付款;况且杀鸡焉用牛刀呢,MacOS 自带的「快捷指令」功能就可以方便地做到。

快捷指令制作

遵循以下步骤,让我们来制作属于自己的自动化指令!

  1. 在启动台中找到「快捷指令」应用,默认情况下它应当在「其他」文件夹里。或者,你也可以按下⌘(Cmd) + 空格打开聚焦,输入「快捷指令」查找该应用。

  2. 打开应用后,按⌘(Cmd) + N新建一个快捷指令,或者也可以按下右上角的「+」号来新建。新的快捷指令窗口如下。

快捷指令
  1. 单击顶端的「快捷指令名称」为这条指令起个名字,比如「论文翻译」。你也可以点击名称左边的图标来更换它。

  2. 点击右上角的按钮切换到「快捷指令详细信息」选项卡,点击「添加键盘快捷键」,并为其指定一个组合键。我选择了⌃(Ctrl) + ⌥(Option) + ⌘(Cmd) + X。我建议将这一组合键设置得尽可能生僻,以最大程度防止与已有键位冲突。

  3. 现在,它应该自动为你勾选了上方的「作为快速操作使用」和「服务菜单」,并在左边的流程中添加了一条「从快速操作中接收所有输入」。单击所有,将其修改为仅勾选文本

快速操作选单
  1. 单击右上角按钮切换到「操作库」。配合右侧的搜索功能,找到这些组件,将它们依次拖动到流程中:「从输入中获取文本」,「替换文本」,「翻译文本」,「显示结果」。然后,对流程进行以下修改:

    • 对于第一项:接收文本输入,将「如果没有输入」的反应修改为「停止并回应」;

    • 对于第三项:替换,在第一个输入框里填入-(短横线+空格),将第二个输入框留空(它应该会显示一个占位符「世界」);

    • 对于第四项:翻译,将源语言选为「英语(美国)」,将目标语言选为「中文(普通话 - 中国大陆)」。

      源语言不建议使用「检测到的语言」,这个功能偶尔会识别出怪异的结果。

指令流程
  1. 直接关闭编辑窗口。你的指令应该已经自动保存了。关闭「快捷指令」应用。

现在找一篇论文,选中一段文字,按下你设定的快捷键,看看有没有弹出翻译结果。

结果

观察到第一行末、第二行始的transduc- tion被成功地翻译成了「转导」。

总结

你成功地自动化了论文翻译处理折行的流程!但说到底,如果要在科研上有所精进,学会直接阅读英文原文十分重要。翻译器不是万能的——例如「Transformer」一词,其对应的中文翻译尚未确定,但翻译器仍会试图把它译为「变换器」「变压器」,甚至「变形金刚」。尽管变形金刚模型听起来很帅,但它对于理解论文内容只会造成反效果。