网站案例鉴赏,wordpress html5视频,竞价排名机制,室内装饰设计风格ERP中要实现界面多语言的功能#xff0c;则要对各种情况的字符串进行处理并作出翻译。有些字符串的翻译是有规律可行的#xff0c;遵循相应的模板模式#xff0c;解析字符串#xff0c;可以实现机器翻译的效果。 请看帐套数据库表的设计ADCOMP CREATE TABLE dbo.ADCOMP(REC…ERP中要实现界面多语言的功能则要对各种情况的字符串进行处理并作出翻译。有些字符串的翻译是有规律可行的遵循相应的模板模式解析字符串可以实现机器翻译的效果。 请看帐套数据库表的设计ADCOMP CREATE TABLE dbo.ADCOMP(RECNUM DECIMAL (28) IDENTITY NOT NULL,COMPANY_CODE NVARCHAR (10) CONSTRAINT DF__ADCOMP__COMPANY___0E391C95 DEFAULT () NOT NULL,COMPANY_NAME NVARCHAR (50) CONSTRAINT DF__ADCOMP__COMPANY___0F2D40CE DEFAULT () NOT NULL,SUSPENDED NVARCHAR (1) NULL,DB_SERVER NVARCHAR (128) NULL,DB_DATABASE NVARCHAR (128) NULL,DB_USER NVARCHAR (128) NULL,DB_PASSWORD NVARCHAR (128) NULL,DB_DRIVER NVARCHAR (20) NULL,DB_REPT_DRIVER NVARCHAR (20) NULL,CREATED_DATE DATETIME NULL,CREATED_BY NVARCHAR (10) NULL,REVISED_DATE DATETIME NULL,REVISED_BY NVARCHAR (10) NULL) 在界面上它的实现方法如下图所示 数据表ADCOMP的COMPANY_CODE在界面上翻译成Company Code字段COMPANY_NAME翻译成Company Name这种翻译方法有规律可遵循可以实现由程序自动翻译。 下面列举几种常见的情况分析如何实现程序解析并翻译。 模式1 下划线分割单词 COMPANY_CODE 这种模式的特点是有含义的单词全部以下划线分隔有含义的单词可以是英语中的名词也可以是自造的缩写词与词之间用下划线分隔。下面再举几个例子分析 ITEM_NO – Item No 物料编号, NO是Number的缩小 ITEM_CODE – Item Code 物料编码 MAIN_LOC – Main Loc 物料主档中的设定物料的主仓库 FG_LOC – Fg Loc 车间控制中的参数设定完工成品默认进仓的仓库 FG是对成品Finished Good的缩写 处理算法先去掉下划线以空白符号隔开再把首字母大小其余字母小写 模式2 多余的前缀去除 tbl_User 我一直觉得这种命名方法有待于商议给数据库对象加前缀。比如给所有的表加tbl,所有的视图加vw-存储过程加sp_, 触发器加tr_这样形成了一套很有规律的数据库命名方案。 tbl_User 用户数据库 sp_ItemNoWhereUsed 存储过程查询物料编号在哪些物料清单中用到 vw_User 用户视图 tr_UserNew 当增加新用户时自动写入创建当前的用户的时间和IP地址 这种方法好处理去掉固定的前缀即可。tbl_User变成User然后可以自动翻译成用户。 这也产生了一个问题经过去除前缀处理上面有2个数据库对象均是User(tbl_Ueer,vw_User) 这2个最终都被翻译成了User,在有些场合这会造成语意不明。举例说明 Style 在服装生产行业常用来指款式。一套衣服有2个系列3种款式4种颜色这样生产一个系列的衣服就会产生2*3*424一共有24件衣服。 在程序中为了让窗体看起来美观经常加一些漂亮的皮肤比如Office 2007的蓝色Office 2010的银色形容程序的外观也是用的Style这个词。 于是同一个词语有2个地方用到但是它们的含义完全不同。争对这种情况为了实现翻译自动化我的处理方法是把后一种情况(界面外观)的用词改成Application Style这样可以与前一种衣服的Style区分开来。 模式3 程序类型定义数据库表对应的内存对象 UserEntity LLBL Gen 会给生成的表加上Entity后缀以表示它是数据库的内存对象表示这样我们自己给对象定义名称时绕开这个规定避免给对象名加Entity后缀。 这个界面是采用翻译自动化实现的。Source Table Name是数据库中的表定义比如UserGroup表的定义如下 CREATE TABLE dbo.UserGroup(UserGroup NVARCHAR (10) DEFAULT () NOT NULL,Description NVARCHAR (30) DEFAULT () NOT NULL,Suspended NVARCHAR (1) NULL,CreatedDate DATETIME NULL,CreatedBy NVARCHAR (10) NULL,RevisedDate DATETIME NULL,RevisedBy NVARCHAR (10) NULL,OwnerBranch NVARCHAR (4) NULL,SourchBranch NVARCHAR (4) NULL,Email NVARCHAR (100) NULL,CONSTRAINT PK_UserGroup PRIMARY KEY (UserGroup))
GO 定义表之后借助于实体生成工具或是LLBL Gen代码生成器生成了实体对象UserGroupEntity。 我取数据表名时只需要把Entity去掉就可以知道这个实体对象对应的表名。Table Name这一列是方便于阅读的根据表的定义自动生成没有实际的存储在数据库。 4 数据表关系实体对象关系(一对一一对多)的命名 BranchDetails 这个灵感来源于LLBL Gen Pro的设计器配置属性请看下图 这几个部分节专门是设置命名规则的Strip patterns剔除模式Name pattern命名方法。 来看看关系的命名文档中是这样写的 {$StartEntityName} for the name of the start entity, {$EndEntityName} for the name of the end entity, $P or $S suffix to entity name macros to pluralize or singularize them singularize [siŋgjulәraiz] vt. 使显著, 使成为唯一, 使成为单数 pluralize [pluәrәlaiz] vt. 使成复数 vi. 兼职, 成复数形式 $P 复数表达形式比如下图中的BranchDetail在关系中表示成了复数形式BranchDetails 这是默认的生成方法不源于这里的设置也可以修改。 这其实也解释了系统中实现一种通用的命名方案的好处统一的命名方案有利于界面翻译处理也可以让程序望文生义简单直观。转载于:https://www.cnblogs.com/JamesLi2015/archive/2013/05/17/3083148.html