У меня есть интернационализированное веб-приложение Scala Play 2.7.x, и у меня есть обычные маршруты, например,
GET / controllers.ApplicationController.index
GET /page/somePage/ controllers.SomeController.somePage
GET /contact controllers.ContactController.view
Теперь я хотел бы добавить новый маршрут, который будет в основном менять язык-перенаправлять на любой целевой маршрут. ,Я реализую этот вариант использования, добавив дополнительный маршрут поверх routes
, например:
GET /$lang<(en|es)> controllers.ApplicationController.langRedirect(lang: String, target: String = "")
Идея состоит в том, что каждый раз, когда вы делаете, например,
http://localhost:9000/en => will go to home page in english
http://localhost:9000/en/contact => will go to contact page in english
http://localhost:9000/es => will go to home page in spanish
http://localhost:9000/es/contact => will go to contact page in spanish
и т. Д. ,К сожалению, он не всегда работает, например, тот, который включен до /en/page/somePage/
, он не будет правильно соответствовать первому правилу:
GET /$lang<(en|es)> controllers.ApplicationController.langRedirect(lang: String, target: String = "")
предположительно из-за промежуточного /
... как я могу это исправитьчто?
Для полноты вот моя реализация ApplicationController.langRedirect(...)
:
def langRedirect(lang: String, target: String = "") = silhouette.UserAwareAction.async { implicit request =>
Future.successful(Redirect("/" + target).withLang(Lang(lang)))
}