如何在 GWT 的服务器端访问(国际化应用程序的)“区域设置”值?

StackOverflow https://stackoverflow.com//questions/25009115

  •  20-12-2019
  •  | 
  •  

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top