0

我正在为应用程序编写一系列网页向导。一个向导长达 30 页。有 4 种不同类型的用户。根据用户的类型,他们可能会在表单的每个页面中看到不同的静态文本,或者他们可能会在表单上看到不同的字段。那是 4 个用户类型 X 30 个页面 = 120 个网页。4 个向导 UI 中有 85% 是相同的。不同页面和不同用户类型的差异有所不同,所以我不可能有 25 个通用向导页面,并且每个用户类型有 5 个唯一页面。

我正在尝试编写代码,以免 30 页重复 4 次。我正在使用 grails 模板,因此我只有 30 个页面可以根据用户类型提取差异。我的一个想法是利用 grails 中内置的国际化功能。例如,如果我有一个角色为 Role_Finance 的用户,他们的向导将从 messages.properties 中提取要显示的文本。如果我有一个角色为 Role_Contractor 的用户,我可以为他们分配不同的语言环境(西班牙语),以便向导从 messages_es.properties 中提取不同的文本。

虽然我意识到这不是 grails 国际化的意图,但这似乎是一个干净的解决方案。这不是一个国际应用程序,所以我不担心失去该功能。以前有人必须做这样的事情并找到更好的解决方案吗?

4

2 回答 2

2

就像 doelleri 说的那样,您可以灵活地构建消息密钥。

如果消息取决于用户角色,您可以通过角色名称扩展消息键。例如,您可以像这样定义消息键:

step1.welcome.Role_Finance=Hello Finance
step1.welcome.Role_Contractor=Hello Contractor

并根据用户角色解决它们

<g:message code="step1.welcome.${ user.getRole() }" />

如果你有很多这样的消息,你也可以考虑创建一个特殊的消息标签来自动添加角色。

于 2013-09-12T19:02:26.357 回答
0

与其尝试在滥用 i18n 时使用不同的语言环境,不如将用户的角色添加到消息键中,例如wizard1.Role_Finance.field1=....

于 2013-09-12T18:42:23.207 回答