好的,我正在开发一个支持国际化的应用程序。我使用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是在用户之间共享的,您必须将本地附加到会话,或者在每次调用时传递它。