这些天做一个英中排版项目,遇到一个问题,感觉很有典型意义:在memoQ中的译文本来已经定稿了,都导入Indesign开始排版了,客户又突然要求修改两个关键术语的译法,总共有几百处,但又不是所有和这两个术语对应的译文都修改,也就是说,原来的译法是“多到多”,修改后的译法还是“多到多”!
逐个搜索、确认、修改,当然是可以的,但人生苦短(马瘦毛长),都2202年了,还手工进行这种低级操作,太悲催了!上state of the art 流程!!
第一步,从前后两个版本的译文,整理一个修改对照表。这个对照表最后要用于专门的批量搜索和替换工具,用脚本对Indsign文件进行自动修改。为了防止overshoot(把不该替换的内容替换掉),以及undershoot(本来需要替换的内容未被替换掉),就要求修改的内容有一定的上下文,这个上下文不能太多,也不能太少。
我跟客户交换的文件是从memoQ导出的双列(双语)RTF格式,段段对照,下面是前后版本的截图:
其中,前三个句段中的译文有修改,后两个句段中的译文没有。那些带数字的紫色标记,是排版相关的,比如字体变化,制表符,折行,等等。假如整段对照进行替换,可能会因为这些标记而发生undershoot。比较理想的对照方法,就是在那些紫色标记所在的位置进行文字切分,得到不涉及排版因素的对照表。这需要在Word中,用通配符将所有紫色标记 [\[\{][0-9]{1,}[\]\}] 替换为分段 ^p:
替换结果如下:
在替换的时候,我特别注意了一下两次替换的次数,是一样的。这说明,切分后句段数应当是一致的。完成这个步骤之后,下一步就是将这两列内容复制和粘贴到一个空Excel表格里,结果如下:
不难看出,句段切分完全对应,非常完美!下面就是用Excel自带的IF函数功能对切分后的句段是否有修改进行标记;所用到的具体函数表达式是: =IF(A4=B4,"N","Y")
截图部分,只有地四个句段有修改(第三列标了 Y)。然后,我有加了第四列,用于标注句段长度:
下面就是按照第三列的修改状态进行筛选,即选 Data菜单项,点Filter按钮:
然后按照各列状态排序:
这里需要特别注意的是,先按照长度列从大到小排序。效果如下:
然后,按照下面这个英文帖子中的方法,将筛选结果复制和粘贴到到文本编辑器中,比如Notepad++,得到一个已制表符分割的修改列表:
https://www.techwalla.com/articles/how-to-copy-paste-filtered-data
可以看出,总共有118处需要替换。置于为何要按照句子长度从从长到短排序,是为了搜索替换需要。