如何显示浏览器在gwt I18N中显示的语言环境?

时间:2012-05-16 11:55:27

标签: gwt internationalization gwt-platform

我正在对我的应用程序执行i18n我在展示示例中显示的内容我使用列表框来显示不同的语言环境,问题是当我从一个语言环境交换到另一个语言环境时,语言环境正在改变但是列表框没有显示我所在的语言环境,它每次重新加载时都会显示列表的第一个元素

这是代码:

@Override
    public void changeSwap() {

    final String queryParam = LocaleInfo.getLocaleQueryParam(); 
    String locale=getView().getLocale().getValue(getView().getLocale().getSelectedIndex());
        Log.info("revealed locale is"+locale);
     if (queryParam != null) {
         UrlBuilder builder = Location.createUrlBuilder().setParameter(
             queryParam, locale);
         Window.Location.replace(builder.buildString());
       } else {
         // If we are using only cookies, just reload
         Window.Location.reload();
       }
    }

我没有在listbox api中找到任何方法来执行此操作

谢谢

1 个答案:

答案 0 :(得分:1)

您正在使用Showcase(ShowcaseShell.initializeLocaleBox())中的部分代码,但负责在ListBox中选择正确值的部分是:

String currentLocale = LocaleInfo.getCurrentLocale().getLocaleName();
if (currentLocale.equals("default")) {
  currentLocale = "en";
}
String[] localeNames = LocaleInfo.getAvailableLocaleNames();
for (String localeName : localeNames) {
  if (!localeName.equals("default")) {
    String nativeName = LocaleInfo.getLocaleNativeDisplayName(localeName);
    localeBox.addItem(nativeName, localeName);
    if (localeName.equals(currentLocale)) {
      localeBox.setSelectedIndex(localeBox.getItemCount() - 1);
    }
  }
}

在将ChangeHandler添加到localeBox之前,请务必将其添加到代码中。


以下是Showcase 2.4.0示例中的完整设置:

我建议创建一个简单的新GWT项目(首先没有gwtp或任何特殊的东西),只需添加这些代码。然后,您可以尝试将设置迁移到整个项目。