<!--                                                                        -->
<!-- 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>
  <inherits name="com.google.gwt.regexp.RegExp"/>
  <inherits name="com.google.gwt.safehtml.SafeHtml"/>
  <source path="" includes="client/,shared/" />

  <!-- 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.client.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.client.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>

