Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在GWT中获取不同地区的所有日期/时间格式模式_Gwt_Internationalization_Design Patterns_Locale - Fatal编程技术网

如何在GWT中获取不同地区的所有日期/时间格式模式

如何在GWT中获取不同地区的所有日期/时间格式模式,gwt,internationalization,design-patterns,locale,Gwt,Internationalization,Design Patterns,Locale,我尝试在GWT中获取所有日期/时间格式模式,使用DateTimeFormat.PredefinedFormat获取当前区域设置的所有模式。但是我怎样才能获得其他地区的所有模式。我认为你做不到这一点。在构建应用程序时,GWT编译器会为不同的地区创建应用程序的多个版本。然后浏览器加载一个特定版本,因此运行时无法使用其他语言环境。如果您想了解更多信息,请阅读延迟绑定: 但是,可以选择强制使用某个区域设置。如果您只支持一个区域设置,或者可以将其用于测试目的,那么这将非常有用。将以下行添加到模块XML文

我尝试在GWT中获取所有日期/时间格式模式,使用DateTimeFormat.PredefinedFormat获取当前区域设置的所有模式。但是我怎样才能获得其他地区的所有模式。

我认为你做不到这一点。在构建应用程序时,GWT编译器会为不同的地区创建应用程序的多个版本。然后浏览器加载一个特定版本,因此运行时无法使用其他语言环境。如果您想了解更多信息,请阅读延迟绑定:

但是,可以选择强制使用某个区域设置。如果您只支持一个区域设置,或者可以将其用于测试目的,那么这将非常有用。将以下行添加到模块XML文件中:

<inherits name="com.google.gwt.i18n.I18N"/>
<extend-property name="locale" values="en_US"/>
<set-property name="locale" value="en_US"/>

我找到了一种方法,不是我想要的一般方法,但在这种情况下它是有效的。也许有人有更好的解决办法

   private static Date testDateFormates( String dateText ) {

        ArrayList<String> locales = new ArrayList<String>();

        DateTimeFormatInfo formatDE = new DateTimeFormatInfoImpl_de();
        DateTimeFormatInfo formatEN = new DateTimeFormatInfoImpl_en();
        DateTimeFormatInfo formatFR = new DateTimeFormatInfoImpl_fr();
        DateTimeFormatInfo formatES = new DateTimeFormatInfoImpl_es();
        DateTimeFormatInfo formatZH = new DateTimeFormatInfoImpl_zh();
        DateTimeFormatInfo formatRU = new DateTimeFormatInfoImpl_ru();

        addToList( locales, LocaleInfo.getCurrentLocale().getDateTimeFormatInfo() );
        addToList( locales, formatDE );
        addToList( locales, formatEN );
        addToList( locales, formatFR );
        addToList( locales, formatES );
        addToList( locales, formatZH );
        addToList( locales, formatRU );

        .
        .
        .  
    }

    private static void addToList( ArrayList<String> patterns, DateTimeFormatInfo format ) {
        patterns.add( format.dateFormat() );
        patterns.add( format.dateFormatFull() );
        patterns.add( format.dateFormatLong() );
        patterns.add( format.dateFormatMedium() );
        patterns.add( format.dateFormatShort() );
    }
私有静态日期TestDateFormats(字符串dateText){
ArrayList locales=新的ArrayList();
DateTimeFormatInfo formatDE=新的DateTimeFormatInfo模板();
DateTimeFormatInfo formatEN=新的DateTimeFormatInfo模板();
DateTimeFormatInfo formatFR=新的DateTimeFormatInfo模板\u fr();
DateTimeFormatInfo formatES=新的DateTimeFormatInfo模板();
DateTimeFormatInfo formatZH=新的DateTimeFormatInfo\u zh();
DateTimeFormatInfo formatRU=新的DateTimeFormatInfo模板(ru)();
addToList(locales,LocaleInfo.getCurrentLocale().getDateTimeFormatInfo());
addToList(地区、格式);
addToList(地区、格式);
addToList(地区、格式);
addToList(地区、格式);
addToList(地区,格式ZH);
addToList(地区、格式);
.
.
.  
}
私有静态void addToList(ArrayList模式、DateTimeFormatInfo格式){
patterns.add(format.dateFormat());
patterns.add(format.dateFormatFull());
patterns.add(format.dateFormatLong());
patterns.add(format.dateFormatMedium());
patterns.add(format.dateFormatShort());
}

到目前为止,这是我发现的唯一能够显示本地化日期的方法,而不是在应用程序级别进行完全本地化(每个语言环境的编译版本)。还有一些货币实现可以以类似的方式使用。谢谢分享!