在 Vaadin 21 应用程序中,我有一个网格,其中有一列表示枚举。翻译是这样完成的:
Column<MyDomainClass> myColumn = grid.addColumn(new TextRenderer<MyDomainClass>(new ItemLabelGenerator<MyDomainClass>() {
@Override
public String apply(MyDomainClass gridItem) {
String i18nKey = gridItem.getMyEnumAttribute().name();
return getTranslation(i18nKey);
}
}
这会在视图加载时转换列中的枚举值。
我刚刚添加了一个组合框来更改语言环境并使用标签注册所有组件,...通过实现如下接口LocaleChangeObserver
:
@Override
public void localeChange(LocaleChangeEvent localeChangeEvent) {
// These two work fine
myTextfield.setLabel(getTranslation(textfieldI18nKey));
myCombobox.setLabel(getTranslation(comboboxI18nKey));
[...]
// This one feels a little strange but works
myCombobox.setItemLabelGenerator(myCombobox.getItemLabelGenerator());
// And for this I don't know how to do it
myColumn.reTranslateAllItems();
}
气味重新设置ItemLabelGenerator
组合框再次感觉有点奇怪,但有效。
问题如何重新翻译列中的所有项目?那么什么是正确的替代myColumn.reTranslateAllItems()
(见上文)?