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