There are shown in the drawings, embodiments which are presently preferred, it being understood, however, that the invention is not limited to the precise arrangements and instrumentalities shown.
When executing, the application code 110 can issue font rendering requests 130 for application prompts that contain text. An application prompt can be an interface object or widget that is rendered and displayed to a user. Application prompts can include, for example, menu text, popup text, textual labels, help text, text appearing within drop down lists, user entered textual content displayed in text boxes, tables including text, and the like. Generally, an application prompt can be any displayable object or collection of displayable objects that include text.
It should be noted briefly that most conventional software applications permit configurable adjustments for different fonts and font sizes. These applications send font rendering requests directly to a widget library 125, which is often a dynamic link library (DLL) accessed via an application program interface (API). The widget library 125 produces renderable widgets or objects that contain text rendered in accordance with previously established settings. These settings can include a user established font size, type, and color scheme, for example.
System 100 uses interceptor 115 to intercept the font rendering requests 130 before those requests are sent to the widget library 125 for processing. The font rendering request 130 can be any request associated text that is to be rendered. The interceptor 115 can identify an original language for the text of the font rendering request 130. This original language can be compared against a user desired language, which can be established by configurable parameters, such as those entered using configuration interface 140.
When the original language is a desired language, the interceptor 115 can route the font rendering request 131 directly to the widget library 125. Otherwise, the interceptor 115 can determine whether the desired language is natively supported by the software application. That is, many software applications have been internationalized so that they support multiple languages through language specific language packages. If a language package exists for the desired language, it is used. When no native support is available for the desired language, the interceptor can generate a translation request 132, which is sent to the translation engine 120. The translation request 132 can include the original text segment, an indicator of the desired language, and an optional indicator of the original language. When the original language is not specified in the translation request 132, the original language can be automatically determined by the translation engine 120.
The translation engine 120 can dynamically perform translations from the original language to the desired language. The translation engine 120 can be a software component implemented independent of the software application associated with the application code 110. The translation engine 120 can be software local to computing device 105 and/or can be remotely located software accessed via a network connection (not shown). A solution utilizing both local and remote translation engines 120 can be implemented to permit limited dynamic translations when no network connection is available and to permit more robust or accurate translations using a remote engine 120 when a network connection is present. The translation engine 120 can convey translated text 136 to widget library 125 for processing. Widget library 125 can generate a translated widget 138, which includes the translated text instead of the original text.
The configuration interface 140 can permit a user to establish language settings for one or more applications, including the application associated with application code 110. The interface 140 can include a language setting 142, threshold setting 144, translation settings 146, and the like. The language setting 142 can specify a desired language into which application prompts or textual objects are to be translated. For example, the language setting 142 can specify the Spanish language, which may not be natively supported for all applications residing upon the computing device 105 to which the setting 142 applies.
When dynamic translations are to be performed, translation accuracy can vary. The accuracy threshold setting 144 can establish a minimum accuracy that is required before translations are to be performed. For example, if the translation engine 120 estimates a translation accuracy of sixty percent and the setting 144 is set at seventy percent, no dynamic translations will occur. If the estimated translation accuracy exceeds the accuracy threshold setting 144, dynamic translations can be performed.
The translation settings 146 can establish setting for the scope of dynamic translations. For example, translation settings 146 can indicate all applications of the computing device 105 are to be translated into the language indicated by setting 142; Other selectable options can limit translations to a definable set of applications to specific user-designated applications. For instance, all internationalized software applications can be selected, all applications other than games can be selected, a specific application can be selected, and the like. The translation settings 146 can also specify groups of application prompts that are to be translated and groups that are not to be translated. For example, setting 146 can specify that menu prompts, textual popups, and fly over text are to be translated, but that help items are not to be translated.
It should be appreciated that the settings 142-146 shown in interface 140 are for illustrative purposes only and the invention is not to be construed as limited in this regard. Other settings or alternative configuration options are able to be utilized in system 100. For example, a configurable responsiveness setting (not shown) can be established which only performs dynamic translations (assuming the translation engine 120 is remotely located) when relatively low transmission delays exist when conveying data between the computing device 105 and the translation engine 120. In another example, the accuracy thresholds can be established at a lower granularity level, such as different thresholds for different categories of application prompts (e.g., menu items, selections lists, textual labels, and the like).
Interface 210 can include application prompts 212-218 originally in English. The application prompts 212-218 can include a title prompt 212, a menu prompt 213, a flyover prompt 214, a textual prompt 215, a presented content item 216, a popup item 217, a textual prompt 218, and the like. Interface 230 can include analogous prompts 232-238, which are presented in Spanish. For example, a title prompt 212 of “Application” can be dynamically translated into “Uso” of title prompt 232. In another example, textual prompt 215 of “Type Here” can be dynamically translated into “Tipo Aqui” of textual prompt 235.
One optional feature of the invention can present original text in interface 230 to mitigate against mistranslation errors. For example, a tool tip can be provided for each translated item, which includes the original text. In
In step 305 of chart 300, an application can issue one or more widget text rendering request. The request can, for example, be sent to a Widget API. In step 310, an automatic translation layer of a computing system can intercept the requests. In step 315, an original language and a desired language for text associated with the widget request can be determined. The original language can be a default language in which application prompts are written, before translations are provided. A desired language can be established in many different ways. For example, a desired language can be explicitly established by a user setting.
In another example, a desired language can be inferred based upon a location or locale of a computing device upon which results of a software application are displayed. Using a locale can be particularly advantageous for Web based applications that are delivered to many different computing devices in many different countries. For instance, when a computing device is located in Japan, a desired language inferred from a locale of the device can be Japanese. When a computing device is located in France, a desired language inferred from the locale can be French. Inferred languages based upon locale can be overwritten by explicit user selection of a desired language.
When step 315 determines that the original language (default language) and the desired language (locale inferred language) are the same, processing can progress to step 350, where the widget can be rendered. Otherwise, the method can progress from step 315 to step 320, where a determination can be made as to whether an internationalization layer exists for the application that supports the desired language. If so, a language pack associated with the desired language can be utilized for the application. This causes the widget, in step 325, to be statically adjusted for the desired language. After the conversion, step 350 can be implemented, where the widget is rendered.
In step 330, which occurs when no native support for the desired language exists, a translation accuracy threshold can be determined. When an estimated accuracy for dynamic translation unfavorably compares to the threshold, the method can progress to step 350, where the widget can be rendered with text still in the original language. When the estimated accuracy favorably compares to the threshold in step 330, step 335 can execute, where the widget including the original text can be sent to a translation engine. In step 340, the original text can be translated into the desired language. In optional step 345, the original text that has been translated can be added to a widget tooltip to mitigate against mistranslation errors. Step 350 can then execute, where the dynamically translated widget is rendered.
The computing device 405 can present a graphical user interface (GUI) 410 generated from application code 412 of an associated software application. An option can be provided to present text of the GUI 410 in multiple languages, which includes languages not natively supported by the computing device 405. When using a default language, switch 416 can be set to route font rendering requests directly to widget library 414. The widget library 414 can generate widgets, application prompts, and/or graphical objects that are displayed within GUI 410.
When a language other than a default is desired, the switch 416 can route font rendering requests to language engine 418. Language engine 418 can search a data store 422 that contains languages locally (or natively) supported by the software application to see if support for the desired language is available. If so, a language package associated with the desired language can be utilized. When native support is lacking, the language engine 418 can send a language request to a dynamic translation interface 420. The dynamic translation interface 420 can be an API that interacts with dynamic translation engine 440.
The dynamic translation engine 440 can be a translation engine having an ability to dynamically translate text from one language to another. In one embodiment, engine 440 can be the WEBSHPERE Translation Server's Machine Translation engine produced by International Business Machines Corporation (IBM) of Armonk, N.Y.. Translated text in the desired language can be conveyed from engine 440 over network 430 to interface 420. The translated text can be ultimately conveyed to widget library 414, which renders a graphical object including the translated text for display within GUI 410.
System 400 can implement numerous options for minimizing dynamic translation delays and for improving translation accuracy. For example, computing device 405 can include a dynamic language cache 424 that caches text translated by dynamic translation engine 440. When cache 424 includes a translation for a particular text segment, that translation can be used and a new call to engine 440 is unnecessary. Moreover, cache 424 can pre-fetch translations for text contained in application prompts of a software application, such as menu prompts and textual prompts, before font rendering requests associated with the pre-fetches are made.
In another embodiment, system 400 can permit a user to override a dynamic translation provided for an original text with a user specified translation. User specified translations can be stored in a data store 444 accessible by engine 440. When future translation requests are sent to engine 440, the user specified translation can be used instead of a dynamic translation. This extension permits a training loop to be established for the translation engine 440. Because a majority of application prompts (e.g., menu text, toolbar text, and the like) are used relatively consistently across multiple applications, use of a training loop that permits user feedback to improve accuracy can rapidly increase the accuracy of application prompts generated by engine 440.
In one configuration, user specified translations can be used in a user specific and/or application specific fashion. In another configuration, user provided translations can be selectively used for other applications and/or for other users whenever a translation accuracy for original text falls below a configured threshold, such as ninety percent, and/or whenever a confidence level associated with the manual translation is sufficiently high. When multiple users provide the same manually specified translation for the same original text, a confidence level for the user-specified translation can be increased.
Network 430 can include any hardware/software/and firmware necessary to convey digital content encoded within carrier waves. Content can be contained within analog or digital signals and conveyed through data or voice channels. The network 430 can include local components and data pathways necessary for communications to be exchanged among computing device components and between integrated device components and peripheral devices. The network 430 can also include network equipment, such as routers, data lines, hubs, and intermediary servers which together form a packet-based network, such as the Internet or an intranet. The network 430 can further include circuit-based communication components and mobile communication components, such as telephony switches, modems, cellular communication towers, and the like. The network 430 can include line based and/or wireless communication pathways.
Data stores 414, 422, 424, and 444 can be a physical or virtual storage spaces configured to store digital content. Each of the data stores 414, 422, 424, and 444 can be physically implemented within any type of hardware including, but not limited to, a magnetic disk, an optical disk, a semiconductor memory, a digitally encoded plastic memory, a holographic memory, or any other recording medium. Further, each data store 414, 422, 424, and 444 can be a stand-alone storage unit as well as a storage unit formed from a plurality of physical devices. Additionally, content can be stored within data stores 414, 422, 424, and 444 in a variety of manners. For example, content can be stored within a relational database structure or can be stored within one or more files of a file storage system, where each file may or may not be indexed for information searching purposes. Further, the data stores 414, 422, 424, and 444 can utilize one or more encryption mechanisms to protect stored content from unauthorized access.
The present invention may be realized in hardware, software, or a combination of hardware and software. The present invention may be realized in a centralized fashion in one computer system or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware and software may be a general purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
The present invention also may be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context means any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form.
This invention may be embodied in other forms without departing from the spirit or essential attributes thereof. Accordingly, reference should be made to the following claims, rather than to the foregoing specification, as indicating the scope of the invention.