本篇文章节选改编自大辞科技官网(www.datalsp.com)文章《认识翻译与本地化的源文档:XML文档入门(一)》
在进行翻译的过程中,我们会遇到各种各样的文档格式。有些文档对我们来说比较简单,比如.docx
、.ppt
、.xlsx
这些Office的文档,但是有些就比较复杂了,尤其是.xml
、.po
、.dita
、.md
、.html
、.php
、srt
、psd
等等之类的。
所以我想,是不是可以带大家认识一下这些文档呢~
然后就决定准备这个关于翻译与本地化的各种文档格式的系列,今天讲第一篇: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"
-
什么是实体?如,
•"
那,作为一名PM或者译员,了解XML的注意事项是什么呢?
-
标签名和属性名不能翻译。比如:
<button value="OK" />
中,button和value不能动。 -
标签文本和属性值要译前分析:是否需要翻译?是否是条件?是否是注释?等。
-
每一个开始标签一定要有结束标签:
<text>...</text>
-
独立标记格式必须正确:
<image.../>
。 -
实体不能翻译,所以为了防止实体出错,要提前译前处理成标签。
希望通过这两篇文档,让你全面了解XML文档。
偷偷告诉你,只要知道标签和属性,基本都OK了~