我试图在运行时覆盖主 messages.properties 文件。我当前的任务要求我根据产品品牌打包应用程序。例如,如果我传递“grails dev run-app -Dbrand=a”之类的参数,我应该能够根据品牌更改 .properties 文件中的消息。
另一个要求是我需要一个包含所有消息的主 .properties 文件,并且我想创建一个单独的文件夹来存储基于品牌的消息。
例如,我的主 .properties 文件将包含 A、B、C、D,而我的品牌 .properties 文件将是仅包含 A 的主文件的子集。(主文件中 A 的消息字符串肯定与消息字符串不同在品牌文件夹下的 .properties 文件中)。例如,master 的 .properties 文件中的 A.productName 可以是“hello”,.properties 文件中的 A.productName 可以是“world”。
当我以 brand=a 作为参数运行应用程序时,我需要能够从品牌文件夹下的 .properties 文件中加载 A.product 名称,而不会干扰主 .properties 文件的当前状态。(这是这样的更改确实出现在 git 中)。
我查看了一些方法,我发现唯一的好解决方案需要从数据库获取我不想做的消息。我想要一种使用一些 grails 配置或事件监听器来覆盖的方法。
我假设需要有一种方法可以在 grails 的运行时覆盖内存中的消息。
希望,我详细地问了我的问题。
请帮忙,我对grails真的很陌生。
最佳答案
我觉得你应该看看Localizations plugin处理这个。它实现
org.springframework.context.support.AbstractMessageSource
如果在数据库表中找不到原始消息源,它会从属性中查找原始消息源。听起来您想归档一些相同的功能。
Grails 在其中自己使用
org.codehaus.groovy.grails.context.support.ReloadableResourceBundleMessageSource
或者
org.codehaus.groovy.grails.context.support.PluginAwareResourceBundleMessageSource
我还没有研究过它们中的哪些被注入(inject)到应用程序中的人工制品中。
关于grails - 在 Grails 运行时覆盖 i18n .properties 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26268074/