嗨,我有语言映射问题。我希望它工作的方式是语言编码在像 /appname/de/mycontroller/whatever 这样的 url
如果您转到 /appname/mycontroller/action 它应该检查您的会话,如果没有会话,则根据浏览器偏好选择语言并重定向到语言前缀站点。如果您有会话,那么它将显示英文。英语没有 en 前缀(使其更难)。
所以我创建了这样的映射:
class UrlMappings {
static mappings = {
"/$lang/$controller/$action?/$id?"{
constraints {
lang(matches:/pl|en/)
}
}
"/$lang/store/$category" {
controller = "storeItem"
action = "index"
constraints {
lang(matches:/pl|en/)
}
}
"/$lang/store" {
controller = "storeItem"
action = "index"
constraints {
lang(matches:/pl|en/)
}
}
"/$controller/$action?/$id?"{
lang="en"
constraints {
}
}
"/store/$category" {
lang="en"
controller = "storeItem"
action = "index"
}
"/store" {
lang="en"
controller = "storeItem"
action = "index"
}
"/"(view:"/index")
"500"(view:'/error')
}
}
它没有完全工作,语言现在只是硬编码。我想我做错了什么。一些反向映射有效,但有些不添加语言。
如果我使用链接标签并传递 params:[lang:'pl'] 那么它可以工作,但如果我添加 params:[lang:'pl', page:2] 那么它不会。在第二种情况下,语言和页码都成为查询字符串中的参数。更糟糕的是,它们不会影响语言环境,因此页面以英文显示。
任何人都可以请我指出文档反向映射的规则是什么,或者更好地如何以一种好的方式实现这种语言前缀?
谢谢