GWT-国际化,默认值起作用,但当我将区域设置添加到URL时,仍然会得到默认值。有什么想法吗?

GWT-国际化,默认值起作用,但当我将区域设置添加到URL时,仍然会得到默认值。有什么想法吗?,gwt,internationalization,locale,Gwt,Internationalization,Locale,我现在已经开始认真地使用GWT进行实验,当然我被卡住了。我正在尝试一个非常简单的国际化,当我向我的URL添加区域设置(如下所示)时,它不起作用,并且总是获取默认数据 http://127.0.0.1:8888/DoTime.html?gwt.codesvr=127.0.0.1:9997&locale=sv_SE 在下图中,您可以看到项目的结构。应用程序的名称为“DoTime” 在文件/client/properties/DoTimeConstants\u sv\u SE.proper

我现在已经开始认真地使用GWT进行实验,当然我被卡住了。我正在尝试一个非常简单的国际化,当我向我的URL添加区域设置(如下所示)时,它不起作用,并且总是获取默认数据

http://127.0.0.1:8888/DoTime.html?gwt.codesvr=127.0.0.1:9997&locale=sv_SE
在下图中,您可以看到项目的结构。应用程序的名称为“DoTime”

在文件/client/properties/DoTimeConstants\u sv\u SE.properties中,我有

localeTest = Vi skriver något på svenska för att testa om vi kan få det på svenska med locale.
appTitle = DoTime på svenska
package com.dotime.client;
import com.google.gwt.i18n.client.Constants;
    public interface DoTimeConstants extends Constants {

    @DefaultStringValue("haha we are writing something in default to test locale")
    String localeTest();

    @DefaultStringValue("DoTime default title")
    String appTitle();
}
@DefaultMessage("''{0}'' is not a valid symbol.")
  String invalidSymbol(String symbol);

  @DefaultMessage("Last update: {0,date,medium} {0,time,medium}")
  String lastUpdate(Date timestamp);
package com.dotime.client;

import com.google.gwt.i18n.client.Messages;
import java.util.Date;

public interface DoTimeMessages extends Messages {
    @DefaultMessage("''{0}'' en symbol på svenska.")
    String invalidSymbol(String symbol);

    @DefaultMessage("Senaste uppdatering: {0,date,medium} {0,time,medium}")
    String lastUpdate(Date timestamp);
}
在相应的文件/client/DoTimeConstants中,我有

localeTest = Vi skriver något på svenska för att testa om vi kan få det på svenska med locale.
appTitle = DoTime på svenska
package com.dotime.client;
import com.google.gwt.i18n.client.Constants;
    public interface DoTimeConstants extends Constants {

    @DefaultStringValue("haha we are writing something in default to test locale")
    String localeTest();

    @DefaultStringValue("DoTime default title")
    String appTitle();
}
@DefaultMessage("''{0}'' is not a valid symbol.")
  String invalidSymbol(String symbol);

  @DefaultMessage("Last update: {0,date,medium} {0,time,medium}")
  String lastUpdate(Date timestamp);
package com.dotime.client;

import com.google.gwt.i18n.client.Messages;
import java.util.Date;

public interface DoTimeMessages extends Messages {
    @DefaultMessage("''{0}'' en symbol på svenska.")
    String invalidSymbol(String symbol);

    @DefaultMessage("Senaste uppdatering: {0,date,medium} {0,time,medium}")
    String lastUpdate(Date timestamp);
}
我将文件/client/properties/DoTimeMessages\u sv\u SE.properties保存下来

localeTest = Vi skriver något på svenska för att testa om vi kan få det på svenska med locale.
appTitle = DoTime på svenska
package com.dotime.client;
import com.google.gwt.i18n.client.Constants;
    public interface DoTimeConstants extends Constants {

    @DefaultStringValue("haha we are writing something in default to test locale")
    String localeTest();

    @DefaultStringValue("DoTime default title")
    String appTitle();
}
@DefaultMessage("''{0}'' is not a valid symbol.")
  String invalidSymbol(String symbol);

  @DefaultMessage("Last update: {0,date,medium} {0,time,medium}")
  String lastUpdate(Date timestamp);
package com.dotime.client;

import com.google.gwt.i18n.client.Messages;
import java.util.Date;

public interface DoTimeMessages extends Messages {
    @DefaultMessage("''{0}'' en symbol på svenska.")
    String invalidSymbol(String symbol);

    @DefaultMessage("Senaste uppdatering: {0,date,medium} {0,time,medium}")
    String lastUpdate(Date timestamp);
}
在相应的文件/client/DoTimeMessages中,我有

localeTest = Vi skriver något på svenska för att testa om vi kan få det på svenska med locale.
appTitle = DoTime på svenska
package com.dotime.client;
import com.google.gwt.i18n.client.Constants;
    public interface DoTimeConstants extends Constants {

    @DefaultStringValue("haha we are writing something in default to test locale")
    String localeTest();

    @DefaultStringValue("DoTime default title")
    String appTitle();
}
@DefaultMessage("''{0}'' is not a valid symbol.")
  String invalidSymbol(String symbol);

  @DefaultMessage("Last update: {0,date,medium} {0,time,medium}")
  String lastUpdate(Date timestamp);
package com.dotime.client;

import com.google.gwt.i18n.client.Messages;
import java.util.Date;

public interface DoTimeMessages extends Messages {
    @DefaultMessage("''{0}'' en symbol på svenska.")
    String invalidSymbol(String symbol);

    @DefaultMessage("Senaste uppdatering: {0,date,medium} {0,time,medium}")
    String lastUpdate(Date timestamp);
}
在文件DoTime.gwt.xml中,我添加了add locale=“sv_SE”并添加了inherit I18N:

<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.0//EN"
        "http://google-web-toolkit.googlecode.com/svn/releases/2.0/distro-source/core/src/gwt-module.dtd">
<module rename-to="DoTime">

    <!-- Inherit the core Web Toolkit stuff.                  -->
    <inherits name='com.google.gwt.user.User'/>

    <!-- Specify the app entry point class.                   -->
    <entry-point class='com.dotime.client.DoTime'/>

    <inherits name="com.google.gwt.i18n.I18N"/>

    <extend-property name="locale" values="sv_SE"/>

    <!-- Specify the app servlets.                   -->
    <servlet path='/DoTimeService' class='com.dotime.server.DoTimeServiceImpl'/>

</module>
但是当我通过添加&locale=sv_SE来更改我的url时,什么也没有发生,我仍然拥有默认值


我确实尝试了第一次只使用locale文件扩展名locale=sv,但没有任何运气,后来改为sv_SE,但无论如何都不起作用。我错过了什么?你知道吗?非常感谢你提供的一些线索

除区域设置后缀和文件扩展名外,属性文件的名称必须与
常量
消息
接口的名称完全相同。特别是在这里,它们必须在同一个包中;您不能将它们放在其他包(本例中为
属性
子包)中,并期望GWT找到它们


旁注:

  • 我认为
    gwt.xml
    和URL中的语言环境必须使用Java表示法,使用破折号作为分隔符,而不是下划线
  • 您不应该在
    gwt.xml
    中使用
    标记;它们由
    GWTTestCase
    运行时使用,但是您更愿意将特定于测试的模块
    作为应用程序模块,而不是将这些声明放在应用程序模块中

完全正确。我将属性文件移动到与接口和区域设置立即工作相同的包中。非常感谢。