# US 8,789,015 B2 · Integrated application localization

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,789,015 B2
- Document ID: US8789015B2
- Status: Granted
- Kind: B2
- Application number: 13/403,822
- Filed: 2012-02-23
- Published: 2013-08-29
- Granted: 2014-07-22
- Earliest claimed: 2012-02-23
- Assignees: Microsoft Corporation
- Applicants: Cameron B. Lerum; Jan Anders Nelson; Alessandro de Matos Capistrano
- Inventors: Cameron B. Lerum; Jan Anders Nelson; Alessandro de Matos Capistrano
- Web page: https://patentgrep.com/patent/US8789015B2

## CPC

- G06F 40/40: Processing or translation of natural language (natural language analysis G06F40/20; semantic analysis G06F40/30)
- G06F 9/44: Arrangements for executing specific programs
- G06F 9/454: {Multi-language systems; Localisation; Internationalisation}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Integrated application localization techniques are described in which support for application localization is provided as an integrated component of a development environment. Localizations for selected languages/locales integrate with application builds in the development environment so that updates are synchronized with project resources for multiple languages. This involves creating and employing localization files corresponding to source content of a project using a designated file format suitable to enable translations. Localization files that are created in the designated format may be exposed in various ways for translation via the system, a developer, a translation service, or other selected translation sources. A single multilingual resource file for an application is then generated to contain resources in multiple languages based on translations made available through the translation sources.

## Claims

### Claim 1

A computing device comprising:
a processing system;
one or more modules operable at least in part via hardware of the processing system to implement an integrated development environment (IDE) configured to:
ascertain one or more languages selected by developer for translations of an application under development using the IDE; and
during a build of the application via the IDE, create updated localization files for each of the selected languages in a designated file format established to facilitate translations used to generate a single multilingual resource file for the application, wherein creation of the updated localization files comprises:
producing a log file in a system format that describes resources for the build of the application;
parsing the log file to identify and extract localizable resources in the build;
converting the extracted localizable resources to generate a source resource file for the build in the designated file format; and
merging the source resource file with target localization files included in the project for the one or more languages to form localization files that are updated for the build.

### Claim 2 (depends on 1)

The computing device of claim 1, wherein the integrated development environment (IDE) is further configured to:
output the updated localization files that are created to enable asynchronous translations via one or more translation sources;
obtain translations of localization files that are available during the build; and
generate the single multilingual resource file for the build of the application based on the available translations that are obtained.

### Claim 3 (depends on 1)

The computing device of claim 1, wherein the designated file format comprises extensible markup language localization interchange file format (XLIFF).

### Claim 4

A computing device comprising:
a processing system;
one or more modules operable at least in part via hardware of the processing system to implement an integrated development environment (IDE) configured to:
ascertain one or more languages selected by developer for translations of an application under development using the IDE; and
during a build of the application via the IDE, create updated localization files for each of the selected languages in a designated file format established to facilitate translations used to generate a single multilingual resource file for the application, wherein creation of the updated localization files comprises:
producing a log file in a system format that describes resources for the build of the application;
parsing the log file to identify and extract localizable resources in the build;
converting the extracted localizable resources to generate a source resource file for the build in the designated file format; and
merging the source resource file with target localization files included in the project for the one or more languages to form localization files that are updated for the build, wherein the merging comprises, for each target localization file:
comparing resources between the source resource file and the target localization file to find matching resources; and
updating the resources in the source resource file with matching resources from the target localization file to form an updated version of the target localization file that incorporates modifications to resources for the build from the source resource file and previously translated resources from the target localization file.

### Claim 5 (depends on 4)

The computing device of claim 4, wherein the integrated development environment (IDE) is further configured to:
output the updated localization files that are created to enable asynchronous translations via one or more translation sources;
obtain translations of localization files that are available during the build; and
generate the single multilingual resource file for the build of the application based on the available translations that are obtained.

### Claim 6 (depends on 4)

The computing device of claim 4, wherein the designated file format comprises extensible markup language localization interchange file format (XLIFF).

### Claim 7

A method comprising:
ascertaining one or more languages selected by developer for translations of an application under development using an IDE; and
during a build of the application via the IDE, creating updated localization files for each of the selected languages in a designated file format established to facilitate translations used to generate a single multilingual resource file for the application, wherein creating the updated localization files comprises:
producing a log file in a system format that describes resources for the build of the application;
parsing the log file to identify and extract localizable resources in the build;
converting the extracted localizable resources to generate a source resource file for the build in the designated file format; and
merging the source resource file with target localization files included in the project for the one or more languages to form localization files that are updated for the build.

### Claim 8 (depends on 7)

The method of claim 7 further comprising, via the IDE:
outputting the updated localization files that are created to enable asynchronous translations via one or more translation sources;
obtaining translations of localization files that are available during the build; and
generating the single multilingual resource file for the build of the application based on the available translations that are obtained.

### Claim 9 (depends on 7)

The method of claim 7 wherein the designated file format comprises extensible markup language localization interchange file format (XLIFF).

### Claim 10

A method comprising:
ascertaining one or more languages selected by developer for translations of an application under development using an IDE; and
during a build of the application via the IDE, creating updated localization files for each of the selected languages in a designated file format established to facilitate translations used to generate a single multilingual resource file for the application, wherein creation of the updated localization files comprises:
producing a log file in a system format that describes resources for the build of the application;
parsing the log file to identify and extract localizable resources in the build;
converting the extracted localizable resources to generate a source resource file for the build in the designated file format; and
merging the source resource file with target localization files included in the project for the one or more languages to form localization files that are updated for the build, wherein the merging comprises, for each target localization file:
comparing resources between the source resource file and the target localization file to find matching resources; and
updating the resources in the source resource file with matching resources from the target localization file to form an updated version of the target localization file that incorporates modifications to resources for the build from the source resource file and previously translated resources from the target localization file.

### Claim 11 (depends on 10)

The method of claim 10 further comprising, via the IDE:
outputting the updated localization files that are created to enable asynchronous translations via one or more translation sources;
obtaining translations of localization files that are available during the build; and
generating the single multilingual resource file for the build of the application based on the available translations that are obtained.

### Claim 12 (depends on 10)

The method of claim 10 wherein the designated file format comprises extensible markup language localization interchange file format (XLIFF).

### Claim 13

One or more computer-readable storage media storing instructions that, when executed by a computing device, implement a localization module configured to perform operations comprising:
ascertaining one or more languages selected by developer for translations of an application under development using an IDE; and
during a build of the application via the IDE, creating updated localization files for each of the selected languages in a designated file format established to facilitate translations used to generate a single multilingual resource file for the application, wherein creating the updated localization files comprises:
producing a log file in a system format that describes resources for the build of the application;
parsing the log file to identify and extract localizable resources in the build;
converting the extracted localizable resources to generate a source resource file for the build in the designated file format; and
merging the source resource file with target localization files included in the project for the one or more languages to form localization files that are updated for the build.

### Claim 14 (depends on 13)

One or more computer-readable storage media as described in claim 13, wherein the localization module is further configured to perform operations via the IDE comprising:
outputting the updated localization files that are created to enable asynchronous translations via one or more translation sources;
obtaining translations of localization files that are available during the build; and
generating the single multilingual resource file for the build of the application based on the available translations that are obtained.

### Claim 15 (depends on 13)

One or more computer-readable storage media as described in claim 13, wherein the designated file format comprises extensible markup language localization interchange file format (XLIFF).

### Claim 16

One or more computer-readable storage media storing instructions that, when executed by a computing device, implement a localization module configured to perform operations comprising:
ascertaining one or more languages selected by developer for translations of an application under development using an IDE; and
during a build of the application via the IDE, creating updated localization files for each of the selected languages in a designated file format established to facilitate translations used to generate a single multilingual resource file for the application, wherein creating the updated localization files comprises:
producing a log file in a system format that describes resources for the build of the application;
parsing the log file to identify and extract localizable resources in the build;
converting the extracted localizable resources to generate a source resource file for the build in the designated file format; and
merging the source resource file with target localization files included in the project for the one or more languages to form localization files that are updated for the build, wherein the merging comprises, for each target localization file:
comparing resources between the source resource file and the target localization file to find matching resources; and
updating the resources in the source resource file with matching resources from the target localization file to form an updated version of the target localization file that incorporates modifications to resources for the build from the source resource file and previously translated resources from the target localization file.

### Claim 17 (depends on 16)

One or more computer-readable storage media as described in claim 16, wherein the localization module is further configured to perform operations via the IDE comprising:
outputting the updated localization files that are created to enable asynchronous translations via one or more translation sources;
obtaining translations of localization files that are available during the build; and
generating the single multilingual resource file for the build of the application based on the available translations that are obtained.

### Claim 18 (depends on 16)

One or more computer-readable storage media as described in claim 16, wherein the designated file format comprises extensible markup language localization interchange file format (XLIFF).
