认识本地化翻译中的XML文档(CAT入门必备)

本篇文章节选改编自大辞科技官网(www.datalsp.com)文章《认识翻译与本地化的源文档:XML文档入门(一)》

在进行翻译的过程中,我们会遇到各种各样的文档格式。有些文档对我们来说比较简单,比如.docx.ppt.xlsx这些Office的文档,但是有些就比较复杂了,尤其是.xml.po.dita.md.html.phpsrtpsd等等之类的。

所以我想,是不是可以带大家认识一下这些文档呢~

然后就决定准备这个关于翻译与本地化的各种文档格式的系列,今天讲第一篇:xml格式的文档。

我也不知道我写的到底能不能懂,我也不知道我会不会一直更,平时工作也忙,就慢慢写吧~
如果有问题,可以留言,我从翻译与本地化项目管理的角度尽可能给答复~
如果你是问我关于程序代码应该怎么写,这个请去找更加专业的工程师hhhhh~

好啦我们回到正题,xml文档。xml格式要讲的内容很多,今天先带大家入个门,认识认识XML文档和它的结演变历史。

为什么我选择先讲XML格式?

因为大家都是搞翻译的嘛,几乎每天都在和xml格式的文档打交道,只不过你可能不知道它是xml文档而已。比如(接下来你可能要惊叹了),我们用的word的.docx文档,其实就是基于Office Open XML标准的压缩文件格式,本质上就是一个xml文档。

是不是觉得不可思议,听都没听过?(接下来你可以拿一个docx的文档跟我一起试试:)

我们来看一个案例,这里有一个docx的文档,长这个样子:(我用Office Word打开的)

现在,我们对这个文档做如下操作:

  • 将文档的后缀名由docx改为zip格式,变成一个压缩包;

  • 把这个压缩包解压缩,打开解压后的文件夹,然后打开文件夹内的word的文件;

  • 然后我们打开这个document.xml的文档,这就是原来的docx文档底层xml文档。

在这里我用vscode打开的,你也可以用任何一款文本编辑器打开,比如电脑自带的记事本,或者常用的Notepad++,sublime之类的都可以~
如果你电脑没有,建议装一个~(选一个安装就行,不用都装~)

除此之外呢,我们现在用CAT工具嘛,翻译记忆库是.tmx格式,其实.tmx格式也是xml文档。

包括大家都熟悉的xliff格式,也是xml文档~

所以我们就来看看什么是xml文档~

我想tmx和xliff我们后面应该都会讲吧~希望我会坚持写文hhhhhhh~

1.1 什么是XML?

可扩展标记语言,标准通用标记语言的子集,简称XML,是一种用于标记电子文件使其具有结构性的标记语言。——摘自百度百科。

其实这个定义说的很清楚,但是我想,如果你是一个新人,可能这里面没有一个能看懂的词:语言、标记语言、标准通用标记语言、可扩展标记语言。

所以我们看看先来看这几个“名词”。

1.1.1 什么是计算机语言

语言,这里指的是计算机的语言。就像人之间交流用的是人类语言,什么中文、日语、英语等等不同的语言,当然也有手语、肢体语言等等,有了语言人与人之间才能交流~

可是,计算机理解不了人类语言。

所以我们要用计算机的语言,告诉计算机,“我在讲什么。”像小时候计算机课上学的0和1这种二进制数,就是一种机器语言(你可以理解为甲骨文),除此之外,还有HTML、GML、XML、C++、VC、VB、Delphi、Java、PHP、Python等等(你可以对标现在的中文、英文、日语等等),这些都是计算机的语言。

通过计算机语言,才能实现人与计算机进行交流和对话。

1.1.2 什么是标记语言

标记语言,Markup Language,是一种将文本以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。(摘自百度百科)

如果看不懂的话,我拿人类语言的标记举例子:

  • 老师用红叉标记学生做错了

  • 我们用荧光笔标记重点

  • 甚至用标点符号标记句子的含义,比如句号标记句子结束,问号标记疑问句,等等。

我们再回到标记语言这个话题,标记语言=标记计算机语言。那,什么是标记计算机语言呢?

你可以理解为,给计算机文本用信息符号做个标记,告诉计算机“哦,这个符号代表啥文本信息,那个标记代表文本的啥结构”。(其实标记就是标签,tag)

在标记语言中,一定要说明:

  • 标记的规则是什么,或者标签叫什么名字?

  • 要标记的文本内容,也就是给什么做标记?

  • 标记的结构是什么,也就是各个标签之间的关系是什么

举个例子,我写了这样一个标记:

你可能会有这样一个疑问:“那,我想怎么写就怎么写吗?”

比如,我在文本前输入井号加一个空格,告诉计算机“只要是见到井号+空格,就表示标题。

——这样可以吗?

是的,在标记语言中,你想标记什么就标记什么,你想怎么定义结构就怎么定义结构,你想怎么写就怎么写,只要你和你的计算机商量好了就行。

但是这会有一个问题,就是:但凡换一台计算机,都不知道你在说什么。

那咋办?

为了解决“让大家都明白”的问题,在1986年国际标准化组织出版发布了一个信息管理方面的国际标准(ISO 8879:1986信息处理),也就是标准通用标记语言。

1.1.3 什么是标准通用标记语言

标准通用标记语言,Standard Generalized Markup language,中文简称“通标语言”,英文简称SGML,就是计算机的文本结构和描述内容的国际标准语言。字面意思其实就可以理解:标记语言是标准通用的,只要你按照这个标准,甭管是哪台计算机,都遵循一个规范,这样就“听”得懂你说的啥,也就能顺利全球沟通啦~

既然是国际标准规范,那遵循什么规范呢?

一份“通用标言”文档可能有三部分组成:

  • “通用标言”声明:定义字符集分隔符集和关键字(以下在本文里头简称“声明”)。

  • 文档类型序言:定义一般实体和元素类型
    包含一个“!文档类型(外语全称加缩写:!DOCTYPE)声明”与各种“标记声明”,它们一起组成了一个文档类型定义(外语首字母缩略词:DTD)

  • 实例:包含一个顶级元素和实例的内容

如果你想了解更多,建议自己去查一下~

不同的文档有不同的文档样式,比如我们的HTML文档有HTML文档的国标样式,你要是写HTML文档,遵循这个标准就行。

比如:在HTML中我们用<p>这是一句话</p>表示文本这是一句话是段落,这样就给文本赋予了一个段落结构。

如果你还是看不懂,你可以随意打开你的一个页面,查看这个页面的源代码。

对于这样一个文本而言,好处是什么呢?——你可以很清楚地看到这文本的布局。如果把源代码关掉,就可以看到图片、排版对不对?

可是问题呢?——HTML的复用率很低。你的文本格式、图片大小、宽度、固定值啥啥都固定了,当然很难复用了。

那怎么办?——变成可扩展标记语言,也就是XML嘛~

1.1.4 什么是可扩展标记语言(XML)

XML的全称是Extensible Markup Language就是XML的全称,我猜是因为发音就是/ex/=X,所以才缩写为XML,而不是EML。我也查了一些资料,没找到什么答案,你们要是感兴趣可以自己研究研究~分享给我呀~

如果我们了解了标记语言,那“可扩展”应该比较容易理解,就是:你可以由一个xml扩展到新的语言,比如:WAP和WML语言。

你只需要记住xml的几个特征:

  • 既然XML也是一种语言,所以XML也是一种基于文本的结构化格式;

  • 既然XML也是标记语言,那么你当然可以自定义标签名,或者我们叫“元素名”。比如,我们可以自定义标签名为<seg><source>等。
    既然标签名是自定义的,那么在用CAT工具翻译的时候就需要明确标签的名称;
    当然,有的名称来源于XML文件本身,但是有些来源于用于创建XML文件的定义文件,如 DTD(document type definition文档类型定义)文件, XSD(XML SCHEMA Definition)文件(定义XML文档的合法构建模块)。

  • XML是用来传输和存储数据的,不是用来显示数据的,所以XML文档不包含格式或者布局信息,没有HTML布局明确;
    既然XML不包含格式或者布局信息,那译员如果要预览布局怎么办呢?就需要借助XSLT(transformation style sheet) 文档,XML文档转换为XHTML文档或其他XML。

既然XML也是SGML,那么XML当然要遵循SGML的规范。

我们一起来看一个xml文档。

  • 第一行有XML声明,定义了xml当前的版本(1.0)和编码(utf-8);

  • 第二行描述文档的根元素,就像在告诉你,“hey,我是个例子而已嘛~”
    当然最后一行是根元素的关闭标签。

  • 接下来有描述根元素的子元素

  • 当然,也有描述<topic>的子元素

这样,就构成了一个完整的xml文档啦~

但是如果你不是搞编程的或者不是工程师,你可能根本还是听不懂我在说什么。(说实话,我也是搞了好久才弄清楚这些语言)

但是!这也没关系,作为一名翻译,或者作为一名本地化项目经理,你只需要认识文档,知道哪些该翻译哪些不该翻译,也就是看懂文档的结构,会解析文档就可以了。

所以今天,我们先立个小目标,将XML的元素、标签、属性、条件和实体搞明白,让你更加清楚地认识一个xml文档,知道哪些该翻译,哪些不该翻译。

我们拿上文提到的这个xml,给大家举例。

这是怎么组成的呢?

由于字数限制,这一部分内容在这里不多讲啦~

小伙伴们可以直接去官网看这篇文章《认识翻译与本地化的源文档:XML文档入门(一)》(https://www.datalsp.com/archives/17492),有非常详细的介绍~

这篇文章包括内容:

1.2 XML文档的构成?

1.2.1 声明语句

1.2.2 元素、标签和属性

1.2.2.1 什么是元素

1.2.2.2 什么是标签

1.2.2.3 什么是文本

1.2.2.4 什么是实体

1.2.2.5 什么是属性

1.3 关于XML的总结

我们回到再来回顾一下,今天讲了什么?

  • 什么是标签?什么是标签对?什么是独立标记?如,<text>...</text>

  • 什么是属性?什么是属性值?属性如果表示条件怎么做?如,value="OK"

  • 什么是实体?如,•&quot;

那,作为一名PM或者译员,了解XML的注意事项是什么呢?

  • 标签名和属性名不能翻译。比如:<button value="OK" />中,button和value不能动。

  • 标签文本和属性值要译前分析:是否需要翻译?是否是条件?是否是注释?等。

  • 每一个开始标签一定要有结束标签:<text>...</text>

  • 独立标记格式必须正确:<image.../>

  • 实体不能翻译,所以为了防止实体出错,要提前译前处理成标签。

希望通过这两篇文档,让你全面了解XML文档。

偷偷告诉你,只要知道标签和属性,基本都OK了~

资源下载: