在进行翻译的过程中,我们会遇到各种各样的文档格式。有些文档对我们来说比较简单,比如.docx
、.ppt
、.xlsx
这些Office的文档,但是有些就比较复杂了,尤其是.xml
、.po
、.dita
、.md
、.html
、.php
、srt
、psd
等等之类
本文将介绍翻译与本地化的各种文档格式
为什么先讲XML格式?
因为大家都是搞翻译的嘛,几乎每天都在和xml格式的文档打交道,只不过您可能不知道它是xml文档而已。比如(接下来您可能要惊叹了),我们用的word的.docx
文档,其实就是基于Office Open XML标准的压缩文件格式,本质上就是一个xml文档。
是不是觉得不可思议,接下来您可以拿一个docx的文档跟我一起试试:
我们来看一个案例,这里有一个docx的文档,长这个样子:(我用Office Word打开的)
现在,我们对这个文档做如下操作:
docx
改为zip
格式,变成一个压缩包;document.xml
的文档,这就是原来的docx文档底层xml文档。在这里我用vscode打开的,您也可以用任何一款文本编辑器打开,比如电脑自带的记事本,或者常用的Notepad++,sublime之类的都可以
如果您电脑没有,建议装一个~(选一个安装就行,不用都装~)
除此之外,我们现在用CAT工具,翻译记忆库是.tmx
格式,其实.tmx
格式也是xml文档。
包括大家熟悉的xliff
格式,也是xml文档
所以我们就来看看什么是xml文档
可扩展标记语言,标准通用标记语言的子集,简称XML,是一种用于标记电子文件使其具有结构性的标记语言。——摘自百度百科。
其实这个定义说的很清楚,但是我想,如果您是新人,可能有些比较难懂的词:语言、标记语言、标准通用标记语言、可扩展标记语言。
所以我们看看先来看这几个“名词”。
语言,这里指的是计算机的语言。就像人之间交流用的是人类语言,什么中文、日语、英语等等不同的语言,当然也有手语、肢体语言等等,有了语言人与人之间才能交流
可是,计算机理解不了人类语言。
所以我们要用计算机的语言,告诉计算机,“我在讲什么。”像小时候计算机课上学的0和1这种二进制数,就是一种机器语言(您可以理解为甲骨文),除此之外,还有HTML、GML、XML、C++、VC、VB、Delphi、Java、PHP、Python等等(您可以对标现在的中文、英文、日语等等),这些都是计算机的语言。
通过计算机语言,才能实现人与计算机进行交流和对话。
标记语言,Markup Language,是一种将文本以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。(摘自百度百科)
如果看不懂的话,我拿人类语言的标记举例子:
我们再回到标记语言这个话题,标记语言=标记计算机语言。那,什么是标记计算机语言呢?
您可以理解为,给计算机文本用信息符号做个标记,告诉计算机“哦,这个符号代表啥文本信息,那个标记代表文本的啥结构”。(其实标记就是标签,tag)
在标记语言中,一定要说明:
举个例子,我写了这样一个标记:
您可能会有这样一个疑问:“那,我想怎么写就怎么写吗?”
比如,我在文本前输入井号加一个空格
,告诉计算机“只要是见到井号+空格,就表示标题。
——这样可以吗?
是的,在标记语言中,您想标记什么就标记什么,您想怎么定义结构就怎么定义结构,您想怎么写就怎么写,只要您和您的计算机商量好了就行。
但是这会有一个问题,就是:但凡换一台计算机,都不知道您在说什么。
那咋办?
为了解决“让大家都明白”的问题,在1986年国际标准化组织出版发布了一个信息管理方面的国际标准(ISO 8879:1986信息处理),也就是标准通用标记语言。
标准通用标记语言,Standard Generalized Markup language,中文简称“通标语言”,英文简称SGML,就是计算机的文本结构和描述内容的国际标准语言。字面意思其实就可以理解:标记语言是标准通用的,只要您按照这个标准,甭管是哪台计算机,都遵循一个规范,这样就“听”得懂您说的啥,也就能顺利全球沟通啦~
既然是国际标准规范,那遵循什么规范呢?
一份“通用标言”文档可能有三部分组成:
不同的文档有不同的文档样式,比如我们的HTML文档有HTML文档的国标样式,您要是写HTML文档,遵循这个标准就行。
比如:在HTML中我们用<p>这是一句话</p>
表示文本这是一句话
是段落,这样就给文本赋予了一个段落结构。
如果您还是看不懂,您可以随意打开您的一个页面,查看这个页面的源代码。
对于这样一个文本而言,好处是什么呢?——您可以很清楚地看到这文本的布局。如果把源代码关掉,就可以看到图片、排版对不对?
可是问题呢?——HTML的复用率很低。您的文本格式、图片大小、宽度、固定值啥啥都固定了,当然很难复用了。
那怎么办?——变成可扩展标记语言,也就是XML嘛~
XML的全称是Extensible Markup Language就是XML的全称,我猜是因为发音就是/ex/=X,所以才缩写为XML,而不是EML。我也查了一些资料,没找到什么答案,您们要是感兴趣可以自己研究研究~分享给我呀~
如果我们了解了标记语言,那“可扩展”应该比较容易理解,就是:您可以由一个xml扩展到新的语言,比如:WAP和WML语言。
您只需要记住xml的几个特征:
<seg>
,<source>
等。既然标签名是自定义的,那么在用CAT工具翻译的时候就需要明确标签的名称;当然,有的名称来源于XML文件本身,但是有些来源于用于创建XML文件的定义文件,如 DTD(document type definition文档类型定义)文件, XSD(XML SCHEMA Definition)文件(定义XML文档的合法构建模块)。既然XML也是SGML,那么XML当然要遵循SGML的规范。
我们一起来看一个xml文档。
<topic>
的子元素这样,就构成了一个完整的xml文档啦~
这一部分我们想将XML的元素、标签、属性、条件和实体讲明白,让我们更加清楚地认识一个xml文档,知道哪些该翻译,哪些不该翻译。
我们拿上文提到的这个xml,给大家举例。
这是怎么组成的呢?
XML声明是XML文档的第一句,描述了版本号和编码,其格式如下:
<?xml version="1.0" encoding="utf-8"?>
您可以理解为这是xml的自我介绍:
“Hi,我是一个xml文档的1.0版本,是utf-8编码格式。”
我们把代码片段中,从最左侧的尖括号到最右侧的尖括号之间的所有内容称为“元素”,英文名是Element,是XML文档中很重要的组成部分。
XML元素包括标签、文本、属性、注释等等,比如:<text>Introduction</text>
,这就是一个元素。
一个xml文档可能包含很多的元素。
我们先来看看标签。
关于标签,您需要了解:
<text>
和</text>
,都是标签,标签名是text。标签名一般不翻译。<text>
是开始标签,</text>
是结束标签。 具有同一个标签名的“开始标签+结束标签”是一对标签对,比如:<text></text>
是一对。标签对之间的文本,我们称为元素内容。
关于文本,您需要了解:
<emphasis></emphasis>
标签对。<text></text>
,有时把这样的标签也可写成<text/>
(斜杠在元素名称后面),这样的元素我们称为空标签,或者独立标记。您可能会问,空标签还需要翻译吗?——也要分析,我们往下看。但是文本并不是我们想写啥就写啥,有时候得换个写法才能呈现我们想写的内容,也就是得改为实体。
关于实体,我们只需要了解:
XML规范规定,如果下列字符出现在要显示的文本中(在我们的例子中是要翻译的),它们应该写成实体。
如果您想要 | 您需要改为: |
---|---|
< (小于号) | •< |
> (大于号) | > |
&(和) | •& |
‘ (英文单引号) | •' |
” (英文双引号) | •" |
如果您看不懂,我举个例子。 如果您想要这个文本:
这个文本的XML应该如右图所示:
大于号不是>,而是>
,单引号不是’,而是'
。这就是实体。
这告诉我们什么呢?——如果您在xml中遇到了实体,是不是要考虑在翻译的过程中把这些实体设置为标签呢?
如何设置标签,参见:正则篇(六):用正则将文本标记为标签
关于属性,您需要了解:
属性名
+=(等号)
+英文单引号/双引号
+属性值
组成。比如这样一个标签:<button value="Cancel" />
,这个标签的意思是:
在翻译一个文档时,最主要的选择和设置准确的过滤器,XML文档也不例外。
memoQ中有默认的XML过滤器,基本可以实现您对XML文档的需求。
不论是什么XML文档,都可以直接导入进memoQ,如果导入后发现导入的内容不对,那么我们再说~
那我们看看翻译XML文档有哪些需求,以及memoQ的过滤器如何解决。
正如前两篇讲的,翻译单语言的XML文档一般有以下几个需求:
(1)标签名和属性名不能翻译。
——memoQ的XML过滤器能够帮我们自动识别标签名和属性名。
这样我只需要翻译标签之间的文本,可以忽略标签名,就保证了标签名和属性名称不会被译员随意翻译和修改。
(2)标签文本和属性值要译前分析,比如是否可译?是否是条件?是否是注释?等。
——您可以在XML过滤器中设置可译文本和条件,定义哪些标签对之间的文本要翻译?或者不翻译?哪些属性值要翻译或者不翻译?哪些属性值是注释?哪些属性值是条件?等等。
这样您在翻译的时候,非译的内容就不会影响到您,而且可以实时看到各种条件和属性了
以上提到的具体细节,我拿几个案例文档来演示。
我已经在memoQ中创建了一个项目,语种是英文翻译至简体中文。
以下所有的XML文档都在这一个项目中导入。
常规的XML一般只需要翻译标签对之间的文本。
您可以直接导入,导入后,标签名会被自动过滤,您只需要翻译要翻译的文本就好了,不需要考虑XML标签的问题。
如果标签对之间还有行内标签,
您可以把标签设置为行内标签。
如果标签对之间的文本不需要翻译,
您也可以设置为非译。
如果XML文档中遇到有属性值需要翻译,
您也可以把需要翻译的属性值设置为要翻译,或者非译。
有些属性值当中是包含条件的。比如下图中,如果您希望:只有translate属性值是yes的时候,文本/另一个属性值才翻译。
就可以设置翻译/非译条件。
通过上文,我们知道了XML文档的构成。
如果您的XML文档是单语言的,我也讲了如何翻译单语XML文档。
但是除此之外,我们也会遇到多语言的XML文档,尤其是游戏本地化和应用程序本地化中。
所以,今天我来介绍一下,多语言的XML文档长什么样子,以及如何翻译。
先来看一个多语言的XML文档示例,其实和单语言的差不多,但是又有所不同。
我们来分析一下这个XML:
<?xml version="1.0" encoding="utf-8"?>
<Config>
<Menu>
、<Item>
、<lang_DE>
、<lang_EN>
、<lang_FR>
、<lang_JP>
、<lang_ZH>
等。<lang_DE>
代表德语;<lang_EN>
代表英语;<lang_FR>
代表法语;<lang_JP>
代表日语;<lang_ZH>
代表简体中文;<Item>
元素还包含两个属性,其中:
segorigion
是注释;segID
是上下文。认识了这个XML文档,应该怎么翻译呢?
翻译首先要设置对过滤器,翻译多语言的XML文档也不例外。
多语言的XML文档需要用多语言XML过滤器,通过设置XPATH实现。
我们看一下具体操作:
Step 1:创建多语言的项目
在这个项目中,我的源语言是英文,目标语言是德语、法语、日语、中文(中国大陆)。
需要注意的是:多语言项目要记得为每个语种设置记忆库
术语库可以是一个多语言的术语库。
Step 2:选择性导入 > 选择xml文档 > 更改过滤器和配置 > 选择多语言XML过滤器 > 点击编辑导入规则。
跳转至XML导入规则窗口。
您可以在左侧点击各个元素,预览XML全局。
Step 3:(重点)设置XPath
多语言的XML文档是通过XPath来实现的。所以我们要定义每个内容,设置完成一个内容就可以点击“保存至规则集合”。
内容规则说明如下:
//lang_DE
,选择memoQ语言为德语;//lang_EN
,选择memoQ语言为英语;//lang_FR
,选择memoQ语言为法语;//lang_JP
,选择memoQ语言为日语;//lang_ZH
,选择memoQ语言为简体中文;segID
是上下文,所以输入:
//Item/@segID
//Item/@segorigin
点击完“保存至规则集合”,会在左侧预览设置好的内容。
说明如下:
全部内容设置完成后,预览如图:
Step 4: 点击“确定”,预览设置后的导入规则
Step 5: 点击“确定” > 确定,完成多语言XML文档的导入
Step 6:打开文档,预览并翻译
在这里,我用的小牛机器翻译进行预翻译。
Step 7: 翻译后导出
我们发现,导出后的译文,每个语种都应该在自己应该在的位置:
<lang_DE>
为德语;<lang_EN>
为英语;<lang_FR>
为法语;<lang_JP>
为日语;<lang_ZH>
为简体中文;最近几天整理内容发现一个客户需求:能不能在翻译的时候通过配置样式表,来预览 XML 的显示效果。
所以,今天和大家分享:如何在翻译的过程中基于样式表进行 XML 文档的显示预览。
如果您不想了解 xslt,只想了解如何翻译的话,可以直接跳至下一节。
我们知道,CSS 是 HTML 的样式表,通过 CSS 的设置,可以告诉浏览器:“我的网页布局是这样那样显示的~”。包括颜色、字体、文本大小、元素之间的间距、元素的位置和布局、要使用的背景图像或背景颜色、不同设备的不同显示和屏幕大小等等。
而 XSLT (eXtensible Stylesheet Language Transformations) 则是 XML 的样式表,它远比 CSS 更加完善。
通过 XSLT 的设置,可以告诉浏览器或者服务器:“我的 XML 文件是这样那样显示的。”
比如,这里有一个样式表:
我们不讲样式表如何写,我也不是程序员,如果您感兴趣,可以去搜索 XSLT 教程。
这是需要翻译的 XML 文档,在这个 XML 文档中添加了 XSL 样式表引用:
如果没设置预览文档的话,导入后的预览仍然是按照 XML 文档格式来的:
memoQ 支持翻译过程中只需要配置 XSLT 样式表,即可预览 XML 文件。
您只需要:在导入文档时,使用”选择性导入” -> “更改过滤器和配置” -> 在默认的”XML 过滤器” 下,点击”常规” -> 并”指定 XSLT 文件“。
导入后即可在预览区显示 XML 啦!
© Copyright 2023. 大辞科技 沪ICP备17050550号 沪公网安备 31011402006110号