如何在 GWT 的服务器端访问(国际化应用程序的)“区域设置”值?
题
好的,我正在开发一个支持国际化的应用程序。我在用 Static String Internationalization
我的应用程序的方法。
假设我的应用程序可以具有英文和德语版本,所以-1st,我创建了 MyMessages.java
其中所有消息文本均以英文书写。然后我创建了一个 MyMessages_ge
这几乎与 MyMessages.java
除了用德语写的文本
-2,在 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;
}
但是,当我去订购页面时,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() 然后使用 获取区域设置名称() 方法来获取字符串形式的实际代码。
我不太明白你如何在服务器端存储区域设置信息?请注意,servlet 在用户之间共享,您必须将本地附加到会话或在每次调用时传递它。