【发布时间】:2013-09-15 23:27:24
【问题描述】:
如果我们键入以下内容,Web 应用程序的语言会正确更改:
http://localhost:8080/yourCoolWebApp/behappy/list?lang=en
http://localhost:8080/yourCoolWebApp/smile/list?lang=es
但是,如果我们键入一个没有控制器的 uri,则显示的语言是默认语言。这是 index.gsp 的情况。如果我们键入以下代码,显示的语言始终是默认语言:
http://localhost:8080/?lang=en
http://localhost:8080/?lang=es
In this old bug report,标记为不会修复,有解决办法。我试图实现它。我更改了UrlMappings.groovy 的以下行:
"/"(view:"/index")
作者:
"/"(view:"/index", controller:"foo")
但是,在 grails clean 之后,index.gsp 始终使用默认语言。
我还有另一个没有控制器的视图,所以我在UrlMappings.groovy 中也有以下代码行:
name contact: "/contact"(view:"contact")
我改成了:
name contact: "/contact"(view:"contact", controller:"foo")
我得到了一个:The requested resource is not available (/webAlojamientoUCA/WEB-INF/grails-app/views/foo/contacto.jsp)
我正在使用 Grails 2.2.4。
【问题讨论】:
-
你有在“foo”中定义的动作“contact”吗? gsp存在吗? i18n 需要通过控制器层,因此您在创建动作的正确路径上。
-
@SérgioMichels:gsp 存在,控制器不存在(这就是我在
UrlMappings中定义它的原因)。因此,在这种情况下,我们可以只创建一个 controller 联系人,其中只有一个空的 action 联系人。您通常如何处理 index.gsp。你也有它的控制器吗? -
根据我的经验,“...?lang=en”不起作用...帮助不大,但我放弃了。
-
@chelder 是的,你需要创建控制器。
-
@marko 我使用 lang 属性并且它可以工作,但前提是你有一个控制器。
标签: grails internationalization