【问题标题】:Does grails internationalization work in index.gsp?grails 国际化在 index.gsp 中有效吗?
【发布时间】: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


【解决方案1】:

Grails' i18n infrastructure relies on the logic passing through the controller layer

是的,您需要创建/拥有控制器!

类似

网址映射

"/"(controller: 'index')

和控制器

class IndexController {

    def index() {
    }
}

并查看 ${appName}/grails-app/views/index/index.gsp

【讨论】:

  • 这正是你提到的错误@chelder中提到的内容
  • 我猜你是对的@dmahapatro。也许我很困惑,因为将控制器命名为“foo”。无论如何,我认为对于现在寻找相同问题的每个人来说实际上都更清楚了。
猜你喜欢
  • 2013-03-22
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多