fix mobile app form errors translations

This commit is contained in:
Thibault Duplessis 2017-06-05 17:03:17 +02:00
parent 1214d7def1
commit 4440ef438d
3 changed files with 16 additions and 12 deletions

View file

@ -41,7 +41,6 @@ private[controllers] trait LilaController
api = _ => fuccess(Ok(jsonOkBody) as JSON)
)
// implicit def lang(implicit req: RequestHeader) = Env.i18n.pool lang req
implicit def lang(implicit ctx: Context) = ctx.lang
protected def NoCache(res: Result): Result = res.withHeaders(
@ -352,8 +351,21 @@ private[controllers] trait LilaController
else if (HTTPRequest isBot ctx.req) fuccess(NotFound)
else result
protected def errorsAsJson(form: play.api.data.Form[_])(implicit lang: play.api.i18n.Messages) =
lila.common.Form errorsAsJson form
private val jsonGlobalErrorRenamer = {
import play.api.libs.json._
__.json update (
(__ \ "global").json copyFrom (__ \ "").json.pick
) andThen (__ \ "").json.prune
}
protected def errorsAsJson(form: play.api.data.Form[_])(implicit lang: play.api.i18n.Lang) = {
val json = Json.toJson(
form.errors.groupBy(_.key).mapValues { errors =>
errors.map(e => lila.i18n.Translator.txt.literal(e.message, e.args, lang))
}
)
json validate jsonGlobalErrorRenamer getOrElse json
}
protected val pgnContentType = "application/x-chess-pgn"
}

View file

@ -4,7 +4,6 @@ import org.joda.time.DateTimeZone
import play.api.data.format.Formats._
import play.api.data.format.Formatter
import play.api.data.Forms._
import play.api.libs.json._
object Form {
@ -39,13 +38,6 @@ object Form {
private def pluralize(pattern: String, nb: Int) =
pattern.replace("{s}", (nb != 1).fold("s", ""))
private val jsonGlobalErrorRenamer = __.json update (
(__ \ "global").json copyFrom (__ \ "").json.pick
) andThen (__ \ "").json.prune
def errorsAsJson(form: play.api.data.Form[_])(implicit lang: play.api.i18n.Messages) =
form.errorsAsJson validate jsonGlobalErrorRenamer getOrElse form.errorsAsJson
object formatter {
def stringFormatter[A](from: A => String, to: String => A): Formatter[A] = new Formatter[A] {
def bind(key: String, data: Map[String, String]) = stringFormat.bind(key, data).right map to

View file

@ -42,7 +42,7 @@ final class DataForm(
regex = """^[^\d].+$""".r,
error = "usernameStartNoNumber"
)
).verifying("", u => !UserRepo.nameExists(u).awaitSeconds(4))
).verifying("usernameAlreadyUsed", u => !UserRepo.nameExists(u).awaitSeconds(4))
.verifying("usernameUnacceptable", u => !LameName(u))
val website = Form(mapping(