【问题标题】:Error while doing internationalization for Grails application为 Grails 应用程序进行国际化时出错
【发布时间】:2016-01-20 03:15:45
【问题描述】:

我正在为我的 Grails 应用程序进行国际化,这在我的域中:

category (nullable:false, inList:Holders.config.categories)

这在Config.groovy 文件中:

categories=['cat1', 'cat2', 'cat3']

这就是messages.properties 文件中的内容:

 ads.category.cat1=category 1
 ads.category.cat2=category 2
 ads.category.cat3=category 3 

显示视图中的内容:

<g:if test="${adsInstance?.category}">
            <li class="fieldcontain">
                <span id="category-label" class="property-label"><g:message code="ads.category.label" default="Category" /></span>

                    <span class="property-value" aria-labelledby="category-label"><g:fieldValue   bean="${adsInstance}" field="category"/></span>

            </li>
            </g:if>

所有视图都显示正确的单词,除了 show 显示 cat1(这是在配置文件中找到的内容)以及保存在数据库中的内容,因为它应该显示和保存 messages.properties 中的内容文件category 1。我该如何解决?

【问题讨论】:

  • 请提供show函数的view代码。
  • @MamyKryzysKryzysKryzys 我编辑了原帖

标签: grails internationalization


【解决方案1】:

使用

<g:message code="ads.category.${adsInstance.category}" />

而不是

<g:fieldValue bean="${adsInstance}" field="category"/>

【讨论】:

  • 很好,在视图中工作,但是数据库部分呢?
  • 如果你将它保存为 category 1 而不是 cat1 它将不再起作用(我说的是翻译视图)。此外,如果您已经将翻译字段保存到数据库,那么使用翻译的意义何在?为什么不使用 beforeValidate() 从 db 获取字段?
  • 你的意思是在从数据库中获取字段时使用beforeValidate() 而不是翻译?
  • 是的,这是一种可能性。恕我直言,将翻译后的字段存储在 db 中是没有意义的。
  • 或者我可以将categories=['cat1', 'cat2', 'cat3'] 更改为有意义的东西,所以如果我可以从数据库中进行任何查询。你怎么看?
猜你喜欢
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多