SDL Trados 中翻译Json文件的处理和设置

什么是JSON文件

JSON文件是用来存储简单的数据结构和对象的文件,可以在web应用程序中进行数据交换;JSON是全称为JavaScript Object Notation,是一种有条理,易于访问的存储信息的方法。

JSON文件可以转换为XML文件

在线JSONXML转换

对比JSON和XML

以如下片段为例

JSON
{
	"store": {
		"book": [{
				"category": "reference",
				"author": "Nigel Rees",
				"title": "Sayings of the Century",
				"price": 8.95
			}, {
				"category": "fiction",
				"author": "Evelyn Waugh",
				"title": "Sword of Honour",
				"price": 12.99
			}, {
				"category": "fiction",
				"author": "Herman Melville",
				"title": "Moby Dick",
				"isbn": "0-553-21311-3",
				"price": 8.99
			}, {
				"category": "fiction",
				"author": "J. R. R. Tolkien",
				"title": "The Lord of the Rings",
				"isbn": "0-395-19395-8",
				"price": 22.99
			}
		],
		"bicycle": {
			"color": "red",
			"price": 19.95
		}
	}
}
XML
<?xml version="1.0" encoding="UTF-8" ?>
<store>
	<book>
		<category>reference</category>
		<author>Nigel Rees</author>
		<title>Sayings of the Century</title>
		<price>8.95</price>
	</book>
	<book>
		<category>fiction</category>
		<author>Evelyn Waugh</author>
		<title>Sword of Honour</title>
		<price>12.99</price>
	</book>
	<book>
		<category>fiction</category>
		<author>Herman Melville</author>
		<title>Moby Dick</title>
		<isbn>0-553-21311-3</isbn>
		<price>8.99</price>
	</book>
	<book>
		<category>fiction</category>
		<author>J. R. R. Tolkien</author>
		<title>The Lord of the Rings</title>
		<isbn>0-395-19395-8</isbn>
		<price>22.99</price>
	</book>
	<bicycle>
		<color>red</color>
		<price>19.95</price>
	</bicycle>
</store>

JSON优点

  • JSON文件体积比XML小,数据内容越多两者相差越大

JSON缺点

  • JSON引号需要转义, 写为" ,虽然XML也有五个实体包括引号需要转义,但是目前XML工具比较完善 ,很多都能够自动转义,但是JSON还没有如此普及
  • JSON没有文件头标志, 对比XML的 <?xml version="1.0" encoding="UTF-8" ?> 标记版本和文件编码格式对于不同语言和国家地区有时是很重要的
  • XML有DOM和SAX两种解析方式,JSON目前只有一种

JSON的翻译处理

SDL Trados Studio 中内置了JSON的处理解析器
在这里插入图片描述
默认处理JSON全部内容,并且支持JSONPATH自定义和嵌入式内容处理

JSON PATH

JSON PATH是和XPATH类似的一种处理语言,对JSON文件进行选择,语法上和XPATH非常接近
语法点:

  • $ 表示文档的根元素
  • @ 表示文档的当前元素
  • .node_name['node_name'] 匹配下级节点
  • [index] 检索数组中的元素
  • [start:end:step] 支持数组切片语法
  • * 作为通配符,匹配所有成员
  • .. 子递归通配符,匹配成员的所有子元素
  • (<expr>) 使用表达式
  • ?(<boolean expr>)进行数据筛选
对比XPATH
XPathJsonPath说明
/$文档根元素
.@当前元素
/.或[]匹配下级元素
N/A匹配上级元素,JsonPath不支持此操作符
//递归匹配所有子元素
**通配符,匹配下级元素
@N/A匹配属性,JsonPath不支持此操作符
[][]下标运算符,根据索引获取元素,XPath索引从1开始,JsonPath索引从0开始
|[,]连接操作符,将多个结果拼接成数组返回,可以使用索引或别名
N/A[start:end:step]数据切片操作,XPath不支持
[]?()过滤表达式
N/A()脚本表达式,使用底层脚本引擎,XPath不支持
()N/A分组,JsonPath不支持
  • JsonPath的索引从0开始计数, XPATH索引从1开始计数
针对上面示例文件的对比
XPathJsonPath说明
/store/book/author$.store.book[*].author所有book的author节点
//author$…author所有author节点
/store/*$.store.*store下的所有节点,book数组和bicycle节点
/store//price$.store…pricestore下的所有price节点
//book[3]$…book[2]匹配第3个book节点
//book[last()]$…book[(@.length-1)],或 $…book[-1:]匹配倒数第1个book节点
//book[position()<3]$…book[0,1],或 $…book[:2]匹配前两个book节点
//book[isbn]$…book[?(@.isbn)]过滤含isbn字段的节点
//book[price<10]$…book[?(@.price<10)]过滤price<10的节点
//*$…*递归匹配所有子节点

对与上面的例子,Store中有Book和Bicycle,仅翻译book相关的说明部分,设置如下
在这里插入图片描述
针对category,author,title添加了三条规则

$.store.book[*].category
$.store.book[*].author
$.store.book[*].title

实现效果如下在这里插入图片描述

对比和总结

JSON 解析器功能上还是很局限,例如只能设置要翻译的部分不能反向设置满足条件则不翻译内容,实现除此之外

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值