如何在GWT中本地化类的字段名称?
我有一个一般的设计问题 如何在GWT中本地化类的字段名称 想象一下,我有一个带有想象注释的bean,比如如何在GWT中本地化类的字段名称?,gwt,localization,internationalization,software-design,gwt2,Gwt,Localization,Internationalization,Software Design,Gwt2,我有一个一般的设计问题 如何在GWT中本地化类的字段名称 想象一下,我有一个带有想象注释的bean,比如 class Person { @LocalizedName(value = "{Person.name}") String name; @LocalizedName(value = "{Person.address}") String address; } 我将有英语和德语的资源包,其中将指定这两个值 在运行时的某个时刻,我将有类的实例和一些保存字段名称的
class Person
{
@LocalizedName(value = "{Person.name}")
String name;
@LocalizedName(value = "{Person.address}")
String address;
}
我将有英语和德语的资源包,其中将指定这两个值
在运行时的某个时刻,我将有类的实例和一些保存字段名称的字符串,例如name
我想以某种方式自动获得名称的本地化版本
我知道创建我的my接口并调用它的getString,但这需要为要本地化的类的每个字段指定复杂的方法名,例如MyMessages.person\u地址,这不仅不酷,而且在重构期间重命名属性时也会导致中断
我今天就是这样做的,非常难看
想法?也许我可以用?还有别的吗?您是如何做到的?如果您想在GWT中实现i18n,应该使用它们的内置机制。谷歌的应用程序通常使用GWT构建为320个排列,因此这种方法显然适用于成吨的i18n,应该不难实现 你的选择是: 接口文件中带有硬编码字符串的消息接口: 具有外部字符串属性文件的消息接口:| 带标记的UiBinder,由本地化字符串文件备份: 就我个人而言,我喜欢这个案子。每当您需要在小部件中使用字符串(如标题、标签等)时,只需将字符串按如下方式包装:
<ui:msg description="my great title">You're Title!</ui:msg>
现在,当您编译时,GWT将收集所有字符串并通过MD5散列来识别它们。多次使用同一单词/短语,它只会在GWT根据找到的所有唯一字符串为您动态编译的i18n属性文件中出现一次。现在只需翻译该文件并命名为name_DE,GWT将在德语排列中用德语替换所有英语单词
注意:类中只有消息接口可用。您必须将它们用于应用程序中的动态更新字符串
有关更多信息,请参阅
Viel Glück.感谢您的评论!我知道UiBinder模板的国际化。我用它。但问题是关于bean/类的本地化。这是不同的情况。我没有把你的问题读得那么好,看看我修改过的答案。至于在bean/类中这样做,遗憾的是,这不是gwti18n的设计。