【问题标题】:Unable to get message() String from localization table in Grails无法从 Grails 中的本地化表中获取 message() 字符串
【发布时间】:2013-10-28 20:53:26
【问题描述】:

我正在使用Localizations (messages) plugin 从数据库中提取 i18n 定义,而不是从 i18n 文件夹中的标准属性文件中提取。

我正在尝试在我的 Service.groovy 文件中使用本地化插件。我就是这样的..

import org.grails.plugins.localization.*
// some code.....
def body = message(code: "goal.auto.email.alert")  
log.info("body : "+body)

当我检查日志时,我的身体显示为空。我已经在我的本地化表中添加了具有相同代码名称的记录。但它没有从表中获取字符串消息。我无法弄清楚问题所在。请帮忙。提前致谢。

【问题讨论】:

    标签: grails grails-2.0 grails-plugin


    【解决方案1】:

    试试下面的代码

    class FirstService {
    
    def messageSource
    
      def test() {
        ...
        def msg = messageSource.getMessage('localization.cache.hits', null, Locale.US)
        ...
      }
    }
    

    请参阅blog

    【讨论】:

    • 感谢您的回答,但此博客显示了从 messages.properties 读取消息的方法。我不想使用 message.properties 文件来获取字符串。我的数据库中已经有本地化表。我只想从该表中获取消息。
    • 我已经创建了一个测试应用程序,并使用 h2 数据库使用本地化插件对其进行了测试,它工作正常。
    • 我像这样将该代码放入我的服务中 .. messageSource.getMessage('goal.auto.email.alert', null, Locale.US) 其中goal.auto.email.alert 被定义到我的本地化表中,但是它不工作。
    • 你得到了什么?
    • 实际上我已经写了我的后端工作,我正在使用服务发送邮件。对于邮件正文,我使用本地化插件从表中获取邮件正文。
    【解决方案2】:

    根据我的经验,我认为message(code: "goal.auto.email.alert") 在服务中不起作用。所以我通过使用 sql 查询来做到这一点..

    def body = sql.rows("SELECT TEXT FROM Localization WHERE CODE='goal.auto.email.alert'") 
        body = body.text[0]
    

    现在它对我有用:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 1970-01-01
      • 2012-06-28
      相关资源
      最近更新 更多