如何在GWT中访问服务器端的“locale”值(国际化应用程序)?

时间:2014-07-29 06:06:22

标签: gwt gwtp

好的,我正在开发一个支持国际化的应用程序。我正在为我的应用使用Static String Internationalization方法。

说我的应用可以有英文和德文版,等等 -1st,我创建了MyMessages.java,其中包含所有用英文写的消息文本。然后我创建了一个MyMessages_ge,它几​​乎与MyMessages.java相同,只不过用德语写的文本

- 2,在MyProject.html<meta http-equiv="content-type" content="text/html; charset=UTF-8">确保它支持所有语言

-3rd,MyProject.gwt.xml<extend-property name="locale" values="ge"/>

现在我在eclipse中运行我的应用程序http://localhost:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997&locale=ge&amp;它显示了我所期望的所有德语文本。

但是,我需要知道我的应用是德语At Server Side。这意味着无论何时我的GWT Gui都是德语版本,那么我的服务器会知道languageCode=1如果它是英文的,那么服务器将使用默认语言languageCode=0

这就是我所做的。在HeaderPresenter.java

@Override
public void prepareFromRequest(PlaceRequest request){
    super.prepareFromRequest(request);
    String locale=request.getParameter("locale", "");
    setLanguage(locale); // servercall back here
}

所以当我的应用程序第一次运行时,它应该让服务器知道Gwt应用程序正在使用哪种语言

@Override
public SetLanguageResult execute(SetLanguage action, ExecutionContext context)
        throws ActionException {
    String locale=action.getLocale();
    if("ge".equals(locale)){
        Data.languageType=1;
    }
    return null;
}

然而,它似乎不起作用 当我转到orderPage时,网址将为http://localhost:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997&locale=ge#!orderPage,而不是http://localhost:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997#!orderPage;locale=ge格式,这就是服务器无法捕获locale值的原因。

我想我在这里误解了一些东西。我很困惑。

那么如何在GWT中访问服务器端的“locale”值(国际化应用程序)?

1 个答案:

答案 0 :(得分:1)

有一个实用程序类来处理GWT SDK中的区域设置信息。无需自己解析URL参数。看看LocaleInfo.getCurrentLocale()然后使用 getLocaleName()方法将实际代码作为字符串。

我不太明白你如何在服务器端存储语言环境信息?请注意,servlet在用户之间共享,您必须将本地附加到会话或通过每次调用传递它。