如何显示浏览器在 GWT I18N 中显示的区域设置



我正在对我的应用程序执行 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();
       }
    }

我在列表框 API 中没有找到任何方法来做到这一点

谢谢

您正在使用 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);
    }
  }
}

请确保在将更改处理程序添加到 localeBox 之前将其添加到代码中。


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

  • Showcase.gwt.xml 21-28 执行模块的区域设置(特别是它将可用的语言环境定义为"en"、"ar"、"fr"、"zh")
  • ShowcaseShell.ui.xml 204-206 创建 ListBox 小部件。
  • ShowcaseShell.java 113-114、190、322-364 将可用的区域设置填充到 ListBox 中,并添加一个 ChangeHandler。

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

相关内容

  • 没有找到相关文章

最新更新