| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <!-- --> |
| <!-- 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. --> |
| |
| <html> |
| <head> |
| <meta http-equiv="content-type" content="text/html; charset=UTF-8"> |
| |
| <script type="text/javascript" language="javascript"> |
| // Used by the dictionary example. |
| // If you modify this object, the example will reflect your changes. |
| var userInfo = { |
| name: "Amelie Crutcher", |
| timeZone: "EST", |
| userID: "123", |
| lastLogOn: "2/2/2006" |
| }; |
| </script> |
| |
| <!-- The following commented-out <meta> element is an alternate way to specify the locale to use --> |
| <!-- if the locale is not present in the URL query string.--> |
| <!-- <meta name='gwt:property' content='locale=fr'>--> |
| <meta name="gwt:property" content="locale=en"> |
| |
| <link rel="stylesheet" type="text/css" href="I18N.css"> |
| |
| <title>Internationalization Sample</title> |
| |
| <script type="text/javascript" language="javascript" |
| src="i18n/i18n.nocache.js"></script> |
| |
| </head> |
| |
| <body> |
| |
| <div class="i18n-sample"> |
| |
| <div class="intro-background"> |
| <div class="intro-content"> |
| |
| <h1> |
| Îñţérñåţîöñåļîžåţîöñ |
| Sample |
| </h1> |
| |
| <p> |
| This sample shows the use of Google Web Toolkit's internationalization classes. |
| In a truly internationalized application, all strings (including |
| this one) and styles (including the CSS used to style this page), would also be internationalized. |
| Although English is the default language for this sample, it is also localized for French. |
| Append <a href="I18N.html?locale=fr">locale=fr</a> to the query string to view the French version. |
| </p> |
| |
| </div> |
| </div> |
| |
| <div class="examples"> |
| |
| <div class="numberFormat example"> |
| <h2>NumberFormat</h2> |
| <p> |
| Class <code>NumberFormat</code> supports locale-sensitive formatting and parsing of numbers using a flexible pattern-based syntax. |
| In addition to custom patterns, several standard patterns are also available for convenience. |
| See the GWT class reference for details of the pattern syntax. |
| </p> |
| <table> |
| <tr> |
| <th class="col1" id="numberFormatPatternCaption"></th> |
| <td class="col2" id="numberFormatPatternList"></td> |
| <td class="col3"> </td> |
| </tr> |
| |
| <tr> |
| <th class="col1" > </th> |
| <td class="col2" id="numberFormatPatternText"></td> |
| <td class="col3" id="numberFormatPatternError"> </td> |
| </tr> |
| |
| <tr> |
| <th class="col1" id="numberFormatInputCaption"></th> |
| <td class="col2" id="numberFormatInputText"></td> |
| <td class="col3" id="numberFormatInputError"> </td> |
| </tr> |
| |
| <tr> |
| <th class="col1" id="numberFormatOutputCaption"></th> |
| <td class="col2" id="numberFormatOutputText"></td> |
| <td class="col3"> </td> |
| </tr> |
| </table> |
| </div> |
| |
| <div class="dateTimeFormat example"> |
| <h2>DateTimeFormat</h2> |
| <p> |
| Class <code>DateTimeFormat</code> supports locale-sensitive formatting and parsing of date and time values, like <code>NumberFormat</code>, using a flexible pattern-based syntax. |
| Both custom patterns and standard patterns are supported. |
| See the GWT class reference for details of the pattern syntax. |
| </p> |
| <table> |
| <tr> |
| <th class="col1" id="dateTimeFormatPatternCaption"></th> |
| <td class="col2" id="dateTimeFormatPatternList"></td> |
| <td class="col3"> </td> |
| </tr> |
| |
| <tr> |
| <th class="col1"> </th> |
| <td class="col2" id="dateTimeFormatPatternText"></td> |
| <td class="col3" id="dateTimeFormatPatternError"> </td> |
| </tr> |
| |
| <tr> |
| <th class="col1" id="dateTimeFormatInputCaption"></th> |
| <td class="col2" id="dateTimeFormatInputText"></td> |
| <td class="col3" id="dateTimeFormatInputError"> </td> |
| </tr> |
| |
| <tr> |
| <th class="col1" id="dateTimeFormatOutputCaption"></th> |
| <td class="col2" id="dateTimeFormatOutputText"></td> |
| <td class="col3"> </td> |
| </tr> |
| </table> |
| </div> |
| |
| <div class="messages example"> |
| <h2>Messages</h2> |
| <p> |
| Interface <code>Messages</code> provides a way to create strongly-typed parameterized messages that are checked for correctness during compilation. |
| This example interacts with the sample interface <code>ErrorMessages</code>, defined as follows: |
| </p> |
| <pre class="code"> |
| public interface ErrorMessages extends Messages { |
| String permissionDenied( |
| String username, |
| String securityClearance, |
| String inaccessibleResource); |
| } |
| </pre> |
| <table> |
| <tr> |
| <th class="col1" id="messagesTemplateCaption"></th> |
| <td class="col2" id="messagesTemplateText"></td> |
| </tr> |
| |
| <tr> |
| <th class="col1" id="messagesArg1Caption"></th> |
| <td class="col2" id="messagesArg1Text"></td> |
| </tr> |
| |
| <tr> |
| <th class="col1" id="messagesArg2Caption"></th> |
| <td class="col2" id="messagesArg2Text"></td> |
| </tr> |
| |
| <tr> |
| <th class="col1" id="messagesArg3Caption"></th> |
| <td class="col2" id="messagesArg3Text"></td> |
| </tr> |
| |
| <tr> |
| <th class="col1" id="messagesFormattedOutputCaption"></th> |
| <td class="col2" id="messagesFormattedOutputText"></td> |
| </tr> |
| </table> |
| </div> |
| |
| <div class="plurals example"> |
| <h3>Plural Forms</h3> |
| <p> |
| The <code>Messages</code> interface also provides support for plural forms, choosing the |
| correct form based on the count. In the example below, note that the English plural forms |
| are included in the source file via annotations. |
| </p> |
| <pre class="code"> |
| @DefaultLocale("en_US") |
| public interface MyMessages extends Messages { |
| @DefaultMessage("You have {0} trees.") |
| @PluralText({"one", "You have one tree."}) |
| String treeCount(@PluralCount int count); |
| } |
| </pre> |
| <table> |
| <tr> |
| <th class="col1" id="pluralsArg1Caption"></th> |
| <td class="col2" id="pluralsArg1Text"></td> |
| </tr> |
| |
| <tr> |
| <th class="col1" id="pluralsFormattedOutputCaption"></th> |
| <td class="col2" id="pluralsFormattedOutputText"></td> |
| </tr> |
| </table> |
| </div> |
| |
| <div class="constants example"> |
| <h2>Constants</h2> |
| <p> |
| Interface <code>Constants</code> makes it possible to localize strings, numbers, and maps of strings onto strings. |
| This example isn't terribly exciting, but it does demonstrate how to localize constants. |
| The labels and colors choices below are provided by the localized implementation of the sample interface <code>ConstantsExampleConstants</code>, defined as follows: |
| </p> |
| <pre class="code"> |
| public interface ConstantsExampleConstants extends Constants { |
| Map colorMap(); |
| String favoriteColor(); |
| String firstName(); |
| String lastName(); |
| } |
| </pre> |
| <table> |
| <tr> |
| <th class="col1" id="constantsFirstNameCaption"></th> |
| <td class="col2" id="constantsFirstNameText"></td> |
| </tr> |
| |
| <tr> |
| <th class="col1" id="constantsLastNameCaption"></th> |
| <td class="col2" id="constantsLastNameText"></td> |
| </tr> |
| |
| <tr> |
| <th class="col1" id="constantsFavoriteColorCaption"></th> |
| <td class="col2" id="constantsFavoriteColorList"></td> |
| </tr> |
| </table> |
| </div> |
| |
| <div class="constantsWithLookup example"> |
| <h2>ConstantsWithLookup</h2> |
| <p> |
| Interface <code>ConstantsWithLookup</code> makes it possible to dynamically look up localized values using method names as string keys. |
| This example interacts with the sample interface <code>Colors</code>, defined as follows: |
| </p> |
| <pre class="code"> |
| public interface ColorConstants extends ConstantsWithLookup { |
| String black(); |
| String blue(); |
| String green(); |
| String grey(); |
| String lightGrey(); |
| String red(); |
| String white(); |
| String yellow(); |
| } |
| </pre> |
| <table> |
| <tr> |
| <th class="col1" id="constantsWithLookupInputCaption"></th> |
| <td class="col2" id="constantsWithLookupInputText"></td> |
| </tr> |
| |
| <tr> |
| <th class="col1" id="constantsWithLookupResultsCaption"></th> |
| <td class="col2" id="constantsWithLookupResultsText"></td> |
| </tr> |
| </table> |
| </div> |
| |
| <div class="dictionary example"> |
| <h2>Dictionary</h2> |
| <p> |
| Using the <code>Dictionary</code> class, you can lookup localized values within JavaScript objects defined in the host HTML page rather than compiling them into your GWT code. |
| This is useful if your translations change frequently, because your HTML server can emit updated translations into the host page HTML as often as needed. |
| It can also a useful way to integrate a GWT module with existing localized web applications. |
| Note that a dictionary's values depend only on the host page HTML and are not influenced by the GWT <code>locale</code> client property. |
| For this example, the JavaScript variable declaration appears in the source for this HTML page. It looks like this: |
| </p> |
| <pre class="code"> |
| var userInfo = { |
| name: "Amelie Crutcher", |
| timeZone: "EST", |
| userID: "123", |
| lastLogOn: "2/2/2006" |
| }; |
| </pre> |
| <div id="dictionaryExample"></div> |
| </div> |
| |
| </div> <!-- examples --> |
| |
| </div> <!-- i18n-samples --> |
| |
| </body> |
| </html> |