以可选显示语言提供用户接口的方法、系统和计算机程序产品的制作方法

文档序号:6417404阅读:146来源:国知局
专利名称:以可选显示语言提供用户接口的方法、系统和计算机程序产品的制作方法
技术领域
本发明涉及下述共同转让的共同未决美国专利申请序列号为09/211809,名称为“用于获取语言翻译和把信息归类到一个文本串类的方法、系统和计算机程序产品”,1998年12月15日申请;序列号为09/21108,名称为“分类文本串的方法、系统和计算机程序产品”,1998年12月15日申请;序列号为09/211803,名称为“分类翻译和/或语音拼写信息到一个文本串类中的方法、系统和计算机程序产品”,1998年12月15日申请;序列号为09/211799,名称为“在一个图形用户接口中在一个多字段文本类中遍历一系列显示状态的方法、系统和计算机程序产品”,1998年12月15日申请;序列号为09/211802,名称为“控制多字段文本串对象的图形显示的方法、系统和计算机程序产品”,1998年12月15日申请;序列号为09/211813,名称为“显示多字段文本串对象中所有字段内容的方法、系统和计算机程序产品”,1998年12月15日申请;序列号为09/211801,名称为“用于在多字段文本串对象中通过消息传送进行动态语言切换的方法、系统和计算机程序产品”,1998年12月15日申请;序列号为09/211812,名称为“用于在文本串对象中自动字符翻译的方法、系统和计算机程序产品”,1998年12月15日申请。以上所引用的申请的内容结合在此用作参考。
本发明一般说来涉及改变文本串的用户接口显示,特别涉及改变多字段文本串对象的用户接口显示。再特别说,本发明涉及在用户接口显示内从一个多字段文本串对象中选择显示任何字段。
跨国公司常常经营横跨全球多个地点的信息系统(IS)网络。为最大限度使用这样的网络,在每一国家内的运作趋向于运用该国的本地语言。只要可能,用户应用程序中的抽象对象的名字采用本国语言,并以抽象对象表示与本国语言的组织,城市或人名匹配。在系统管理软件的场合,抽象对象常常表示全球企业的每一个本地机构。
当抽象对象名使用本地语言和本地语言的基础字符集时,这种全球网络的中央管理可能很困难甚或不可能。对于位于埃及的办事处,抽象对象以阿拉伯语命名更为自然;设在俄罗斯的办事处将使用西里尔字符集命名对象;而对设在日本的办事处,将使用日语命名对象。然而,当企业本部的IS人员试图检查这些对象时将产生问题。位于美国的跨国本部的IS人员不大可能会阿拉伯语或日语,也不可能识别西里尔字符。
例如,日语是一种词音节或表意文字语言,它没有表示简单声音的字母,相反具有非常大的字符集,其符号(表意文字)相应于概念或物体,而不是简单的声音。例如,在1981年通过的日语当用汉字表(日常用汉字)包括1945个符号。不熟悉汉字字符的用户很难识别使用日语命名的特定抽象对象,对于讲英语和日语的双方,甚至很难通过电话讨论这种抽象对象。
另外,仅看见表意字符也许不能提供正确的意义或发音的线索,因为在日语中,同一字符可以具有多种意义或者多种发音。例如,图7A示出的字符可以指“西方”,也可指“西班牙”;图7B所示符号可以读作“hayashi”或者“rin”(或“lin”);图7C所示字符可以读作“suga no”,“suga ya”,“kan no”或“kan ya”。这一状况部分基于日语的历史,日语的汉字采用的是汉语的汉字。这样,例如在图7B中示出的“rin”符号是音读,是当该字符输入到日本时基本模仿汉语发音,而“hayashi”是训读,是把具有同样意义的日语词指定给该字符。
因此,希望提供一种机制,用于有选择地控制在用户接口中使用文本串的哪一种显示语言。如果该机制允许用户改变用户接口的显示语言和编辑任何显示字段的内容的话,则更具优点。
因此本发明的一个目的是提供一种改变文本串的用户接口显示的方法、系统和计算机程序产品。
本发明的另一个目的是提供一种改变多字段文本串对象用户接口显示的方法、系统和计算机程序产品。
本发明的再一个目的是提供一种方法、系统和计算机程序产品,用于在一个用户接口显示内有选择地显示一个多字段文本串对象的任何字段。
前述目的可以实现,现在来说明。提供一种用户控件,用以有选择地显示和/或编辑多字段文本串对象中的任何字段的内容,所述多字段文本串对象具有单独的字段,每一个包含一个文本串的不同表示(例如,汉字符号,语音拼写该汉字符号的音节表字符,和语音拼写该汉字符号的拉丁字符)。这样,不同字段包含了单个文本串的标识,意义和发音信息。在用户控件和多字段文本串对象之间的控制器接口允许对该多字段文本串对象执行在该用户控件内的方法。对于该多字段文本串对象当前选择的显示字段的内容连同一个选择的控件被显示。可以驱动该选择控件以显示在该多字段文本串对象内的所有字段内容的一个有序表,和通过从显示的表中选择一个字段而改变当前显示字段。这样,不能根据一个文本串的表示识别、理解、或读出该文本串的用户可以切换其视图为一个用户熟悉的同一文本串的不同表示。也可以编辑当前选择的显示字段的内容。
本发明的上述以及其它目的、特征和优点在下面详细书写的说明书中十分明显。
在所附权利要求中叙述相信作为本发明特征的新颖特点。然而参考下面对示范实施例的详细说明,结合阅读附图,会更好地理解本发明自身,以及优选使用方式,其另外的目的和优点。


图1表示一个数据处理系统的图,其中可以实现本发明的一个优选实施例;图2是一个多字段文本串类的图,它通过按照本发明的优选实施例以另外可供选择的显示语言,用于提供用户接口;图3是表示一种机制的图,根据本发明的实施例,该机制提供对显示和编辑单个多字段文本串类对象或多字段文本串类对象离散集的控件;图4A-4B是按照本发明的实施例为显示多字段文本串类对象的处理控制的用户接口图;图5A-5B表示根据本发明的优选实施例的一个用户接口控件,用于选择或编辑多字段文本串对象的一个当前显示字段;图6是用户控件操作的一个高层流程图,表示根据本发明的优选实施例,有选择地显示或编辑多字段文本串内的任何字段;图7A-7C表示具有多重意义或发音的表意字符。
现在参考附图,特别参考图1,它表示其内可以实现本发明的优选实施例的一个数据处理系统的方框图。数据处理系统100可以例如是由纽约Armonk的IBM公司生产的Aptiva_型的个人计算机。数据处理系统100包括处理器102,其在例示实施例中连接在二级(L2)超高速缓冲存储器104上,后者依次连接到系统总线106。在例示实施例中,数据处理系统100包括连接到系统总线106的图形适配器118,为显示器120接收用户接口信息。
连接到系统总线106的还有系统存储器108和输入/输出(I/O)总线桥110。I/O总线桥110连接I/O总线112到系统总线106,从一条总线中继和/或变换数据事务处理到另一条总线。诸如非易失存储器114和键盘/指点设备116等外围设备连接到I/O总线112。非易失存储器可以是硬盘驱动器,指点设备可以包括常规的鼠标,轨迹球和其它类似的设备。
图1所示例示实施例仅为解释本发明的目的而提供,熟悉本技术领域的人会理解,无论是形式还是功能,都可以有许多变体。例如,数据处理系统100可能还包括一个密致盘只读存储器(CD-ROM)或数字视频盘(DVD)驱动器,声卡和音频扬声器,和许多其它可选部件。所有的这些变体相信都在本发明的精神和范围之内。数据处理系统100和下面的Java实施例仅为解释的目的提供,并不打算隐含结构上的限制。熟悉本技术领域的人会理解,所有这些相信都包含在本发明的精神和范围之内。
参考图2,图中表示一个多字段文本串类的图,它通过按照本发明的优选实施例,提供一个具有可选显示语言的用户接口。需要以多种人类语言显示数据的多国计算环境的一个基本问题在于,口述词汇通常包含多方面或多重属性的信息,诸如通过该词的意义,从上下文,和/或从音调变化。当缩减为在数据处理系统中为操作或显示的视觉或电子表示时,该词可能丢掉某些属性和许多关联的意义。对于数据处理系统最重要的是,一个词的视觉表示对于该词的正确翻译或发音或在特定排序顺序内恰当地放置一词给不出任何线索。可以使用国际串(“IString”)类202来解决这一问题。
IString类202优选为一个类似于Java串类的Java类。它通过包括类似方法,其行为像串类。串(String)类的大多数原来的行为应该保留,而增加一些另外的功能,仅在需要时使用。IString类202是数据类型,它获取口述词汇在缩减为视觉表示时通常丢失的某些意义。优选使用IString类202用于系统内的所有对象名和系统消息。
IString类202结构为每一个名字、消息、数据、或文本对象包括三个不同的串baseString 204,sortString 206,和altString 208。baseString 204是IString类202中在缺省时用于用户接口显示的串,可以包含任何文本,通常为在建立该Istring对象时由用户以本地语言输入的原始文本。SortString 206也可以是任何文本,其用于允许正确地分类非语音语言和仅根据baseString 204的二进制值难以分类的语言。altString 208可以是任何文本,但是常规上应该以在baseString 204中包含的数据发音的拉丁字符集表示填充。这样,对于IString类202包括对象名、系统消息和其它数据原始文本(baseString 204),分类关键字(sortString 206)和发音关键字(altString 208)。
当用Java实现时,IString类202对象的构造程序可以包括下述字段<pre listing-type="program-listing"><![CDATA[/**The base text String*/protected String baseString;/**The related text String for proper collation*/protected String sortString;/**The related alternate text String(pronunciation key)*/protected String altString;/**The source locale,as an ISO-3166 code;used forcollation*/protected String sourceLocale;/**The source language,as an ISO-639 code*/protected String sourceLanguage;/**The source variant defined for EBCIDIC and case mapping*/protected String sourceVariant;/**The target locale,as an ISO-3166 code*/protected String targetLocale;/**The target language,as an ISO-639 code*/protected String targetLanguage;/**The target variant defined for EBCIDIC and case mapping*/protected String targetVariant;]]></pre>由ISO-3166定义的两大写字母的ISO国家代码和由ISO-639定义的两小写字母的ISO语言代码的完整表很容易从因特网的各种信息源中获得。
表I表示当用一张表表示时,IString数据类型202内的数据看起来是怎样的
Table I为在内容独立于语言或地点的一个新的空IString类对象202的一个Java构造程序可以是<pre listing-type="program-listing"><![CDATA[/**************************************<P></P>**<dt><b>Description</b><dd>*<p>Allocate a new IString containing no characters in thedefault*locale.</p>**************************************public Istring(){ this.baseString=new String(); this.sortString=new String(); this.altString=new String(); init(); }]]></pre>然而,为允许IString类202数据类型的对象存储在一个对象数据库(ODB)内,以及允许通过公共对象请求代理结构(CORBA)应用程序操作IString数据,应该定义一个接口定义语言(IDL)类<pre listing-type="program-listing"><![CDATA[struct IString{string baseString; //base test Stringstring sortString; //related text string for collationstring altString; //related alternate textString //(pronunciation)string sourceLocale;//source locale as an 1SO-3166 codestring sourceLanguage; //source language as an ISO-639 //codestring sourceVariant; //source variant codestring targetLocale;//target locale as an ISO-3166 codestring targetLanguage; //target language as an ISO-639 //codestring targetVariant; //target variant code}]]></pre>baseString 204、sortString 206和altString 208的内容优选但并非一定为由在IString类202内的数据输入方法210输入的统一代码文本(Unicode text)。数据输入方法210,从而baseString 204、sortString 206和altString 208的内容可能至少部分依赖于由sourceLocale字段212、sourceLanguage字段214、targetLocale字段216和targetLanguage字段218定义的语言和地点参数。
因为数据输入方法210依赖于由基础主系统使用的地点和/或语言,因此一个新IString对象202的建立优选产生其内建立IString对象202的主系统的地点和语言属性,放在sourceLacale字段212和sourceLanguage字段214中。为从建立IString类对象的主系统确定的特定地点和语言分配一个新的空IString的构造程序可以是<pre listing-type="program-listing"><![CDATA[/***************************************<P></P>**<dt><b>Description</b><dd>*<p>Allocate a new IString containing no characters in the*specified locale.</p>**************************************public IString(Locale loc){ this.baseString=new String(); this.sortString=new String(); this.altString=new String(); this.sourceLocale=loc.getLocale(); this.sourceLanguage=loc.getLanguage(); init(); }]]></pre>输入数据到IString类202对象优选依赖于地点或语言。SourceLanguage和targetLanguage属性214和218控制数据如何由数据输入方法210输入到一个IString类对象202中。SourceLanguage属性214可以设定为其上建立IString类对象的主系统的语言属性。TargetLanguage属性218也可以设定为该语言,或可以另外设定为一种公共的、“通用”语言,诸如英语。数据输入方法210比较sourceLanguage和targetLanguage属性214和218,以决定在IString类对象202的baseString 204、sortString 206和altString 208中输入什么。
通过IString类202的数据输入方法210把字符串输入到baseString 204、sortString 206和altString 208字段,数据输入方法210可以有选择地使用用户直接输入的数据或者来自译音引擎220或输入方法编辑器(IME)224的说明。在targetLanguage属性218设定英语作为缺省值的场合,数据输入方法210根据由用户用以输入数据的语言(sourceLanguage属性214)使用的字符集决定baseString 204、sortString 206和altString 208字段的内容。
对于使用拉丁字符集的语言,用户输入由数据输入方法210放入IString类202的所有3个字段(baseString 204、sortString206和altString 208)。一个合适的构造程序可以是<pre listing-type="program-listing"><![CDATA[/**************************************<P></P>**<dt><b>Description</b><dd>*<p>Allocate a new IString which contains the same sequence of*characters as the string argument in the specified locale.</p>**************************************public IString(String str,Locale loc){ this.baseString=new String(str); this.sortString=new String(str); this.altString=new String(str); this.sourceLocale=loc.getLocale(); this.sourceLanguage=loc.getLanguage(); init(); }]]></pre>对于大多数地点和语言,所录入的串将输入到IString对象202的所有3个字段。如果targetLanguage属性218未设定为英语,则只要在sourceLanguage和targetLanguage属性214和218中确定的语言使用一种公共字符集(例如两者都使用拉丁字符,如西班牙语和南非荷兰语),数据输入方法224将把用户输入的文本输入到所有3个字段中。
表II表示在主语言和地点使用拉丁字符集的场合数据是如何输入到IString类202字段的
Table II如果希望的话,这些字段可以单个编辑,而该对象可以为分类的目的通过在sortString 206中插入一个较低排序值(例如,“AAA Hetherington”)而人为提升。
对于不使用拉丁字符集的语言,但是它使用的字符集可以声音映射到拉丁字符集,用户输入通过数据输入方法210输入到baseString 204和sortString 206,但是该输入的译音的语音表示被放入altString 208中。使用译音引擎220内的一个内部方法把通过的串声音映射到altString 208的一个语音、拉丁字符表示,以把输入的字符译音为为不熟悉原来语言字符集的人所能懂的其它字符。
为产生altString 208的内容,译音引擎220选择包含一个映射表的合适的Java资源文件222来产生放入altString 208内的可选文本。所使用的特定资源文件的选择基于源和目标语言的组合。为正在执行映射的语言的组合而命名Java资源文件222。在图2所示例子中,ru_en.class用于映射俄语(西里尔字符)为英语(拉丁字符)。资源文件222的结构是一张具有为外语字符和相应拉丁字符的关联条目的表。
一个IString对象(其中altString 208是从通过的串译音的)的合适的构造程序可以是<pre listing-type="program-listing"><![CDATA[/**************************************<P></P>**<dt><b>Description</b><dd>*<p>Allocate a new IString.The baseString and sortString are the*passed string,the altString is transliterated into the target*language.</p>**************************************public IString(String str){ this.baseString=new String(str); this.sortString=new String(str); if(isSameLanguage(() this.altString=new String(str); else this.altString=transmogrify(str, this.sourceLanguage, this.targetLanguage); }]]></pre>“变形”方法是上面叙述的译音引擎220内的内部方法。输入字符要被音译成的字符集从targetLanguage属性218确定,其在示例实施例中假定设定为英语。然而,如果给定一个合适的资源文件222的话,则字符可以在任何两种语言之间译音,为此,一种语言中的字符声音映射到另一种语言的一个或者多个字符。
表III表示数据如何由数据输入方法210输入到IString类202中,其中的语言使用一个非拉丁字符集,其映射到拉丁字符集,诸如俄语西里尔字符。<
Table III在所示例子中,用户输入的文本插入baseString 204和sortString206两者中,但是输入到altString 208中的文本由译音引擎220使用俄语西里尔字符对英语字符声音映射资源表进行选择。baseString 204的语音表示就是这样输入到altString 208中,作为对不熟悉西里尔(Cyrillic)字符集的用户的发音关键字。
对于不使用拉丁字符集或可以以声音映射到拉丁字符集的字符集的语言,数据输入方法210输入数据到baseString 204、sortString 206和altString 208字段,其从输入方法编辑器(IME)224导出。IME 224可以是一个定制的输入方法编辑器或者是集成在由华盛顿Redmond的微软公司开发的Windows NT操作系统的亚洲版本中的输入方法编辑器。如果使用Windows NT的输入方法编辑器,则必须从Windows NT的输入方法编辑器的内部数据存储器中抽取合适的数据。
表IV表示对于词音节语言诸如日语如何将数据由数据输入方法210输入IString类202中,词音节语言既不使用拉丁字符集,也不使用可以声音映射到拉丁字符集的字符集。
Table IV词音节语言没有字母表,但代之有具有相应于概念和对象而不是简单声音的符号(“表意文字”)的非常大的字符集。例如,1981年通过的日语当用汉字表(日常用汉字)包括1945个符号。正常的计算机键盘不可能容纳足够多的单独的键,以使该语言中每一个符号对应一个键,所以使用击键组合从两个语音音节表(平假名或片假名)中的一个,以及从汉字符号建立的辞典查找中选择字符,从而以语音实现输入。该处理在上述Windows NT输入方法编辑器中实现。
因此,对于词音节(logosyllabic)或表意文字语言,输入altString 208的数据是由用户键入的组成希望的表意文字的拉丁字符。输入到sortString 206中的数据是语音拼写希望的表意文字的音节字符,提供该表意文字的一种中间表示。输入到baseString 204中的数据是由用户选择的最后的表意文字。至于上述非拉丁字符的译音,如果targetLanguage属性设定为非英语的一种语言,且IME 224通过在非英语的语言中的语音拼写而支持表意文字的合成的话,则非拉丁字符可以输入到altString 208。例如,如果IME 224通过在俄语中的语音拼写允许日语汉字字符的合成的话,则一个IString对象202可以在baseString 204中包含日语汉字,在sortString 206中包含平假名,和在altString 208中包含西里尔字符。
从IME 224通过数据输入方法210为输入IString对象202而接收baseString 204、sortString 206和altString 208的一个合适的构造程序可以是<pre listing-type="program-listing"><![CDATA[/**************************************<P></P>**<dt><b>Description</b><dd>*<p>Allocate a new IString.The baseString,sortString and*altString are entered from the IME utilizing the defaultlanguage and*locale.</p>**************************************public IString(String base,String sort, String alt, Locale src, Locale tgt){ this.baseString=base; this.sortString=sort; this.altString=alt; this.sourceLocale=src.getLocale(); this.sourceLanguage=src.getLanguage(); this.targetLocale=tgt.getLocale(); this.targetLanguage=tgt.getLanguage(); init(); }]]></pre>BaseString 204、sortString 206和altString 208的内容从由IME 224导出的数据输入到各字段,而sourceLacale 212和sourceLanguage 214的内容从由数据正被输入到IString对象202的主系统指定的缺省地点和语言属性输入。targetLacale 216和targetLanguage 218的内容通常是为使用拉丁字符集诸如“en US”(英语-美国)的语言的一个地点/语言代码。
不管用以输入文本到一个Istring类对象202中的语言,由数据输入方法210自动输入到baseString 204、altString 206和sortString 208中每一个的数据可以使用其它方法进行取代或加以修改。IString对象202的字段优选可以被个别和独立地编辑,允许在sortString字段206内人为提升,如上所述,置换baseString字段204中错误选择的表意文字,或改正altString字段208中的语音拼写。
尽管上述方法假定源和目标语言取自主系统缺省值,但是为指定的源和目标语言,使用下面的构造程序,可以以另一种方式将数据输入baseString 204、sortString 206和altString 208,所述构造程序为<pre listing-type="program-listing"><![CDATA[/**************************************<P></P>**<dt><b>Description</b><dd>*<p>Allocate a new IString.The baseString,sortString and*altString are entered from the IME for specified target andsource*language and locale.</p>*************************************public IString(String base,String sort,String alt,String srcLanguage,String srcLocale,String tgtLanguage,String tgtLocale){ this.baseString=base; this.sortString=sort; this.altString=alt; this.sourceLocale=srcLocale; this.sourceLanguage=srcLanguage; this.targetLocale=tgtLocale; this.targetLanguage=tgtLanguage; init(); }]]></pre>在该构造程序中,可以指定用以选择输入到baseString 204、sortString 206和altString 208中的字符的源和目标语言和地点。可以使用上述后一构造程序以非主系统缺省语言建立IString对象202,或者在这样一个主系统中建立该IString对象,在该主系统中从另一系统接收IString对象202的数据以及建立一个本地实例。
应该注意,译音引擎220和消息传送方法226不一定在IString类202内实现,如图2中所示,而IME方法220不需单独实现。反之,译音引擎220和消息传送方法226可以在适当构造的单独的子类内实现,和/或在需要时由IString类202调用,而IME 224可以作为在IString类202内的方法实现。
译音引擎220和IME 224仅由数据输入方法210请求在某些地点和语言属性设置下为IString类202对象收集输入数据。另外,通过调用适当的构造程序,数据可以以程序方式输入进baseString 204、sortString 206和altString 208中。可以由程序在运行时调用以程序方式获得和设置IString 202内字段的方法包括<pre listing-type="program-listing"><![CDATA[/**************************************<P></P>**<dt><b>Description</b><dd>*<p>Get the IString baseString.</p>**@returns str String containing the base string**************************************public String getBaseString() { return this.baseString; }]]></pre>这一方法为IString对象202返回baseString 204的内容。类似的方法返回sortString 206和altString 208的内容<pre listing-type="program-listing"><![CDATA[/**************************************<P></P>**<dt><b>Description</b><dd>*<p>Get the IString sortString.</p>**@returns str String containing the sort string**************************************public String getSortString() { return this.sortString; } /************************************ * *<P></P> **<dt><b>Description</b><dd>*<p>Get the IString altString.</p>**@returns str String containing the alt string**************************************public String getAltString() { return thi s.altString; }]]></pre>该方法还包括设置baseString 204<pre listing-type="program-listing"><![CDATA[/**************************************<P></P>**<dt><b>Description</b><dd>*<p>Set the IString baseString.</p>**@param str String containing the base string**************************************public void setBaseString(String sBase) { this.baseString=sBase; }]]></pre>以及sortString 206和altString 208<pre listing-type="program-listing"><![CDATA[/**************************************<P></P>**<dt><b>Description</b><dd>*<p>Set the IString sortString.</p>**@param str String containing the sort string**************************************public void setSortString(String sSrt) { this.sortString=sSrt;}/**************************************<P></P>**<dt><b>Description</b><dd>*<p>Set the IString altString.</p>**@param str String containing the alt string**************************************public void setAltString(String sAlt) { this.altString=sAlt; }]]></pre>在为IString对象202获得和设置baseString 204、sortString 206和altString 208之外,可能需要程序来获得或设置一个IString对象202的显示地点或语言。因此,提供其它方法以允许一个程序获得和/或设置IString数据的该地点或语言属性<pre listing-type="program-listing"><![CDATA[/**************************************<P></P>**<dt><b>Description</b><dd>*<p>Get the locale of the IString data.</p>**@returns loc Locale containing the locale of the data**************************************public Locale getLocale() { Locale loc=newLocale(this.sourceLanguage,this.sourceLocale); return loc; }/**************************************<P></P>**<dt><b>Description</b><dd>*<p>Set the locale of the IString data.</p>**@param loc Locale of the data**************************************public void setLocale(Locale loc) { this.sourceLocale=loc.getLocale(); this.sourceLanguage=loc.getLanguage(); }/**************************************<P></P>**<dt><b>Description</b><dd>*<p>Get the display language of the IString data.</p>**@returns Display language of the data**************************************public String getDisplayLanguage() { Locale loc=newLocale(this.sourceLanguage,this.sourceLocale); return loc.getDisplayLanguage(); }/**************************************<P></P>**<dt><b>Description</b><dd>*<p>Get the display locale of the IString data.</p>**@returns Display locale of the data**************************************public String getDisplayLocale(){ if(this.sourceLanguage==null&amp;&amp;this.sourceLocale==null) return null; else{ Locale loc=newLocale(this.sourceLanguage,this.sourceLocale); return loc.getDisplayLocale(); }}]]></pre>虽然这些方法可用,但是IString类202优选显示一个“黑盒子”的行为,使得程序员/用户不需知道任何关于为IString类202实现的方法。IString类202只作为一种数据类型出现,该种数据类型封装关于baseString 204的额外信息,另外封装从一种字符集转变字符为另一种字符集的一些方法。对于sortString字段206或altString字段208在baseString 204之外或代替baseString 204要陈列在用户前的特殊场合,无论仅为编辑还是显示,可以提供一个单独的控件集。
在本发明中,IString类202被用来有效地传输人类语言数据,超越使用不同语言的系统。BaseString 204的内容提供以发起该IString对象202的系统的缺省语言的文本的本地表示。然而,对于参与与以不同人类语言运行的另一系统交换数据的每一系统,一个IString对象202的targetLacale属性216和targetLanguage属性218优选设定为一个共同值(例如,targetLocale=“US”,targetLanguage=“en”)。于是,altString208的内容将包含文本串的一个共同的、跨语言的表示。在接收一个对象的系统的缺省语言与baseString 204的内容的语言不同的系统中,IString类对象202可以自动切换到表示altString 208的内容,作为要被显示或处理的文本串。
参考图3,它表示按照本发明的一个优选实施例的机制的图,该机制提供对显示和编辑各个多字段文本类对象或多字段文本类对象的离散集的控制。为使所有Java抽象窗口工具包(Jave AbstractWindowing Toolkit-AWT)控件使用和显示IString信息,定义一个文本管理器类、IStringControl 302和IString控制器接口312。IString控制器接口312截取所有对IString对象304的显示请求,响应这种显示请求把当前显示字段的内容传递给一个控件。从而IString控制器接口312允许传统的控件显示Istring对象304的内容,而不需专门的显示控件。
IStringControl 302的构造程序取IString类304和Java基础类(Java Foundation Class-JFC)控件306、菜单项308或任何具有一个setText()方法的其它控件310作为其参数。IStringControl 302负责管理在它所管理的控件中哪一个IString字段(baseString、sortString,或altString)可见,以及负责实现输入或改变IString对象304中文本的方法。IStringControl 302介入所有对任何控件的setText()方法的调用,执行必需的处理,以使用一个控件输入文本到IString对象304的一个字段中。
对于在一个用户接口对话内的文本控件的每一实例,代替在JFC控件上调用setText()方法,与一个IStringControl 302一起建立一个IString控制器接口312和JFC控件以管理该JFC控件。这允许包括一些单个值、基于文本的控件(例如JLable或JTextField)的对话或框以显示Istring值。另外,代替取JFC控件作为其一个构造程序参数,Istring Control 302可以取一个java.awt.Component,并寻找使用内检的setText()方法,使IString支持可能普遍存在。
还使用配置和询问IStringControl 302的方法定义IString控制器(“IStringControlActions”)接口312。该方法包括<pre listing-type="program-listing"><![CDATA[Public void setText(IString text),Public IString getText(),Public void setVisibleField(int field),Public int getVisibleField(),SetPopupEnabled(boolean enabled),和IsPopupEnabled().]]></pre>GetText()和getVisibleField()方法在控制器接口312内不空,以允许控制器接口312传递当前显示字段(“visibleField”)的内容到一个传统控件,包括诸如JLabel控件306的JavaAWT控件,诸如菜单项308的JFC控件,或包含getText()方法的任何其它控件310。
在控制器接口312内的setText()和setVisibleField()方法置为空,因为一个特殊的IStringControl 302应该介入对在一个传统控件内的一个setText()方法的任何调用。上面所列方法内的“字段”参数要么是IStringControl.BASE、IStringControl.SORT、或者是IStringControl.ALT。上面所列的后两种方法确定弹出显示是否以IString字段内容表示。
另外,可以定义类似于ButtonGroup和在例子中被叫作IStringControlGroup的分组类(grouping class)314,它实现IStringControlOption方法。IStringControl 302的实例316可以加在分组类314上以产生一个上下文,诸如一个对话或一个完整的应用,其内可以立即配置所有控件。使用图3所示并在上面说明的结构,应用程序,甚至程序员只需执行非常少的额外工作,便可在一个应用中使用IString数据,尽管如果需要的话,可以使用用于特殊操作的丰富的方法集。
控制器接口312还提供一种机制,用于通过消息传送改变IString数据的显示。Istring数据对象304,控件302、306、308和310,以及组控制器314所有都可以作为具有控制器接口312的听众登记,听取包含语言和/或地点代码的消息,诸如语言改变消息,地点改变消息,或显示改变消息。语言和地点改变消息可以改变基础系统内语言和地点属性的设置,而显示改变消息可以简单地改变用以选择IString数据显示字段的语言和/或地点(单独地或联合地),而不改变基础系统语言和地点属性。
语言、地点、和显示改变消息或者由用户通过和控制器接口312的对话,或者通过发送一个合适消息的应用程序起动。当选择一个新的语言和/或地点时,所有允许的客户可以通过重新加载人类语言和重新格式化地点特定的数据选择对该消息反应。语言、地点和显示改变消息可以调用图2所示IString对象202内的一个或者多个消息传送方法224。
当接收到一个语言改变消息时,IString对象302逻辑操作它们的数据。一些IString对象302对于语言的改变可以没有行为改变,但是对于地点改变要有行为改变。例如,数字数据显示将依赖于所选择的地点(例如从美国到欧洲)改变它的表示格式,但是数字不改变。其它对象对于语言和地点两者都有行为改变,如在文本日期显示中既要改变表示格式,也要改变原文的月名和工作日名。
参考图4A-4B,它表示为按照本发明的优选实施例控制多字段文本类对象显示处理的用户接口图。图4A表示该用户接口,其中对象名包含在一个多字段文本串对象内,其第一字段的内容被显示,它在例示实施例中是包含语音拼写baseString(未示出)汉字符号的片假名字符的sortString字段。
可以使用图3所示以及上面叙述的控件来控制多字段文本串对象的显示。图4B表示显示同一对象的用户接口,其中该对象名的显示字段被改变为altString字段的内容。
现在参考图5A-5B,图中表示按照本发明的优选实施例选择或编辑多字段文本串对象的一个当前显示字段的用户接口控件。图5A-5B要连同图2和图3阅读。控件502优选是一个专门的IString控件302,能够请求一个IString对象内的任何字段的内容。
控件502包括一个显示区域504,用于显示一个IString对象202或304的当前显示字段的内容,还包括一个选择控件506,用于起动选择一个不同的字段用于显示。IString对象202或304的当前被选择的显示字段的内容可以由getVisibleField方法检索用于显示。IString 202或304内的visibleField参数确定baseString 204、sortString 206和altString 208中哪一个字段是当前被选择显示的。根据visibleField参数,getVisibleField方法对IString对象202或304有效地执行getText(field)处理,以检索当前所选择字段内的用于显示的串,其中“field”参数是ISstring.BASE,IString.SORT,和IString.ALT。
选择控件506可以是常规下指箭头,其由对选择控件506“点击”而驱动,操作指点设备,直到光标落在选择控件506上,然后驱动该点击设备或在该点击设备上的一个特别的按钮。当被驱动后,选择控件506产生一个下拉框508,它包含IString对象202或304的所有3个字段,其顺序为baseString 204,sortString206和altString 208。所有3个字段的内容可以通过对IString.BASE、IString.SORT、和IString.ALT执行多次getText()方法而检索。然后,这3个串可以作为下拉框508内的一个有序表按照现有技术显示。
和常规下拉菜单和下拉框一样,下拉框508内光标当前位于的条目由条510加亮。用户可以通过点击下拉框508内希望的条目选择一个不同的字段显示。然后控件502执行setVisibleText方法以改变VisibleText参数为IString.BASE、IString.SORT、或IString.ALT作为适合的参数,然后以新选择的当前显示字段的内容重新加载显示区域504。
用户通过在要编辑的字段显示时双击显示区域504可以编辑当前选择的显示字段的内容而不改变剩余字段的内容。可以包含任何字符的用户指定的文本串以setText()方法存储在当前显示的字段内。为编辑当前未显示的字段的内容,用户使用选择控件506选择要编辑的字段作为当前显示字段,然后在显示区域504内编辑该字段。
控件502可以在状态条内适当地实现,或者如图5B所示,可以与其它控件集成在一个对话框512内。如图所示,其它控件可以包括例如单选按钮514,其控制选择控件506是允许还是被禁止和显示区域504的内容是只读还是可编辑。以这种方式,单独或结合使用选择控件506和显示区域504的相应参数,控件502可以防止用户改变一个特定IString对象的当前显示字段,防止编辑一特定IString对象的任何字段的内容,或者防止编辑一特定IString对象内的一个特定字段的内容。
现在参考图6,它表示按照本发明的优选实施例为有选择地显示或编辑一个多字段文本串内任何字段的用户控件操作的高层流程图。所示处理是操作图5所示控件502的处理。该过程在步骤602开始,它表示驱动用户控件502来显示一个IString对象,然后前进到步骤604,它表示决定哪一个字段是当前显示字段并在该控件内显示该字段的内容。
接着过程前进到步骤606,它表示当用户驱动选择控件506时,判定是否启动改变显示字段。如果是,则过程前进到步骤608,它表示在下拉框508内以顺序显示该IString对象的所有字段,和如果选择一个新字段作为当前显示字段的话,改变显示窗口504的内容。一旦用户选择一个字段显示后,下拉框508即被清除。
如果未启动当前显示字段的改变,则过程前进到步骤610,它表示当用户双击显示窗口504时,判定是否启动编辑当前显示字段的内容。如果是,则过程前进到步骤612,它表示根据该IString的源和目标语言和被编辑的字段,使用一个简单的编辑程序、译音引擎、或IME,编辑当前显示字段的内容。
无论从步骤608还是612,处理接着前进到步骤614,它表示判定一个具有控件502的IString对象的显示是否结束。如果没有,则处理返回到步骤606,等待用户进一步启动改变或编辑一个显示字段。然而,如果结束,该过程前进到步骤616,它表示该过程处于空闲状态,直到使用控件502启动一个IString对象的另一次显示。
本发明的用户控件允许用户通过在一个IString对象的不同字段之间切换视图来观看文本串的不同表示而获得该IString类的好处。不能根据存储在当前显示字段内的表示识别、理解和发音某文本串的用户可以转变为另一种表示,诸如该文本串的语音拼写。这允许以一种语言输入的文本串被不熟悉该种语言(该文本串以该语言输入)的用户所识别、理解和读出。
重要的是要注意,虽然本发明是以一个完全功能的数据处理系统和/或网络上下文叙述的,但是熟悉本技术领域的人理解,本发明的机制能够以计算机可用指令介质形式以各种形式分发,以及不管用于实际执行该种分发的信号承载介质的特定类型,本发明可同样适用。计算机可用介质的例子包括非易失、硬编码类型介质,诸如只读存储器(ROM)或可擦除电可编程只读存储器(EEPROM),可记录型介质,诸如软盘,硬盘驱动器和CD-ROM,以及传输型介质,诸如数字和模拟通信链路。
尽管本发明特别是参考优选实施例图示和说明的,但是熟悉本技术领域的人将理解,可以对其进行形式和细节的各种改变而不离开本发明的精神和范围。
权利要求
1.一种改变多字段文本串显示的方法,包括在用户控件和具有多个单独字段的一个多字段文本串对象之间提供接口,所述多个单独字段的每一个字段包含一个文本串的一个不同表示;在用户控件内显示所述多字段文本串对象的一个当前显示字段的内容;提供一个选择控件,用于有选择地改变该多字段文本串对象的当前显示字段;响应选择控件的用户驱动,显示所述多字段文本串对象内所有字段内容作为用户选择表。
2.如权利要求1的方法,其中,在用户控件和具有每一个字段包含一个文本串的一个不同表示的多个单独字段的一个多字段文本串对象之间提供接口的步骤进一步包括存储包含第一字符集的字符的一个第一字符串,所述第一字符集由第一人类语言使用来表示所述多字段文本串对象的一个第一字段内使用该第一人类语言的文本串;存储包含第二字符集的字符的一个第二字符串,所述第二字符集由第二人类语言使用来表示所述多字段文本串对象的一个第二字段内使用该第二人类语言的文本串。
3.如权利要求1的方法,其中,在用户控件中显示多字段文本串对象的一个当前显示字段的内容的步骤进一步包括标识该多字段文本串对象的哪一个字段是当前显示字段;从标识的字段中检索一个字符串;在所述用户控件内的一个显示区域显示检索到的字符串。
4.如权利要求1的方法,进一步包括响应用户从表中选择多字段文本串对象的一个字段作为一个新的当前显示字段,改变该多字段文本串对象内的当前显示字段为新的当前显示字段。
5.如权利要求4的方法,进一步包括从该新的当前显示字段中检索一个字符串;在用户控件的一个显示区域显示检索到的字符串。
6.如权利要求1的方法,进一步包括在用户控件内的一个显示区域显示当前显示字段的一个字符串;在该用户控件内提供编辑控件用于有选择地编辑当前显示字段的内容;响应该选择控件的用户驱动,接收一个新字符串以便输入到当前显示字段;在所述多字段文本串对象内的当前显示字段内存储该新字符串。
7.如权利要求1的方法,其中,显示多字段文本串对象内的所有字段内容作为用户选择表的步骤进一步包括显示多字段文本串对象内包含由第一人类语言使用的字符的一个第一字段的第一字符串,所述文本串以该第一人类语言输入;显示包含声音映射到所述第一字符串内字符的那些字符的所述多字段文本串对象的一个第二字段的一个第二字符串。
8.如权利要求1的方法,其中,显示多字段文本串对象内的所有字段内容作为用户选择表的步骤进一步包括显示多字段文本串对象内包含由第一人类语言使用的字符的一个第一字段的一个第一字符串,所述文本串以该第一人类语言输入;显示包含由第一人类语言语音拼写所述文本串使用的那些字符的所述多字段文本串对象的一个第二字段的一个第二字符串;显示包含由第二人类语言语音拼写所述文本串使用的那些字符的所述多字段文本串对象的一个第三字段的一个第三字符串。
9.改变多字段文本串显示的系统,包括在用户控件和具有多个单独字段的一个多字段文本串对象之间提供接口的设备,所述多个单独字段的每一个字段包含一个文本串的一个不同表示;在用户控件内显示所述多字段文本串对象的一个当前显示字段内容的设备;提供选择控件的设备,用于有选择地改变该多字段文本串对象的当前显示字段;响应选择控件的用户驱动、显示所述多字段文本串对象内所有字段的内容作为用户选择表的设备。
10.如权利要求9的系统,其中,在用户控件和具有每一个字段包含一个文本串的一个不同表示的多个单独字段的一个多字段文本串对象之间提供接口的设备进一步包括存储包含第一字符集的字符的一个第一字符串的设备,所述第一字符集由第一人类语言使用来表示所述多字段文本串对象的一个第一字段内使用该第一人类语言的文本串;存储包含第二字符集的字符的一个第二字符串的设备,所述第二字符集由第二人类语言使用来表示所述多字段文本串对象的一个第二字段内使用该第二人类语言的文本串。
11.如权利要求9的系统,其中,在用户控件中显示多字段文本串对象的一个当前显示字段的内容的设备进一步包括标识该多字段文本串对象的哪一个字段是当前显示字段的设备;从标识的字段中检索一个字符串的设备;在所述用户控件内的一个显示区域显示检索到的字符串的设备。
12.如权利要求9的系统,进一步包括响应用户从该表中选择多字段文本串对象的一个字段作为一个新的当前显示字段、改变该多字段文本串对象内的当前显示字段为新当前显示字段的设备。
13.如权利要求12的系统,进一步包括从新的当前显示字段中检索一个字符串的设备;在用户控件的一个显示区域显示检索到的字符串的设备。
14.如权利要求9的系统,进一步包括在用户控件内的一个显示区域显示当前显示字段的一个字符串的设备;在该用户控件内提供编辑控件用于有选择地编辑当前显示字段的内容的设备;响应该选择控件的用户驱动,接收一个新字符串以便输入到当前显示字段的设备;在所述多字段文本串对象内的当前显示字段内存储该新字符串的设备。
15.如权利要求9的系统,其中,显示多字段文本串对象内的所有字段内容作为用户选择表的设备进一步包括显示多字段文本串对象内包含由第一人类语言使用的字符的一个第一字段的第一字符串的设备,所述文本串以该第一人类语言输入;显示包含声音映射到所述第一字符串内字符的那些字符的所述多字段文本串对象的一个第二字段的一个第二字符串的设备。
16.如权利要求9的系统,其中,显示多字段文本串对象内的所有字段内容作为用户选择表的设备进一步包括显示多字段文本串对象内包含由第一人类语言使用的字符的一个第一字段的一个第一字符串的设备,所述文本串以该第一人类语言输入;显示包含由第一人类语言语音拼写所述文本串使用的那些字符的所述多字段文本串对象的一个第二字段的一个第二字符串的设备;显示包含由第二人类语言语音拼写所述文本串使用的那些字符的所述多字段文本串对象的一个第三字段的一个第三字符串的设备。
17.在一种计算机可用介质内为改变一个多字段文本串显示的计算机程序产品,包括在用户控件和具有多个单独字段的一个多字段文本串对象之间提供接口的指令,所述多个单独字段的每一个字段包含一个文本串的一个不同表示;在用户控件内显示所述多字段文本串对象的一个当前显示字段内容的指令;提供选择控件的指令,用于有选择地改变该多字段文本串对象的当前显示字段的指令;响应选择控件的用户驱动、显示所述多字段文本串内所有字段内容作为用户选择表的指令。
18.如权利要求17的计算机程序产品,其中,在用户控件和具有每一个字段包含一个文本串的一个不同表示的多个单独字段的一个多字段文本串对象之间提供接口的指令进一步包括存储包含第一字符集的字符的一个第一字符串的指令,所述第一字符集由第一人类语言使用来表示所述多字段文本串对象的一个第一字段内使用该第一人类语言的文本串;存储包含第二字符集的字符的一个第二字符串的指令,所述第二字符集由第二人类语言使用来表示所述多字段文本串对象的一个第二字段内使用该第二人类语言的文本串。
19.如权利要求17的计算机程序产品,其中,在用户控件中显示多字段文本串对象的一个当前显示字段的内容的指令进一步包括标识该多字段文本串对象的哪一个字段是当前显示字段的指令;从标识的字段中检索一个字符串的指令;在所述用户控件内的一个显示区域显示检索到的字符串的指令。
20.如权利要求17的计算机程序产品,进一步包括响应用户从表中选择多字段文本串对象的一个字段作为一个新的当前显示字段、改变该多字段文本串对象内的当前显示字段为新的当前显示字段的指令。
21.如权利要求20的计算机程序产品,进一步包括从新的当前显示字段中检索一个字符串的指令;在用户控件的一个显示区域显示检索到的字符串的指令。
22.如权利要求17的计算机程序产品,进一步包括在用户控件内的一个显示区域显示当前显示字段的一个字符串的指令;在该用户控件内提供编辑控件用于有选择地编辑当前显示字段内容的指令;响应该选择控件的用户驱动、接收一个新字符串以便输入到当前显示字段的指令;在所述多字段文本串对象内的当前显示字段内存储该新字符串的指令。
23.如权利要求17的计算机程序产品,其中,显示多字段文本串对象内的所有字段内容作为用户选择表的指令进一步包括显示多字段文本串对象内包含由第一人类语言使用的字符的一个第一字段的第一字符串的指令,所述文本串以该第一人类语言输入;显示包含声音映射到所述第一字符串内字符的那些字符的所述多字段文本串对象的一个第二字段的一个第二字符串的指令。
24.如权利要求17的计算机程序产品,其中,显示多字段文本串对象内的所有字段内容作为用户选择表的指令进一步包括显示多字段文本串对象内包含由第一人类语言使用的字符的一个第一字段的一个第一字符串的指令,所述文本串以该第一人类语言输入;显示包含由第一人类语言语音拼写所述文本串使用的那些字符的所述多字段文本串对象的一个第二字段的一个第二字符串的指令;显示包含由第二人类语言语音拼写所述文本串使用的那些字符的所述多字段文本串对象的一个第三字段的一个第三字符串的指令。
全文摘要
提供一种用户控件,用以有选择地显示和/或编辑多字段文本串对象内的任何字段的内容,该多字段文本串对象具有多个单独的字段,每一字段包括一个文本串的不同表示。这样各字段包含了单一文本串的标识、意义、和发音信息。在用户控件和多字段文本串对象之间的用户接口允许对该多字段文本串对象执行用户控件内的方法。多字段文本串对象当前选择的显示字段的内容连同一个选择控件一起显示。可以驱动该选择控件以显示多字段文本串内所有字段内容的一个有序表,和通过选择该显示的表的一个字段改变当前显示字段。
文档编号G06F9/44GK1259706SQ99124769
公开日2000年7月12日 申请日期1999年12月9日 优先权日1998年12月15日
发明者D·J·赫瑟林顿, D·B·库弥尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1