こんにちは、言語マッピングに問題があります。私がそれを機能させたい方法は、言語が /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] を追加すると機能しません。2 番目のケースでは、lang とページ番号の両方がクエリ文字列のパラメーターになります。さらに悪いことに、ロケールには影響しないため、ページは英語で表示されます。
逆マッピングのルールとは何か、またはそのような言語プレフィックスを適切に実装する方法について、ドキュメントを教えてください。
ありがとう