FRAMEWORK FOR AUTOMATION AND VERIFICATION OF NON-NATIONAL LANGUAGE LOCALIZATION IN A CLOUD-BASED APPLICATION
The localization framework automates the translation and integration of non-native language files for cloud applications, addressing the labor-intensive and error-prone nature of existing processes, and ensuring accurate and synchronized translations with native language file changes.
Patent Information
- Application Number
- DE102024112447
- Authority / Receiving Office
- DE · DE
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-10-31
- Filing Date
- 2024-05-03
- Publication Date
- 2025-04-30
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
BACKGROUND
[0001] The user interfaces of cloud applications are often presented in the native language of the company providing the software. Such applications are often used in different locations where the local language does not match the native language of the application provider. Therefore, it can be useful to translate the user interface text into any number of languages. However, such translations often require a lot of manual effort and can be difficult to validate. BRIEF DESCRIPTION OF THE DRAWINGS
[0002] Certain embodiments discussed herein are described with reference to the drawings below. However, the accompanying drawings only illustrate certain aspects or embodiments of the embodiments described herein by way of example and are not intended to limit the scope of the claims. Fig. 1 shows a block diagram of an example system for implementing a localization framework for automating and verifying the localization of non-native languages in a cloud-based application, in accordance with one or more embodiments disclosed herein; Fig. 2 shows an overview of an example method for performing localization of a cloud-based application in accordance with one or more embodiments disclosed herein; Fig. 3 shows an overview of an example method for validating a test build of a cloud-based application and deploying a production build of the cloud-based application according to one or more embodiments disclosed herein; and Fig. 4 shows a block diagram of a computing device according to one or more embodiments of this disclosure. DETAILED DESCRIPTION OF THE ILLUSTRATIVE EMBODIMENTS
[0003] Cloud-based applications are often structured as any number of microservices. Such applications often display text in an application's user interface to convey information to users. This text is typically in the native language of the organization providing the application (e.g., a company in the United States may create an application with text in English). Creating versions of a user interface in a cloud-based application that are translated into multiple languages involves translating the text of the native-language files, integrating the translated files into the product, and visually reviewing the product for errors. Many cloud-based architectures further exacerbate this complexity by having multiple code repositories for different aspects of the application.With such an architecture, each repository requires native and non-native language files, which are then integrated into a cohesive product for testing and production. The additional complexity of integrating these multiple languages into the application can result in significant manual effort.
[0004] The process of preparing a cloud-based application to render in both its native language and other languages is called internationalization. Internationalization involves replacing the human-readable text strings of the user interface with markers or variables. The original native-language text is then collected into a resource bundle of all native-language strings, which can contain any number of files, each containing a portion of the application's native-language text. At runtime, when a user views the application in their native language, the user interface's presentation layer replaces the markers with the correct strings from the native-language files.
[0005] To support multiple languages or locales, the native language text strings are translated and bundled into resource bundles that correspond to the native language bundle. This process can be referred to as localization.
[0006] In cloud-based architectures, there are often any number of microservices that all need to be internationalized and, in addition to the native language bundle, have several non-native language bundles. These microservices are often kept in separate source code repositories, increasing the localization effort. For a single microservice in a cloud-based application, the total number of files to be managed is n + 1, where n is the number of languages. The additional bonus is for the internationalized key set. Since most cloud-based products have m microservices, the total number of files is m * (n + 1).
[0007] Typically, cloud-based application providers don't have trained translators on staff. Therefore, the task of translating native (or source) language files into other languages is handled by a third party.
[0008] In some cases, third-party translators can be granted access to the entire codebase to access the native-language files to be translated. Such comprehensive access allows translators to access all the text required for translation. The third-party provider can then integrate the non-native language files directly into the application. However, many cloud-based application providers do not want to grant access to the entire codebase to entities outside the cloud-based application provider for security reasons.
[0009] Another option is to package the native language files and provide this package to the translation company. After some time, the translators complete their work and provide the cloud application provider with the non-native language files that correspond to the native language files. This process can be time-consuming and takes place outside the data source (e.g., at the cloud application provider). During the translation process, the cloud application provider may make changes to the native language files without informing the translators. This may result in the newly translated files no longer being consistent with the now-modified native language files. Furthermore, the cloud application provider must integrate the non-native text back into the product.This process can be labor-intensive and can cause errors when reintegrating the non-native translated text.
[0010] To address at least the above-mentioned problems in providing cloud-based applications that can be rendered in a native language and any number of non-native languages, the embodiments disclosed herein provide a framework for providing native language files of a cloud-based application to third-party translators without granting the third-party translators access to the source code of the cloud-based application. Furthermore, in one or more embodiments, the framework automates the integration of the translated non-native language files into a test version of the cloud-based application, allowing the provider of the cloud-based application and the third-party translator to review the cloud-based application before building a production version of the cloud-based application.In one or more embodiments, the framework also automates a process to alert third-party translators of changes to the native language files when the provider of the cloud-based application changes such files before translation is completed.
[0011] In one or more embodiments, a cloud-based application provider creates, generates, or receives a first version of a cloud-based application that may contain any number of separate microservices and has been internationalized as described above. In one or more embodiments, the internationalized version of the cloud-based application, including the native language files and internationalization keys, is provided to a localization framework. In one or more embodiments, the localization framework extracts the native language files and internationalization keys from the cloud-based application and transfers the native language files in a native language bundle, as well as the internationalization keys, to a third-party data repository accessible by a third-party translation service.
[0012] In one or more embodiments, a third-party translation service accesses the native language package and initiates the translation of the native language text in the native language files into non-native text stored in non-native language files corresponding to the native language files. In one or more embodiments, the third-party translation service can complete the translation of the native language text in the native language files into the non-native text in the corresponding non-native language files if the provider of the cloud-based application has not made any changes to the native language files of the cloud-based application during the period in which the translation takes place.In one or more embodiments, the internationalization keys are used by the third-party translation service to identify mappings between the keys and the language files.
[0013] In one or more embodiments, in some scenarios, the provider of the cloud-based application may continue development of the cloud-based application while translation is taking place. In one or more embodiments, this development may include changes to the native language text of the cloud-based application. In one or more embodiments, if such changes are made to the native language text during the period in which translation is taking place, the localization framework may detect that the changes have occurred and obtain updated native language files that include the changes.In one or more embodiments, the localization framework then sends a notification that the changes have occurred to the third-party translation service and replaces the previous versions of the native language files in the third-party data store with the updated native language files containing the changes. In one or more embodiments, the third-party translation service completes the translation of the native language text in the native language files into non-native text in the corresponding non-native language files, including the updated native language files containing the modified native language text automatically provided by the localization framework.
[0014] In one or more embodiments, the localization framework monitors the third-party data repository and detects when all translated non-native language files are present. In one or more embodiments, the localization framework retrieves the non-native language files from the third-party data repository and performs an initial check of the non-native language files. In one or more embodiments, the native language files provided to the third-party translation service via the third-party database each contain a number of parameters. In one or more embodiments, a parameter is a portion of text in the native language file that the cloud service provider does not want translated. For example, native language text strings may contain variables that the provider of the cloud-based application does not want translated, such asthe variable "A" in a text string stating "Server A is disconnected." In this scenario, the words "server," "is," and "disconnected" would need to be translated, but the parameter "A" would not. In one or more embodiments, each of these parameters in a native language file contributes to the parameter count for that file. Additionally, the localization framework may provide a file containing a list of other words (which may be referred to as reserved words) that the cloud-based application provider does not want translated, such as trademarked product names (e.g., DL380 G12), product lines (e.g., ProLiant servers), etc.In one or more embodiments, the localization framework's initial validation of the non-native files includes verifying that the parameter count in the non-native files matches the expected parameter count of the corresponding native files, and also performs a syntax check to ensure that instances of reserved words are not translated. In one or more embodiments, the order of parameters in a native file is not considered, as the order of parameters in the non-native files may change depending on the language into which the native language is being translated, due to differences between the native language and the non-native language.
[0015] In one or more embodiments, if the initial check fails, the erroneous results are provided to the third-party translation service so that the third-party translation service can update the non-native files to fix any errors found during the initial check. In one or more embodiments, if the initial check succeeds, the localization framework obtains the non-native files from the third-party data store and automatically integrates the non-native files into a test build of the cloud-based application deployed at a test site in a cloud infrastructure environment. In one or more embodiments, the provider of the cloud-based application and the third-party translation service each have access to the test build of the cloud-based application.In one or more embodiments, each party then performs a visual review of the test build. For example, the visual review by the third-party translation service may include viewing the translated text in the context in which a user of the cloud-based application would view the translated text and determining whether the translation truly says what the third-party translation service believes it should say in that context. As another example, the visual review by the provider of the cloud-based application may include viewing the translated text in the context of the cloud-based application and determining whether the text appears to appear in the correct places, is rendered appropriately, etc.
[0016] In one or more embodiments, if the visual inspection by either party fails, the external translation service may perform additional translation work to correct the issues found during the visual inspection. In one or more embodiments, if both parties approve the test build of the cloud-based application with the translations, each party provides the localization framework with an approval for the test build. In one or more embodiments, in response to the approvals, the localization framework updates the microservices of the cloud-based application so that the microservices use the non-native language files as needed when the cloud-based application is accessed and used by speakers of the non-native language.
[0017] Certain embodiments of this disclosure may provide a framework that enables the provision of native language files of a cloud-based application to a third-party translation service without providing the application's source code by providing only the native language files with the number of parameters, the internationalization keys, and a file containing a list of reserved words to a third-party data store accessible by the third-party translation service.The framework also automates the deployment of changes to native language files made during the translation period, performing an initial check of the translated non-native language files using the native language file parameter counts and the reserved word list, generating and deploying a test build of the cloud application to a test location in the cloud once the initial check passes, and creating a production version of the cloud-based application once the cloud-based application provider and the third-party translation service approve the test build.
[0018] Fig. 1 shows a block diagram of an example system for implementing a localization framework for automating and verifying the localization of non-native languages in a cloud-based application according to one or more embodiments disclosed herein. As in Fig. 1, the system may include a cloud infrastructure 100. The cloud infrastructure 100 may include any number of microservices, such as microservice A 104, microservice B 106, microservice C 110, microservice N 112, a user interface microservice 108, one or more shared microservices 114, and any number of communication components 116. The cloud infrastructure 100 may also include a test environment 120. The system may also include a localization framework 122, a translation data repository, and a translation service. Each of these components is described below.
[0019] In one or more embodiments, cloud infrastructure 100 is a collection of any number of computing devices and other components in which a cloud computing environment is deployed and which may host any number of cloud-based applications (e.g., cloud-based application 102), as-a-service (aaS) products (e.g., software aaS (SaaS), infrastructure aaS (laaS), platform aaS (PaaS), storage aaS (STaaS), etc.). In one or more embodiments, a computing device, as used herein, may be a single computing device, a set of computing devices, a portion of one or more computing devices, or any other physical, virtual, and / or logical grouping of computing resources.In one or more embodiments, a computing device is any device, part of a device, or group of devices capable of electronically processing instructions and may include, but is not limited to, one or more processors (e.g., components including circuitry), memory (e.g., random access memory (RAM)), input and output device(s), non-volatile storage hardware (e.g., solid-state drives (SSDs), persistent memory (Pmem) devices, hard disk drives (HDDs) (not shown)), one or more physical interfaces (e.g., network ports, storage ports), any number of other hardware components (not shown), and / or any combination thereof.
[0020] Examples of computing devices include, but are not limited to, a server (e.g., a blade server in a blade server enclosure, a rack server in a rack, etc.), a desktop computer, a mobile device (e.g., a laptop computer, a smartphone, a personal digital assistant, a tablet computer, a vehicle-mounted computer system, and / or other mobile computing device), a storage device (e.g., a hard disk drive array, a Fibre Channel storage device, an Internet Small Computer Systems Interface (iSCSI) storage device, a tape storage device, a flash memory array, a network-attached storage device, etc.), a network device (e.g., a switch, router, multi-layer switch, etc.), a virtual machine (running using the underlying physical hardware), a virtualized computing environment, a logical container (e.g.,for one or more cloud-based applications), one or more container pods, an Internet of Things (IoT) device, an array of nodes of computing resources, a supercomputing device, a data center or a portion thereof, and / or any other type of computing device with the above requirements. In one or more embodiments, some or all of the foregoing examples may be combined to create a system of such devices, or they may be separated into separate logical devices that may collectively be referred to as a computing device. Other types of computing devices may also be used without departing from the scope of the embodiments described herein, such as the one described in . Fig. 4 and described below. Cloud infrastructure 100 may include any number and / or type of such computing devices in any arrangement and / or configuration without departing from the scope of the embodiments disclosed herein.
[0021] In one or more embodiments, the storage and / or memory of a computing device or system of computing devices may be and / or include one or more data stores for storing any number of data structures that store any amount of data (e.g., information). In one or more embodiments, a data store is any type of storage unit and / or device (e.g., a file system, a database, a spreadsheet, RAM, and / or other storage mechanism or storage medium) for storing data. Furthermore, the data repository may include multiple different storage units and / or devices. The different storage units and / or devices may be of the same type or located in the same physical location.
[0022] In one or more embodiments, any memory and / or storage of a computing device or system of computing devices may be considered, in whole or in part, a non-transitory computer-readable medium that stores software and / or firmware.
[0023] Such software and / or firmware may include instructions that, when executed by one or more processors (not shown) and / or other hardware (e.g., circuitry) of a computing device and / or system of computing devices, cause the one or more processors and / or other hardware components to perform operations in accordance with one or more embodiments described herein.
[0024] The software instructions may be in the form of computer-readable program code to perform methods, processes, etc. of the embodiments described herein, and may, for example, be stored, in whole or in part, temporarily or permanently, on a non-transitory computer-readable medium such as a compact disc (CD), a digital versatile disc (DVD), a storage device, a floppy disk, tape storage, flash memory, physical storage, or other non-transitory computer-readable medium.
[0025] Cloud infrastructure 100 may include any number of computing devices, any number of which may collectively be considered a computing device as used herein. All or a portion of the computing devices may be of the same type or different types of computing devices.
[0026] In one or more embodiments, all or any portion of cloud infrastructure 100 may be managed, at least in part, by a container platform (not shown), such as Kubernetes. In one or more embodiments, a container platform includes a control plane (not shown). A control plane of a container platform may include various components for managing cloud infrastructure 100 (e.g., one or more API servers, controllers, schedulers, etc.). The control plane may, for example, be implemented on one or more master nodes, each of which may be a computing device (see above).
[0027] In one or more embodiments, the cloud infrastructure 100 may host any number of cloud-based applications (e.g., the cloud-based application 102) that may be implemented using a microservice architecture that may include any number of microservices (e.g., Microservice A 104, Microservice B 106, Microservice C 110, Microservice N 112), as well as various other microservices (e.g., a user interface microservice 108, any number of shared microservices 114, etc.), and various communication components 116 that enable the various microservices to interact with other microservices, other parts of the cloud infrastructure 100, and / or entities and / or devices external to the cloud infrastructure 100.
[0028] In one or more embodiments, a microservice (e.g., 104, 106, 108, 112, 112, 114) may be implemented with any number of containers, container pods, etc. Each microservice (e.g., 104, 106, 108, 112, 112, 114) may implement a particular service component that is part of an overall cloud-based application 102 deployed in the cloud infrastructure 100.
[0029] In one or more embodiments, shared microservices 114 may be a set of services common to all or a portion of the other microservices (e.g., 104, 106, 108, 110, 112, 114) of cloud-based application 102 deployed using a microservices architecture in cloud infrastructure 100. Examples of shared microservices include database services, authorization services, workflow orchestration microservices, auditing microservices, management microservices, etc.
[0030] In one or more embodiments, cloud infrastructure 100 includes communication components 116. In one or more embodiments, as used herein, communication components 116 include physical and / or logical devices and / or components implementing any number of communication protocols that enable microservice communication. Examples of various communication protocols include the Representational State Transfer (REST) protocol, Remote Procedure Call (RPC) frameworks (e.g., gRPC), the Kafka protocol, etc., as well as other underlying protocols that may be used in communication, such as the Hypertext Transfer Protocol (HTTP), the Transmission Control Protocol (TCP), the User Datagram Protocol (UDP), etc. Such protocols may be used for conveying data, commands, etc.
[0031] In one or more embodiments, the user interface microservice 108 may be a microservice that provides a user interface of any type (e.g., graphical, command-line, etc.) to the user of an application deployed as microservices of a microservice architecture. In one or more embodiments, the user interface microservice may represent all or a portion of the user interface that a user accesses to interact with the cloud-based application. Thus, in one or more embodiments, the user interface microservice 108 and / or any other portion of a user interface of the cloud-based application 102 may display text to a user.
[0032] In one or more embodiments, the cloud-based application 102 has been internationalized. In one or more embodiments, a process of preparing the cloud-based application 102 to be rendered in both the native language and other languages is referred to as internationalization. In one or more embodiments, to perform internationalization, the human-readable user interface strings are replaced with tags or variables, which may be referred to herein as internationalization keys. In one or more embodiments, the original native language text is then collected into a resource bundle of all native language strings, which may contain any number of files, each containing a portion of the native language text of the cloud-based application 102.In one or more embodiments, the presentation layer of the user interface replaces the markers (e.g., internationalization keys) with the correct strings from the native language files during runtime for a user viewing the application in the native language. To support multiple languages or locales, in one or more embodiments, the native language text strings are translated and bundled into resource bundles corresponding to the native language bundle. This process may be referred to as localization.
[0033] In one or more embodiments, native language files, non-native language files, and internationalization keys are stored in the cloud infrastructure 100 in the language file repository 118. In one or more embodiments, the language file repository 118 is any type of data store in which information can be stored. In one or more embodiments, the language file repository 118 includes one or more data repositories for storing any number of data structures that store any amount of data (e.g., information). In one or more embodiments, a data store is any type of storage unit and / or device (e.g., a file system, a database, a spreadsheet, RAM, and / or other storage mechanism or storage medium) for storing data.Furthermore, a data store may include multiple different storage units and / or devices. The different storage units and / or devices may be of the same type or located in the same physical location. In one or more embodiments, at runtime, based at least in part on the language in which a user of the cloud-based application 102 wishes to display the user interface text of the cloud-based application 102, when the cloud-based application 102 encounters an internationalization key, the cloud-based application 102 obtains from the language file store 118 the language files in the user's language that correspond to the encountered one or more internationalization keys and uses the language files to render the user interface text in the user's selected language.
[0034] Although Fig. 1 depicts a particular set of microservices arranged in a particular manner to form the cloud-based application 102, the cloud infrastructure 100 may include any microservice architecture having any number of microservices arranged and configured in any manner as a cloud-based application without departing from the scope of the embodiments disclosed herein. Such microservice architectures may be used to implement any type of cloud-based application, any number of cloud-based applications, and / or any other services (e.g., aaS products). Furthermore, all or part of the aforementioned devices, components, etc. (e.g., computing devices, servers, network devices, storage devices, container platforms, containers, container pods, microservices, virtual machines, etc.)) in any combination are referred to herein as one or more components of a cloud infrastructure and serve as parts or host components of the cloud-based application 102.
[0035] In one or more embodiments, the cloud infrastructure 100 includes the test environment 120. In one or more embodiments, the test environment is any collection of any set of the aforementioned resources, devices, components, services, etc. that may be present in the cloud infrastructure 100. In one or more embodiments, the test environment 120 is intended for deploying test builds (e.g., pre-production builds) of cloud-based applications so that such cloud-based applications can be tested before they are released to end users (e.g., as cloud-based application 102). Although Fig. 1 shows the test environment 120 in the same cloud infrastructure 100 as the cloud-based application 102, the test environment 120 may be located in a separate cloud infrastructure without departing from the scope of the embodiments disclosed herein.
[0036] In one or more embodiments, the system includes localization framework 122. In one or more embodiments, the localization framework is any hardware, software, firmware, or any combination thereof configured to automate and verify a localization process for translating native language files into non-native languages, perform an initial review of the translated non-native language files, test a test build using the non-native language files, and make the non-native language files available in a production build of a cloud-based application (e.g., cloud-based application 102) if the test build review is successful. For example, localization framework 122 may be implemented on any number of computing devices (as described above).The localization framework 122 may be all or any portion of an apparatus for performing all or any portion of the embodiments disclosed herein. In one or more embodiments, the localization framework is operatively connected to the cloud infrastructure 100 and can therefore access components therein, such as the language file repository 118, the test environment 120, etc.
[0037] In one or more embodiments, the localization framework 122 is operatively connected to the translation data store 124. In one or more embodiments, the translation data store is a data store (as described above) of any type configured to receive and store native language files, internationalization keys, reserved word files, and translated non-native language files. Although in Fig. 1 illustrates a single translation data repository 124, the system may include any number of translation data repositories associated with the localization framework 122 without departing from the scope of the embodiments disclosed herein.
[0038] In one or more embodiments, translation data repository 124 is accessible to localization framework 122 and translation service 126 (see below). In one or more embodiments, translation data repository 124 receives native language files (containing parameter counts), internationalization keys, and reserved word files from the localization framework. In one or more embodiments, a cloud-based application provider, as described above, creates, generates, or receives a first version of a cloud-based application (e.g., cloud-based application 102) that may include any number of separate microservices and has been internationalized as described above.In one or more embodiments, the internationalized version of the cloud-based application 102, including the native language files and internationalization keys, is provided to a localization framework 122. In one or more embodiments, the localization framework 122 extracts the native language files and internationalization keys from the cloud-based application and transfers the native language files in a native language bundle, as well as the internationalization keys, to the translation data repository 124, which is accessible to the translation service 126.
[0039] In one or more embodiments, the native language files provided to the translation service 126 via the database of the translation data repository 124 each contain a number of parameters. In one or more embodiments, a parameter is a portion of text in the native language file that the cloud service provider desires not to be translated. For example, native language text strings may contain variables that the cloud-based application provider does not want translated, such as the variable "A" in a text string stating "Server A is disconnected." In this scenario, the words "Server," "is," and "disconnected" would need to be translated, but the parameter "A" would not. In one or more embodiments, each of these parameters in a native language file contributes to the parameter count for that file.
[0040] Additionally, in one or more embodiments, the localization framework 122 may provide a file containing a list of other words (which may be referred to as reserved words) that the provider of the cloud-based application does not want translated, such as trademarked names of products (e.g., DL345 G11, Greenlake, etc.), product lines (e.g., ProLiant servers), etc.
[0041] In one or more embodiments, the localization framework 122 is configured to perform an initial check of the non-native files after translating the native language files into non-native language files. In one or more embodiments, the initial check includes verifying (e.g., by performing a comparison) that the number of parameters in the non-native language files matches the expected number of parameters of the corresponding native language files, and also performs a syntax check to ensure that instances of the reserved words are not translated.In one or more embodiments, the order of parameters in a native language file is not taken into account because the order of parameters in the non-native language files may change depending on the language into which the native language is translated due to the difference between the native language and the non-native language.
[0042] In one or more embodiments, the system also includes the translation service 126. In one or more embodiments, the translation service 126 is any device that can translate language files from one language into one or more other languages. The translation service may include human translators, machine translators, or a combination thereof. In one or more embodiments, the translation service 126 is operatively connected to the translation data store 124 and the test environment 120 and can access both. Although in Fig. 1 illustrates a single translation service 126, the system may include any number of translation services without departing from the scope of the embodiments disclosed herein.
[0043] In one or more embodiments, the translation service 126 is configured to access the native language bundle of native language files (which it may be notified about by the localization framework 122) and initiate the translation of the native language text in the native language files into non-native language text stored in non-native language files corresponding to the native language files.
[0044] In one or more embodiments, the translation service 126 may complete the translation of the native language text in the native language files into non-native language text in the corresponding non-native language files if the provider of the cloud-based application has not made any changes to the native language files of the cloud-based application 102 during the period in which the translation is taking place. In one or more embodiments, the internationalization keys are used by the translation service 126 to identify associations between the keys and the language files.
[0045] In one or more embodiments, in some scenarios, the provider of the cloud-based application may continue development of the cloud-based application 102 while the translation is taking place. In one or more embodiments, this development may include changes to the native language text of the cloud-based application 102. In one or more embodiments, if such changes are made to the native language text during the period in which the translation is taking place, the localization framework 122 may detect that the changes have occurred and obtain updated native language files that include the changes.
[0046] In one or more embodiments, the localization framework 122 then sends a notification that the changes have occurred to the translation service 126 (via the translation data repository 124 or using another suitable notification means) and replaces the previous versions of the native language files in the translation data repository 124 with the updated native language files containing the changes. In one or more embodiments, the translation service 126 completes the translation of the native language text in the native language files into non-native text in the corresponding non-native language files, including the updated native language files containing the modified native language text automatically provided by the localization framework 122.
[0047] In one or more embodiments, the localization framework 122 is configured to, after the translation service 126 translates the native language files and / or the updated native language files into a corresponding set of non-native language files, detect the presence of the translated non-native language files in the translation data store, perform an initial check of the non-native language files, and generate a test build of the cloud application if the initial check passes. In one or more embodiments, the provider of the cloud-based application 102 and the translation service 126 may review the test build to determine whether the result is acceptable (e.g., conduct acceptance testing).If the test build is accepted by both parties, the localization framework 122 may be notified and use the non-native language files to generate a production build of the cloud-based application 102 (e.g., by making the non-native language files available in the language file repository 118 of the cloud-based application 102). The initial review, testing of the test build, and generation of the production build of the cloud-based application 102 are described in the description of [ ]. Fig. 2 discussed below.
[0048] Although Fig. 1 shows a particular configuration of components, other configurations may be used without departing from the scope of the embodiments described herein. Although in Fig. 1 certain components are shown as part of one and the same device, each of the components may be grouped into sets of one or more components that may exist and be executed as part of any number of separate and operatively connected devices. As a further example, a single component may be configured to perform all or part of the functions required by all or part of the devices shown in Fig. 1. Accordingly, the embodiments disclosed herein should not be limited to the components shown in Fig. 1 shown configuration of the components may be limited.
[0049] Fig. 2 shows an overview of an example method for performing localization of a cloud-based application according to one or more embodiments disclosed herein. All or part of the Fig. The process shown in Figure 2 can be carried out, for example, by a localization framework (e.g. the one described in Fig. 1 and described above. 122).
[0050] While the various steps in the Fig. 2 are shown and described sequentially, some or all steps may be performed in a different order, some or all steps may be combined or omitted, others in Fig. 2 steps not shown may be performed additionally and / or some or all steps may be performed in parallel with other steps of Fig. 2 and / or Fig. 3 are executed.
[0051] In step 200, the method includes obtaining a cloud-based application (e.g., the cloud-based application 102 of Fig. 1). The cloud-based application can, for example, be supported by a localization framework (e.g., the localization framework 122 of Fig. 1). In one or more embodiments, a cloud-based application provider creates, generates, or otherwise obtains a first version of a cloud-based application that may include any number of separate microservices. Procurement of the cloud-based application may include obtaining code, files, etc., of the cloud-based application. The cloud-based application may be obtained when it is made available to the localization framework by the cloud-based application provider. Additionally or alternatively, all or part of the procurement of the cloud-based application may be automated by the localization framework.For example, when a production version of a cloud-based application is deployed to a cloud infrastructure or otherwise made available to users, the localization framework can be configured to detect the deployment and retrieve the cloud-based application.
[0052] In one or more embodiments, the cloud-based application is internationalized. As such, the cloud-based application may include native language files, internationalization keys corresponding to the native language files, and one or more reserved word files. In one or more embodiments, the native language files include native language text. As previously mentioned, a native language may be the native language of the company providing the cloud-based application (e.g., Japanese for a cloud application provider based in Japan). The native language files may each contain any amount of native language text, may each correspond to one or more locations in a user interface, and may be used when the native language text is to be rendered in the user interface.For example, when a cloud-based application is running, a user may interact with the cloud-based application through the user interface. While running the user interface, the cloud-based application may encounter an internationalization key and replace the internationalization key with native text from a native-language file corresponding to the internationalization key.
[0053] In step 202, the method includes extracting the native language files and the internationalization keys from the cloud-based application. For example, the native language files and the internationalization keys may be extracted by a localization framework (e.g., the localization framework 122 of Fig. 1) extracted from the cloud-based application. In one or more embodiments, all or any portion of the native language files may include a parameter count, which is a count of the number of parameters contained in the text of the native language file that are not to be translated. The localization framework may also extract one or more reserved word files, or such reserved word files may be separately provided to the localization framework. In one or more embodiments, a reserved word file is a file that lists a set of words, phrases, etc. that are not to be translated (see the description of Fig. 1).
[0054] In step 204, the method includes storing the native language files, the internationalization keys, and the one or more reserved word files in a translation data store (e.g., the translation data store 124 of Fig. 1). For example, the native language files, the internationalization keys, and the one or more reserved word files may be used by a localization framework (e.g., the Localization Framework 122 of Fig. 1) stored in the translation data store. In one or more embodiments, storing the native language files, the internationalization keys, and the one or more reserved word files in the translation data store may result in a translation service being automatically notified of the new files (e.g., through a monitoring agent, a push notification, etc.) and / or the localization framework may separately communicate that the files are present and ready for translation. In one or more embodiments, at this time, in response to the notification, the translation service begins translating the text of the native language files into one or more non-native languages, i.e., languages other than the native language.
[0055] In step 206, the method includes determining whether there are any updates to the native language files of the cloud-based application during translation. The determination may be made, for example, by a localization framework (e.g., the localization framework 122 of Fig. 1). In one or more embodiments, in some scenarios, the provider of the cloud-based application may continue development of the cloud-based application while the translation is taking place. In one or more embodiments, this development may include changes to the native language text of the cloud-based application. In one or more embodiments, the localization framework may detect that the changes have occurred when such changes are made to the native language text (and thus to the corresponding native language files) during the period in which the translation is taking place. For example, the localization framework may be configured to use a language file repository (e.g., the language file repository 118 of Fig. 1) monitors to determine if any native language files therein are updated while the translation is being performed. In one or more embodiments, if no updates are detected, the method continues to step 208. In one or more embodiments, if one or more updates are detected, the method returns to step 202, and the localization framework obtains (e.g., extracts) updated native language files and possibly internationalization keys that include the changes. In one or more embodiments, the localization framework then sends a notification that the changes have occurred to the translation service and replaces the previous versions of the native language files in the translation data repository with the updated native language files that include the changes.
[0056] In step 208, the method includes detecting files in non-native languages that correspond to the native language files in the translation data repository. For example, a localization framework (e.g., the localization framework 122 of Fig. 1) be configured to monitor the translation data repository and, in step 204, determine whether a non-native language file exists that corresponds to each native language file stored in the translation data repository.
[0057] In step 210, the method includes determining whether an initial check was successful. In one or more embodiments, an initial check includes verifying (e.g., by performing a comparison) that the parameter count in the non-native language files matches the expected parameter count of the corresponding native language files. In one or more embodiments, the initial check also includes performing an automatic syntax check to ensure that instances of reserved words from one or more reserved working files are not translated, which may be referred to as a reserved word check. For example, the initial check may be automatically performed by a localization framework (e.g., the localization framework 122 of Fig. 1) in response to the detection of the non-native language files in step 208. In one or more embodiments, the method continues with step 214 if the initial check was successful. In one or more embodiments, the method continues with step 212 if the initial check fails.
[0058] In step 212, the method includes reporting the failed result of the first check to the translation service. For example, the localization framework may provide the translation service with a report about the error. In one or more embodiments, the report may include all details regarding the error, such as which non-native language files failed the parameter count, which reserved words were incorrectly translated, etc. The report may be provided to the translation service using any suitable technique for conveying information (e.g., by storing the report in the translation data store, sending it over a network, etc.).In one or more embodiments, sending the report to the translation service causes the translation service to continue the translation to correct the issues that caused the initial check to fail, and the method returns to step 206, where the localization framework monitors the native language files for updates while the translation takes place.
[0059] In step 214, the method includes generating a test build of the cloud-based application. In one or more embodiments, the localization framework automatically generates the test build in response to passing the first check. In one or more embodiments, generating a test build includes creating a test version of a cloud-based application, which may include, but is not limited to: compiling code (e.g., various microservices); configuring a container platform; configuring containers; configuring pods; configuring components of a cloud infrastructure; storing the native language files, non-native language files, and internationalization keys in one or more suitable data repositories; etc.
[0060] In step 216, the method includes deploying the test build in a test environment (e.g., the test environment 120 of Fig. 1). For example, after the test build is created, the test build may be automatically deployed to the test environment by the localization framework. In one or more embodiments, deploying the test build to the test environment includes preparing the test environment for access by the cloud-based application provider and the translation service. In one or more embodiments, the method continues after step 216 with the steps described in Fig. 3 steps shown.
[0061] Fig. 3 shows an overview of an example method for validating a test build of a cloud-based application and for deploying a production build of the cloud-based application according to one or more embodiments disclosed herein. All or part of the Fig. 3 can be used, for example, by a localization framework (e.g. the localization framework of Fig. 1) are carried out.
[0062] While the various steps in the Fig. 3 are shown and described sequentially, some or all steps may be performed in a different order, some or all steps may be combined or omitted, others in Fig. 3 steps not shown may be performed additionally and / or some or all steps may be performed in parallel with other steps of Fig. 2 and / or Fig. 3 are executed.
[0063] In step 300, the method includes notifying the cloud-based application provider and the translation service of the availability of the test build. For example, the localization framework may notify the cloud-based application provider and the translation service that the test build is ready for validation once the test build has been successfully deployed to the test environment, as described above in steps 214 and 216 of Fig. 2. The notification may be provided using any suitable information delivery technique (e.g., over a network, as part of an email, via an update to the translation data repository, etc.). In one or more embodiments, the provider of the cloud-based application and the third-party translation service each have access to the test environment in which the test build of the cloud-based application is deployed.
[0064] In step 302, the method includes determining whether validation of the test build by the translation service was successful. In one or more embodiments, the validation includes a visual inspection of the test build by the translation service, performed by accessing and using the test build. The visual inspection by the third-party translation service may include, for example, viewing the translated text in the context in which a user of the cloud-based application would view the translated text and determining whether the translation truly says what the third-party translation service believes it should say in that context. In one or more embodiments, if validation by the translation service fails, the method continues with step 306.In one or more embodiments, the method continues with step 304 if the validation by the translation service is successful.
[0065] In step 304, the method includes determining whether a validation of the test build by the cloud-based application provider was successful. In one or more embodiments, the validation includes a visual inspection of the test build by the cloud-based application provider, performed by accessing and using the test build. The visual inspection by the cloud-based application provider may, for example, consist of viewing the translated text in the context of the cloud-based application and determining whether the text appears to appear in the correct places, is rendered appropriately, etc. In one or more embodiments, the method continues with step 306 if the validation by the cloud-based application provider fails.In one or more embodiments, the method continues with step 308 if the validation by the provider of the cloud-based application is successful.
[0066] In step 306, the method includes notifying the localization framework of the validation failure. The notification may be that one or both of the validations performed in step 302 and step 304 have failed. In one or more embodiments, the localization framework's response to the notification depends on which validation(s) failed. In one or more embodiments, if the validation by the translation service has failed, the localization service may request the translation service to rerun all or any portion of the translation to correct the issues that caused the validation failure and return to step 206 of Fig. 2 to monitor for updates to the native language files while the updated translation is being performed. In one or more embodiments, if the validation by the cloud-based application provider has failed, the localization service may transmit a report to the translation service detailing the causes of the failure and requesting the translation service to rerun all or part of the translation to correct the issues that caused the validation to fail, and to step 206 of Fig. 2 to monitor for updates to the native language files while the updated translation is being performed. If both validations fail, all of the aforementioned actions can be performed.
[0067] In step 308, the method includes generating and deploying a production build of the cloud-based application. For example, the production build may be generated and deployed by the localization framework. In one or more embodiments, generating the production build may include incorporating the non-native language files into the cloud-based application. In one or more embodiments, the production build is deployed in a cloud infrastructure for access by users who may use the native language or another language supported by the method described herein.
[0068] Fig. Figure 4 shows a block diagram of a computing device according to one or more embodiments of this disclosure. As described above, the embodiments described herein may be implemented using computing devices. For example, all or any portion of the Fig. 1 may be implemented at least in part using one or more computing devices, and all or any part of the system shown in Fig. 2 and Fig. The method shown in Figure 3 may be performed using one or more computing devices, such as computing device 400. Computing device 400 may include one or more computer processors 402, non-persistent memory 404 (e.g., volatile memory such as RAM, cache memory, etc.), persistent storage 406 (e.g., a hard drive, an optical drive such as a CD drive or a DVD drive, flash memory, etc.), a communications interface 412 (e.g., a Bluetooth interface, an infrared interface, a network interface, an optical interface, etc.), input devices 410, output devices 408, and numerous other elements (not shown) and functions. Each of these components is described below.
[0069] In one or more embodiments, the computer processor(s) 402 may be an integrated circuit for processing instructions. The computer processor(s) may be, for example, one or more cores or micro-cores of a processor. The processor 402 may be a general-purpose processor configured to execute program code included in the software executing on the computing device 400. The processor 402 may be a special-purpose processor with certain instructions integrated into the processor design. The processor 402 may be an application-specific integrated circuit (ASIC), a graphics processing unit (GPU), a data processing unit (DPU), a tensor processing unit (TPU), an association processing unit (APU), a vision processing unit (VPU), a quantum processing unit (QPU), and / or various other processing units that utilize specialized hardware (e.g.,field-programmable gate arrays (FPGAs), system-on-a-chips (SOCs), digital signal processors (DSPs), etc.) etc. Although in . Fig. 4 only one processor 402 is shown, the computing device 400 may include any number of processors without departing from the scope of the embodiments disclosed herein.
[0070] Computing device 400 may also include one or more input devices 410, such as a touchscreen, a keyboard, a mouse, a microphone, a touchpad, an electronic pen, a motion sensor, or another type of input device. Input devices 410 may enable a user to interact with computing device 400. In one or more embodiments, computing device 400 may include one or more output devices 408, such as a screen (e.g., a liquid crystal display (LCD), a plasma display, a touchscreen, a cathode ray tube (CRT) monitor, a projector, or other display device), a printer, external storage, or other output device. One or more of the output devices may be the same as or different from the input device(s).The input and output device(s) may be connected locally or remotely to the computer processor(s) 402, the non-persistent memory 404, and the persistent memory 406. There are many different types of computing devices, and the above-mentioned input and output device(s) may take other forms. In some cases, multimodal systems may allow a user to provide multiple types of input / output to communicate with the computing device 400.
[0071] Additionally, the communications interface 412 may facilitate connection of the computing device 400 to a network (not shown) (e.g., a local area network (LAN), a wide area network (WAN) such as the Internet, a mobile network, or any other type of network) and / or to another device, such as another computing device.The communication interface 412 can perform or facilitate the reception and / or transmission of wired or wireless communications using wired and / or wireless transceiver devices, including those having an audio jack / plug, a microphone jack / plug, a Universal Serial Bus (USB) port / plug, an Apple® Lightning® port / plug, an Ethernet port / plug, a fiber optic port / plug, a proprietary wired port / plug, Bluetooth® wireless signaling, BLE wireless signaling, IBEACONO wireless signaling, RFID wireless signaling, Near Field Communication (NFC) wireless signaling, Dedicated Short Range Communication (DSRC) wireless signaling, an 802.11 WiFi radio signal transmission, WLAN signal transmission, Visible Light Communication (VLC), Worldwide Interoperability for Microwave Access (WiMAX), IR communication radio signal transmission, PSTN (Public Switched Telephone Network) signal transmission, ISDN (Integrated Services Digital Network) signal transmission, 3G / 4G / 5G / LTE radio signal transmission for cellular data networks, ad hoc network signal transmission, radio wave signal transmission, microwave signal transmission, infrared signal transmission, visible light signal transmission, ultraviolet light signal transmission, radio signal transmission along the electromagnetic spectrum, or a combination thereof.The communications interface 412 may also include one or more Global Navigation Satellite System (GNSS) receivers or transceivers used to determine the location of the computing device 400 based on the reception of one or more signals from one or more satellites associated with one or more GNSS systems. GNSS systems include, among others, the U.S. GPS, the Russian Global Navigation Satellite System (GLONASS), the Chinese BeiDou Navigation Satellite System (BDS), and the European Galileo GNSS. There is no restriction on operation on any particular hardware arrangement, and therefore the basic functions here can be easily replaced with improved hardware or firmware arrangements as they are developed.
[0072] The term "computer-readable medium" includes, but is not limited to, portable or non-portable storage devices, optical storage devices, and various other media capable of storing, containing, or transmitting instructions and / or data. A computer-readable medium may include a non-transitory medium capable of storing data and that does not contain carrier waves and / or transitory electronic signals that propagate wirelessly or over wired connections. Examples of a non-transitory medium may include, but are not limited to, a magnetic disk or tape, optical storage media such as CDs or DVDs, flash memory, storage, or memory devices.A computer-readable medium may store code and / or machine-executable instructions that may represent a procedure, function, subroutine, program, routine, subprogram, module, software package, class, or any combination of instructions, data structures, or program instructions. A code segment may be coupled to another code segment or hardware circuit by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc., may be passed, relayed, or transmitted by any means, such as memory sharing, message passing, token passing, network transmission, or the like.
[0073] All or a portion of the components of computing device 400 may be implemented in circuitry. For example, the components may include electronic circuitry or other electronic hardware and / or may be implemented using electronic circuitry, which may include one or more programmable electronic circuits (e.g., microprocessors, GPUs, DSPs, CPUs, and / or other suitable electronic circuits) and / or may be implemented using computer software, firmware, or any combination thereof to perform the various operations described herein. In some aspects, the computer-readable storage devices, media, and memories may include a wired or wireless signal containing a bitstream and the like.However, non-transitory computer-readable storage media explicitly exclude media such as energy, carrier signals, electromagnetic waves and signals themselves, where mentioned.
[0074] In the above description, numerous details are given as examples of embodiments described herein. Those skilled in the art (who will also benefit from this disclosure) will understand that one or more embodiments described herein may be practiced without these specific details, and that numerous variations or modifications are possible without departing from the scope of the embodiments described herein. Certain details known to those skilled in the art may be omitted in order not to obscure the description.
[0075] In the above description, specific details are set forth to provide a thorough understanding of the aspects and examples presented herein. However, one skilled in the art will appreciate that the aspects may be practiced without these specific details. For clarity, in some cases, the present technology may be represented as functional blocks, which may include devices, device components, steps or routines in a method embodied in software, or combinations of hardware and software. Components other than those shown in the figures and / or described herein may be used. For example, circuits, systems, networks, processes, and other components may be represented as components in block diagram form so as not to unnecessarily complicate the aspects.In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail so as not to obscure aspects of the embodiments disclosed herein.
[0076] Individual aspects can be described above as a process or method, which are represented in the form of a flowchart, a sequence diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart can describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. Furthermore, the order of operations can be rearranged. A process terminates when its operations are complete, but may contain additional steps not included in a diagram. A process can correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. If a process corresponds to a function, its termination can correspond to the function returning to the calling function or to the main function.
[0077] Methods and techniques according to the examples described above may be implemented using computer-executable instructions stored on or otherwise available from computer-readable media. Such instructions may include, for example, instructions and data that cause or otherwise configure a general-purpose computer, a special-purpose computer, or a processing device to perform a particular function or set of functions. Portions of the computing resources used may be accessible over a network. The computer-executable instructions may be, for example, binary files, instructions in intermediate formats such as assembly language, firmware, source code, etc.Examples of computer-readable media that can be used to store instructions, information used, and / or information created during the methods according to the described examples include magnetic or optical disks, flash memory, USB devices with non-volatile memory, networked storage devices, etc.
[0078] In the above description of the figures, each component described in a figure may, in various embodiments described herein, correspond to one or more equally or similarly named and / or numbered components described in another figure. For brevity, the descriptions of these components are not repeated for each figure. Therefore, each individual embodiment of the components of each figure is incorporated by reference and is understood to be optionally present in any other figure having one or more equally or similarly named and / or numbered components.Moreover, in accordance with various embodiments described herein, any description of the components of a figure is to be understood as an optional embodiment that may be implemented in addition to, in conjunction with, or in place of the embodiments described with respect to one or more like or similarly named and / or numbered components in another figure.
[0079] Throughout the application, ordinal numbers (e.g., first, second, third, etc.) may be used as an adjective for an element (i.e., any noun in the application). The use of ordinal numbers is not intended to imply or create a particular order of the elements, nor is it intended to limit an element to being only a single element, unless explicitly stated, e.g., by the use of the terms "before," "after," "single," and other such terminology. Rather, the use of ordinal numbers is intended to distinguish between the elements. For example, a first element is to be distinguished from a second element, and the first element may comprise more than one element and may follow (or precede) the second element in the order of the elements.
[0080] As used herein, the term "operatively connected" or "operative connection" means that a direct or indirect connection exists between elements / components / devices that enables the elements to interact with each other in some way. The term "operatively connected" can refer, for example, to any direct (e.g., a direct wired connection between two devices or components) or indirect (e.g., wired and / or wireless connections between any number of devices or components connecting the operatively connected devices) connection. Thus, any path by which information can be transmitted can be considered an operative connection.
[0081] While the embodiments discussed herein have been described with respect to a limited number of embodiments, those skilled in the art, given the benefit of this disclosure, will recognize that other embodiments may be developed that do not depart from the scope of the embodiments disclosed herein. Accordingly, the scope of the embodiments described herein should be limited only by the appended claims.
Claims
[1] A device consisting of: one or more processors; and one or more non-transferable computer-readable media storing instructions that, when executed by the one or more processors, cause the one or more processors to: to obtain a cloud-based application through a localization framework executing on the one or more processors; Extracting a plurality of native language files and a plurality of internationalization keys corresponding to the plurality of native language files from the cloud-based application by the localization framework; storing, by the localization framework, the plurality of native language files and the plurality of internationalization keys in a translation data store accessible by a translation service; Detecting, by the localization framework, a plurality of non-native language files corresponding to the plurality of native language files in the translation data repository; carry out an initial check of the non-native language files by the localization framework; through the localization framework and, upon passing the initial test, to create a test build of the cloud-based application; Deploying the test build by the localization framework in a test environment in a cloud infrastructure to perform a first validation by the translation service and a second validation by a cloud-based application provider; and Generating, through the localization framework and if the first validation and the second validation are passed, a production build of the cloud-based application containing the non-native language files. [2] The apparatus of claim 1, wherein the execution of the instructions further causes the one or more processors, if the initial check fails, to send a notification of the failure to the translation service. [3] The apparatus of claim 1, wherein, to perform the initial test, execution of the instructions further causes the one or more processors to: Performing a comparison of the parameter counts of the native language files of the plurality of native language files and the parameter counts of the non-native language files of the plurality of non-native language files to determine whether there is a parameter count match; and to perform a reserved word check using a reserved word file. [4] The apparatus of claim 1, wherein the plurality of non-native language files are provided to the translation data store by the translation service in response to the plurality of native language files and the plurality of internationalization keys stored in the translation data store. [5] The apparatus of claim 1, wherein the execution of the instructions further causes the one or more processors, prior to detecting the plurality of non-native language files: to detect an update of a native language file from the multitude of native language files; and Replace the native language file with an updated native language file in the translation data repository. [6] The apparatus of claim 1, wherein execution of the instructions further causes the one or more processors to request an updated translation from the translation service if the first validation fails. [7] The apparatus of claim 1, wherein the execution of the instructions further causes the one or more processors, if the second validation fails, to send a report to the translation service containing details of the reasons for the failure of the second validation. [8] A computer-implemented method comprising: Maintaining a cloud-based application through a localization framework running on one or more processors; Extracting a plurality of native language files and a plurality of internationalization keys corresponding to the plurality of native language files from the cloud-based application by the localization framework; Storing, by the localization framework, the plurality of native language files and the plurality of internationalization keys in a translation data repository accessible by a translation service; Detecting, by the localization framework, a plurality of non-native language files corresponding to the plurality of native language files in the translation data repository; Carrying out an initial check of the non-native language files by the localization framework; Generation of a test build of the cloud-based application by the localization framework if the initial testing was successful; Deploying the test build by the localization framework in a test environment in a cloud infrastructure to perform a first validation by the translation service and a second validation by a cloud-based application provider; and Generating, through the localization framework and if the first validation and the second validation are passed, a production build of the cloud-based application containing the non-native language files. [9] The computer-implemented method of claim 8, further comprising, if the initial check fails, sending a notification of the error to the translation service. [10] A computer-implemented method according to claim 8, wherein the initial test comprises: Performing a comparison of the parameter counts of the native language files of the plurality of native language files and the parameter counts of the non-native language files of the plurality of non-native language files to determine whether there is a parameter count match; and Perform a reserved word check using a reserved word file. [11] The computer-implemented method of claim 8, wherein the plurality of non-native language files are provided to the translation data store by the translation service in response to the plurality of native language files and the plurality of internationalization keys stored in the translation data store. [12] The computer-implemented method of claim 8, further comprising, prior to detecting the plurality of files in a non-native language Detecting an update of a native language file from the plurality of native language files; and Replace the native language file with an updated native language file in the translation data repository. [13] The computer-implemented method of claim 8, further comprising, if the first validation fails, requesting an updated translation from the translation service. [14] The computer-implemented method of claim 8, further comprising, if the second validation fails, sending a report to the translation service containing details of the reasons for the failure of the second validation. [15] A non-transitory computer-readable medium storing programming for execution by one or more processors, the programming comprising instructions to: Obtained by a localization framework executing on the one or more processors of a cloud-based application; Extracting a plurality of native language files and a plurality of internationalization keys corresponding to the plurality of native language files from the cloud-based application by the localization framework; storing, by the localization framework, the plurality of native language files and the plurality of internationalization keys in a translation data store accessible by a translation service; Detecting, by the localization framework, a plurality of non-native language files corresponding to the plurality of native language files in the translation data repository; carry out an initial check of the non-native language files by the localization framework; through the localization framework and, upon passing the initial test, to create a test build of the cloud-based application; Deploying the test build by the localization framework in a test environment in a cloud infrastructure to perform a first validation by the translation service and a second validation by a cloud-based application provider; and Generating, through the localization framework and if the first validation and the second validation are passed, a production build of the cloud-based application containing the non-native language files. [16] The non-transitory computer-readable medium of claim 15, comprising further instructions that, when executed by the one or more processors, cause the one or more processors to send a notification of the error to the translation service if the initial check fails. [17] The non-transitory computer-readable medium of claim 15, wherein, to perform the initial check, execution of the instructions further causes the one or more processors to: Performing a comparison of the parameter counts of the native language files of the plurality of native language files and the parameter counts of the non-native language files of the plurality of non-native language files to determine whether there is a parameter count match; and to perform a reserved word check using a reserved word file. [18] The non-transitory computer-readable medium of claim 15, wherein the plurality of non-native language files are provided to the translation data store by the translation service in response to the plurality of native language files and the plurality of internationalization keys stored in the translation data store. [19] The non-transitory computer-readable medium of claim 15, comprising further instructions that, when executed by the one or more processors prior to detecting the plurality of non-native language files, are to: to detect an update of a native language file from the multitude of native language files; and Replace the native language file with an updated native language file in the translation data repository. [20] The non-transitory computer-readable medium of claim 15, comprising further instructions that, when executed by the one or more processors, are to: if the first validation fails, request an updated translation from the translation service; and If the second validation fails, send a report to the translation service containing details of the reasons for the failure of the second validation.
Citation Information
Patent Citations
US000011758010B1