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*4=24,一共有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

ERP开发中应用字符串解析实现界面翻译智能化相关推荐

  1. 会计期间在ERP开发中的设计思路

    会计期间在ERP开发中的设计思路 2010年08月03日00:00 it168网站原创  作者:IT168 阿峰  编辑:李倩 评论:1条 本文Tag: ERP ERP开发 系统分析 [IT168 专 ...

  2. ios开发中的字符串常量如何处理

    ios开发中的字符串常量如何处理 转载于:https://www.cnblogs.com/so-magic/p/4623547.html

  3. c语言找字符串的位置,C语言开发中查找字符串位置的方法

    C语言开发中,我们可以使用strstr函数找到字符串,程序员在这个时候要怎么操作呢?别着急,今天是爱站技术频道小编为大家介绍的C语言开发中查找字符串位置的方法,一起参考看看吧! C语言strchr() ...

  4. php开发中常用字符串函数总结

    1. strlen() 计算字符串长度 2. substr 截取字符串,采用 起点-长度方式. //特例需要记住 取字符串除了最后一位的所有字符 $rest = substr("abcdef ...

  5. js中json字符串解析

    在开发过程中,经常会用到Json字符串,有时需要对前端传过来的json串解析,或者把前端数据以json字符串的形式传送给后端,下面我们来看一下各方面的应用. 1.JSON格式和JS格式 //JS对象 ...

  6. IOS开发中常量的处理

    IOS开发中,文本解析,键值处理等都会用到常量项目中大部分的处理都是用的C的预处理#define来处理常量 ,比如:#define ELEMENT "element" #defin ...

  7. java 绑定微信号开发_Java开发中的常见危险信号

    java 绑定微信号开发 在开发,阅读,复审和维护成千上万行Java代码的几年中,我已经习惯于看到Java代码中的某些" 危险信号 ",这些信号通常(但可能并非总是)暗示着代码有问 ...

  8. 在字符串中标红_在C ++中标记字符串

    &在字符串中标红 In this article, we'll take a look at how we can tokenize a C++ String. 在本文中,我们将研究如何标记C ...

  9. ERP系统中的工作流和业务流

    首先解释两个概念: 工作流,将工作分解成几段不同的任务,然后通过一定的规则和过程来执行这些任务并对它们进行监控,达到提高工作效率,降低生产成本,提高企业竞争力等目的.它大多应用于办公自动化领域. 业务 ...

最新文章

  1. asp.net数据绑定之Eval和Bind区别
  2. POJ1573-Robot Motion
  3. android 环形时间显示_Android圆形进度条颜色的设置
  4. 统计学习方法 第一章 学习笔记
  5. 从CMDB动态获取服务器列表,按照Ansible的约定
  6. python中enumerate()的理解
  7. es5中数组方法unshift、splice、reduce使用
  8. 以整体思维看问题:解决单页应用,系统角色请求覆盖身份唯一标识(本项目中是session_id命名的)发送请求问题
  9. 图像几何变换(geometric transformation)
  10. 洛谷P2486 [SDOI2011]染色
  11. gis怎么提取水系_ArcGIS水文分析实战教程(7)细说流域提取
  12. 计算机开机硬盘扫描,解决每次开机都检测硬盘
  13. 电气自动化专业英文词汇及缩写
  14. AppleID加入苹果开发团队
  15. ubuntu eclipse java_ubuntu 下安装eclipse amp;java环境配置
  16. 用汇编实现256以内的三个数的加减乘除运算
  17. android mp4 画面裁剪,Android视频时长裁剪
  18. rk3568 移植 GPS/GNSS 模组
  19. 临时邮箱如何申请注册,申请临时邮箱后有什么好处?
  20. 球球大作战如何在电脑上玩 球球大作战电脑版教程

热门文章

  1. C语言 | 函数执行成功时,return 1 还是return 0?
  2. C语言中的三目运算符是啥?有何用处?
  3. android 注解点击事件,android click事件注解
  4. 关于单纤与双纤光端机的区别介绍
  5. 485串口光纤转换器产品介绍
  6. 【渝粤教育】国家开放大学2018年春季 0093-21T刑法 参考试题
  7. [渝粤教育] 西南科技大学 工程建设监理 在线考试复习资料
  8. 【渝粤题库】陕西师范大学202421 教育管理心理学 作业 (专升本)
  9. 【渝粤题库】国家开放大学2021春2773特种动物养殖题目
  10. php vue联动查询,使用vue.js实现联动效果的示例代码