WO2000029964A1 - Software language translation system and method - Google Patents

Software language translation system and method Download PDF

Info

Publication number
WO2000029964A1
WO2000029964A1 PCT/IL1999/000612 IL9900612W WO0029964A1 WO 2000029964 A1 WO2000029964 A1 WO 2000029964A1 IL 9900612 W IL9900612 W IL 9900612W WO 0029964 A1 WO0029964 A1 WO 0029964A1
Authority
WO
WIPO (PCT)
Prior art keywords
application
display item
translation
translating
modifying
Prior art date
Application number
PCT/IL1999/000612
Other languages
French (fr)
Inventor
Shlomo Aran
Original Assignee
Lingocom, Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from IL12705398A external-priority patent/IL127053A0/en
Application filed by Lingocom, Ltd. filed Critical Lingocom, Ltd.
Priority to AU11755/00A priority Critical patent/AU1175500A/en
Publication of WO2000029964A1 publication Critical patent/WO2000029964A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/237Lexical tools
    • G06F40/242Dictionaries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • G06F40/55Rule-based translation

Definitions

  • the present invention relates generally to methods and apparatus for translating software, and in particular to methods for providing a translation while allowing different modification of different user interface elements.
  • a software user interface which typically includes such display items as dialogue boxes, commands, menus and messages, is generally presented in one language. When a user does not speak that language, translation may be required. In a windows 95-like system, most display items are formed of windows, visible or invisible, which can be instructed to display text, can be moved and can capture user input.
  • windows are distinct from “application windows” which are usually large conglomerates of the basic windows, arranged to have a border, controls display areas and other attributes of objects having the common name “window”.
  • application windows usually large conglomerates of the basic windows, arranged to have a border, controls display areas and other attributes of objects having the common name “window”.
  • target application refers to the software whose interface is to be translated.
  • APLT Application Program Language Translator
  • APLT intercepts calls to operating-system messages, selects a replacement language and uses specific tables to replace the presentation language with the replacement language while retaining the original presentation meaning.
  • APLT uses a Window-procedure hook-filter function.
  • DLL Dynamic Link Library
  • the translation process may comprise two steps: a "learn” step and a “execution” step.
  • the “learn” step is generally performed by a learned user, a person versed with the presentation language of the target application and with the language to which translation is desired.
  • an Application Specific Translation Table (ASTT) is constructed.
  • the target application has an original string library where each STRING N is identified by a screen name and x and y coordinates, the ASTT provides a new string library NEW-STRING N, of the same screen name and x and y coordinates. In some cases, text fonts are also changed.
  • APLT provides a preliminary translation based on a master dictionary, and the learned user may modify the translation. When desired, the screen before and after translation can be viewed for the purpose of comparison.
  • APLT has another option that is based on template recognition.
  • an Application Specific Template Group (ASTG) is created, in which specific templates in the presentation language are matched with corresponding templates in a replacement language.
  • APLT can be applied to the specific target application for which the "learn” step was conducted, for the "execution” step.
  • a translation is performed for a general user who is not versed with the presentation language of the target application.
  • APLT is again executed in parallel with the target application.
  • the original target-application messages are again hooked as before and routed through a DLL as before.
  • Either ASTT or ASTG are used to provide a translation.
  • An object of some preferred embodiments of the invention is to provide a translation program that, when executed with a target application, will translate communication between the target application and a user to a language that the user desires.
  • An object of some preferred embodiments of the invention is to address technical problems that arise with translation. These problems may include the need to change writing direction (from “left-to-right” to “right-to-left” or to “up-down”), the need to change window attributes, such as size or shape, and/or the need to provide reverse translation where the target application reads translated text off the screen.
  • One aspect of some preferred embodiments of the invention is the use of the "function interception" method described in "Windows 95 System Programming Secrets," By Matt Pietrick, IDG Books, Chapter 10: Writing a Win32 API Spy, pages 685-753, for intercepting target-application messages before they are passed to the screen for display.
  • interception is based on changing function pointers (addresses).
  • the translation program will divert the target application to a new address where a function NEWX is found that displays a translated character string at a specified location using the translated language fonts, rather than the original text string.
  • the translated string is a character, word or sentence.
  • a suitable building block for translation is a phrase, which may be formed of any number of words, sentences or paragraphs.
  • a phrase may contain a dynamic portion, for example a file name, which is treated separately.
  • An aspect of some preferred embodiments of the invention relates to treating a multiplicity of display items in a same way, while treating certain exception display items, or groups of display items in a different manner.
  • a certain customization behavior may be defined for a plurality of windows (possibly for the entire application) and exceptions defined on this behavior. These exceptions may also be defined for groups of windows.
  • the definitions are preferably stored as an object described herein as a custom dictionary, defining differences from a standard translation (master dictionary), which dictionary includes a section for exceptions that define special behavior for some parts of the user interface. In some implementations of the invention, there may be no master dictionary.
  • the customized behavior is not limited to translation behavior, rather, alternatively or additionally, the customized behavior includes window size, font, whether to translate or not and/or other specialized treatment of display items.
  • the use of display customization will not be for language translation, per se, but for other uses, for example matching of a display for a target audiences with vision problems.
  • an audio, other multimedia or a Braille display may be provided as a result of the translation.
  • An aspect of some preferred embodiments of the invention relates to a method for designating display items which are to be affected by exceptions and/or custom translation.
  • the method allows selectively designating a group of windows or a single window.
  • the designation comprises a plurality of fields. By selecting various values for the fields, it is possible to selectively designate groups of windows or even single windows. The designation can thus be considered a query, where each field value places a limitation on the matching windows and the set of matching windows can be considered a query response.
  • An aspect of some preferred embodiments of the invention is providing flexibility in translation behavior by changing only certain function pointers. Display behavior of those functions will not be modified.
  • a flexibility is provided not to change function pointers associated with certain DLL's.
  • a flexibility is provided not to translate text presented by functions associated with certain DLL's, even if their function pointers have been changed.
  • the function calls in the body of the software may be (selectively) changed, possibly requiring the addition of function pointers to a function-pointer table of the software.
  • the code of the operating system itself may be modified, to call the modified display functions from the operating system display functions.
  • An aspect of some preferred embodiments of the invention relates to a method of uniquely identifying window objects for reproducible customization over several executions of a program.
  • a window cannot be identified uniquely by its name, other relevant information such as the calling window (e.g., genealogy), window position displayed text and/or a resource file source are used to uniquely identify the window.
  • other relevant information such as the calling window (e.g., genealogy), window position displayed text and/or a resource file source are used to uniquely identify the window.
  • a number of the above information items are utilized until a unique identification is created. Possibly, during a translation process, it may be required to correct a previous "unique" identification, when a later window turns out to have a similar identification.
  • An aspect of some preferred embodiments of the invention is the execution of a translation program and a target application on different computers.
  • the different computers are connected using a LAN, an Intranet or an Internet.
  • the target application uses a "remote procedure call" protocol to access the translation program.
  • the translation program is split between a local computer (of the target application) and a remote computer.
  • the translation program and the target application program are executed on a same computer.
  • the translation program uses one or more dictionaries and/or data files to perform the translation.
  • one or more of the dictionaries and/or data files is located on one or more remote computers.
  • An aspect of some preferred embodiments of the invention relates to data arriving from a remote location and being translated on a local computer.
  • the data comprises
  • the target application preferably comprises a WWW browser.
  • the data comprises terminal display data for a terminal emulation program, which terminal emulation program is the target application.
  • a method of customizing an interface of a software application comprising: intercepting a request from the application to an operating system under which the application is executing, which request is associated with a display item; matching at least one parameter of the request to at least one model; modifying an execution of said request in a first non-trivial way responsive to a success of said match, such that the presentation of the display item is modified; and otherwise modifying the execution of said request in a second, default and non-trivial way responsive to a failure of said match, such that the presentation of the display item is modified.
  • said at least one model is designed to match only a single display item of said application.
  • said at least one model is designed to match a plurality of display items of said application.
  • said at least one model is designed to match a specific plurality of display items of said application.
  • said model comprises a designation portion for matching to a display item identification.
  • said designation portion comprises a plurality of fields, each of which defines a limitation on the range of display items which match the model.
  • at least one of said fields may comprise a wild card.
  • said fields define orthogonal limitations.
  • said fields comprise at least a field representing the display item type and a field representing the display item content.
  • said designation can selectively match a single or a plurality of display items.
  • said model comprises a pattern.
  • said model is embodied by a function that evaluates the match.
  • said at least one parameter comprises an identification of the display item with which said request is associated.
  • said at least one parameter comprises an environmental variable.
  • said display item comprises an input object.
  • said input object comprises a text input box.
  • said input object comprises a list control.
  • said display item comprises an output object.
  • said output object comprises a text box.
  • said identification comprises at least part of a text sent to said display item when the display item is created.
  • said identification comprises a name of a resource file for generating the display item.
  • said identification comprises a display position of the display item.
  • said identification comprises at least part of a genealogy of said display item.
  • said model is static during an execution of said application. Alternatively, matching to said model changes during an execution of said application.
  • modifying an execution comprises changing a dimension of said display item.
  • modifying an execution comprises translating a text content of said display item into a different language.
  • said translating comprises translating using an application specific dictionary having a vocabulary limited to substantially match said application.
  • said translating comprises translating using a master dictionary having a vocabulary significantly broader than required by said application.
  • modifying an execution comprises changing a font of a text content of said display item.
  • modifying an execution comprises changing a text attribute of a text content of said display item.
  • modifying an execution comprises changing a font of a text content of said display item.
  • modifying an execution comprises changing a bitmap content of said display item.
  • modifying an execution comprises changing a display location of said display item.
  • modifying an execution comprises adding a tool-tip to said display item.
  • said matching comprises matching against at least two models, where one model matches a subset of the display items matched by the other model.
  • said modifying said execution comprises executing a remote procedure call over a computer network.
  • said modifying said execution comprises retrieving information over a computer network.
  • said application comprises a local application having a programmed user interface, which programmed interface is modified.
  • said application comprises a local application which displays data, which data is modified by said modifying.
  • said application displays data from a remote source and wherein presentation of said remote data is modified by said modifying.
  • said application comprises a terminal emulator.
  • said application comprises a WWW browser.
  • said modified data comprises a user interface element.
  • intercepting comprises replacing function pointers in said application.
  • intercepting comprises hooking using an operating system service.
  • modifying comprises translating a phrase displayed by said display item.
  • translating a phrase comprises: matching said phrase against one or more patterns, at least one of said patterns including a wild card; replacing portions of said phrase which match said pattern by a previously prepared translations of said portions; and translating portions of said phrase which match said wild card.
  • a method of translating comprising: translating a display item to show a translated value rather than an original value; and providing said original value to an application which requests a copy of the displayed item, responsive to such a request.
  • presenting said original value comprises intercepting a request from an operating system for said value.
  • a method of translating a phrase in real-time by a computer comprising: matching said phrase against one or more patterns, at least one of said patterns including a wild card; replacing portions of said phrase which match said pattern by a previously prepared translations of said portions; and translating portions of said phrase which match said wild card separately from said replacing.
  • said translating comprises translating using a dictionary.
  • a method of translating an application comprising: providing an application having at least one function pointer that points to a function for presenting information in a display item; and replacing said function pointer with a new function pointer, to a function that presents a translation of said information.
  • replacing said function pointer comprises replacing said pointer in a function table of said application.
  • replacing said function pointer comprises replacing said pointer in a jump command of said application.
  • replacing said function pointer comprises replacing said pointer in a DLL associated with said application.
  • FIG. 1 A schematically illustrates a process of customizing a translation program for a particular target application, prior to its use, in accordance with a preferred embodiment of the invention
  • Fig. IB schematically illustrates a process of translating a particular target application, when the application is used, in accordance with a preferred embodiment of the invention.
  • Fig. 2 schematically illustrates the manner of construction of a custom dictionary in accordance with a preferred embodiment of the invention.
  • a general translating mechanism may be customized to match a particular application program.
  • a real-time translator modifies the display behavior and/or input behavior of the translated application to conform to the translation defined by the customization process.
  • these processes are enhanced by the provision of one or more custom dictionaries which modify the behavior of the general translation mechanism.
  • these custom dictionary contain a mechanism for defining exceptions to the behavior define din the custom dictionaries.
  • a particular feature of some preferred embodiments of the invention is that the exceptions and/or custom dictionaries can refer to large numbers of windows in a shorthand manner, thereby possibly facilitating uniformity and ease of translation.
  • Figs. 1A and IB describe exemplary methods of doing so.
  • a method of customization 12 is used to modify a behavior of a translation program 10, when it is used as part of a process of translation 14 for an application 40.
  • target applications 40 include, word processors, data manipulation programs, databases, spreadsheets, file managers, browsers, computer games, e-mail programs and/or operating system enhancements, for example user provided DLLs and/or device configuration programs.
  • a human customizer (not shown), preferably a person versed with the original presentation language of target application 40 and with the language to which translation is desired, prepares one or more custom dictionary 30 specifically for target application 40.
  • translation program 10 and target application 40 are executed in parallel on an operating system 8 such as Windows 95 or a compatible operating system.
  • operating system 8 such as Windows 95 or a compatible operating system.
  • translation program 10 is called first, and target application 40 is called second.
  • translation program 10 works by intercepting calls to operating system functions, for example, using the "function interception" method described in "Windows 95 System Programming Secrets," By Matt Pietrick, IDG Books, Chapter 10: Writing a Win32 API Spy, pages 685-753. Interception is based on changing function pointers (addresses). For example, if the target application calls an operating system function such as TextOutA, which writes a character string at a specified location using a currently selected font, the translation program will divert the target application to a new address where NewTextOutA is found, wherein NewTextOutA writes a translated character string at a specified location using the translated language selected fonts.
  • an operating system function such as TextOutA
  • interception affects all forms of presentation of target application 40, including menus, pulldown or pop-up windows, dialogue boxes, message lines, buttons, data output, string formatting functions (for example date functions), non-interface text output, for example "Help" screens and other forms of presentations.
  • the interception can affect queued as well as non-queued messages.
  • the interception can affect non-operating system functions, for examples function calls directed to DLLs, for the purpose of presenting information and/or affecting the presentation of information.
  • interception applies to operating system functions whose pointers are listed in Table 1, at the end of the specification. Eight types of functions are included in Table 1. These functions can be used to:
  • Bitmap loading for changing a bitmap that is loaded from the resources to a "translated" bitmap that is loaded from the custom dictionary.
  • the invention is not limited to the functions of Table 1, and other functions may be advantageously included in other preferred embodiments.
  • a more limited translation may be desired. For example, it may be found useful to generate a "translation for an expert", for people who require minimal translation, and a "translation for a novice", for people who require intensive translation. In the "translation-for- an-expert" mode, it is possible to specify that certain function pointers of Table 1 not be changed. Alternatively or additionally, the type of translation, exceptions and/or other parameters of the translation are different.
  • selective translation is performed by selecting which of the functions of Table 1, or from an alternative table, have pointers which are not to be changed.
  • a target application utilizes several
  • translation program 10 may identify a calling DLL and/or target application and, responsive to a desired translation type, modify translation parameters and/or decide whether or not to translate. This identification is especially useful when a single DLL is shared by a plurality of applications, some of which are not to be translated and/or some of which are to be translated differently (based on an identification of the calling application and/or based on concurrent executing applications). In some cases the definitions of translation parameters are preset.
  • the definitions may be changed in real-time, for example using a control on a Windows95 application control bar.
  • changing the translation parameters may reset the function pointers.
  • the pointers continue to point into the translation program, but the handling of the functions when called, is modified.
  • translation program 10 preferably performs a trivial translation based on one or more of the following inputs: 1.
  • One or more sets of translation rules 22 Such a set contains rules of translations between the original presentation language of the target application and the language to which translation is desired. Examples are that a "left-to-right” text should be translated to a "right-to- left” text, or that the order: noun-adjective (boy good) should be reversed to: adjective-noun (good boy).
  • master dictionary 24 of words and phrases. Preferably, this is an "off-the- shelf master dictionary. Alternatively, it is an "off-the-shelf master dictionary that has been modified by providers of translation program 10, by a customizer and/or by a user.
  • One or more "learned" dictionary 26 of words and phrases which dictionary is based on the accumulative experience gained from the translations of previous target applications.
  • a dictionary is constructed automatically by translation program 10, for example from dictionaries used for other applications and/or responsive to corrections of users to translations.
  • the "Learned" dictionary can be modified by a provider of program 10, by a customizer or by a user.
  • One or more private dictionaries which contain terms suitable for a particular user or group of users. This dictionary can be based on accumulative experience gained from the translations of previous target applications. Such a dictionary may also include exceptions.
  • a hierarchy of dictionaries may be provided, for example, per suite of applications (e.g., the "office" suite), per user, per user group (e.g., lawyers), per region in a country and/or per type of usage of a program. 5.
  • one of the customizer' s tasks is to construct at least one custom dictionary 30.
  • a custom dictionary can contain only exceptions to the general translation rules or it can also contain the results of applying such rules or copies of the rules (or dictionaries). For example, when a customizer accepts a trivial translation of a word, that word can included in custom dictionary 30. When the customizer modifies a trivial translation of a word, that modification is preferably included in custom dictionary 30, for example as an application-wide translation exception or as a local translation exception.
  • no complete custom word dictionary is provided. Rather, during a translation, a trivial translation is suggested, except as indicated otherwise in an exception dictionary. If a technical problem arises from the translation, for example, a window size is too small to contain the translated text, the customizer will preferably correct the technical problem and include the correction in custom dictionary 30, for example in a form of a window size modification. In a preferred embodiment of the invention, such modifications are suggested automatically by the customization program, possibly, without requiring user intervention.
  • custom dictionary 30 is described with reference to Fig. 2 in greater detail.
  • the customizer may request the operating system, or a suitable utility program, to generate a list of these windows and or display objects.
  • groups of windows may be treated using a single pattern matching definition, described below. The comparison of such a list of windows against the entered patterns may be performed automatically to indicate to a customizer which windows are being treated specially, which are not and/or to ensure that all are covered one way or another.
  • the customizer may request the operating system, or a suitable utility program, to generate a list of all strings of target application 40.
  • the customizer may choose to create a string-translation table where each string has a corresponding translated string.
  • String translation may be trivial, performed by translation program 10 or modified, to include the customizer' s input.
  • the string-translation table may be included in custom dictionary 30, as a dictionary of strings 38.
  • the displayed text contains dynamic strings. These are strings that comprise a fixed portion and one or more dynamic terms. For example, in the string: “the fifth sentence has three errors", the fixed part is: “the * sentence has ** errors", and the dynamic terms are "fifth" and "three".
  • translation program 10 recognizes dynamic strings, for example automatically or based on a template. Alternatively or additionally, the customizer may indicate them.
  • program 10 translates the fixed string for the singular form ("error") and the plural form ("errors”) and/or any combination, as necessary.
  • the translation program translates the dynamic terms wherever they appear and reconstructs the sentence containing the dynamic terms in the translated form. These translations may also be the subjects of custom translations and/or exceptions, described below.
  • bitmap-translation table is preferably created in much the same way as the string- translation table.
  • the translation table preferably contains bitmaps of the original presentation language and corresponding bitmaps of the translated presentation language.
  • the bitmap- translation table is preferably included in custom dictionary 30, as a dictionary of bitmaps 41.
  • the table may be included in a dictionary of exceptions 36 or in an application- independent dictionary.
  • bitmap-translation may be completely automatic, possibly performed in real-time, like word-translation.
  • a new, multi-lingual supporting bitmap format is used to assist in translating bitmaps.
  • the text contents and/or other attributes of the text are stored as part of the bit map, for example in a header or at an end thereof. This information may be generated with the bit map or it may be added by the customizer.
  • the translated bitmap will not look as nice as the original one and/or may be a different size.
  • the bitmap is to be translated, the text contents of the bit map can be thus retrieved. Possibly, the bit map includes several versions for different languages.
  • this bitmap translation is facilitated by defining such files as a new class (*.mlb), which can be used to both load and translate the bits maps.
  • Such a bitmap format may also be used outside the content of the translation processes described herein, for example for Internet web pages.
  • the customizer has available a control, for example a toggle button (not shown) for toggling between an original display object and a translated display object, between display objects at different translation levels, and or between display objects at different translation parameters for the purpose of comparison.
  • a control may also be used for other purposes, for example rewinding the translation, resetting the function pointers, changing dictionaries and/or test executing the translated application.
  • the translated display object is displayed, preferably using system calls wherein the original text is replaced with the translation.
  • a provision is made to operate translation program 10 on a network, for example a LAN, an Intranet or an Internet.
  • people on the network may share one or more custom dictionary 30 and/or other dictionaries. Alternatively, they may modify it so that each has her own custom dictionary.
  • the target application or a stub for the translation program use a "remote procedure call" protocol to access a translation program 10 and/or custom dictionary 30 which is on a networked computer.
  • translation program 10 is used for translating a web site.
  • the translation program preferably identifies a particular web site, page and/or set of pages as a translation target, for which a custom dictionary is generated.
  • the translation of the content of the page is preferably responsive to the WWW page.
  • the translation may be responsive to identification of certain word patterns in the WWW page content.
  • the translation may be responsive to identification of HTML tags (or another page definition language) and/or of certain word patterns in the HTML data.
  • a location for translating and/or applying exceptions may be defined for data on an Internet.
  • the target application comprises a terminal emulation program.
  • data to be displayed is transmitted as forms and or pages.
  • a custom translation may be associated with a particular form and/or a command entered by a user of the terminal emulation program.
  • one or more custom dictionary 30 has been constructed specifically for target application 40.
  • the customizer may repeat the process again to review her work and make further changes. It should be noted that the customization can be both of text and of presentation (or of only one). Further, the customization process will typically affect windows not viewed by the customizer, especially of the customizer focuses only on problematic windows.
  • the customization and translation processes described herein are used to modify the logic and/or functionality of an application, for example by enhancing or blocking DLLs.
  • these processes are preferably directed only to modification of display and especially customizing, as modifying program logic and/or behavior without source code can have unexpected, catastrophic, consequences.
  • Fig. IB schematically illustrates a real time customized translation process 14, by a translation program 10 for target application 40, in accordance with a preferred embodiment of the invention.
  • a user (not shown), usually one not versed in the original presentation language of target application 40, executes the translation program together with target application 40 and views presentations of target-application 40 in the language for which customization was performed.
  • translation program 10 and target application 40 are executed in parallel on an operating system 8 such as Windows 95 or a compatible operating system.
  • operating system 8 such as Windows 95 or a compatible operating system.
  • translation program 10 is called first, and target application 40 is called second.
  • the translation program launches the application.
  • the application program launches the translator.
  • the translation program is embodied as a set of functions, called by the application program.
  • a same program possibly with some options blocked
  • a separate, more light weight program is used for the translating.
  • the translation program is simpler because the user need not make the decisions that the customizer has made.
  • the user has the flexibility to make these decisions, however, there is no need, since the customizer has provided him with a best mode of operation.
  • the translation can be based on only a custom dictionary or on a set of translation rules 22 and a custom dictionary, with no requirement for a master dictionary. This is especially true if the entire vocabulary of the program is determined during the customization process and dealt with in the custom dictionary.
  • customized process 14 proceeds without intervention from the user.
  • a toggle control is provided to toggle between customizing process 12 and customized process 14. This toggling may also be used to assist in deciphering a translation.
  • the customizer is the user.
  • the customizer- user may carry out the translation "on-the-fly", that is, while using the target application.
  • the customizing process will be conducted in stages, so parts of the target application will undergo translation during one execution, and other parts will undergo translation during another execution.
  • the custom dictionary too, will be constructed in stages.
  • a user may "correct" presentations, if she finds faults with them, building an exception dictionary and/or a custom dictionary, ad hoc.
  • Fig. 2 schematically illustrates a manner of construction of a custom dictionary 30, in accordance with a preferred embodiment of the invention.
  • the custom dictionary is provided to assist in particular problems, for example matching the language to an application or a field of endeavor, windows which, once translated appear odd or the wrong size, correct translation of words which have multiple meanings and/or avoid translation in situations where translation is not required or is disagreeable.
  • custom dictionaries may be provided, and these dictionaries can be stored in many different formats, for example as described above.
  • a custom dictionary includes several sections (not all of which or any of which are critical):
  • One or more dictionary of words 32 which contains special translations of words.
  • One or more dictionary of phrases 34 which contains special translations of phrases.
  • One or more dictionary of exceptions 36 which contains indications of display items to be treated differently for others.
  • One or more dictionary of strings 38 for example to be replaced.
  • One or more dictionary of bitmaps 41 for example to be replaced.
  • any or all of the above sections of the custom dictionary may be defined for a subset of the entire application program (for example as described below).
  • a single entry can affect a plurality of display items.
  • a same entry may appear twice in one section, with different results, for different display items, for example, a first bitmap may be replaced by a second bitmap in one program mode and replaced by a second bitmap in a second program mode.
  • Trivial translation by translation program 10 can be based on set of translation rules 22, master dictionary 24 of words and phrases and "learned" dictionary 26 of words and phrases.
  • dictionary of exceptions 36 When the customizer modifies a trivial translation of a word, that modification is preferably included dictionary of exceptions 36.
  • the word “file” refers to "a collection of related data records”.
  • the word “file” may sometimes refer to "a collection of related data records” and sometimes refer to "a wood-working instrument”.
  • dictionary of word 32 of "file” As “a collection of related data records” should remain intact. Therefore, an entry is made to an a dictionary of exceptions, noting the locations where the word "file” should be translated as a "wood- orking instrument”.
  • the customizer may choose to modify master dictionary 24 because she is dissatisfied with a translation that should be most commonly applied to a word or a phrase. For example, if the word "file" is described by master dictionary 24 as "a manila envelope for containing paper documents". The customizer may then modify the master dictionary so that the most commonly applied translation will be "a collection of related data records”. In some embodiments of the invention, "learned" dictionary 26 will be modified automatically as it is based on the accumulative experience of past translations.
  • the dictionary of strings 38 and dictionary of bitmaps 41 have already been discussed. They contain a string-translation table and a bitmap-translation table.
  • exceptions 36 which may be used, in some preferred embodiments of the invention, as a tool to treat many technical problems that arise from the translation process, for example by providing special treatment to certain words and/or phrases and/or to certain display objects such as windows and/or buttons.
  • Exception dictionary 36 may comprise one or more of the following:
  • This list is supplemented by a reverse-translation table. For example, where a button that originally displayed the word "Yes” has been translated, the target application, upon reaching the translation, is directed to the "reverse translation table”. The translated “Yes” is translated back to "Yes", so that target application 40 can compare it with its data base. Entries to this list and to the reverse-translation table are preferably made by the customizing user whenever she observes that they are necessary.
  • the dictionary of exceptions comprises all of the above lists.
  • the list may be split up between dictionaries and/or there may be some amount of overlap between dictionaries, preferably with a definition of order on the use of the dictionaries.
  • the lists are intermingled, with the action to be performed determined based on an action code of the entry.
  • the representation in memory if any
  • entries in the custom dictionary and especially in the dictionary of exceptions 36 are defined, in part, by the portion of the application (interface) to which they apply, e.g., a scope. This definition may be explicit and/or it may be based on patterns or function evaluation. As a result, it is possibly, in some preferred embodiments of the invention, to refer to many display items using a single entry in a dictionary. In a preferred embodiment of the invention, scope entries are based on the following system.
  • a component describing the exact location of the exception for a target application is preferably a phrase of between one and four words which together define a group of windows, a single window or part of a window.
  • a single exception can capture and modify a plurality of windows, for example all the edit boxes in all the dialogs. Or, conversely, not translate only a single edit box while translating all the other edit boxes.
  • An exemplary location phrase comprises the form "a.b.c.d", where: a. The window's class name. b. The window's name (for pop-up or overlapped windows) or parent's name (for a child window).
  • a class of names is the resource file name + an id (a name and/or a number), if the window is built by a resource.
  • Another example is the text that is sent to the parent window, when the parent window is opened.
  • a third example is the application name. It is noted that several name types may be required because some windows, for example dialog boxes receive a new identity each time they are opened. Thus, the genealogy of the window is traced instead.
  • the column number (if the window is a ListBox or a Ctrl.List) or another method of identifying the exception for example, the x and y coordinates (in screen units) of the text in the window, the exact text of the exception and/or part or all the text sent to the window when it is opened (since the text is translated, the contents may be changed before it is displayed).
  • a portion of a window to be designated even if it has no other attribute.
  • One example is a dialog box which contains many windows of static text. All these windows may have the same description, but different positions and or different text contents. The length of text required to identify the window may depend on the exact contents of the dialog box.
  • the location is preferably described by four entries (or another number) which together define the URL of a page on the web site and the text of the exception on that page.
  • entries or another number
  • the word For example: a. The word: "www”. b. The name of the site, for example, "tiktech”. c. The name of the page, for example, "gronornan”.
  • the location is preferably described by the following 4 entries: a.
  • b. The name of the program to be translated, for example, "SAS".
  • the program name is entered by a user, identified from the data stream from the main frame and/or identified from the user's input.
  • c. The title of the page of the exception.
  • the text of the first line of the page of the exception may be used.
  • d The x and y coordinates (in screen units) of the text of the exception or another method of identifying the exception, for example a field name or the exact text of the exception.
  • MOVE means, move window.
  • IGNORE means do not translate.
  • TRANSLATE means use the translation specified in parameters.
  • a component describing parameters of a function For example, where the function specifies moving a window, the parameters specify the displacement that is required.
  • the parameters describe the special translation that should take place.
  • the following are some examples of entries in a dictionary of exceptions. It is noted that the same entries could also be found in other parts of the custom dictionary. Possibly the different entries are differentiated based on a file in which the are stored or by adding a flag:
  • EDIT GNORE means ignore the translation of all EDIT controls. As exceptions can be cumulative in some embodiments of the invention, a later entry may allow translation for a particular EDIT control. In some embodiments of the invention, such cumulative action requires the entries to be in a certain order.
  • the invention is not limited to this specific system of entries. Equivalent systems may be advantageously used. In some preferred embodiments additional features may be included by adding additional terms. For example, the terms EXPERT and NOVICE could be used to request different treatments depending on whether the user is an expert or a novice.
  • the pattern which the exceptions (or the custom dictionary) match is a pattern which identifies calling conditions of the operating system request, alternatively or additionally to identifying the target display item.
  • a call to display the word "OK" using a particular function will match an entry in the exception dictionary, while a call to display the word "YES” will not.
  • the conditions may comprises, for example, watched memory locations of the program, stack contents, environmental variables, parameters of the function and/or other indications of the program operation that can be detected by the translator.
  • dictionary of exceptions 36 and/or custom dictionary are used interchangeably.
  • one or both of these dictionaries comprise several distinct dictionaries. For example, it may be desirous to construct distinct dictionaries for each category of entries as follows:
  • a dictionary of patterns or locations where the target application reads information off the screen, and reverse translation is required. This dictionary may also be useful in automatic translating of copy and paste commands.
  • translation program 10 is provided in one of several versions.
  • the first is customizing process 12, which includes rules of translation 22, master dictionary 24 and "learned" dictionary 26.
  • This version may be used by companies where a particular employee may act as a customizer and customize several target applications for the benefit of other employees. Alternatively or additionally, it may be used by professional translators. Alternatively or additionally, it may be used by people who feel versed enough in the two languages and wish to provide their families with customized versions for several target applications.
  • the second is a customized version such as customized process 14, which is specific for a target application 40 or a set of such applications.
  • custom dictionary 30 and rules of translation 22 are the only translation tools included the customized versions of translation program 10.
  • this version may have two modes: "translation-for-an-expert" mode and "translation-for-a-novice” mode.
  • the user indicates which mode she prefers.
  • a toggle key is provided for toggling between the two (or more, intermediate )modes.
  • a new application-translation can be provided by providing only the required dictionaries, without requiring a user to install a new translation program.
  • the third is a combination which includes both a customizing version and a customized version for a particular target application. The user-customizer may toggle between the two versions.
  • a non-text output as an addition or as an alternative to a written display.
  • the non-text output may be vocal. Alternatively or additionally it may be Braille output.
  • the translated target application is modified and stored on a memory device, such as a hard disk, a diskette or a CD.
  • a memory device such as a hard disk, a diskette or a CD.
  • the modifications are stored in a system registry file.
  • the translation portions are stored in association with the program, possibly being executed when the target application is loaded.
  • a translated portion of the user interface when printed and or stored and/or transmitted elsewhere (for example by e-mail) the portion may be sent as a translated portion. Alternatively or additionally, a non- translated portion is sent. Alternatively or additionally, definitions associated with the receiver (e.g., printer, remote user) govern the type and/or extent of the translation.
  • an expert user when an expert user views a display generated by a novice, the expert may desire to see an original user interface language.
  • a speaker of French may desire a French interface when receiving a report generated by a German speaker.
  • Windows 95 is compatible with Windows 95.
  • Windows 95, Windows 98, Windows 20000, Windows NT and compatible systems are especially suitable for a translation program in accordance with preferred embodiments of the present invention.
  • executable files in under Windows 95 operating systems include tables of function pointers, which tables may be more convenient to modify than the rest of the software.
  • the Windows 95 operating systems supports DLLs.
  • the present invention has been described mainly with respect to information display however, similar tools may be applied for information input, text, or speech. Also, similar tools may be applied to "text select", “text copy” and/or "text past” functions which may be used to transfer data between applications.
  • the translation program instead of (or in addition) the translation program translating what the computer generated for the benefit of a user, the translation program translates an input from the user (or a source program in the case of "copy") into a language recognized by the target application.
  • the translation program performs basic input filtering on the input from the user, to make sure the translated input matches input which is anticipated by the program.

Abstract

A method of customizing an interface of a software program utilizing a set of translation rules (22). A request from an application is intercepted, whereby at least one parameter of said request is matched using a master dictionary (24), and a learned dictionary (26), to at least one model. The presentation of a display is then modified subsequent to a successful match of request parameters. If said match is unsuccessful, display presentation is modified according to a default process, including selectively matching an item.

Description

SOFTWARE LANGUAGE TRANSLATION SYSTEM AND METHOD
RELATED APPLICATIONS
This application claims the benefit under 119(e) of a US provisional application with a same title and same applicant, having a docket number 104/01260 and filed on November 12, 1999, in the US patent and trademark office, the disclosure of which is incorporated herein by reference.
FIELD OF THE INVENTION
The present invention relates generally to methods and apparatus for translating software, and in particular to methods for providing a translation while allowing different modification of different user interface elements.
BACKGROUND OF THE INVENTION
A software user interface, which typically includes such display items as dialogue boxes, commands, menus and messages, is generally presented in one language. When a user does not speak that language, translation may be required. In a windows 95-like system, most display items are formed of windows, visible or invisible, which can be instructed to display text, can be moved and can capture user input.
These "windows" are distinct from "application windows" which are usually large conglomerates of the basic windows, arranged to have a border, controls display areas and other attributes of objects having the common name "window". In the discussion that follows, the term "target application" refers to the software whose interface is to be translated.
US patent 5,583,761 "Method for Automatic Displaying Program Presentations in
Different Languages," the disclosure of which is incorporated herein by reference, describes a method for presenting some or all of the interface of a target application in any language. The stored copy of the target application is not altered. The method comprises executing a translation program called Application Program Language Translator (APLT) in parallel with a target application on an operating system such as Windows. APLT intercepts calls to operating-system messages, selects a replacement language and uses specific tables to replace the presentation language with the replacement language while retaining the original presentation meaning. For the interception of messages, APLT uses a Window-procedure hook-filter function. The messages are then routed through a Dynamic Link Library (DLL), or commercially available equivalent links, where the translation process takes place. The translation process may comprise two steps: a "learn" step and a "execution" step. The "learn" step is generally performed by a learned user, a person versed with the presentation language of the target application and with the language to which translation is desired. During the "learn" step, an Application Specific Translation Table (ASTT) is constructed. In one example, the target application has an original string library where each STRING N is identified by a screen name and x and y coordinates, the ASTT provides a new string library NEW-STRING N, of the same screen name and x and y coordinates. In some cases, text fonts are also changed. APLT provides a preliminary translation based on a master dictionary, and the learned user may modify the translation. When desired, the screen before and after translation can be viewed for the purpose of comparison.
APLT has another option that is based on template recognition. During the "learn" step, an Application Specific Template Group (ASTG) is created, in which specific templates in the presentation language are matched with corresponding templates in a replacement language.
After the ASTT or the ASTG are prepared, APLT can be applied to the specific target application for which the "learn" step was conducted, for the "execution" step.
In the execution step, translation is performed for a general user who is not versed with the presentation language of the target application. During the "execution" step, APLT is again executed in parallel with the target application. The original target-application messages are again hooked as before and routed through a DLL as before. Either ASTT or ASTG are used to provide a translation.
However, merely replacing strings in one language with strings in another language may not be sufficient in all cases, as the total presentation may be adversely affected. In some cases, a same element in different windows needs separate translation treatment.
There is also available a program called "The Customizer", which enables a user to piecemeal modify attributes of displayed windows and to store these modifications. Described modifications include size, location color and text string. SUMMARY OF THE INVENTION
An object of some preferred embodiments of the invention is to provide a translation program that, when executed with a target application, will translate communication between the target application and a user to a language that the user desires.
An object of some preferred embodiments of the invention is to address technical problems that arise with translation. These problems may include the need to change writing direction (from "left-to-right" to "right-to-left" or to "up-down"), the need to change window attributes, such as size or shape, and/or the need to provide reverse translation where the target application reads translated text off the screen. One aspect of some preferred embodiments of the invention is the use of the "function interception" method described in "Windows 95 System Programming Secrets," By Matt Pietrick, IDG Books, Chapter 10: Writing a Win32 API Spy, pages 685-753, for intercepting target-application messages before they are passed to the screen for display. Preferably, interception is based on changing function pointers (addresses). For example, if the target application calls an operating system function X, which writes a string, the translation program will divert the target application to a new address where a function NEWX is found that displays a translated character string at a specified location using the translated language fonts, rather than the original text string. In a preferred embodiment of the invention, the translated string is a character, word or sentence. A suitable building block for translation is a phrase, which may be formed of any number of words, sentences or paragraphs. In some embodiments of the invention, a phrase may contain a dynamic portion, for example a file name, which is treated separately.
An aspect of some preferred embodiments of the invention relates to treating a multiplicity of display items in a same way, while treating certain exception display items, or groups of display items in a different manner. In particular, a certain customization behavior may be defined for a plurality of windows (possibly for the entire application) and exceptions defined on this behavior. These exceptions may also be defined for groups of windows. The definitions are preferably stored as an object described herein as a custom dictionary, defining differences from a standard translation (master dictionary), which dictionary includes a section for exceptions that define special behavior for some parts of the user interface. In some implementations of the invention, there may be no master dictionary.
Noting that uniformity in an interface is considered an advantage, one possible result is that even large and complex applications can be translated with a relatively small amount of work and requiring a relatively small exception dictionary. It should be noted that the customized behavior is not limited to translation behavior, rather, alternatively or additionally, the customized behavior includes window size, font, whether to translate or not and/or other specialized treatment of display items. Further, in some applications, the use of display customization will not be for language translation, per se, but for other uses, for example matching of a display for a target audiences with vision problems. Thus, in some cases, an audio, other multimedia or a Braille display may be provided as a result of the translation.
It should be noted that such lists of words, translations and/or exceptions may be organized in many ways, including, for example, files, functions, tables, databases and/or various data structures for storage and/or representation. The term "dictionary" is used as a shorthand for a software and/or hardware unit which can provide the required functions described herein.
An aspect of some preferred embodiments of the invention relates to a method for designating display items which are to be affected by exceptions and/or custom translation. In a preferred embodiment of the invention, the method allows selectively designating a group of windows or a single window. In a preferred embodiment of the invention, the designation comprises a plurality of fields. By selecting various values for the fields, it is possible to selectively designate groups of windows or even single windows. The designation can thus be considered a query, where each field value places a limitation on the matching windows and the set of matching windows can be considered a query response.
An aspect of some preferred embodiments of the invention, is providing flexibility in translation behavior by changing only certain function pointers. Display behavior of those functions will not be modified. Alternatively or additionally, where a target application utilizes several DLL's, a flexibility is provided not to change function pointers associated with certain DLL's. Alternatively or additionally, a flexibility is provided not to translate text presented by functions associated with certain DLL's, even if their function pointers have been changed. Alternatively or additionally, instead of changing function pointers, the function calls in the body of the software may be (selectively) changed, possibly requiring the addition of function pointers to a function-pointer table of the software. Alternatively or additionally, the code of the operating system itself may be modified, to call the modified display functions from the operating system display functions.
An aspect of some preferred embodiments of the invention relates to a method of uniquely identifying window objects for reproducible customization over several executions of a program. In a preferred embodiment of the invention, if a window cannot be identified uniquely by its name, other relevant information such as the calling window (e.g., genealogy), window position displayed text and/or a resource file source are used to uniquely identify the window. Preferably, a number of the above information items are utilized until a unique identification is created. Possibly, during a translation process, it may be required to correct a previous "unique" identification, when a later window turns out to have a similar identification.
An aspect of some preferred embodiments of the invention is the execution of a translation program and a target application on different computers. In one example, the different computers are connected using a LAN, an Intranet or an Internet. In one preferred embodiment of the invention the target application uses a "remote procedure call" protocol to access the translation program. Possibly, the translation program is split between a local computer (of the target application) and a remote computer. Alternatively, in some embodiments, the translation program and the target application program are executed on a same computer. In one preferred embodiment of the invention, the translation program, uses one or more dictionaries and/or data files to perform the translation. Optionally, one or more of the dictionaries and/or data files is located on one or more remote computers.
An aspect of some preferred embodiments of the invention relates to data arriving from a remote location and being translated on a local computer. In one example, the data comprises
WWW pages and the target application preferably comprises a WWW browser. Alternatively or additionally, the data comprises terminal display data for a terminal emulation program, which terminal emulation program is the target application.
There is thus provided in accordance with a preferred embodiment of the invention, a method of customizing an interface of a software application, comprising: intercepting a request from the application to an operating system under which the application is executing, which request is associated with a display item; matching at least one parameter of the request to at least one model; modifying an execution of said request in a first non-trivial way responsive to a success of said match, such that the presentation of the display item is modified; and otherwise modifying the execution of said request in a second, default and non-trivial way responsive to a failure of said match, such that the presentation of the display item is modified. Preferably, said at least one model is designed to match only a single display item of said application. Alternatively or additionally, said at least one model is designed to match a plurality of display items of said application. Preferably, said at least one model is designed to match a specific plurality of display items of said application. In a preferred embodiment of the invention, said model comprises a designation portion for matching to a display item identification. Preferably, said designation portion comprises a plurality of fields, each of which defines a limitation on the range of display items which match the model. Preferably, at least one of said fields may comprise a wild card. Alternatively or additionally, said fields define orthogonal limitations. In a preferred embodiment of the invention, said fields comprise at least a field representing the display item type and a field representing the display item content.
In a preferred embodiment of the invention, said designation can selectively match a single or a plurality of display items. Preferably, said model comprises a pattern. Alternatively or additionally, said model is embodied by a function that evaluates the match. In a preferred embodiment of the invention, said at least one parameter comprises an identification of the display item with which said request is associated.
In a preferred embodiment of the invention, said at least one parameter comprises an environmental variable. Alternatively or additionally, said display item comprises an input object. Preferably, said input object comprises a text input box. Alternatively, said input object comprises a list control.
In a preferred embodiment of the invention, said display item comprises an output object. Preferably, said output object comprises a text box.
In a preferred embodiment of the invention, said identification comprises at least part of a text sent to said display item when the display item is created. Preferably, said identification comprises a name of a resource file for generating the display item. Alternatively or additionally, said identification comprises a display position of the display item. Alternatively or additionally, said identification comprises at least part of a genealogy of said display item. In a preferred embodiment of the invention, said model is static during an execution of said application. Alternatively, matching to said model changes during an execution of said application.
In a preferred embodiment of the invention, modifying an execution comprises changing a dimension of said display item. Alternatively or additionally, modifying an execution comprises translating a text content of said display item into a different language.
Preferably, said translating comprises translating using an application specific dictionary having a vocabulary limited to substantially match said application. Alternatively, said translating comprises translating using a master dictionary having a vocabulary significantly broader than required by said application. In a preferred embodiment of the invention, modifying an execution comprises changing a font of a text content of said display item. Alternatively or additionally, modifying an execution comprises changing a text attribute of a text content of said display item.
Alternatively or additionally, modifying an execution comprises changing a font of a text content of said display item. Alternatively or additionally, modifying an execution comprises changing a bitmap content of said display item. Alternatively or additionally, modifying an execution comprises changing a display location of said display item. Alternatively or additionally, modifying an execution comprises adding a tool-tip to said display item.
In a preferred embodiment of the invention, said matching comprises matching against at least two models, where one model matches a subset of the display items matched by the other model. Alternatively or additionally, said modifying said execution comprises executing a remote procedure call over a computer network. Alternatively or additionally, said modifying said execution comprises retrieving information over a computer network. Alternatively or additionally, said application comprises a local application having a programmed user interface, which programmed interface is modified. Alternatively or additionally, said application comprises a local application which displays data, which data is modified by said modifying. Alternatively or additionally, said application displays data from a remote source and wherein presentation of said remote data is modified by said modifying. Preferably, said application comprises a terminal emulator. Alternatively, said application comprises a WWW browser. Alternatively or additionally, said modified data comprises a user interface element.
In a preferred embodiment of the invention, intercepting comprises replacing function pointers in said application. Alternatively or additionally, intercepting comprises hooking using an operating system service. Alternatively or additionally, modifying comprises translating a phrase displayed by said display item. In a preferred embodiment of the invention, translating a phrase comprises: matching said phrase against one or more patterns, at least one of said patterns including a wild card; replacing portions of said phrase which match said pattern by a previously prepared translations of said portions; and translating portions of said phrase which match said wild card.
There is also provided in accordance with a preferred embodiment of the invention, a method of translating, comprising: translating a display item to show a translated value rather than an original value; and providing said original value to an application which requests a copy of the displayed item, responsive to such a request. Preferably, presenting said original value comprises intercepting a request from an operating system for said value.
There is also provided in accordance with a preferred embodiment of the invention, a method of translating a phrase in real-time by a computer, comprising: matching said phrase against one or more patterns, at least one of said patterns including a wild card; replacing portions of said phrase which match said pattern by a previously prepared translations of said portions; and translating portions of said phrase which match said wild card separately from said replacing. Preferably, said translating comprises translating using a dictionary. There is also provided in accordance with a preferred embodiment of the invention, a method of translating an application, comprising: providing an application having at least one function pointer that points to a function for presenting information in a display item; and replacing said function pointer with a new function pointer, to a function that presents a translation of said information. Preferably, replacing said function pointer comprises replacing said pointer in a function table of said application. Alternatively or additionally, replacing said function pointer comprises replacing said pointer in a jump command of said application.
Alternatively or additionally, replacing said function pointer comprises replacing said pointer in a DLL associated with said application.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention will be more clearly understood from the following detailed description of the preferred embodiments of the invention and from the attached drawings, in which same number designations are maintained throughout the figures for each elements and in which:
Fig. 1 A schematically illustrates a process of customizing a translation program for a particular target application, prior to its use, in accordance with a preferred embodiment of the invention;
Fig. IB schematically illustrates a process of translating a particular target application, when the application is used, in accordance with a preferred embodiment of the invention; and
Fig. 2 schematically illustrates the manner of construction of a custom dictionary in accordance with a preferred embodiment of the invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
In the process of translating a program two steps can be usually identified (however, as described below, this is not always the case). First, as exemplified by Fig. 1A, a general translating mechanism may be customized to match a particular application program. Second, as exemplified by Fig. IB, a real-time translator (or translation functions executed in parallel), modifies the display behavior and/or input behavior of the translated application to conform to the translation defined by the customization process. In a preferred embodiment of the invention, these processes are enhanced by the provision of one or more custom dictionaries which modify the behavior of the general translation mechanism. Preferably, these custom dictionary contain a mechanism for defining exceptions to the behavior define din the custom dictionaries. A particular feature of some preferred embodiments of the invention is that the exceptions and/or custom dictionaries can refer to large numbers of windows in a shorthand manner, thereby possibly facilitating uniformity and ease of translation.
It should be noted that many mechanism can be used both for generating the custom and exception dictionaries and for performing the real-time translation, in accordance with preferred embodiments of the invention. However, Figs. 1A and IB describe exemplary methods of doing so. In these Figures, a method of customization 12 is used to modify a behavior of a translation program 10, when it is used as part of a process of translation 14 for an application 40.
Some examples of target applications 40 include, word processors, data manipulation programs, databases, spreadsheets, file managers, browsers, computer games, e-mail programs and/or operating system enhancements, for example user provided DLLs and/or device configuration programs. During customizing process 12, a human customizer (not shown), preferably a person versed with the original presentation language of target application 40 and with the language to which translation is desired, prepares one or more custom dictionary 30 specifically for target application 40.
Preferably, translation program 10 and target application 40 are executed in parallel on an operating system 8 such as Windows 95 or a compatible operating system. Preferably, translation program 10 is called first, and target application 40 is called second.
In a preferred embodiment of the invention, translation program 10 works by intercepting calls to operating system functions, for example, using the "function interception" method described in "Windows 95 System Programming Secrets," By Matt Pietrick, IDG Books, Chapter 10: Writing a Win32 API Spy, pages 685-753. Interception is based on changing function pointers (addresses). For example, if the target application calls an operating system function such as TextOutA, which writes a character string at a specified location using a currently selected font, the translation program will divert the target application to a new address where NewTextOutA is found, wherein NewTextOutA writes a translated character string at a specified location using the translated language selected fonts. However, other interception methods may be used for example, a Window-procedure hook-filter function, which method is described for example in the above referenced U.S. patent 5,583,761. By suitable selection of the functions to be intercepted, various behavioral effects can be achieved and or using different techniques. In a preferred embodiment of the invention, interception affects all forms of presentation of target application 40, including menus, pulldown or pop-up windows, dialogue boxes, message lines, buttons, data output, string formatting functions (for example date functions), non-interface text output, for example "Help" screens and other forms of presentations. Alternatively or additionally, the interception can affect queued as well as non-queued messages. Alternatively or additionally, the interception can affect non-operating system functions, for examples function calls directed to DLLs, for the purpose of presenting information and/or affecting the presentation of information. In a preferred embodiment of the invention, interception applies to operating system functions whose pointers are listed in Table 1, at the end of the specification. Eight types of functions are included in Table 1. These functions can be used to:
1. Change the text of a GDI function.
2. Associate (link) a new application/module/help to the application that loads it so it will be treated in the same way and possibly use the same custom dictionary.
3. Change text in a string. This is used in places where text cannot be changed during the output process and/or where such change is inconvenient.
4. Change the font when the original font does not support the new (other) language.
5. Change the text of the item(s) in the menu. 6. Maintaining the links between a Window's handle and its device context.
7. Synchronize between a menu and it's "mirrored" menu.
8. Bitmap loading, for changing a bitmap that is loaded from the resources to a "translated" bitmap that is loaded from the custom dictionary.
However, the invention is not limited to the functions of Table 1, and other functions may be advantageously included in other preferred embodiments. In addition, not all the functions and or particular function calls need be intercepted, thereby allowing some flexibility in defining the behavior of the customized program. In some prefened embodiments, a more limited translation may be desired. For example, it may be found useful to generate a "translation for an expert", for people who require minimal translation, and a "translation for a novice", for people who require intensive translation. In the "translation-for- an-expert" mode, it is possible to specify that certain function pointers of Table 1 not be changed. Alternatively or additionally, the type of translation, exceptions and/or other parameters of the translation are different. Preferably, selective translation is performed by selecting which of the functions of Table 1, or from an alternative table, have pointers which are not to be changed. Alternatively or additionally, where a target application utilizes several
DLL's, function calls in one or more of the DLLs are not changed. When function pointers are not changed, the operating system calls the original functions and presentations are displayed in the original presentation language. Preferably, even when function pointers are changed, translation program 10 may identify a calling DLL and/or target application and, responsive to a desired translation type, modify translation parameters and/or decide whether or not to translate. This identification is especially useful when a single DLL is shared by a plurality of applications, some of which are not to be translated and/or some of which are to be translated differently (based on an identification of the calling application and/or based on concurrent executing applications). In some cases the definitions of translation parameters are preset. Alternatively or additionally, the definitions may be changed in real-time, for example using a control on a Windows95 application control bar. In some cases, changing the translation parameters may reset the function pointers. Alternatively or additionally, the pointers continue to point into the translation program, but the handling of the functions when called, is modified.
Typically, translation is performed both during the customization process and during a real-time translation process. In a typical translation process, translation program 10 preferably performs a trivial translation based on one or more of the following inputs: 1. One or more sets of translation rules 22. Such a set contains rules of translations between the original presentation language of the target application and the language to which translation is desired. Examples are that a "left-to-right" text should be translated to a "right-to- left" text, or that the order: noun-adjective (boy good) should be reversed to: adjective-noun (good boy). 2. One or more master dictionary 24 of words and phrases. Preferably, this is an "off-the- shelf master dictionary. Alternatively, it is an "off-the-shelf master dictionary that has been modified by providers of translation program 10, by a customizer and/or by a user.
3. One or more "learned" dictionary 26 of words and phrases, which dictionary is based on the accumulative experience gained from the translations of previous target applications. Optionally, such a dictionary is constructed automatically by translation program 10, for example from dictionaries used for other applications and/or responsive to corrections of users to translations. The "Learned" dictionary can be modified by a provider of program 10, by a customizer or by a user.
4. One or more private dictionaries, which contain terms suitable for a particular user or group of users. This dictionary can be based on accumulative experience gained from the translations of previous target applications. Such a dictionary may also include exceptions.
Alternatively or additionally, a hierarchy of dictionaries (of any of the types) may be provided, for example, per suite of applications (e.g., the "office" suite), per user, per user group (e.g., lawyers), per region in a country and/or per type of usage of a program. 5. One or more functions, rather than rules or dictionaries, which describe in a functional rather than a tabular way, the relationship between the source and the translated result. Such functions may be used for the generalized dictionaries and/or for the customized dictionaries and exception lists, below. 6. One or more custom dictionaries and exceptions 30, described below.
In a preferred embodiment of the invention, one of the customizer' s tasks is to construct at least one custom dictionary 30. A custom dictionary can contain only exceptions to the general translation rules or it can also contain the results of applying such rules or copies of the rules (or dictionaries). For example, when a customizer accepts a trivial translation of a word, that word can included in custom dictionary 30. When the customizer modifies a trivial translation of a word, that modification is preferably included in custom dictionary 30, for example as an application-wide translation exception or as a local translation exception.
In some embodiments, no complete custom word dictionary is provided. Rather, during a translation, a trivial translation is suggested, except as indicated otherwise in an exception dictionary. If a technical problem arises from the translation, for example, a window size is too small to contain the translated text, the customizer will preferably correct the technical problem and include the correction in custom dictionary 30, for example in a form of a window size modification. In a preferred embodiment of the invention, such modifications are suggested automatically by the customization program, possibly, without requiring user intervention.
The construction of custom dictionary 30 is described with reference to Fig. 2 in greater detail. After the translation is accepted or modified, and the technical problems resolved, the final translation is displayed and can be used to finalize the customization process. Preferably, in order to insure that all windows of target application 40 are handled, the customizer may request the operating system, or a suitable utility program, to generate a list of these windows and or display objects. In a preferred embodiment of the invention, groups of windows may be treated using a single pattern matching definition, described below. The comparison of such a list of windows against the entered patterns may be performed automatically to indicate to a customizer which windows are being treated specially, which are not and/or to ensure that all are covered one way or another.
In some preferred embodiments, the customizer may request the operating system, or a suitable utility program, to generate a list of all strings of target application 40. The customizer may choose to create a string-translation table where each string has a corresponding translated string. String translation may be trivial, performed by translation program 10 or modified, to include the customizer' s input. The string-translation table may be included in custom dictionary 30, as a dictionary of strings 38.
Sometimes the displayed text contains dynamic strings. These are strings that comprise a fixed portion and one or more dynamic terms. For example, in the string: "the fifth sentence has three errors", the fixed part is: "the * sentence has ** errors", and the dynamic terms are "fifth" and "three". In a preferred embodiment of the invention, translation program 10 recognizes dynamic strings, for example automatically or based on a template. Alternatively or additionally, the customizer may indicate them. Preferably program 10 translates the fixed string for the singular form ("error") and the plural form ("errors") and/or any combination, as necessary. Preferably, the translation program translates the dynamic terms wherever they appear and reconstructs the sentence containing the dynamic terms in the translated form. These translations may also be the subjects of custom translations and/or exceptions, described below. Preferably, where the text of the original presentation is written in bitmap image, a program such as an OCR, or a human, is used to convert the text to alphabetic presentation. One or more bitmap-translation table is preferably created in much the same way as the string- translation table. The translation table preferably contains bitmaps of the original presentation language and corresponding bitmaps of the translated presentation language. The bitmap- translation table is preferably included in custom dictionary 30, as a dictionary of bitmaps 41. Alternatively, the table may be included in a dictionary of exceptions 36 or in an application- independent dictionary. Alternatively, bitmap-translation may be completely automatic, possibly performed in real-time, like word-translation.
In a preferred embodiment of the invention, a new, multi-lingual supporting bitmap format is used to assist in translating bitmaps. In the new format, the text contents and/or other attributes of the text are stored as part of the bit map, for example in a header or at an end thereof. This information may be generated with the bit map or it may be added by the customizer. In some case, the translated bitmap will not look as nice as the original one and/or may be a different size. When the bitmap is to be translated, the text contents of the bit map can be thus retrieved. Possibly, the bit map includes several versions for different languages.
In a preferred embodiment of the invention, this bitmap translation is facilitated by defining such files as a new class (*.mlb), which can be used to both load and translate the bits maps.
Such a bitmap format may also be used outside the content of the translation processes described herein, for example for Internet web pages. Preferably, the customizer has available a control, for example a toggle button (not shown) for toggling between an original display object and a translated display object, between display objects at different translation levels, and or between display objects at different translation parameters for the purpose of comparison. Such a control may also be used for other purposes, for example rewinding the translation, resetting the function pointers, changing dictionaries and/or test executing the translated application.
When the customization of translation is finalized, the translated display object is displayed, preferably using system calls wherein the original text is replaced with the translation. In some preferred embodiments of the invention a provision is made to operate translation program 10 on a network, for example a LAN, an Intranet or an Internet. Preferably, people on the network may share one or more custom dictionary 30 and/or other dictionaries. Alternatively, they may modify it so that each has her own custom dictionary. In one embodiment of the invention, the target application or a stub for the translation program use a "remote procedure call" protocol to access a translation program 10 and/or custom dictionary 30 which is on a networked computer.
Alternatively or additionally, translation program 10 is used for translating a web site. The translation program preferably identifies a particular web site, page and/or set of pages as a translation target, for which a custom dictionary is generated. When the WWW page is displayed, for example using a browser, the translation of the content of the page is preferably responsive to the WWW page. Alternatively or additionally, the translation may be responsive to identification of certain word patterns in the WWW page content. Alternatively or additionally, the translation may be responsive to identification of HTML tags (or another page definition language) and/or of certain word patterns in the HTML data. Thus, a location for translating and/or applying exceptions may be defined for data on an Internet. Alternatively, the target application comprises a terminal emulation program. In some terminals, data to be displayed is transmitted as forms and or pages. Possibly, a custom translation may be associated with a particular form and/or a command entered by a user of the terminal emulation program. When customizing process 12 is complete, one or more custom dictionary 30 has been constructed specifically for target application 40. Preferably, the customizer may repeat the process again to review her work and make further changes. It should be noted that the customization can be both of text and of presentation (or of only one). Further, the customization process will typically affect windows not viewed by the customizer, especially of the customizer focuses only on problematic windows. In some embodiments of the invention, alternatively or additionally, to customizing displays, the customization and translation processes described herein are used to modify the logic and/or functionality of an application, for example by enhancing or blocking DLLs. However, these processes are preferably directed only to modification of display and especially customizing, as modifying program logic and/or behavior without source code can have unexpected, catastrophic, consequences.
Reference is now made to Fig. IB which schematically illustrates a real time customized translation process 14, by a translation program 10 for target application 40, in accordance with a preferred embodiment of the invention. During translation process 14, a user (not shown), usually one not versed in the original presentation language of target application 40, executes the translation program together with target application 40 and views presentations of target-application 40 in the language for which customization was performed.
Preferably, translation program 10 and target application 40 are executed in parallel on an operating system 8 such as Windows 95 or a compatible operating system. Preferably, translation program 10 is called first, and target application 40 is called second. Possibly the translation program launches the application. Alternatively, the application program launches the translator. Possibly, the translation program is embodied as a set of functions, called by the application program. Although a same program (possibly with some options blocked) could be used for both customizing and real-time translation, in a preferred embodiment of the invention, a separate, more light weight program is used for the translating. Typically, the translation program is simpler because the user need not make the decisions that the customizer has made. In some preferred embodiments, the user has the flexibility to make these decisions, however, there is no need, since the customizer has provided him with a best mode of operation. Alternatively or additionally, the translation can be based on only a custom dictionary or on a set of translation rules 22 and a custom dictionary, with no requirement for a master dictionary. This is especially true if the entire vocabulary of the program is determined during the customization process and dealt with in the custom dictionary. Preferably, customized process 14 proceeds without intervention from the user.
Original-presentation language will be displayed where the customizer has decided to forgo translation. Trivial translations will be displayed where the customizer has approved them, modified translations will be displayed where the customizer has deemed them necessary, and all technical problems will be resolved without the user's knowing that they ever existed. However, the user may wish to modify the customizer' s input. In some preferred embodiments a toggle control is provided to toggle between customizing process 12 and customized process 14. This toggling may also be used to assist in deciphering a translation.
In some cases, the customizer is the user. In this preferred embodiment, the customizer- user may carry out the translation "on-the-fly", that is, while using the target application. In this case, it is likely that the customizing process will be conducted in stages, so parts of the target application will undergo translation during one execution, and other parts will undergo translation during another execution. As a result, the custom dictionary, too, will be constructed in stages. Alternatively, a user may "correct" presentations, if she finds faults with them, building an exception dictionary and/or a custom dictionary, ad hoc.
Reference is now made to Fig. 2 which schematically illustrates a manner of construction of a custom dictionary 30, in accordance with a preferred embodiment of the invention. In a preferred embodiment of the invention, the custom dictionary is provided to assist in particular problems, for example matching the language to an application or a field of endeavor, windows which, once translated appear odd or the wrong size, correct translation of words which have multiple meanings and/or avoid translation in situations where translation is not required or is disagreeable.
One or more custom dictionaries may be provided, and these dictionaries can be stored in many different formats, for example as described above. However, in a particular exemplary embodiment, a custom dictionary includes several sections (not all of which or any of which are critical):
1. One or more dictionary of words 32, which contains special translations of words.
2. One or more dictionary of phrases 34, which contains special translations of phrases.
3. One or more dictionary of exceptions 36, which contains indications of display items to be treated differently for others.
4. One or more dictionary of strings 38, for example to be replaced.
5. One or more dictionary of bitmaps 41, for example to be replaced.
In a preferred embodiment of the invention, any or all of the above sections of the custom dictionary may be defined for a subset of the entire application program (for example as described below). Thus, a single entry can affect a plurality of display items. In some cases, a same entry may appear twice in one section, with different results, for different display items, for example, a first bitmap may be replaced by a second bitmap in one program mode and replaced by a second bitmap in a second program mode. Trivial translation by translation program 10 can be based on set of translation rules 22, master dictionary 24 of words and phrases and "learned" dictionary 26 of words and phrases.
When a customizer accepts a trivial translation of a word, that word can be included dictionary of words 32. When she accepts a trivial translation of a phrase, that phrase is can be included in dictionary of phrases 34.
When the customizer modifies a trivial translation of a word, that modification is preferably included dictionary of exceptions 36. For example, often the word "file" refers to "a collection of related data records". However, in a computer course on home carpentry, the word "file" may sometimes refer to "a collection of related data records" and sometimes refer to "a wood-working instrument". Naturally, the definition in dictionary of word 32 of "file" as "a collection of related data records" should remain intact. Therefore, an entry is made to an a dictionary of exceptions, noting the locations where the word "file" should be translated as a "wood- orking instrument".
Occasionally, the customizer may choose to modify master dictionary 24 because she is dissatisfied with a translation that should be most commonly applied to a word or a phrase. For example, if the word "file" is described by master dictionary 24 as "a manila envelope for containing paper documents". The customizer may then modify the master dictionary so that the most commonly applied translation will be "a collection of related data records". In some embodiments of the invention, "learned" dictionary 26 will be modified automatically as it is based on the accumulative experience of past translations.
The dictionary of strings 38 and dictionary of bitmaps 41 have already been discussed. They contain a string-translation table and a bitmap-translation table.
Reference is now made specifically to dictionary of exceptions 36, which may be used, in some preferred embodiments of the invention, as a tool to treat many technical problems that arise from the translation process, for example by providing special treatment to certain words and/or phrases and/or to certain display objects such as windows and/or buttons.
Exception dictionary 36 may comprise one or more of the following:
1. A list of patterns or locations where a specific translation, different from that most commonly found in a dictionary, should be applied. (For example, the word "file" as a wood- working instrument).
2. A list of patterns or locations where translation should not take place. (For example, generally terms such as "O.K." are commonly known and need no translation).
3. A list of patterns or locations where the target application reads information off the screen, and reverse translation is required, so that the target application can compare the text it read to its data base. This list is supplemented by a reverse-translation table. For example, where a button that originally displayed the word "Yes" has been translated, the target application, upon reaching the translation, is directed to the "reverse translation table". The translated "Yes" is translated back to "Yes", so that target application 40 can compare it with its data base. Entries to this list and to the reverse-translation table are preferably made by the customizing user whenever she observes that they are necessary.
4. a list of patterns or locations where display format, for example text attributes such as the font, bold, italic and underline and/or justification should be changed.
5. A list of patterns or locations where window attributes such as window size, shape or position should be changed (As an example, English is about 20% more "wordy" than Hebrew.
When translating from Hebrew to English, larger windows are required in order to maintain the same-size font. As another example, languages that are written up-down require different shape windows.).
6. A list of patterns or locations where the text is provided in bitmap image and a bitmap- translation table associated with this list.
7. A list of setup files, scripts, function calls and/or parameters and/or file contents, memory locations and or environmental variables, which affect the translation. Any of these or other know mechanisms may be used, for example, to make the translation better adapted to a particular user or an operational mode of the application program. Also, these mechanisms can be used to add flexibility to the translation.
8. A list of patterns or locations where a foreground, background and/or other color attribute should be changed.
9. A list of patterns or locations where a tool-tip (pop-up comment) or a status line comment is to be added. 10. A list of patterns of locations where other media types, such as image, static or dynamic graphics, voice, video and/or other media objects are to be added. 11. A list of patterns of locations where a context menu (right mouse) is to be added or changed.
In some preferred embodiments, the dictionary of exceptions comprises all of the above lists. Alternatively, the list may be split up between dictionaries and/or there may be some amount of overlap between dictionaries, preferably with a definition of order on the use of the dictionaries. In some implementations, especially where the exception dictionaries are relatively short, the lists are intermingled, with the action to be performed determined based on an action code of the entry. In any case, the representation in memory (if any) may be different from a file representation (if any), which can be, for example, more amenable to text editing.
In some cases, functions to be evaluated are provided instead of patterns, a match between a situation and an entry in the dictionary being tested by evaluating the function. In a preferred embodiment of the invention, entries in the custom dictionary and especially in the dictionary of exceptions 36 are defined, in part, by the portion of the application (interface) to which they apply, e.g., a scope. This definition may be explicit and/or it may be based on patterns or function evaluation. As a result, it is possibly, in some preferred embodiments of the invention, to refer to many display items using a single entry in a dictionary. In a preferred embodiment of the invention, scope entries are based on the following system.
A component describing the exact location of the exception for a target application, in Microsoft Windows 95, is preferably a phrase of between one and four words which together define a group of windows, a single window or part of a window. Thus, a single exception can capture and modify a plurality of windows, for example all the edit boxes in all the dialogs. Or, conversely, not translate only a single edit box while translating all the other edit boxes. An exemplary location phrase comprises the form "a.b.c.d", where: a. The window's class name. b. The window's name (for pop-up or overlapped windows) or parent's name (for a child window). One example of a class of names is the resource file name + an id (a name and/or a number), if the window is built by a resource. Another example is the text that is sent to the parent window, when the parent window is opened. A third example is the application name. It is noted that several name types may be required because some windows, for example dialog boxes receive a new identity each time they are opened. Thus, the genealogy of the window is traced instead. c. The window's control LD. d. The column number (if the window is a ListBox or a Ctrl.List) or another method of identifying the exception, for example, the x and y coordinates (in screen units) of the text in the window, the exact text of the exception and/or part or all the text sent to the window when it is opened (since the text is translated, the contents may be changed before it is displayed). These features enables a portion of a window to be designated even if it has no other attribute. One example is a dialog box which contains many windows of static text. All these windows may have the same description, but different positions and or different text contents. The length of text required to identify the window may depend on the exact contents of the dialog box.
For a web site, the location is preferably described by four entries (or another number) which together define the URL of a page on the web site and the text of the exception on that page. For example: a. The word: "www". b. The name of the site, for example, "tiktech". c. The name of the page, for example, "gronornan". d. The x and y coordinates (in screen units) of the text of the exception or another method of identifying the exception, for example an HTML tag, an HTML identifier or the exact text of the exception.
For terminal emulation, the location is preferably described by the following 4 entries: a. The word: "emulation". b. The name of the program to be translated, for example, "SAS". Preferably, the program name is entered by a user, identified from the data stream from the main frame and/or identified from the user's input. c. The title of the page of the exception. Alternatively, the text of the first line of the page of the exception. Alternatively, other identifying texts and/or other characteristics of the page may be used. d. The x and y coordinates (in screen units) of the text of the exception or another method of identifying the exception, for example a field name or the exact text of the exception.
To convert such a phrase, as described above, into a pattern, various mechanism may be used, for example an asterix "*" may be used to replace words which can have any possible value. Alternatively or additionally, a function call or a script can be used instead in the place of the word. The tail end of the phrase, if not needed, need not be provided, in some preferred embodiments of the invention.
After the scope definition, come:
1. A component describing the desired function. For example, MOVE means, move window. IGNORE means do not translate. TRANSLATE means use the translation specified in parameters.
2. A component describing parameters of a function. For example, where the function specifies moving a window, the parameters specify the displacement that is required.
Alternatively, the parameters describe the special translation that should take place. For example, the parameter, OK=YES, means translate "OK" to "YES". The following are some examples of entries in a dictionary of exceptions. It is noted that the same entries could also be found in other parts of the custom dictionary. Possibly the different entries are differentiated based on a file in which the are stored or by adding a flag:
1. Button.[DRAGOMAN:153]Options.3„IGNORE means: Do not translate all text in the button with control LD^ in dialogue "Devices" (No parameters are necessary.). A redundant term, such as "OK" (for an "OK" button) can be the fourth element of the above phrase, however, it is not required as the above phrase completely addresses the desired button.
2. Button.Devices.3,TRANSLATE,OK=YES means translate text in button with control LD =3 in dialogue "Devices", by substituting "YES" in place of "OK". 3. Button.Devices.3,[DX=10,DY=15],MOVE means move button with control LD =3 in dialogue "Devices" 10 screen units along the x axis and 15 screen units along the y axis.
4. EDIT GNORE means ignore the translation of all EDIT controls. As exceptions can be cumulative in some embodiments of the invention, a later entry may allow translation for a particular EDIT control. In some embodiments of the invention, such cumulative action requires the entries to be in a certain order.
5. www.tiktech.gronoman.[20,25],TRANSLATE,O.K.=YES means at web site tiktech on page gronoman at screen location X= 20 screen units, Y=25 screen units, substitute YES for O.K.
However, the invention is not limited to this specific system of entries. Equivalent systems may be advantageously used. In some preferred embodiments additional features may be included by adding additional terms. For example, the terms EXPERT and NOVICE could be used to request different treatments depending on whether the user is an expert or a novice.
An entry, EDIT,IGNORE„EXPERT (the two commas indicate that there are no parameters) would mean, ignore the translation of all EDIT controls while working in the "translation-for- an-expert" mode. Optionally, the pattern which the exceptions (or the custom dictionary) match is a pattern which identifies calling conditions of the operating system request, alternatively or additionally to identifying the target display item. Thus, for example, a call to display the word "OK" using a particular function will match an entry in the exception dictionary, while a call to display the word "YES" will not. The conditions may comprises, for example, watched memory locations of the program, stack contents, environmental variables, parameters of the function and/or other indications of the program operation that can be detected by the translator.
In some preferred embodiments, dictionary of exceptions 36 and/or custom dictionary
30 each comprise a single dictionary. In other preferred embodiments, one or both of these dictionaries comprise several distinct dictionaries. For example, it may be desirous to construct distinct dictionaries for each category of entries as follows:
1. A dictionary of patterns or locations where a specific translation, different from that most commonly found in a dictionary (custom or master), should be applied. 2. A dictionary of patterns or locations where translation should not take place.
3. A dictionary of patterns or locations where the target application reads information off the screen, and reverse translation is required. This dictionary may also be useful in automatic translating of copy and paste commands.
4. A dictionary of patterns or locations where window attributes should be changed. 5. A dictionary of patterns or locations where the text is provided in bitmap.
6. Different dictionaries for different users or lasses or users (e.g., novice, expert). It is noted that by changing gradually changing the dictionary, it may be possible to train a user, and wean him from dependency on translated products, at least for some applications.
The advantage of this system is that some of these categories, for example, category 2, 3 and 5 apply to all languages. Others, for example, category 4, may apply to a group of related languages. Keeping these dictionaries distinct may make the task of constructing a multi-language system of dictionaries simpler.
Preferably, translation program 10 is provided in one of several versions. The first is customizing process 12, which includes rules of translation 22, master dictionary 24 and "learned" dictionary 26. This version may be used by companies where a particular employee may act as a customizer and customize several target applications for the benefit of other employees. Alternatively or additionally, it may be used by professional translators. Alternatively or additionally, it may be used by people who feel versed enough in the two languages and wish to provide their families with customized versions for several target applications.
The second is a customized version such as customized process 14, which is specific for a target application 40 or a set of such applications. Preferably, custom dictionary 30 and rules of translation 22 are the only translation tools included the customized versions of translation program 10. In some preferred embodiments, this version may have two modes: "translation-for-an-expert" mode and "translation-for-a-novice" mode. In these preferred embodiments, the user indicates which mode she prefers. Alternatively, a toggle key is provided for toggling between the two (or more, intermediate )modes. In some cases, a new application-translation can be provided by providing only the required dictionaries, without requiring a user to install a new translation program. The third is a combination which includes both a customizing version and a customized version for a particular target application. The user-customizer may toggle between the two versions.
In some preferred embodiments of the invention a provision is made for a non-text output as an addition or as an alternative to a written display. The non-text output may be vocal. Alternatively or additionally it may be Braille output.
In some preferred embodiments of the invention the translated target application is modified and stored on a memory device, such as a hard disk, a diskette or a CD. Alternatively or additionally, the modifications are stored in a system registry file. Alternatively or additionally, the translation portions are stored in association with the program, possibly being executed when the target application is loaded. When a translated display object is displayed on a network, stored and or printed, the translation parameters may be changed.
In a preferred embodiment of the invention, when a translated portion of the user interface is printed and or stored and/or transmitted elsewhere (for example by e-mail) the portion may be sent as a translated portion. Alternatively or additionally, a non- translated portion is sent. Alternatively or additionally, definitions associated with the receiver (e.g., printer, remote user) govern the type and/or extent of the translation.
In one example, when an expert user views a display generated by a novice, the expert may desire to see an original user interface language. In an example of a multi-national firm, a speaker of French may desire a French interface when receiving a report generated by a German speaker.
It should be noted that the invention is not limited to operating systems compatible with Windows 95. However, Windows 95, Windows 98, Windows 20000, Windows NT and compatible systems are especially suitable for a translation program in accordance with preferred embodiments of the present invention. In one example, executable files in under Windows 95 operating systems include tables of function pointers, which tables may be more convenient to modify than the rest of the software. In another example, the Windows 95 operating systems supports DLLs.
The present invention has been described mainly with respect to information display however, similar tools may be applied for information input, text, or speech. Also, similar tools may be applied to "text select", "text copy" and/or "text past" functions which may be used to transfer data between applications. Thus, instead of (or in addition) the translation program translating what the computer generated for the benefit of a user, the translation program translates an input from the user (or a source program in the case of "copy") into a language recognized by the target application. In one example, the translation program performs basic input filtering on the input from the user, to make sure the translated input matches input which is anticipated by the program.
The present invention has been described in terms of preferred, non-limiting embodiments thereof. It should be understood that features described with respect to one embodiment may be used with other embodiments and that not all embodiments of the invention have all of the features shown in a particular figure. Although some preferred embodiments may have been described only as method, the scope of the invention includes software and/or hardware required to perform the methods, typically a personal computer. Additionally, the scope of the invention includes diskettes, CDs and/or other computer storage media including thereon representations of software suitable for carrying out at least one embodiment of the present invention. In particular, the scope of the invention is not defined by the preferred embodiments but by the following claims. When used in the following claims, the terms "comprises", "comprising", "includes", "including" or the like mean "including but not limited to".
TABLE 1
Figure imgf000027_0001
Figure imgf000028_0001

Claims

1. A method of customizing an interface of a software application, comprising: intercepting a request from the application to an operating system under which the application is executing, which request is associated with a display item; matching at least one parameter of the request to at least one model; modifying an execution of said request in a first non-trivial way responsive to a success of said match, such that the presentation of the display item is modified; and otherwise modifying the execution of said request in a second, default and non-trivial way responsive to a failure of said match, such that the presentation of the display item is modified.
2. A method according to claim 1, wherein said at least one model is designed to match only a single display item of said application.
3. A method according to claim 1, wherein said at least one model is designed to match a plurality of display items of said application.
4. A method according to claim 3, wherein said at least one model is designed to match a specific plurality of display items of said application.
5. A method according to claim 1, wherein said at least one model comprises a designation portion for matching to a display item identification.
6. A method according to claim 5, wherein said designation portion comprises a plurality of fields, each of which defines a limitation on the range of display items which match the model.
7. A method according to claim 6, wherein at least one of said fields may comprise a wild card.
8. A method according to claim 6, wherein said fields define orthogonal limitations.
9. A method according to claim 6, wherein said fields comprise at least a field representing the display item type and a field representing the display item content.
10. A method according to claim 5 wherein said designation portion can selectively match a single or a plurality of display items.
11. A method according to claim 10, wherein said at least one model comprises a pattern.
12. A method according to claim 10, wherein said at least one model is embodied by a function that evaluates the match.
13. A method according to claim 10, wherein said at least one parameter comprises an identification of the display item with which said request is associated.
14. A method according to claim 10, wherein said at least one parameter comprises an environmental variable.
15. A method according to claim 10, wherein said display item comprises an input object.
16. A method according to claim 15, wherein said input object comprises a text input box.
17. A method according to claim 15, wherein said input object comprises a list control.
18. A method according to claim 10, wherein said display item comprises an output object.
19. A method according to claim 18, wherein said output object comprises a text box.
20. A method according to claim 13, wherein said identification comprises at least part of a text sent to said display item when the display item is created.
21. A method according to claim 13, wherein said identification comprises a name of a resource file for generating the display item.
22. A method according to claim 13, wherein said identification comprises a display position of the display item.
23. A method according to claim 13, wherein said identification comprises at least part of a genealogy of said display item.
24. A method according to claim 10, wherein said at least one model is static during an execution of said application.
25. A method according to claim 10, wherein matching to said at least one model changes during an execution of said application.
26. A method according to claim 10, wherein modifying an execution comprises changing a dimension of said display item.
27. A method according to claim 10, wherein modifying an execution comprises translating a text content of said display item into a different language.
28. A method according to claim 27, wherein said translating comprises translating using an application specific dictionary having a vocabulary limited to substantially match said application.
29. A method according to claim 27, wherein said translating comprises translating using a master dictionary having a vocabulary significantly broader than required by said application.
30. A method according to claim 10, wherein modifying an execution comprises changing a font of a text content of said display item.
31. A method according to claim 10, wherein modifying an execution comprises changing a text attribute of a text content of said display item.
32. A method according to claim 10, wherein modifying an execution comprises changing a color property of said display item.
33. A method according to claim 10, wherein modifying an execution comprises changing a bitmap content of said display item.
34. A method according to claim 10, wherein modifying an execution comprises changing a display location of said display item.
35. A method according to claim 10, wherein modifying an execution comprises adding a tool-tip to said display item.
36. A method according to any of claims 10-35, wherein said matching comprises matching against at least two models, wherein one model matches a subset of the display items matched by the other model.
37. A method according to any of claims 10-35, wherein said modifying an execution comprises executing a remote procedure call over a computer network.
38. A method according to any of claims 10-35, wherein said modifying an execution comprises retrieving information over a computer network.
39. A method according to any of claims 10-35, wherein said application comprises a local application having a programmed user interface, which programmed interface is modified.
40. A method according to any of claims 10-35, wherein said application comprises a local application which displays data, which data is modified by said modifying.
41. A method according to any of claims 10-35, wherein said application displays data from a remote source and wherein presentation of said remote data is modified by said modifying.
42. A method according to claim 41, wherein said application comprises a terminal emulator.
43. A method according to claim 41, wherein said application comprises a WWW browser.
44. A method according to claim 41, wherein said modified data comprises a user interface element.
45. A method according to any of claims 10-35, wherein intercepting comprises replacing function pointers in said application.
46. A method according to any of claims 10-35, wherein intercepting comprises hooking using an operating system service.
47. A method according to any of claims 10-35, wherein modifying comprises translating a phrase displayed by said display item.
48. A method according to claim 47, wherein translating a phrase comprises: matching said phrase against one or more patterns, at least one of said patterns including a wild card; replacing portions of said phrase which match said pattern by a previously prepared translations of said portions; and translating portions of said phrase which match said wild card.
49. A method of translating, comprising: translating a display item to show a translated value rather than an original value; and providing said original value to an application which requests a copy of the displayed item, responsive to such a request.
50. A method according to claim 49, wherein providing said original value comprises intercepting a request from an operating system for said value.
51. A method of translating a phrase in real-time by a computer, comprising: matching said phrase against one or more patterns, at least one of said patterns including a wild card; replacing portions of said phrase which match said pattern by a previously prepared translations of said portions; and translating portions of said phrase which match said wild card separately from said replacing.
52. A method according to claim 51, wherein said translating comprises translating using a dictionary.
53. A method of translating an application, comprising: providing an application having at least one function pointer that points to a function for presenting information in a display item; and replacing said function pointer with a new function pointer, to a function that presents a translation of said information.
54. A method according to claim 53, wherein replacing said function pointer comprises replacing said pointer in a function table of said application.
55. A method according to claim 53, wherein replacing said function pointer comprises replacing said pointer in a jump command of said application.
56. A method according to claim 53, wherein replacing said function pointer comprises replacing said pointer in a DLL associated with said application.
PCT/IL1999/000612 1998-11-15 1999-11-15 Software language translation system and method WO2000029964A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU11755/00A AU1175500A (en) 1998-11-15 1999-11-15 Software language translation system and method

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
IL12705398A IL127053A0 (en) 1998-11-15 1998-11-15 Software translation system and method
IL127053 1998-11-15
IL127073 1998-11-16
IL12707398A IL127073A0 (en) 1998-11-15 1998-11-16 Software translation system and method

Publications (1)

Publication Number Publication Date
WO2000029964A1 true WO2000029964A1 (en) 2000-05-25

Family

ID=26323742

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IL1999/000612 WO2000029964A1 (en) 1998-11-15 1999-11-15 Software language translation system and method

Country Status (3)

Country Link
AU (1) AU1175500A (en)
IL (1) IL127073A0 (en)
WO (1) WO2000029964A1 (en)

Cited By (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005050438A1 (en) * 2003-10-31 2005-06-02 Sap Aktiengesellschaft Gathering message information
WO2005093566A1 (en) * 2004-03-22 2005-10-06 Albahith Co. Human interface translator for machines
WO2006033765A3 (en) * 2004-09-15 2006-06-01 Apple Computer Real-time data localization
WO2007063422A2 (en) 2005-12-01 2007-06-07 Exent Technologies, Ltd. System, method and computer program product for dynamically enhancing an application executing on a computing device
US7596536B2 (en) 2005-12-01 2009-09-29 Exent Technologies, Ltd. System, method and computer program product for dynamically measuring properties of objects rendered and/or referenced by an application executing on a computing device
US8629885B2 (en) 2005-12-01 2014-01-14 Exent Technologies, Ltd. System, method and computer program product for dynamically identifying, selecting and extracting graphical and media objects in frames or scenes rendered by a software application
US8892446B2 (en) 2010-01-18 2014-11-18 Apple Inc. Service orchestration for intelligent automated assistant
US9190062B2 (en) 2010-02-25 2015-11-17 Apple Inc. User profiling for voice input processing
US9262612B2 (en) 2011-03-21 2016-02-16 Apple Inc. Device access using voice authentication
US9300784B2 (en) 2013-06-13 2016-03-29 Apple Inc. System and method for emergency calls initiated by voice command
US9330720B2 (en) 2008-01-03 2016-05-03 Apple Inc. Methods and apparatus for altering audio output signals
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US9368114B2 (en) 2013-03-14 2016-06-14 Apple Inc. Context-sensitive handling of interruptions
US9430463B2 (en) 2014-05-30 2016-08-30 Apple Inc. Exemplar-based natural language processing
US9483461B2 (en) 2012-03-06 2016-11-01 Apple Inc. Handling speech synthesis of content for multiple languages
US9495129B2 (en) 2012-06-29 2016-11-15 Apple Inc. Device, method, and user interface for voice-activated navigation and browsing of a document
US9502031B2 (en) 2014-05-27 2016-11-22 Apple Inc. Method for supporting dynamic grammars in WFST-based ASR
US9535906B2 (en) 2008-07-31 2017-01-03 Apple Inc. Mobile device having human language translation capability with positional feedback
US9576574B2 (en) 2012-09-10 2017-02-21 Apple Inc. Context-sensitive handling of interruptions by intelligent digital assistant
US9582608B2 (en) 2013-06-07 2017-02-28 Apple Inc. Unified ranking with entropy-weighted information for phrase-based semantic auto-completion
US9620104B2 (en) 2013-06-07 2017-04-11 Apple Inc. System and method for user-specified pronunciation of words for speech synthesis and recognition
US9620105B2 (en) 2014-05-15 2017-04-11 Apple Inc. Analyzing audio input for efficient speech and music recognition
US9626955B2 (en) 2008-04-05 2017-04-18 Apple Inc. Intelligent text-to-speech conversion
US9633004B2 (en) 2014-05-30 2017-04-25 Apple Inc. Better resolution when referencing to concepts
US9633674B2 (en) 2013-06-07 2017-04-25 Apple Inc. System and method for detecting errors in interactions with a voice-based digital assistant
US9646609B2 (en) 2014-09-30 2017-05-09 Apple Inc. Caching apparatus for serving phonetic pronunciations
US9646614B2 (en) 2000-03-16 2017-05-09 Apple Inc. Fast, language-independent method for user authentication by voice
US9668121B2 (en) 2014-09-30 2017-05-30 Apple Inc. Social reminders
US9697822B1 (en) 2013-03-15 2017-07-04 Apple Inc. System and method for updating an adaptive speech recognition model
US9697820B2 (en) 2015-09-24 2017-07-04 Apple Inc. Unit-selection text-to-speech synthesis using concatenation-sensitive neural networks
US9711141B2 (en) 2014-12-09 2017-07-18 Apple Inc. Disambiguating heteronyms in speech synthesis
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US9721566B2 (en) 2015-03-08 2017-08-01 Apple Inc. Competing devices responding to voice triggers
US9734193B2 (en) 2014-05-30 2017-08-15 Apple Inc. Determining domain salience ranking from ambiguous words in natural speech
US9760559B2 (en) 2014-05-30 2017-09-12 Apple Inc. Predictive text input
US9785630B2 (en) 2014-05-30 2017-10-10 Apple Inc. Text prediction using combined word N-gram and unigram language models
US9798393B2 (en) 2011-08-29 2017-10-24 Apple Inc. Text correction processing
US9818400B2 (en) 2014-09-11 2017-11-14 Apple Inc. Method and apparatus for discovering trending terms in speech requests
US9842105B2 (en) 2015-04-16 2017-12-12 Apple Inc. Parsimonious continuous-space phrase representations for natural language processing
US9842101B2 (en) 2014-05-30 2017-12-12 Apple Inc. Predictive conversion of language input
US9858925B2 (en) 2009-06-05 2018-01-02 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US9865280B2 (en) 2015-03-06 2018-01-09 Apple Inc. Structured dictation using intelligent automated assistants
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US9886432B2 (en) 2014-09-30 2018-02-06 Apple Inc. Parsimonious handling of word inflection via categorical stem + suffix N-gram language models
US9899019B2 (en) 2015-03-18 2018-02-20 Apple Inc. Systems and methods for structured stem and suffix language models
US9922642B2 (en) 2013-03-15 2018-03-20 Apple Inc. Training an at least partial voice command system
US9934775B2 (en) 2016-05-26 2018-04-03 Apple Inc. Unit-selection text-to-speech synthesis based on predicted concatenation parameters
US9953088B2 (en) 2012-05-14 2018-04-24 Apple Inc. Crowd sourcing information to fulfill user requests
US9959870B2 (en) 2008-12-11 2018-05-01 Apple Inc. Speech recognition involving a mobile device
US9966068B2 (en) 2013-06-08 2018-05-08 Apple Inc. Interpreting and acting upon commands that involve sharing information with remote devices
US9966065B2 (en) 2014-05-30 2018-05-08 Apple Inc. Multi-command single utterance input method
US9972304B2 (en) 2016-06-03 2018-05-15 Apple Inc. Privacy preserving distributed evaluation framework for embedded personalized systems
US9971774B2 (en) 2012-09-19 2018-05-15 Apple Inc. Voice-based media searching
US10043516B2 (en) 2016-09-23 2018-08-07 Apple Inc. Intelligent automated assistant
US10049668B2 (en) 2015-12-02 2018-08-14 Apple Inc. Applying neural network language models to weighted finite state transducers for automatic speech recognition
US10049663B2 (en) 2016-06-08 2018-08-14 Apple, Inc. Intelligent automated assistant for media exploration
US10057736B2 (en) 2011-06-03 2018-08-21 Apple Inc. Active transport based notifications
US10067938B2 (en) 2016-06-10 2018-09-04 Apple Inc. Multilingual word prediction
US10074360B2 (en) 2014-09-30 2018-09-11 Apple Inc. Providing an indication of the suitability of speech recognition
US10078631B2 (en) 2014-05-30 2018-09-18 Apple Inc. Entropy-guided text prediction using combined word and character n-gram language models
US10079014B2 (en) 2012-06-08 2018-09-18 Apple Inc. Name recognition system
US10083688B2 (en) 2015-05-27 2018-09-25 Apple Inc. Device voice control for selecting a displayed affordance
US10089072B2 (en) 2016-06-11 2018-10-02 Apple Inc. Intelligent device arbitration and control
US10101822B2 (en) 2015-06-05 2018-10-16 Apple Inc. Language input correction
US10127911B2 (en) 2014-09-30 2018-11-13 Apple Inc. Speaker identification and unsupervised speaker adaptation techniques
US10127220B2 (en) 2015-06-04 2018-11-13 Apple Inc. Language identification from short strings
US10134385B2 (en) 2012-03-02 2018-11-20 Apple Inc. Systems and methods for name pronunciation
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US10176341B2 (en) * 2016-03-18 2019-01-08 Oracle International Corporation Systems and methods for providing data residency protection using remote proxies
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
US10186254B2 (en) 2015-06-07 2019-01-22 Apple Inc. Context-based endpoint detection
US10185542B2 (en) 2013-06-09 2019-01-22 Apple Inc. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
US10192552B2 (en) 2016-06-10 2019-01-29 Apple Inc. Digital assistant providing whispered speech
US10199051B2 (en) 2013-02-07 2019-02-05 Apple Inc. Voice trigger for a digital assistant
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US10241752B2 (en) 2011-09-30 2019-03-26 Apple Inc. Interface for a virtual digital assistant
US10241644B2 (en) 2011-06-03 2019-03-26 Apple Inc. Actionable reminder entries
US10249300B2 (en) 2016-06-06 2019-04-02 Apple Inc. Intelligent list reading
US10255907B2 (en) 2015-06-07 2019-04-09 Apple Inc. Automatic accent detection using acoustic models
US10269345B2 (en) 2016-06-11 2019-04-23 Apple Inc. Intelligent task discovery
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US10283110B2 (en) 2009-07-02 2019-05-07 Apple Inc. Methods and apparatuses for automatic speech recognition
US10289433B2 (en) 2014-05-30 2019-05-14 Apple Inc. Domain specific language for encoding assistant dialog
US10297253B2 (en) 2016-06-11 2019-05-21 Apple Inc. Application integration with a digital assistant
US10318871B2 (en) 2005-09-08 2019-06-11 Apple Inc. Method and apparatus for building an intelligent automated assistant
US10354011B2 (en) 2016-06-09 2019-07-16 Apple Inc. Intelligent automated assistant in a home environment
US10356243B2 (en) 2015-06-05 2019-07-16 Apple Inc. Virtual assistant aided communication with 3rd party service in a communication session
US10366158B2 (en) 2015-09-29 2019-07-30 Apple Inc. Efficient word encoding for recurrent neural network language models
US10410637B2 (en) 2017-05-12 2019-09-10 Apple Inc. User-specific acoustic models
US10446141B2 (en) 2014-08-28 2019-10-15 Apple Inc. Automatic speech recognition based on user feedback
US10446143B2 (en) 2016-03-14 2019-10-15 Apple Inc. Identification of voice inputs providing credentials
US10482874B2 (en) 2017-05-15 2019-11-19 Apple Inc. Hierarchical belief states for digital assistants
US10490187B2 (en) 2016-06-10 2019-11-26 Apple Inc. Digital assistant providing automated status report
US10496753B2 (en) 2010-01-18 2019-12-03 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US10509862B2 (en) 2016-06-10 2019-12-17 Apple Inc. Dynamic phrase expansion of language input
US10521466B2 (en) 2016-06-11 2019-12-31 Apple Inc. Data driven natural language event detection and classification
US10552013B2 (en) 2014-12-02 2020-02-04 Apple Inc. Data detection
US10553209B2 (en) 2010-01-18 2020-02-04 Apple Inc. Systems and methods for hands-free notification summaries
US10567477B2 (en) 2015-03-08 2020-02-18 Apple Inc. Virtual assistant continuity
US10568032B2 (en) 2007-04-03 2020-02-18 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US10593346B2 (en) 2016-12-22 2020-03-17 Apple Inc. Rank-reduced token representation for automatic speech recognition
US10592095B2 (en) 2014-05-23 2020-03-17 Apple Inc. Instantaneous speaking of content on touch devices
US10607140B2 (en) 2010-01-25 2020-03-31 Newvaluexchange Ltd. Apparatuses, methods and systems for a digital conversation management platform
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US10659851B2 (en) 2014-06-30 2020-05-19 Apple Inc. Real-time digital assistant knowledge updates
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US10679605B2 (en) 2010-01-18 2020-06-09 Apple Inc. Hands-free list-reading by intelligent automated assistant
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10705794B2 (en) 2010-01-18 2020-07-07 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US10706373B2 (en) 2011-06-03 2020-07-07 Apple Inc. Performing actions associated with task items that represent tasks to perform
US10733993B2 (en) 2016-06-10 2020-08-04 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10755703B2 (en) 2017-05-11 2020-08-25 Apple Inc. Offline personal assistant
US10762293B2 (en) 2010-12-22 2020-09-01 Apple Inc. Using parts-of-speech tagging and named entity recognition for spelling correction
US10791216B2 (en) 2013-08-06 2020-09-29 Apple Inc. Auto-activating smart responses based on activities from remote devices
US10791176B2 (en) 2017-05-12 2020-09-29 Apple Inc. Synchronization and task delegation of a digital assistant
US10810274B2 (en) 2017-05-15 2020-10-20 Apple Inc. Optimizing dialogue policy decisions for digital assistants using implicit feedback
US11010550B2 (en) 2015-09-29 2021-05-18 Apple Inc. Unified language modeling framework for word prediction, auto-completion and auto-correction
US11025565B2 (en) 2015-06-07 2021-06-01 Apple Inc. Personalized prediction of responses for instant messaging
CN113342437A (en) * 2021-06-10 2021-09-03 网易(杭州)网络有限公司 Software translation method and device
CN113342436A (en) * 2021-06-10 2021-09-03 网易(杭州)网络有限公司 Game translation method and device
US11217255B2 (en) 2017-05-16 2022-01-04 Apple Inc. Far-field extension for digital assistant services
US11587559B2 (en) 2015-09-30 2023-02-21 Apple Inc. Intelligent device identification

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5303150A (en) * 1989-12-15 1994-04-12 Ricoh Company, Ltd. Wild-card word replacement system using a word dictionary
US5434965A (en) * 1992-12-23 1995-07-18 Taligent, Inc. Balloon help system
US5583761A (en) * 1993-10-13 1996-12-10 Kt International, Inc. Method for automatic displaying program presentations in different languages
US5671378A (en) * 1995-03-31 1997-09-23 International Business Machines Corporation Method and system for sizing of graphical user interface objects for localization

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5303150A (en) * 1989-12-15 1994-04-12 Ricoh Company, Ltd. Wild-card word replacement system using a word dictionary
US5434965A (en) * 1992-12-23 1995-07-18 Taligent, Inc. Balloon help system
US5583761A (en) * 1993-10-13 1996-12-10 Kt International, Inc. Method for automatic displaying program presentations in different languages
US5671378A (en) * 1995-03-31 1997-09-23 International Business Machines Corporation Method and system for sizing of graphical user interface objects for localization

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MERRILL C K, SHANOSKI M: "INTERNATIONALIZING ONLINE INFORMATION", PROCEEDINGS OF ANNUAL CONFERENCE ON SYSTEMS DOCUMENTATION., XX, XX, 1 October 1992 (1992-10-01), XX, pages 19 - 25, XP002925442 *

Cited By (175)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9646614B2 (en) 2000-03-16 2017-05-09 Apple Inc. Fast, language-independent method for user authentication by voice
WO2005050438A1 (en) * 2003-10-31 2005-06-02 Sap Aktiengesellschaft Gathering message information
WO2005093566A1 (en) * 2004-03-22 2005-10-06 Albahith Co. Human interface translator for machines
WO2006033765A3 (en) * 2004-09-15 2006-06-01 Apple Computer Real-time data localization
EP2336880A1 (en) * 2004-09-15 2011-06-22 Apple Inc. Real-time data localization
US10318871B2 (en) 2005-09-08 2019-06-11 Apple Inc. Method and apparatus for building an intelligent automated assistant
US7596536B2 (en) 2005-12-01 2009-09-29 Exent Technologies, Ltd. System, method and computer program product for dynamically measuring properties of objects rendered and/or referenced by an application executing on a computing device
KR100968661B1 (en) * 2005-12-01 2010-07-06 익센트 테크노로지, 엘티디. System, method and computer program product for dynamically enhancing an application executing on a computing device
US7596540B2 (en) 2005-12-01 2009-09-29 Exent Technologies, Ltd. System, method and computer program product for dynamically enhancing an application executing on a computing device
US8060460B2 (en) 2005-12-01 2011-11-15 Exent Technologies, Ltd. System, method and computer program product for dynamically measuring properties of objects rendered and/or referenced by an application executing on a computing device
US8069136B2 (en) 2005-12-01 2011-11-29 Exent Technologies, Ltd. System, method and computer program product for dynamically enhancing an application executing on a computing device
US8629885B2 (en) 2005-12-01 2014-01-14 Exent Technologies, Ltd. System, method and computer program product for dynamically identifying, selecting and extracting graphical and media objects in frames or scenes rendered by a software application
WO2007063422A3 (en) * 2005-12-01 2007-11-08 Exent Technologies Ltd System, method and computer program product for dynamically enhancing an application executing on a computing device
WO2007063422A2 (en) 2005-12-01 2007-06-07 Exent Technologies, Ltd. System, method and computer program product for dynamically enhancing an application executing on a computing device
US8930191B2 (en) 2006-09-08 2015-01-06 Apple Inc. Paraphrasing of user requests and results by automated digital assistant
US9117447B2 (en) 2006-09-08 2015-08-25 Apple Inc. Using event alert text as input to an automated assistant
US8942986B2 (en) 2006-09-08 2015-01-27 Apple Inc. Determining user intent based on ontologies of domains
US10568032B2 (en) 2007-04-03 2020-02-18 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US10381016B2 (en) 2008-01-03 2019-08-13 Apple Inc. Methods and apparatus for altering audio output signals
US9330720B2 (en) 2008-01-03 2016-05-03 Apple Inc. Methods and apparatus for altering audio output signals
US9865248B2 (en) 2008-04-05 2018-01-09 Apple Inc. Intelligent text-to-speech conversion
US9626955B2 (en) 2008-04-05 2017-04-18 Apple Inc. Intelligent text-to-speech conversion
US10108612B2 (en) 2008-07-31 2018-10-23 Apple Inc. Mobile device having human language translation capability with positional feedback
US9535906B2 (en) 2008-07-31 2017-01-03 Apple Inc. Mobile device having human language translation capability with positional feedback
US9959870B2 (en) 2008-12-11 2018-05-01 Apple Inc. Speech recognition involving a mobile device
US10795541B2 (en) 2009-06-05 2020-10-06 Apple Inc. Intelligent organization of tasks items
US10475446B2 (en) 2009-06-05 2019-11-12 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US9858925B2 (en) 2009-06-05 2018-01-02 Apple Inc. Using context information to facilitate processing of commands in a virtual assistant
US11080012B2 (en) 2009-06-05 2021-08-03 Apple Inc. Interface for a virtual digital assistant
US10283110B2 (en) 2009-07-02 2019-05-07 Apple Inc. Methods and apparatuses for automatic speech recognition
US8892446B2 (en) 2010-01-18 2014-11-18 Apple Inc. Service orchestration for intelligent automated assistant
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
US10553209B2 (en) 2010-01-18 2020-02-04 Apple Inc. Systems and methods for hands-free notification summaries
US10705794B2 (en) 2010-01-18 2020-07-07 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US9548050B2 (en) 2010-01-18 2017-01-17 Apple Inc. Intelligent automated assistant
US10706841B2 (en) 2010-01-18 2020-07-07 Apple Inc. Task flow identification based on user intent
US10679605B2 (en) 2010-01-18 2020-06-09 Apple Inc. Hands-free list-reading by intelligent automated assistant
US8903716B2 (en) 2010-01-18 2014-12-02 Apple Inc. Personalized vocabulary for digital assistant
US11423886B2 (en) 2010-01-18 2022-08-23 Apple Inc. Task flow identification based on user intent
US10496753B2 (en) 2010-01-18 2019-12-03 Apple Inc. Automatically adapting user interfaces for hands-free interaction
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
US10607141B2 (en) 2010-01-25 2020-03-31 Newvaluexchange Ltd. Apparatuses, methods and systems for a digital conversation management platform
US11410053B2 (en) 2010-01-25 2022-08-09 Newvaluexchange Ltd. Apparatuses, methods and systems for a digital conversation management platform
US10984327B2 (en) 2010-01-25 2021-04-20 New Valuexchange Ltd. Apparatuses, methods and systems for a digital conversation management platform
US10984326B2 (en) 2010-01-25 2021-04-20 Newvaluexchange Ltd. Apparatuses, methods and systems for a digital conversation management platform
US10607140B2 (en) 2010-01-25 2020-03-31 Newvaluexchange Ltd. Apparatuses, methods and systems for a digital conversation management platform
US9190062B2 (en) 2010-02-25 2015-11-17 Apple Inc. User profiling for voice input processing
US9633660B2 (en) 2010-02-25 2017-04-25 Apple Inc. User profiling for voice input processing
US10049675B2 (en) 2010-02-25 2018-08-14 Apple Inc. User profiling for voice input processing
US10762293B2 (en) 2010-12-22 2020-09-01 Apple Inc. Using parts-of-speech tagging and named entity recognition for spelling correction
US10102359B2 (en) 2011-03-21 2018-10-16 Apple Inc. Device access using voice authentication
US9262612B2 (en) 2011-03-21 2016-02-16 Apple Inc. Device access using voice authentication
US10706373B2 (en) 2011-06-03 2020-07-07 Apple Inc. Performing actions associated with task items that represent tasks to perform
US11120372B2 (en) 2011-06-03 2021-09-14 Apple Inc. Performing actions associated with task items that represent tasks to perform
US10057736B2 (en) 2011-06-03 2018-08-21 Apple Inc. Active transport based notifications
US10241644B2 (en) 2011-06-03 2019-03-26 Apple Inc. Actionable reminder entries
US9798393B2 (en) 2011-08-29 2017-10-24 Apple Inc. Text correction processing
US10241752B2 (en) 2011-09-30 2019-03-26 Apple Inc. Interface for a virtual digital assistant
US10134385B2 (en) 2012-03-02 2018-11-20 Apple Inc. Systems and methods for name pronunciation
US9483461B2 (en) 2012-03-06 2016-11-01 Apple Inc. Handling speech synthesis of content for multiple languages
US9953088B2 (en) 2012-05-14 2018-04-24 Apple Inc. Crowd sourcing information to fulfill user requests
US10079014B2 (en) 2012-06-08 2018-09-18 Apple Inc. Name recognition system
US9495129B2 (en) 2012-06-29 2016-11-15 Apple Inc. Device, method, and user interface for voice-activated navigation and browsing of a document
US9576574B2 (en) 2012-09-10 2017-02-21 Apple Inc. Context-sensitive handling of interruptions by intelligent digital assistant
US9971774B2 (en) 2012-09-19 2018-05-15 Apple Inc. Voice-based media searching
US10199051B2 (en) 2013-02-07 2019-02-05 Apple Inc. Voice trigger for a digital assistant
US10978090B2 (en) 2013-02-07 2021-04-13 Apple Inc. Voice trigger for a digital assistant
US10652394B2 (en) 2013-03-14 2020-05-12 Apple Inc. System and method for processing voicemail
US9368114B2 (en) 2013-03-14 2016-06-14 Apple Inc. Context-sensitive handling of interruptions
US11388291B2 (en) 2013-03-14 2022-07-12 Apple Inc. System and method for processing voicemail
US9922642B2 (en) 2013-03-15 2018-03-20 Apple Inc. Training an at least partial voice command system
US9697822B1 (en) 2013-03-15 2017-07-04 Apple Inc. System and method for updating an adaptive speech recognition model
US9620104B2 (en) 2013-06-07 2017-04-11 Apple Inc. System and method for user-specified pronunciation of words for speech synthesis and recognition
US9966060B2 (en) 2013-06-07 2018-05-08 Apple Inc. System and method for user-specified pronunciation of words for speech synthesis and recognition
US9582608B2 (en) 2013-06-07 2017-02-28 Apple Inc. Unified ranking with entropy-weighted information for phrase-based semantic auto-completion
US9633674B2 (en) 2013-06-07 2017-04-25 Apple Inc. System and method for detecting errors in interactions with a voice-based digital assistant
US9966068B2 (en) 2013-06-08 2018-05-08 Apple Inc. Interpreting and acting upon commands that involve sharing information with remote devices
US10657961B2 (en) 2013-06-08 2020-05-19 Apple Inc. Interpreting and acting upon commands that involve sharing information with remote devices
US10185542B2 (en) 2013-06-09 2019-01-22 Apple Inc. Device, method, and graphical user interface for enabling conversation persistence across two or more instances of a digital assistant
US10176167B2 (en) 2013-06-09 2019-01-08 Apple Inc. System and method for inferring user intent from speech inputs
US9300784B2 (en) 2013-06-13 2016-03-29 Apple Inc. System and method for emergency calls initiated by voice command
US10791216B2 (en) 2013-08-06 2020-09-29 Apple Inc. Auto-activating smart responses based on activities from remote devices
US9620105B2 (en) 2014-05-15 2017-04-11 Apple Inc. Analyzing audio input for efficient speech and music recognition
US10592095B2 (en) 2014-05-23 2020-03-17 Apple Inc. Instantaneous speaking of content on touch devices
US9502031B2 (en) 2014-05-27 2016-11-22 Apple Inc. Method for supporting dynamic grammars in WFST-based ASR
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US9430463B2 (en) 2014-05-30 2016-08-30 Apple Inc. Exemplar-based natural language processing
US9842101B2 (en) 2014-05-30 2017-12-12 Apple Inc. Predictive conversion of language input
US10169329B2 (en) 2014-05-30 2019-01-01 Apple Inc. Exemplar-based natural language processing
US9785630B2 (en) 2014-05-30 2017-10-10 Apple Inc. Text prediction using combined word N-gram and unigram language models
US9633004B2 (en) 2014-05-30 2017-04-25 Apple Inc. Better resolution when referencing to concepts
US11257504B2 (en) 2014-05-30 2022-02-22 Apple Inc. Intelligent assistant for home automation
US9760559B2 (en) 2014-05-30 2017-09-12 Apple Inc. Predictive text input
US10289433B2 (en) 2014-05-30 2019-05-14 Apple Inc. Domain specific language for encoding assistant dialog
US10083690B2 (en) 2014-05-30 2018-09-25 Apple Inc. Better resolution when referencing to concepts
US9966065B2 (en) 2014-05-30 2018-05-08 Apple Inc. Multi-command single utterance input method
US9734193B2 (en) 2014-05-30 2017-08-15 Apple Inc. Determining domain salience ranking from ambiguous words in natural speech
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US10078631B2 (en) 2014-05-30 2018-09-18 Apple Inc. Entropy-guided text prediction using combined word and character n-gram language models
US11133008B2 (en) 2014-05-30 2021-09-28 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US10497365B2 (en) 2014-05-30 2019-12-03 Apple Inc. Multi-command single utterance input method
US9668024B2 (en) 2014-06-30 2017-05-30 Apple Inc. Intelligent automated assistant for TV user interactions
US10904611B2 (en) 2014-06-30 2021-01-26 Apple Inc. Intelligent automated assistant for TV user interactions
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US10659851B2 (en) 2014-06-30 2020-05-19 Apple Inc. Real-time digital assistant knowledge updates
US10446141B2 (en) 2014-08-28 2019-10-15 Apple Inc. Automatic speech recognition based on user feedback
US10431204B2 (en) 2014-09-11 2019-10-01 Apple Inc. Method and apparatus for discovering trending terms in speech requests
US9818400B2 (en) 2014-09-11 2017-11-14 Apple Inc. Method and apparatus for discovering trending terms in speech requests
US10127911B2 (en) 2014-09-30 2018-11-13 Apple Inc. Speaker identification and unsupervised speaker adaptation techniques
US9886432B2 (en) 2014-09-30 2018-02-06 Apple Inc. Parsimonious handling of word inflection via categorical stem + suffix N-gram language models
US9986419B2 (en) 2014-09-30 2018-05-29 Apple Inc. Social reminders
US10074360B2 (en) 2014-09-30 2018-09-11 Apple Inc. Providing an indication of the suitability of speech recognition
US9668121B2 (en) 2014-09-30 2017-05-30 Apple Inc. Social reminders
US9646609B2 (en) 2014-09-30 2017-05-09 Apple Inc. Caching apparatus for serving phonetic pronunciations
US10552013B2 (en) 2014-12-02 2020-02-04 Apple Inc. Data detection
US11556230B2 (en) 2014-12-02 2023-01-17 Apple Inc. Data detection
US9711141B2 (en) 2014-12-09 2017-07-18 Apple Inc. Disambiguating heteronyms in speech synthesis
US9865280B2 (en) 2015-03-06 2018-01-09 Apple Inc. Structured dictation using intelligent automated assistants
US10567477B2 (en) 2015-03-08 2020-02-18 Apple Inc. Virtual assistant continuity
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US9721566B2 (en) 2015-03-08 2017-08-01 Apple Inc. Competing devices responding to voice triggers
US10311871B2 (en) 2015-03-08 2019-06-04 Apple Inc. Competing devices responding to voice triggers
US11087759B2 (en) 2015-03-08 2021-08-10 Apple Inc. Virtual assistant activation
US9899019B2 (en) 2015-03-18 2018-02-20 Apple Inc. Systems and methods for structured stem and suffix language models
US9842105B2 (en) 2015-04-16 2017-12-12 Apple Inc. Parsimonious continuous-space phrase representations for natural language processing
US10083688B2 (en) 2015-05-27 2018-09-25 Apple Inc. Device voice control for selecting a displayed affordance
US10127220B2 (en) 2015-06-04 2018-11-13 Apple Inc. Language identification from short strings
US10356243B2 (en) 2015-06-05 2019-07-16 Apple Inc. Virtual assistant aided communication with 3rd party service in a communication session
US10101822B2 (en) 2015-06-05 2018-10-16 Apple Inc. Language input correction
US10186254B2 (en) 2015-06-07 2019-01-22 Apple Inc. Context-based endpoint detection
US10255907B2 (en) 2015-06-07 2019-04-09 Apple Inc. Automatic accent detection using acoustic models
US11025565B2 (en) 2015-06-07 2021-06-01 Apple Inc. Personalized prediction of responses for instant messaging
US11500672B2 (en) 2015-09-08 2022-11-15 Apple Inc. Distributed personal assistant
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10671428B2 (en) 2015-09-08 2020-06-02 Apple Inc. Distributed personal assistant
US9697820B2 (en) 2015-09-24 2017-07-04 Apple Inc. Unit-selection text-to-speech synthesis using concatenation-sensitive neural networks
US11010550B2 (en) 2015-09-29 2021-05-18 Apple Inc. Unified language modeling framework for word prediction, auto-completion and auto-correction
US10366158B2 (en) 2015-09-29 2019-07-30 Apple Inc. Efficient word encoding for recurrent neural network language models
US11587559B2 (en) 2015-09-30 2023-02-21 Apple Inc. Intelligent device identification
US11526368B2 (en) 2015-11-06 2022-12-13 Apple Inc. Intelligent automated assistant in a messaging environment
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
US10049668B2 (en) 2015-12-02 2018-08-14 Apple Inc. Applying neural network language models to weighted finite state transducers for automatic speech recognition
US10223066B2 (en) 2015-12-23 2019-03-05 Apple Inc. Proactive assistance based on dialog communication between devices
US10446143B2 (en) 2016-03-14 2019-10-15 Apple Inc. Identification of voice inputs providing credentials
US10176341B2 (en) * 2016-03-18 2019-01-08 Oracle International Corporation Systems and methods for providing data residency protection using remote proxies
US9934775B2 (en) 2016-05-26 2018-04-03 Apple Inc. Unit-selection text-to-speech synthesis based on predicted concatenation parameters
US9972304B2 (en) 2016-06-03 2018-05-15 Apple Inc. Privacy preserving distributed evaluation framework for embedded personalized systems
US10249300B2 (en) 2016-06-06 2019-04-02 Apple Inc. Intelligent list reading
US10049663B2 (en) 2016-06-08 2018-08-14 Apple, Inc. Intelligent automated assistant for media exploration
US11069347B2 (en) 2016-06-08 2021-07-20 Apple Inc. Intelligent automated assistant for media exploration
US10354011B2 (en) 2016-06-09 2019-07-16 Apple Inc. Intelligent automated assistant in a home environment
US10490187B2 (en) 2016-06-10 2019-11-26 Apple Inc. Digital assistant providing automated status report
US10733993B2 (en) 2016-06-10 2020-08-04 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US10509862B2 (en) 2016-06-10 2019-12-17 Apple Inc. Dynamic phrase expansion of language input
US10192552B2 (en) 2016-06-10 2019-01-29 Apple Inc. Digital assistant providing whispered speech
US11037565B2 (en) 2016-06-10 2021-06-15 Apple Inc. Intelligent digital assistant in a multi-tasking environment
US10067938B2 (en) 2016-06-10 2018-09-04 Apple Inc. Multilingual word prediction
US10521466B2 (en) 2016-06-11 2019-12-31 Apple Inc. Data driven natural language event detection and classification
US10297253B2 (en) 2016-06-11 2019-05-21 Apple Inc. Application integration with a digital assistant
US11152002B2 (en) 2016-06-11 2021-10-19 Apple Inc. Application integration with a digital assistant
US10269345B2 (en) 2016-06-11 2019-04-23 Apple Inc. Intelligent task discovery
US10089072B2 (en) 2016-06-11 2018-10-02 Apple Inc. Intelligent device arbitration and control
US10553215B2 (en) 2016-09-23 2020-02-04 Apple Inc. Intelligent automated assistant
US10043516B2 (en) 2016-09-23 2018-08-07 Apple Inc. Intelligent automated assistant
US10593346B2 (en) 2016-12-22 2020-03-17 Apple Inc. Rank-reduced token representation for automatic speech recognition
US10755703B2 (en) 2017-05-11 2020-08-25 Apple Inc. Offline personal assistant
US11405466B2 (en) 2017-05-12 2022-08-02 Apple Inc. Synchronization and task delegation of a digital assistant
US10791176B2 (en) 2017-05-12 2020-09-29 Apple Inc. Synchronization and task delegation of a digital assistant
US10410637B2 (en) 2017-05-12 2019-09-10 Apple Inc. User-specific acoustic models
US10482874B2 (en) 2017-05-15 2019-11-19 Apple Inc. Hierarchical belief states for digital assistants
US10810274B2 (en) 2017-05-15 2020-10-20 Apple Inc. Optimizing dialogue policy decisions for digital assistants using implicit feedback
US11217255B2 (en) 2017-05-16 2022-01-04 Apple Inc. Far-field extension for digital assistant services
CN113342436A (en) * 2021-06-10 2021-09-03 网易(杭州)网络有限公司 Game translation method and device
CN113342437A (en) * 2021-06-10 2021-09-03 网易(杭州)网络有限公司 Software translation method and device
CN113342436B (en) * 2021-06-10 2023-03-17 网易(杭州)网络有限公司 Game translation method and device

Also Published As

Publication number Publication date
IL127073A0 (en) 1999-09-22
AU1175500A (en) 2000-06-05

Similar Documents

Publication Publication Date Title
WO2000029964A1 (en) Software language translation system and method
Esselink A practical guide to localization
US7882441B2 (en) Apparatus for interoperation between legacy software and screen reader programs
US7340673B2 (en) System and method for browser document editing
US7284199B2 (en) Process of localizing objects in markup language documents
JP3841991B2 (en) Method, apparatus and computer program for changing display of multi-field character string
US7324993B2 (en) Method and system for converting and plugging user interface terms
US7398214B2 (en) Method for translating slide presentations into different languages
US20040128614A1 (en) Real time internationalization of web pages with embedded server-side code
US20050246653A1 (en) Providing accessibility compliance within advanced componentry
CN101183355A (en) Program, copy and paste processing method, apparatus, and storage medium
US20110144972A1 (en) Method and System for Generating a Localized Software Product
US9817811B2 (en) Web server system, dictionary system, dictionary call method, screen control display method, and demonstration application generation method
JP4594726B2 (en) Browser-independent popup window
JPH1083289A (en) Programming aid
US8037407B2 (en) Method and computer system for creating and processing a browser compliant human interface description
Carey Creating global software: a conspectus and review
Brooks Guide to HTML, JavaScript and PHP: for scientists and engineers
US8225217B2 (en) Method and system for displaying information on a user interface
JPH1125091A (en) Document summary preparation supporting device and computer-readable recording medium for functioning computer as the device
Lambert et al. Microsoft Office Word 2007 Step by Step
Karande et al. Framework for Web Application Internationalization and Localization Supporting Indian Languages
Mueller RibbonX for Dummies
JPH04230532A (en) Method for controlling transaltion from source language of information on display screen to object language
use LATEX Introduction to LATEX

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref country code: AU

Ref document number: 2000 11755

Kind code of ref document: A

Format of ref document f/p: F

AK Designated states

Kind code of ref document: A1

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CR CU CZ DE DK DM EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase