说明性实施例的详细描述
图1展示了可以在其上实现本发明的合适的计算系统环境100的例子。计算系统环境100只是合适的计算环境的一个例子,它并不意在对本发明的使用范围或功能提出任何限制。也不应该将计算环境100解释为具有涉及示例性操作环境100中所展示的任何一个组件或组件组合的任何依赖性或要求。
本发明可用于众多其它的通用或专用计算系统环境或配置。可适用于本发明的众所周知的计算系统、环境和/或配置的例子包括(但不局限于)个人计算机、服务器计算机、手持设备或便携式设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等。
可以在由计算机执行的计算机可执行指令(例如,程序模块)的一般上下文中描述本发明。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括记忆存储设备的本地计算机存储介质和远程计算机存储介质中。
参照图1,用于执行本发明的示例性系统包括采取计算机110的形式的通用计算设备。计算机110的组件可以包括(但不局限于)处理单元120、系统存储器130和系统总线121,系统总线121将包括系统存储器的各种系统组件耦合到处理单元120。系统总线121可以是几种类型的总线结构中的任一种,包括存储总线或存储控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。举例来讲(不作限制),这类体系结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局域总线和外围部件互连(PCI)总线(也被称作Mezzanine总线)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任何可用介质,它包括易失和非易失介质、可移动和不可移动的介质。举例来讲(不作限制),计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括易失和非易失的可移动和不可移动的介质,该介质用诸如计算机可读指令、数据结构、程序模块或其它数据等信息的存储的任何方法或技术来加以实现。计算机存储介质包括(但不局限于)RAM、ROM、EEPROM、闪存或其它存储技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储器、盒式磁带、磁带、磁盘存储或其它磁存储设备、或可以被用来存储所需信息并可以由计算机110访问的其它任何介质。通信介质通常在诸如载波或其它传送机制等已调制数据信号中具体表现计算机可读指令、数据结构、程序模块或其它数据,它包括任何信息传递介质。术语“已调制数据信号”意味着其一个或多个特征按为信号中的信息编码的方式来加以设置或更改的信号。举例来讲(不作限制),通信介质包括有线介质(例如,有线网络或直线连接)和无线介质(例如,声音、RF、红外线和其它无线介质)。以上任何内容的组合也应该被包括在计算机可读介质的范围以内。
系统存储器130包括采取易失和/或非易失存储器的形式的计算机存储介质,例如,只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)通常被存储在ROM 131中,该基本输入/输出系统包含例如在启动期间有助于在计算机110内的各个元件之间传送信息的基本例程。RAM 132通常包含可立即由处理单元120访问和/或目前正由处理单元120操作的数据和/或程序模块。举例来讲(不作限制),图1展示了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可以包括其它可移动/不可移动、易失/非易失计算机存储介质。只举例来讲,图1展示了从不可移动、非易失磁介质读取或对其写入的硬盘驱动器141、从可移动、非易失磁盘152读取或对其写入的磁盘驱动器151,以及从可移动、非易失光盘156(例如,CD ROM或其它光学介质)读取或对其写入的光盘驱动器155。可以被用于示例性操作环境中的其它可移动/不可移动、易失/非易失计算机存储介质包括(但不局限于)卡型盒式磁带机、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常通过不可移动存储器接口(例如,接口140)而被连接到系统总线121,磁盘驱动器151和光盘驱动器155通常由可移动存储器接口(例如,接口150)连接到系统总线121。
以上所讨论的和图1中所展示的这些驱动器及其关联的计算机存储介质为计算机110提供计算机可读指令、数据结构、程序模块和其它数据的存储。在图1中,例如,硬盘驱动器141被展示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以等同于或不同于操作系统134、应用程序135、其它程序模块136和程序数据137。这里为操作系统144、应用程序145、其它程序模块146和程序数据147给予不同的标号,以说明它们至少是不同的副本。
用户可以通过输入设备,例如,键盘162、话筒163和定点设备161(例如,鼠标、跟踪球或触垫),来将命令和信息输入计算机110。其它输入设备(未示出)可以包括操纵杆、游戏垫、圆盘式卫星电视天线、扫描仪或类似的输入设备。这些和其它的输入设备经常通过耦合到系统总线的用户输入接口160而被连接到处理单元120,但也可以由其它接口和总线结构,例如,并行端口、游戏端口或通用串行总线(USB)来加以连接。监视器191或其它类型的显示设备也经由接口(例如,视频接口190)而被连接到系统总线121。除监视器以外,计算机也可以包括其它外围输出设备,例如,扬声器197和打印机196,这些外围输出设备可以通过输出外围接口195来加以连接。
计算机110可以使用与一台或多台远程计算机(例如,远程计算机180)的逻辑连接而在联网环境中进行操作。远程计算机180可以是个人计算机、手持设备、服务器、路由器、网络PC、对等设备或其它公用的网络节点,它通常包括以上相对于计算机110而描述的许多或所有这些元件。图1中所描绘的这些逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其它网络。这类联网环境在办公室、企业范围的计算机网络、内联网和因特网中很普遍。
当被用于LAN联网环境中时,计算机110通过网络接口或适配器170而被连接到LAN 171。当被用于WAN联网环境中时,计算机110通常包括调制解调器172或用于通过WAN 173(例如,因特网)建立通信的其它装置。调制解调器172可以是内置或外置的,可以经由用户输入接口160或其它适当的机制而被连接到系统总线121。在联网环境中,相对于计算机110而描绘的程序模块或其各个部分可以被存储在远程记忆存储设备中。举例来讲(不作限制),图1将远程应用程序185展示为驻留在远程计算机180上。将会理解:所示的这些网络连接起示例性的作用,可以使用在这些计算机之间建立通信链路的其它装置。
在一个实施例中,系统100包括用于生成商业管理解决方案的软件,该商业管理解决方案可以将总会计和商业功能与特定的应用程序模块集成。这些模块可以包括关于财务、贸易、后勤、生产、客户服务、项目和人力资源的模块。但是,其它模块类型可以用于该商业管理解决方案中。本发明的该解决方案可以被配置成支持多种货币(欧元、美元、日元、韩元等)、多种语言(英语、德语、法语、丹麦语、俄语、日语、汉语等)和多种税收格式(供与多个税收当局打交道的最终用户使用)。
可以从各种不同的来源开发商业管理解决方案中所使用的模块。在一个实施例中,所有这些模块之间的共同链接是标签的用途。标签是由标识符代表的文本。标签可以包括对话框、文本串、或被用来向用户传达信息的任何文本。通常通过资源,例如,图形用户界面或GUI,来向用户呈现标签。但是,可以通过为用户呈现文本的任何其它的手段,来向用户呈现标签。另外,标签可以用于具有诸如“标签”、“帮助”、“标题”和“工具提示”等标签属性的控件上。在先前的商业解决方案软件中,每个模块的标签被保存在单独的资源文件中。但是,这些资源文件通常被保存在特定模块专有的平面文件体系结构中。经常在模块的开发过程中,开发者知道满足当前正被创建的标签的各个要求的另一模块中的标签。但是,现有技术系统的专有文件源结构阻止开发者将来自一个模块的标签用于另一个模块中,也不可能搜索标签。
图2是实体关系图,展示了根据本发明的一个实施例的、包含商业解决方案系统200中的标签的各种集合之间的关系。图2的实体关系图包括语言表格210(或系统中的可用语言的其它指示)、主文件220、标签ID表格230、以及标签文本表格240。在一个实施例中,这些集合被组织为被排列成表格的结构化查询语言(SQL)元数据存储。但是,可以使用集合的其它排列和其它数据库。参照图3A和3B来更详细地描述标签ID表格230和标签文本表格240。
语言表格210是包括至少两个子字段的表格。语言表格210中的两个子字段是语言ID字段211和语言名称字段212。语言ID字段211保存指示特定语言的代码,并且可以由商业解决方案软件程序来理解。语言名称字段212是保存该语言的名称的文本字段。例如,如果可用语言之一是英语-美国,那么,若使用ASCII标准的话,语言ID字段211说明性地可以是“01”,或者,它可以是“en-us”。但是,其它ID类型可以用于语言ID字段211中。例如,该条目的元数据表格的语言名称字段212可以是“英语-US”。作为选择,如果该解决方案是由特定解决方案提供的,那么,该条目会是具有特定语言文本的标签。
当该用户想要查看或更改该系统的操作语言时,可以在标签对话显示中向用户显示存储在语言表格210中的该息。语言表格210与标签文本表格240有1:n的关系。出现这个关系(1:n)是因为在系统200可用的每种语言中会有代表不同标签的多个标签文本。
主文件220在一个实施例中是包括系统200中的每个标签的一个版本的表格。在一个实施例中,主文件220保存原始语言和格式的标签的原始版本。但是,标签的其它版本可以存储在主文件220中。例如,如果使用最佳实践指导方针,那么,系统200可以在主文件220中存储采用英语-美国的标签。最佳实践指导方针是一组过程,它利用特定的类别类型、描述和语言来标准化标签开发。系统200中的每个标签具有主文件220中的关联的项目。当正在更新标签的翻译时、标签还没有被翻译成当前所选择的(活动的)语言时、或因为任何原因而变得无法对系统200不可用时,使用由主文件代表的标签。但是,在选择性实施例中,主文件220中所存储的信息可以在标签表格230或语言240中作为指示主标签的标签ID的一个或多个字段储存。另外,主文件220可以是保存关于其创建语言标签的信息的简单字段。这个字段可以位于标签ID表格230中。
每个主文件对应于标签ID表格230中的一个条目。标签ID表格230包括协助翻译者(正在翻译该文本)正确地翻译标签的各种属性。这些属性也协助该开发者适当地使用标签。主文件与标签ID表格230之间的关系是1:n,因为多个标签ID可以共享同一个主文件。
标签文本表格240包括包含由标签ID标识的每个标签的文本的条目。标签文本表格240也包括包含对各种语言的每个标签ID的翻译的条目。标签ID表格230与标签文本表格240之间的关系、以及语言表格210与标签文本表格230之间的关系是1:n。这是因为标签ID表格230中对一个标签有一个条目,但标签的文本可以存在于多种语言中。但是,在本发明的其它实施例中,标签ID与标签文本之间的关系可以是1:1(或者如果文本不存在的话,可以是1:0),其中,该主标签的每个翻译在标签ID表格230中具有其自己唯一标签ID和条目。
图3A根据本发明的一个实施例展示了构成标签ID表格230的各个字段。标签ID表格230包括ID字段231、名字空间字段232、类别字段234和描述字段235。在其它实施例中,标签ID表格230可以包括字段236,它指出标签ID表格中的条目是从另一个标签复制的,还是被复制到表格中的另一条目的。
通常,标签被保存在资源文件中。本商业解决方案系统不使用可通过数据库元数据存储(例如,SQL表格)来获得的类属资源文件。在本商业解决方案系统中,这些标签被存储在专有资源文件中。与使用专有资源文件相关联的一个问题是:当开发者想要用具有文件的所有资源的文件来取代系统中的一个或多个标签的一个部分时,系统不寻找系统中具有与当前标签相同的标签属性或术语的另一个文件。但是,在商业解决方案环境中,要求商业解决方案系统处理对由多个销售商开发的相同或类似问题的许多不同的解决方案。所以,本发明的标签系统200可以使用由各个销售商所作出的所有贡献的总和。
ID 231字段被用来标识系统200中的特定标签。在一个实施例中,这个ID是全局唯一标识符或GUID。GUID用来避免由于两个销售商对两个无关的标签选择相同的标识号而发生问题。GUID在一个实施例中是128位整数(16字节),它可在要求唯一标识符的任何地方跨越所有计算机和网络来使用。这种标识符系统的运用可减少两个标签将具有相同的ID的机会。在一个实施例中,GUID被表示为串,并根据以下样式来格式化:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
其中,GUID的值按8、4、4、4和12的组中表示为的一系列小写十六进制数位,并且用连字符分开。例如,对于行301的条目的GUID返回值可以是382c74c3-721d-4f34-80e5-57657b6cbc27。但是,其它格式类型可以用于ID字段231。每当生成新标签时,为它分配新的GUID。在一个实施例中,新标签被定义为对于系统200而言是新的标签,而不只是现存标签的翻译。但是,在其它实施例中,为现存标签的翻译生成ID字段231中的新条目。
GUID的运用提供了胜过现有系统的更多好处。首先,不需要将每个标签分成多种语言。另外,GUID允许唯一地标识每个标签,而不需要用其它方法(例如,通过使用行号)来控制该唯一性。其次,GUID允许在web服务上将标签的物理存储从专有资源文件改变成公有资源文件(例如,元数据数据库)。
标签ID表格230中的名字空间字段232是一种特殊字段,它被输入标签ID中,以便当将标签文本从主语言翻译成目标语言时,协助翻译者获得标签的正确词语。在现有标签系统中,不可能容易地了解在程序的什么地方使用特殊标签。另外,不容易了解标签用于哪些区域。所以,翻译者很难(如果不是不可能的话)获得标签的正确词语,除非该程序被安装在其计算机上,并且他们能够了解标签用在什么地方。通过名字空间字段232,可以了解使用标签的区域,而无须将程序安装在翻译者的机器上。当(自动地或手动地)创建新标签时,由开发者提供名字空间字段中所包含的信息,并且提供与特殊标签的用途有关的信息。例如,在图3A的行302的条目中,名字空间字段232告诉该翻译者或开发者:这个标签被用于记帐模块中。
标签ID表格230中的类别字段234是一种特殊字段,它展示使用标签的组件。另外,在创建标签文本时,类别字段234的运用协助开发者按正确方式来书写标签。类别是标签的节点类型和属性的组合。节点类型是标签的特定属性。这些标签属性中的一些可以包括“标签”、“帮助”、“标题”等。这样,通过类别字段234,可以确保标签按适当的方法用于所需程序。另外,类别是存在于系统中的所有控件的映射。所以,可以基于所需标签的类型或类别来在现存数据库中搜索标签。在本发明中,为系统200所执行的每项规则或控制创建类别。在模块的开发期间,如果特定标签文本需要特定规则,那么,可以创建额外的类别。例如,节点字段234可以是条目,它告知:条目303处的标签用在模块的菜单栏上,以便将用户指引到该模块中的另一个点。每个类别被映射到系统200中的特定功能。
描述字段235是表格230中的条目,它向用户或开发者描述如何使用标签。例如,描述字段235可以是条目,它告知:条目303处的标签用于分类帐的情况中。该描述可以采用单词语(纯文本),或者,它可以依照预定的代码列表来编码。
复制于字段236指出:该条目的关联标签是否从标签系统中的另一个标签复制。如果该标签是从另一个标签复制的,那么,复制于字段236包括来自父或主标签220的ID。在一个实施例中,这个ID是父标签的GUID。但是,其它ID可以用于字段236中。如果标签不是另一个标签的复制版本,那么,复制于字段236是空白的或被设置为空。另外,如果在复制之后从主标签的文本更改了标签的文本或任何其它信息,那么,复制于字段236被设置为空,从而消除主标签220与这个特定的子标签之间的任何链接。但是,对条目的其它更改将会导致复制于字段236被复位。在一个替换实施例中,图3A的标签ID表格230包括指出什么标签ID包含被复制的标签的字段。ID表格230中的标签要么是主标签,要么是子标签。
图3B展示了填充特定标签的标签文本表格240的各个字段。标签文本表格240条目包括至少三个不同的字段:标签ID字段244、标签文本字段241和编辑日期242。在本发明的替换实施例中,可以将额外的字段添加到标签文本表格240中。这些字段包括指出书写该文本所采用的语言的字段243、或标识标签文本表格中的文本的每个版本的条目标识符的字段。
标签文本表格240的文本字段241包括该系统的所有可用语言的标签的文本的各个最新近的版本。但是,其它信息可以被存储在文本字段241,例如,语言专用图标、位图视频等。标签的标签文本表格240中的第一个条目351采用书写该标签所用的原始或主语言。这个文本被称作“主文本”。如果根据该最佳实践指导方针来开发标签,那么,将用英语-美国来书写该主文本。但是,其它语言可以被用作主语言,并且,不需要遵循该最佳实践指导方针。通常,主语言将对应于系统正在操作的当前语言。
当标签文本从主语言被翻译成另一种语言时,在标签文本表格中制作新的标签文本条目(例如,352和353)。这些条目包含采用其各自语言的原始标签文本的翻译版本。例如,如果标签的原始文本是“Do you want to save the changes youmade to”,那么,这个文本被存储在标签文本表格240的第一行351中。以后,当该文本被翻译成德语、丹麦语和法语时,这些翻译被输入主文本条目以下的条目中的标签文本表格中。这些添加的翻译由条目352、353和354来指出。
在标签文本表格240中提供编辑日期字段242,以便开发者知道:何时以与标签文本表格中的该特定条目相关联的语言最后一次更改标签的文本。另外,可以添加包含确认信息的其它字段,例如,“修改者”字段。这个日期有助于确保:如果提供文本的翻译,那么,它不取代该翻译的已经更新近的版本。当翻译被自动载入该统时,比较这些翻译日期;并且,如果条目中的版本比所提议的条目更新近,那么,这个所提议的条目不被输入到表格中。编辑日期字段242也允许开发者检验:这些翻译是否与主文本条目的最新近的版本保持同样新。在一个实施例中,主文本条目321编辑日期理想地是特定标签的标签文本表格240中的最老的日期。
在一些实施例中,标签文本表格240包括语言字段条目243。语言字段条目243向开发者指出标签文本表格中的特定条目的特定语言,即使开发者不说或不理解该语言,也是如此。语言字段条目243中的语言指示符可以是该语言的数字表示,或者,它可以被写为该语言的名称或任何其它种类的语言标识符。
如果数字表示用于标识语言,那么,该语言的参考号或条目可以说明性地符合已知标准,例如,ASCII语言代码或ISO 639。但是,其它代码可用于标识文本条目的语言。如果语言的名称被输入到字段243中,那么,可以根据已知标准(即采用英语的语言名称)来说明性地书写语言的名称。但是,可以使用其它格式。
标签文本表格240也包括条目字段244,它标识特定标签文本的标签ID 231。这个条目允许开发者知道当前的文本与哪个标签ID 231有关。标签文本表格240的更多实施例包括文本ID 245的条目。提供这个文本ID 245,以便个别地将每个文本标签标识为标签文本表格240中的其自己的条目。文本ID 245条目可以是GUID,或者,它可以是与标签文本表格的配置一致的任何其它标识方法。在一个替换实施例中,标签文本表格240和标签ID表格230可以被合并成一个表格或数据库。在这个实施例中,将会需要额外的字段集,以便管理这些标签,并确保当运行该模块时显示正确的标签语言文本。另外,将会添加索引,以管理这些标签的装载。
图4是展示了包含标签系统接口400的各个组件的框图。标签系统接口400是将开发者401链接到元数据存储409,并且允许开发者在为系统200开发新模块时操纵现有标签的接口。标签系统接口400包括标签对话402、标签对话逻辑组件403、扩展语言接口404和标签接口405。
开发者通过标签对话402与标签系统接口400交互。标签对话402是它允许开发者访问标签系统接口的各个特征的用户界面。在一个实施例中,标签对话402是允许该用户查看和管理特定标签的用途的窗口。标签对话402使用到元数据存储的接口来处理标签,并访问对所有可用语言的标签可用的命令全集。为了提供这些特征,标签对话接口402要求访问标签系统400中的每个标签的所有可用语言。
但是,标签对话402不包含确定标签是否可以用于特定情况的任何逻辑。所有控制被传到控制该标签接口或标签对话逻辑组件403的类。标签对话逻辑组件403被设计成用于标签对话402,但因为它包含标签对话402的所有逻辑,因此,可以在其它区域内再使用该标签对话逻辑的某些特征。另外,标签对话逻辑组件403确保每一标签是按与该标签的名字空间和类别的正确组合相一致的方法来使用的。这个逻辑防止在不同的区域内在没有首先创建新主标签的情况下因疏忽而运用标签。
扩展语言接口404为标签对话界面400提供对系统中可用的所有语言的访问。扩展语言接口404使用另一个类,以便使多种语言对标签对话逻辑组件403和标签对话402可用。扩展语言接口404只具有对于系统中一种以上的语言公用的方法(返回所有可用语言的列表,并且也返回当前语言的ID)。只与一种语言有关的方法直接位于标签类405上。通过标签类,可以连接到元数据中的标签。在每种可用语言中,有标签类的一个实例。但是,在某些情况下,可能没有特定类的实例。
语言接口组件404也控制对可用语言的访问。语言接口组件404包含标签的实例的映射。在语言接口组件404中,也有到当前标签的每个可用的额外语言类的接口。
图5是展示了当开发者在模块的一部分的开发期间创建模块的新标签时所执行的各个步骤的一个例子的流程图。例如,如果开发者想要制作代表模块中的“客户”的输入的标签,那么,该开发者必须判定标签将如何用于模块中。术语“客户”具有许多不同的含义。例如,客户可能意味着从你那里购买货物和服务的人,或者,它可以意味着你与“其”打交道的人。这个单词的运用将影响采用其它语言的文本。这在图5中的方框501处展示。
接下来,开发者打开标签对话程序。打开的标签对话说明性地类似于图6中所展示的标签对话600。但是,可以使用其它界面。被呈现的界面允许开发者输入他们想要为标签输入的特定文本。标签对话的打开在图5的方框502处展示。
一旦打开了标签对话,开发者就在行602处输入标签的所需文本。作为选择,开发者可以在行602处输入标签的所需文本的一部分。例如,开发者可以输入文本片段“customer(客户)”,或者可以输入“cust”。另外,开发者将数据指出新标签将如何用在行603和604处的数据输入界面。这个数据可以用于搜索标签系统中的现有标签,或者可以在创建新标签时使用。例如,如果该开发者正在为管理销售创建模块,并且想要使用项“客户”来为购买者生成标签,那么,开发者将会在行604处输入购买者的类别代码。这个代码可以通过下拉菜单来手动地输入,或者可以通过使用现有系统设置来自动输入。这个类别代码控制该功能所使用的过程的其余部分。通常,标签对话中的类别代码和名字空间条目符合标签系统的当前设置。数据的输入在图5的方框504处展示。这个数据作为正则表达式输入。另外,在替换实施例中,通过选中将搜索限制到所选择的类别的复选框,开发者可以控制搜索。
开发者通过选择按钮650来激活搜索功能。但是,可以使用其它技术来激活标签搜索功能。搜索引擎的激活在图5的方框505处展示。
然后,标签对话仔细搜索数据库,以找出数据库中与所输入的文本匹配的的条目。在搜索过程中,可以向该用户显示进展指示器。进展指示器由图6中的参考标号640示出。当搜索完成时,进展指示器消失,并且,对话将与采用所选择的语言的初始查询相匹配的所有标签的显示返回给开发者。这在方框506处展示。
在一个实施例中,界面600扩大,以显示如图6所示的所标识的匹配。在这个实施例中,所显示的匹配列表可以包括标签ID表格230中所包含的信息、以及来自标签文本表格240的某些信息。该结果视图显示了与可通过同表格230的关系而获得的额外信息相结合的、采用所选择的语言的文本。GUID按升序将搜索的结果呈现给开发者。在图6中的区域610内显示结果的例子。但是,可以使用其它排序技术,例如,通过文本匹配的升序。然后,开发者进行检验,以了解标签文本中的任一个是否与所需文本匹配。这在方框520处展示。如果找到与新标签的所需文本相匹配的文本,那么,开发者加亮或指出与所需标签文本匹配的特定标签。这在方框507处展示。如果需要的话,也可以在620处示出标签的翻译。
接下来,系统进行检验,以了解所选择的标签类别和名字空间是否与新标签的类别相同。这在方框508处展示。如果标签类别和名字空间在所选择的标签与新标签之间相同,那么,所选择的标签的信息用于新标签。这在图5的方框509处展示。
如果标签的名字空间和类别与新标签的所需用途不同,那么,必须复制该标签。这个被复制的信息也包括所选择的标签的所有翻译版本。当标签被复制到新标签时,在新标签的标签ID表格230中制作指出从那里复制它的标签的GUID的条目。这在方框510处展示。这样,当更改主标签文本时,可以容易地更新新标签的文本。通过执行典型的查找和替换协议,或通过任何其它的自动化方法,可以作出这个对变化的更新。
如果在搜索期间没有发现匹配,那么,开发者必须为新标签生成新的对象。新对象的生成在方框521处展示。在标签的生成期间,标签的特定特征被存储在标签ID表格230和标签文本表格240中。如果标签的文本不完全,那么,开发者在标签对话600中输入所需文本的剩余部分。基于标签系统的当前设置来输入名字空间和类别代码。开发者也必须为采用任何所需语言的标签文本生成翻译。此外,标签的当前操作语言的ID被存储为主语言。这些翻译的添加或生成、以及标签属性的输入在方框522处展示。
总之,信息被分成1::n的关系,而不是对每种语言具有单个资源文件。该关系的“1”一方保存标签标识符以及其它实用的概括标签信息。该关系的“n”一方保存特定语言上的标签文本。通过按这个方式来排列标签,可以在运行时访问所有语言上的标签。
在新标签的开发期间,可以通过使用系统中的现有标签或通过从无到有地创建新标签,来复制标签。当搜索标签时,可以输入表达式(例如,“<Ledger”给出以Ledger(分类帐)开始的所有可用标签。但是,取决于实现系统的地方,可以使用不同的句法。)。通过选择将要搜索的特定名字空间或类别,可以减少这些命中。也可以通过使用词语数据库来执行搜索。也可以通过使用词语数据库(web服务)来创建新标签。当进入词语数据库时,可以将当前搜索标准与描述其中将要使用标签的实际情况的额外标准结合起来。这样可确保使用正确的词语。当在词语数据库中找到标签时,将它复制到新标签。词语数据库具有或可以具有所有支持的语言的翻译。当要使用标签时,它必须存在于搜索结果中,从而匹配实际的名字空间和类别。如果是这种情况,那么,可以选择特定标签。如果不是这种情况,那么,通过用手书写标签文本,或通过从词语数据库的另一个名字空间/类别复制标签,来创建新标签。通过复制标签,可给出与当前的名字空间和类别有关的新标识符。复制所有文本和其它概括信息。
通过使用标签对话(直接从特定的标签属性调用),来完成标签的管理。通过该对话,可以维护标签,并选择用于特定属性的特定标签。通过代码使用标签系统可以通过给出这些需要的特征的标签接口发生。这样,可以更改存储标签的方法。存储可以是SQL元数据存储、资源文件或web服务。实际上,取决于对web的特定访问,它可以是所有类型的存储的组合。
标签对话确保在正确的情况中使用标签。通过将类别引入标签系统,可确保正确地使用标签。但该特征也具有另一个目的。当翻译标签时,可以通过名字空间信息和类别的组合来了解标签将要被用在哪里。这样,可以发现要使用的正确的词语。通过知道标签被用在哪里,可以将更多“最佳实践”检验添加到“最佳实践”构架中。标签对话允许生成适合已知的(或未知的)翻译工具的特定翻译文件。通过将日期信息导出到翻译文件,可以检验导入翻译的日期。这样,可保证正在进行的翻译过程对于系统中的各个最后的变化是最新的。利用被更新的交叉参考系统,可以了解特定标签被用在哪里。也可以了解对特定标签的更改。这个特征与翻译者有关给他们确定对特定标签的更改简单与否(例如,在行的末端处添加“.”)的可能性。
当搜索标签时,开发者难以识别可能在当前应用程序中有用的现存标签。开发者经常不知道保存在其它区域内存在的所需文本的数据库中有什么标签可用。另外,开发者想要创建包含用于该用途的正确信息的标签、以及对标签中的词语的适当翻译。
本发明的词语数据库通过提供额外的特征来扩展标签系统。这些额外的特征可以由翻译者或标准组织来控制。通过这些特征,可以将额外的搜索标准添加到标签对话中,以帮助找出对应于标签的实际所需用途的标签。当存在这些特征时,额外的结果将被返回给开发者,以协助为标签选择正确的词语。由于开发者倾向于用其自己的本国语言来思考,因此,当开发者的本国语言的一个单词可以被翻译成另一种语言的多个单词时,这些特征将有助于标准化标签中所使用的词语。
图7是实体关系图,根据本发明的一个实施例展示了包含用于标签系统中的词语数据库的各种集合之间的关系。标签系统在一个实施例中可以是以上图1-6中所讨论的标签系统,或者可以用于利用词语和标签的任何其它的系统或应用程序,例如,文字处理器、web浏览器等。该词语数据库类似于标签系统,但包括额外的信息。图7中的实体关系图类似于图2中的实体关系图。词语数据库系统700包括语言表格710、主关系720、词语ID表格730和词语文本表格740。在一个实施例中,这些集合被组织为被排列成表格的结构化查询语言(SQL)元数据存储。但是,可以使用用于集合的其它排列和其它数据库,例如,面向对象的数据库。
语言表格710是包括至少两个子字段的表格。另外,语言表格710类似于图2的标签系统中的语言表格210。语言表格710中的这两个子字段是语言ID字段711和语言名称字段712。语言ID字段711保存指出特定语言的代码,并可以由商业解决方案软件程序理解。语言名称字段712是保存语言的名称的文本字段。例如,如果这些可用语言之一是英语-美国,那么,语言ID字段711说明性地可以是“01”,或者,若使用ASCII标准的话,它可以是“en-us”。但是,其它ID类型可以用于语言ID字段711中,或者,任何其它方法与将语言表示为ID的语言表格分开。
语言表格710与词语文本表格740有1:n的关系。通过这个关系(1:n),可以让每种语言的标签文本条目对数据库700可用。
主文件720在一个实施例中是一种关系,它包括与标签700的主语言有关的信息。在另一个实施例中,主文件720采用该原始语言和格式来存储词语的原始版本。如果主文件720是表格,那么,数据库700中的每个词语具有主表格720中的关联的项目。通过其唯一标识符,在主表格720中标识每个主词语。主文件720与语言表格710之间的关系是1:1的关系,并且,词语ID表格730是在1:1的关系,因为主表格720中的条目只可以在每个标签的一种语言中存在。在替换实施例中,主文件720可以是一个或多个字段,它是指出主词语的唯一ID的词语表格730的一部分。另外,在一个实施例中,主语言关系可以成为被称作主语言Id的ID表格730上的字段。
词语文本表格740类似于标签文本表格240,并且包括包含由词语ID标识的每个词语的文本的条目。词语文本表格740包括包含对采用各种语言的每个词语ID的翻译的条目。词语ID表格730与词语文本表格740之间的关系、以及语言表格710与词语文本表格730之间的关系是1:n。这是因为在每个词语的词语ID表格中有一个条目,但词语的各个版本的文本可以在几种语言中存在。但是,在本发明的其它实施例中,词语ID与词语文本之间的关系可以是1:1(或者,如果文本不存在的话,可以是1:0),其中,主词语的每个翻译在词语ID表格730中具有其自己的唯一词语ID和条目。
根据本发明的一个实施例,词语ID表格730包括ID字段731、类别字段734、描述字段735、复制于字段736和状态字段737。词语ID表格730的例子在图7B中展示。
ID 731字段被用来标识数据库700中的特定词语。在一个实施例中,这个ID是全局球唯一标识符或GUID。每当生成新的项时,为它分配新的GUID。在一个实施例中,新的词语被定义为对于数据库700而言是新的词语,而不只是现存词语的翻译。但是,在其它实施例中,为现存词语的翻译生成ID字段731中的新条目。
词语ID表格730中的类别字段734是展示该词语被用于程序的哪个组件中的特定字段。另外,通过运用类别字段734,可协助开发者在创建标签文本时按正确方式使用该词语。类别对应于词语的节点类型和属性。节点类型是词语的特定属性。这样,通过类别字段734,可以确保对于所需程序按适当的方法使用词语。通过类别,可以基于所需的词语的类型或类别来搜索现存的词语数据库。
描述字段735是表格730中的条目,它向用户或开发者描述词语如何被用于特定情况。例如,描述字段735可以是告知词语用于医疗客户的分类帐中的条目。描述可以采用单词语,或者,它可以依照预定的代码列表来加以编码。不管如何找到词语,都将通过区域字段来获得使用区域。
复制于字段736指出是否从词语数据库中的另一个词语拷贝复制条目的关联词语。如果从另一个词语复制该词语,那么,复制于字段736包括父或主词语720的ID 731。在一个实施例中,这个ID是父项的GUID。但是,其它ID可以用于字段736中。如果词语不是另一个词语的复制版本,那么,复制于字段736是空白的或被设置为空。另外,如果在复制之后从主词语的文本更改项的文本或任何数据,那么,复制于字段736被设置为空,从而消除主词语720与这个特定子词语之间的任何链接。但是,对条目的其它更改将会导致复制于字段736被复位。在替换实施例中,词语ID表格730包括指出什么词语ID包含被复制的词语的字段。ID表格730中的词语要么是主词语,要么是子词语。当词语的每个翻译具有其自己唯一的ID时,只有采取原始形式的词语是主词语。所有其它版本是子词语。可以基于由特定ID表示的主文件来自动更新分配了复制于字段736的标签。
状态字段737是指出词语数据库中该词语的状态的字段。词语的状态对于使用词语数据库来确定数据库中所选择的词语的有用性和可信性的开发者而言是有用的。状态字段737可以指出是否依照标准关联或其它来源来校对词语及其关联的翻译。状态字段737也可以指出谁向词语数据库建议该词语。如果开发者只想要使用由特定组织生成或建议的词语,那么,这会有用。但是,涉及词语数据库中的词语的开发或涉及词语的可靠性的其它信息可以被存储在词语ID表格730的状态字段737中。
词语区域760是定义该词语数据库中的特定词语的用途或区域的区域。词语区域包括两个字段——名称字段761和区域字段762。名字关键字761协助开发者和翻译者了解该词语被用于哪些区域内。当创建新的词语时,名字关键字761中所包含的信息由开发者来提供,并且提供与特定词语的用途有关的信息。例如,名字关键字761可以告诉开发者该词语被用于分类帐中或生产中。区域字段762为开发者提供与文档或应用程序中使用该项的区域有关的信息。例如,区域字段可以告诉开发者特定词语用于生产环境或医疗程序中。在其它区域内,描述字段提供与词语的用途有关的其它信息。
词语文本表格740包括至少三个不同的字段:词语ID字段744、词语文本字段741和编辑日期742。图7C展示了词语文本表格740的例子。在本发明的替换实施例中,可以将附加的字段添加到词语文本表格740中,例如,语言专用图标、位图、声音、影片等。这些替换字段可以包括指出书写该文本所采用的语言的字段743、或标识词语文本表格中的文本的每个版本的条目标识符的字段。
词语ID字段744是标识特定词语文本的词语ID 731的字段。这个条目允许开发者和系统知道当前文本与哪个词语ID 731有关。当词语文本从主语言(或任何其它的语言)被翻译成另一种语言时,在词语文本表格中制作新的词语文本条目。这些条目包含采用其各自语言的原始词语文本的各个翻译版本。在词语文本表格740中提供编辑日期字段742,以便开发者知道何时以与词语表格中的该特定条目相关联的语言最后更改了词语的文本。这个日期有助于确保:如果提供文本的翻译,它不取代该翻译的已经更新近的版本。当通过作业或别的方式将翻译自动载入系统时,比较这些翻译日期;并且,如果条目中的版本比所提议的条目更新,那么,所提议的条目不被输入到表格中。编辑日期字段742也允许开发者检验这些翻译对于主文本条目的最新近的版本是否为最新。
图8是根据本发明的一个实施例展示了当访问词语数据库来找出标签的所需词语时由开发者执行的各个步骤的流程图。在本发明的一个实施例中,开发者具有对词语数据库的完全访问,并且可以从数据库中访问、建议、添加或删除词语。在其它实施例中,为能够创建词语的词语作者提供对词语数据库的访问。在这个实施例中,审阅由开发者建议为词语的标签,并由词语作者将它们作为新项添加到正确区域中。
对于词语数据库中的词语的搜索类似于以上图5中的标签系统200所执行的搜索。但是,本发明的这些额外的搜索参数允许尽管在文本与所需文本不匹配的情况下主题专用结果也会出现。开发者通常通过类似于(或等同于)以上图6中所展示的标签对话的对话,来访问词语数据库。图9展示了可以用于本发明的对话窗口的例子。但是,其它界面可以用来访问词语数据库700。开发者在方框800处打开对话900。
开发者通过将标签的所需术语或其一部分、以及标签的类别和区域输入对话900,来开始访问词语数据库。这在图8的方框801处展示。例如,对话900中的类别和区域的选择可通过运用下拉菜单或复选框来手动完成;或者通过使用系统的当前控件来设置类别和区域字段来自动完成。此刻,开发者也可以(例如)在医疗情况或生产情况中选择词语的特定用途。接下来,开发者通过选择按钮(例如,按钮950),来访问对话窗口上的搜索功能。搜索功能的激活在图8的方框802处展示。搜索功能通过词语数据库而进行,并且标识项数据库中与标签的所需文本相匹配的的条目。
搜索功能收集词语数据库中的所标识的条目作为结果。在对话900的部分940中,搜索的结果被呈现给开发者。然后,根据预定方法来对这些结果进行排序或分类。在一个实施例中,词语的排列是通过文本匹配进行的。但是,可以使用其它分类方法,例如,按用途的特定区域分类。结果对用户的呈现在方框803处展示。在替换实施例中,开发者可以将搜索结果限制到具有预定状态的词语,即由特定来源建议或生成的词语。
然后,开发者审阅这些结果,以确定是否在这些结果中发现所需的词语。这在图8的方框804处展示。如果结果包括与所需标签的确切词语和类别相匹配的词语,那么,开发者可以使用标签上的词语,而无须对该标签的词语进行任何调整。然后,在方框805处复制标签。如果正确的词语在这些结果中,但不在正确类别中,那么,开发者必须确定对于所需词语而言,哪个词语是最正确的匹配。然后,开发者可以查看单词词语条目的描述字段中所包含的信息。这个字段向开发者通知该词语的一般用途。信息的审阅在方框806处展示。
另外,当开发者正在审阅结果时,开发者可以查看项区域表格760中包含的与词语的特定用途有关的信息。当开发者正在审阅将要被复制的词语时,相同的词语会多次出现在这些结果中。当所需的项在搜索语言中具有多个含义时,经常会发生这种情况。例如,一个英语单词在西班牙语中可以具有多个的等效的单词。然后,开发者必须基于数据库中所提供的信息,来选择要使用哪个词语。词语区域表格760的区域字段762为开发者提供关于所选择的类别中的词语的特定用途的信息。例如,在英语中,单词“customer”可以根据词语的用法而具有不同的含义。在商店设置中,“customer”是从商店购买物品的人。但是,在医疗情况中,“customer”是病人。所以,通过词语区域的运用,基于该词语的预定用途,开发者可以选择正确的“customer”来使用,并因此获得与所需术语更紧密地匹配的、对该词语的翻译。词语的特定信息的审阅在方框807处展示。
如果基于词语的用途,词语与开发者意图匹配,那么,开发者可以选择这些词语中的一个,并通过将该词语复制到新标签来创建新标签。当复制词语时,在词语ID表格730中生成新的记录。另外,词语文本表格中的所有这些翻译被复制到这个新的记录。原始词语的唯一ID也被存储在复制于字段中。这协助开发者或其它人知道这个词语起源于另一个区域。当更新主词语时(例如,当开发者调用作业时),这也允许词语和关联的翻译被更新。词语的复制在图8的方框808处展示。
如果所需词语或词语的用途不位于词语数据库700的搜索中,那么,开发者在方框816处用最初扩展的所需文本创建新标签。开发者也可以向数据库建议该新词语。通常,开发者将向数据库建议本质上是类属的词语。通过完成该词语的所有要求(例如,提供与词语区域有关的类别信息、描述信息和关联的信息),开发者向词语数据库700建议该单词。这在图8的方框820处展示。
当开发者在对话900上选择建议(Suggest)按钮951时,将新词语发送到词语数据库。在词语数据库处接收到该词语之后,为所建议的词语在词语数据库中创建新条目。这时,将状态字段737设置成已建议。以后,在审阅了该词语之后,可以将该词语的状态该为已审阅或指示该词语已被词语数据库接受的其它指示。同样在这个时候,开发者将该词语的任何现存的翻译提供给词语数据库;或者,可由翻译者以后将翻译添加到词语数据库中。所有这些文本被存储在新词语的词语文本表格条目中。向词语数据库的词语建议在图8的方框820处展示。在建议过程中,如果当前提供的翻译对于词语的特定用途而言不准确,那么,开发者可以提供现存词语的已更新的翻译,从而更新数据库。
虽然已参照特定的实施例来描述本发明,但是,本技术领域的技术人员将会认识到,在不脱离本发明的精神和范围的前提下,可以在形式和细节方面进行更改。