2

在 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()(见上文)?

4

0 回答 0