IP Library Granted Patent US 8,473,276
Granted Patent B2
US 8,473,276 · App. 12/033,697 · Granted Jun 25, 2013

Universal language input

Inventors: Jiang Qian (Pittsburgh, PA); Lei Zhang (Beijing, CN)
Assignee: Google Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,473,276
App. No.
12/033,697
Granted
Jun 25, 2013
Kind
B2
Abstract

Systems, methods, and apparatuses including computer program products for universal language input are provided. In one implementation, a method is provided. The method includes using a first application or operating system component to detect user input to an application interface of a second application. The method also includes, as input is detected in the application interface, automatically using the first application to provide one or more translations of the input including, sending the input to a translation model, receiving translated input from the translation model, and sending the translated input to the application interface of the second application.

Claims (32)

1. A computer-implemented method, comprising:

automatically detecting, at a computing system including one or more processors, input by a user to a first application executing on the computing system, the input consisting of text to be translated from a source language to a target language that is different than the source language;

intercepting, at the computing system, the input to the first application in response to automatically detecting the input;

redirecting, at the computing system, the input to a second application executing on the computing system, the second application being different than the first application;

generating, at the computing system, one or more potential translations of the input using the second application, each of the one or more potential translations of the input being of the target language;

determining, at the computing system, one of the one or more potential translations of the input to obtain a translated input; and

providing, at the computing system, the translated input to the first application,

wherein intercepting the input to the first application includes intercepting a call via an interface, the interface being between the first application and an operating system of the computing system, the call being one of a system call and an application programming interface (API) call,

wherein intercepting the call from the first application to the operating system further includes:

applying, at the computing system, a hook to the interface between the first application and the operating system, and

determining, at the computing system, the call by monitoring the interface between the first application and the operating system using the hook,

wherein applying the hook to the interface between the first application and the operating system further includes registering, at the computing system, an address of the hook as an event handler,

wherein providing the translated input to the first application further includes:

unregistering, at the computing system, the address of the hook as an event handler by calling an original event handler, and

transmitting, at the computing system, the translated input to the original handler, wherein the original event handler is configured to transmit the translated input to an application interface of the first application, and

wherein unregistering the address of the hook is performed when the user manually disables the first application or when the user changes their focus to a different application, and further comprising re-registering, at the computing system, the address of the hook as an event handler when the address of the hook has been unregistered and the user changes their focus back to the first application.

2. A computing system comprising one or more processors and a user interface, the one or more processors configured to execute a method of:

automatically detecting input by a user via the user interface to a first application executing on the computing system, the input consisting of text to be translated from a source language to a target language that is different than the source language;

intercepting the input in response to automatically detecting the input;

redirecting the input to a second application executing on the computing system, the second application being different than the first application;

generating one or more potential translations of the input using the second application, each of the one or more potential translations of the input being of the target language;

determining one of the one or more potential translations to obtain a translated input; and

providing the translated input to the first application,

wherein intercepting the input to the first application includes intercepting a call via an interface, the interface being between the first application and an operating system of the computing system, the call being one of a system call and an application programming interface (API) call,

wherein intercepting the call from the first application to the operating system further includes:

applying a hook to the interface between the first application and the operating system, and

determining the call by monitoring the interface between the first application and the operating system using the hook,

wherein applying the hook to the interface between the first application and the operating system further includes registering an address of the hook as an event handler,

wherein providing the translated input to the first application further includes:

unregistering the address of the hook as an event handler by calling an original event handler, and

transmitting the translated input to the original handler, wherein the original event handler is configured to transmit the translated input to an application interface of the first application, and

wherein unregistering the address of the hook is performed when the user manually disables the first application or when the user changes their focus to a different application, and further comprising re-registering, at the computing system, the address of the hook as an event handler when the address of the hook has been unregistered and the user changes their focus back to the first application.

Assignments (2)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044101/0299 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 10, 2008
From: QIAN, JIANG; ZHANG, LEI
To: GOOGLE INC.
Reel/Frame 020625/0435 →
Continuity (1)
Related Publication 20090210214A1 · Aug 20, 2009