Setting locales in gwt.xml do not work

后端 未结 3 1594
天命终不由人
天命终不由人 2020-12-11 22:43

In my module xml file I have this:

 
 
 

        
相关标签:
3条回答
  • 2020-12-11 23:17

    First keep in mind that i18n locale do not work well under gwt: run-codeserver, so you must tested after full compilation.

    And there is no reason for this two lines, just eliminate them to make it work:

    <set-configuration-property name="locale.useragent"value="Y" />
    <set-property name="locale" value="de, fr" />
    
    0 讨论(0)
  • 2020-12-11 23:33

    Make sure that you set the locale for your app - either in HTML, or through a URL parameter. For example, you can include this in your HTML:

    <meta name="gwt:property" content="locale=de">
    

    Also, remove these lines:

    <set-configuration-property name="locale.useragent"value="Y" />
    <set-property name="locale" value="de, fr" />
    

    I am following the examples offered in GWT guide, and I never had a problem with locales.

    0 讨论(0)
  • 2020-12-11 23:37

    I got an error while running application because of invalid your gwt.xml.

    [Fatal Error] :13:53: Element type "set-configuration-property" must be followed by either attribute specifications, ">" or "/>".
    

    put a space before value as shown below:

    <set-configuration-property name="locale.useragent" value="Y" /> 
    

    I have posted a answer in the same context.

    Please have a look at How do I set locale to GWT DateBox

    Screenshot for German(de) locale:

    enter image description here

    Screenshot for French(fr) locale:

    enter image description here


    Complete Code:

    Note: just change com.gwt.test.client.GWTTestProject it with you actual Entry Point clas in your gwt.xml file.

    gwt.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.5.0//EN"
      "http://google-web-toolkit.googlecode.com/svn/tags/2.5.0/distro-source/core/src/gwt-module.dtd">
    <module rename-to='gwttestproject'>
        <!-- Inherit the core Web Toolkit stuff. -->
        <inherits name='com.google.gwt.user.User' />
        <inherits name="com.google.gwt.http.HTTP" />
        <inherits name="com.google.gwt.xml.XML" />
        <inherits name="com.google.gwt.i18n.CldrLocales" />
    
        <inherits name='com.google.gwt.user.theme.clean.Clean' />
        <inherits name="com.google.gwt.i18n.I18N" />
    
        <set-configuration-property name="locale.searchorder"
            value="cookie,queryparam" />
        <set-configuration-property name="locale.useragent"
            value="Y" />
    
        <extend-property name="locale" values="de" />
        <extend-property name="locale" values="fr" />
        <set-property name="locale" value="de, fr" />
        <set-property-fallback name="locale" value="de" />
    
        <!-- Specify the app entry point class. -->
        <entry-point class='com.gwt.test.client.GWTTestProject' />
    
        <!-- Specify the paths for translatable code -->
        <source path='client' />
        <source path='shared' />
    
    </module>
    

    Entry Point class

    import java.util.Arrays;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    
    import com.google.gwt.core.client.EntryPoint;
    import com.google.gwt.i18n.client.DateTimeFormat;
    import com.google.gwt.i18n.client.DefaultDateTimeFormatInfo;
    import com.google.gwt.i18n.client.LocaleInfo;
    import com.google.gwt.i18n.client.impl.cldr.DateTimeFormatInfoImpl_de;
    import com.google.gwt.i18n.client.impl.cldr.DateTimeFormatInfoImpl_en;
    import com.google.gwt.i18n.client.impl.cldr.DateTimeFormatInfoImpl_es;
    import com.google.gwt.i18n.client.impl.cldr.DateTimeFormatInfoImpl_fr;
    import com.google.gwt.i18n.client.impl.cldr.DateTimeFormatInfoImpl_ru;
    import com.google.gwt.i18n.client.impl.cldr.DateTimeFormatInfoImpl_zh;
    import com.google.gwt.user.client.ui.RootPanel;
    import com.google.gwt.user.datepicker.client.DateBox;
    
    public class GWTTestProject implements EntryPoint {
    
    public static final native String getLanguage() /*-{
        return navigator.language;
    }-*/;
    
    public void onModuleLoad() {
        System.out.println(Arrays.toString(LocaleInfo.getAvailableLocaleNames()));
    
        loacleDate();
    }
    
    public void loacleDate() {
        Map<String, DefaultDateTimeFormatInfo> formats = new HashMap<String, DefaultDateTimeFormatInfo>();
    
        DefaultDateTimeFormatInfo formatDE = new DateTimeFormatInfoImpl_de();
        DefaultDateTimeFormatInfo formatEN = new DateTimeFormatInfoImpl_en();
        DefaultDateTimeFormatInfo formatFR = new DateTimeFormatInfoImpl_fr();
        DefaultDateTimeFormatInfo formatES = new DateTimeFormatInfoImpl_es();
        DefaultDateTimeFormatInfo formatZH = new DateTimeFormatInfoImpl_zh();
        DefaultDateTimeFormatInfo formatRU = new DateTimeFormatInfoImpl_ru();
    
        formats.put("de", formatDE);
        formats.put("en", formatEN);
        formats.put("fr", formatFR);
        formats.put("es", formatES);
        formats.put("zh", formatZH);
        formats.put("ru", formatRU);
    
        for (String key : formats.keySet()) {
            System.out.println(key + " - " + formats.get(key).dateFormat());
        }
    
        String language = getLanguage();
    
        DefaultDateTimeFormatInfo format = formats.get(language);
        DateTimeFormat dateFormat = null;
        if (format == null) {
            dateFormat = DateTimeFormat.getFormat(LocaleInfo.getCurrentLocale()
                    .getDateTimeFormatInfo().dateFormatShort());
        } else {
            dateFormat = DateTimeFormat.getFormat(format.dateFormatFull());
        }
    
        System.out.println("Date formatted:" + dateFormat.format(new Date()));
    
        DateBox dateBox = new DateBox();
        dateBox.setFormat(new DateBox.DefaultFormat(dateFormat));
        RootPanel.get().add(dateBox);
    }
    }
    

    HTML

    <!doctype html>
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <link type="text/css" rel="stylesheet" href="GWTTestProject.css">
    <title>Web Application Starter Project</title>
    <script type="text/javascript" language="javascript"
        src="gwttestproject/gwttestproject.nocache.js"></script>
    </head>
    <body>
    
    </body>
    </html>
    
    0 讨论(0)
提交回复
热议问题