Привет, у меня возникли проблемы с отображением языка. То, как я хочу, чтобы это работало, заключается в том, что язык кодируется в URL-адресе, например / appname / de / mycontroller / what
Если вы перейдете в / 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')
}
}
Это не полностью работает, и языки прямо сейчас жестко запрограммированы. Я думаю, что сделал что-то не так. Некоторые обратные отображения работают, но некоторые не добавляют язык.
Если я использую тег ссылки и передам параметры: [lang: 'pl'], тогда это работает, но если я добавлю параметры: [lang: 'pl', page: 2], то это не так. Во втором случае и язык, и номер страницы становятся параметрами в строке запроса. Что еще хуже, они не влияют на локаль, поэтому страница отображается на английском языке.
Может ли кто-нибудь указать мне на документацию, каковы правила обратного отображения или, что еще лучше, как правильно реализовать такой языковой префикс?
СПАСИБО