在 Grails 中翻译 HTML 选择元素

2023-12-21

认为这会更容易......想象一下<g:select />像这样:

<g:select name="type.id" from="${Type.list()}"   
          value="${domainInstance?.type?.id}"  />

有两个这样的域类(如果这些人造类不是没有错误,请原谅我)

class Domain {
  Type type
}

class Type {
  String name
}

我现在想翻译选择元素的条目。下面的代码首先看起来不错:

<g:select name="type.id" from="${Type.list()}" 
            valueMessagePrefix="type.name"  
                value="${domainInstance?.type?.id}"  />

messagebundle 中的条目如下所示:

type.name.type1 = red
type.name.type2 = green

问题:不仅文本被翻译,选项键也被翻译!

所以我尝试添加一个optionKey='id':

<g:select name="type.id" from="${Type.list()}" 
         valueMessagePrefix="type.name"  
             value="${domainInstance?.type?.id}"  
                optionKey='id' />

这将按键切换到了 id - 太棒了,但是文本也切换到了 id :-(

知道如何解决这个问题吗?


感谢girls开源,我刚刚查了代码:http://grails.org/doc/latest/ref/Tags/select.html#select http://grails.org/doc/latest/ref/Tags/select.html#select

似乎只要使用 optionKey 或 optionValue,valueMessagePrefix 就会被忽略。但 optionValue 可以采用闭包:

<g:select name="type.id" from="${Type.list()}" 
         value="${domainInstance?.type?.id}"  
            optionKey="id" 
            optionValue="${ {name->g.message(code:'type.name'+name) } }"/>

至少,这是有效的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Grails 中翻译 HTML 选择元素 的相关文章

随机推荐