Merge branch 'master' into ublog
* master: New Crowdin updates (#9690) rename Future.nevermind -> Future.recoverDefault log and ignore puzzle vote failure tweak hasher limit tweak puzzle sequencer remove unused argument fix response on invalid board API command check for the coach.listed flagublog
commit
af4dd08768
|
@ -156,7 +156,7 @@ final class Env(
|
|||
_ <- challenge.api.removeByUserId(u.id)
|
||||
_ <- tournament.api.withdrawAll(u)
|
||||
_ <- swiss.api.withdrawAll(u, teamIds)
|
||||
_ <- plan.api.cancel(u).nevermind
|
||||
_ <- plan.api.cancel(u).recoverDefault
|
||||
_ <- lobby.seekApi.removeByUser(u)
|
||||
_ <- security.store.closeAllSessionsOf(u.id)
|
||||
_ <- push.webSubscriptionApi.unsubscribeByUser(u)
|
||||
|
|
|
@ -20,11 +20,11 @@ final class KeyPages(env: Env)(implicit ec: scala.concurrent.ExecutionContext) {
|
|||
def homeHtml(implicit ctx: Context): Fu[Frag] =
|
||||
env
|
||||
.preloader(
|
||||
posts = env.forum.recent(ctx.me, env.team.cached.teamIdsList).nevermind,
|
||||
tours = env.tournament.cached.onHomepage.getUnit.nevermind,
|
||||
posts = env.forum.recent(ctx.me, env.team.cached.teamIdsList).recoverDefault,
|
||||
tours = env.tournament.cached.onHomepage.getUnit.recoverDefault,
|
||||
swiss = env.swiss.feature.onHomepage.getUnit.getIfPresent,
|
||||
events = env.event.api.promoteTo(ctx.req).nevermind,
|
||||
simuls = env.simul.allCreatedFeaturable.get {}.nevermind,
|
||||
events = env.event.api.promoteTo(ctx.req).recoverDefault,
|
||||
simuls = env.simul.allCreatedFeaturable.get {}.recoverDefault,
|
||||
streamerSpots = env.streamer.homepageMaxSetting.get()
|
||||
)
|
||||
.mon(_.lobby segment "preloader.total")
|
||||
|
|
|
@ -127,6 +127,7 @@ final class PlayApi(
|
|||
env.chat.api.userChat.find(lila.chat.Chat.Id(pov.game.id)) map
|
||||
lila.chat.JsonView.boardApi map JsonOk
|
||||
}
|
||||
case _ => notFoundJson("No such command")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ final class Relation(
|
|||
lila.msg.MsgPreset.maxFollow(me.username, env.relation.maxFollow.value)
|
||||
) inject Ok
|
||||
case _ =>
|
||||
api.follow(me.id, UserModel normalize userId).nevermind >> renderActions(userId, getBool("mini"))
|
||||
api.follow(me.id, UserModel normalize userId).recoverDefault >> renderActions(userId, getBool("mini"))
|
||||
}
|
||||
}(rateLimitedFu)
|
||||
}
|
||||
|
@ -74,7 +74,7 @@ final class Relation(
|
|||
Api.ClientError(lila.msg.MsgPreset.maxFollow(me.username, env.relation.maxFollow.value).text)
|
||||
)
|
||||
case _ =>
|
||||
api.follow(me.id, UserModel normalize userId).nevermind inject Api.Done
|
||||
api.follow(me.id, UserModel normalize userId).recoverDefault inject Api.Done
|
||||
}
|
||||
}(fuccess(Api.Limited)) map apiC.toHttp
|
||||
}
|
||||
|
@ -82,7 +82,7 @@ final class Relation(
|
|||
def unfollow(userId: String) =
|
||||
Auth { implicit ctx => me =>
|
||||
FollowLimitPerUser(me.id) {
|
||||
api.unfollow(me.id, UserModel normalize userId).nevermind >> renderActions(userId, getBool("mini"))
|
||||
api.unfollow(me.id, UserModel normalize userId).recoverDefault >> renderActions(userId, getBool("mini"))
|
||||
}(rateLimitedFu)
|
||||
}
|
||||
|
||||
|
@ -96,13 +96,13 @@ final class Relation(
|
|||
def block(userId: String) =
|
||||
Auth { implicit ctx => me =>
|
||||
FollowLimitPerUser(me.id) {
|
||||
api.block(me.id, UserModel normalize userId).nevermind >> renderActions(userId, getBool("mini"))
|
||||
api.block(me.id, UserModel normalize userId).recoverDefault >> renderActions(userId, getBool("mini"))
|
||||
}(rateLimitedFu)
|
||||
}
|
||||
|
||||
def unblock(userId: String) =
|
||||
Auth { implicit ctx => me =>
|
||||
api.unblock(me.id, UserModel normalize userId).nevermind >> renderActions(userId, getBool("mini"))
|
||||
api.unblock(me.id, UserModel normalize userId).recoverDefault >> renderActions(userId, getBool("mini"))
|
||||
}
|
||||
|
||||
def following(username: String, page: Int) =
|
||||
|
|
|
@ -512,7 +512,7 @@ final class Tournament(
|
|||
negotiate(
|
||||
html = notFound,
|
||||
api = _ =>
|
||||
env.tournament.cached.onHomepage.getUnit.nevermind map {
|
||||
env.tournament.cached.onHomepage.getUnit.recoverDefault map {
|
||||
lila.tournament.Spotlight.select(_, ctx.me, 4)
|
||||
} flatMap env.tournament.apiJsonView.featured map { Ok(_) }
|
||||
)
|
||||
|
|
|
@ -132,7 +132,7 @@ object UserInfo {
|
|||
relationApi.countFollowers(user.id).mon(_.user segment "nbFollowers") zip
|
||||
!(user.is(User.lichessId) || user.isBot) ??
|
||||
postApi.nbByUser(user.id).mon(_.user segment "nbPosts") zip
|
||||
studyRepo.countByOwner(user.id).nevermind.mon(_.user segment "nbStudies") zip
|
||||
studyRepo.countByOwner(user.id).recoverDefault.mon(_.user segment "nbStudies") zip
|
||||
trophyApi.findByUser(user).mon(_.user segment "trophy") zip
|
||||
shieldApi.active(user).mon(_.user segment "shields") zip
|
||||
revolutionApi.active(user).mon(_.user segment "revolutions") zip
|
||||
|
|
|
@ -41,7 +41,9 @@ final class CoachApi(
|
|||
}
|
||||
|
||||
def isListedCoach(user: User): Fu[Boolean] =
|
||||
Granter(_.Coach)(user) ?? user.enabled ?? user.marks.clean ?? coachColl.exists($id(user.id))
|
||||
Granter(_.Coach)(user) ?? user.enabled ?? user.marks.clean ?? coachColl.exists(
|
||||
$id(user.id) ++ $doc("listed" -> true)
|
||||
)
|
||||
|
||||
def setSeenAt(user: User): Funit =
|
||||
Granter(_.Coach)(user) ?? coachColl.update.one($id(user.id), $set("user.seenAt" -> DateTime.now)).void
|
||||
|
|
|
@ -168,14 +168,14 @@ final class PimpedFuture[A](private val fua: Fu[A]) extends AnyVal {
|
|||
def logTime(name: String) = chronometer pp name
|
||||
def logTimeIfGt(name: String, duration: FiniteDuration) = chronometer.ppIfGt(name, duration)
|
||||
|
||||
def nevermind(implicit z: Zero[A], ec: EC): Fu[A] = nevermind(z.zero)
|
||||
def recoverDefault(implicit z: Zero[A], ec: EC): Fu[A] = recoverDefault(z.zero)
|
||||
|
||||
def nevermind(default: => A)(implicit ec: EC): Fu[A] =
|
||||
def recoverDefault(default: => A)(implicit ec: EC): Fu[A] =
|
||||
fua recover {
|
||||
case _: LilaException => default
|
||||
case _: java.util.concurrent.TimeoutException => default
|
||||
case e: Exception =>
|
||||
lila.log("common").warn("Future.nevermind", e)
|
||||
lila.log("common").warn("Future.recoverDefault", e)
|
||||
default
|
||||
}
|
||||
}
|
||||
|
|
|
@ -68,7 +68,7 @@ final private class ZulipClient(ws: StandaloneWSClient, config: ZulipClient.Conf
|
|||
}
|
||||
.monSuccess(_.irc.zulip.say(msg.stream))
|
||||
.logFailure(lila.log("zulip"))
|
||||
.nevermind
|
||||
.recoverDefault
|
||||
|
||||
}(fuccess(None))
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ final class MongoRateLimit[K](
|
|||
}
|
||||
}
|
||||
|
||||
final class MongoRateLimitApi(db: lila.db.Db, config: MemoConfig)(implicit ec: ExecutionContext) {
|
||||
final class MongoRateLimitApi(db: lila.db.Db, config: MemoConfig) {
|
||||
|
||||
private val coll = db(config.cacheColl)
|
||||
|
||||
|
|
|
@ -162,7 +162,7 @@ final class MsgApi(
|
|||
destSource
|
||||
.filter(orig.id !=)
|
||||
.mapAsync(4) {
|
||||
post(orig.id, _, text, multi = true).logFailure(logger).nevermind(PostResult.Invalid)
|
||||
post(orig.id, _, text, multi = true).logFailure(logger).recoverDefault(PostResult.Invalid)
|
||||
}
|
||||
.toMat(LilaStream.sinkCount)(Keep.right)
|
||||
.run()
|
||||
|
|
|
@ -15,7 +15,7 @@ final private class HookThieve()(implicit
|
|||
Bus
|
||||
.ask[PoolHooks]("lobbyTrouper")(GetCandidates(clock, _))
|
||||
.logFailure(logger)
|
||||
.nevermind(PoolHooks(Vector.empty))
|
||||
.recoverDefault(PoolHooks(Vector.empty))
|
||||
|
||||
def stolen(poolHooks: Vector[PoolHook], monId: String) = {
|
||||
lila.mon.lobby.pool.thieve.stolen(monId).record(poolHooks.size)
|
||||
|
|
|
@ -62,7 +62,7 @@ final class PuzzleApi(
|
|||
private val sequencer =
|
||||
new lila.hub.AsyncActorSequencers(
|
||||
maxSize = 16,
|
||||
expiration = 5 minutes,
|
||||
expiration = 1 minute,
|
||||
timeout = 3 seconds,
|
||||
name = "puzzle.vote"
|
||||
)
|
||||
|
@ -85,7 +85,7 @@ final class PuzzleApi(
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}.logFailure(logger, _ => s"puzzle.vote $id").recoverDefault
|
||||
|
||||
private def updatePuzzle(puzzleId: Puzzle.Id, newVote: Int, prevVote: Option[Int]): Funit =
|
||||
colls.puzzle { coll =>
|
||||
|
|
|
@ -47,7 +47,7 @@ ${trans.common_orPaste.txt()}
|
|||
tokener read token dmap (_.flatten) flatMap {
|
||||
_ ?? { case TokenPayload(userId, email) =>
|
||||
userRepo.email(userId) flatMap { previous =>
|
||||
(userRepo.setEmail(userId, email).nevermind >> userRepo.byId(userId))
|
||||
(userRepo.setEmail(userId, email).recoverDefault >> userRepo.byId(userId))
|
||||
.map2(_ -> previous)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ final class GarbageCollector(
|
|||
retries = 5,
|
||||
logger = none
|
||||
)
|
||||
.nevermind >> apply(applyData)
|
||||
.recoverDefault >> apply(applyData)
|
||||
()
|
||||
}
|
||||
.unit
|
||||
|
|
|
@ -180,7 +180,7 @@ final class RemoteSocket(
|
|||
res => logger.info(s"lila-ws says: $res")
|
||||
).withTimeout(1 second)
|
||||
.addFailureEffect(e => logger.error("lila-ws stop", e))
|
||||
.nevermind
|
||||
.recoverDefault
|
||||
}
|
||||
|
||||
Lilakka.shutdown(shutdown, _.PhaseServiceUnbind, "Stopping the socket redis pool") { () =>
|
||||
|
|
|
@ -90,7 +90,7 @@ object PasswordHasher {
|
|||
)
|
||||
|
||||
private lazy val rateLimitGlobal = new RateLimit[String](
|
||||
credits = 4 * 10 * 60, // max out 4 cores for 60 seconds
|
||||
credits = 6 * 10 * 60, // max out 6 cores for 60 seconds
|
||||
duration = 1 minute,
|
||||
key = "password.hashes.global"
|
||||
)
|
||||
|
|
|
@ -49,4 +49,8 @@ Hrajte rychle a vraťte se vždy co nejdříve do turnajové místnosti - stihne
|
|||
<string name="newTeamBattle">Nová týmová bitva</string>
|
||||
<string name="customStartDate">Vlastní datum zahájení</string>
|
||||
<string name="allowBerserk">Povolit Berserk</string>
|
||||
<string name="allowBerserkHelp">Umožní hráčům snížit čas na polovinu a získat bod navíc</string>
|
||||
<string name="allowChatHelp">Nechat hráče diskutovat v chatu</string>
|
||||
<string name="arenaStreaks">Série v aréně</string>
|
||||
<string name="arenaStreaksHelp">Po dvou výhrách, další po sobě jdoucí výhry udělují 4 body místo 2.</string>
|
||||
</resources>
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
<string name="knightMate">Je možné dát šach-mat jen s koněm nebo střelcem, pokud má soupeř na šachovnici více figur než jen krále.</string>
|
||||
<string name="noRatingPoints">Nebyly přiděleny žádné ratingové body</string>
|
||||
<string name="ratedGame">Ujistěte se, že jste hráli hodnocenou hru. Neformální hry neovlivňují hodnocení hráčů.</string>
|
||||
<string name="botRatingAbuse">Za určitých okolností při hraní proti účtu bota hodnocená hra neudělí žádné body, pokud je zjištěno, že hráč zneužívá bota jen pro změnu hodnocení.</string>
|
||||
<string name="errorPage">Chybová stránka</string>
|
||||
<string name="reportErrorPage">Pokud jste narazili na chybovou stránku, můžete ji nahlásit:</string>
|
||||
<string name="banAppeal">Žádost o zákaz nebo IP omezení</string>
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
<string name="theKnight">Jezdec</string>
|
||||
<string name="itMovesInAnLShape">Pohybuje se ve tvaru písmene „L”</string>
|
||||
<string name="knightIntro">A nyní výzva pro vás. Jezdec je... velmi obtížná figura.</string>
|
||||
<string name="knightsHaveAFancyWay">Jezdci mají bláznivé cesty na skákání okolo!</string>
|
||||
<string name="knightsHaveAFancyWay">Jezdci bláznivě skáčkou okolo!</string>
|
||||
<string name="knightsCanJumpOverObstacles">Jezdci mohou skákat přes překážky! Utečte z pasti a dobyjte hvězdy!</string>
|
||||
<string name="knightComplete">Gratulace! Zvládáte manipulovat s jezdcem.</string>
|
||||
<string name="thePawn">Pěšec</string>
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
<string name="history">Historie řešení úloh</string>
|
||||
<string name="solved">vyřešeno</string>
|
||||
<string name="failed">nezdařilo se</string>
|
||||
<string name="streakDescription">Vyřešte postupně těžší hádanky a vytvořte vítěznou sérii. Není tu žádný limit, takže si dejte na na čas. Jeden špatný tah a je to hra skončí! Můžete ale přeskočit jeden tah za běh.</string>
|
||||
<string name="streakDescription">Vyřešte postupně těžší hádanky a vytvořte vítěznou sérii. Není tu žádný limit, takže si dejte na na čas. Jeden špatný tah a je to, hra skončí! Můžete ale přeskočit jeden tah za běh.</string>
|
||||
<string name="yourStreakX">Vaše série: %s</string>
|
||||
<string name="streakSkipExplanation">Přeskočit tento krok pro zachování své série! Funguje pouze jednou za běh.</string>
|
||||
<string name="continueTheStreak">Pokračovat v sérii</string>
|
||||
|
@ -61,4 +61,11 @@
|
|||
<string name="fromMyGamesNone">V databázi nemáte žádné úlohy, ale Lichess vás stále velmi miluje.
|
||||
Hrajte rapid a klasické hry ke zvýšení šance na přidání vlastní úlohy!</string>
|
||||
<string name="fromXGamesFound">%1$s úloh nalezeno v %2$s partiích</string>
|
||||
<plurals name="nbToReplay">
|
||||
<item quantity="one">%s k opakování</item>
|
||||
<item quantity="few">%s k opakování</item>
|
||||
<item quantity="many">%s k opakování</item>
|
||||
<item quantity="other">%s k opakování</item>
|
||||
</plurals>
|
||||
<string name="percentSolved">%s vyřešeno</string>
|
||||
</resources>
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
<string name="strengths">Puntos fuertes</string>
|
||||
<string name="history">Historial de ejercicios</string>
|
||||
<string name="solved">resuelto</string>
|
||||
<string name="failed">error</string>
|
||||
<string name="failed">fallido</string>
|
||||
<string name="streakDescription">Resuelve ejercicios cada vez más difíciles para conseguir la racha más larga posible. No hay tiempo, así que tómatelo con calma. Un movimiento erróneo y ¡se acabó!, aunque puedes omitir un movimiento en cada sesión.</string>
|
||||
<string name="yourStreakX">Aciertos seguidos: %s</string>
|
||||
<string name="streakSkipExplanation">Puedes omitir este movimiento para conservar tu racha, pero solo una vez por sesión.</string>
|
||||
|
@ -72,15 +72,15 @@
|
|||
<string name="fromXGamesFound">%1$s ejercicios encontrados en las partidas de %2$s</string>
|
||||
<string name="puzzleDashboardDescription">Entrena, analiza, mejora</string>
|
||||
<plurals name="nbPlayed">
|
||||
<item quantity="one">%s completado</item>
|
||||
<item quantity="other">%s completados</item>
|
||||
<item quantity="one">%s ejercicio</item>
|
||||
<item quantity="other">%s ejercicios</item>
|
||||
</plurals>
|
||||
<plurals name="nbToReplay">
|
||||
<item quantity="one">%s a repetir</item>
|
||||
<item quantity="other">%s a repetir</item>
|
||||
</plurals>
|
||||
<string name="percentSolved">%s solucionados</string>
|
||||
<string name="noPuzzlesToShow">Nada que mostrar, ¡primero resuelve algunos ejercicios!</string>
|
||||
<string name="improvementAreasDescription">¡Entrena estas áreas para mejorar tu progreso!</string>
|
||||
<string name="strengthDescription">Tienes el mejor rendimiento en estos temas</string>
|
||||
<string name="percentSolved">%s correctos</string>
|
||||
<string name="noPuzzlesToShow">Aún no hay nada que mostrar aquí. ¡Ve y haz algunos ejercicios!</string>
|
||||
<string name="improvementAreasDescription">¡Entrena estas áreas para progresar!</string>
|
||||
<string name="strengthDescription">Estas son las áreas en las que eres más fuerte</string>
|
||||
</resources>
|
||||
|
|
|
@ -76,4 +76,21 @@
|
|||
<string name="fromMyGamesNone">V bazi podatkov nimate ugank, vendar vas ima Lichess še vedno zelo rad.
|
||||
Igrajte hitre in klasične igre, da povečate možnosti za dodajanje svoje uganke!</string>
|
||||
<string name="fromXGamesFound">Najdenih %1$s ugank v %2$s igrah</string>
|
||||
<string name="puzzleDashboardDescription">Trenirajte, analizirajte, izboljšajte</string>
|
||||
<plurals name="nbPlayed">
|
||||
<item quantity="one">%s igrana</item>
|
||||
<item quantity="two">%s igrani</item>
|
||||
<item quantity="few">%s igrani</item>
|
||||
<item quantity="other">%s igranih</item>
|
||||
</plurals>
|
||||
<plurals name="nbToReplay">
|
||||
<item quantity="one">%s za predvajanje</item>
|
||||
<item quantity="two">%s za predvajanje</item>
|
||||
<item quantity="few">%s za predvajanje</item>
|
||||
<item quantity="other">%s za predvajanje</item>
|
||||
</plurals>
|
||||
<string name="percentSolved">%s rešenih</string>
|
||||
<string name="noPuzzlesToShow">Nič za pokazati, najprej pojdite igrati uganke!</string>
|
||||
<string name="improvementAreasDescription">Trenirajte jih, da optimizirate svoj napredek!</string>
|
||||
<string name="strengthDescription">V teh temah se najbolje odrežete</string>
|
||||
</resources>
|
||||
|
|
|
@ -107,7 +107,7 @@
|
|||
<string name="skewerDescription">Un motivo que implica el ataque de una pieza de alto valor, que se aparta del camino y permite capturar o atacar una pieza de menor valor detrás de ella, lo contrario de una clavada.</string>
|
||||
<string name="smotheredMate">Mate de la coz</string>
|
||||
<string name="smotheredMateDescription">Un jaque mate en el que el caballo ataca al rey contrario, el cual no puede moverse al encontrarse rodeado (o ahogado) por sus propias piezas.</string>
|
||||
<string name="superGM">Partidas de super grandes maestros</string>
|
||||
<string name="superGM">Partidas de súper grandes maestros</string>
|
||||
<string name="superGMDescription">Ejercicios de partidas de los mejores jugadores del mundo.</string>
|
||||
<string name="trappedPiece">Pieza atrapada</string>
|
||||
<string name="trappedPieceDescription">Una pieza no puede escapar de la captura porque tiene movimientos limitados.</string>
|
||||
|
@ -115,7 +115,7 @@
|
|||
<string name="underPromotionDescription">Promoción a caballo, alfil o torre.</string>
|
||||
<string name="veryLong">Ejercicio muy largo</string>
|
||||
<string name="veryLongDescription">Cuatro movimientos o más para ganar.</string>
|
||||
<string name="xRayAttack">Ataque de rayos X</string>
|
||||
<string name="xRayAttack">Ataque por rayos X</string>
|
||||
<string name="xRayAttackDescription">Una pieza ataca o defiende una casilla, a través de una pieza del oponente.</string>
|
||||
<string name="zugzwang">Zugzwang</string>
|
||||
<string name="zugzwangDescription">El oponente está limitado en los movimientos que puede realizar, y todos los movimientos empeoran su posición.</string>
|
||||
|
|
|
@ -89,4 +89,7 @@ Eden od vaših kmetov je globoko na nasprotnikovem področju in ima morda možno
|
|||
<string name="veryLong">Zelo dolga uganka</string>
|
||||
<string name="zugzwang">Nujnica</string>
|
||||
<string name="healthyMixDescription">Vsega po malo. Ne veste, kaj pričakovati, zato bodite pripravljeni na vse! Kot pri resničnih partijah.</string>
|
||||
<string name="playerGames">Igralske igre</string>
|
||||
<string name="playerGamesDescription">Iskanje ugank, ustvarjenih iz vaših iger ali iz iger drugega igralca.</string>
|
||||
<string name="puzzleDownloadInformation">Te uganke so v javni lasti in jih je mogoče prenesti s spletnega mesta %s.</string>
|
||||
</resources>
|
||||
|
|
|
@ -916,10 +916,10 @@ Leer lassen, um Partien von der normalen Ausgangsstellung aus zu starten.</strin
|
|||
<string name="closedAccountChangedMind">Wenn du dein Konto geschlossen, aber danach deine Meinung geändert hast, hast du eine Chance, dein Konto zurückzuerhalten.</string>
|
||||
<string name="onlyWorksOnce">Das funktioniert nur ein einziges mal.</string>
|
||||
<string name="cantDoThisTwice">Wenn du dein Konto ein zweites Mal schließt, wird es keine Möglichkeit geben, es wiederherzustellen.</string>
|
||||
<string name="emailAssociatedToaccount">Deinem Konto zugeordnete E-Mail-Adresse</string>
|
||||
<string name="emailAssociatedToaccount">E-Mail-Adresse deines Kontos</string>
|
||||
<string name="sentEmailWithLink">Wir haben dir eine E-Mail mit einem Link geschickt.</string>
|
||||
<string name="tournamentEntryCode">Turnierbeitrittscode</string>
|
||||
<string name="hangOn">Moment mal!</string>
|
||||
<string name="hangOn">Einen Moment!</string>
|
||||
<string name="gameInProgress">Du hast noch eine laufende Partie mit %s.</string>
|
||||
<string name="abortTheGame">Partie abbrechen</string>
|
||||
<string name="resignTheGame">Partie aufgeben</string>
|
||||
|
|
|
@ -870,7 +870,7 @@
|
|||
<string name="timeAlmostUp">¡Te queda poco tiempo!</string>
|
||||
<string name="clickToRevealEmailAddress">[Haz clic para mostrar el correo electrónico]</string>
|
||||
<string name="download">Descargar</string>
|
||||
<string name="welcome">¡Bienvenidos!</string>
|
||||
<string name="welcome">¡Bienvenido!</string>
|
||||
<string name="lichessPatronInfo">Lichess es una organización benéfica y un software totalmente libre y de código abierto.
|
||||
Todos los gastos de funcionamiento, desarrollo y contenidos se financian exclusivamente mediante las donaciones de sus usuarios.</string>
|
||||
<string name="coachManager">Gestor de entrenador</string>
|
||||
|
@ -912,9 +912,9 @@ Déjalo vacío para empezar las partidas desde la posición inicial habitual.</s
|
|||
<string name="analysisOptions">Opciones de análisis</string>
|
||||
<string name="focusChat">Foco en el chat</string>
|
||||
<string name="showHelpDialog">Mostrar este cuadro de diálogo de ayuda</string>
|
||||
<string name="reopenYourAccount">Recupera tu cuenta</string>
|
||||
<string name="reopenYourAccount">Reactivar tu cuenta</string>
|
||||
<string name="closedAccountChangedMind">Si cerraste tu cuenta y has cambiado de opinión, aún tienes una oportunidad de recuperarla.</string>
|
||||
<string name="onlyWorksOnce">Esto solo funcionará una vez.</string>
|
||||
<string name="onlyWorksOnce">Esto solo se puede hacer una vez.</string>
|
||||
<string name="cantDoThisTwice">Si vuelves a cerrar tu cuenta, no podrás recuperarla.</string>
|
||||
<string name="emailAssociatedToaccount">Dirección de correo electrónico asociada a la cuenta</string>
|
||||
<string name="sentEmailWithLink">Te hemos enviado un correo electrónico con un enlace.</string>
|
||||
|
@ -923,5 +923,5 @@ Déjalo vacío para empezar las partidas desde la posición inicial habitual.</s
|
|||
<string name="gameInProgress">Estás jugando una partida con %s.</string>
|
||||
<string name="abortTheGame">Cancelar la partida</string>
|
||||
<string name="resignTheGame">Abandonar la partida</string>
|
||||
<string name="youCantStartNewGame">No puedes empezar una nueva partida hasta que ésta haya terminado.</string>
|
||||
<string name="youCantStartNewGame">No puedes empezar otra partida hasta que termines ésta.</string>
|
||||
</resources>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<string name="moveToStart">Mueve para empezar</string>
|
||||
<string name="youPlayTheWhitePiecesInAllPuzzles">Juegas con blancas en todos los ejercicios</string>
|
||||
<string name="youPlayTheBlackPiecesInAllPuzzles">Juegas con negras en todos los ejercicios</string>
|
||||
<string name="puzzlesSolved">ejercicios resueltos</string>
|
||||
<string name="puzzlesSolved">ejercicios correctos</string>
|
||||
<string name="newDailyHighscore">¡Récord del día!</string>
|
||||
<string name="newWeeklyHighscore">¡Récord de la semana!</string>
|
||||
<string name="newMonthlyHighscore">¡Récord del mes!</string>
|
||||
|
|
|
@ -41,6 +41,7 @@ Do turnaje se mohou připojit kdykoliv.</string>
|
|||
Hráči, kteří se připojí dostanou 1 volna i když se nezúčastní více kol.</string>
|
||||
<string name="willSwissReplaceArenasQ">Nahradí švýcarské turnaje arény?</string>
|
||||
<string name="roundRobinQ">Co systém každý s každým?</string>
|
||||
<string name="otherSystemsQ">A co ostatní systémy turnajů?</string>
|
||||
<string name="joinOrCreateTeam">Připojit se k týmu nebo vytvořit tým</string>
|
||||
<string name="nowPlaying">Právě se hraje</string>
|
||||
<string name="startingSoon">Brzy začne</string>
|
||||
|
@ -49,12 +50,19 @@ Hráči, kteří se připojí dostanou 1 volna i když se nezúčastní více ko
|
|||
<string name="predefinedDuration">Předpokládaná doba trvání</string>
|
||||
<string name="durationUnknown">Předem daný počet kol, ale neznámá doba trvání</string>
|
||||
<string name="numberOfGames">Počet her</string>
|
||||
<string name="numberOfGamesPreDefined">Stanoveno předem, stejné pro všechny hráče</string>
|
||||
<string name="pairingSystem">Losovací systém</string>
|
||||
<string name="pairingSystemArena">Jakýkoli soupeř s podobným hodnocením</string>
|
||||
<string name="pairingSystemSwiss">Nejlepší párování založené na bodech a remízách</string>
|
||||
<string name="pairingWaitTime">Čekání na spárování</string>
|
||||
<string name="pairingWaitTimeFast">Rychle: nečeká se na všechny hráče</string>
|
||||
<string name="pairingWaitTimeSlow">Pomalu: čeká se ns všechny hráče</string>
|
||||
<string name="identicalForbidden">Zakázané</string>
|
||||
<string name="lateJoin">Pozdní připojení</string>
|
||||
<string name="lateJoinUntil">Ano, dokud nezačne více než polovina kol</string>
|
||||
<string name="pause">Pauza</string>
|
||||
<string name="pauseSwiss">Ano, ale může snížit počet kol</string>
|
||||
<string name="streaksAndBerserk">Série a Berserk</string>
|
||||
<string name="similarToOTB">Podobné OTB turnajům</string>
|
||||
<string name="unlimitedAndFree">Neomezené a zdarma</string>
|
||||
</resources>
|
||||
|
|
|
@ -9,6 +9,10 @@
|
|||
<item quantity="one">%s kierrosta</item>
|
||||
<item quantity="other">%s kierrosta</item>
|
||||
</plurals>
|
||||
<plurals name="oneRoundEveryXDays">
|
||||
<item quantity="one">Yksi kierros päivässä</item>
|
||||
<item quantity="other">Yksi kierros %s päivän välein</item>
|
||||
</plurals>
|
||||
<string name="roundsAreStartedManually">Kierrokset aloitetaan käsin</string>
|
||||
<plurals name="xSecondsBetweenRounds">
|
||||
<item quantity="one">%s sekuntia kierrosten välillä</item>
|
||||
|
@ -20,6 +24,10 @@
|
|||
</plurals>
|
||||
<string name="startingIn" comment="Displayed above a timer">Turnauksen alkuun on</string>
|
||||
<string name="nextRound">Seuraava kierros</string>
|
||||
<plurals name="ongoingGames" comment="Displayed next to the ongoing games count">
|
||||
<item quantity="one">Meneillään oleva peli</item>
|
||||
<item quantity="other">Meneillään olevat pelit</item>
|
||||
</plurals>
|
||||
<string name="tournStartDate">Turnauksen alkamisaika</string>
|
||||
<string name="numberOfRounds">Kierrosten määrä</string>
|
||||
<string name="numberOfRoundsHelp">Parittomalla kierrosten määrällä värit jakautuvat tasapainoisimmin.</string>
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
<string name="teamBattleOverview">Souboj více týmů, každý hráč získává body pro svůj tým</string>
|
||||
<string name="teamTournament">Týmový turnaj</string>
|
||||
<string name="teamTournamentOverview">Arena turnaj, ke kterému se mohou přidat pouze členová vašeho týmu</string>
|
||||
<string name="swissTournamentOverview">Švýcarský turnaj, ke kterému se mohou připojit pouze členové vašeho týmu</string>
|
||||
<string name="messageAllMembers">Zpráva všem členům</string>
|
||||
<string name="messageAllMembersOverview">Poslat soukromou zprávu každému členovi týmu</string>
|
||||
<string name="messageAllMembersLongDescription">Poslat soukromou zprávu VŠEM členům týmu.
|
||||
|
|
Loading…
Reference in New Issue