W3C

Web Services Internationalization Usage Scenarios

W3C Working Draft 16 May 2003

This version:
http://www.w3.org/TR/2003/WD-ws-i18n-scenarios-20030516
Latest version:
http://www.w3.org/TR/ws-i18n-scenarios
Previous version:
http://www.w3.org/TR/2002/WD-ws-i18n-scenarios-20021220
Editors:
Kentaroh Noji, IBM
Martin J. Dürst, W3C <duerst@w3.org>
Addison Phillips, webMethods <aphillips@webmethods.com>
Takao Suzuki, Microsoft
Tex Texin, XenCraft

This document is also available in these non-normative formats: XML.


Abstract

This document describes internationalization usage patterns and scenarios for Web services and is intended for review by W3C members and other interested parties. This version provides additional guidance for implementers of Web service technologies, suggesting methods for dealing with general international interoperability issues in services and service descriptions. One goal of this document is to provide a template for Web service designers to implement international capabilities in their services.

Status of this Document

This section describes the status of this document at the time of its publication. Other documents may supersede this document. The latest status of this series of documents is maintained at the W3C.

This is an updated working draft describing Web Services internationalization usage scenarios for review by W3C members and other interested parties. It has been produced by the Web Services Internationalization Task Force of the W3C Internationalization Working Group, as part of the W3C Internationalization Activity.

Discussion of this document takes place on the public mailing list public-i18n-ws@w3.org. To contribute, please subscribe by sending mail to public-i18n-ws-request@w3.org with subscribe as the subject. The archive of this list can be read by the general public.

We invite contributions of additional Usage Scenarios and Use Cases to document aspects of Web Services internationalization that are not covered yet in this document. For contributions, please use a format similar to the one used in this document. Please send your contribution or comment to the www-i18n-comments@w3.org mailing list (public archive). Please use [Web Services] or [WSUS] in the subject.

At the time of publication, the Working Group believed there were no patent disclosures relevant to this specification. A current list of patent disclosures relevant to this specification may be found on the Working Group's patent disclosure page.

This document is work in progress and does not imply endorsement by, or the consensus of, either W3C, or members of the Web Services Task Force of the W3C Internationalization Working Group. This document still contains incomplete descriptions in various places.

This document is a draft version, and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to use W3C Working Drafts as reference material or to cite them as other than "work in progress". A list of all technical reports can be found at http://www.w3.org/TR/.

Table of Contents

1 Introduction
    1.1 Scope
2 Framework
    2.1 Overview
    2.2 Natural Language and International Preferences
        2.2.1 WSDL
        2.2.2 SOAP
        2.2.3 Faults and Errors
    2.3 Language and Context Negotiation Patterns
        2.3.1 Language Neutral
            2.3.1.1 Example: GetTimeService returns the current time
            2.3.1.2 Usage Pattern
            2.3.1.3 WSDL
            2.3.1.4 SOAP
            2.3.1.5 Faults
        2.3.2 Service Determined
            2.3.2.1 Example
            2.3.2.2 Implementation or Deployment Decision
            2.3.2.3 Enumerated Set
            2.3.2.4 Service Determined
            2.3.2.5 Usage Pattern
            2.3.2.6 WSDL
            2.3.2.7 SOAP
            2.3.2.8 Faults
            2.3.2.9 S-013: Service Determined Language Preference Leads to Fault
                2.3.2.9.1 Scenario Definition
                2.3.2.9.2 Description
        2.3.3 Client Influenced
            2.3.3.1 Example
            2.3.3.2 Usage Pattern
            2.3.3.3 WSDL
            2.3.3.4 SOAP
            2.3.3.5 Faults
    2.4 Passing or Matching International Preferences
    2.5 Natural Language Handling in Faults
        2.5.1 S-005: Language Matching for Fault Reason Messages
            2.5.1.1 Scenario Definition
            2.5.1.2 Description
        2.5.2 S-009: Language Preference for One Way Messages
            2.5.2.1 Scenario Definition
            2.5.2.2 Description
    2.6 Ordering, Grouping, and Collation in Services
    2.7 Descriptive Text in Service Descriptions
3 Usage Scenarios
    3.1 Data Integrity and Interoperability
        3.1.1 S-001: Data Integrity using an Unicode-based Encoding
            3.1.1.1 Scenario Definition
            3.1.1.2 Description
        3.1.2 S-002: Data Integrity using a Legacy Encoding
            3.1.2.1 Scenario Definition
            3.1.2.2 Description
    3.2 Language (Locale) Negotiation for SOAP Fault Messages
        3.2.1 S-007: Language Preference for Chained Services
            3.2.1.1 Scenario Definition
            3.2.1.2 Description
        3.2.2 S-008: Locale Sensitive Formated Data in SOAP Fault Messages
            3.2.2.1 Scenario Definition
            3.2.2.2 Description
        3.2.3 S-010: Language Preference for Multiple SOAP Bindings
            3.2.3.1 Scenario Definition
            3.2.3.2 Description
        3.2.4 S-011: HeaderFault vs. Fault
            3.2.4.1 Scenario Definition
            3.2.4.2 Description
        3.2.5 S-012: Interaction of Language Negotiation and Caching
            3.2.5.1 Scenario Definition
            3.2.5.2 Description
    3.3 Locale Neutral vs. Locale Sensitive Data Exchange
        3.3.1 Background
        3.3.2 S-016: Locale Neutral Formated Data
            3.3.2.1 Scenario Definition
            3.3.2.2 Description
        3.3.3 S-017: Data with Additional 'Attributes'
            3.3.3.1 Scenario Definition
            3.3.3.2 Description
        3.3.4 S-018: Data with Default 'Attribute'
            3.3.4.1 Scenario Definition
            3.3.4.2 Description
        3.3.5 S-019: Locale Dependent Datatypes
            3.3.5.1 Scenario Definition
            3.3.5.2 Description
        3.3.6 S-020: Correlation of Data among Services in Different Languages
            3.3.6.1 Scenario Definition
            3.3.6.2 Description
    3.4 Locale Sensitive Presentation
        3.4.1 S-021: Data Formatting for End User on Receiver Side
            3.4.1.1 Scenario Definition
            3.4.1.2 Description
        3.4.2 S-022: Data Formatting on Sender Side
            3.4.2.1 Scenario Definition
            3.4.2.2 Description
        3.4.3 S-023: Data Formatting on Receiver Side according to Sender
            3.4.3.1 Scenario Definition
            3.4.3.2 Description
    3.5 Locale Sensitive Data Processing
        3.5.1 S-024: Locale Sensitive Processing by Provider(Receiver)
            3.5.1.1 Scenario Definition
            3.5.1.2 Description
                3.5.1.2.1 Transport Layer (HTTP, SMTP/MIME, etc.)
                3.5.1.2.2 Service Provider Layer
                3.5.1.2.3 Service Layer
        3.5.2 S-025: Opaque Identifier to Identify a Locale
            3.5.2.1 Scenario Definition
            3.5.2.2 Description
    3.6 Finding Services
        3.6.1 S-026: Searching for Web Services
            3.6.1.1 Scenario Definition
            3.6.1.2 Description
        3.6.2 S-027: Fall-Back for Internationalized Web Services
            3.6.2.1 Scenario Definition
            3.6.2.2 Description
    3.7 Services for Internationalization Functionality
        3.7.1 S-028: Outsourcing Locale-Related Services
            3.7.1.1 Scenario Definition
            3.7.1.2 Description
        3.7.2 S-029: Propagating Updates related to Locales
            3.7.2.1 Scenario Definition
            3.7.2.2 Description
    3.8 Development of Internationalized Web Services
        3.8.1 S-030: Internationalizing an Existing Web Service
            3.8.1.1 Scenario Definition
            3.8.1.2 Description
        3.8.2 S-031: Communicating Available Options
            3.8.2.1 Scenario Definition
            3.8.2.2 Description
    3.9 Template
        3.9.1 Title
            3.9.1.1 Scenario Definition
            3.9.1.2 Description
4 Use Case

Appendices

A References (Non-Normative)
B Acknowledgements (Non-Normative)
C Heisei (Non-Normative)


1 Introduction

This document describes a variety of Web Services internationalization usage scenarios and use cases.

The goal of the Web Services Internationalization Task Force is to ensure that Web Services have robust support for global use, including all of the world's languages and cultures.

The goal of this document is to examine the different ways that language, culture, and related issues interact with Web Services architecture and technology. Ultimately this will allow us to develop standards and best practices for those interested in implementing internationalized Web Services. We may also discover latent international considerations in the various Web Services standards and propose solutions to the responsible groups working in these areas.

Web Services provide a world-wide distributed environment that uses XML based messaging for access to distributed objects, application integration, data/information exchange, presentation aggregation, and other rich machine-to-machine interaction. The global reach of the Internet requires support for the international creation, publication and discovery of Web Services. Although the technologies and protocols used in Web Services (such as HTTP [RFC2616], XML [XML], XML Schema, and so forth) are generally quite mature as "international-ready" technologies, Web Services may require additional perspective in order to provide the best internationalized performance, because they represent a way of accessing distributed logic via a URI.

As a result, this document attempts to describe the different scenarios in which international use of Web Services may require care on the part of the implementer or user or to demonstrate potential issues with Web Services technology.

This document describes the followings scenarios:

  1. Locale neutral vs. locale-sensitive XML messages and data exchange

  2. Interaction between Web services and the underlying software system's international functionality

  3. Message processing in Web Services, e.g. SOAP Fault messages etc.

The scope of this document is described in Section 1.1 below.

1.1 Scope

This document follows the definition of Web Services specified in Chapter 2 of the Web Services Architecture document [WSA].

Definition: A Web service is a software system identified by a URI, whose public interfaces and bindings are defined and described using XML. Its definition can be discovered by other software systems. These systems may then interact with the Web service in a manner prescribed by its definition, using XML based messages conveyed by Internet protocols.

In order to narrow down the scope, the usage scenarios in this document are limited to the following W3C technologies and deliverables:

Internationalized Web Services need to be easy to create, publish and discover for a wide range of audiences.

The scope of Web Services internationalization is W3C internationalization working group deliverables, including:

  • Web services requirements

  • Unicode technologies and deliverables

  • Concepts and application of distributed locales and locale-affected preferences

  • Web services internationalization best practices

2 Framework

2.1 Overview

This section contains a "framework" or outline for understanding international issues in Web services.

The framework is based on the Web Services Architecture document [WSA], which defines a service as follows: "A service is a set of actions that form a coherent whole from the point of view of service providers and service requesters. A requester entity is a legal entity that wishes to make use of a provider entity's Web service. It will use a requester agent to exchange messages with the provider entity's provider agent. The provider agent has one ore more services available to it, that it can invoke in behalf of the requester agent."

The mechanics of the message exchange are (partially) documented in a Web service description (WSD).

illustration of the sequence of events in the framework

The sequence of events in this framework are as follows:

  1. The requester agent locates a suitable provider agent. This can be accomplished through UDDI, but also can be accomplished through other means. For example, the URL of the provider agent may simply have been found in an advertisement somewhere.

  2. The provider agent makes available a Web Services Description (WSD) document.

  3. Using the information in the WSD, the requester agent can formulate a service request. This will be a SOAP message which is then sent to the provider agent to be acted upon.

  4. The provider agent after receiving the request will invoke the service and get a response. The response can be the results of the service or an indication that a fault occurred. Note that the interaction between the provider agent and the service are independent of the Web Services framework and the design is left completely to the implementors. The primary requirement is that the provider agent in turn be able to formulate a response to return to the requester agent. This response must satisfy both the requirements and specifications of the Web Services Architecture and the description of the WSD.

  5. If the service request was successfully executed, the provider agent will formulate a response message and send it to the requester agent.

  6. If the service request was erroneous, or the service could not be completed for some reason, a fault message will be sent to the requester agent.

The internationalization issues in Web services and as illustrated in the framework fall into several categories which are common to all Web Services, regardless of the message exchange pattern used for a specific service. In the section that follows it is assumed that the service, provider and requester agents, and data structures (semantics) follow best practices in internationalization and data structuring. Implicit in these descriptions is the expectation that data structures use XML Schema types to create locale-neutral data structures.

Some services may be implemented that do not follow these strictures for reasons having to do with legacy system implementation or other restriction. These cases are dealt with in usage scenarios later in this document.

2.2 Natural Language and International Preferences

"Natural Language" refers to human use of language. Generally systems that are internationalized can produce messages in a variety of different natural languages. These systems are referred to as "localized", because their messages (and frequently behavior) are tailored to the individual cultural expectations for a specific target market or group of individuals.

International preferences are similar to "Natural Language" identification. Some of the other preferences that a service might be interested in include:

Some of these preferences may be inferred from the natural language by converting the natural language preference to the service host's "locale" (Note that the provider agent and service host are not always the same physical host). Other items (such as timezone) are orthogonal or (like collation) imperfectly or incompletely described by a natural language identifier. Separating these values requires forethought in the design of the service and the setting of reasonable default values.

In the sections that follow, you will see the word "locale" used as an adjunct to natural language. A locale is not a language and the language tags discussed in the succeeding sections should not be confused with actually being locale tags or identifiers. However, there is commonly a close relationship between the language identified by such a tag and the corresponding locale in the underlying platform and a software process may choose to use language tags to select many of these additional operational settings or international preferences.

Distributed processing, as with Web services, must allow for several patterns of behavior in the back end implementation represented by the service.

There are three patterns that such a service may follow. These are:

In each of these patterns, the Web service description (commonly WSDL) and actual protocol or invocation (SOAP is used in our examples) should reflect the requirements of the service's own pattern of behavior.

2.2.1 WSDL

Web service descriptions should consider how to communicate language or locale-of-operation choices in a consistent manner. In the sections that follow, specific patterns are recommended as good canonical references. However experience shows that a specific implementation may require additional contextual information not conveyed with a simple language tag. Generally this type of additional information should be encoded into the data structure defined for actual interchange in the message body (such as a soap:body block), rather than as additional header information as shown in some of the examples below. This is because specific implementation decisions should be expressed as part of the service's signature: you may require additional or different data in future versions.

In the examples below, adoption of a generic method for exchanging "international contextual information" will allow implementations to better model the natural language and locale processing choices offered by the services.

In all cases, the implementer should consider adding a language tag to any operation fault elements to show what language to expect fault messages to be generated in.

In all cases, descriptive text should be tagged with its actual content language using the xml:lang attribute (where permitted). Consideration should be given to providing documentation within services in alternate languages when the service is expected to be utilized by users such as those in other countries or who speak other languages.

2.3 Language and Context Negotiation Patterns

As noted above, there are three general patterns or policies that may be applied to any specific Web service. These three are:

2.3.1 Language Neutral

A language neutral service generally is one that executes in the same way regardless of the current runtime locale or user preferences regarding language. This implies that all or most strings embedded in the service are not human readable. This is, by far, the most common pattern. In a language or locale neutral service, external factors do not alter the way the service performs. An example of this would be a service that adds two integers together: 2+2 = 4 in most every locale.

2.3.1.1 Example: GetTimeService returns the current time

GetTimeService can be written as a locale-neutral service. Time of day, although it is presented with different formats around the world, is measured the same way everywhere and a standardized single frame of reference is available to be used. So a service request could return with a response that included the current UTC (Coordinated Universal Time) time in ISO 8601 format: hh:mm:ss.sss, i.e. as an XML Schema Part 2: Datatypes [XMLS-2] time type.

Any application (i.e. a consumer) that triggers an event causing the GetTimeService request to be sent to a Service Provider, can transform the result into a local or other time format, including perhaps shifting the time into the local time zone. With this proposed implementation, from the requester agent to the service provider, the service and back to the requester agent, the request document and its service implementation are entirely independent of the locale of the client, the host, and the implementer. Hence the name locale-neutral.

Of course, the request could also be implemented with dependencies on locale of the client or the host and this would complicate implementation and increase the probability of errors in making requests, deploying the service, or implementing the service.

2.3.2 Service Determined

In the Service Determined pattern, the implementation or configuration of the service itself or the provider agent determine some aspects of the processing performed by the service. Generally this can be thought of as a design-time or deployment-time decision, rather than a runtime aspect of the service. That is, the service can be relied on to perform its work in a consistent manner using a predetermined language or locale setting.

2.3.2.1 Example

A service provider is in 3 country markets: U.S., Japan, and Germany. Each market is supported by a local warehouse. One of the services that is provided indicates availability of parts. For a given part number, the following information is returned: part number, quantity, language, description, size, list price.

If all of the information was maintained in a single database one might see entries like:

locationpart numberquantitylanguagedescriptionsizecurrencyvalue
U.S.12351en-US6 pack budweiser12oz.USD5.99
Japan88810en-US6 pack kirin591mlJPY999
Germany50020en-US6 pack Beck's300mlEUR8.00

@@@@add some native Japanese and german language entries.

However, this company has not yet implemented a worldwide inventory application and instead each warehouse maintains its inventory in a separate and independent database and uses different applications to manage inventory. In fact, the Japanese warehouse is the only one that uses a system that supports the Japanese language. Because of its support for Japanese and its use of legacy encodings instead of Unicode, the Japanese system cannot properly support German text.

The service provider has implemented a service, GetProductInventory.

The input (inbound message) takes a part number or part ID. The output (outbound message) returns the following information: part no., quantity, language, description, size, list price.

An implementation decision might be taken to provide separate Web services for each warehouse. Customers on each continent will be directed to a particular web service that returns the information from the appropriate warehouse. This pattern is service-determined as it reflects the inherent nature of the service in each part of the world. (That is the German warehouse supports clients in Germany.)

This example also demonstrates the "service determined" type of limitation: it's capabilities are limited by its use of legacy applications. If the databases were consolidated and suitable shipping facilities were made available, the service could still not offer product from any warehouse to any client. The Japanese clients using the Japanese service provider would not be able to see all of the potential German beer names. (They could only see them if the names were transliterated to Japanese or a subset of the Japanese legacy encoding, such as 7-bit ASCII.)

There are several sub-patterns for this.

2.3.3 Client Influenced

In this pattern, the service will attempt to match its processing to the language specified by the user. The service should therefore provide a way for the user's preference to be communicated, regardless of transport, and the actual value used to perform the processing should be returned in any response that may be generated.

2.5 Natural Language Handling in Faults

SOAP Version 1.2 allows to send fault messages with reason texts in multiple languages. SOAP Version 1.2 Part 0: Primer [SOAP-0] explains the <Reason> element as follows: "It must have one or more env:Text sub-elements, each with a unique xml:lang attribute, which allows applications to make the fault reason available in multiple languages. (Applications could negotiate the language of the fault text using a mechanism built using SOAP headers; however this is outside the scope of the SOAP specifications.)"

This mechanism is suitable for returning faults in an environment in which the number of languages is relatively small and the range of languages to be returned is known in advance.

Many actual SOAP implementations are localized into many languages simultaneously. To prevent faults from becoming overly large and difficult to manage, implementations should really include some strategy that reduces the set of languages to a minimum and attempts to match the language of the fault as closely as possible to the client that ends up viewing the message.

Ideal implementations will include mechanisms for "late localization" of the values.

Future versions of SOAP should probably consider allowing additional structured information in a Fault so that suitably internationalized clients can perform the localization and formatting themselves.

3 Usage Scenarios

3.1 Data Integrity and Interoperability

3.1.1 S-001: Data Integrity using an Unicode-based Encoding

3.1.1.2 Description

SOAP is used for XML messages exchanging data among nodes. Because all XML [XML] processors must be able to read entities in both the UTF-8 [RFC2279] and UTF-16 [RFC2781] encodings, using UTF-8 or UTF-16 guarantees character encoding interoperability on the SOAP layer. The Character Model for the World Wide Web [CHARMOD] document describes these considerations and guidelines.

Applies to: SOAP, SOAP interface of software systems

3.2 Language (Locale) Negotiation for SOAP Fault Messages

3.3 Locale Neutral vs. Locale Sensitive Data Exchange

3.3.1 Background

As noted in the Framework section, data structures should be designed wherever possible to be locale neutral. In the case of certain applications this is not possible. In general care should be used to avoid locale-sensitive data representations.

For example, for data transmitted in textual form the following cases can be distinguished because of the actual formatting:

A similar distinction can be made with respect to semantics:

  • Data that has semantics that depend on culture. For example, the XML Schema datatype 'gMonth' is bound to the Gregorian calendar. A value of this datatype such as '5' (referring to May in each year of the Gregorian calendar) cannot be converted to calendars that do not have their months aligned with the months of the Gregorian calendar.

  • Data that has semantics independent of culture. Example: the datatype 'integer' from XML Schema (Part 2, Datatypes)[XMLS-2].

Please note that there are formats that use conventions related to some specific culture for the actual representation while their semantics are culture-independent. For example, although XML Schema requires the use of Western digits, which makes the actual formatting culture-dependent, integers can be formatted according to different cultural conventions without problems.

3.3.2 S-016: Locale Neutral Formated Data

3.3.2.2 Description

If the sender does not know the kind of formatting conventions that the receiver is using for a particular type of data, the sender has to use well-known, locale-neutral formatting conventions. XML Schema (Part 2, Datatypes)[XMLS-2] provides such such formatting conventions. Although SOAP can support various XML encodings, SOAP specifies the common data types such as SOAP encoding which is for general cases: e.g. RPC scenario for basic interoperability. SOAP encoding is based on XML Schema.

The following data types are related to date and time. They are built-in primitive types which are specified in XML Schema Part 2.

Example: Locale neutral formated data in XML Schema
   TYPE            : EXAMPLE               
   ---------------- ---------------------------
   date            : 2003-05-31
   time            : 13:20:00
   tz              : +09:00
   dateTime        : 2003-05-31T13:20:00+09:00
   
   double          : 1267.43233E12
   decimal:integer : 2678967543233

The above data types keep interoperability from a lexical analysis perspective. When a SOAP sender sends e.g. a date to a SOAP receiver using the above date type, both sender and receiver can interpret the date lexically.

On the other hand, dates and date-time values are affected by the user's location (timezone). For example, 2003-05-31 in Korea is not exactly the same period of time as 2002-05-31 in France, but it is the same as 2003-05-31 in Japan. Date varies by time-zone which is related to regional government and geography etc. In processing SOAP encoding or XML Schema data types, it is necessary to distinguish locale-neutral data formatting and locale-neutral data semantics. Using SOAP encoding or XML Schema ensure locale-neutral data format, but does not always ensure locale-neutral data semantics.

For example, a Web service that returns whether the New York Stock Exchange is open or closed on a specific day can accept a date like 2002-05-31 as location independent--the exchange is either open or closed that day. However, for example, a service that places a "limit order" (that is, a purchase of stock that has specific limits on it, one of which may be an expiration date if the other limits are not met) might tie the expiration date to the specific time the market closes in New York that day rather than to an arbitrary other timezone.

The following example is a SOAP message in SOAP encoding. Although all of the following data are locale-neutral formatting, the context of data differs from one location/culture to another.

Example: Locale neutral formated data
   <?xml version='1.0' ?>
   <env:Envelope xmlns:env="http://www.w3.org/2002/06/soap-envelope">
    <env:Header>
    </env:Header>
   <env:Body>
    <c:getAvailableFlightResponse xmlns:c="http://trip.example/query">
     <c:price>123.55</c:price>
     <c:departuredate>2003-05-31</c:departuredate>
     <c:departuretime>13:30:00</c:departuretime>
    </c:getAvailableFlightResponse>
   </env:Body>
   </env:Envelope>

SOAP transactions can use SOAP encoding/XML Schema to assure that there is no ambiguity in transactions between senders and receivers in order to keep lexical analysis interoperability. Additional attributes may be needed to assure the data semantics. Detailed scenarios are described in the next section.

Applies to: Web Services in general

3.3.3 S-017: Data with Additional 'Attributes'

3.3.4 S-018: Data with Default 'Attribute'

3.3.4.2 Description

The following example demonstrates multiple currency data transmission in a SOAP message and the currency code being provided in a separate element along with the value.

The following is an example which has the default currency in SOAP header. It is also possible to specify the default currency attribute in SOAP body instead of SOAP header.

Although adding parameter to SOAP body requires design change for service interface, adding default value into SOAP header does not affect services interface.

Applies to: Web Services General

3.3.5 S-019: Locale Dependent Datatypes

3.3.5.2 Description

If a Japanese sender sends date data to a Japanese receiver, the Japanese sender wishes to send data in Japanese calendar's date such as H13-5-31(H means Heisei era; see Appendix C Heisei) to the receiver.

Example: Locale sensitive data in regional datatype
   <?xml version='1.0' ?>
   <env:Header>
    <WS-I18N:WSinternationalization
       xmlns:WS-I18N="http://example.org/2002/11/21/WS-I18N">
     <WS-I18N:dataTypePreference>
      <ja:JDate xmlns:ja="http//example.org/2003/12/3/ja">EYY-MM-DD</WS-I18N:JDate>
     </WS-I18N:dataTypePreference>
    </WS-I18N:WSinternationalization>
   </env:Header>
   <env:Body>
    <departuredate>H14-5-31</departuredate>
   </env:Body>

Default is Locale neutral mode. If a sender and a receiver can handshake with each other using the same semantics of locale, sender can send a locale dependent data to a receiver, and the receiver can process the data consistently.

If WSDL can describe locale sensitive datatypes, locale negotiation mechanism can be described in WSDL. Is it applicable requirement for interface definition of WSDL?

Editorial note: KN2002-12-10
Possible datatype: Telephone number, ZIP code etc. Needs feasibility assessment.

There is a difference between data types such as telephone number, ZIP code, etc., which can be modeled as strings with patterns, and data types such as dates and numbers, where a connection with the value space (e.g. of XML Schema) may be desirable.

Applies to: WSDL, SOAP, or Localizable datatype

3.4 Locale Sensitive Presentation

3.4.2 S-022: Data Formatting on Sender Side

3.4.2.2 Description
Editorial note: F2F2002-11-23
Explain in more detail why the consistency is needed/desirable. Give examples. Ways this could be done: Producing HTML (+styles). Other reasons may be that the recipient asked for specific formatting.

3.4.3 S-023: Data Formatting on Receiver Side according to Sender

3.4.3.2 Description

Data sent by a sender is formatted by the receiver according to format(s) provided by the sender. This is different from the scenarios "3.4.1 S-021: Data Formatting for End User on Receiver Side" or "3.4.2 S-022: Data Formatting on Sender Side" in that the center of decision and the actual execution of the formatting are separated. Scenarios "3.4.1 S-021: Data Formatting for End User on Receiver Side" or "3.4.2 S-022: Data Formatting on Sender Side" should be preferred because they are more straightforward, but this scenario may be chosen for various reasons such as: The sender wants to ensure consistent appearance, and the data may be used on the receiver side both for formatting and for further processing.

Editorial note: F2F2002-11-23
We need more details and better arguments for why the server wants consistency, and maybe examples of what degree of consistency is necessary/desirable in different applications.

Data formatting rules should be sent to receivers together with data, in order to keep consistency self-descriptively, for user interface.

Editorial note: F2F2002-11-23
There may be other ways to tell the receiver what exactly to do, e.g. by referencing rather that including formatting rules.

The following is a pair of float data and an example of numeric formatting rule.

    Value: float: 235055.55
    Numeric formatting rule: #.##.##0,##

Presentation result for user interface is:

    2.35.055,55

The following example shows a way to send a formatting rule in SOAP header together with a float value.

Example: Locale neutral formated data with formatting rule
    <?xml version='1.0' ?>
    <env:Header>
     <WS-I18N:WSinternationalization
       xmlns:WS-I18N="http://example.org/2002/11/21/WS-I18N">
      <WS-I18N:presentationPreferences>
       <WS-I18N:NumericFormat>#.##.##0,##</WS-I18N:NumericFormat>
       </WS-I18N:presentationPreferences>
     </WS-I18N:WSinternationalization>
    </env:Header>
    <env:Body>
     <value>235055.55</value>
    </env:Body>

Because a receiver receives a value in locale neutral decimal data together with formatting rule, the receiver can format the data for user interface self-descriptively.

Applies to: Web Services General

3.5 Locale Sensitive Data Processing

3.5.1 S-024: Locale Sensitive Processing by Provider(Receiver)

3.5.1.2 Description
3.5.1.2.1 Transport Layer (HTTP, SMTP/MIME, etc.)

Note that this layer includes more than just Web services. It also includes XHTML [XHTML], XForms [XFORMS], and other locale-sensitive applications on the Web. The service provider receiving the document needs to know the sender's locale preferences in order to perform locale-sensitive processing. This may include routing based on language or regional preferences, selection of response language, formatting of error messages (if the SOAP document is unintelligible/non-parse-able, what language is the failure message returned in?).

3.6 Finding Services

3.6.1 S-026: Searching for Web Services

3.6.1.2 Description

Repositories and search-able meta-data (such as UDDI [UDDI]) about Web services need to provide support for multiple language searches. Transport layer issues do not allow XML data structures to be used for resolution, except by reference (e.g. the receiver must down-load a separate resource asynchronously to "decode" the preference). Tags on this layer may be necessary in place of XML data structures.

Editorial note: KN2002/12/13
UDDI provides TAXONOMY based on the ISO 3166 Geographic Code System.

3.7 Services for Internationalization Functionality

3.8 Development of Internationalized Web Services

3.8.1 S-030: Internationalizing an Existing Web Service

3.8.1.2 Description

The web services developer is solely responsible for supplying the fields, logic, and semantics that will be used to achieve i18n capabilities. Each service will vary in its approach and may not bother to supply a suitable mechanism. Without guidance from the client, assumptions have to be made that are unsuitable. For example, the locale of the server may be used to format the response. When the service is internationalized, the only option is to ask for locale as an additional input, changing the service contract.

There is an important functional and semantic difference between a field supplied in the actual service invocation (that is, as part of the data) and one supplied in the envelope (that is, as part of the protocol) because when supplied as part of the data, developers must always take care to create, populate, read, and process the fields. Internationalization of an existing service therefore takes the form of deploying a new service (since the inputs have changed).

By contrast, if locale and language preferences are part of the "context" (in the envelope, for example), the developer gains several advantages. First, both the provider and the service can read the locale and language preference. (The service must be provided with a specific API to obtain the locale and language from the provider, or it can be silently managed by the provider.) Services that require external environmental changes to activate their locale-sensitivity can have the provider perform this processing for them. Multiple services in the same "chain" can inherit the same locale and language context. Most important, though, the client-side environment can be optimized to provide the locale and language preferences of the end user automatically, without developers having to write code to obtain the values and populate the inputs of the Web Service. In addition, Web Service authors can add international or multi-language support to services after initial deployment without changing service descriptors (WSDL and XSD) that may already be in wide use.

4 Use Case

Editorial note: KN2002-12-10
Use Case is added based on usage scenarios. e.g. Flight Schedule, Accounting Data

A References (Non-Normative)

[WSA]
W3C Working Draft "Web Services Architecture", David Booth, Michael Champion, Chris Ferris, Francis McCabe, Eric Newcomer, David Orchard, 14 May 2003 (See http://www.w3.org/TR/2003/WD-ws-arch-20030514/.)
[WSAR]
W3C Working Draft "Web Services Architecture Requirements", Daniel Austin, Abbie Barbir, Christopher Ferris, Sharad Garg, 14 November 2002 (See http://www.w3.org/TR/2002/WD-wsa-reqs-20021114.)
[WSAUS]
W3C Working Draft "Web Services Architecture Usage Scenarios", Hugo Haas, David Orchard, 14 May 2003 (See http://www.w3.org/TR/2003/WD-ws-arch-scenarios-20030514/.)
[WSAG]
W3C Working Draft "Web Services Glossary", Allen Brown, Hugo Haas, 14 May 2003 (See http://www.w3.org/TR/2003/WD-ws-gloss-20030514/.)
[SOAP-0]
W3C Proposed Recommendation "SOAP Version 1.2 Part 0: Primer", Nilo Mitra, 7 May 2003 (See http://www.w3.org/TR/2003/PR-soap12-part0-20030507/.)
[SOAP-1]
W3C Proposed Recommendation "SOAP Version 1.2 Part 1: Messaging Framework", Martin Gudgin, Marc Hadley, Noah Mendelsohn, Jean-Jacques Moreau, Henrik Frystyk Nielsen, 7 May 2003 (See http://www.w3.org/TR/2003/PR-soap12-part1-20030507/.)
[SOAP-2]
W3C Proposed Recommendation "SOAP Version 1.2 Part 2: Adjuncts", Martin Gudgin, Marc Hadley, Noah Mendelsohn, Jean-Jacques Moreau, Henrik Frystyk Nielsen, 7 May 2003 (See http://www.w3.org/TR/2003/PR-soap12-part2-20030507/.)
[SOAP-AF]
W3C Working Draft "SOAP 1.2 Attachment Feature", Henrik Frystyk Nielsen, Hervé Ruellan, 24 September 2002 (See http://www.w3.org/TR/2002/WD-soap12-af-20020924/.)
[SOAP-EB]
W3C Note "SOAP Version 1.2 Email Binding", Highland Mary Mountain, Jacek Kopecky, Stuart Williams, Glen Daniels, Noah Mendelsohn, 3 July 2002 (See http://www.w3.org/TR/2002/NOTE-soap12-email-20020703.)
[WSDL-V12]
W3C Working Draft "Web Services Description Language (WSDL) Version 1.2", Roberto Chinnici, Martin Gudgin, Jean-Jacques Moreau, Sanjiva Weerawarana, 3 March 2003 (See http://www.w3.org/TR/2003/WD-wsdl12-20030303.)
[WSDL-B]
W3C Working Draft "Web Services Description Language (WSDL) Version 1.2: Bindings", Jean-Jacques Moreau, Jeffrey Schlimmer, 24 January 2003 (See http://www.w3.org/TR/2003/WD-wsdl12-bindings-20030124.)
[XML]
W3C Recommendation "Extensible Markup Language (XML) 1.0 (Second Edition)", Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Eve Maler, 6 October 2000 (See http://www.w3.org/TR/2000/REC-xml-20001006.)
[CHARMOD]
W3C Working Draft "Character Model for the World Wide Web 1.0", Martin J. Dürst, François Yergeau, Richard Ishida, Misha Wolf, Asmus Freytag, Tex Texin, 30 April 2002 (See http://www.w3.org/TR/2002/WD-charmod-20020430/.)
[XML-JP]
W3C Note "XML Japanese Profile", MURATA Makoto, 14 April 2000 (See http://www.w3.org/TR/2000/NOTE-japanese-xml-20000414/.)
[RFC2616]
Request for Comments: 2616 "Hypertext Transfer Protocol -- HTTP/1.1", R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee, June 1999 (See http://www.ietf.org/rfc/rfc2616.txt.)
[XMLS-2]
W3C Recommendation "XML Schema Part 2: Datatypes", Paul V. Biron, Ashok Malhotra, 02 May 2001 (See http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/.)
[UDDI]
"UDDI Version 3.0 Published Specification", Tom Bellwood, Luc Clément, David Ehnebuske, Andrew Hately, Maryann Hondo, Yin Leng Husband, Karsten Januszewski, Sam Lee, Barbara McKee, Joel Munter, Claus von Riegen, 19 July 2002 (See http://uddi.org/pubs/uddi_v3.htm.)
[RFC2279]
IETF (Internet Engineering Task Force). RFC 2279: UTF-8, a transformation format of ISO 10646, F. Yergeau, 1998 (See http://www.ietf.org/rfc/rfc2279.txt.)
[RFC2781]
IETF (Internet Engineering Task Force). RFC 2781: UTF-16, an encoding of ISO 10646, P. Hoffman, F. Yergeau. 2000 (See http://www.ietf.org/rfc/rfc2781.txt.)
[XHTML]
W3C Recommendation "XHTML 1.0 The Extensible HyperText Markup Language (Second Edition)", 26 January 2000, revised 1 August 2002 (See http://www.w3.org/TR/xhtml1/.)
[XFORMS]
W3C Candidate Recommendation "XForms 1.0", Micah Dubinko, Leigh L. Klotz, Jr., Roland Merrick, T. V. Raman, 12 November 2002 (See http://www.w3.org/TR/2002/CR-xforms-20021112/.)

B Acknowledgements (Non-Normative)

This document is the work of the Web Services Task Force of the W3C Internationalization Working Group.

C Heisei (Non-Normative)

The imperial Calendar is commonly used in Japan. Heisei is the current era, and it started on January 8th, 1989. Year 2002 is Year Heisei 14. Showa is the previous era, which ended on January 7th, 1989 or Showa 64.