是否可以在message.properties文件中编写表达式?

时间:2013-10-08 09:20:04

标签: grails internationalization grails-2.0

我现在通过message.properties在我的应用程序中显示文本,在某些情况下,我必须显示类似的消息,稍作修改。是否可以像以下一样检查消息属性中的条件:

if (a == salary) {
     code = your salary for this month is {0}
}else if (a == tax) {
     code = your tax for this month is {0}
}

现在在这种情况下,文本的唯一区别是工资和税,而不是在控制器中检查它,或者我只想在message.properties中检查这个条件。可能吗 ?如果是的话怎么样?

谢谢!提前。

3 个答案:

答案 0 :(得分:1)

我认为您不需要检查messages.properties,只需将代码更改为

即可
your {0} for this month is {1}

并将a作为参数传递给

g.message(code: 'adminUsers.restore.confirm.message', args: [a, 'XXX'])

答案 1 :(得分:1)

不,不是。由于属性只是属性文件。但我知道有些插件可以扩展使用属性文件的功能。我认为在你的情况下你必须分裂逻辑'部分到您的controller \ service并且只留下* .properties文件中的消息

答案 2 :(得分:0)

可以创建条件消息来处理复数/单数(使用MessageFormat / choice)。

但你所要求的并不是正确使用这种能力。

your {0} for this month is {1}也是一个坏主意,因为它会破坏翻译。 某些语言中“税”和“薪水”可能有不同的性别,这可能会影响句子中的词语。

最好在属性中使用完整的句子,没有条件,替换等技巧。

为什么你还想要这个呢?保存几句话?