我正在为申请流程编写一系列网页向导。一个向导长达30页。有4种不同类型的用户。根据用户的类型,他们可能会在表单的每个页面中看到不同的静态文本,或者他们可能会在表单上看到不同的字段。这是4个用户类型X 30页= 120个总网页。 4个向导UI中有85%是相同的。不同页面之间以及用户类型与用户类型之间存在差异,因此我不能拥有25个常用向导页面,而且每个用户类型都有5个独特的向导页面。
我正在尝试编写代码,以便我没有重复4次30页。我正在使用grails模板,因此我只有30个页面根据用户类型引入差异。我的一个想法是支持grails内置的国际化。例如,如果我有一个角色为Role_Finance的用户,他们的向导会将文本从messages.properties中显示出来。如果我有一个角色为Role_Contractor的用户,我可以为它们分配不同的区域设置(西班牙语),以便向导从messages_es.properties中提取不同的文本。
虽然我意识到这不是grails国际化的目的,但似乎这将是一个干净的解决方案。这不是一个国际申请,所以我不担心失去这个功能。以前任何人都必须做这样的事情并找到更好的解决方案吗?
答案 0 :(得分:2)
像doelleri一样,您可以灵活地构建消息密钥。
如果消息取决于用户角色,则可以按角色名称扩展消息密钥。例如,您可以像这样定义消息键:
step1.welcome.Role_Finance=Hello Finance
step1.welcome.Role_Contractor=Hello Contractor
并根据用户角色解决它们
<g:message code="step1.welcome.${ user.getRole() }" />
如果您有很多这样的消息,您还可以考虑创建一个自动添加角色的特殊消息标记。
答案 1 :(得分:0)
而不是在滥用i18n时尝试使用其他语言环境,而是将用户的角色添加到消息密钥中,如wizard1.Role_Finance.field1=...
。