US20140033184A1 - Localizing computer program code - Google Patents

Localizing computer program code Download PDF

Info

Publication number
US20140033184A1
US20140033184A1 US13/559,255 US201213559255A US2014033184A1 US 20140033184 A1 US20140033184 A1 US 20140033184A1 US 201213559255 A US201213559255 A US 201213559255A US 2014033184 A1 US2014033184 A1 US 2014033184A1
Authority
US
United States
Prior art keywords
code
processor
program code
message catalog
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US13/559,255
Other versions
US9727350B2 (en
Inventor
Eric Addkison Pendergrass
Klaus Muehlbradt
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micro Focus LLC
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US13/559,255 priority Critical patent/US9727350B2/en
Assigned to HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. reassignment HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MUEHLBRADT, KLAUS, PENDERGRASS, ERIC ADDKISON
Publication of US20140033184A1 publication Critical patent/US20140033184A1/en
Assigned to HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP reassignment HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Assigned to ENTIT SOFTWARE LLC reassignment ENTIT SOFTWARE LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Application granted granted Critical
Publication of US9727350B2 publication Critical patent/US9727350B2/en
Assigned to JPMORGAN CHASE BANK, N.A. reassignment JPMORGAN CHASE BANK, N.A. SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ARCSIGHT, LLC, ENTIT SOFTWARE LLC
Assigned to JPMORGAN CHASE BANK, N.A. reassignment JPMORGAN CHASE BANK, N.A. SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ARCSIGHT, LLC, ATTACHMATE CORPORATION, BORLAND SOFTWARE CORPORATION, ENTIT SOFTWARE LLC, MICRO FOCUS (US), INC., MICRO FOCUS SOFTWARE, INC., NETIQ CORPORATION, SERENA SOFTWARE, INC.
Assigned to MICRO FOCUS LLC reassignment MICRO FOCUS LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: ENTIT SOFTWARE LLC
Assigned to SERENA SOFTWARE, INC, MICRO FOCUS (US), INC., ATTACHMATE CORPORATION, MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC), BORLAND SOFTWARE CORPORATION, NETIQ CORPORATION, MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.) reassignment SERENA SOFTWARE, INC RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Assignors: JPMORGAN CHASE BANK, N.A.
Assigned to MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC) reassignment MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC) RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0577 Assignors: JPMORGAN CHASE BANK, N.A.
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Definitions

  • the language into which the modules are translated may be an end user's native language. This allows the end user to use the module in their native language. Having a module translated correctly in the native language of the end user ensures the end user will correctly receive and understand the various interactive aspects of the module including, for example, prompts by the module, warnings, and user interface information, among others.
  • FIG. 1 is a data flow diagram showing run-time localization.
  • FIG. 2 is a diagram showing a system employing centralized localization in a distributive environment, according to one example of the principles described herein.
  • FIG. 3 is a diagram showing a data flow within a method utilizing centralized localization in a distributive environment, according to one example of the principles described herein.
  • FIG. 4 is a flowchart showing a method for central localization, according to one example of the principles described herein.
  • FIG. 5 is a flowchart showing a method for central localization, according to another example of the principles described herein.
  • the present systems and methods describe a manager node comprising a message catalog and a preprocessor for localizing the executable code at run-time.
  • the manager node searches for a number of tags or tokens to localize current target tags or tokens; and determines the tags' or tokens' unique identification and native language environment.
  • the manager node then sends the localized executable code to client nodes to meet end user needs by translating the executable code into the end users native language in one example.
  • a manager node for distributing a number of localization codes to client nodes includes: a network connection for providing services for sending localization codes to a client node over a network; a manager node for containing a message catalog to store localization code, tags or tokens; and a preprocessor programmed for reading tags or tokens associated with message catalog; and determining language for replacing current tag or token with new tag or token according to tag or token's unique identification associated with its language environment.
  • a computer program product includes a computer readable storage medium, the computer readable storage medium comprising computer readable program code embodied therewith to update a module with tags or tokens which provides functionality for the module, the computer readable program code including: computer readable program code to read tags or tokens associated with message catalog; and computer readable program code to determine tags needing replacement.
  • Localization may be implemented for a particular system or enterprise. These systems or enterprises comprise modules to be translated into the end user's native language. Localization may be distributed and executed on a number of client nodes. For example, localization may be distributed and executed on a large number of client devices within a business entity. There may be some desire to bring about localization that can be distributed to all the client nodes. Consequently, localization code may be distributed to each node independently to produce desired language output to better meet end user needs and translation requirements.
  • a language translation module within the software product may be designed to produce output in a number of different languages to accommodate users of different languages.
  • this language translation module may be configured to translate words appearing to a user during execution of the software product into several languages in order for the user to understand and appropriately use the software product.
  • new words may be added to the language translation module via a message catalog.
  • a message catalog serves as a dictionary to translate one language into another language.
  • a developer or administrator may make appropriate updates to the message catalog for each client node. This task may prove tedious and time consuming if, for example, the language translation module of thousands of client nodes are to be updated in a similar manner.
  • the developer or administrator if a developer or administrator uses run-time localization, the developer or administrator must make appropriate updates to thousands of client nodes individually.
  • a developer or administrator uses compile-time localization, the developer or administrator can not do updates once the localization code has been compiled. The developer or administrator must recompile the localization code if any updates are to be promulgated.
  • the subject matter disclosed in the present specification provides such a developer or administrator the ability to update the message catalog on a manager node. These localization updates made to the manager node are automatically delivered by the manger node to a number of client nodes as executable localization code.
  • the present specification discloses methods and systems for centralized module localization. Consequently, the message catalog may be updated on the manager node and may be delivered automatically to the client nodes to suit the particular native language needs of an end user.
  • the centralized module localization described is used by a developer or administrator to update a message catalog or translation service on the manager node or translation service endpoint. Once the message catalog is updated, it is then automatically delivered to the client nodes to better suit particular end user native language needs. This allows the developer or administrator to make fast updates through a network of client devices since there is a single maintenance point for localization: the manager node.
  • localization is meant to be understood broadly as any process of translation of user-interactive characters, words, expressions, phrases, or sentences displayed to a user of a software product into a number of different languages.
  • localization may further include cultural adaptation of the software product to conform to a cultural aspect of a region of the world.
  • localization may be applied to software, video games, or websites among other forms of user-interactive words.
  • localization may be applied to provide users with different dialects of a particular language.
  • preprocessor is meant to be understood broadly as a routine executed by a processor that processes source code before the code is compiled, resulting in altered source code.
  • tags or “token” is meant to be understood broadly as a string of characters categorized by a set of rules to match, specify, or recognize a sequence of a number of characters in a string of text.
  • centralized localization refers broadly to a predefined function that will be performed on given inputs at a centralized computing device to produce desired output to a number of node computing devices. Consequently, centralized localization may encapsulate a manager node coupled with a preprocessor and message catalog.
  • the manager node allows the operator access to the message catalog.
  • the message catalog stores and contains all the desired languages and words needed for localization. The languages and words are associated with a number of tags or tokens to determine if a word can be translated from one language or another. Further, a unique language identification is associated with each tag or token that allow for specific language localization.
  • these tags or tokens are searchable using a preprocessor programmed to search for and replace each tag or token according to the unique language of end user.
  • the unique tag identification may be provided for a number of languages.
  • a unique tag identification may be provided for a portion of or all known languages.
  • aspects of the present specification may be embodied as a system, method, or computer program product. Accordingly, aspects of the present specification may take the form of hardware or a combination of hardware and software. Furthermore, aspects of the present specification may take the form of a computer program product embodied in a number of computer readable mediums having computer readable program code embodied thereon.
  • a computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical electromagnetic, infrared, or semiconductor system, apparatus, or device or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable mediums would include the following: an electrical connection having a number of wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, a network based service, or any suitable combination of the foregoing.
  • a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with any instruction execution system, apparatus, or device such as, for example, a processor.
  • Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
  • Computer program code for carrying out operations of the present specification may be written in an object oriented programming language such as Java, Smalltalk, or C++, among others.
  • Computer program code for carrying out operations of the present specification may also be written in declarative programming language such as Structured Query Language.
  • the computer program code for carrying out operations of the present systems and methods may also be written in procedural programming languages, such as, for example, the “C” programming language or similar programming languages.
  • the program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
  • the remote computer may be connected to the user's computer through a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, thought the internet using an internet service provider). Further, the remote computer may be connected to the user's computer through a wired or wireless network.
  • these computer program instructions may be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instructions which implement the functions/act specified in the flowchart and/or block diagram blocks or blocks.
  • the computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operations to be performed on the computer or other programmable apparatus to produce a computer implement process such that the instructions which execute on the computer or other programmable apparatus implement the functions/acts specified in the flowchart and/or block diagram blocks or blocks.
  • FIG. 1 is a data flow diagram ( 100 ) showing run-time localization that distributes the un-localization code to client nodes.
  • a data flow diagram ( 100 ) depicts an operator ( 101 ) sending ( 106 ) un-localized code over a network, such as, for example, the Internet, to a number of client nodes ( 103 , 104 ).
  • client nodes 103 , 104
  • client node n the system any number of client nodes ( 103 , 104 ).
  • client node n ( 104 ) is to be referred to as the last client node in the range of client nodes that received the un-localized code.
  • These un-localized codes are then localized and executed ( 108 ) using individual message catalogs located on each of the client nodes ( 103 , 104 ).
  • the operator ( 101 ) desires to update a system to add more tags to the message catalogs within the client nodes ( 103 , 104 ) in order to expand the number of characters, words, expressions, phrases, or sentences within the message catalogs.
  • the operator ( 101 ) runs ( 105 ) a command that sends un-localized code ( 106 ) from the manager node ( 102 ) along with executable code ( 108 ) to the client nodes ( 103 , 104 ) containing a copy of the message catalog ( 212 ).
  • a process uses the message catalog with the un-localized code to produce ( 107 ) executable localized code in the appropriate language.
  • the process replaces the current tags with language appropriate tags.
  • This localized executable code is executed on the client nodes ( 103 , 104 ).
  • the operator ( 101 ) sends the un-localized code to each client node ( 103 , 104 ) where the code is localized into executable code.
  • the code is localized into executable code by replacing the tag with the target language tag via the message catalog.
  • FIG. 2 is a diagram showing a data flow within a method utilizing centralized localization in a distributive environment, according to one example of the principles described herein.
  • FIG. 2 shows a system ( 200 ) that utilizes centralized localization.
  • the operator ( 201 ) accesses the manager node ( 202 ) via a user interface.
  • the operator ( 201 ) desires to update a message catalog ( 212 ).
  • the message catalog ( 212 ) is maintained on the manager node ( 202 ) within memory ( 211 ).
  • the operator ( 201 ) makes a number of updates to the localization code in the message catalog ( 212 ).
  • the operator ( 201 ) instructs the manager node ( 202 ) via the processor ( 220 ) to update the message catalog ( 212 ) stored within the memory ( 211 ) of the manager node ( 202 ).
  • the processor ( 213 ) of the manager node ( 202 ) updates the localization code in the message catalog ( 212 ) as instructed by the operator ( 201 ) via the preprocessor ( 210 ).
  • the processor ( 213 ) may include the hardware architecture or a combination of hardware and software architecture for retrieving executable code from the memory ( 211 ) and executing the executable code.
  • the executable code when executed by the preprocessor ( 210 ), causes the processor ( 213 ) and preprocessor ( 210 ) to implement at least the functionality of updating the message catalog ( 212 ) and distributing an executable for consumption by a number of client nodes ( 203 , 205 ) as described herein.
  • the preprocessor ( 210 ) may receive input from and provide output to a number of the remaining hardware units. In this manner, the localization code of the message catalog ( 212 ) is made executable.
  • the localization code is automatically sent over a network from the manager node ( 202 ) where the executable localization code is received and executed by the client nodes ( 203 , 205 ).
  • client node ( 205 ) is the n node or last node in the series of nodes that the developer or administrator is sending the executable localization code to ( 209 ).
  • all the client nodes ( 203 , 205 ) receive the same updated executable localization code, from a single maintenance point or source; namely, the manager node ( 202 ).
  • the end users ( 204 ) are able to view the text portion of the software product in their native language due to the local execution of the localization code.
  • the executable localized code is language specific; the localized executable code may differ from language to language. For example, assume one client speaks Spanish and another client speaks French. Further, assume each client desires to have the same message translated into their native language. Each language follows different rules for syntax as well as different characters comprising each word to be translated. When the message is translated into Spanish or French the characters order, words, or phrases will be changed or reordered, and will no longer be identical to each other. When the code is localized into an executable where the executable localized code is in Spanish, this Spanish-localized code does not match the executable localized code in French. Thus, executable localized code is language specific.
  • the network architecture shown in FIG. 2 is one example of how the present systems and methods may be implemented.
  • the operator ( 201 ), the manager node ( 202 ), and client nodes ( 203 , 205 ) are separate devices communicatively coupled to each other.
  • the principles set forth in the present specification extend equally to any alternative configuration in which the operator ( 201 ), the manager node ( 202 ), and client nodes ( 203 , 205 ) are configured as one device, or two devices with one device comprising one of these devices, and the other device comprising two of these devices.
  • alternative examples within the scope of the principles of the present specification include, but are not limited to, examples in which the operator ( 201 ), the manager node ( 202 ), and client nodes ( 203 , 205 ) are implemented by the same computing device, examples in which the functionality of the operator ( 201 ), the manager node ( 202 ), or client nodes ( 203 , 205 ) are implemented by multiple interconnected computers, and examples in which the operator ( 201 ), the manager node ( 202 ), and client nodes ( 203 , 205 ) communicate directly through a bus without intermediary network devices.
  • the manager node ( 202 ) may be a remotely-hosted or may be a cloud-based translation service rather than a locally-executed program.
  • a third party may provide such a service where a translation is obtained remotely.
  • This service may provide a more up-to-date version of a message catalog ( 212 ) since a business would have more centralized control over translation.
  • the message catalog ( 212 ) may be updated from a single service rather than a manager node ( 202 ).
  • manager nodes ( 202 ) containing a number of message catalogs ( 212 ) are to be updated, only a few operators ( 201 ) may be required to instruct the manager nodes ( 212 ) to make such an update for such a service since it is easier to update a single service.
  • FIG. 3 is a diagram showing a data flow within a method utilizing centralized localization in a distributive environment, according to one example of the principles described herein.
  • FIG. 3 shows how the system ( 200 ) of FIG. 2 invokes centralized localization.
  • the operator ( 201 ) developer or administrator may desire to update the message catalog ( FIG. 2 , 212 ).
  • the localized code that was associated with the message catalog ( FIG. 1 , 107 ) as described above is only localized on the individual client nodes ( 103 , 104 ).
  • the message catalog FIG. 2 , 212
  • the manager node 202
  • the un-localized code is now localized ( 307 ) with the message catalog ( FIG.
  • the manager node ( 202 ) on the manager node ( 202 ) before the code is sent to the client nodes ( 203 , 205 ).
  • the executable code Once the executable code has been localized on the manager node ( 302 ), it is sent ( 306 ) automatically to the client nodes ( 203 , 205 ). Thus, the localized executable code has been sent to all the client nodes ( 203 , 205 ) from a single maintenance point; the manager node ( 202 ).
  • client node n ( 205 ) is the last node in the series of client nodes that the localization code is sent to. Additionally, client nodes 2 to n will receive the same message ( 309 ) that client node 1 ( 204 ) received. Thus, in this manner, all the client nodes ( 203 , 205 ) will receive the same localization executable code.
  • the system allows the developer or administrator to make fast updates to the code from a single maintenance point. This reduces chances for errors, and processing resources since the localization is performed one time on the manager node ( 202 ), instead of n times for an n-node distribution system.
  • FIG. 4 is a flowchart showing a method for central localization ( FIG. 3 , 300 ), according to one example of the principles described herein.
  • the centralized localization systems and methods described herein may be implemented using hardware or a combination of hardware and software.
  • the centralized localization process may begin by updating (block 401 ) the message catalog ( FIG. 2 , 212 ).
  • the developer or administrator may desire to correct an error or spelling of a word in a different language.
  • the developer or administrator may desire to add new words or languages to the existing message catalog.
  • this message catalog ( FIG. 212 ) may be stored on the manager node ( FIG. 2 , 202 ) accessed by a network by, for example, an operator ( 201 ).
  • the manger node ( FIG. 2 , 202 ) localizes (block 402 ) the executable code at run-time.
  • the localized code is automatically distributed (block 403 ) to all the client nodes ( 203 , 205 ).
  • each client node ( 203 , 205 ) receives the same executable localization code from the message catalog ( FIG. 2 , 212 ).
  • the developer or administrator would update the message catalog ( FIG. 2 , 212 ) and maintain it from a single system; namely, the manager node by repeating the process described above.
  • a mobile version of the present systems and methods may be implemented for use by mobile devices, such as, for example, smart phones.
  • Such mobile devices may, when network access is available, output or translate information into an end user's native language.
  • a mobile device may run an application that displays dates, currency, and other measurements or parameters.
  • the application may be programmed to auto detect the end users native local or language.
  • the mobile device may be able to auto detect that the end user is no longer in the native country. In such a case, the end user may not know the currency exchange. Further the end user may want to know how much a certain item will cost.
  • the mobile device is able to translate the cost of the item into the end users native currency.
  • Other language translation tasks may be completed by the mobile device in the example above.
  • FIG. 5 is a flowchart showing a method for central localization, according to another example of the principles described herein.
  • the method of FIG. 5 may begin by updating (block 502 ) the message catalog ( FIG. 2 , 212 ).
  • updating (block 502 ) the message catalog ( FIG. 2 , 212 ) may comprise adding a number of tags within the manager catalog ( FIG. 2 , 212 ).
  • the developer or administrator may desire to update any errors in language translation, add new words, or add a new language to the message catalog ( FIG. 2 , 212 ) in order to meet a number of end users' language localization needs.
  • the system FIG. 2 , 200 uses the manager node ( FIG.
  • the preprocessor ( FIG. 2 , 210 ) with the preprocessor ( FIG. 2 , 210 ) that is programmed to localize executable code at run-time.
  • the preprocessor ( FIG. 2 , 210 ) is programmed to search (block 503 ) for tags in the executables. Tags signify that the code, or portions thereof, needs to be translated (i.e., localized) into another language.
  • the manager node FIG. 2 , 202
  • the manager node is able to search for words that need to be translated into the end users native language using the preprocessor ( FIG. 2 , 210 ).
  • the tag's unique identification will allow the module to select (block 504 ) the native language to be used.
  • Each tag has a unique identification associated with each language is stored the message catalog.
  • the preprocessor is programmed to determine which language is to be selected according to the identification set forth in the module. Thus, allowing the words to be correctly translated into the native language of the end user. Once these words have been correctly identified, the tag is automatically replaced (block 505 ) with the appropriate translated text according the tag's unique identification.
  • Replaced tags are combined with the executable code to produce (block 506 ) localized executable code.
  • This executable localized code is now in the native language of the end user.
  • the localized executable code is distributed (block 507 ) to an unlimited number of client nodes.
  • distribution of the localized execution code is performed automatically by the manager node ( FIG. 2 , 202 ).
  • localization is performed once on the manage node ( FIG. 2 , 202 ), instead of n number of times for an n-node distribution system.
  • Any updates that are desired are updated on the manager node ( FIG. 2 , 202 ) using the message catalog ( FIG. 2 , 212 ) and are automatically distributed and executed (block 508 ) on the client nodes ( FIG. 2 , 203 , 205 ).
  • the program returns (block 509 ) to the manager node ( FIG. 2 , 202 ).
  • all the localization may take place on the manager node ( FIG. 2 , 202 ) and localized code is sent to the client nodes ( FIG. 2 , 203 , 205 ).
  • Each client node receives a copy of the localizations from the manager node ( FIG. 2 , 202 ).
  • each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises a number of executable instructions for implementing the specific logical function(s).
  • the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.
  • the specification and figures describe localization of computer program code.
  • the system and methods with a manager node, updating a message catalog, localizing code at the manager node, and distributing the localize code to a number of client nodes.
  • These systems and methods may have a number of advantages, including: (1) the message catalog resides on the manager node which avoids the problem of having to maintain a message catalog for every target node in a large distributed system; (2) when user-facing text needs to be changed, the developer or administrator may simply change the message catalog on the manager node while the changes are automatically delivered by the manager node to the client nodes; (3) the present systems and methods allow the developer or administrator to make faster changes to the code since there is a single maintenance point for localization (4) the present systems and methods also reduce the chances of errors because all nodes in a distributed system will have identical copies of the code; and (5) processing resources are reduced because localization is performed once, on the manager node, instead of n times for an n-node distributed system.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Machine Translation (AREA)

Abstract

A method of localizing a computer program code comprises, with a manager node, updating a message catalog, localizing code at the manager node, and distributing the localize code to a number of client nodes. An apparatus for localizing computer program code comprises a processor, and a memory communicatively coupled to the processor, in which the memory comprises a message catalog, and in which the processor updates a message catalog, localizes code at the manager node, and distributes localize code to a number of client nodes.

Description

    BACKGROUND
  • Due to competitive international markets, language specific modules are produced that can output information from one language into another language. The language into which the modules are translated may be an end user's native language. This allows the end user to use the module in their native language. Having a module translated correctly in the native language of the end user ensures the end user will correctly receive and understand the various interactive aspects of the module including, for example, prompts by the module, warnings, and user interface information, among others.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The accompanying drawings illustrate various examples of the principles described herein and are a part of the specification. The illustrated examples are given merely for illustration, and do not limit the scope of the claims.
  • FIG. 1 is a data flow diagram showing run-time localization.
  • FIG. 2 is a diagram showing a system employing centralized localization in a distributive environment, according to one example of the principles described herein.
  • FIG. 3 is a diagram showing a data flow within a method utilizing centralized localization in a distributive environment, according to one example of the principles described herein.
  • FIG. 4 is a flowchart showing a method for central localization, according to one example of the principles described herein.
  • FIG. 5 is a flowchart showing a method for central localization, according to another example of the principles described herein.
  • Throughout the drawings, identical reference numbers designate similar, but not necessarily identical, elements.
  • DETAILED DESCRIPTION
  • The present systems and methods describe a manager node comprising a message catalog and a preprocessor for localizing the executable code at run-time. The manager node searches for a number of tags or tokens to localize current target tags or tokens; and determines the tags' or tokens' unique identification and native language environment. The manager node then sends the localized executable code to client nodes to meet end user needs by translating the executable code into the end users native language in one example.
  • A manager node for distributing a number of localization codes to client nodes includes: a network connection for providing services for sending localization codes to a client node over a network; a manager node for containing a message catalog to store localization code, tags or tokens; and a preprocessor programmed for reading tags or tokens associated with message catalog; and determining language for replacing current tag or token with new tag or token according to tag or token's unique identification associated with its language environment.
  • A computer program product includes a computer readable storage medium, the computer readable storage medium comprising computer readable program code embodied therewith to update a module with tags or tokens which provides functionality for the module, the computer readable program code including: computer readable program code to read tags or tokens associated with message catalog; and computer readable program code to determine tags needing replacement.
  • Localization may be implemented for a particular system or enterprise. These systems or enterprises comprise modules to be translated into the end user's native language. Localization may be distributed and executed on a number of client nodes. For example, localization may be distributed and executed on a large number of client devices within a business entity. There may be some desire to bring about localization that can be distributed to all the client nodes. Consequently, localization code may be distributed to each node independently to produce desired language output to better meet end user needs and translation requirements.
  • In order to make an internationally competitive software product, a language translation module within the software product may be designed to produce output in a number of different languages to accommodate users of different languages. Thus, this language translation module may be configured to translate words appearing to a user during execution of the software product into several languages in order for the user to understand and appropriately use the software product.
  • Also, in one example, new words may be added to the language translation module via a message catalog. A message catalog serves as a dictionary to translate one language into another language. A developer or administrator may make appropriate updates to the message catalog for each client node. This task may prove tedious and time consuming if, for example, the language translation module of thousands of client nodes are to be updated in a similar manner. In one example, if a developer or administrator uses run-time localization, the developer or administrator must make appropriate updates to thousands of client nodes individually. In another example, if a developer or administrator uses compile-time localization, the developer or administrator can not do updates once the localization code has been compiled. The developer or administrator must recompile the localization code if any updates are to be promulgated.
  • The subject matter disclosed in the present specification provides such a developer or administrator the ability to update the message catalog on a manager node. These localization updates made to the manager node are automatically delivered by the manger node to a number of client nodes as executable localization code. The present specification discloses methods and systems for centralized module localization. Consequently, the message catalog may be updated on the manager node and may be delivered automatically to the client nodes to suit the particular native language needs of an end user.
  • In various examples, the centralized module localization described is used by a developer or administrator to update a message catalog or translation service on the manager node or translation service endpoint. Once the message catalog is updated, it is then automatically delivered to the client nodes to better suit particular end user native language needs. This allows the developer or administrator to make fast updates through a network of client devices since there is a single maintenance point for localization: the manager node.
  • As used in the present specification and in the appended claims, the term “localization” is meant to be understood broadly as any process of translation of user-interactive characters, words, expressions, phrases, or sentences displayed to a user of a software product into a number of different languages. In one example, localization may further include cultural adaptation of the software product to conform to a cultural aspect of a region of the world. In another example, localization may be applied to software, video games, or websites among other forms of user-interactive words. In another example, localization may be applied to provide users with different dialects of a particular language.
  • Further, as used in the present specification and in the appended claims, the term “preprocessor” is meant to be understood broadly as a routine executed by a processor that processes source code before the code is compiled, resulting in altered source code.
  • Still further, as used in the present specification and in the appended claims, the terms “tag” or “token” is meant to be understood broadly as a string of characters categorized by a set of rules to match, specify, or recognize a sequence of a number of characters in a string of text.
  • Throughout this specification and in the appended claims, the term “centralized localization” refers broadly to a predefined function that will be performed on given inputs at a centralized computing device to produce desired output to a number of node computing devices. Consequently, centralized localization may encapsulate a manager node coupled with a preprocessor and message catalog. The manager node allows the operator access to the message catalog. The message catalog stores and contains all the desired languages and words needed for localization. The languages and words are associated with a number of tags or tokens to determine if a word can be translated from one language or another. Further, a unique language identification is associated with each tag or token that allow for specific language localization. In one example, these tags or tokens are searchable using a preprocessor programmed to search for and replace each tag or token according to the unique language of end user. The unique tag identification may be provided for a number of languages. For example, a unique tag identification may be provided for a portion of or all known languages.
  • Thus, aspects of the present specification may be embodied as a system, method, or computer program product. Accordingly, aspects of the present specification may take the form of hardware or a combination of hardware and software. Furthermore, aspects of the present specification may take the form of a computer program product embodied in a number of computer readable mediums having computer readable program code embodied thereon.
  • Any combination of computer readable medium(s) may be utilized. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical electromagnetic, infrared, or semiconductor system, apparatus, or device or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable mediums would include the following: an electrical connection having a number of wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, a network based service, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with any instruction execution system, apparatus, or device such as, for example, a processor.
  • Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing. Computer program code for carrying out operations of the present specification may be written in an object oriented programming language such as Java, Smalltalk, or C++, among others. Computer program code for carrying out operations of the present specification may also be written in declarative programming language such as Structured Query Language. However, the computer program code for carrying out operations of the present systems and methods may also be written in procedural programming languages, such as, for example, the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, thought the internet using an internet service provider). Further, the remote computer may be connected to the user's computer through a wired or wireless network.
  • Flowchart illustrations and/or block diagrams of methods, apparatus, and computer program products are disclosed. Each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via a processor of the computer or other programmable data processing apparatus, implement the functions/acts specified in the flowchart and/or block diagram block or blocks
  • In one example, these computer program instructions may be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instructions which implement the functions/act specified in the flowchart and/or block diagram blocks or blocks.
  • The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operations to be performed on the computer or other programmable apparatus to produce a computer implement process such that the instructions which execute on the computer or other programmable apparatus implement the functions/acts specified in the flowchart and/or block diagram blocks or blocks.
  • In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present systems and methods. It will be apparent, however, to one skilled in the art that the present apparatus, systems, and methods may be practiced without these specific details. Reference in the specification to “an example” or similar language means that a particular feature, structure, or characteristic described in connection with that example is included as described, but may not be included in other examples.
  • Referring now to the figures, FIG. 1 is a data flow diagram (100) showing run-time localization that distributes the un-localization code to client nodes. In FIG. 1, a data flow diagram (100) depicts an operator (101) sending (106) un-localized code over a network, such as, for example, the Internet, to a number of client nodes (103, 104). Although only two client nodes (103, 104) are depicted, as indicated by client node (104) being designated as “client node n,” the system any number of client nodes (103, 104). Further, it should be noted that client node n (104) is to be referred to as the last client node in the range of client nodes that received the un-localized code. These un-localized codes are then localized and executed (108) using individual message catalogs located on each of the client nodes (103, 104).
  • In the example of FIG. 1 the operator (101) desires to update a system to add more tags to the message catalogs within the client nodes (103, 104) in order to expand the number of characters, words, expressions, phrases, or sentences within the message catalogs. The operator (101) runs (105) a command that sends un-localized code (106) from the manager node (102) along with executable code (108) to the client nodes (103, 104) containing a copy of the message catalog (212). At either run-time or compile-time, a process uses the message catalog with the un-localized code to produce (107) executable localized code in the appropriate language. For example, the process replaces the current tags with language appropriate tags. This localized executable code is executed on the client nodes (103, 104). The operator (101) sends the un-localized code to each client node (103, 104) where the code is localized into executable code. In one example, the code is localized into executable code by replacing the tag with the target language tag via the message catalog.
  • In keeping with the example given above of having the operator (101) send (106) un-localized code to the client nodes (103, 104) where the code is localized (107) with a message catalog, suppose that the developer or administrator desires to update the message catalog on all the client nodes (103, 104). Further, suppose that the client nodes (103, 104) have grown to be in the thousands. Using a compile-time method, a developer or administrator must recompile or repack the module every time an update is been made to the message catalog. Alternatively, using a run-time method a developer or administrator must maintain a message catalog on every client node (103, 104). Thus, the developer or administrator must recompile, repack, or maintain several message catalogs on client nodes (103, 104) when a desired update is made.
  • FIG. 2 is a diagram showing a data flow within a method utilizing centralized localization in a distributive environment, according to one example of the principles described herein. FIG. 2 shows a system (200) that utilizes centralized localization. The operator (201) accesses the manager node (202) via a user interface. The operator (201) desires to update a message catalog (212). The message catalog (212) is maintained on the manager node (202) within memory (211). The operator (201) makes a number of updates to the localization code in the message catalog (212).
  • For example, the operator (201) instructs the manager node (202) via the processor (220) to update the message catalog (212) stored within the memory (211) of the manager node (202). In this example, the processor (213) of the manager node (202) updates the localization code in the message catalog (212) as instructed by the operator (201) via the preprocessor (210). The processor (213) may include the hardware architecture or a combination of hardware and software architecture for retrieving executable code from the memory (211) and executing the executable code. The executable code, when executed by the preprocessor (210), causes the processor (213) and preprocessor (210) to implement at least the functionality of updating the message catalog (212) and distributing an executable for consumption by a number of client nodes (203, 205) as described herein. In the course of executing code, the preprocessor (210) may receive input from and provide output to a number of the remaining hardware units. In this manner, the localization code of the message catalog (212) is made executable.
  • The localization code is automatically sent over a network from the manager node (202) where the executable localization code is received and executed by the client nodes (203, 205). It should be noted that client node (205) is the n node or last node in the series of nodes that the developer or administrator is sending the executable localization code to (209). Thus, all the client nodes (203, 205) receive the same updated executable localization code, from a single maintenance point or source; namely, the manager node (202). The end users (204) are able to view the text portion of the software product in their native language due to the local execution of the localization code.
  • Further, it should be noted that the executable localized code is language specific; the localized executable code may differ from language to language. For example, assume one client speaks Spanish and another client speaks French. Further, assume each client desires to have the same message translated into their native language. Each language follows different rules for syntax as well as different characters comprising each word to be translated. When the message is translated into Spanish or French the characters order, words, or phrases will be changed or reordered, and will no longer be identical to each other. When the code is localized into an executable where the executable localized code is in Spanish, this Spanish-localized code does not match the executable localized code in French. Thus, executable localized code is language specific.
  • The network architecture shown in FIG. 2 is one example of how the present systems and methods may be implemented. In the present example, for the purposes of simplicity in illustration, the operator (201), the manager node (202), and client nodes (203, 205) are separate devices communicatively coupled to each other. However, the principles set forth in the present specification extend equally to any alternative configuration in which the operator (201), the manager node (202), and client nodes (203, 205) are configured as one device, or two devices with one device comprising one of these devices, and the other device comprising two of these devices. As such, alternative examples within the scope of the principles of the present specification include, but are not limited to, examples in which the operator (201), the manager node (202), and client nodes (203, 205) are implemented by the same computing device, examples in which the functionality of the operator (201), the manager node (202), or client nodes (203, 205) are implemented by multiple interconnected computers, and examples in which the operator (201), the manager node (202), and client nodes (203, 205) communicate directly through a bus without intermediary network devices.
  • In one example, the manager node (202) may be a remotely-hosted or may be a cloud-based translation service rather than a locally-executed program. In this example, a third party may provide such a service where a translation is obtained remotely. This service may provide a more up-to-date version of a message catalog (212) since a business would have more centralized control over translation. Further, in one example, the message catalog (212) may be updated from a single service rather than a manager node (202). Thus, if a number of manager nodes (202) containing a number of message catalogs (212) are to be updated, only a few operators (201) may be required to instruct the manager nodes (212) to make such an update for such a service since it is easier to update a single service.
  • FIG. 3 is a diagram showing a data flow within a method utilizing centralized localization in a distributive environment, according to one example of the principles described herein. FIG. 3 shows how the system (200) of FIG. 2 invokes centralized localization. The operator (201) developer or administrator may desire to update the message catalog (FIG. 2, 212). The localized code that was associated with the message catalog (FIG. 1, 107) as described above is only localized on the individual client nodes (103, 104). However, using centralized localization, the message catalog (FIG. 2, 212) is coupled with the manager node (202). Thus, the un-localized code is now localized (307) with the message catalog (FIG. 2, 212) on the manager node (202) before the code is sent to the client nodes (203, 205). Once the executable code has been localized on the manager node (302), it is sent (306) automatically to the client nodes (203, 205). Thus, the localized executable code has been sent to all the client nodes (203, 205) from a single maintenance point; the manager node (202).
  • Further, client node n (205) is the last node in the series of client nodes that the localization code is sent to. Additionally, client nodes 2 to n will receive the same message (309) that client node 1 (204) received. Thus, in this manner, all the client nodes (203, 205) will receive the same localization executable code. The system allows the developer or administrator to make fast updates to the code from a single maintenance point. This reduces chances for errors, and processing resources since the localization is performed one time on the manager node (202), instead of n times for an n-node distribution system.
  • FIG. 4 is a flowchart showing a method for central localization (FIG. 3, 300), according to one example of the principles described herein. The centralized localization systems and methods described herein may be implemented using hardware or a combination of hardware and software.
  • The centralized localization process may begin by updating (block 401) the message catalog (FIG. 2, 212). In one example, the developer or administrator may desire to correct an error or spelling of a word in a different language. Alternatively, the developer or administrator may desire to add new words or languages to the existing message catalog. As noted above, this message catalog (FIG. 212) may be stored on the manager node (FIG. 2, 202) accessed by a network by, for example, an operator (201).
  • Once the appropriate updates have been made to the message catalog (FIG. 2, 212) (block 401), with the preprocessor (210), the manger node (FIG. 2, 202) localizes (block 402) the executable code at run-time. The localized code is automatically distributed (block 403) to all the client nodes (203, 205). Thus, each client node (203, 205) receives the same executable localization code from the message catalog (FIG. 2, 212). In one example, if any undesired operation or translation were to occur, the developer or administrator would update the message catalog (FIG. 2, 212) and maintain it from a single system; namely, the manager node by repeating the process described above.
  • In another example, a mobile version of the present systems and methods may be implemented for use by mobile devices, such as, for example, smart phones. Such mobile devices may, when network access is available, output or translate information into an end user's native language. For example, a mobile device may run an application that displays dates, currency, and other measurements or parameters. In one example, the application may be programmed to auto detect the end users native local or language. In this example, if the end user travels from his native country into another country that does not speak the same language or use the same currency, the mobile device may be able to auto detect that the end user is no longer in the native country. In such a case, the end user may not know the currency exchange. Further the end user may want to know how much a certain item will cost. The mobile device is able to translate the cost of the item into the end users native currency. Other language translation tasks may be completed by the mobile device in the example above.
  • FIG. 5 is a flowchart showing a method for central localization, according to another example of the principles described herein. The method of FIG. 5 may begin by updating (block 502) the message catalog (FIG. 2, 212). In one example, updating (block 502) the message catalog (FIG. 2, 212) may comprise adding a number of tags within the manager catalog (FIG. 2, 212). In one example, the developer or administrator may desire to update any errors in language translation, add new words, or add a new language to the message catalog (FIG. 2, 212) in order to meet a number of end users' language localization needs. The system (FIG. 2, 200) uses the manager node (FIG. 2, 202) with the preprocessor (FIG. 2, 210) that is programmed to localize executable code at run-time. The preprocessor (FIG. 2, 210) is programmed to search (block 503) for tags in the executables. Tags signify that the code, or portions thereof, needs to be translated (i.e., localized) into another language. Thus, the manager node (FIG. 2, 202) is able to search for words that need to be translated into the end users native language using the preprocessor (FIG. 2, 210).
  • After the desired tags have been found using the preprocessor (FIG. 2, 212), the tag's unique identification will allow the module to select (block 504) the native language to be used. Each tag has a unique identification associated with each language is stored the message catalog. The preprocessor is programmed to determine which language is to be selected according to the identification set forth in the module. Thus, allowing the words to be correctly translated into the native language of the end user. Once these words have been correctly identified, the tag is automatically replaced (block 505) with the appropriate translated text according the tag's unique identification.
  • Replaced tags are combined with the executable code to produce (block 506) localized executable code. This executable localized code is now in the native language of the end user. The localized executable code is distributed (block 507) to an unlimited number of client nodes. In one example, distribution of the localized execution code is performed automatically by the manager node (FIG. 2, 202). Thus, localization is performed once on the manage node (FIG. 2, 202), instead of n number of times for an n-node distribution system. Any updates that are desired are updated on the manager node (FIG. 2, 202) using the message catalog (FIG. 2, 212) and are automatically distributed and executed (block 508) on the client nodes (FIG. 2, 203, 205). Once the localized code is distributed on the client nodes (508) the program returns (block 509) to the manager node (FIG. 2, 202).
  • Thus, in the above example, all the localization may take place on the manager node (FIG. 2, 202) and localized code is sent to the client nodes (FIG. 2, 203, 205). Each client node (FIG. 2, 203, 205) receives a copy of the localizations from the manager node (FIG. 2, 202).
  • The preceding description has been presented to illustrate and describe examples of the principles described. This description is not intended to be exhaustive or to limit these principles to any precise form disclosed. Many modifications and variations are possible in light of the above teaching.
  • The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operations of possible implementations of systems, methods, and computer program products. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises a number of executable instructions for implementing the specific logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration and combination of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
  • The terminology used herein is for the purpose of describing particular examples, and is not intended to be limiting. As used herein, the singular forms “a,” “an” and “the” are intended to include the plural forms as well, unless the context clearly indicated otherwise. It will be further understood that the terms “comprises” and/or “comprising” when used in the specification, specify the presence of stated features, integers, operations, elements, and/or components, but do not preclude the presence or addition of a number of other features, integers, operations, elements, components, and/or groups thereof.
  • The specification and figures describe localization of computer program code. The system and methods, with a manager node, updating a message catalog, localizing code at the manager node, and distributing the localize code to a number of client nodes. These systems and methods may have a number of advantages, including: (1) the message catalog resides on the manager node which avoids the problem of having to maintain a message catalog for every target node in a large distributed system; (2) when user-facing text needs to be changed, the developer or administrator may simply change the message catalog on the manager node while the changes are automatically delivered by the manager node to the client nodes; (3) the present systems and methods allow the developer or administrator to make faster changes to the code since there is a single maintenance point for localization (4) the present systems and methods also reduce the chances of errors because all nodes in a distributed system will have identical copies of the code; and (5) processing resources are reduced because localization is performed once, on the manager node, instead of n times for an n-node distributed system.
  • The preceding description has been presented to illustrate and describe examples of the principles described. This description is not intended to be exhaustive or to limit these principles to any precise form disclosed. Many modifications and variations are possible in light of the above teaching.

Claims (15)

What is claimed is:
1. A method of localizing a computer program code comprising:
with a manager node,
updating a message catalog;
localizing code at the manager node; and
distributing the localized code to a number of client nodes.
2. The method of claim 1, in which updating a message catalog comprises adding a number of tags to the message catalog.
3. The method of claim 1, in which updating a message catalog comprises of correcting a number of errors in the message catalog.
4. The method of claim 1, in which updating a message catalog comprises adding a number of additional languages or a combination thereof.
5. The method of claim 1, in which localizing code at the manager node comprises:
searching for a number of tags in an executable in the computer program code;
selecting a native language to apply; and
replacing a tag with the appropriate translated text.
6. The method of claim 5, in which selecting a native language to apply comprises selecting a native language to apply based on the tag's ID and native local.
7. The method of claim 5, further comprising producing a localized executable code.
8. An apparatus for localizing computer program code, comprising:
a processor; and
a memory communicatively coupled to the processor;
in which the memory comprises a message catalog, and
in which the processor:
updates a message catalog;
localizes code at the manager node; and
distributes localized code to a number of client nodes.
9. The apparatus of claim 8, further comprising a preprocessor, in which, the preprocessor, when instructed by the processor:
searches for a number of tags in an executable in the computer program code;
selects a native language to apply; and
replaces a tag with the appropriate translated text.
10. The apparatus of claim 8, in which the preprocessor produces a localized executable code.
11. The apparatus of claim 8, in which the processor distributes localized code to a number of client nodes.
12. The apparatus of claim 11, in which the localization code is executable on the client nodes.
13. A computer program product for localization of computer code, comprising:
a computer readable storage medium comprising computer usable program code embodied therewith, the computer usable program code comprising:
computer usable program code to, when executed by a processor, update a message catalog;
computer usable program code to, when executed by a processor, localize code at the manager node; and
computer usable program code to, when executed by a processor, distribute the localized code to a number of client nodes.
14. The computer program product of claim 13, further comprising:
computer usable program code to, when executed by a processor, search for a number of tags in an executable in the computer program code;
computer usable program code to, when executed by a processor, select a native language to apply; and
computer usable program code to when executed by a processor, replace a tag with the appropriate translated text.
15. The computer program product of claim 13, further comprising computer usable program code to, when executed by a processor, produce a localized executable code.
US13/559,255 2012-07-26 2012-07-26 Localizing computer program code Expired - Fee Related US9727350B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/559,255 US9727350B2 (en) 2012-07-26 2012-07-26 Localizing computer program code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/559,255 US9727350B2 (en) 2012-07-26 2012-07-26 Localizing computer program code

Publications (2)

Publication Number Publication Date
US20140033184A1 true US20140033184A1 (en) 2014-01-30
US9727350B2 US9727350B2 (en) 2017-08-08

Family

ID=49996289

Family Applications (1)

Application Number Title Priority Date Filing Date
US13/559,255 Expired - Fee Related US9727350B2 (en) 2012-07-26 2012-07-26 Localizing computer program code

Country Status (1)

Country Link
US (1) US9727350B2 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107402746A (en) * 2016-05-20 2017-11-28 阿里巴巴集团控股有限公司 A kind of method and device of automatic code generating file
WO2017210175A1 (en) * 2016-06-03 2017-12-07 Ebay Inc. Optimization of user interface data transmission
US10466970B2 (en) 2015-10-20 2019-11-05 Sap Se Jurisdiction based localizations as a service
US20200257544A1 (en) * 2019-02-07 2020-08-13 Goldmine World, Inc. Personalized language conversion device for automatic translation of software interfaces

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6490547B1 (en) * 1999-12-07 2002-12-03 International Business Machines Corporation Just in time localization
US20030004703A1 (en) * 2001-06-28 2003-01-02 Arvind Prabhakar Method and system for localizing a markup language document
US7369984B2 (en) * 2002-02-01 2008-05-06 John Fairweather Platform-independent real-time interface translation by token mapping without modification of application code
US20090111585A1 (en) * 2007-10-25 2009-04-30 Disney Enterprises, Inc. System and method of localizing assets using text substitutions
US7698126B2 (en) * 2005-03-08 2010-04-13 Microsoft Corporation Localization matching component
US7957954B2 (en) * 2004-09-02 2011-06-07 International Business Machines Corporation System and computer program product for national language support using a multi-language property file
US20110191703A1 (en) * 2008-09-22 2011-08-04 Fujifilm North America Corporation System and Method for Providing Customized and Localized User Interface
US20110214118A1 (en) * 2010-02-26 2011-09-01 James Antill Systems and methods for generating and storing translation information as package metadata
US8195766B2 (en) * 2005-03-15 2012-06-05 Microsoft Corporation Dynamic implicit localization of web content
US8265924B1 (en) * 2005-10-06 2012-09-11 Teradata Us, Inc. Multiple language data structure translation and management of a plurality of languages
US8412510B2 (en) * 2010-04-21 2013-04-02 Fisher-Rosemount Systems, Inc. Methods and apparatus to display localized resources in process control applications
US20130085927A1 (en) * 2011-10-04 2013-04-04 Research In Motion Limited Providing Increased Ability To Perform A Transaction Based On Locale

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6859820B1 (en) * 2000-11-01 2005-02-22 Microsoft Corporation System and method for providing language localization for server-based applications
EP1315086B1 (en) * 2001-11-27 2006-07-05 Sun Microsystems, Inc. Generation of localized software applications
CA2498867A1 (en) * 2005-02-28 2006-08-28 Cognos Incorporated System and method for the localization of released computer program
US7797151B2 (en) * 2007-02-02 2010-09-14 Darshana Apte Translation process component

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6490547B1 (en) * 1999-12-07 2002-12-03 International Business Machines Corporation Just in time localization
US20030004703A1 (en) * 2001-06-28 2003-01-02 Arvind Prabhakar Method and system for localizing a markup language document
US7369984B2 (en) * 2002-02-01 2008-05-06 John Fairweather Platform-independent real-time interface translation by token mapping without modification of application code
US7957954B2 (en) * 2004-09-02 2011-06-07 International Business Machines Corporation System and computer program product for national language support using a multi-language property file
US7698126B2 (en) * 2005-03-08 2010-04-13 Microsoft Corporation Localization matching component
US8195766B2 (en) * 2005-03-15 2012-06-05 Microsoft Corporation Dynamic implicit localization of web content
US8265924B1 (en) * 2005-10-06 2012-09-11 Teradata Us, Inc. Multiple language data structure translation and management of a plurality of languages
US20090111585A1 (en) * 2007-10-25 2009-04-30 Disney Enterprises, Inc. System and method of localizing assets using text substitutions
US20110191703A1 (en) * 2008-09-22 2011-08-04 Fujifilm North America Corporation System and Method for Providing Customized and Localized User Interface
US20110214118A1 (en) * 2010-02-26 2011-09-01 James Antill Systems and methods for generating and storing translation information as package metadata
US8412510B2 (en) * 2010-04-21 2013-04-02 Fisher-Rosemount Systems, Inc. Methods and apparatus to display localized resources in process control applications
US20130085927A1 (en) * 2011-10-04 2013-04-04 Research In Motion Limited Providing Increased Ability To Perform A Transaction Based On Locale

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10466970B2 (en) 2015-10-20 2019-11-05 Sap Se Jurisdiction based localizations as a service
CN107402746A (en) * 2016-05-20 2017-11-28 阿里巴巴集团控股有限公司 A kind of method and device of automatic code generating file
WO2017210175A1 (en) * 2016-06-03 2017-12-07 Ebay Inc. Optimization of user interface data transmission
US10375211B2 (en) 2016-06-03 2019-08-06 Ebay Inc. Optimization of user interface data transmission for a consistent multi-platform experience service delivery
US20200257544A1 (en) * 2019-02-07 2020-08-13 Goldmine World, Inc. Personalized language conversion device for automatic translation of software interfaces

Also Published As

Publication number Publication date
US9727350B2 (en) 2017-08-08

Similar Documents

Publication Publication Date Title
CN106796522B (en) System and method for updating source code file
US10445334B1 (en) Query transmission in type-limited interchange formats
US9280339B1 (en) Class replacer during application installation
US20190340212A1 (en) Dynamic content modifications
CN104021460A (en) Work flow management system and work flow handling method
US9823908B2 (en) Apparatus for providing framework to develop client application executed on multiple platforms, and method using the same
US10394965B2 (en) Concept recommendation based on multilingual user interaction
US9195456B2 (en) Managing a catalog of scripts
CN112181489B (en) Code migration method, device, computer equipment and storage medium
US10379826B1 (en) Determining inputs to an integration flow component
US9727350B2 (en) Localizing computer program code
JP2011095841A (en) In-context exact (ice) match
US11314491B1 (en) Generating asynchronous runtime compatibility in JavaScript applications
US11847437B2 (en) Performing translations on change requests
CN104978394A (en) Webpage tag data organization and update method for multi-language display
CN103914572A (en) Database construction system, device and method
CN110866029A (en) sql statement construction method, device, server and readable storage medium
US20170083512A1 (en) System and method for translation and localization of content in digital applications
US20120150886A1 (en) Placeholders returned for data representation items
CN115599386A (en) Code generation method, device, equipment and storage medium
US20180329873A1 (en) Automated data extraction system based on historical or related data
CN106873989A (en) Application program building method and device
US10339151B2 (en) Creating federated data source connectors
US10936557B2 (en) Relational database schema generation
CN104991858A (en) Method for automatically generating outline and label for code modification

Legal Events

Date Code Title Description
AS Assignment

Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PENDERGRASS, ERIC ADDKISON;MUEHLBRADT, KLAUS;REEL/FRAME:028655/0115

Effective date: 20120726

AS Assignment

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.;REEL/FRAME:037079/0001

Effective date: 20151027

AS Assignment

Owner name: ENTIT SOFTWARE LLC, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP;REEL/FRAME:042746/0130

Effective date: 20170405

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: JPMORGAN CHASE BANK, N.A., DELAWARE

Free format text: SECURITY INTEREST;ASSIGNORS:ATTACHMATE CORPORATION;BORLAND SOFTWARE CORPORATION;NETIQ CORPORATION;AND OTHERS;REEL/FRAME:044183/0718

Effective date: 20170901

Owner name: JPMORGAN CHASE BANK, N.A., DELAWARE

Free format text: SECURITY INTEREST;ASSIGNORS:ENTIT SOFTWARE LLC;ARCSIGHT, LLC;REEL/FRAME:044183/0577

Effective date: 20170901

AS Assignment

Owner name: MICRO FOCUS LLC, CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:ENTIT SOFTWARE LLC;REEL/FRAME:050004/0001

Effective date: 20190523

FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20210808

AS Assignment

Owner name: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC), CALIFORNIA

Free format text: RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0577;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:063560/0001

Effective date: 20230131

Owner name: NETIQ CORPORATION, WASHINGTON

Free format text: RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:062746/0399

Effective date: 20230131

Owner name: MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.), WASHINGTON

Free format text: RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:062746/0399

Effective date: 20230131

Owner name: ATTACHMATE CORPORATION, WASHINGTON

Free format text: RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:062746/0399

Effective date: 20230131

Owner name: SERENA SOFTWARE, INC, CALIFORNIA

Free format text: RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:062746/0399

Effective date: 20230131

Owner name: MICRO FOCUS (US), INC., MARYLAND

Free format text: RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:062746/0399

Effective date: 20230131

Owner name: BORLAND SOFTWARE CORPORATION, MARYLAND

Free format text: RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:062746/0399

Effective date: 20230131

Owner name: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC), CALIFORNIA

Free format text: RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:062746/0399

Effective date: 20230131