使用自定义捆绑包的Grails国际化

时间:2014-11-19 19:27:52

标签: grails internationalization gsp

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.foomessages_blah.properties都定义了messages_bar.properties属性怎么办?

所以我问:如何添加自己的自定义资源包,如何在GSP中正确引用它们?

1 个答案:

答案 0 :(得分:1)

要回答你的问题,你必须了解Grails(嗯,Spring真正)正在做的事情。

您使用多个文件的路径正确。您在那里概述的内容与文档相符并且可以正常工作。

然而,在幕后,真正要做的是将它们组合成一个捆绑(每种语言)。所以没有必要告诉Grails / Spring使用哪个bundle。

最后,当多次定义相同的密钥时会发生什么?第一个匹配胜利。我似乎记得捆绑包的组合顺序是文件名顺序,但你应该能够很快地测试它。

希望这有帮助,祝你好运!