Play2で日本語を含むパスをコントローラにマッピングする場合、routesにはURLエンコード済みのパスを記述しておく必要があるのですが、数が増えると後から見たときにわけわかめな感じになってしまいます。
GET /%E3%83%8F%E3%83%AD%E3%83%BC controllers.Application.hello
そこでこんな感じのGlobalを用意しておきます。URLがエンコードされてるっぽいパスで始まっている場合はデコードしてからルーティングを行うようにしています。
import play.api._ import play.api.mvc._ import java.net.URLDecoder.decode object Global extends GlobalSettings { override def onRouteRequest(req: RequestHeader): Option[Handler] = { super.onRouteRequest( if(req.path.startsWith("/%")) req.copy(path = decode(req.path, "UTF-8")) else req) } }
するとroutesに以下のような感じで日本語ルーティングを書けるようになります。
GET /ハロー controllers.Application.hello
日本語パスを多用する場合はこんな技を使うのもありかもしれません。