# Patent

## Title
System and method for localizing assets using automatic generation of alerts

## Abstract

A system and method for managing localization workflow for video game development is disclosed. The method includes programmatically determining that a string has been added to or modified in an executable asset of a video game under development. The method further includes programmatically inspecting the executable asset to determine whether the string is to be visually displayed or audibly played during game play. The method further includes programmatically generating an electronic message for a translator based at least partly on a positive determination that there is a string to be translated, wherein the electronic message is intended to notify the translator of a translation task associated with at least the text to be translated.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application claims the benefit under 35 U.S.C. 119(e) of U.S. Provisional Application No. 60/982,701 filed on Oct. 25, 2007, which is incorporated by reference in its entirety.
This application is related to copending application titled SYSTEM AND METHOD FOR LOCALIZING ASSETS USING FLEXIBLE METADATA, Ser. No. 12/020,130, copending application titled SYSTEM AND METHOD OF LOCALIZING ASSETS USING TEXT SUBSTITUTIONS, Ser. No. 12/020,021, and copending application titled SYSTEM AND METHOD FOR LOCALIZING ASSETS USING DICTIONARY FILE BUILD, Ser. No. 12/020,113, all of which have been filed on the same date as the present application, the entire disclosure of which are hereby incorporated by reference.


BACKGROUND OF THE INVENTION
1. Field of the Invention
The invention relates to video game development, and in particular, to an automated management of localization workflow.
2. Description of the Related Technology
A video game can be developed in one country using a single natural language, such as English, but the video game may be distributed in many different countries in which foreign languages are spoken. Accordingly, various assets, e.g., text, audio, and video, of the game need to be translated into the foreign languages. The process of translation is referred to as localization. Various assets that need to be localized are identified and sent to applicable translators. After the translations are performed, they should be reviewed for accuracy and, when applicable, for compliance with various standards for different platforms. As such, video game localization is an expensive and complicated part of video game development.
In addition, a translator typically is not provided with the privileges to compile source code. In a conventional game development process, to view updates to translations in a game environment, a translator may have to wait for the source code to be recompiled by the software developer, which may be in a different time zone from the translator. This can result in lengthy delays.
Therefore, an automated management of localization workflow for video game development would be desirable.
SUMMARY OF THE INVENTION
The system, method, and devices of the invention each have several aspects, no single one of which is solely responsible for its desirable attributes. Without limiting the scope of this invention as expressed by the claims which follow, its more prominent features will now be discussed briefly.
In one embodiment, there is a computer-implemented method for managing localization workflow for a video game development, wherein the method includes programmatically determining that a string has been added to or modified in an executable asset of a video game under development; programmatically inspecting the executable asset to determine whether the string is to be visually displayed or audibly played during game play; and programmatically generating an electronic message for a translator based at least partly on a positive determination that there is a string to be translated, wherein the electronic message is intended to notify the translator of a translation task associated with at least the text to be translated.
In another embodiment, there is a computer-implemented method for managing localization workflow for a video game development, wherein the method includes programmatically determining that a string in an executable asset of a video game under development has been translated; and programmatically generating an electronic message for a reviewer, wherein the electronic message is intended to notify the reviewer of a review and approval task associated with at least the translated string.
In another embodiment, there is an apparatus for managing localization workflow for video game development, wherein the apparatus includes a module configured to determine that a string has been added to or modified in an executable asset of a video game under development; a module configured to inspect the executable asset to determine whether the string is to be visually displayed or audibly played during game play; and a module configured to generate an electronic message for a translator based at least partly on a positive determination that there is a string to be translated, wherein the electronic message is intended to notify the translator of a translation task associated with at least the text to be translated.
In another embodiment, there is an apparatus for managing localization workflow for video game development, wherein the apparatus includes a module configured to determine that a string in an executable asset of a video game under development has been translated; and a module configured to generate an electronic message for a reviewer, wherein the electronic message is intended to notify the reviewer of a translation task associated with at least the translated string of a review and approval task for the translated string.



BRIEF DESCRIPTION OF THE DRAWINGS
These drawings and the associated description herein are provided to illustrate specific embodiments of the invention and are not intended to be limiting.
FIG. 1 illustrates a data flow diagram of the video game development system having an automated localization workflow management according to one embodiment.
FIG. 2A is a flowchart illustrating an example process for the automatic localization alert generation to a translator according to one embodiment.
FIG. 2B is a screen shot illustrating an example of an alert summary including a new alert caused by an addition of a string according to one embodiment.
FIG. 2C is a screen shot illustrating an example of an automatically generated localization alert report according to one embodiment.
FIG. 3A is a flowchart illustrating an example process for the automatic review alert generation to according to one embodiment.
FIG. 3B is a screen shot illustrating an example of an automatically generated review alert report according to one embodiment.
FIG. 3C is a screen shot illustrating an example of flexible metadata according to one embodiment.
FIG. 4 illustrates an overview of the complexity involved with preparing a video game for a plurality of natural languages and a plurality of game consoles.
FIG. 5 illustrates a process that can be used to substitute an existing translation for a phrase.
FIG. 6 illustrates a process that can be used to substitute an existing translation for a phrase.
FIG. 7A illustrates a screenshot of a user interface for a translator in which the substitution appears as underlined text to inform the translator not to translate the underlined text.
FIG. 7B illustrates a screenshot of a user interface for a software developer to select an identifier for an appropriate phrase, symbol, game button, or the like.
FIG. 8A is a flowchart illustrating an example process for building and using independent dictionary files during run time of a prototype in a game development system according to one embodiment.
FIG. 8B is a flowchart illustrating an example process for generating sub dictionary files according to one embodiment.
FIG. 9A is a flowchart illustrating an example process for generating a glyphs compliance report according to one embodiment.
FIG. 9B consists of 9B1, 9B2, 9B3, 9B4, and 9B5 and illustrates a table containing approved glyphs classified according to different age groups according to one embodiment.



DETAILED DESCRIPTION OF CERTAIN INVENTIVE EMBODIMENTS
Although particular embodiments are described herein, other embodiments of the invention, including embodiments that do not provide all of the benefits and features set forth herein, will be apparent to those of ordinary skill in the art.
Embodiments include systems and methods of localizing assets for video games will be described. Video games may include, but are not limited to, video games played on proprietary game consoles, such as Sony® Playstation®, Playstation® 2 (PS2), Playstation® 3 (PS3), Nintendo® GameCube®, Nintendo® Wii®, Microsoft® Xbox®, Microsoft® Xbox® 360, computer games for personal computers (PCs), and games played on the Internet. In particular, various embodiments representing novel automated management of localization workflow in a video game development system will be described.
FIG. 1 illustrates a data flow diagram of the video game development system having an automated localization workflow management according to one embodiment. The system 100 includes a processor 101, a database 103, an audio/video (A/V) asset storage 105, and a data interface 107. In one embodiment, the processor 101 is embodied in a server computer configured to run the development application and interact with the data interface 103 to allow users, e.g., a game developer 110, a translator 120, and a reviewer 130, to retrieve and upload data from and to the database 103 and the A/V asset storage 105. Some of these users, such as a project manager and a reviewer, may be employees of the entity that controls the game development system, or outside users such as game developers or translators in foreign countries who are permitted to log into the game development system 100 to work on particular projects, but are not employees of the entity that controls the system. Each of the users shown in FIG. 1—the game developer 110, the translator 120, and the reviewer 130—may be an employee user or an outside user in a particular project. In one embodiment, the processor 101 is a server computer programmed with structure query language (SQL) to create, modify, and access the database 103.
The database 103 contains a global set of tables that contain information shared by projects. These tables can include user information, line types, languages, platforms, and certification legal text. Each project may have its own its own subset of tables (prefixed with the short name of the project) that are project specific. The project manager can decide which tables are needed as well as the structure of each table (filed names and data type definitions). The A/V asset storage 105 is a high-volume data storage device for storing such memory-intensive assets such as audio and video assets. The data interface 107 allows the inside and outside users to enter and retrieve data from the database 103. Users can upload files (EXCEL, audio assets, video assets, and art assets) for storage in the SQL server itself 101, the database 103, or the audio/video asset storage 105. Furthermore the users will be able to download the latest dictionary files built by the SQL server. In certain embodiments, the data interface 107 includes a Web interface. For example, in certain embodiments, the database 103 is at one location, e.g., Glendale, Calif., while the server computer 101 is at a different location, e.g., Salt Lake City, Utah; and the server computer accesses the database via a wide area network (WAN), such as the Internet using the Web interface. In other embodiments, the database and the server computer are located in the same location; and the server computer accesses the database via a local area network (LAN). In yet other embodiments, the database is located within the server computer itself, e.g., in the hard disk.
In operation, the game developer 110 makes a change to text in a video game asset by adding or modifying a string contained within the text as illustrate by arrow 111. The processor 101 is configured to automatically detect the change and generate a localization alert report via an electronic message, e.g., an e-mail or an instant message or the like, to an applicable translator 120, e.g., a Japanese translator, as illustrated by arrow 121. The localization alert report is intended to notify the applicable translator 120 that the text needs to be translated or localized. Depending on the countries targeted for the game, the system may generate other localization alert reports for other language translators 140. After seeing the localization alert report, the translator 110 logs into the system 100, as illustrated by arrow 123, and retrieves the string or text to be translated and any metadata associated with the string or text as illustrated by arrow 125. Metadata can include any information, e.g., notes, messages, and line restrictions, intended to aid the translator and/or the reviewer to understand the context and properly localize the string. In certain embodiments, the string to be localized and the metadata are stored in an Excel file and downloaded by the translator. After localization, the translator 120 uploads the Excel file containing the localized string to the system, as illustrated by arrow 127. In other embodiments, the translator may directly access the string in the database from his or her computer and directly enter the translated string into the database without the downloading and the uploading the Excel file as described above.
In certain embodiments, the processor 101 is further configured to automatically detect the newly entered localized string and generate a review alert report via e.g., an email or an instant message, to an applicable reviewer 130 for the localized string, as illustrated by arrow 131. The review alert report is intended to notify the reviewer that the string has been localized and is waiting an approval. After seeing the review alert report, the reviewer 120 logs into the system 100, as illustrated by arrow 133, and retrieves the localized string and any included metadata, as illustrated by arrow 135. After retrieving the localized string, the review may run the game by building a dictionary file that includes the new localized string. After reviewing the localization, the reviewer 130 either approves or rejects the localized string, as illustrated by arrow 137. If the localized string is rejected by the reviewer, another automatic localization alert report may be generated to notify the translator of the rejection of the localized string. The report also may include reasons for the rejection. The translator may then re-translate the string and add the re-translated string to the project, thereby generating another automatic review alert report for the reviewer. In addition, reviewers can change or correct a translation. In one embodiment, the translation from a reviewer is not subject to further review.
Automatic Alert Generation
Generating a Localization Alert after a Creation or Modification of a String
FIG. 2A is a flowchart illustrating an example process for the automatic localization alert generation to a translator according to one embodiment. The process 200 starts at a state 211, where it is determined whether a string has been newly added to or modified in an executable asset of a video game being developed. This determination also includes inspection of the string to determine whether the string is to be presented, e.g., visually displayed or audibly played, during game play. If the answer is NO, the process loops back to the state 211. If the answer is YES, the process moves to a state 212, where the string is first stored in a queue and then logged into the database 103 (such as shown in FIG. 1). The process then moves to a state 213, where an alert summary, such as shown in FIG. 2B, is made available to a user, e.g., the game developer 110, for display. The process then moves to a state 215, where applicable translators—those translators in targeted languages who are associated with the string—are identified. The process then moves to a state 217, where alert reports, such as one shown in FIG. 2C, are sent, via, e.g., e-mails or instant messages, to the applicable translators. The process then moves to a state 219, where the logged entry for the string in the database is updated to indicate that the alert reports for the string have been generated and sent to the applicable translators.
FIG. 2B is a screen shot illustrating an example of an alert summary including a new alert caused by an addition of a string according to one embodiment. In the example embodiment, the alert summary 240 is presented in a table format comprising rows of translation entries and columns of different types of data for the entries. The rows include logged entries 237 including a new entry 239. The columns include a Log Sequence column 231, an Added Date column 233, a Log Type column 235, and an Information column 236. The Log Sequence column 231 includes a sequence of numbers indicating the order by which the translation entries are logged into the database. The Added Date column 233 includes date and time stamps for different entries. The Log Type column 235 indicates developer actions that caused the alert generations for different entries. The possible developer actions include an addition or modification of a new string (“Base language string create”) and a localization of a string by a translator (“Localized string changed or added”). The Information column 236 lists details of the actions causing the alerts, such as the new string (“who has big feet”) that has been added.
FIG. 2C is a screen shot illustrating an example of an automatically generated localization alert report according to one embodiment. The localization alert report is intended to notify a translator that a string needs to be localized. The localization alert report 240 includes: an Alert Type field 241 indicating the type of actions that caused the alert generation, e.g., an addition or creation of a string (“Base language string create”); a Language field 242 indicating the base language of the string; an Added Time filed 243 indicating the time when the string to be localized was added; an Information field 245 indicating the particular string to be localized (“who has big feet”); an Originator field 247 indicating the person or entity, e.g., a game developer, that created or modified the string; and an Alert Notes field 249 indicating special notes or messages to the translator. The Alert Notes field is one example of metadata that may be associated with the string to help or guide a translator to properly localize the string. The metadata will be discussed below with reference to FIGS. 4A and 4B. As discussed above with reference to FIG. 2A, in certain embodiments, the localization alert report 240 is sent to the applicable translator in the form of an e-mail or an instant message.
Generating a Review Alert after Localization of a String
FIG. 3A is a flowchart illustrating an example process 300 for the automatic review alert generation to according to one embodiment. The review alert report is intended to notify a reviewer that a localized string is waiting for an approval. The process 300 starts at a state 311, where it is determined whether the newly added/created or modified string has been translated to a localized string by the translator. If the answer is NO, the process loops back to the state 311. If the answer is YES, the process moves to a state 315, where an applicable reviewer—the reviewer who is associated with the language and the particular string—is identified. The process then moves to a state 317, where a review alert report, such as the one shown in FIG. 3B, is sent, via, e.g., e-mails or instant messages, to the applicable reviewer. The process then moves to a state 319, where the logged translation entry in the database is updated to indicate that the review alert report has been sent.
FIG. 3B is a screen shot illustrating an example of an automatically generated review alert report according to one embodiment. The review alert report 320 includes: an Alert Type field 321 indicating the type of actions that caused the review alert generation, e.g., addition or entry of a localized string by a translator (“Localization string changed or added”); a Language field 322 indicating the localized language; an Added Time filed 323 indicating the time when the localized string was entered or added; an Information field 325 including the localized string; an Originator field indicating the person or entity, e.g., the translator, who localized string; and an Alert Notes field 429 including special notes or messages containing context information intended to be used to the translator and/or the reviewer. Even if the notes are mainly directed to the translator, the notes may nevertheless be helpful to the reviewer in determining whether the translation was done properly. In certain embodiments, as with the localization alert report discussed above, the review alert report 320 may be sent to the reviewer via an electronic message, e.g., an e-mail or an instant message or the like.
Flexible Metadata and Text Length Limitation
FIG. 3C is a screen shot illustrating an example of flexible metadata according to one embodiment. Metadata include any information that can affect translation or will aid translators. Metadata include information generated by the game developer and intended to be used by the translator; and also information generated by the translator or the game developer and intended to be used by the reviewer. Metadata may include different data types and content types. The data types include text, audio, image, and video data. The content types include notes, context, line type information (e.g., web site navigation, controller pulls), line length restrictions, speaking character, target character(s), and proper usage. For example, the metadata may include a short video clip showing the face and gesture of a character who is uttering the text, thereby providing the translator with context such as the mood of the character. Different localization tasks may use different sets of metadata. Therefore, a developer on a particular localization project may determine his or her own requirements for localization and include a different set of metadata having different data types and content types. Returning to FIG. 3C, the metadata column 331 includes a text message 333 explaining why, for example a particular localization choice was made. The metadata informs the translator and/or reviewer how to properly make the translation. The illustrated example relates to a certification requirement from a console vendor (Sony). The metadata column further includes a text message 335 indicating the maximum characters allowed for the translated string. This is one example of use of metadata to limit the length of the translated string. In certain other embodiments, the text message or notes may indicate that the length of the translation should be limited so that, for example, the text containing the localized string can fit inside a text box of a given size. In some embodiments, the game development system may programmatically calculate the length of the translation in terms of numbers of characters for the localized string. In some other embodiments, the system may programmatically calculate the length of the translation in terms of numbers of pixels for the localized string. The pixel method may provide a more accurate measure of whether the translated string may fit inside a box than the character number method because different translated characters in proportional fonts, for example, may have different pixel counts (e.g., “I” vs. “M”). Usually the text box size does not change (for cost purposes), but some languages, e.g., German, use lengthy text so the code may be adjusted for that language.
Alternatively, the metadata may include an embedded program that programmatically limits the length of the translated string such that the program automatically rejects a translation that exceeds the length requirement and displays a message indicating the reason for the rejection. For example, when the translated text is entered and submitted to be stored in the database, an embedded program, e.g., a JavaScript program, checks the length of the string to be inserted. If the length is too long, the string will not be inserted and an error message will be displayed. In one such embodiment, the embedded program checks each line during an import from Excel file uploaded by the translator to make sure that length requirements are met. In yet other embodiments, the embedded program may programmatically limit the length of the translated string such that the translated text containing the translated string may fit inside a text box of a given size. In yet other embodiments, the metadata may include a series of conversations between two characters that provide the context for the string to be translated as shown by the screen shot 340 in FIG. 3D. For example, the metadata can include who is speaking and what section of the game is applicable. In another example, the metadata can specify that the voice should be processed so that it sounds like it was spoken in a large room.
Substitutions
The illustrated techniques are typically embodied in software that is executed by a computer. The functions of disclosed systems can be distributed across multiple computer systems and servers. Software developers typically develop code using a variety of editors, such as text editors or the like, and source code is typically stored in a server. After the source code has been developed to a sufficient level, translators and reviewers can begin work on translations. Typically, translators and reviewers can use a browser to look at text to be translated or to enter translated text. A browser is an application, which can locate and display Web pages. Examples of browsers include Microsoft® Internet Explorer and Mozilla® Firefox®. The user computer of a translator can download text to be translated and upload translated text via the browser by communicating with the game development system via, for example, a wide area network such as the Internet.
FIG. 4 illustrates an overview of the complexity involved with preparing a video game for a plurality of natural languages and a plurality of game consoles. In one embodiment, the software developer's language is English. Typically, text for windows to be displayed or words to be spoken are written during game development in the same natural language. However, the game may ultimately be marketed to individuals who would prefer a different natural language, such as, but not limited to, Japanese, French, German, Spanish, Italian and the like.
It should be noted that a game intended for a particular console typically has executable code adapted for that particular console and for that particular console's game controllers. For example, the button configurations on game controllers can vary among the consoles. Examples of game consoles include the Sony® Playstation®, Playstation® 2 (PS2), Playstation® 3 (PS3), Nintendo® GameCube®, Nintendo® Wii®, Microsoft® Xbox®, Microsoft® Xbox® 360, and the like. A general purpose computer that runs a particular operating system is also considered a game console herein. For example, a computer running a Microsoft® Windows® XP operating system can be considered to be a game console. Notwithstanding a degree of backwards compatibility among related game consoles, for each variation of language and game console, a specifically adapted executable code is typically generated. This can be a daunting task.
Embodiments of the invention include a video game development system with workflow management to assist in the efficient development of video games. In one embodiment, the software developers generate source code 402. One or more dictionary files 404, which can be generated by translators, reviewers, compliance reviewers, software developers or the like, can include components of the game that vary among the different language versions. In one embodiment, there is a particular dictionary file 404 for each natural language and game console combination. When a game is being compiled, the source code 402 and the relevant dictionary file 404 are compiled to generate executable code 406. Typically, the executable code 406 varies by game console, but does not vary by language. However, certain languages such as German can take up more text space and the source code 402 and the executable code 406 can be adjusted to accommodate larger size text boxes. Substitution and/or translation processes 408 are used to generate the one or more dictionary files 404. In one embodiment, the executable code 406 does not have the data to populate text boxes and the like, and rather, the executable code 406 contains references to the one or more dictionary files 404. A CPU of the game console during execution of the executable code 406 retrieves the appropriate text string and populates the text box during game play. This coding technique advantageously permits someone other than the software developer, such as translators and/or reviewers for quality assurance, to verify correct translation, fit of text within a text box, etc., without having to recompile or build the executable code 406. In one embodiment, the executable code 406 and the one or more dictionary files 404 are stored on the same optical disk.
For example, a software developer can generate source code 402 with identifiers for text to be displayed or spoken or for the display of symbols. The identifiers are used to associate the desired information within the dictionary file. The contents of the dictionary file can vary by language and by game console. For example, where a button symbol on a game controller and varies from game console to game console, the appropriate reference for the game console can be extracted from the one or more dictionary files 404.
In one embodiment, the dictionary files containing translated text and the like, are maintained separately from source code, which permit translators, reviewers, and the like to view changes and updates that they can make to a game without needing to have a software developer recompile the code. This can be a significant benefit as typically, a translator would not have privileges to modify and compile the source code itself. In addition, software developers and translators can be distributed across multiple time zones, so that waiting for a software developer to incorporate a change can result in a lengthy delay. When updated, the updated dictionary files are used during game execution. This permits the translators or reviewers to rapidly check translated text for compliance with style, size limitations, matching with context, or the like. Disclosed techniques efficiently manage workflow such that translation tasks and substitution tasks are efficiently performed. Substitution tasks will now be described as follows.
Exact Match Translation Substitution
FIG. 5 illustrates a process that can be used to substitute an existing translation for a phrase. For example, the process can be used in block 408 of FIG. 4. Before execution of the process, it is typically not known whether a translation already exists for a character string. Rather than send out the translation over again, which can risk translation errors, incur expense, and the like, a known good translation that already exists is substituted. In the illustrated embodiment, a substitute is used only when an exact match is found for the phrase (words and punctuation within the phrase). If an exact match is not found, the phrase should be translated because the meaning may be different. It will be appreciated by the skilled practitioner that the illustrated process can be modified in a variety of ways. For example, in another embodiment, various portions of the illustrated process can be combined, can be rearranged in an alternate sequence, can be removed, or the like.
The process begins by determining whether source code for a software module has been modified or created 502. The software module can be checked, for example, when the source code is being compiled. Typically, only new or modified software modules of source code are compiled because unchanged modules have up-to-date object files. The process can alternatively be invoked at other times to make use of new translation strings that may be available.
The code can be inspected 504 for character strings to be displayed in a text box during game play or for code corresponding to playback of spoken words. The words to be spoken can be indicated in remarks, i.e., not executable code, and a keyword or the like can be used to indicate that a words are to be uttered.
The entire phrase, including multiple words and punctuation, are compared 506 to a database of available translated phrase. The database can utilize, for example, relational database management system (RDBMS). In a RDBMS, the data is stored in the form of tables. Conceptually, the data within the table is stored within fields that are arranged into columns and rows. Each field contains one item of information. Each column within a table is identified by its column name and contains one type of information, such as the name of a natural language. A record, also known as a tuple, contains a collection of fields constituting a complete set of information. Typically, a record consists of one related row from each table, but a record can also comprise only one row from one table or groups of rows from several tables. In one system, the ordering of rows does not matter as the desired row can be identified by examination of the contents of the fields in at least one of the columns or a combination of fields.
When a match is found, the corresponding translated phrase is reused (substituted) 508 into the corresponding dictionary file(s), and the translated phrase is linked into the executable code by the linker. For example, for a particular language, the dictionary files for that language for the various game consoles can all be updated with the translated phrase. Otherwise, if no exact match is available for that particular language, then the phrase can be sent out for translating 510, for example, as described earlier in connection with FIGS. 1, 2A, 2B, and 2C. The process can be repeated as desired. For example, the process can be repeated on a daily basis as new translations are added to a database and become available to other projects.
Automatic Substitution
FIG. 6 illustrates a process that can be used to substitute an existing translation for a phrase. The process can be implemented in block 408 of FIG. 4. An identifier, such as an identifier for a database, is placed in the source code 402. The identifier refers to an item in the dictionary file 404, which is then inserted into the executable code. An advantage of using identifiers is that it relieves the software developer of the source code 402 of the burden of managing translated text, of modifying code to match particular game consoles, of ensuring that messages to the game player comply with the requirements for certification from the game console vendors, and the like. It will be appreciated by the skilled practitioner that the illustrated process can be modified in a variety of ways. For example, in another embodiment, various portions of the illustrated process can be combined, can be rearranged in an alternate sequence, can be removed, or the like.
The substitution can replace one or more words within a character string or can replace the entire character string. For example, names of game characters or names of locations (e.g., New York) can be substituted within a character string with the localized name for the game character or location, as a character name or location name is typically not literally translated. FIG. 7A illustrates a screenshot of a user interface for a translator in which the substitution appears as underlined text to inform the translator not to translate the underlined text. The screenshot in FIG. 7A illustrates the standard translations in French, German, Italian, and Japanese for “Story Mode.” In addition, FIG. 7A illustrates that non-English alphabet characters can be referenced by the identifier. In another example, numerals other than Arabic numerals can be used.
FIG. 7B illustrates a screenshot of a user interface 720 for a software developer to select an identifier for an appropriate phrase, symbol, game button, or the like. The user interface 720 includes a select button 721, a text identifier 723, a source string 725 and a localized string 727. In the example shown, the source string 725 corresponds to a string for the source (e.g., English) version of the game asset. The localized string 727 corresponds to a previously localized and approved translation (e.g., Japanese) for the source string. The text identifier 723 can be used as a reference for a link between the source string and the localized string in a database and permits referencing and selection of the localized string. For example, when the text identifier 723 is encountered in text to be localized, the localized string 727 can be displayed along with the source string 725 in a user interface 720 such as one shown in FIG. 7B. This way, users, e.g., a game developer 110, a translator 120, and a reviewer 130, can immediately view the previously localized and approved string and select to use the existing string if it is satisfactory given the context of the translation task.
For example, the code for the game can be written to inform the game user to push a particular button to save the progress of the game, and to push a different button to exit without saving. However, the description of these buttons can vary among the game consoles. In one game console, the button to have a game character jump may be labeled with an alphabetic character, such as “A.” In another game console, the button to have the game character jump may be labeled with a geometric symbol, such as a circle, triangle, square, etc. The identifier can be used to associate the correct symbol for the compilation of the executable code for a particular game console for display of game controls to the game user. The identifiers can also be used to replace game controls (among multiple game consoles) for operational control of the game.
In another example, the identifier is replaced by an entire character string. For example, a game console vendor can specify that certain messages to a user must read in a specified standardized manner in order to receive certification of the game from the game vendor. For example, game vendors typically specify standardized language for saving game progress, for warning messages, and the like. Such standardized language not only varies among the game console vendors, but also varies within the game console vendor specification for the language. Deviations from the specification can result in lengthy and costly delays in launching a game.
Returning now to FIG. 6, the process begins by inspecting 602 the source code for a video game being developed to determine 604 whether there is at least one substitution identifier to text or to a symbol present in the code. Typically, the source code is broken up into many different modules, known as subroutines. Accordingly, it will be understood that the process can inspect anywhere from a relatively small portion of the source code to all of the source code.
If a substitution identifier is present, the process proceeds to perform the appropriate substitution 606. The substitution can vary depending on the language or the game console, and can frequently depend on both the language and the game console. In one embodiment, the substitution is performed whenever the dictionary is compiled. However, items can be added to, modified, and/or pulled from the dictionary at other times, such as during coding, entry of new strings by the code developer, prototype testing, etc. Preferably, the substitution 606 is performed before items are translated to indicate when certain words should not be translated as shown in FIG. 7A.
Dictionary File
FIG. 8A is a flowchart illustrating an example process 800 for building and using independent dictionary files during run time of a prototype in a game development system according to one embodiment. The process described below relates to how dictionary files are built during a game development according to some embodiments and, more importantly, how the dictionary files are used during a prototype. The process 800 starts at a state 811, where one or more dictionary files are built. The dictionary files refer to data files that include translated strings and that are accessed by executable code of a video game during run time. In certain embodiments, the dictionary files are independent in the sense that they do not become part of the executable code of the video game. In other embodiments, the dictionary files are built from localized strings stored in a database that are exported into various project formats, e.g., CSV, XML, binary, text, etc. In other embodiments, the dictionary files support binary format, and as a result, graphics may be inserted from the dictionary files into the displayed “text” lines. This is particularly useful in a video game development where button graphics have to be inserted into a text line. In yet other embodiments, the dictionary builder service is available over a wide area network, such as the Internet. The Internet embodiments allow the users, e.g., a game developer 110, a translator 120, and a reviewer 130, to work on the video game remotely instead of having to be on-site. Returning to FIG. 8A, the process then moves to a state 813, where, during run time of a prototype of a video game, one or more executable instruction for the prototype of the video game are retrieved, wherein some of the executable instructions make references to data, e.g., localized strings, stored in the one or more dictionary files. The process then moves to a state 817, where the instructions are executed with the retrieved referenced data.
Various advantages of building and using the independent dictionary files during a video game development should be apparent to the one skilled in the art. For example, users of the game development system are able to see the changes in the localized assets without having to rebuild the entire asset. Reviewers and translators may rebuild the dictionary files themselves and view the changes almost immediately in the video game under development without having to receive the entire asset with the dictionary files incorporated into executable code from the game developer. Reviewers can also view the finished product, check for length problems, and resubmit changes before the game developer sees the intermediate version.
FIG. 8B is a flowchart illustrating an example process for generating sub dictionary files according to one embodiment. In certain embodiments, the converted localized strings stored in the dictionary file described above may organized and stored in smaller individual sub dictionary files. This breakdown of the dictionary file into sub dictionary files is useful because a video game does not need to load all localized text for the game at once; instead, it typically loads sections of text at a time. The portion of the video game under development being tested can be compiled without using the entire dictionary file. Returning to FIG. 8B, the process 820 for generating sub dictionary files starts at a state 821, where it is determined whether the project is divided into multiple sub-projects. A project can have multiple sub projects, e.g., on screen text, script lines, etc. If the answer is YES, the process moves to a state 823, where the localized strings in the dictionary file are grouped or sub-divided under each sub project. If the answer is NO, the process skips the state 823. The process then moves to a state 825, where the sub-divided (or the original) entries are sub-divided under each console platform, e.g., XBOX® 360, PC, or PS3. The process then moves to a state 827, where the sub-divided entries are further sub-divided under each line type, e.g., navigation text, front end text, world level text, etc. The process then moves to a state 819, where various sub dictionary files are created from the sub-divided localized strings described above.
Glyphs Compliance Report
FIG. 9A is a flowchart illustrating an example process for generating a glyphs compliance report according to one embodiment. For localization into certain languages, e.g., Japanese, Chinese, and Korean, which may include glyphs, e.g., kanji or Chinese characters, it may be advantageous to classify approved glyphs according to age ranges of intended players. Children in those language regions are typically expected to know particular glyphs at particular age ranges. For example, children in the first grade are expected to be familiar with the glyphs listed in the 1st Grade column 921 as shown in FIGS. 9B-1 and 9B-2, but not with the glyphs listed in other columns 922-926. So, if the intended players of the game are children belonging to the 1st Grade age group, for example, it is desirable to check the translated glyphs to confirm that the glyphs are listed under the 1st Grade column 921. To facilitate the compliance process for users, e.g., a translator or a reviewer, the game development system in certain embodiments is configured to generate glyphs compliance reports. Returning to FIG. 9A, the process 900 for generating the glyphs compliance report starts at a state 911, where localized text is added or entered into the game development system. The process then moves to a state 913, where it is determined whether the localized text contains any translated glyphs. In some embodiments, the localized text containing the translated glyphs is stored in a dictionary file described above with reference to FIGS. 8A and 8B. If the answer is NO, the process ends. If the answer is YES, the process moves to a state 915, where the translated glyphs are compared to a list of glyphs for the intended age range, e.g., the 1st Grade. The process then moves to a state 917, where a glyphs compliance report is generated and sent to various users, including the translator who has translated the glyphs and the reviewer for the localized text. In certain embodiments, the report may list all translated glyphs and indicate, e.g., underline or highlight, those glyphs that fail the age-range compliance. In certain other embodiments, the report may also list those characters that are not in the Table 920, such as the one shown in FIG. 9B consisting of 9B1, 9B2, 9B3, 9B4, and 9B5.
In certain embodiments, the above-described method of automated management of video game localization workflow may be realized in a program format to be stored on a computer readable recording medium that includes any kinds of recording devices for storing computer readable data, for example, a CD-ROM, a DVD, a magnetic tape, a memory (e.g., capable of storing firmware), and memory card and a disk.
Various embodiments have been described above. Although described with reference to these specific embodiments, the descriptions are intended to be illustrative and are not intended to be limiting. Various modifications and applications may occur to those skilled in the art.

## Claims

1. A computer-implemented method for managing localization workflow for video game development, wherein the method is implemented in a computer system comprising one or more processors, the method comprising:
analyzing, by the one or more processors, an executable asset of a video game under development to determine whether a string has been added to or modified in the executable asset;
responsive to a determination that the string has been added to or modified, automatically inspecting, by the one or more processors, the executable asset to determine whether the string is to be visually displayed or audibly played during game play; and
responsive to a determination that the string is to be visually displayed or audibly played during game play, automatically generating, by the one or more processors, an electronic message for a translator, wherein the electronic message notifies the translator of a translation task associated with at least the string to be translated;
wherein the electronic message is included a metadata that have data types and content types, and limits the length of the translated string such that the program automatically rejects a translation that exceeds the length requirement and display a message indicating the reason for the rejection;
when an exact match for the string is found, the corresponding translated phrase is reused into the corresponding dictionary file(s), and the translated phrase is linked into the executable code by the linker.

2. The method of claim 1, wherein the electronic message is an email message.

3. The method of claim 2, wherein the e-mail message includes a file comprising the string to be translated.

4. The method of claim 3, wherein the file comprises a spreadsheet file.

5. A computer-implemented method for managing localization workflow for a video game development, the method being implemented in a computer system comprising one or more processors, the method comprising:
analyzing, by the one or more processors, an executable asset of a video game under development to determine whether a string has been added to or modified in the executable asset;
analyzing, by the one or more processors, an executable asset of a video game under development to determine whether the string in the executable asset has been translated; and
responsive to a determination that the string has been translated, automatically generating, by the one or more processors, an electronic message for a reviewer, wherein the electronic message notifies the reviewer of a review and approval task associated with at least the translated string;
wherein the electronic message is included a metadata that have data types and content types, and limits the length of the translated string such that the program automatically rejects a translation that exceeds the length requirement and display a message indicating the reason for the rejection;
when an exact match for the string is found, the corresponding translated phrase is reused into the corresponding dictionary file(s), and the translated phrase is linked into the executable code by the linker.

6. The method of claim 5, wherein the electronic message is an e-mail message.

7. The method of claim 6, wherein the e-mail message includes a file comprising the translated string.

8. The method of claim 7, wherein the file comprises a spreadsheet file.

9. An apparatus for managing localization workflow for video game development, the apparatus comprising:
one or more processors configured to execute computer program modules, the computer program modules comprising:
a module configured to analyze a an executable asset of a video game under development to determine whether a string in the executable asset has been added to or modified;
a module configured to inspect the executable asset to determine whether the string is to be visually displayed or audibly played during game play; and
a module configured to automatically generate, responsive to determinations that the string has been added to or modified and that the string is to be visually displayed or audibly played during game play, an electronic message for a translator, wherein the electronic message notifies the translator of a translation task associated with at least the string to be translated;
wherein the electronic message is included a metadata that have data types and content types, and limits the length of the translated string such that the program automatically rejects a translation that exceeds the length requirement and display a message indicating the reason for the rejection;
when an exact match for the string is found, the corresponding translated phrase is reused into the corresponding dictionary file(s), and the translated phrase is linked into the executable code by the linker.

10. The apparatus of claim 9, wherein the computer program modules further comprise a module configured to store the string to be translated.

11. An apparatus for managing localization workflow for video game development, the apparatus comprising:
one or more processors configured to execute computer program modules, the computer program modules comprising:
a module configured to analyze a an executable asset of a video game under development to determine whether a string in the executable asset has been added to or modified;
a module configured to analyze an executable asset of a video game under development to determine whether the string in the executable asset has been translated; and
a module configured to automatically generate, responsive to a determination that the string has been translated, an electronic message for a reviewer, wherein the electronic message notifies the reviewer of a review and approval task associated with at least the translated string;
wherein the electronic message is included a metadata that have data types and content types, and limits the length of the translated string such that the program automatically rejects a translation that exceeds the length requirement and display a message indicating the reason for the rejection;
when an exact match for the string is found, the corresponding translated phrase is reused into the corresponding dictionary file(s), and the translated phrase is linked into the executable code by the linker.

12. The apparatus of claim 11, wherein the computer program modules further comprise a module configured to store the translated string.

13. A non-transitory computer-readable medium including instructions that, when executed by one or more processors, cause the one or more processors to manage localization workflow for video game development, by performing the steps of:
analyzing, by the one or more processors, an executable asset of a video game under development to determine whether a string has been added to or modified in the executable asset;
responsive to a determination that the string has been added to or modified, automatically inspecting, by the one or more processors, the executable asset to determine whether the string is to be visually displayed or audibly played during game play; and
responsive to a determination that the string is to be visually displayed or audibly played during game play, automatically generating, by the one or more processors, an electronic message for a translator, wherein the electronic message notifies the translator of a translation task associated with at least the string to be translated;
wherein the electronic message is included a metadata that have data types and content types, and limits the length of the translated string such that the program automatically rejects a translation that exceeds the length requirement and display a message indicating the reason for the rejection;
when an exact match for the string is found, the corresponding translated phrase is reused into the corresponding dictionary file(s), and the translated phrase is linked into the executable code by the linker.

14. The non-transitory computer-readable medium of claim 13, wherein the electronic message is an email message.

15. The non-transitory computer-readable medium of claim 14, wherein the email message includes a file comprising the string to be translated.

16. The non-transitory computer-readable medium of claim 15, wherein the file comprises a spreadsheet file.

17. A non-transitory computer-readable medium including instructions that, when executed by one or more processors, cause the one or more processors to manage localization workflow for video game development, by performing the steps of:
analyzing, by the one or more processors, an executable asset of a video game under development to determine whether a string has been added to or modified in the executable asset;
analyzing, by the one or more processors, an executable asset of a video game under development to determine whether the string in the executable asset has been translated; and
responsive to a determination that the string has been translated, automatically generating, by the one or more processors, an electronic message for a reviewer, wherein the electronic message notifies the reviewer of a review and approval task associated with at least the translated string;
wherein the electronic message is included a metadata that have data types and content types, and limits the length of the translated string such that the program automatically rejects a translation that exceeds the length requirement and display a message indicating the reason for the rejection;
when an exact match for the string is found, the corresponding translated phrase is reused into the corresponding dictionary file(s), and the translated phrase is linked into the executable code by the linker.

18. The non-transitory computer-readable medium of claim 17, wherein the electronic message is an e-mail message.

19. The non-transitory computer-readable medium of claim 18, wherein the e-mail message includes a file comprising the translated string.

20. The non-transitory computer-readable medium of claim 19, wherein the file comprises a spreadsheet file.