My Grails(2.4.2)应用程序是使用一堆“默认/标准”资源包创建的:
myapp/
grails-app/
i18n/
messages.properties
messages_fr.properties
我现在想创建自己的“自定义”资源包,即在messages*.properties
创建的标准myapp
文件之外的文件中定义属性。
根据i18n文档,所有捆绑包都需要以messages
为前缀,并以.properties
为后缀。所以我添加了两个新的道具文件,一个用于英语,一个用于法语:
myapp/
grails-app/
i18n/
messages.properties
messages_fr.properties
messages_myapp.properties
messages_myapp_fr.properties
首先,我并非100%确定我正确地解释了文档。因此,如果我的2个新道具文件的任何内容都不正确,请先告诉我!
话虽如此,在这些文档的所有示例中,我都没有看到您指定要使用的包的位置。所有示例都如下所示:
<g:message code="fizz.buzz.foo" />
但是如果fizz.buzz.foo
和messages_blah.properties
都定义了messages_bar.properties
属性怎么办?
所以我问:如何添加自己的自定义资源包,如何在GSP中正确引用它们?
答案 0 :(得分:1)
要回答你的问题,你必须了解Grails(嗯,Spring真正)正在做的事情。
您使用多个文件的路径正确。您在那里概述的内容与文档相符并且可以正常工作。
然而,在幕后,真正要做的是将它们组合成一个捆绑(每种语言)。所以没有必要告诉Grails / Spring使用哪个bundle。
最后,当多次定义相同的密钥时会发生什么?第一个匹配胜利。我似乎记得捆绑包的组合顺序是文件名顺序,但你应该能够很快地测试它。
希望这有帮助,祝你好运!