GWT-实体属性的国际化

GWT-实体属性的国际化,gwt,internationalization,entity,Gwt,Internationalization,Entity,我正在为以下问题寻找一个优雅的解决方案: 在我的数据库中,我有一些预定义的!实体。这些实体具有名称和描述字符串。在数据访问层周围,有一些EJB包含加载/搜索/等这些实体的业务逻辑 现在对于前端,我们正在开发一个GWT应用程序,它在后端调用EJB方法 问题是,上述实体的名称和描述必须国际化,例如,根据用户的区域设置,实体的描述必须是My cool description English或Beschreibung bla German或其他语言: 我的第一种方法是在数据库中使用资源字符串。所以实体A

我正在为以下问题寻找一个优雅的解决方案:

在我的数据库中,我有一些预定义的!实体。这些实体具有名称和描述字符串。在数据访问层周围,有一些EJB包含加载/搜索/等这些实体的业务逻辑

现在对于前端,我们正在开发一个GWT应用程序,它在后端调用EJB方法

问题是,上述实体的名称和描述必须国际化,例如,根据用户的区域设置,实体的描述必须是My cool description English或Beschreibung bla German或其他语言:

我的第一种方法是在数据库中使用资源字符串。所以实体A有一个描述A,实体B有一个描述B。。。稍后,GWT应用程序或任何其他客户端使用某种资源包将此资源字符串转换为实际描述。例如:

*资源和财产*:

descriptionA=实体A的实际描述

descriptionB=实体B的实际描述

*资源属性*:

descriptionA=Beschreibung A

descriptionB=Beschreibung B

请记住,这些实体是预定义的,因此可以在编译时了解所有描述。但是,如果可以在不必重新编译应用程序的情况下增强资源包,那就更好了

这在GWT中可能吗?我该怎么做?在服务器端还是在客户端进行翻译更好

否则,我必须在后端处理所有i18n内容。这将允许将数据保存在一起,而不是在客户端定义描述。但最大的缺点是后端必须知道调用方的区域设置

问候,,
Frank

这主要是在下载时间/速度与灵活性之间做出的决定。如果您编译它,GWT将消息内联起来,并且可以生成更快的代码,因为不需要进行字符串查找。但是,如果您需要进行更改,并且不想重新编译,或者希望成为一个能够让用户动态更改消息的用户,那么您需要动态消息

对于后一种情况,该类可以帮助您完成这项工作,另请参见: 使用字典,您可以在提供给用户的静态页面中生成所有消息。用户区域设置可以在标题中找到,该标题在请求页面时由浏览器发送


无论是编译的还是动态的,您都可能希望在某些配置属性中为用户设置的区域设置提供服务,在这种情况下,您仍然需要服务器端的两种情况的逻辑来为用户提供区域设置。

对于那些尝试

回到你的问题:有几种方法可以解决你的问题。一种是引入某种i18n facade,并将您的描述和名称视为资源键。然后,您可以定义访问翻译的方便方法,即公共字符串translateString消息、Locale;。该方法可以使用标准的JavaResourceBundle类在运行时访问资源

我所看到的唯一真正的问题是如何处理复合消息,例如,诸如此类的4项,其中4是占位符。在一个项目中,我们在类似的情况下添加了分隔符和实际资源键,然后添加了另一个分隔符和计数:Blah,Blah 4 itemsitems.in.your.whatever4。对于英语,您可以简单地修剪第一部分,对于其他语言,您需要处理整个字符串