Gwt 在UiBinder模板中使用i18n.properties定义的映射

Gwt 在UiBinder模板中使用i18n.properties定义的映射,gwt,Gwt,假设我在i18n.properties文件中定义了一个映射,例如: userGroupMap = 0, 1, 2, 3 0=Factory 1=Administrators 2=Superusers 3=Operators 《开发指南》指出,在MyConstants实现常量接口中引入相应的Map userGroupMap()方法将导致调用MyConstants.userGroupMap().get(“1”)返回本地化的“Administrators”。到目前为止还不错 尤宾德呢?如何在UiB

假设我在i18n.properties文件中定义了一个
映射,例如:

userGroupMap = 0, 1, 2, 3
0=Factory 
1=Administrators
2=Superusers
3=Operators
《开发指南》指出,在
MyConstants实现常量
接口中引入相应的
Map userGroupMap()
方法将导致调用MyConstants.userGroupMap().get(“1”)
返回本地化的
“Administrators”
。到目前为止还不错


尤宾德呢?如何在UiBinder模板中使用其中一个映射值?是否有我缺少的语法,例如,
Administrators
(实际上不起作用)?

实现这一点的一种方法是使用非xml解决方案,但可以使用@UiFactory来帮助创建需要I18N'd的特定字段或标签。但对我来说,这个特殊的问题似乎需要下面的解决方案,因为您似乎希望将小部件与屏幕或面板布局分离

我很难做到这一点,在我的实现中,我最终用UiBinder作为核心部件的内部支持(例如一个标签和一个带有帮助按钮的文本字段),然后传入一个“fieldKey”,该“fieldKey”被用作各种地图中所有I18N键的预编码

例如,对于PartNumber字段,我在以下映射中有一个键:labelTexts()、HelpText()、tooltipTexts()、defaultFieldValues()。然后在该小部件的构造函数中,我将传入字符串键“partNumber”,这将用于构建所需的所有键,因此我将调用labelTexts().get('partNumberLabelText')、helptext().get('partNumberHelpText'),等等

我不想直接在UiBinder中这样做,因为我希望小部件键映射回它的显示信息,这样我就可以创建一个输入信息尽可能少的小部件,在许多情况下,只需要键,然后是小部件(只要它在I18N设置中配置正确)只需要根据这个来填充地图上的所有内容


从设计的角度来看,对于我来说,为屏幕设置单独的UIBinder没有意义,它们是由定义屏幕布局和所有小部件关系的对象合成的(这意味着可以在运行时定义屏幕内容)

实现(并测试)了
userGroupMap=0,1,2,3
是现有密钥的聚合器,因此
可以工作。然而,问题仍然存在:是否有办法将
userGroupMap
合并为UiBinder中
0,1,2,3
键集的上下文?我最终得到了相同的解决方案,即为键添加前缀以提供上下文,例如
group\u 0
group\u 1
,等等。随后,我将使用
myGroupMap.get查询地图(“组+字符串.valueOf(grpId))