translate tournament names - WIP

perfI18n
Thibault Duplessis 2020-02-14 07:52:54 -06:00
parent 5b006658da
commit 6bcbf85e2e
6 changed files with 103 additions and 2 deletions

View File

@ -2,7 +2,7 @@ const fs = require('fs-extra');
const parseString = require('xml2js').parseString;
const baseDir = 'translation/source';
const dbs = 'site arena emails learn activity coordinates study clas contact patron coach broadcast streamer tfa settings preferences team perfStat search'.split(' ');
const dbs = 'site arena emails learn activity coordinates study clas contact patron coach broadcast streamer tfa settings preferences team perfStat search tourname'.split(' ');
function ucfirst(s) {
return s.charAt(0).toUpperCase() + s.slice(1);

View File

@ -76,7 +76,7 @@ lazy val i18n = module("i18n",
MessageCompiler(
sourceDir = new File("translation/source"),
destDir = new File("translation/dest"),
dbs = "site arena emails learn activity coordinates study class contact patron coach broadcast streamer tfa settings preferences team perfStat search".split(' ').toList,
dbs = "site arena emails learn activity coordinates study class contact patron coach broadcast streamer tfa settings preferences team perfStat search tourname".split(' ').toList,
compileTo = (sourceManaged in Compile).value
)
}.taskValue,

View File

@ -1579,4 +1579,46 @@ val `searchInXGames` = new I18nKey("search:searchInXGames")
val `xGamesFound` = new I18nKey("search:xGamesFound")
}
object tourname {
val `hourlyRapidArena` = new I18nKey("tourname:hourlyRapidArena")
val `hourlyRapid` = new I18nKey("tourname:hourlyRapid")
val `hourlyXArena` = new I18nKey("tourname:hourlyXArena")
val `hourlyX` = new I18nKey("tourname:hourlyX")
val `dailyRapidArena` = new I18nKey("tourname:dailyRapidArena")
val `dailyRapid` = new I18nKey("tourname:dailyRapid")
val `dailyClassicalArena` = new I18nKey("tourname:dailyClassicalArena")
val `dailyClassical` = new I18nKey("tourname:dailyClassical")
val `dailyXArena` = new I18nKey("tourname:dailyXArena")
val `dailyX` = new I18nKey("tourname:dailyX")
val `easternRapidArena` = new I18nKey("tourname:easternRapidArena")
val `easternRapid` = new I18nKey("tourname:easternRapid")
val `easternClassicalArena` = new I18nKey("tourname:easternClassicalArena")
val `easternClassical` = new I18nKey("tourname:easternClassical")
val `easternXArena` = new I18nKey("tourname:easternXArena")
val `easternX` = new I18nKey("tourname:easternX")
val `weeklyRapidArena` = new I18nKey("tourname:weeklyRapidArena")
val `weeklyRapid` = new I18nKey("tourname:weeklyRapid")
val `weeklyClassicalArena` = new I18nKey("tourname:weeklyClassicalArena")
val `weeklyClassical` = new I18nKey("tourname:weeklyClassical")
val `weeklyXArena` = new I18nKey("tourname:weeklyXArena")
val `weeklyX` = new I18nKey("tourname:weeklyX")
val `monthlyRapidArena` = new I18nKey("tourname:monthlyRapidArena")
val `monthlyRapid` = new I18nKey("tourname:monthlyRapid")
val `monthlyClassicalArena` = new I18nKey("tourname:monthlyClassicalArena")
val `monthlyClassical` = new I18nKey("tourname:monthlyClassical")
val `monthlyXArena` = new I18nKey("tourname:monthlyXArena")
val `monthlyX` = new I18nKey("tourname:monthlyX")
val `yearlyRapidArena` = new I18nKey("tourname:yearlyRapidArena")
val `yearlyRapid` = new I18nKey("tourname:yearlyRapid")
val `yearlyClassicalArena` = new I18nKey("tourname:yearlyClassicalArena")
val `yearlyClassical` = new I18nKey("tourname:yearlyClassical")
val `yearlyXArena` = new I18nKey("tourname:yearlyXArena")
val `yearlyX` = new I18nKey("tourname:yearlyX")
val `xShieldArena` = new I18nKey("tourname:xShieldArena")
val `xShield` = new I18nKey("tourname:xShield")
val `openingRapidArena` = new I18nKey("tourname:openingRapidArena")
val `openingRapid` = new I18nKey("tourname:openingRapid")
val `teamBattle` = new I18nKey("tourname:teamBattle")
}
}

View File

@ -15,6 +15,19 @@ case class Schedule(
conditions: Condition.All = Condition.All.empty
) {
def transName(implicit lang: Lang) = freq match {
case m @ Schedule.Freq.ExperimentalMarathon => m.name
case _ if variant.standard && position.initial =>
(conditions.minRating, conditions.maxRating) match {
case (None, None) => s"${freq.toString} ${speed.toString}"
case (Some(_), _) => s"Elite ${speed.toString}"
case (_, Some(max)) => s"U${max.rating} ${speed.toString}"
}
case _ if variant.standard => s"${position.shortName} ${speed.toString}"
case Schedule.Freq.Hourly => s"${variant.name} ${speed.toString}"
case _ => s"${freq.toString} ${variant.name}"
}
def name = freq match {
case m @ Schedule.Freq.ExperimentalMarathon => m.name
case _ if variant == chess.variant.Crazyhouse && conditions.minRating.isDefined => "Elite Crazyhouse"

View File

@ -2,10 +2,12 @@ package lila.tournament
import org.joda.time.{ DateTime, Duration, Interval }
import ornicar.scalalib.Random
import play.api.i18n.Lang
import chess.Clock.{ Config => ClockConfig }
import chess.{ Mode, Speed, StartingPosition }
import lila.game.PerfPicker
import lila.i18n.I18nKeys.{ tourname => iname }
import lila.rating.PerfType
import lila.user.User
@ -40,6 +42,8 @@ case class Tournament(
def isTeamBattle = teamBattle.isDefined
def transName(implicit lang: Lang) = schedule.fold(name)(_.transName)
def fullName =
if (isTeamBattle) s"$name Team Battle"
else

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="hourlyRapidArena">Hourly Rapid Arena</string>
<string name="hourlyRapid">Hourly Rapid</string>
<string name="hourlyXArena">Hourly %s Arena</string>
<string name="hourlyX">Hourly %s</string>
<string name="dailyRapidArena">Daily Rapid Arena</string>
<string name="dailyRapid">Daily Rapid</string>
<string name="dailyClassicalArena">Daily Classical Arena</string>
<string name="dailyClassical">Daily Classical</string>
<string name="dailyXArena">Daily %s Arena</string>
<string name="dailyX">Daily %s</string>
<string name="easternRapidArena">Eastern Rapid Arena</string>
<string name="easternRapid">Eastern Rapid</string>
<string name="easternClassicalArena">Eastern Classical Arena</string>
<string name="easternClassical">Eastern Classical</string>
<string name="easternXArena">Eastern %s Arena</string>
<string name="easternX">Eastern %s</string>
<string name="weeklyRapidArena">Weekly Rapid Arena</string>
<string name="weeklyRapid">Weekly Rapid</string>
<string name="weeklyClassicalArena">Weekly Classical Arena</string>
<string name="weeklyClassical">Weekly Classical</string>
<string name="weeklyXArena">Weekly %s Arena</string>
<string name="weeklyX">Weekly %s</string>
<string name="monthlyRapidArena">Monthly Rapid Arena</string>
<string name="monthlyRapid">Monthly Rapid</string>
<string name="monthlyClassicalArena">Monthly Classical Arena</string>
<string name="monthlyClassical">Monthly Classical</string>
<string name="monthlyXArena">Monthly %s Arena</string>
<string name="monthlyX">Monthly %s</string>
<string name="yearlyRapidArena">Yearly Rapid Arena</string>
<string name="yearlyRapid">Yearly Rapid</string>
<string name="yearlyClassicalArena">Yearly Classical Arena</string>
<string name="yearlyClassical">Yearly Classical</string>
<string name="yearlyXArena">Yearly %s Arena</string>
<string name="yearlyX">Yearly %s</string>
<string name="xShieldArena">%s Shield Arena</string>
<string name="xShield">%s Shield</string>
<string name="openingRapidArena">%s Rapid Arena</string>
<string name="openingRapid">%s Rapid</string>
<string name="teamBattle">%s Team Battle</string>
</resources>