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



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

假设我的应用程序可以有英语&德语版本,所以-首先,我创建了MyMessages.java,它所有的消息文本都是用英语写的。然后我创建了一个MyMessages_ge,它与MyMessages.java几乎相同,除了用德语写的文本

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

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

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

然而,我需要知道我的应用程序是德国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的url将是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服务器端访问"区域设置"值(国际化应用程序)?

在GWT SDK中有一个处理地区信息的实用程序类。不需要自己解析URL参数。查看LocaleInfo.getCurrentLocale(),然后使用getLocaleName()方法以String形式获取实际代码。

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

相关内容

最新更新