lila/app/templating/I18hHelper.scala
2017-10-21 15:01:50 -05:00

40 lines
1.3 KiB
Scala

package lila.app
package templating
import play.api.i18n.Lang
import play.api.libs.json.JsObject
import play.twirl.api.Html
import lila.i18n.{ LangList, I18nKey, Translator, JsQuantity, I18nDb, JsDump, TimeagoLocales }
import lila.user.UserContext
trait I18nHelper {
implicit def lang(implicit ctx: UserContext) = ctx.lang
def transKey(key: String, db: I18nDb.Ref, args: Seq[Any] = Nil)(implicit lang: Lang): Html =
Translator.html.literal(key, db, args, lang)
def i18nJsObject(keys: I18nKey*)(implicit lang: Lang): JsObject =
JsDump.keysToObject(keys, I18nDb.Site, lang)
def i18nOptionJsObject(keys: Option[I18nKey]*)(implicit lang: Lang): JsObject =
JsDump.keysToObject(keys.flatten, I18nDb.Site, lang)
def i18nFullDbJsObject(db: I18nDb.Ref)(implicit lang: Lang): JsObject =
JsDump.dbToObject(db, lang)
def i18nJsQuantityFunction(implicit lang: Lang): Html = Html(JsQuantity(lang))
private val defaultTimeagoLocale = TimeagoLocales.js.get("en") err "Missing en TimeagoLocales"
def timeagoLocaleScript(implicit ctx: lila.api.Context) = Html {
TimeagoLocales.js.get(ctx.lang.code) orElse
TimeagoLocales.js.get(ctx.lang.language) getOrElse
defaultTimeagoLocale
}
def langName = LangList.nameByStr _
def shortLangName(str: String) = langName(str).takeWhile(','!=)
}