为Grails应用程序执行国际化时出错
我正在为我的Grails应用程序进行国际化,这是在我的域中:为Grails应用程序执行国际化时出错,grails,internationalization,Grails,Internationalization,我正在为我的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
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
(这是在配置文件中找到的内容)以及数据库中保存的内容,因为它假定显示和保存消息中的内容。属性文件类别1
。如何修复此问题?使用
<g:message code="ads.category.${adsInstance.category}" />
而不是
<g:fieldValue bean="${adsInstance}" field="category"/>
使用
而不是
<g:fieldValue bean="${adsInstance}" field="category"/>
请提供显示功能的查看代码。@MamyKryzysKryzysKryzysKryzys我编辑了原始的后期请提供显示功能的查看代码。@MamyKryzysKryzysKryzys我编辑了原始的后期伟大,在视图中工作,但是DB部分呢?如果将其保存为类别1而不是cat1,则不会工作(我说的是转换视图)再也没有了。此外,如果已经将转换后的字段保存到db,那么在视图中使用translation有什么意义?为什么不在从db获取字段时使用beforeValidate()?您的意思是使用beforeValidate()吗
从数据库中获取字段时不进行翻译?是的,这是一种可能性。在数据库中存储翻译后的字段是毫无意义的。或者我可以更改类别=['cat1'、'cat2'、'cat3']
要想成为有意义的东西,那么如果我能从数据库中执行任何查询,你认为如何?很好,在视图中工作,但是数据库部分呢?如果将其保存为category 1而不是cat1,它将不起作用(我指的是转换视图)此外,如果您已经将已翻译字段保存到数据库中,那么在视图中使用translation有什么意义?从数据库中获取字段时为什么不使用beforeValidate()?您的意思是使用beforeValidate()吗
在从DB获取字段时不进行翻译?是的,这是一种可能性。在DB中存储翻译后的字段是毫无意义的。或者我可以将类别=['cat1'、'cat2'、'cat3']
更改为有意义的内容,那么如果我可以从DB中执行任何查询,你认为如何?