我正在对我的应用程序执行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中找到任何方法来执行此操作
谢谢
答案 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或任何特殊的东西),只需添加这些代码。然后,您可以尝试将设置迁移到整个项目。