0

我是 Grails 的新手,并尝试使用标准集成在 grails-framework 中的 i18n-plugin(我使用 2.2.1)。我使用动态脚手架并想知道我的域模型变量的标签没有随着属性文件的值而改变。这就是我尝试直接使用消息标签的原因。但两种方式都行不通。我没有更改任何配置。我采取一个简单的看法添加:

<g:message code=„my.test.de.label“ />

我在 message.properties 和 message_de.properties 中添加了以下条目:

test.de.label=testDE 

我用“?lang=de”打开了网址,没有这个参数,没有任何效果。此外,通过动态 scollding 对域模型进行标记也不起作用。如果我这个 g:message-tag 带有标准在属性文件中的代码,一切都很好。而且我不明白为什么我的自定义标签不起作用。

问题: - 我需要做任何配置吗?- 我犯了任何代码错误吗?

4

1 回答 1

0

除了根据需要创建新消息外,您不需要进行任何配置。我刚刚创建了一个带有测试域类 ( Notification) 的新 2.2.1 项目,然后generate all为新域运行。

当我转到新域的列表视图时,http://localhost:8080/TestApp/notifications/list?lang=de我肯定会看到正在使用的德语:Notifications anlegenNotifications Liste

我在直接使用消息标签时看到的唯一错误是逗号,,而不是引号"myin my.test.de.label。这对我有用:

//gsp
<g:message code="test.label" />

//messages_de.properties
test.label=testDe

您可能不应该在实际消息名称中引用语言 - 这有点违背了目的。每个语言文件都应该具有相同的消息“名称”:

//messages_de.properties
default.button.create.label=Anlegen

//messages.properties
default.button.create.label=Create

//messages_es.properties
default.button.create.label=Crear

然后在您的 GSP 中使用

<g:message code="default.button.create.label" />

这样,i18n 系统就会根据浏览器发送的语言来挑选它。

于 2013-05-09T01:20:21.073 回答