好的,我正在开发一个支持国际化的应用程序。我正在为我的应用使用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”值(国际化应用程序)?
答案 0 :(得分:1)
有一个实用程序类来处理GWT SDK中的区域设置信息。无需自己解析URL参数。看看LocaleInfo.getCurrentLocale()然后使用 getLocaleName()方法将实际代码作为字符串。
我不太明白你如何在服务器端存储语言环境信息?请注意,servlet在用户之间共享,您必须将本地附加到会话或通过每次调用传递它。