【发布时间】:2014-07-29 06:06:22
【问题描述】:
好的,我正在开发一个支持国际化的应用程序。我正在为我的应用程序使用Static String Internationalization 方法。
假设我的应用可以有英语和德语版本,所以
-1st,我创建了MyMessages.java,其中包含所有用英文写的消息文本。然后我创建了一个MyMessages_ge,它和MyMessages.java几乎一样,除了用德语写的文字
-2nd,在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 中运行我的应用程序,它会按我的预期显示所有德语文本。
但是,我需要知道我的应用是德语 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 的服务器端访问(国际化应用程序的)“区域设置”值?
【问题讨论】:
-
德国的两个字母国家代码是 de 而不是 ge。代码 ge 指的是格鲁吉亚。只是说...