1

GWTアプリケーションを国際化しようとしています。

チュートリアルを読み、いくつかの例を確認します。

URLにタグ「?locale = de」を追加せずに言語を変更する方法はありますか?

私の目的はメニューのログイン画面で、ユーザーが言語を選択してからリロードします。URLにロケールを追加することでそれを行うことができました。[私にとっては醜い方法]

Htmlファイルのメタタグで可能性があることを読んでいました。だから私はそれをhtmlファイルに入れようとしました

その言語で読み込まれますが、言語を変更することはできません。

メタタグのみを使用して言語を変更することは可能ですか?

コードでは、メタタグ値を読み取って変更できますが、更新すると、行った変更が失われます

    NodeList<Element> tags = Document.get().getElementsByTagName("meta");
    for (int i = 0; i < tags.getLength(); i++) {
        MetaElement metaTag = ((MetaElement) tags.getItem(i));
        System.out.println("metaTag.getName() = " + metaTag.getName());
        System.out.println("metaTag.getContent = " + metaTag.getContent());
        if (metaTag.getName().equals("gwt:property")) {
            metaTag.setContent("locale=de");
        }
    }
    Window.Location.reload();
4

1 に答える 1

7

メタタグやURLの代わりに、Cookieを使用してロケールに関する情報を読み書きできます。

.gwt.xmlファイル内

<set-configuration-property name="locale.cookie"
    value="GWT_LOCALE" />

ロケール情報を読み取るJavaコード

final String cookieName = LocaleInfo.getLocaleCookieName();
String cookie = Cookies.getCookie( cookieName );

ロケール情報を書き込むJavaコード

private void setLocaleCookie( String locale )
{
    final String cookieName = LocaleInfo.getLocaleCookieName();
    if ( cookieName != null )
    {
        Date expires = new Date();
        expires.setYear( expires.getYear() + 1 );
        Cookies.setCookie( cookieName, locale, expires );
    }
    if ( !control )
    {
        com.google.gwt.user.client.Window.Location.reload();
    }
}

また参照

1)https://developers.google.com/web-toolkit/doc/latest/DevGuideI18nLocale

2)http://learninggwt.blogspot.in/2011/07/gwt-internationalization-and-cookies.html

于 2013-01-16T18:23:46.850 に答える