Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在GWT中本地化类的字段名称?_Gwt_Localization_Internationalization_Software Design_Gwt2 - Fatal编程技术网

如何在GWT中本地化类的字段名称?

如何在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; } 我将有英语和德语的资源包,其中将指定这两个值 在运行时的某个时刻,我将有类的实例和一些保存字段名称的

我有一个一般的设计问题

如何在GWT中本地化类的字段名称

想象一下,我有一个带有想象注释的bean,比如

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的设计。