在可变设计流程中,支持动态查询数据库,那么相关数据可以分为两部分,一部分是静态的,一部分是动态的,动态的部分就是建立可变模板时需要的数据,每个批次都可能不一样。静态的部分是相对固定的那一部分数据,和动态数据之间存在着一定的关联。

在多国语言排版中这种情况最为常见,例如服装行业的洗标吊牌,例如其他跨国销售的产品标牌,通常单个版面上包含多种语言的说明。

以吊牌为例,服装尺码不同地区会有不同标准,会有一个尺码对照表,客户下订单只会提供一个标准尺码例如国际尺码。但制作吊牌时,销售到不同地区的需要有复合当地标准的尺码。一般流程采取的方案是在排版前,人工查表查询出其他尺寸录入订单数据。对于多国语言洗标更是麻烦,洗标包含多种信息,例如尺码、产地、服装面料信息、洗标符号,这些信息在不同国家和地区都可能会不一样,服装品牌商通常只会提供一个原始语言版本的数据,和一批多国语言对照翻译的表格给洗标生产厂商,每次排版,查询翻译校对花费了绝大部分工作时间。

词典模型

可变设计提供了一个名为《词典》的模块,用于解决这种复杂的问题。

词典的结构可以分为3个部分:

词典应用

词典用于对输入数据进行翻译和转换,得到最终结果显示在版面上。

品牌商提供的数据中,商品原产地是字段是PARTCOUNTRYORIGIN,在英文版本和其他语言版本中,都是插入此字段,如果没有查询词典,对于某一行数据,那么都会是显示United Arab Emirates这个英文产地。

版面上选中其他语言的PARTCOUNTRYORIGI变量,设置选项,勾选查询词典,指定词典和词表名称,行关键字选择你所期望的语言版本,列关键字使用$(THIS)这个变量,$(THIS)是指当前选中的变量输入值,例如生成第一个产品洗标时$(THIS) = United Arab Emirates,生成第二个产品版面时$(THIS) = China。

常量和变量可以并存,例如,此示例的语料库其实是Made In United Arab Emirates,直接输入United Arab Emirates是查询不出来的,那么可以为列关键字加上made in,查询made in $(THIS)就可以查询出来了。

变量也可以直接指向一个其他变量,而不是当前选中的变量,例如$(COMPOSITION1),代表COMPOSITION1列的数据。

参数化查询

表面上看起来,词典查询类似于机器翻译的一个过程,但实际上并非如此。

翻译工具可以模糊化翻译,不管它是否真正理解了原文,它都会给你一个答案,对不对只能是你自己来判断了。

但这种排版翻译的需求不一样,它需要得到的答案不能是模糊的,要么你就告诉我一个正确的答案,如果你不能百分百确定,你就返回一个错误,我来分析是客户的订单数据错了还是语料库错了,不能找一个相近的糊弄过去。

例如数据里面的面料组成可能是这样:

Shell: 61% Polyester,34% Viscose,5% Elastane,Lining: 100% Polyester

你不能使用自然语言的处理方式(英文翻译,数字和标点不翻译),去拆分并翻译它,因为英文也可能不需要翻译(例如某些缩写或者约定名称),数字也可能需要翻译(例如尺码)。你必须明确的告诉程序,哪些需要翻译,哪些不需要翻译,如果需要翻译的部分没能在词典里面查询到,那么就返回一个错误。

参数化查询就是你用正则表达式将不需要翻译的部分筛选出来,对应有明显特征的成分字段,大概会是下面这么一个流程:

查找:[:,] *\d+% *|,(不需要被翻译的部分,冒号逗号以及之后可能会有的空格,还有百分号前面的数字)
替换:%*%,并按顺序保存参数“: 61%”,“,34%”,“,5%”,“,”,“: 100%”。
得到:Shell%*%Polyester%*%Viscose%*%Elastane%*%Lining%*%Polyester。查询引擎会查询以%*%作为分隔的每一个单元。
翻译后得到:面料%*%聚酯纤维%*%粘胶纤维%*%氨纶%*%衬里%*%聚酯纤维
还原参数:“: 61%”,“,34%”,“,5%”,“,”,“: 100%”,在语句被翻译后还原到原有位置。
得到:面料: 61% 聚酯纤维,34% 粘胶纤维,5% 氨纶,衬里: 100% 聚酯纤维

如果需要用到参数化查询,请在变量所在查询语句两端加上%,例如列关键字本来应该是$(COMPOSITION1),如果需要参数化查询,就变成%$(COMPOSITION1)%。

词典面板

词典面板上可以进行对词典的维护操作。

每个词表后面会显示此词表的行数和列数。

词典数据库

词典存储在一个本地sqlite数据库中,ID安装文件夹\VarDesign\Dict\Dict.db。

如果同时使用的客户端不多,或是没有公共数据库,可以考虑直接使用文件数据库,简单实用,词典更新后,将Dict.db分发到其他客户端。

如果是多人使用,并且单位有数据库,可以将语料库存放到公共数据库上,目前词典模块可以对接两种常用的数据库,SQL Server和MySQL,请自行安装ODBC驱动,配置数据源。

需要连接公共数据库时,请使用如下配置文件:

ID安装文件夹\VarDesign\Dict\VDDictConfig.xml

<?xml version="1.0" encoding="utf-8"?>
<Config>
    <Type>ODBC</Type>
    <ODBC>
        <!-- 可以是SQLServer或者MySQL二选一 -->
        <Driver>SQLServer</Driver>
        <!-- 对应ODBC中配置的数据源名称,名称无限制 -->
        <DataSource>VDDictServer</DataSource>
        <!-- 数据库中建立的只读权限账户,用户名和密码,给排版员使用 -->
        <User>designer</User>
        <Password>123456</Password>
        <!-- 如果本机用于词典维护,请指定为数据库有可写权限的账号,密码登录时输入 -->
        <SuperUser>editor</SuperUser>
    </ODBC>
</Config>

在公共数据库中建立一个任意名称的数据库,为此数据库添加两个不同权限的账号,一个只读,一个可写,然后客户端配置64位ODBC,建立一个和DictConfig.xml中DataSource值名称一致的数据源,SQL Server默认为Unicode编码,MySQL默认为UTF8编码。

连通后,客户端每次启动插件,都会检查远程数据库和修改日期和本地数据库是否匹配,如果不匹配,自动从远程同步到本地,从而保证生成的版面总是使用最新的数据库,某些时候也可以人工同步,例如在设计过程中,词典被更新了,此时可以人工点击词典面板上的下载按钮同步。

连接公共数据库的模式下,普通用户并不能添加修改词典,只有在词典面板右上角登录,输入密码后,才能对词典进行维护,维护完成后,词典面板上的上传按钮可以将本地词典上传到远程公共数据库。