A cloud service may have many thousands of servers and storage devices and may provide various software products such as operating systems, databases, applications, identity services, backup services, and so on to its customers. Rather than maintaining their own data centers, many enterprises subscribe as customers of a cloud service for hosting their applications. For example, if a customer provides an electronic commerce web site, the cloud service would store the web pages of the web site and serve the web pages to clients or users of the customer. As another example, an enterprise with employees throughout the world may host various business applications on a cloud service. The employees with proper authentication can then access the business applications.
A customer of a cloud service may take advantage of various services provided by the cloud service. For example, a cloud service may provide a checkout service for its customers who have electronic commerce applications. When a user of the customer wants to pay for their electronic commerce purchases, the customer's electronic commerce application provides the transaction information (e.g., sales amount) to the checkout service. The checkout service collects payment information (e.g., credit card information) from the user, interfaces with the user's financial institution to complete the payment, and notifies the application that the payment was successful. As another example, customers may rely on an identity service provided by the cloud service to authenticate their users. When a user accesses the main web page of the customer's web site (e.g., “acme.com”) using a browser, the main web page may include a sign-in link (e.g., button) to a web page of the identity service of the cloud service. When the user click on the sign-in link, the browser sends a request to the identity service that identifies the customer's application. The identity service then responds with a sign-in web page that may ask for a user name and password, referred to as asking for a “claim” of the user's identity. When the user provides the claim, the identity service authenticates the user and then generates an authentication token that can be used as proof that the claim has been verified—that is, the user has been authenticated.
A cloud service may provide various language options for the services so that content of web pages are provided in languages that each user would expect to see. For example, the cloud service may provide web pages in different languages for its identity service. When a user clicks on a sign-in link, the request that is sent to the identify service may specify the language specified by the customer's application or the language of the browser's environment. The identity service can then use the language to serve the web page in an appropriate language. For example, if the language of the browser is the Canadian variant of French, the identity service may serve a web page in the Canadian variant of French. If a web page in that variant is not available, the identity service may serve a web page in the French language. Unfortunately, a cloud service may use a language that a user would not expect. For example, if a customer's application is being accessed by someone in Canada and the user interface of the customer's application is in Chinese, then the presenting of a main web page and subsequent web pages in Chinese while the sign-in web page is in French may be a less than desirable user experience.
A method and system is provided for customizing a web page provided by a host (e.g., cloud service) that hosts application of application providers (e.g., customers of the cloud service). The host provides the web page to a user of the application provider on behalf of the application provider. A customization system receives from a user of the application provider a request for the web page, which has content. The customization system identifies a preferred language for the content of the web page. When the application provider has specified content for the preferred language for the web page, the customization system adds to the web page the specified content. When the application provider has not specified content for the preferred language for the web page, the customization system adds to the web page default content provided by the host, which may be in the preferred language or may be in an overriding language.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
A method and system for customization of a document (e.g., a web page) provided by a service of a host is provided. In some embodiments, a customization system provided by a host (e.g., cloud service) receives an indication to customize a web page that is to be provided to a user of an application provider (e.g., customer) of the host. For example, the indication may be a request sent in response to the user clicking on a sign-in link on a main web page of the application provider. The web page to be customized may have associated content identifiers that identify the content that is to be included on the web page. For example, a user name field may have a content identifier for content that is to be displayed as the label (e.g., “Enter User Name”) for the field and a content identifier for content to be displayed as an error message (e.g., “Invalid User Name”) when an error is detected for the field. The host may provide different sets of content, referred to as default content that may be appropriate for a web page depending on the context of the access to the web page. For example, the host may provide content in various languages, directed to different age groups, directed to different professions, and so on for the web page. The host selects the content that is most appropriate given the context. For example, the host may select one set of content if the user is 20 years old and a different set of content if the user is 60 years old. The customization system allows an application provider to provide content that overrides the default content of the host. For example, users of some application providers may prefer the error message “Incorrect User Name,” rather than “Invalid User Name,” because “invalid” is a homograph with a meaning that might be considered offensive by some users. In such a case, the application provider may provide content that maps the content identifier for the error message to the content “Incorrect User Name.” When the host receives, from a user of an application provider, a request for the web page, the customization system determines whether the application provider has provided at least some overriding content for the web page. If so, the customization system checks the overriding content to determine whether each content identifier for the web page is included in the overriding content. If a content identifier is included in the overriding content, the customization system adds the content for that content identifier of the overriding content to the web page. If the content identifier is not included in the overriding content, the customization system adds the content for that content identifier of the default content to the web page. The customization system thus allows an application provider to customize the content of a web page provided by the host on behalf of the application provider in a manner that is consistent with a policy for selecting overriding content as specified by the application provider. In this way, the users of the application provider are provided a web page by the host that is more consistent with the web pages provided by the application provider (e.g., in the same language or language variant).
Although the customization system is described primarily in the context of providing content in different languages and for web pages, the customization system may be used to provide custom content in the same language and for documents other than web pages, such as forms to be printed or electronic forms. The content can include strings of text, image content, audio content, video content, graphics content, and so on.
In some embodiments, the customization system may use a concept similar to inheritance of object-oriented programming, resolving a content identifier to its corresponding content. A dependent language (e.g., variant) of another language may be considered to inherit content of the other language that is not specified by the dependent language. For example, content for French may include a display name for a user name field and a password field, and content for French-Canadian may include a display name for the user name field, but not for the password field. In such a case, if French-Canadian is the preferred language, then the customization system will resolve the display name for the user name field to the content for French-Canadian, but will resolve the password field to the content for French since the content for French-Canadian did not include the display name for the password field. The customization system may allow for any level of dependencies. For example, French-Creole may depend on French-Canadian, which may depend on French, which may depend on English-Canadian, and so on. The customization system may support a tree structure type dependency in which each language has only one path to the root language. Alternatively, each most dependent language may have its own path of dependent languages. For example, the path for French-Canadian may be to French-Quebec and then to French, but the path for French-Creole may be to French-Canadian and then to French. In one path, French-Canadian depends directly on French-Quebec, and in the other path, French-Canadian depends directly on French. A language that is dependent on another language is an overriding language, and the other language is an overridden language. The paths define a priority ordering of the languages. In some embodiments, the customization system, for each language on the path, may first determine whether the application provider has provided overriding content for that path for the language. If the overriding content provides content for the content identifier, the customization system uses that content. If no overriding content is provided for the language or if the overriding does not provide content for the content identifier, then the customization system determines whether default content has been provided for the language. If so, the customization system uses content (if any) for the content identifier from the default content for the language. Otherwise, the customization system tries to resolve the content identifier using content for the next language in the path.
In some embodiments, the customization system may perform the customization of a web page on the server side or the client side. When performed on the client side, the customization system may provide a client side component that is stored on client devices of users or downloaded on demand to client devices. When a browser executing on a client device receives a web page provided by the host on behalf of an application provider, the client-side component is invoked to resolve the content identifier of the web page to the appropriate content. In such a case, the overriding content may be stored on the client device or external to the client device, and the default content may be stored at the host. The client-side component may resolve the content identifiers in a manner similar to that of a server-side component of the customization system.
In some embodiments, the customization system allows default content and overriding content to be stored in various data sources at disparate locations. For example, a cloud service may specify that some default content for English is stored at a server provided by the cloud service and that other default content for English or default content for French is stored at a server of a third party. Similarly, an application provider may specify that overriding content for English is stored at a server provided by the cloud service and that overriding content for French-Canadian is stored at server of a third party. In this way, the customization system does not need to store all the content locally, but rather can retrieve content from the various data sources in real time when web pages are customized and served.
In some embodiments, the customization system may store default content and overriding content in an eXtensible Markup Language (“XML”) format. Table 1 contains excerpts from an example of default content for a sign-up web page.
Each LocalizedString tag specifies content for a content identifier. For example, the following tag
specifies that the content, that is, the string “Email Address,” is associated with the content identifier, that is, a combination of the values for the ElementType, ElementId, and StringId elements. In this example, the ElementID of “signInNamesInfo.emailAddress” means that the content relates to an email identity and the StringId of “DisplayName” indicates that the content is to be displayed as a name of a field for entry of the identity. Table 2 provides a description of the tag, and Table 3 provides a description of the elements of the tags.
Table 4 contains excerpts from an example of overriding content for a sign-up web page that overrides default content of Table 1. For example, the string “Please wait while we create your account” overrides the content “Hold on while we finish setting up your account and signing you in.”
In some embodiments, the customization system may collect the default content from various resources of the service that it provides to its application providers. The content of the resources may be in a default language of the cloud service. For example, the customization system may collect error strings from Java script, messages from configuration files, labels from web pages, and so on. The customization may then generate an XML file for the default content. The customization system may allow corresponding default content in different languages to be provided for the cloud service.
The computing systems on which the customization system may be implemented may include a central processing unit, input devices, output devices (e.g., display devices and speakers), storage devices (e.g., memory and disk drives), network interfaces, graphics processing units, accelerometers, cellular radio link interfaces, global positioning system devices, and so on. The input devices may include keyboards, pointing devices, touch screens, gesture recognition devices (e.g., for air gestures), head and eye tracking devices, microphones for voice recognition, and so on. The computing systems may include servers of a data center, massively parallel systems, and so on. The computing systems may access computer-readable media that include computer-readable storage media and data transmission media. The computer-readable storage media are tangible storage means that do not include a transitory, propagating signal. Examples of computer-readable storage media include memory such as primary memory, cache memory, and secondary memory (e.g., DVD) and other storage. The computer-readable storage media may have data recorded on them or may be encoded with computer-executable instructions or logic that implements the customization system. The data transmission media are used for transmitting data via transitory, propagating signals or carrier waves (e.g., electromagnetism) via a wired or wireless connection.
The customization system may be described in the general context of computer-executable instructions, such as program modules and components, executed by one or more computers, processors, or other devices. Generally, program modules or components include routines, programs, objects, data structures, and so on that perform particular tasks or implement particular data types. Typically, the functionality of the program modules may be combined or distributed as desired in various examples. Aspects of the customization system may be implemented in hardware using, for example, an application-specific integrated circuit (ASIC).
The following paragraphs describe various embodiments of aspects of the customization system. An implementation of the customization system may employ any combination of the embodiments. The processing described below may be performed by a computing device with a processor that executes computer-executable instructions stored on a computer-readable storage medium that implements the customization system.
In some embodiments, a method performed by a computing system is provided for localization of a user interface provided by a host to applications of application providers for presentation to users of the applications. The method accesses default content provided by the host in a plurality of languages. The default content for a default language has content for content identifiers for the default language. The method accesses overriding content provided by the application providers. The overriding content for an application provider for a language has content for content identifiers for that language. The method receives from a user of a target application provider a request for a document. The document has one or more content identifiers for content to be included in the document. The method identifies a preferred language for content of the document. For each content identifier of the document, the method performs the following. When overriding content for the target application provider includes content for the content identifier in the preferred language, the method selects for the document the content for the content identifier of the overriding content for the preferred language for the target application provider. When overriding content for the target application provider does not include content for the content identifier in the preferred language, the method selects for the document the content for the content identifier of default content. In some embodiments, the document is a display page provided by the host as a service to application providers. In some embodiments, the preferred language is identified based on a link provided to the user of the target application provider by the target application provider. In some embodiments, the method further receives an indication of a custom content identifier for custom content of an application provider for the document wherein the overriding content for the application provider includes the custom content for the custom content identifier. In some embodiments, the method further accesses a priority ordering of different languages such that content for a content identifier of the document is selected from the content of the language with the highest priority. In some embodiments, when overriding content for an application provider and default content are provided in the same language, the method gives priority to the overriding content. In some embodiments, at least one language is a variant of another language. In some embodiments, the overriding content for an application provider is provided by a third party. In some embodiments, the overriding content for an application provider that is provided by a third party is hosted by the third party. In some embodiments, the overriding content is stored on multiple data sources and wherein the selecting of the content for the content identifier of the overriding content for the preferred language for the target application provider includes searching multiple data sources. In some embodiments, the default content is stored on multiple data sources and wherein the selecting of the content for the content identifier of the default content includes searching multiple data sources. In some embodiments, the method further accesses a specification of acceptable languages of an application provider such that content is presented to users of the application provider in an acceptable language. In some embodiments, the overriding content provided by an application provider reflects a policy specified by the application provider for overriding default content. In some embodiments, the accessing, receiving, identifying, and selecting are performed by a client-side component. In some embodiments, the accessing, receiving, identifying, and selecting are performed by a server-side component.
In some embodiments, a method performed by a computing system is provided for localization of a web page of an application provider of a host. The web page is provided by the host to a user of the application provider on behalf of the application provider. The method receives from a user of the application provider a request for the web page, the web page having content. The method identifies a preferred language for content of the web page. For content of the web page, when the application provider has specified content for the preferred language for the web page, the method to the web page the specified content, and when the application provider has not specified content for the preferred language for the web page, the method to the web page default content in the preferred language provided by the host. In some embodiments, the application provider provides a priority order of languages for searching for content for the web page. In some embodiments, the content for a language includes content for content identifiers and the web page is to include content for a target content identifier and wherein the content for the languages is searched in a priority order of language for first content that includes content for the target content identifier.
In some embodiments, a computing system is provided for customization of a web page provided by a service of a host. The computing system a computer-readable storage medium storing computer-executable instructions and a processor that executes the computer-executable instructions stored in the computer-readable storage medium. The instructions control the computing system to receive an indication to provide the web page to a user of an application provider of the host. For each of a plurality of content identifiers of content to be included in the web page, the instructions control the computing system to, when the application provider has specified application provider-specific content for the content identifier of the web page, indicate to add to the web page the application provider-specific content for the content identifier. And, the instructions control the computing system to, when the application provider has not specified application provider-specific content for the content identifier of the web page, indicate to add to the web page default content for the content identifier provided by the host. In some embodiments, the instructions further control the computing system to access multiple data sources to identify application provider-specific content for the content of the web page that the application provider has specified.
Although the subject matter has been described in language specific to structural features and/or acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. Accordingly, the invention is not limited except as by the appended claims.
This application claims the benefit of U.S. Provisional Application No. 62/423,698, filed on Nov. 17, 2016, which is hereby incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62423698 | Nov 2016 | US |