正则篇(四):源文件准备
简介:用正则进行源文件准备,比如,对原文中含有html样式的xliff文档进行译前准备。
我在跟各个职业译员沟通的时候,发现一个困扰大家许久的问题,就是源文档分析和导入。
可能你会说,源文档嘛,拿过来翻译就好了,这有什么难的呢?还真不是。
不信我们来看一个案例。
案例
这是一份*.xliff
格式的文档,源语言是英语,目标语言是德语。但是你看,这个文档的每个开标签<target xml:lang="de"/>
后都缺失了关闭标签</target>
。
当然,这不是最主要的问题,最主要的问题是,原文中含有有HTML
样式,确实不能直接导入翻译。
不信我们看,如果将这个文本直接导入到CAT工具中,效果是不尽如人意的。
需要说明的是:在这里我没有做任何设置,直接将文档进行导入。导入后有几个明显的问题:
虽然原文中即使缺失了标签对,但是不影响导入;
原文中的HTML样式导入不理想,比如
<p>
、<ul>
、</p>
、</span>
等等;一个句段太长,或者断句不理想,影响翻译时候的视图。
那,怎么解决呢?其实很简单:
进行译前文件准备,将原文件标签对补充完整
将完善后的文本作为原文,再次导入至CAT中
补充标签对
首先,我们可以借助正则,把一个标签<target xml:lang="de"/>
补充为完整的标签对<target xml:lang="de"/></target>
。
现在的原文:
<source xml:lang="en">TMGMT Demo</source>开标签前其实有四个空格,但是手机不好显示,我就先删了。
写正则的时候我是按照原文有四个空格写的。
<target xml:lang="de"/>
理想的原文:
<source xml:lang="en">TMGMT Demo</source><target xml:lang="de"/>TMGMT Demo</target>
要实现理想的原文也很简单。我们在之前的文章中,讲过写正则的方法:分析归类,正则匹配,测试匹配。
详情见这里:正则篇(二):如何写一个正则表达式。我们用同样的方法试一下。
第一步:分析归类
查找:
开头多个空格开头
+<source xml:lang="en">
+任意内容
+</source>
+换行符
+多个空格
+<target\sxml:lang="de"/>
替换:
开头多个空格开头
+<source xml:lang="en">
+任意内容
+</source>
+换行符
+多个空格
+<target\sxml:lang="de"/>
+和开头一样的空格
+<target xml:lang="de">
+同前面的任意内容
+</target>
第二步:正则匹配
匹配出来后,应该查找:
替换为:
第三步:正则匹配
大家可以用任意的文本编辑器即可。在这里我用的是sublime,当然,大家也可以用notepad++都可以的~
同时,在查找替换的时候一定要记得开用正则进行查找/替换!!!
补充完整标签对后的原文:
导入至CAT工具
我们将修改后的文档另存,直接导入至CAT工具,导入后效果是不变的。因为xliff文档默认有自己的断句规则,也不能搭配html样式。
因此,我们要换一种方式,也就在XML过滤器
基础上加一层HTML过滤器
,组成层叠过滤器
。
如果用这个过滤器导入之后,再来对比一下结果。
这样的话我们是不是就把标签和断句两个问题都解决啦~
操作如下:
好啦这期正则篇先到这里,下期我们分享用正则进行文本解析,提取原文中要翻译的文本。
先放一个案例供大家思考:
预告案例
这份原文来自通信领域,原文是*.txt
格式。通过下方的文档你也能看出,需要翻译的其实只有引号内的内容。
button.confirm: "Ok",
button.cancel: "Cancel",
button.create.new: "Create new",
button.edit: "Edit",
button.save: "Save",
modal.bulkActionWarning.title: "Warning",
你可以先独立思考一下,这样的文档应该怎么导入捏~
你还想学什么,欢迎来问~