整理只有大小写不同的译文修改列表 - 正则表达式妙用之2

3 篇文章 0 订阅
3 篇文章 0 订阅

最近两个月多月都在进行一个将近300页的中文出版物的编校和排版工作,里面的内容是客户的人员从英文翻译过来的。

前一个多月,精力主要放在文字编校上。首先我用语料对齐工具,将英中文字进行段段对齐,将生成的翻译记忆库(其实成为bitext更贴切)导入memoQ点LiveDocx,继而对已导入memoQ的Indesign IDML文件进行预翻译,然后逐段对文字进行核对,主要是纠正个别未对齐的句段和恢复排版标记(我称之为解决“技术问题”),以及更正文字错漏,包括不一致的译法(我称之为解决”翻译错误”)。

在七千多句段中,发现了几百处翻译错误,我还是小有成就感的。在与客户进行几轮意见交换后,在memoQ里对其中大部分错漏进行了更正,还有几十个不太好确定或牵一发而动全身的问题,姑且标出来,留作后续编校流程再做决定。关于借助memoQ的Comment功能进行意见交换,我会在日后专门写一篇文章,做详细介绍。

等文字定稿后,我就从memoQ导出中文的IDML文件,再导入Indesign,进入排版流程。排版流程非常高效,一周时间就搞定了,这主要归功于排版前所做的标记恢复工作,以及导入IDML文件后马上进行的复合字体以及字符和段落风格导入工作。这些导入内容都是从前类似项目中用过的,只需一两分钟即可完成导入。完成这个步骤之后,可以立刻看到大致的排版效果,又是一个非常爽的体验呀!

在用Indesign完成第一稿排版之后,我导出PDF发给客户进行预览,主要是供客户对整体效果进行评估,而整体效果则是基于较为严格的风格映射,即字形、字号、行距、段距、分页,等等。在发出包含预览PDF的邮件不久,我依旧闲不住,就又对译文进行核对。我又发现了近百处错漏,除了个别技术性的,大部分还是译文本身的问题。这些问题不算多,但另一个新发现的系统性问题,却让我不寒而栗!

我发现一些保留不翻译的文章标题和书籍名称,大小写很一致!我仔细对比了一下,似乎有一些规律,但又并非完全如此。我立刻给客户去邮件,她很快回复,解释说,他们那边各语种(英法西等)版本定稿过程中开了个会,最后决定各个语种自行决定大小写风格。这些语种定稿后,中文版本没可能没来的得及作相应修改,她的建议是根据英文校对的修改,相应在中文中进行修改。

看到她的建议,我的第一本能是,从memoQ中导出双列RTF格式,然后将原(英)文列和译(中)文列分别复制粘贴到文本对比工具 Diff-Match-Patch 中,然后浏览修改标记,发现保留不翻译的文字中的大小写不一致,就回到memoQ定位到相应句段,通过复制粘贴进行修改。我尝试了,发现非常繁琐。于是想到用正则。我对这个问题的描述如下:

  1. 一个西文字符串;
  2. 在忽略大小写的情况下,该字符串同时出现在原文和译文中
  3. 该字符串尽可能长(包含一个或多个单词)
  4. 分别在原文和译文中找到的同一字符串应当有大小写差异

前三个条件,用正则应当很好设置。马上操作!

首先,是对要操作的文件进行预处理,即:

  1. 从memoQ中导出双语的RTF格式文件
  2. 删除表头、序号列、状态列、将注释列清空,只保留了原文、译文和空的注释列,这是因为只有原文和译文参与操作。结果如下:
  3. 将原文和译文列对调位置,这是因为这是英中翻译,正则需要先找到译文中的西文字符串,然后在原文中搜索这个字符串。结果如下:
  4. 通过替换操作,将紫色标记全部删除(这是因为,这些紫色标记大多是字符风格控制和手工换行,对于我后面要替换的Indesign文件并无实际意义):

    结果如下:
  5. 选中整个表格,然后选 Layout > Convert to text, 将文件转换成以段落符号分隔的纯文字:
  6. 将文件另存成UTF8编码的纯文本,备用。

 以上是文件的预处理过程,下面就是在RegexBuddy (一款非常好用的正则编辑工具)中编辑的正则 -

(?i)(.{5,99999})(?=[^\r\n]{0,99999}[\r\n]{1,2}[^\r\n]{0,99999}(\1))

- 及其详细解释:

其中最重要的就是,Group 1是在中文中搜到的西文字符串,Group 2 是在英文中搜到的大小写不同的同一字符串。下面是所有例子的列表:

请注意第一个例子,Crawford这个作者名,中文和英文中是一摸一样的,并无大小写差别,但是也被搜到了。这是意料中的,正则开始的 (?i) 就是将搜索设置为大小写不敏感,从而将所有相同内容的西文字符串(无论是否有大小写差异),全部搜到。

Regexbuddy作为正则编辑和调试工具,非常高效,但作为文件处理(比如将文件中的找到的分组字符串提取出来),却显得力不从心。这就需要统一作者编写的另一个正则工具 PowerGREP了。下面是提取结果:

这个列表包含大量一摸一样的字符串,当然不是我想要的,可以用 

(?-i)^(.+?)\t\1(\r\n)+

这个正则进行删除(替换为空):

 结果如下:

 

最下面的,就是我想要的最终结果,即以制表符分隔的双列文本,左列是要搜索的文字,右列是要替换成的文字(两列内容一样,只不过大小写有区别)。置于替换操作,有一些工具可以使用,比如Transtools和OkapiFramework Rainbow:下面是我用前一个工具在Word中对双语RTF文件的替换结果。


这个替换过的RTF重新导入memoQ,就可以段原译文进行更新了!而对我之前提到的Indesign文件进行更新,也有两种方法可选。一是Indesign支持VB脚本编程,可以遍历那个列表进行替换;二是通过Rainbow的Search & Replace对另存的IDML进行替换。具体操作方法,本文省略,将来在相应专题中进行介绍。

PS:这些天,还在对这个项目的文字进行修改。现在新的问题是,出版物有个著作列表,正文中在引用其中某些著作时,将其中一些较长的标题缩略(以三个英文句号或三黑点字符表示),但译文部分,却没有完全遵守这个规范,而是有些标题用了全称。客户现在的要求,完全依照原文,为所有标题采用缩略形式。我用下列正则对原文进行筛选:

\b[A-Z][^\s]{1,20}[,,]\s*?“?[A-Z][^“”]{3,100}(…|\.\.\.)+”?(?!\s?\d{4,4})

并用下列正则对译文进行可选筛选:

([A-Z][^\s]{1,20}[,,]\s*?“?[A-Z][^“”]{3,100}(…|\.\.\.)+”?(?!\s?\d{4,4}))?

后一个正则就是将前一个正则开头的单词界限(word boundary)去掉了(因为中文汉字之间以及汉字和英文单词之间没有空格),将整个正则加上括号后后面加上一个问号,表示整个正则是可选的。筛选效果如下:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值