【问题标题】:How to access "locale" value (of an Internationalization App) in server side in GWT?如何在 GWT 的服务器端访问(国际化应用程序的)“语言环境”值?
【发布时间】: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 指的是格鲁吉亚。只是说...

标签: gwt gwtp


【解决方案1】:

在 GWT SDK 中有一个实用程序类来处理语言环境信息。无需自己解析 URL 参数。查看LocaleInfo.getCurrentLocale(),然后使用 getLocaleName() 方法将实际代码作为字符串获取。

我不太明白你是如何在服务器端存储语言环境信息的?请注意 servlet 在用户之间共享,您必须将本地附加到会话或在每次调用时传递它。

【讨论】:

  • 太好了,这几乎完成了,但是如何获取当前语言环境?我看不到任何getcurrent?我想要这样的东西 String locale=LocaleInfo.getCurrentLocale(); if("de".equals(locale)) 然后 ....
  • 我找到了 LocaleInfo localeInfo=LocaleInfo.getCurrentLocale();字符串 locale=localeInfo.getLocaleName(); addToPopupSlot(loadingPresenter); SetLanguage action=new SetLanguage(locale); dispatchAsync.execute(action, setLanguageCallback);非常感谢你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
相关资源
最近更新 更多