<!--                                                                        -->
<!-- Copyright 2008 Google Inc.                                             -->
<!-- Licensed under the Apache License, Version 2.0 (the "License"); you    -->
<!-- may not use this file except in compliance with the License. You may   -->
<!-- may obtain a copy of the License at                                    -->
<!--                                                                        -->
<!-- http://www.apache.org/licenses/LICENSE-2.0                             -->
<!--                                                                        -->
<!-- Unless required by applicable law or agreed to in writing, software    -->
<!-- distributed under the License is distributed on an "AS IS" BASIS,      -->
<!-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or        -->
<!-- implied. License for the specific language governing permissions and   -->
<!-- limitations under the License.                                         -->

<!-- Internationalization support.                                          -->
<!--                                                                        -->
<module type="fileset">
  <inherits name="com.google.gwt.core.Core" />
  <inherits name="com.google.gwt.regexp.RegExp"/>
  <inherits name="com.google.gwt.safehtml.SafeHtml"/>
  <source path="" includes="client/,shared/" />
  <public path="public" />

  <!-- Browser-sensitive code should use the 'locale' client property. -->
  <!-- 'default' is always defined.                                    -->
  <define-property name="locale" values="default" />

  <!--
   - Configuration property defining the query parameter to use for the locale.
   - Valid values are any legal URL query parameter name. 
   -->
  <define-configuration-property name="locale.queryparam"
      is-multi-valued="false"/>
  <set-configuration-property name="locale.queryparam" value="locale"/>

  <!--
   - Configuration property defining the cookie to use for the locale.
   - Valid values are any legal cookie name. 
   -->
  <define-configuration-property name="locale.cookie" is-multi-valued="false"/>
  <set-configuration-property name="locale.cookie" value=""/>

  <!--
   - Configuration property controlling whether to use user agent info for
   - the user's locale.
   - Valid values are (case insensitive): y/yes/n/no/true/false/on/off (others
   - are treated as no).
   -->
  <define-configuration-property name="locale.useragent"
      is-multi-valued="false"/>
  <set-configuration-property name="locale.useragent" value="N"/>

  <!--
   - Configuration controlling whether to look for locale information in meta
   - tags embedded by the server.
   - Valid values are (case insensitive): y/yes/n/no/true/false/on/off (others
   - are treated as no).
   -->
  <define-configuration-property name="locale.usemeta"
      is-multi-valued="false"/>
  <set-configuration-property name="locale.usemeta" value="Y"/>

  <!--
   - Configuration property defining the order to search for a locale.
   - Valid values are comma-separated lists of the following values:
   -   * queryparam
   -   * meta
   -   * cookie
   -   * useragent
   -->
  <define-configuration-property name="locale.searchorder"
      is-multi-valued="false"/>
  <set-configuration-property name="locale.searchorder"
      value="queryparam,cookie,meta,useragent"/>

  <property-provider name="locale"
      generator="com.google.gwt.i18n.linker.LocalePropertyProviderGenerator"/>

  <generate-with class="com.google.gwt.i18n.rebind.LocalizableGenerator">
    <when-type-assignable class="com.google.gwt.i18n.shared.Localizable" />
  </generate-with>
  <generate-with class="com.google.gwt.i18n.rebind.LocaleInfoGenerator">
    <when-type-is class="com.google.gwt.i18n.client.impl.LocaleInfoImpl" />
  </generate-with>
  <generate-with class="com.google.gwt.i18n.rebind.CurrencyListGenerator">
    <when-type-is class="com.google.gwt.i18n.client.CurrencyList" />
  </generate-with>
  <generate-with class="com.google.gwt.i18n.rebind.CustomDateTimeFormatGenerator">
    <when-type-assignable class="com.google.gwt.i18n.shared.CustomDateTimeFormat" />
  </generate-with>
  
  <!--
      Set of locales to be selectable at runtime.  Only those which extend
      the locale of the current permutation will actually be included.  Note
      that currently only number/date format constants, locale names, and
      currency data will support runtime locales - everything else will just
      reference the compile-time locale set in the "locale" property.
   -->
  <define-configuration-property name="runtime.locales" is-multi-valued="true"/>

  <!--
      A "real" locale to be served by default (i.e. if the browser either
      doesn't have a requested locale, or it cannot be satisfied with any
      of the available locales).  The non-internationalized value "default"
      is actually deficient for any actual locale, so users should set this
      when then either <extend-property> or <define-property> user.agents for
      their available translations.  You should still have a locale named
      "default" (because various tools expect that to be valid), but it will
      be generated as the locale specified here.
  -->
  <set-property-fallback name="locale" value="default"/>

  <!-- Force BiDi policy to be enabled -->
  <define-property name="gwt.forceBidi" values="true, false"/>

  <!-- Default to not forced -->
  <set-property name="gwt.forceBidi" value="false"/>

  <!-- Replace the BidiPolicyImpl -->
  <replace-with class="com.google.gwt.i18n.client.BidiPolicy.BidiPolicyImplOn">
    <when-type-is class="com.google.gwt.i18n.client.BidiPolicy.BidiPolicyImpl"/>
    <when-property-is name="gwt.forceBidi" value="true"/>
  </replace-with>
</module>

