From fa68487d45d8cf6bb3082ef05b6f3376b6da4abe Mon Sep 17 00:00:00 2001 From: romnzs Date: Tue, 22 Jun 2021 21:28:09 +0300 Subject: [PATCH 01/64] Rethink coordinate transitions --- app/views/coordinate.scala | 6 ++++-- ui/site/css/_coordinate.scss | 31 ++++++++++++++++++++----------- ui/site/src/coordinate.ts | 19 +++++++++---------- 3 files changed, 33 insertions(+), 23 deletions(-) diff --git a/app/views/coordinate.scala b/app/views/coordinate.scala index f7fd45c846..b392ee3569 100644 --- a/app/views/coordinate.scala +++ b/app/views/coordinate.scala @@ -75,8 +75,10 @@ object coordinate { ), div(cls := "coord-trainer__board main-board")( svgTag(cls := "coords-svg", viewBoxAttr := "0 0 100 100")( - textTag(cls := "coord current-coord"), - textTag(cls := "coord next-coord") + textTag(cls := "coord coord_resolved"), + textTag(cls := "coord coord_current"), + textTag(cls := "coord coord_next"), + textTag(cls := "coord coord_new") ), chessgroundBoard ), diff --git a/ui/site/css/_coordinate.scss b/ui/site/css/_coordinate.scss index 9fad90f138..ab7d13e32d 100644 --- a/ui/site/css/_coordinate.scss +++ b/ui/site/css/_coordinate.scss @@ -135,18 +135,27 @@ $mq-col3: $mq-x-large; font-weight: bold; text-shadow: 0 10px 10px #444; - &.current-coord { - fill: #fff; - opacity: 0.8; - font-size: 30px; - transform: translate(22px, 60px); + @mixin coord($fill, $opacity, $font-size, $translate-x, $translate-y) { + fill: $fill; + opacity: $opacity; + font-size: $font-size; + transform: translate($translate-x, $translate-y); } - &.next-coord { - fill: #eee; - opacity: 0.7; - font-size: 12px; - transform: translate(64px, 64px); + &_resolved { + @include coord(#fff, 0, 30px, -8px, 60px); + } + + &_current { + @include coord(#fff, 0.8, 30px, 22px, 60px); + } + + &_next { + @include coord(#eee, 0.7, 12px, 64px, 64px); + } + + &_new { + @include coord(#eee, 0, 12px, 76px, 64px); } } } @@ -181,7 +190,7 @@ $mq-col3: $mq-x-large; color: $c-wrong !important; } - .current-coord { + .coord_current { fill: $c-wrong !important; } } diff --git a/ui/site/src/coordinate.ts b/ui/site/src/coordinate.ts index 9ebd8bd190..a7609afc25 100644 --- a/ui/site/src/coordinate.ts +++ b/ui/site/src/coordinate.ts @@ -140,18 +140,17 @@ lichess.load.then(() => { ); }; - const currentCoordEl = function () { - return $coordsSvg.find('.current-coord'); - }; - - const nextCoordEl = function () { - return $coordsSvg.find('.next-coord'); - }; + const resolvedCoordEl = () => $coordsSvg.find('.coord_resolved'); + const currentCoordEl = () => $coordsSvg.find('.coord_current'); + const nextCoordEl = () => $coordsSvg.find('.coord_next'); + const newCoordEl = () => $coordsSvg.find('.coord_new'); const advanceCoords = function () { - $coords.toggleClass('current-coord').toggleClass('next-coord'); - const currentCoordValue = currentCoordEl().text(); - nextCoordEl().text(newCoord(currentCoordValue)); + const resolved = resolvedCoordEl().remove(); + currentCoordEl().removeClass('coord_current').addClass('coord_resolved'); + nextCoordEl().removeClass('coord_next').addClass('coord_current'); + newCoordEl().text(newCoord(currentCoordEl().text())).removeClass('coord_new').addClass('coord_next'); + resolved.text('').removeClass('coord_resolved').addClass('coord_new').appendTo($coordsSvg); }; const stop = function () { From 1c4d7b6f9798cb61aff7c9a06a6bb78d364a26ee Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Wed, 23 Jun 2021 21:16:49 +0200 Subject: [PATCH 02/64] Display overlong names better --- ui/chat/src/util.ts | 2 +- ui/common/css/component/_mini-game.scss | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ui/chat/src/util.ts b/ui/chat/src/util.ts index bb03153fda..8456666908 100644 --- a/ui/chat/src/util.ts +++ b/ui/chat/src/util.ts @@ -1,7 +1,7 @@ import { h, VNode } from 'snabbdom'; export function userLink(u: string, title?: string, patron?: boolean): VNode { - const trunc = u.substring(0, 14); + const trunc = u.length > 13 ? u.substring(0, 13) + '…' : u; const line = patron ? h('line.line.patron', { attrs: { diff --git a/ui/common/css/component/_mini-game.scss b/ui/common/css/component/_mini-game.scss index 510d5ecd4f..da1d037953 100644 --- a/ui/common/css/component/_mini-game.scss +++ b/ui/common/css/component/_mini-game.scss @@ -20,9 +20,16 @@ } &__user { + display: flex; + align-items: baseline; overflow: hidden; } + .name { + overflow: hidden; + text-overflow: ellipsis; + } + .rating { @extend %roboto; @@ -33,7 +40,7 @@ &__clock { @extend %roboto; - padding: 0 1ch; + padding-left: 2ch; &.clock--run { color: $c-accent; From 9dc2be16562277c53695a7e1400351ea5ac8734e Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Thu, 24 Jun 2021 03:43:46 +0200 Subject: [PATCH 03/64] Learn: Don't load chessground twice --- app/views/learn.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/learn.scala b/app/views/learn.scala index 17f8b71ee5..822ad0291e 100644 --- a/app/views/learn.scala +++ b/app/views/learn.scala @@ -33,7 +33,8 @@ object index { url = s"$netBaseUrl${routes.Learn.index}" ) .some, - zoomable = true + zoomable = true, + chessground = false ) { main(id := "learn-app") } From 06dbee3fa6ed3fe6f225b59867d102912ffb7467 Mon Sep 17 00:00:00 2001 From: Albert Ford Date: Thu, 24 Jun 2021 14:17:01 -0600 Subject: [PATCH 04/64] Use keydown instead of keypress for arrow keys --- ui/puzzle/src/plugins/nvui.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/puzzle/src/plugins/nvui.ts b/ui/puzzle/src/plugins/nvui.ts index 500ae2f4e8..9b50dbecdd 100644 --- a/ui/puzzle/src/plugins/nvui.ts +++ b/ui/puzzle/src/plugins/nvui.ts @@ -138,7 +138,7 @@ lichess.PuzzleNVUI = function (redraw: Redraw) { const fenSteps = () => steps().map(step => step.fen); const opponentColor = ctrl.vm.pov === 'white' ? 'black' : 'white'; $board.on('click', selectionHandler(opponentColor, selectSound)); - $board.on('keypress', arrowKeyHandler(ctrl.vm.pov, borderSound)); + $board.on('keydown', arrowKeyHandler(ctrl.vm.pov, borderSound)); $board.on('keypress', boardCommandsHandler()); $buttons.on('keypress', lastCapturedCommandHandler(fenSteps, pieceStyle.get(), prefixStyle.get())); $buttons.on( From c85abe90c3afbc54f8d6a2c8da28af2571e8d542 Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Fri, 25 Jun 2021 01:09:24 +0200 Subject: [PATCH 05/64] Fix promotion overlay and study player alignment --- ui/analyse/css/study/_player.scss | 4 ++-- ui/analyse/src/ground.ts | 1 + ui/chess/css/_promotion.scss | 7 +++++-- ui/puz/src/view/chessground.ts | 1 + ui/puzzle/src/view/chessground.ts | 1 + ui/round/src/ground.ts | 1 + 6 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ui/analyse/css/study/_player.scss b/ui/analyse/css/study/_player.scss index 628e4e4df5..ddb228f240 100644 --- a/ui/analyse/css/study/_player.scss +++ b/ui/analyse/css/study/_player.scss @@ -22,9 +22,9 @@ $player-height: 1.6rem; @extend %flex-between-nowrap, %metal, %box-shadow; position: absolute; - left: 0; right: 0; font-weight: bold; + width: var(--cg-width, 100%); height: $player-height; white-space: nowrap; @@ -37,7 +37,7 @@ $player-height: 1.6rem; &-bot { @extend %box-radius-bottom; - bottom: #{-$player-height}; + top: var(--cg-height, 100%); } .left { diff --git a/ui/analyse/src/ground.ts b/ui/analyse/src/ground.ts index 24d6b93ef8..b74a013e7e 100644 --- a/ui/analyse/src/ground.ts +++ b/ui/analyse/src/ground.ts @@ -52,6 +52,7 @@ export function makeConfig(ctrl: AnalyseCtrl): CgConfig { orientation: ctrl.bottomColor(), coordinates: pref.coords !== Prefs.Coords.Hidden && !ctrl.embed, addPieceZIndex: pref.is3d, + addDimensionsCssVars: true, viewOnly: !!ctrl.embed, movable: { free: false, diff --git a/ui/chess/css/_promotion.scss b/ui/chess/css/_promotion.scss index b0d0451d30..f3c8034ed7 100644 --- a/ui/chess/css/_promotion.scss +++ b/ui/chess/css/_promotion.scss @@ -1,9 +1,12 @@ #promotion-choice { - @extend %abs-100; - background: fade-out($c-bg-page, 0.3); z-index: z('cg__promotion'); + position: absolute; + width: var(--cg-width, 100%); + height: var(--cg-height, 100%); + right: 0; + square { cursor: pointer; border-radius: 50%; diff --git a/ui/puz/src/view/chessground.ts b/ui/puz/src/view/chessground.ts index 92472b3669..b0d89c97d2 100644 --- a/ui/puz/src/view/chessground.ts +++ b/ui/puz/src/view/chessground.ts @@ -12,6 +12,7 @@ export function makeConfig(opts: CgConfig, pref: PuzPrefs, userMove: UserMove): lastMove: opts.lastMove, coordinates: pref.coords !== Prefs.Coords.Hidden, addPieceZIndex: pref.is3d, + addDimensionsCssVars: true, movable: { free: false, color: opts.movable!.color, diff --git a/ui/puzzle/src/view/chessground.ts b/ui/puzzle/src/view/chessground.ts index 17e1b08e5f..bafabf1109 100644 --- a/ui/puzzle/src/view/chessground.ts +++ b/ui/puzzle/src/view/chessground.ts @@ -24,6 +24,7 @@ export function makeConfig(ctrl: Controller): CgConfig { lastMove: opts.lastMove, coordinates: ctrl.pref.coords !== Prefs.Coords.Hidden, addPieceZIndex: ctrl.pref.is3d, + addDimensionsCssVars: true, movable: { free: false, color: opts.movable!.color, diff --git a/ui/round/src/ground.ts b/ui/round/src/ground.ts index bb1e09a9c0..974e0cdd82 100644 --- a/ui/round/src/ground.ts +++ b/ui/round/src/ground.ts @@ -23,6 +23,7 @@ export function makeConfig(ctrl: RoundController): Config { check: !!step.check, coordinates: data.pref.coords !== Prefs.Coords.Hidden, addPieceZIndex: ctrl.data.pref.is3d, + addDimensionsCssVars: true, highlight: { lastMove: data.pref.highlight, check: data.pref.highlight, From bd60137a10e079a02a52af951582ae6d90a35397 Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Fri, 25 Jun 2021 01:36:27 +0200 Subject: [PATCH 06/64] More swiss translations --- app/views/swiss/bits.scala | 18 +++++++++--------- app/views/swiss/side.scala | 3 +-- modules/i18n/src/main/I18nKeys.scala | 8 ++++++++ translation/source/swiss.xml | 22 ++++++++++++++++++++++ ui/swiss/src/view/header.ts | 4 ++-- ui/swiss/src/view/main.ts | 2 +- 6 files changed, 43 insertions(+), 14 deletions(-) diff --git a/app/views/swiss/bits.scala b/app/views/swiss/bits.scala index 325462c85e..34cc747cd7 100644 --- a/app/views/swiss/bits.scala +++ b/app/views/swiss/bits.scala @@ -72,15 +72,11 @@ object bits { def showInterval(s: Swiss): Frag = s.settings.dailyInterval match { - case Some(1) => frag("One round per day") - case Some(d) => frag(s"One round every $d days") - case None if s.settings.manualRounds => frag("Rounds are started manually") + case Some(d) => trans.swiss.oneRoundEveryXDays.pluralSame(d) + case None if s.settings.manualRounds => trans.swiss.roundsAreStartedManually() case None => - frag( - if (s.settings.intervalSeconds < 60) pluralize("second", s.settings.intervalSeconds) - else pluralize("minute", s.settings.intervalSeconds / 60), - " between rounds" - ) + if (s.settings.intervalSeconds < 60) trans.swiss.xSecondsBetweenRounds.pluralSame(s.settings.intervalSeconds) + else trans.swiss.xMinutesBetweenRounds.pluralSame(s.settings.intervalSeconds / 60) } def jsI18n(implicit ctx: Context) = i18nJsObject(i18nKeys) @@ -102,6 +98,10 @@ object bits { trans.averageOpponent, trans.tournamentComplete, trans.password, - trans.swiss.viewAllXRounds + trans.swiss.viewAllXRounds, + trans.swiss.ongoingGames, + trans.swiss.startingIn, + trans.swiss.nextRound, + trans.team.joinTeam, ).map(_.key) } diff --git a/app/views/swiss/side.scala b/app/views/swiss/side.scala index 753a89671a..1332cef7fa 100644 --- a/app/views/swiss/side.scala +++ b/app/views/swiss/side.scala @@ -33,8 +33,7 @@ object side { if (s.settings.rated) trans.ratedTournament() else trans.casualTournament() ), p( - span(cls := "swiss__meta__round")(s"${s.round}/${s.settings.nbRounds}"), - " rounds", + span(cls := "swiss__meta__round")(trans.swiss.nbRounds.plural(s.settings.nbRounds, s"${s.round}/${s.settings.nbRounds}")), separator, a(href := routes.Swiss.home)("Swiss"), (isGranted(_.ManageTournament) || (ctx.userId.has(s.createdBy) && !s.isFinished)) option frag( diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index d2559fb028..499cb7ee87 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -1842,7 +1842,15 @@ val `lagCompensationExplanation` = new I18nKey("lag:lagCompensationExplanation") object swiss { val `swissTournaments` = new I18nKey("swiss:swissTournaments") +val `roundsAreStartedManually` = new I18nKey("swiss:roundsAreStartedManually") +val `startingIn` = new I18nKey("swiss:startingIn") +val `nextRound` = new I18nKey("swiss:nextRound") val `viewAllXRounds` = new I18nKey("swiss:viewAllXRounds") +val `nbRounds` = new I18nKey("swiss:nbRounds") +val `oneRoundEveryXDays` = new I18nKey("swiss:oneRoundEveryXDays") +val `xSecondsBetweenRounds` = new I18nKey("swiss:xSecondsBetweenRounds") +val `xMinutesBetweenRounds` = new I18nKey("swiss:xMinutesBetweenRounds") +val `ongoingGames` = new I18nKey("swiss:ongoingGames") } object puzzle { diff --git a/translation/source/swiss.xml b/translation/source/swiss.xml index 65e7602582..b85e1531f3 100644 --- a/translation/source/swiss.xml +++ b/translation/source/swiss.xml @@ -5,4 +5,26 @@ View the round View all %s rounds + + %s rounds + + + One round per day + One round every %s days + + Rounds are started manually + + %s second between rounds + %s seconds between rounds + + + %s minunte between rounds + %s minutes between rounds + + Starting in + Next round + + Ongoing game + Ongoing games + diff --git a/ui/swiss/src/view/header.ts b/ui/swiss/src/view/header.ts index c4f43efb4c..0114fb12d1 100644 --- a/ui/swiss/src/view/header.ts +++ b/ui/swiss/src/view/header.ts @@ -27,7 +27,7 @@ function clock(ctrl: SwissCtrl): VNode | undefined { }), ]); return h(`div.clock.clock-created.time-cache-${next.at}`, [ - h('span.shy', ctrl.data.status == 'created' ? 'Starting in' : 'Next round'), + h('span.shy', ctrl.data.status == 'created' ? ctrl.trans.noarg('startingIn') : ctrl.trans.noarg('nextRound')), h('span.time.text', { hook: startClock(next.in + 1), }), @@ -36,7 +36,7 @@ function clock(ctrl: SwissCtrl): VNode | undefined { function ongoing(ctrl: SwissCtrl): VNode | undefined { const nb = ctrl.data.nbOngoing; - return nb ? h('div.ongoing', [h('span.nb', [nb]), h('span.shy', 'Ongoing games')]) : undefined; + return nb ? h('div.ongoing', [h('span.nb', [nb]), h('span.shy', ctrl.trans.plural('ongoingGames', nb))]) : undefined; } export default function (ctrl: SwissCtrl): VNode { diff --git a/ui/swiss/src/view/main.ts b/ui/swiss/src/view/main.ts index b228b95d7a..b58bee04da 100644 --- a/ui/swiss/src/view/main.ts +++ b/ui/swiss/src/view/main.ts @@ -150,7 +150,7 @@ function joinButton(ctrl: SwissCtrl): VNode | undefined { 'data-icon': '', }, }, - 'Join the team' + ctrl.trans.noarg('joinTeam') ); if (d.canJoin) From 502b19c6bb16b3c230d4136040e752378371e073 Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Fri, 25 Jun 2021 06:31:41 +0200 Subject: [PATCH 07/64] Add 'implicit lang' --- app/views/swiss/bits.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/swiss/bits.scala b/app/views/swiss/bits.scala index 34cc747cd7..d06e8c19d9 100644 --- a/app/views/swiss/bits.scala +++ b/app/views/swiss/bits.scala @@ -5,6 +5,7 @@ import lila.app.templating.Environment._ import lila.app.ui.ScalatagsTemplate._ import lila.i18n.{ I18nKeys => trans } import lila.swiss.Swiss +import play.api.i18n.Lang import controllers.routes @@ -70,7 +71,7 @@ object bits { ) ) - def showInterval(s: Swiss): Frag = + def showInterval(s: Swiss)(implicit lang: Lang): Frag = s.settings.dailyInterval match { case Some(d) => trans.swiss.oneRoundEveryXDays.pluralSame(d) case None if s.settings.manualRounds => trans.swiss.roundsAreStartedManually() From ae27830cfd8af08234a3b506854745fb0fc38886 Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Fri, 25 Jun 2021 08:23:09 +0200 Subject: [PATCH 08/64] Show game result in zen mode --- ui/round/css/_moves.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/round/css/_moves.scss b/ui/round/css/_moves.scss index 80e5e1fc57..a7f0908409 100644 --- a/ui/round/css/_moves.scss +++ b/ui/round/css/_moves.scss @@ -1,4 +1,4 @@ -#{$moves-tag} { +#{$moves-tag} > :not(.result-wrap) { @extend %zen; } From aedf082825f321256e4de8039b9e5a358058cd11 Mon Sep 17 00:00:00 2001 From: Scala Steward Date: Fri, 25 Jun 2021 10:05:49 +0200 Subject: [PATCH 09/64] Update specs2-core to 4.12.2 --- project/Dependencies.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 75d1053355..b7f8626f3d 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -22,7 +22,7 @@ object Dependencies { val autoconfig = "io.methvin.play" %% "autoconfig-macros" % "0.3.2" % "provided" val scalatest = "org.scalatest" %% "scalatest" % "3.1.0" % Test val uaparser = "org.uaparser" %% "uap-scala" % "0.13.0" - val specs2 = "org.specs2" %% "specs2-core" % "4.12.1" % Test + val specs2 = "org.specs2" %% "specs2-core" % "4.12.2" % Test val apacheText = "org.apache.commons" % "commons-text" % "1.9" val bloomFilter = "com.github.alexandrnikitin" %% "bloom-filter" % "0.13.1" From c3f7ffb54c52e22897c4f4c121205a4a82a00631 Mon Sep 17 00:00:00 2001 From: kraktus <56031107+kraktus@users.noreply.github.com> Date: Fri, 25 Jun 2021 13:22:04 +0200 Subject: [PATCH 10/64] Fix rating graph not showing Reload profile when switching to activity tab after clicking on `Advanced search` Match behavior with all the games button (all, rated, etc.) --- ui/site/src/user.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/ui/site/src/user.ts b/ui/site/src/user.ts index fa0ff58646..267a6a5d25 100644 --- a/ui/site/src/user.ts +++ b/ui/site/src/user.ts @@ -51,6 +51,7 @@ lichess.load.then(() => { window.InfiniteScroll('.infinite-scroll'); }); $angles.on('click', 'a', function (this: HTMLAnchorElement) { + if ($('#games .to-search').hasClass('active')) return true; $angles.find('.active').removeClass('active'); $(this).addClass('active'); browseTo(this.href); From 2f373fac72c9e9ce83827414d55f06cd1f9ae989 Mon Sep 17 00:00:00 2001 From: romnzs Date: Fri, 25 Jun 2021 15:02:46 +0300 Subject: [PATCH 11/64] Adjust coordinate css class names --- app/views/coordinate.scala | 8 ++++---- ui/site/css/_coordinate.scss | 10 +++++----- ui/site/src/coordinate.ts | 16 ++++++++-------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/app/views/coordinate.scala b/app/views/coordinate.scala index b392ee3569..8702052336 100644 --- a/app/views/coordinate.scala +++ b/app/views/coordinate.scala @@ -75,10 +75,10 @@ object coordinate { ), div(cls := "coord-trainer__board main-board")( svgTag(cls := "coords-svg", viewBoxAttr := "0 0 100 100")( - textTag(cls := "coord coord_resolved"), - textTag(cls := "coord coord_current"), - textTag(cls := "coord coord_next"), - textTag(cls := "coord coord_new") + textTag(cls := "coord coord--resolved"), + textTag(cls := "coord coord--current"), + textTag(cls := "coord coord--next"), + textTag(cls := "coord coord--new") ), chessgroundBoard ), diff --git a/ui/site/css/_coordinate.scss b/ui/site/css/_coordinate.scss index ab7d13e32d..58695bed72 100644 --- a/ui/site/css/_coordinate.scss +++ b/ui/site/css/_coordinate.scss @@ -142,19 +142,19 @@ $mq-col3: $mq-x-large; transform: translate($translate-x, $translate-y); } - &_resolved { + &--resolved { @include coord(#fff, 0, 30px, -8px, 60px); } - &_current { + &--current { @include coord(#fff, 0.8, 30px, 22px, 60px); } - &_next { + &--next { @include coord(#eee, 0.7, 12px, 64px, 64px); } - &_new { + &--new { @include coord(#eee, 0, 12px, 76px, 64px); } } @@ -190,7 +190,7 @@ $mq-col3: $mq-x-large; color: $c-wrong !important; } - .coord_current { + .coord--current { fill: $c-wrong !important; } } diff --git a/ui/site/src/coordinate.ts b/ui/site/src/coordinate.ts index a7609afc25..f8e0250473 100644 --- a/ui/site/src/coordinate.ts +++ b/ui/site/src/coordinate.ts @@ -140,17 +140,17 @@ lichess.load.then(() => { ); }; - const resolvedCoordEl = () => $coordsSvg.find('.coord_resolved'); - const currentCoordEl = () => $coordsSvg.find('.coord_current'); - const nextCoordEl = () => $coordsSvg.find('.coord_next'); - const newCoordEl = () => $coordsSvg.find('.coord_new'); + const resolvedCoordEl = () => $coordsSvg.find('.coord--resolved'); + const currentCoordEl = () => $coordsSvg.find('.coord--current'); + const nextCoordEl = () => $coordsSvg.find('.coord--next'); + const newCoordEl = () => $coordsSvg.find('.coord--new'); const advanceCoords = function () { const resolved = resolvedCoordEl().remove(); - currentCoordEl().removeClass('coord_current').addClass('coord_resolved'); - nextCoordEl().removeClass('coord_next').addClass('coord_current'); - newCoordEl().text(newCoord(currentCoordEl().text())).removeClass('coord_new').addClass('coord_next'); - resolved.text('').removeClass('coord_resolved').addClass('coord_new').appendTo($coordsSvg); + currentCoordEl().removeClass('coord--current').addClass('coord--resolved'); + nextCoordEl().removeClass('coord--next').addClass('coord--current'); + newCoordEl().text(newCoord(currentCoordEl().text())).removeClass('coord--new').addClass('coord--next'); + resolved.text('').removeClass('coord--resolved').addClass('coord--new').appendTo($coordsSvg); }; const stop = function () { From c2c51dc9269d7e98654689a41601030fa8e3d2b6 Mon Sep 17 00:00:00 2001 From: kraktus <56031107+kraktus@users.noreply.github.com> Date: Fri, 25 Jun 2021 18:11:17 +0200 Subject: [PATCH 12/64] Add a link to Appeal in the inquiry bar when in an appeal inquiry. --- app/views/mod/inquiry.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/mod/inquiry.scala b/app/views/mod/inquiry.scala index 34ed3271c5..ebde688bdf 100644 --- a/app/views/mod/inquiry.scala +++ b/app/views/mod/inquiry.scala @@ -139,7 +139,8 @@ object inquiry { ) }, isGranted(_.Shadowban) option - a(href := routes.Mod.communicationPublic(in.user.id))("View", br, "Comms") + a(href := routes.Mod.communicationPublic(in.user.id))("View", br, "Comms"), + in.report.isAppeal option a(href := routes.Appeal.show(in.user.id))("View", br, "Appeal") ), div(cls := "actions")( isGranted(_.ModMessage) option div(cls := "dropper warn buttons")( From 1f92cdd1dff255c3e097a9026f53a4d36a1e84b9 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Fri, 25 Jun 2021 18:17:45 +0200 Subject: [PATCH 13/64] adjust mod logging for zulip --- modules/irc/src/main/IrcApi.scala | 2 +- modules/mod/src/main/ModlogApi.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/irc/src/main/IrcApi.scala b/modules/irc/src/main/IrcApi.scala index 838e377a07..c40a62b4d9 100644 --- a/modules/irc/src/main/IrcApi.scala +++ b/modules/irc/src/main/IrcApi.scala @@ -113,7 +113,7 @@ final class IrcApi( text = s":$icon: ${slackdown.linkifyUsers(text)}", channel = s"tavern-monitor-${tpe.toString.toLowerCase}" ) - val md = s":$icon: ${markdown.linkifyUsers(text)}" + val md = s"${markdown.userLink(mod.name)} :$icon: ${markdown.linkifyUsers(text)}" slack(msg) >> slack(msg.copy(channel = SlackClient.rooms.tavernMonitorAll)) >> zulip.mod(s"monitor-${tpe.toString.toLowerCase}")(md) >> diff --git a/modules/mod/src/main/ModlogApi.scala b/modules/mod/src/main/ModlogApi.scala index 0b344947de..c014e46177 100644 --- a/modules/mod/src/main/ModlogApi.scala +++ b/modules/mod/src/main/ModlogApi.scala @@ -278,7 +278,7 @@ final class ModlogApi(repo: ModlogRepo, userRepo: UserRepo, ircApi: IrcApi)(impl import lila.mod.{ Modlog => M } val icon = m.action match { case M.alt | M.engine | M.booster | M.troll | M.closeAccount => "thorhammer" - case M.unalt | M.unengine | M.unbooster | M.untroll | M.reopenAccount => "large_blue_circle" + case M.unalt | M.unengine | M.unbooster | M.untroll | M.reopenAccount => "blue_circle" case M.deletePost | M.deleteTeam | M.terminateTournament => "x" case M.chatTimeout => "hourglass_flowing_sand" case M.closeTopic | M.disableTeam => "lock" From cdffb9ed00fb75de5d771da28f45687c3315a131 Mon Sep 17 00:00:00 2001 From: Konstantinos07 Date: Fri, 25 Jun 2021 22:18:06 +0300 Subject: [PATCH 14/64] adding missing simul form translations --- app/views/simul/form.scala | 22 +++++++++++----------- modules/i18n/src/main/I18nKeys.scala | 7 +++++++ translation/source/site.xml | 7 +++++++ 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/app/views/simul/form.scala b/app/views/simul/form.scala index d819a39bf7..6dfa903862 100644 --- a/app/views/simul/form.scala +++ b/app/views/simul/form.scala @@ -55,7 +55,7 @@ object form { ), postForm(cls := "terminate", action := routes.Simul.abort(simul.id))( submitButton(dataIcon := "", cls := "text button button-red confirm")( - "Cancel the simul" + trans.cancelSimul() ) ) ) @@ -94,11 +94,11 @@ object form { form3.split( form3.group( form("clockTime"), - raw("Clock initial time"), + trans.clockInitialTime(), help = trans.simulClockHint().some, half = true )(form3.select(_, clockTimeChoices)), - form3.group(form("clockIncrement"), raw("Clock increment"), half = true)( + form3.group(form("clockIncrement"), trans.clockIncrement(), half = true)( form3.select(_, clockIncrementChoices) ) ), @@ -111,14 +111,14 @@ object form { )( form3.select(_, clockExtraChoices) ), - form3.group(form("color"), raw("Host color for each game"), half = true)( + form3.group(form("color"), trans.simulHostcolor(), half = true)( form3.select(_, colorChoices) ) ), form3.split( teams.nonEmpty option - form3.group(form("team"), raw("Only members of team"), half = true)( - form3.select(_, List(("", "No Restriction")) ::: teams.map(_.pair)) + form3.group(form("team"), trans.onlyMembersOfTeam(), half = true)( + form3.select(_, List(("", trans.noRestriction.txt())) ::: teams.map(_.pair)) ), form3.group( form("position"), @@ -130,18 +130,18 @@ object form { ), form3.group( form("estimatedStartAt"), - frag("Estimated start time"), + trans.estimatedStart(), half = true )(form3.flatpickr(_)), form3.group( form("text"), - raw("Simul description"), - help = frag("Anything you want to tell the participants?").some + trans.simulDescription(), + help = trans.simulDescriptionHelp().some )(form3.textarea(_)(rows := 10)), ctx.me.exists(_.canBeFeatured) option form3.checkbox( form("featured"), - frag("Feature on lichess.org/simul"), - help = frag("Show your simul to everyone on lichess.org/simul. Disable for private simuls.").some + trans.simulFeatured("lichess.org/simul"), + help = trans.simulFeaturedHelp("lichess.org/simul").some ) ) } diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index 92bf81fe9b..975466f028 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -765,6 +765,13 @@ val `onlyTitled` = new I18nKey("onlyTitled") val `onlyTitledHelp` = new I18nKey("onlyTitledHelp") val `hasChatHelp` = new I18nKey("hasChatHelp") val `positionInputHelp` = new I18nKey("positionInputHelp") +val `cancelSimul` = new I18nKey("cancelSimul") +val `simulHostcolor` = new I18nKey("simulHostcolor") +val `estimatedStart` = new I18nKey("estimatedStart") +val `simulFeatured` = new I18nKey("simulFeatured") +val `simulFeaturedHelp` = new I18nKey("simulFeaturedHelp") +val `simulDescription` = new I18nKey("simulDescription") +val `simulDescriptionHelp` = new I18nKey("simulDescriptionHelp") object arena { val `arenaTournaments` = new I18nKey("arena:arenaTournaments") diff --git a/translation/source/site.xml b/translation/source/site.xml index 1c1aac910a..183e84c9cb 100644 --- a/translation/source/site.xml +++ b/translation/source/site.xml @@ -886,4 +886,11 @@ and impact players ratings It only works for standard games, not with variants. You can use the %s to generate a FEN position, then paste it here. Leave empty to start games from the normal initial position. +Cancel the simul +Host color for each game +Estimated start time +Feature on %s +Show your simul to everyone on %s. Disable for private simuls. +Simul description +Anything you want to tell the participants? From 5e69614f6d4cf2612b8ceea6e113df2ba81eec47 Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Sat, 26 Jun 2021 05:20:15 +0200 Subject: [PATCH 15/64] Align bottom analysis clock --- ui/analyse/css/_player-clock.scss | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ui/analyse/css/_player-clock.scss b/ui/analyse/css/_player-clock.scss index 2d25139633..5a3662254b 100644 --- a/ui/analyse/css/_player-clock.scss +++ b/ui/analyse/css/_player-clock.scss @@ -19,10 +19,8 @@ $clock-height: 20px; &.bottom { @extend %box-radius-bottom; - bottom: #{-$clock-height}; - z-index: 1; - - // over the board coords + top: var(--cg-height, 100%); + z-index: 1; // over the board coords } &.active { From 3dd3c9d42481235d9b34fa20d0c3d0ecfcfa41f7 Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Sat, 26 Jun 2021 05:26:48 +0200 Subject: [PATCH 16/64] Fix aclp chart when resizing with analysis off --- ui/analyse/src/serverSideUnderboard.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/ui/analyse/src/serverSideUnderboard.ts b/ui/analyse/src/serverSideUnderboard.ts index cb75db3ef1..b6a6266d80 100644 --- a/ui/analyse/src/serverSideUnderboard.ts +++ b/ui/analyse/src/serverSideUnderboard.ts @@ -33,6 +33,7 @@ export default function (element: HTMLElement, ctrl: AnalyseCtrl) { setTimeout(function () { (v ? $menu.find('[data-panel="computer-analysis"]') : $menu.find('span:eq(1)')).trigger('mousedown'); }, 50); + if (v) $('#acpl-chart').each((_, e) => (e as HighchartsHTMLElement).highcharts.reflow()); }); lichess.pubsub.on('analysis.change', (fen: Fen, _, mainlinePly: Ply | false) => { const $chart = $('#acpl-chart'); From 33f9b6074dc590141c8bf592de3ce1f066d442f4 Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Sat, 26 Jun 2021 06:22:27 +0200 Subject: [PATCH 17/64] Prefer ceval arrow over server eval --- ui/analyse/src/autoShape.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ui/analyse/src/autoShape.ts b/ui/analyse/src/autoShape.ts index 9a4ec4266b..f4625234c8 100644 --- a/ui/analyse/src/autoShape.ts +++ b/ui/analyse/src/autoShape.ts @@ -69,8 +69,7 @@ export function compute(ctrl: AnalyseCtrl): DrawShape[] { if (ctrl.showAutoShapes() && ctrl.showComputer()) { if (nEval.best) shapes = shapes.concat(makeShapesFromUci(rcolor, nEval.best, 'paleGreen')); if (!hovering && parseInt(instance.multiPv())) { - let nextBest = ctrl.nextNodeBest(); - if (!nextBest && instance.enabled() && nCeval) nextBest = nCeval.pvs[0].moves[0]; + const nextBest = instance.enabled() && nCeval ? nCeval.pvs[0].moves[0] : ctrl.nextNodeBest(); if (nextBest) shapes = shapes.concat(makeShapesFromUci(color, nextBest, 'paleBlue')); if (instance.enabled() && nCeval && nCeval.pvs[1] && !(ctrl.threatMode() && nThreat && nThreat.pvs.length > 2)) { nCeval.pvs.forEach(function (pv) { From 51d2706de55449b95158759362275c9b768824a4 Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Sat, 26 Jun 2021 09:34:51 +0200 Subject: [PATCH 18/64] Fix setup fen validation --- ui/lobby/css/_setup.scss | 2 -- ui/lobby/src/setup.ts | 10 ++++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ui/lobby/css/_setup.scss b/ui/lobby/css/_setup.scss index cab0bf35c8..1eff0ecf5b 100644 --- a/ui/lobby/css/_setup.scss +++ b/ui/lobby/css/_setup.scss @@ -66,8 +66,6 @@ $c-slider: $c-setup; } .fen_position { - display: none; - .board_editor { display: block; width: 50%; diff --git a/ui/lobby/src/setup.ts b/ui/lobby/src/setup.ts index d0d1ecd50c..15587d4872 100644 --- a/ui/lobby/src/setup.ts +++ b/ui/lobby/src/setup.ts @@ -162,9 +162,10 @@ export default class Setup { } $rated.prop('disabled', !!cantBeRated).siblings('label').toggleClass('disabled', cantBeRated); const timeOk = timeMode != '1' || limit > 0 || inc > 0, - aiOk = typ != 'ai' || variantId != '3' || limit >= 1 || timeMode != '1'; + aiOk = typ != 'ai' || variantId != '3' || limit >= 1 || timeMode != '1', + fenOk = variantId !== '3' || $fenInput.hasClass('success'); const disable = ($e: Cash, d: boolean) => $e.prop('disabled', d).toggleClass('disabled', d); - if (timeOk && aiOk) { + if (timeOk && aiOk && fenOk) { disable($submits, false); if (rated && randomColorVariants.includes(variantId)) { disable($submits.filter(':not(.random)'), true); @@ -394,13 +395,13 @@ export default class Setup { $fenPosition.find('a.board_editor').each(function (this: HTMLAnchorElement) { this.href = this.href.replace(/editor\/.+$/, 'editor/' + fen); }); - $submits.removeClass('nope'); + toggleButtons(); lichess.contentLoaded(); }, _ => { $fenInput.addClass('failure'); $fenPosition.find('.preview').html(''); - $submits.addClass('nope'); + toggleButtons(); } ); } @@ -415,6 +416,7 @@ export default class Setup { $modeChoicesWrap.toggle(!isFen); if (isFen) { $casual.trigger('click'); + validateFen(); requestAnimationFrame(() => document.body.dispatchEvent(new Event('chessground.resize'))); } showRating(); From 1b34095b97abd6dad1b4d2355e63e5529fa1cd2c Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Sat, 26 Jun 2021 17:01:39 +0200 Subject: [PATCH 19/64] scalafmt --- app/views/simul/form.scala | 3 ++- app/views/swiss/form.scala | 3 ++- app/views/tournament/form.scala | 5 +++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/views/simul/form.scala b/app/views/simul/form.scala index d819a39bf7..85bb192c88 100644 --- a/app/views/simul/form.scala +++ b/app/views/simul/form.scala @@ -125,7 +125,8 @@ object form { trans.startPosition(), klass = "position", half = true, - help = trans.positionInputHelp(a(href := routes.Editor.index, targetBlank)(trans.boardEditor.txt())).some + help = + trans.positionInputHelp(a(href := routes.Editor.index, targetBlank)(trans.boardEditor.txt())).some )(form3.input(_)) ), form3.group( diff --git a/app/views/swiss/form.scala b/app/views/swiss/form.scala index 7fbc137a82..7c9ecaa481 100644 --- a/app/views/swiss/form.scala +++ b/app/views/swiss/form.scala @@ -185,7 +185,8 @@ final private class SwissFields(form: Form[_], swiss: Option[Swiss])(implicit ct trans.startPosition(), klass = "position", half = true, - help = trans.positionInputHelp(a(href := routes.Editor.index, targetBlank)(trans.boardEditor.txt())).some + help = + trans.positionInputHelp(a(href := routes.Editor.index, targetBlank)(trans.boardEditor.txt())).some )(form3.input(_)) def startsAt = form3.group( diff --git a/app/views/tournament/form.scala b/app/views/tournament/form.scala index 5a6f0f5ad0..7935bc592e 100644 --- a/app/views/tournament/form.scala +++ b/app/views/tournament/form.scala @@ -86,7 +86,7 @@ object form { ), postForm(cls := "terminate", action := routes.Tournament.terminate(tour.id))( submitButton(dataIcon := "", cls := "text button button-red confirm")( - trans.cancelTournament() + trans.cancelTournament() ) ) ) @@ -234,7 +234,8 @@ final private class TourFields(form: Form[_], tour: Option[Tournament])(implicit trans.startPosition(), klass = "position", half = true, - help = trans.positionInputHelp(a(href := routes.Editor.index, targetBlank)(trans.boardEditor.txt())).some + help = + trans.positionInputHelp(a(href := routes.Editor.index, targetBlank)(trans.boardEditor.txt())).some )( views.html.tournament.form.startingPosition(_, tour) ) From 356a5fde9c845075341418f2e651b5a2881d1b71 Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Sat, 26 Jun 2021 17:02:32 +0200 Subject: [PATCH 20/64] enforce minimum oauth code_verifier length --- modules/oauth/src/main/AccessTokenRequest.scala | 2 +- modules/oauth/src/main/Protocol.scala | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/oauth/src/main/AccessTokenRequest.scala b/modules/oauth/src/main/AccessTokenRequest.scala index 974dbc8177..8b12693d86 100644 --- a/modules/oauth/src/main/AccessTokenRequest.scala +++ b/modules/oauth/src/main/AccessTokenRequest.scala @@ -17,7 +17,7 @@ object AccessTokenRequest { for { grantType <- grantType.toValid(Error.GrantTypeRequired).andThen(GrantType.from) code <- code.map(AuthorizationCode.apply).toValid(Error.CodeRequired) - codeVerifier <- codeVerifier.map(CodeVerifier.apply).toValid(Error.CodeVerifierRequired) + codeVerifier <- codeVerifier.toValid(Error.CodeVerifierRequired).andThen(CodeVerifier.from) redirectUri <- redirectUri.map(UncheckedRedirectUri.apply).toValid(Error.RedirectUriRequired) clientId <- clientId.map(ClientId.apply).toValid(Error.ClientIdRequired) } yield Prepared(grantType, code, codeVerifier, redirectUri, clientId) diff --git a/modules/oauth/src/main/Protocol.scala b/modules/oauth/src/main/Protocol.scala index c44f2deb35..a0dfd75a95 100644 --- a/modules/oauth/src/main/Protocol.scala +++ b/modules/oauth/src/main/Protocol.scala @@ -51,6 +51,13 @@ object Protocol { Base64.getUrlEncoder().withoutPadding().encodeToString(Algo.sha256(value).bytes) ) } + object CodeVerifier { + def from(value: String): Validated[Error, CodeVerifier] = + Validated + .valid(value) + .ensure(Error.CodeVerifierTooShort)(_.size >= 43) + .map(CodeVerifier.apply) + } case class ResponseType() object ResponseType { @@ -136,6 +143,7 @@ object Protocol { case object GrantTypeRequired extends InvalidRequest("grant_type required") case object CodeRequired extends InvalidRequest("code required") case object CodeVerifierRequired extends InvalidRequest("code_verifier required") + case object CodeVerifierTooShort extends InvalidRequest("code_verifier too short") case class InvalidScope(val key: String) extends Error("invalid_scope") { def description = s"invalid scope: ${URLEncoder.encode(key, "UTF-8")}" From 757d4080e3c7d0cad51b223a8286a309cb0a7373 Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Sat, 26 Jun 2021 18:14:26 +0200 Subject: [PATCH 21/64] recommend github to get schemes whitelisted --- modules/oauth/src/main/Protocol.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/oauth/src/main/Protocol.scala b/modules/oauth/src/main/Protocol.scala index a0dfd75a95..97a59eb6ec 100644 --- a/modules/oauth/src/main/Protocol.scala +++ b/modules/oauth/src/main/Protocol.scala @@ -136,7 +136,7 @@ object Protocol { case object RedirectUriRequired extends InvalidRequest("redirect_uri required") case object RedirectUriInvalid extends InvalidRequest("redirect_uri invalid") case object RedirectSchemeNotAllowed - extends InvalidRequest("contact us to get exotic redirect_uri schemes whitelisted") + extends InvalidRequest("open a github issue to get exotic redirect_uri schemes whitelisted") case object ResponseTypeRequired extends InvalidRequest("response_type required") case object CodeChallengeRequired extends InvalidRequest("code_challenge required") case object CodeChallengeMethodRequired extends InvalidRequest("code_challenge_method required") From ea6ca752aae554b5a417bab952ade17ddca519b7 Mon Sep 17 00:00:00 2001 From: Evan Peterson <4epeterson99@gmail.com> Date: Sat, 26 Jun 2021 16:08:20 -0500 Subject: [PATCH 22/64] Updated no rating points awarded contact page to include bot abuse (#9262) * updated no rating points awarded contact page * removed duplicated text in contact.xml --- app/views/site/contact.scala | 6 +++++- modules/i18n/src/main/I18nKeys.scala | 1 + translation/dest/contact/en-US.xml | 1 + translation/source/contact.xml | 1 + 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/views/site/contact.scala b/app/views/site/contact.scala index f941d34776..c2f22410b8 100644 --- a/app/views/site/contact.scala +++ b/app/views/site/contact.scala @@ -205,7 +205,11 @@ object contact { Leaf( "casual", noRatingPoints(), - p(ratedGame()) + frag( + p(ratedGame()), + botRatingAbuse() + ) + ), Leaf( "error-page", diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index 92bf81fe9b..384fdb4a3c 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -1318,6 +1318,7 @@ val `fideMate` = new I18nKey("contact:fideMate") val `knightMate` = new I18nKey("contact:knightMate") val `noRatingPoints` = new I18nKey("contact:noRatingPoints") val `ratedGame` = new I18nKey("contact:ratedGame") +val `botRatingAbuse` = new I18nKey("contact:botRatingAbuse") val `errorPage` = new I18nKey("contact:errorPage") val `reportErrorPage` = new I18nKey("contact:reportErrorPage") val `banAppeal` = new I18nKey("contact:banAppeal") diff --git a/translation/dest/contact/en-US.xml b/translation/dest/contact/en-US.xml index af3911bb77..065d835ea7 100644 --- a/translation/dest/contact/en-US.xml +++ b/translation/dest/contact/en-US.xml @@ -52,6 +52,7 @@ It is possible to checkmate with only a knight or a bishop, if the opponent has more than a king on the board. No rating points were awarded Make sure you played a rated game. Casual games do not affect the players\' ratings. + In certain circumstances when playing against a bot account, a rated game may not award points if it is determined that the player is abusing the bot for rating points. Error page If you faced an error page, you may report it: Appeal for a ban or IP restriction diff --git a/translation/source/contact.xml b/translation/source/contact.xml index 59db2f8fdd..e082b38bfd 100644 --- a/translation/source/contact.xml +++ b/translation/source/contact.xml @@ -52,6 +52,7 @@ It is possible to checkmate with only a knight or a bishop, if the opponent has more than a king on the board. No rating points were awarded Make sure you played a rated game. Casual games do not affect the players ratings. + In certain circumstances when playing against a bot account, a rated game may not award points if it is determined that the player is abusing the bot for rating points. Error page If you faced an error page, you may report it: Appeal for a ban or IP restriction From c7a9dcec6591c4eabd4f061e08628435842b92f2 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sat, 26 Jun 2021 23:17:48 +0200 Subject: [PATCH 23/64] chessground 8.1.0 - for #9240 --- ui/analyse/package.json | 2 +- ui/editor/package.json | 2 +- ui/lobby/package.json | 2 +- ui/puz/package.json | 2 +- ui/puzzle/package.json | 2 +- ui/racer/package.json | 2 +- ui/round/package.json | 2 +- ui/storm/package.json | 2 +- ui/swiss/package.json | 2 +- ui/tournament/package.json | 2 +- yarn.lock | 8 ++++---- 11 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ui/analyse/package.json b/ui/analyse/package.json index 9305232490..c742a15fd8 100644 --- a/ui/analyse/package.json +++ b/ui/analyse/package.json @@ -25,7 +25,7 @@ "ceval": "2.0.0", "chat": "2.0.0", "chess": "2.0.0", - "chessground": "^8.0.0", + "chessground": "^8.1.0", "chessops": "^0.9.0", "common": "2.0.0", "game": "2.0.0", diff --git a/ui/editor/package.json b/ui/editor/package.json index 504f036f14..061e49cdd1 100644 --- a/ui/editor/package.json +++ b/ui/editor/package.json @@ -15,7 +15,7 @@ "@build/rollupProject": "2.0.0" }, "dependencies": { - "chessground": "^8.0.0", + "chessground": "^8.1.0", "chessops": "^0.9.0", "snabbdom": "^3.0.1", "common": "2.0.0" diff --git a/ui/lobby/package.json b/ui/lobby/package.json index c0847c6122..8215031c39 100644 --- a/ui/lobby/package.json +++ b/ui/lobby/package.json @@ -18,7 +18,7 @@ "@types/lichess": "2.0.0" }, "dependencies": { - "chessground": "^8.0.0", + "chessground": "^8.1.0", "common": "2.0.0", "snabbdom": "^3.0.1" }, diff --git a/ui/puz/package.json b/ui/puz/package.json index 0e039b1b5f..dbf68a19a3 100644 --- a/ui/puz/package.json +++ b/ui/puz/package.json @@ -16,7 +16,7 @@ "dependencies": { "chessops": "^0.9.0", "snabbdom": "^3.0.1", - "chessground": "^8.0.0", + "chessground": "^8.1.0", "common": "2.0.0" }, "devDependencies": { diff --git a/ui/puzzle/package.json b/ui/puzzle/package.json index 2ea9867416..d1f2ad9637 100644 --- a/ui/puzzle/package.json +++ b/ui/puzzle/package.json @@ -19,7 +19,7 @@ "dependencies": { "ceval": "2.0.0", "chart.js": "^2.9", - "chessground": "^8.0.0", + "chessground": "^8.1.0", "chessops": "^0.9.0", "common": "2.0.0", "nvui": "2.0.0", diff --git a/ui/racer/package.json b/ui/racer/package.json index e27525a733..49ee3a029d 100644 --- a/ui/racer/package.json +++ b/ui/racer/package.json @@ -17,7 +17,7 @@ }, "dependencies": { "chessops": "^0.9.0", - "chessground": "^8.0.0", + "chessground": "^8.1.0", "snabbdom": "^3.0.1", "common": "2.0.0", "puz": "2.0.0" diff --git a/ui/round/package.json b/ui/round/package.json index 9abc5075b4..4321a8771b 100644 --- a/ui/round/package.json +++ b/ui/round/package.json @@ -18,7 +18,7 @@ "dependencies": { "ab": "https://github.com/lichess-org/ab-stub", "chat": "2.0.0", - "chessground": "^8.0.0", + "chessground": "^8.1.0", "common": "2.0.0", "game": "2.0.0", "nvui": "2.0.0", diff --git a/ui/storm/package.json b/ui/storm/package.json index 60c7400021..6903e5e956 100644 --- a/ui/storm/package.json +++ b/ui/storm/package.json @@ -17,7 +17,7 @@ }, "dependencies": { "chessops": "^0.9.0", - "chessground": "^8.0.0", + "chessground": "^8.1.0", "snabbdom": "^3.0.1", "common": "2.0.0", "puz": "2.0.0" diff --git a/ui/swiss/package.json b/ui/swiss/package.json index 07470709ca..36e8053045 100644 --- a/ui/swiss/package.json +++ b/ui/swiss/package.json @@ -17,7 +17,7 @@ }, "dependencies": { "chat": "2.0.0", - "chessground": "^8.0.0", + "chessground": "^8.1.0", "common": "2.0.0", "game": "2.0.0", "snabbdom": "^3.0.1" diff --git a/ui/tournament/package.json b/ui/tournament/package.json index be120aa4a1..eb2c38511a 100644 --- a/ui/tournament/package.json +++ b/ui/tournament/package.json @@ -17,7 +17,7 @@ }, "dependencies": { "chat": "2.0.0", - "chessground": "^8.0.0", + "chessground": "^8.1.0", "common": "2.0.0", "game": "2.0.0", "snabbdom": "^3.0.1" diff --git a/yarn.lock b/yarn.lock index dff987b3f1..e83779ffd4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -959,10 +959,10 @@ chessground@^4.4: merge "1.2.0" mithril "github:ornicar/mithril.js#v1.0.1" -chessground@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/chessground/-/chessground-8.0.0.tgz#9ed7880d9e2bf51a47d7538c7e13a56dc814f79f" - integrity sha512-p2K918YaJJ5bt6bmqEIcnFms5R7LRYqaR9y2dhtB2iyJJV9V/Tw07Dd67fWmUrnyKfgiX6BNIr7VS4x5DstB3w== +chessground@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/chessground/-/chessground-8.1.0.tgz#dccddd158758d69334458a992a33e0597c34fb9e" + integrity sha512-r2KCqwAqtJ/fTPRQZKlRqY7WAHcPdT7g9/YNXM4zD8jsek0FuXdQ0t5JQ0+9VXbByO2D/lesIqk/bPYY5rN9Fw== chessops@^0.9.0: version "0.9.0" From 767c60cff4e025671e915ae2a318e195aa4a52f5 Mon Sep 17 00:00:00 2001 From: Sam Date: Sat, 26 Jun 2021 23:15:04 +0100 Subject: [PATCH 24/64] Hide eval bar after checkmate in puzzles --- ui/puzzle/src/ctrl.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/puzzle/src/ctrl.ts b/ui/puzzle/src/ctrl.ts index 3808b03214..0bdd91fa23 100644 --- a/ui/puzzle/src/ctrl.ts +++ b/ui/puzzle/src/ctrl.ts @@ -554,7 +554,7 @@ export default function (opts: PuzzleOpts, redraw: Redraw): Controller { userMove, playUci, showEvalGauge() { - return vm.showComputer() && ceval.enabled(); + return vm.showComputer() && ceval.enabled() && !outcome(); }, getOrientation() { return withGround(g => g.state.orientation)!; From deaa86997993a4fb0ceb10931012ff4c57ad2807 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sun, 27 Jun 2021 07:30:22 +0200 Subject: [PATCH 25/64] tweak wording case --- app/views/challenge/theirs.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/challenge/theirs.scala b/app/views/challenge/theirs.scala index 16f0e19eb0..d31e29dcab 100644 --- a/app/views/challenge/theirs.scala +++ b/app/views/challenge/theirs.scala @@ -27,7 +27,7 @@ object theirs { case Status.Created | Status.Offline => frag( h1( - if (c.isOpen) c.name | "Open Challenge" + if (c.isOpen) c.name | "Open challenge" else user.fold[Frag]("Anonymous")(u => frag( From 351e95324685ac6184810410da6abcc57cd8f047 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sun, 27 Jun 2021 09:23:42 +0200 Subject: [PATCH 26/64] refactor markdown - for #9229 --- app/views/base/markdown.scala | 17 ------------- app/views/event.scala | 14 ++++++++++- modules/blog/src/main/BlogTransform.scala | 2 +- modules/clas/src/main/ClasMarkup.scala | 2 +- modules/common/src/main/Markdown.scala | 29 +++++++++++++++++++---- modules/relay/src/main/RelayMarkup.scala | 9 ++++++- 6 files changed, 47 insertions(+), 26 deletions(-) delete mode 100644 app/views/base/markdown.scala diff --git a/app/views/base/markdown.scala b/app/views/base/markdown.scala deleted file mode 100644 index afd38f3029..0000000000 --- a/app/views/base/markdown.scala +++ /dev/null @@ -1,17 +0,0 @@ -package views.html.base - -import com.github.blemale.scaffeine.LoadingCache -import scala.concurrent.duration._ -import lila.app.ui.ScalatagsTemplate._ - -object markdown { - - private val renderer = new lila.common.Markdown - - private val cache: LoadingCache[String, String] = lila.memo.CacheApi.scaffeineNoScheduler - .expireAfterWrite(10 minutes) - .maximumSize(256) - .build(renderer.apply) - - def apply(text: String): Frag = raw(cache get text) -} diff --git a/app/views/event.scala b/app/views/event.scala index 90ebc66f0b..172abbaee7 100644 --- a/app/views/event.scala +++ b/app/views/event.scala @@ -63,7 +63,7 @@ object event { ) ), e.description.map { d => - div(cls := "desc")(views.html.base.markdown(d)) + div(cls := "desc")(markdown(d)) }, if (e.isFinished) p(cls := "desc")("The event is finished.") else if (e.isNow) a(href := e.url, cls := "button button-fat")(trans.eventInProgress()) @@ -76,6 +76,18 @@ object event { ) } + private object markdown { + import scala.concurrent.duration._ + private val renderer = new lila.common.Markdown(table = true, list = true) + private val cache: com.github.blemale.scaffeine.LoadingCache[String, String] = + lila.memo.CacheApi.scaffeineNoScheduler + .expireAfterAccess(10 minutes) + .maximumSize(64) + .build(renderer.apply) + + def apply(text: String): Frag = raw(cache get text) + } + def manager(events: List[Event])(implicit ctx: Context) = { val title = "Event manager" layout(title = title) { diff --git a/modules/blog/src/main/BlogTransform.scala b/modules/blog/src/main/BlogTransform.scala index acff23d4b8..5677ce8b8e 100644 --- a/modules/blog/src/main/BlogTransform.scala +++ b/modules/blog/src/main/BlogTransform.scala @@ -16,7 +16,7 @@ object BlogTransform { private type Text = String private type Html = String - private val renderer = new lila.common.Markdown + private val renderer = new lila.common.Markdown(table = true) private val cache: LoadingCache[Text, Html] = lila.memo.CacheApi.scaffeineNoScheduler .expireAfterWrite(15 minutes) diff --git a/modules/clas/src/main/ClasMarkup.scala b/modules/clas/src/main/ClasMarkup.scala index 4c50b96394..48364a7237 100644 --- a/modules/clas/src/main/ClasMarkup.scala +++ b/modules/clas/src/main/ClasMarkup.scala @@ -6,7 +6,7 @@ import scala.concurrent.duration._ final class ClasMarkup { - private val renderer = new lila.common.Markdown(autoLink = true) + private val renderer = new lila.common.Markdown(autoLink = true, list = true) private val cache: LoadingCache[String, String] = lila.memo.CacheApi.scaffeineNoScheduler .expireAfterAccess(20 minutes) diff --git a/modules/common/src/main/Markdown.scala b/modules/common/src/main/Markdown.scala index 57ac1f45cf..d6f0233871 100644 --- a/modules/common/src/main/Markdown.scala +++ b/modules/common/src/main/Markdown.scala @@ -8,22 +8,41 @@ import com.vladsch.flexmark.parser.Parser import com.vladsch.flexmark.util.data.MutableDataSet import scala.jdk.CollectionConverters._ -final class Markdown(autoLink: Boolean = false) { +final class Markdown( + autoLink: Boolean = false, + table: Boolean = false, + strikeThrough: Boolean = false, + header: Boolean = false, + blockQuote: Boolean = false, + list: Boolean = false +) { private type Text = String private type Html = String private val extensions: java.util.List[Parser.ParserExtension] = List( - TablesExtension.create().some, - StrikethroughExtension.create().some, + table option TablesExtension.create(), + strikeThrough option StrikethroughExtension.create(), autoLink option AutolinkExtension.create() ).flatten.asJava private val options = new MutableDataSet() + options.set(Parser.EXTENSIONS, extensions) - options.set(TablesExtension.CLASS_NAME, "slist") - options.set(HtmlRenderer.ESCAPE_HTML, Boolean.box(true)) + options.set(HtmlRenderer.ESCAPE_HTML, Boolean box true) options.set(HtmlRenderer.SOFT_BREAK, "
") + + // always disabled + options.set(Parser.HTML_BLOCK_PARSER, Boolean box false) + options.set(Parser.INDENTED_CODE_BLOCK_PARSER, Boolean box false) + options.set(Parser.FENCED_CODE_BLOCK_PARSER, Boolean box false) + + // configurable + if (table) options.set(TablesExtension.CLASS_NAME, "slist") + if (!header) options.set(Parser.HEADING_PARSER, Boolean box false) + if (!blockQuote) options.set(Parser.BLOCK_QUOTE_PARSER, Boolean box false) + if (!list) options.set(Parser.LIST_BLOCK_PARSER, Boolean box false) + private val parser = Parser.builder(options).build() private val renderer = HtmlRenderer.builder(options).build() diff --git a/modules/relay/src/main/RelayMarkup.scala b/modules/relay/src/main/RelayMarkup.scala index e20680c5e1..5f37650979 100644 --- a/modules/relay/src/main/RelayMarkup.scala +++ b/modules/relay/src/main/RelayMarkup.scala @@ -6,7 +6,14 @@ import scala.concurrent.duration._ final class RelayMarkup { - private val renderer = new lila.common.Markdown(autoLink = true) + private val renderer = + new lila.common.Markdown( + autoLink = true, + list = true, + table = true, + strikeThrough = true, + header = true + ) private val cache: LoadingCache[String, String] = lila.memo.CacheApi.scaffeineNoScheduler .expireAfterAccess(20 minutes) From e0743b5765ac3476740a200fde442d2167521982 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sun, 27 Jun 2021 09:34:44 +0200 Subject: [PATCH 27/64] allow markdown in team description - closes #9229 --- app/templating/FormHelper.scala | 9 ++++++ app/views/clas/wall.scala | 11 +------ app/views/team/form.scala | 14 ++++++-- app/views/team/show.scala | 16 +++++++-- modules/common/src/main/Markdown.scala | 2 +- modules/i18n/src/main/I18nKeys.scala | 45 +++++++++++++------------- translation/source/class.xml | 1 - translation/source/site.xml | 1 + 8 files changed, 60 insertions(+), 39 deletions(-) diff --git a/app/templating/FormHelper.scala b/app/templating/FormHelper.scala index 851eb787d8..3e019425e0 100644 --- a/app/templating/FormHelper.scala +++ b/app/templating/FormHelper.scala @@ -2,6 +2,7 @@ package lila.app package templating import play.api.data._ +import play.api.i18n.Lang import lila.api.Context import lila.app.ui.ScalatagsTemplate._ @@ -26,6 +27,14 @@ trait FormHelper { self: I18nHelper => val postForm = form(method := "post") val submitButton = button(tpe := "submit") + def markdownAvailable(implicit lang: Lang) = + trans.markdownAvailable( + a( + href := "https://guides.github.com/features/mastering-markdown/", + targetBlank + )("Markdown") + ) + object form3 { private val idPrefix = "form3" diff --git a/app/views/clas/wall.scala b/app/views/clas/wall.scala index fb82ec8f98..d065f17b7f 100644 --- a/app/views/clas/wall.scala +++ b/app/views/clas/wall.scala @@ -34,16 +34,7 @@ object wall { ul( li(trans.clas.newsEdit2()), li(trans.clas.newsEdit3()), - li( - trans.clas.markdownAvailable( - a( - href := "https://guides.github.com/features/mastering-markdown/", - targetBlank - )( - "Markdown" - ) - ) - ) + li(markdownAvailable) ) ), postForm(cls := "form3", action := routes.Clas.wallUpdate(c.id.value))( diff --git a/app/views/team/form.scala b/app/views/team/form.scala index b947fe62b9..fe4aab8d52 100644 --- a/app/views/team/form.scala +++ b/app/views/team/form.scala @@ -103,8 +103,18 @@ object form { private def textFields(form: Form[_])(implicit ctx: Context) = frag( form3.group(form("location"), trans.location())(form3.input(_)), - form3.group(form("description"), trans.description())(form3.textarea(_)(rows := 10)), - form3.group(form("descPrivate"), trans.descPrivate(), help = trans.descPrivateHelp().some)( + form3.group(form("description"), trans.description(), help = markdownAvailable.some)( + form3.textarea(_)(rows := 10) + ), + form3.group( + form("descPrivate"), + trans.descPrivate(), + help = frag( + trans.descPrivateHelp(), + br, + markdownAvailable + ).some + )( form3.textarea(_)(rows := 10) ) ) diff --git a/app/views/team/show.scala b/app/views/team/show.scala index 0ca4bb7db4..89050ded71 100644 --- a/app/views/team/show.scala +++ b/app/views/team/show.scala @@ -8,7 +8,7 @@ import lila.app.mashup.TeamInfo import lila.app.templating.Environment._ import lila.app.ui.ScalatagsTemplate._ import lila.common.paginator.Paginator -import lila.common.String.html.{ markdownLinksOrRichText, richText, safeJsonValue } +import lila.common.String.html.{ richText, safeJsonValue } import lila.team.Team object show { @@ -176,7 +176,7 @@ object show { div(cls := "team-show__content__col2")( standardFlash(), st.section(cls := "team-show__desc")( - markdownLinksOrRichText { + markdown { t.descPrivate.ifTrue(info.mine) | t.description }, t.location.map { loc => @@ -228,6 +228,18 @@ object show { ) } + private object markdown { + import scala.concurrent.duration._ + private val renderer = new lila.common.Markdown(list = true) + private val cache: com.github.blemale.scaffeine.LoadingCache[String, String] = + lila.memo.CacheApi.scaffeineNoScheduler + .expireAfterAccess(10 minutes) + .maximumSize(512) + .build(renderer.apply) + + def apply(text: String): Frag = raw(cache get text) + } + // handle special teams here private def joinButton(t: Team)(implicit ctx: Context) = t.id match { diff --git a/modules/common/src/main/Markdown.scala b/modules/common/src/main/Markdown.scala index d6f0233871..c049d2759e 100644 --- a/modules/common/src/main/Markdown.scala +++ b/modules/common/src/main/Markdown.scala @@ -9,7 +9,7 @@ import com.vladsch.flexmark.util.data.MutableDataSet import scala.jdk.CollectionConverters._ final class Markdown( - autoLink: Boolean = false, + autoLink: Boolean = true, table: Boolean = false, strikeThrough: Boolean = false, header: Boolean = false, diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index 7b41d300c6..20e76a445a 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -712,6 +712,26 @@ val `welcome` = new I18nKey("welcome") val `lichessPatronInfo` = new I18nKey("lichessPatronInfo") val `coachManager` = new I18nKey("coachManager") val `streamerManager` = new I18nKey("streamerManager") +val `cancelTournament` = new I18nKey("cancelTournament") +val `tournDescription` = new I18nKey("tournDescription") +val `tournDescriptionHelp` = new I18nKey("tournDescriptionHelp") +val `ratedFormHelp` = new I18nKey("ratedFormHelp") +val `onlyMembersOfTeam` = new I18nKey("onlyMembersOfTeam") +val `noRestriction` = new I18nKey("noRestriction") +val `minimumRatedGames` = new I18nKey("minimumRatedGames") +val `minimumRating` = new I18nKey("minimumRating") +val `maximumWeeklyRating` = new I18nKey("maximumWeeklyRating") +val `onlyTitled` = new I18nKey("onlyTitled") +val `onlyTitledHelp` = new I18nKey("onlyTitledHelp") +val `positionInputHelp` = new I18nKey("positionInputHelp") +val `cancelSimul` = new I18nKey("cancelSimul") +val `simulHostcolor` = new I18nKey("simulHostcolor") +val `estimatedStart` = new I18nKey("estimatedStart") +val `simulFeatured` = new I18nKey("simulFeatured") +val `simulFeaturedHelp` = new I18nKey("simulFeaturedHelp") +val `simulDescription` = new I18nKey("simulDescription") +val `simulDescriptionHelp` = new I18nKey("simulDescriptionHelp") +val `markdownAvailable` = new I18nKey("markdownAvailable") val `opponentLeftCounter` = new I18nKey("opponentLeftCounter") val `mateInXHalfMoves` = new I18nKey("mateInXHalfMoves") val `nextCaptureOrPawnMoveInXHalfMoves` = new I18nKey("nextCaptureOrPawnMoveInXHalfMoves") @@ -752,26 +772,6 @@ val `availableInNbLanguages` = new I18nKey("availableInNbLanguages") val `nbSecondsToPlayTheFirstMove` = new I18nKey("nbSecondsToPlayTheFirstMove") val `nbSeconds` = new I18nKey("nbSeconds") val `andSaveNbPremoveLines` = new I18nKey("andSaveNbPremoveLines") -val `cancelTournament` = new I18nKey("cancelTournament") -val `tournDescription` = new I18nKey("tournDescription") -val `tournDescriptionHelp` = new I18nKey("tournDescriptionHelp") -val `ratedFormHelp` = new I18nKey("ratedFormHelp") -val `onlyMembersOfTeam` = new I18nKey("onlyMembersOfTeam") -val `noRestriction` = new I18nKey("noRestriction") -val `minimumRatedGames` = new I18nKey("minimumRatedGames") -val `minimumRating` = new I18nKey("minimumRating") -val `maximumWeeklyRating` = new I18nKey("maximumWeeklyRating") -val `onlyTitled` = new I18nKey("onlyTitled") -val `onlyTitledHelp` = new I18nKey("onlyTitledHelp") -val `hasChatHelp` = new I18nKey("hasChatHelp") -val `positionInputHelp` = new I18nKey("positionInputHelp") -val `cancelSimul` = new I18nKey("cancelSimul") -val `simulHostcolor` = new I18nKey("simulHostcolor") -val `estimatedStart` = new I18nKey("estimatedStart") -val `simulFeatured` = new I18nKey("simulFeatured") -val `simulFeaturedHelp` = new I18nKey("simulFeaturedHelp") -val `simulDescription` = new I18nKey("simulDescription") -val `simulDescriptionHelp` = new I18nKey("simulDescriptionHelp") object arena { val `arenaTournaments` = new I18nKey("arena:arenaTournaments") @@ -796,8 +796,6 @@ val `thisIsPrivate` = new I18nKey("arena:thisIsPrivate") val `shareUrl` = new I18nKey("arena:shareUrl") val `drawStreak` = new I18nKey("arena:drawStreak") val `history` = new I18nKey("arena:history") -val `drawingWithinNbMoves` = new I18nKey("arena:drawingWithinNbMoves") -val `viewAllXTeams` = new I18nKey("arena:viewAllXTeams") val `newTeamBattle` = new I18nKey("arena:newTeamBattle") val `customStartDate` = new I18nKey("arena:customStartDate") val `customStartDateHelp` = new I18nKey("arena:customStartDateHelp") @@ -806,6 +804,8 @@ val `allowBerserkHelp` = new I18nKey("arena:allowBerserkHelp") val `allowChatHelp` = new I18nKey("arena:allowChatHelp") val `arenaStreaks` = new I18nKey("arena:arenaStreaks") val `arenaStreaksHelp` = new I18nKey("arena:arenaStreaksHelp") +val `drawingWithinNbMoves` = new I18nKey("arena:drawingWithinNbMoves") +val `viewAllXTeams` = new I18nKey("arena:viewAllXTeams") } object emails { @@ -1266,7 +1266,6 @@ val `nothingHere` = new I18nKey("class:nothingHere") val `newsEdit1` = new I18nKey("class:newsEdit1") val `newsEdit2` = new I18nKey("class:newsEdit2") val `newsEdit3` = new I18nKey("class:newsEdit3") -val `markdownAvailable` = new I18nKey("class:markdownAvailable") val `nbPendingInvitations` = new I18nKey("class:nbPendingInvitations") val `nbTeachers` = new I18nKey("class:nbTeachers") val `nbStudents` = new I18nKey("class:nbStudents") diff --git a/translation/source/class.xml b/translation/source/class.xml index 270124b6d8..a79ff295a5 100644 --- a/translation/source/class.xml +++ b/translation/source/class.xml @@ -97,5 +97,4 @@ Here is the link to access the class. Add the recent news at the top. Don't delete previous news. Separate news with --- It will display a horizontal line. - %s is available for more advanced syntax. diff --git a/translation/source/site.xml b/translation/source/site.xml index 183e84c9cb..fa9ffe9543 100644 --- a/translation/source/site.xml +++ b/translation/source/site.xml @@ -893,4 +893,5 @@ Leave empty to start games from the normal initial position. Show your simul to everyone on %s. Disable for private simuls. Simul description Anything you want to tell the participants? +%s is available for more advanced syntax. From a81fe3b1943ea1e84283414377e96d77153d0f6e Mon Sep 17 00:00:00 2001 From: Sam Ezeh Date: Sun, 27 Jun 2021 09:08:15 +0100 Subject: [PATCH 28/64] Include missed mates in under 3 in learn from your mistakes (#9270) * Include missed mates in under 3 in learn from your mistakes * Less than or equal to 3 * Put return found in correct place --- ui/analyse/src/nodeFinder.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ui/analyse/src/nodeFinder.ts b/ui/analyse/src/nodeFinder.ts index fceffc48f1..f6a85da98d 100644 --- a/ui/analyse/src/nodeFinder.ts +++ b/ui/analyse/src/nodeFinder.ts @@ -37,7 +37,9 @@ export function evalSwings(mainline: Tree.Node[], nodeFilter: (node: Tree.Node) const prev = mainline[i - 1]; if (nodeFilter(node) && node.eval && prev.eval) { const diff = Math.abs(winningChances.povDiff('white', prev.eval, node.eval)); - if (diff > threshold && hasCompChild(prev)) found.push(node); + if (hasCompChild(prev) && (diff > threshold || (prev.eval.mate && !node.eval.mate && prev.eval.mate <= 3))) { + found.push(node); + } } } return found; From e1ff8a15046f17e1ee1de735b285b22ee4cf32b1 Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Sun, 27 Jun 2021 14:21:40 +0200 Subject: [PATCH 29/64] slightly adjust fishnet node target --- conf/base.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/base.conf b/conf/base.conf index 5e5dceb15d..4edca70a9b 100644 --- a/conf/base.conf +++ b/conf/base.conf @@ -415,7 +415,7 @@ fishnet { } offline_mode = true # any client can provide moves and analysis actor.name = fishnet - analysis.nodes = 2000000 # nnue + analysis.nodes = 2100000 # nnue move.plies = 300 client_min_version = "2.1.3" } From db6b03c45efc8082f51adc6652af70fb64436bdf Mon Sep 17 00:00:00 2001 From: Konstantinos07 Date: Sun, 27 Jun 2021 16:08:24 +0300 Subject: [PATCH 30/64] adding missing swiss form translations --- app/views/swiss/form.scala | 55 +++++++++++++--------------- modules/i18n/src/main/I18nKeys.scala | 12 ++++++ translation/source/site.xml | 5 +++ translation/source/swiss.xml | 7 ++++ 4 files changed, 49 insertions(+), 30 deletions(-) diff --git a/app/views/swiss/form.scala b/app/views/swiss/form.scala index 7c9ecaa481..75ea79b1fc 100644 --- a/app/views/swiss/form.scala +++ b/app/views/swiss/form.scala @@ -14,14 +14,14 @@ object form { def create(form: Form[_], teamId: TeamID)(implicit ctx: Context) = views.html.base.layout( - title = "New Swiss tournament", + title = trans.swiss.newSwiss.txt(), moreCss = cssTag("swiss.form"), moreJs = jsModule("tourForm") ) { val fields = new SwissFields(form, none) main(cls := "page-small")( div(cls := "swiss__form tour__form box box-pad")( - h1("New Swiss tournament"), + h1(trans.swiss.newSwiss()), postForm(cls := "form3", action := routes.Swiss.create(teamId))( form3.split(fields.name, fields.nbRounds), form3.split(fields.rated, fields.variant), @@ -80,33 +80,33 @@ object form { ), postForm(cls := "terminate", action := routes.Swiss.terminate(swiss.id.value))( submitButton(dataIcon := "", cls := "text button button-red confirm")( - "Cancel the tournament" + trans.cancelTournament() ) ) ) ) } - private def condition(form: Form[_], fields: SwissFields, swiss: Option[Swiss])(implicit ctx: Context) = +private def condition(form: Form[_], fields: SwissFields, swiss: Option[Swiss])(implicit ctx: Context) = frag( form3.split( - form3.group(form("conditions.nbRatedGame.nb"), frag("Minimum rated games"), half = true)( + form3.group(form("conditions.nbRatedGame.nb"), trans.minimumRatedGames(), half = true)( form3.select(_, SwissCondition.DataForm.nbRatedGameChoices) ), (ctx.me.exists(_.hasTitle) || isGranted(_.ManageTournament)) ?? { form3.checkbox( form("conditions.titled"), - frag("Only titled players"), - help = frag("Require an official title to join the tournament").some, + trans.onlyTitled(), + help = trans.onlyTitledHelp().some, half = true ) } ), form3.split( - form3.group(form("conditions.minRating.rating"), frag("Minimum rating"), half = true)( + form3.group(form("conditions.minRating.rating"), trans.minimumRating(), half = true)( form3.select(_, SwissCondition.DataForm.minRatingChoices) ), - form3.group(form("conditions.maxRating.rating"), frag("Maximum weekly rating"), half = true)( + form3.group(form("conditions.maxRating.rating"), trans.maximumWeeklyRating(), half = true)( form3.select(_, SwissCondition.DataForm.maxRatingChoices) ) ) @@ -133,8 +133,8 @@ final private class SwissFields(form: Form[_], swiss: Option[Swiss])(implicit ct def nbRounds = form3.group( form("nbRounds"), - "Number of rounds", - help = raw("An odd number of rounds allows optimal color balance.").some, + trans.swiss.nbRounds(), + help = trans.swiss.nbRoundsHelp().some, half = true )( form3.input(_, typ = "number") @@ -145,7 +145,7 @@ final private class SwissFields(form: Form[_], swiss: Option[Swiss])(implicit ct form3.checkbox( form("rated"), trans.rated(), - help = raw("Games are rated
and impact players ratings").some + help = trans.ratedFormHelp().some ), st.input(tpe := "hidden", st.name := form("rated").name, value := "false") // hack allow disabling rated ) @@ -167,16 +167,14 @@ final private class SwissFields(form: Form[_], swiss: Option[Swiss])(implicit ct ) ) def roundInterval = - form3.group(form("roundInterval"), frag("Interval between rounds"), half = true)( + form3.group(form("roundInterval"), trans.swiss.roundInterval(), half = true)( form3.select(_, SwissForm.roundIntervalChoices) ) def description = form3.group( form("description"), - frag("Tournament description"), - help = frag( - "Anything special you want to tell the participants? Try to keep it short. Markdown links are available: [name](https://url)" - ).some, + trans.tournDescription(), + help = trans.tournDescriptionHelp().some, half = true )(form3.textarea(_)(rows := 4)) def position = @@ -185,26 +183,25 @@ final private class SwissFields(form: Form[_], swiss: Option[Swiss])(implicit ct trans.startPosition(), klass = "position", half = true, - help = - trans.positionInputHelp(a(href := routes.Editor.index, targetBlank)(trans.boardEditor.txt())).some + help = trans.positionInputHelp(a(href := routes.Editor.index, targetBlank)(trans.boardEditor.txt())).some )(form3.input(_)) def startsAt = form3.group( form("startsAt"), - frag("Tournament start date"), - help = frag("In your own local timezone").some, + trans.swiss.tournStartDate(), + help = trans.inYourLocalTimezone().some, half = true )(form3.flatpickr(_)) def chatFor = - form3.group(form("chatFor"), frag("Tournament chat"), half = true) { f => + form3.group(form("chatFor"), trans.tournChat(), half = true) { f => form3.select( f, Seq( - Swiss.ChatFor.NONE -> "No chat", - Swiss.ChatFor.LEADERS -> "Only team leaders", - Swiss.ChatFor.MEMBERS -> "Only team members", - Swiss.ChatFor.ALL -> "All Lichess players" + Swiss.ChatFor.NONE -> trans.noChat.txt(), + Swiss.ChatFor.LEADERS -> trans.onlyTeamLeaders.txt(), + Swiss.ChatFor.MEMBERS -> trans.onlyTeamMembers.txt(), + Swiss.ChatFor.ALL -> trans.study.everyone.txt() ) ) } @@ -220,10 +217,8 @@ final private class SwissFields(form: Form[_], swiss: Option[Swiss])(implicit ct def forbiddenPairings = form3.group( form("forbiddenPairings"), - frag("Forbidden pairings"), - help = frag( - "Usernames of players that must not play together (Siblings, for instance). Two usernames per line, separated by a space." - ).some, + trans.swiss.forbiddenPairings(), + help = trans.swiss.forbiddenPairingsHelp().some, half = true )(form3.textarea(_)(rows := 4)) } diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index 20e76a445a..b144ae1830 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -732,6 +732,11 @@ val `simulFeaturedHelp` = new I18nKey("simulFeaturedHelp") val `simulDescription` = new I18nKey("simulDescription") val `simulDescriptionHelp` = new I18nKey("simulDescriptionHelp") val `markdownAvailable` = new I18nKey("markdownAvailable") +val `inYourLocalTimezone` = new I18nKey("inYourLocalTimezone") +val `tournChat` = new I18nKey("tournChat") +val `noChat` = new I18nKey("noChat") +val `onlyTeamLeaders` = new I18nKey("onlyTeamLeaders") +val `onlyTeamMembers` = new I18nKey("onlyTeamMembers") val `opponentLeftCounter` = new I18nKey("opponentLeftCounter") val `mateInXHalfMoves` = new I18nKey("mateInXHalfMoves") val `nextCaptureOrPawnMoveInXHalfMoves` = new I18nKey("nextCaptureOrPawnMoveInXHalfMoves") @@ -1870,6 +1875,13 @@ val `lagCompensationExplanation` = new I18nKey("lag:lagCompensationExplanation") object swiss { val `swissTournaments` = new I18nKey("swiss:swissTournaments") +val `tournStartDate` = new I18nKey("swiss:tournStartDate") +val `nbRounds` = new I18nKey("swiss:nbRounds") +val `nbRoundsHelp` = new I18nKey("swiss:nbRoundsHelp") +val `roundInterval` = new I18nKey("swiss:roundInterval") +val `forbiddenPairings` = new I18nKey("swiss:forbiddenPairings") +val `forbiddenPairingsHelp` = new I18nKey("swiss:forbiddenPairingsHelp") +val `newSwiss` = new I18nKey("swiss:newSwiss") val `viewAllXRounds` = new I18nKey("swiss:viewAllXRounds") } diff --git a/translation/source/site.xml b/translation/source/site.xml index fa9ffe9543..b8560bd573 100644 --- a/translation/source/site.xml +++ b/translation/source/site.xml @@ -894,4 +894,9 @@ Leave empty to start games from the normal initial position. Simul description Anything you want to tell the participants? %s is available for more advanced syntax. +In your own local timezone +Tournament chat +No chat +Only team leaders +Only team members diff --git a/translation/source/swiss.xml b/translation/source/swiss.xml index 65e7602582..567ab285ad 100644 --- a/translation/source/swiss.xml +++ b/translation/source/swiss.xml @@ -5,4 +5,11 @@ View the round View all %s rounds + Tournament start date + Number of rounds + An odd number of rounds allows optimal color balance. + Interval between rounds + Forbidden pairings + Usernames of players that must not play together (Siblings, for instance). Two usernames per line, separated by a space. + New Swiss tournament From c2073e722e8adc645a6d0d902e03861ea04c0b78 Mon Sep 17 00:00:00 2001 From: Sam Ezeh Date: Sun, 27 Jun 2021 18:01:39 +0100 Subject: [PATCH 31/64] Add endgame positions to board editor --- app/controllers/Editor.scala | 13 ++++++++++++- app/views/board/editor.scala | 5 +++-- modules/i18n/src/main/I18nKeys.scala | 1 + project/Dependencies.scala | 2 +- translation/dest/site/en-US.xml | 1 + translation/source/site.xml | 1 + ui/@types/lichess/index.d.ts | 7 +++++++ ui/editor/src/ctrl.ts | 4 ++++ ui/editor/src/view.ts | 17 ++++++++++++++++- 9 files changed, 46 insertions(+), 5 deletions(-) diff --git a/app/controllers/Editor.scala b/app/controllers/Editor.scala index dc445558b8..1bdb4b920b 100644 --- a/app/controllers/Editor.scala +++ b/app/controllers/Editor.scala @@ -20,6 +20,16 @@ final class Editor(env: Env) extends LilaController(env) { }) } + private lazy val endgamePositionsJson = lila.common.String.html.safeJsonValue { + JsArray( + chess.EndgamePosition.positions map { p => + Json.obj( + "name" -> p.name, + "fen" -> p.fen + ) + }) + } + def index = load("") def load(urlFen: String) = @@ -35,7 +45,8 @@ final class Editor(env: Env) extends LilaController(env) { html.board.editor( sit = situation, fen = Forsyth >> situation, - positionsJson + positionsJson, + endgamePositionsJson ) ) } diff --git a/app/views/board/editor.scala b/app/views/board/editor.scala index 57ec3cf487..0ee1fadb2a 100644 --- a/app/views/board/editor.scala +++ b/app/views/board/editor.scala @@ -13,7 +13,8 @@ object editor { def apply( sit: chess.Situation, fen: FEN, - positionsJson: String + positionsJson: String, + endgamePositionsJson: String, )(implicit ctx: Context) = views.html.base.layout( title = trans.boardEditor.txt(), @@ -21,7 +22,7 @@ object editor { jsModule("editor"), embedJsUnsafeLoadThen( s"""const data=${safeJsonValue(bits.jsData(sit, fen))};data.positions=$positionsJson; -LichessEditor(document.getElementById('board-editor'), data);""" +data.endgamePositions=$endgamePositionsJson;LichessEditor(document.getElementById('board-editor'), data);""" ) ), moreCss = cssTag("editor"), diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index 20e76a445a..1393345e79 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -319,6 +319,7 @@ val `membersOnly` = new I18nKey("membersOnly") val `boardEditor` = new I18nKey("boardEditor") val `setTheBoard` = new I18nKey("setTheBoard") val `popularOpenings` = new I18nKey("popularOpenings") +val `endgamePositions` = new I18nKey("endgamePositions") val `startPosition` = new I18nKey("startPosition") val `clearBoard` = new I18nKey("clearBoard") val `savePosition` = new I18nKey("savePosition") diff --git a/project/Dependencies.scala b/project/Dependencies.scala index b7f8626f3d..f3b4257a23 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -8,7 +8,7 @@ object Dependencies { val scalalib = "com.github.ornicar" %% "scalalib" % "7.0.2" val hasher = "com.roundeights" %% "hasher" % "1.2.1" val jodaTime = "joda-time" % "joda-time" % "2.10.10" - val chess = "org.lichess" %% "scalachess" % "10.2.2" + val chess = "org.lichess" %% "scalachess" % "10.2.2-dignissimus" val compression = "org.lichess" %% "compression" % "1.6" val maxmind = "com.sanoma.cda" %% "maxmind-geoip2-scala" % "1.3.1-THIB" val prismic = "io.prismic" %% "scala-kit" % "1.2.19-THIB213" diff --git a/translation/dest/site/en-US.xml b/translation/dest/site/en-US.xml index 51e14404d4..582b505b08 100644 --- a/translation/dest/site/en-US.xml +++ b/translation/dest/site/en-US.xml @@ -440,6 +440,7 @@ computer analysis, game chat and shareable URL. Board editor Set the board Popular openings + Endgame positions Starting position Clear board Save position diff --git a/translation/source/site.xml b/translation/source/site.xml index fa9ffe9543..880cac43df 100644 --- a/translation/source/site.xml +++ b/translation/source/site.xml @@ -440,6 +440,7 @@ computer analysis, game chat and shareable URL. Board editor Set the board Popular openings + Endgame positions Starting position Clear board Save position diff --git a/ui/@types/lichess/index.d.ts b/ui/@types/lichess/index.d.ts index 0e8885fe79..0cd2ae8890 100644 --- a/ui/@types/lichess/index.d.ts +++ b/ui/@types/lichess/index.d.ts @@ -213,6 +213,7 @@ declare namespace Editor { }; embed: boolean; positions?: OpeningPosition[]; + endgamePositions?: EndgamePosition[]; i18n: I18nDict; } @@ -228,6 +229,12 @@ declare namespace Editor { fen: string; epd?: string; } + + export interface EndgamePosition { + name: string; + fen: string; + epd?: string + } } interface Window { diff --git a/ui/editor/src/ctrl.ts b/ui/editor/src/ctrl.ts index 3b614c607a..a59af0c0dd 100644 --- a/ui/editor/src/ctrl.ts +++ b/ui/editor/src/ctrl.ts @@ -52,6 +52,10 @@ export default class EditorCtrl { cfg.positions.forEach(p => (p.epd = p.fen.split(' ').splice(0, 4).join(' '))); } + if (cfg.endgamePositions){ + cfg.endgamePositions.forEach(p => (p.epd = p.fen.split(' ').splice(0, 4).join(' '))); + } + window.Mousetrap.bind('f', () => { if (this.chessground) this.chessground.toggleOrientation(); redraw(); diff --git a/ui/editor/src/view.ts b/ui/editor/src/view.ts index 3e5965d07a..2b2456300d 100644 --- a/ui/editor/src/view.ts +++ b/ui/editor/src/view.ts @@ -99,8 +99,22 @@ function controls(ctrl: EditorCtrl, state: EditorState): VNode { pos.eco ? `${pos.eco} ${pos.name}` : pos.name ); }; + + const endgamePosition2option = function (pos: Editor.EndgamePosition): VNode { + return h( + 'option', + { + attrs: { + value: pos.epd || pos.fen, + 'data-fen': pos.fen, + }, + }, + pos.name + ); + }; + return h('div.board-editor__tools', [ - ...(ctrl.cfg.embed || !ctrl.cfg.positions + ...(ctrl.cfg.embed || !ctrl.cfg.positions || ! ctrl.cfg.endgamePositions ? [] : [ h('div', [ @@ -133,6 +147,7 @@ function controls(ctrl: EditorCtrl, state: EditorState): VNode { ...ctrl.extraPositions.map(position2option), ]), optgroup(ctrl.trans.noarg('popularOpenings'), ctrl.cfg.positions.map(position2option)), + optgroup(ctrl.trans.noarg('endgamePositions'), ctrl.cfg.endgamePositions.map(endgamePosition2option)), ] ), ]), From 6f44d923aff9f2c031b3e6d651bf3251308c0002 Mon Sep 17 00:00:00 2001 From: Sam Ezeh Date: Sun, 27 Jun 2021 18:04:52 +0100 Subject: [PATCH 32/64] Run yarn run format --- ui/@types/lichess/index.d.ts | 2 +- ui/editor/src/ctrl.ts | 2 +- ui/editor/src/view.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ui/@types/lichess/index.d.ts b/ui/@types/lichess/index.d.ts index 0cd2ae8890..199bac6a32 100644 --- a/ui/@types/lichess/index.d.ts +++ b/ui/@types/lichess/index.d.ts @@ -233,7 +233,7 @@ declare namespace Editor { export interface EndgamePosition { name: string; fen: string; - epd?: string + epd?: string; } } diff --git a/ui/editor/src/ctrl.ts b/ui/editor/src/ctrl.ts index a59af0c0dd..510dc9a7c7 100644 --- a/ui/editor/src/ctrl.ts +++ b/ui/editor/src/ctrl.ts @@ -52,7 +52,7 @@ export default class EditorCtrl { cfg.positions.forEach(p => (p.epd = p.fen.split(' ').splice(0, 4).join(' '))); } - if (cfg.endgamePositions){ + if (cfg.endgamePositions) { cfg.endgamePositions.forEach(p => (p.epd = p.fen.split(' ').splice(0, 4).join(' '))); } diff --git a/ui/editor/src/view.ts b/ui/editor/src/view.ts index 2b2456300d..51bb61b960 100644 --- a/ui/editor/src/view.ts +++ b/ui/editor/src/view.ts @@ -114,7 +114,7 @@ function controls(ctrl: EditorCtrl, state: EditorState): VNode { }; return h('div.board-editor__tools', [ - ...(ctrl.cfg.embed || !ctrl.cfg.positions || ! ctrl.cfg.endgamePositions + ...(ctrl.cfg.embed || !ctrl.cfg.positions || !ctrl.cfg.endgamePositions ? [] : [ h('div', [ From eaa48212d2ab25788981aa7d420a4db907dea96b Mon Sep 17 00:00:00 2001 From: Sam Ezeh Date: Sun, 27 Jun 2021 18:08:07 +0100 Subject: [PATCH 33/64] Update dependencies --- project/Dependencies.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index f3b4257a23..b7f8626f3d 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -8,7 +8,7 @@ object Dependencies { val scalalib = "com.github.ornicar" %% "scalalib" % "7.0.2" val hasher = "com.roundeights" %% "hasher" % "1.2.1" val jodaTime = "joda-time" % "joda-time" % "2.10.10" - val chess = "org.lichess" %% "scalachess" % "10.2.2-dignissimus" + val chess = "org.lichess" %% "scalachess" % "10.2.2" val compression = "org.lichess" %% "compression" % "1.6" val maxmind = "com.sanoma.cda" %% "maxmind-geoip2-scala" % "1.3.1-THIB" val prismic = "io.prismic" %% "scala-kit" % "1.2.19-THIB213" From 48f71114482753406210ab2d8c5e34a451341d5e Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Sun, 27 Jun 2021 20:15:38 +0200 Subject: [PATCH 34/64] simplify oauth Protocol.Secret --- app/controllers/Challenge.scala | 2 +- modules/oauth/src/main/AccessToken.scala | 9 +++----- modules/oauth/src/main/AccessTokenApi.scala | 2 +- modules/oauth/src/main/AuthorizationApi.scala | 4 ++-- modules/oauth/src/main/OAuthForm.scala | 2 +- modules/oauth/src/main/Protocol.scala | 21 +++++-------------- 6 files changed, 13 insertions(+), 27 deletions(-) diff --git a/app/controllers/Challenge.scala b/app/controllers/Challenge.scala index c9fc01ecf4..6afc3cf9a3 100644 --- a/app/controllers/Challenge.scala +++ b/app/controllers/Challenge.scala @@ -202,7 +202,7 @@ final class Challenge( Action.async { req => import cats.implicits._ val scopes = List(OAuthScope.Challenge.Write) - (get("token1", req) map AccessToken.Id, get("token2", req) map AccessToken.Id).mapN { + (get("token1", req) map AccessToken.Id.apply, get("token2", req) map AccessToken.Id.apply).mapN { env.oAuth.server.authBoth(scopes) } ?? { _ flatMap { diff --git a/modules/oauth/src/main/AccessToken.scala b/modules/oauth/src/main/AccessToken.scala index b1c8a9b2e5..e2d6d14d84 100644 --- a/modules/oauth/src/main/AccessToken.scala +++ b/modules/oauth/src/main/AccessToken.scala @@ -23,14 +23,11 @@ case class AccessToken( object AccessToken { - val idSize = 16 - - case class Id(value: String) extends AnyVal { - def isPersonal = value.lengthIs == idSize + case class Id(value: String) extends AnyVal + object Id { + def random() = Id(s"lio_${SecureRandom.nextString(32)}") } - def makeId = Id(SecureRandom nextString idSize) - case class ForAuth(userId: User.ID, scopes: List[OAuthScope]) case class WithApp(token: AccessToken, app: OAuthApp) diff --git a/modules/oauth/src/main/AccessTokenApi.scala b/modules/oauth/src/main/AccessTokenApi.scala index 5896d0e8e6..bcbd3b968c 100644 --- a/modules/oauth/src/main/AccessTokenApi.scala +++ b/modules/oauth/src/main/AccessTokenApi.scala @@ -15,7 +15,7 @@ final class AccessTokenApi(colls: OauthColls)(implicit ec: scala.concurrent.Exec def create(granted: AccessTokenRequest.Granted): Fu[AccessToken] = { val token = AccessToken( - id = AccessToken.Id(Protocol.Secret.random("lio_").value), + id = AccessToken.Id.random(), publicId = BSONObjectID.generate(), clientId = PersonalToken.clientId, // TODO userId = granted.userId, diff --git a/modules/oauth/src/main/AuthorizationApi.scala b/modules/oauth/src/main/AuthorizationApi.scala index cd7e306956..0504320bec 100644 --- a/modules/oauth/src/main/AuthorizationApi.scala +++ b/modules/oauth/src/main/AuthorizationApi.scala @@ -13,7 +13,7 @@ final class AuthorizationApi(val coll: Coll)(implicit ec: scala.concurrent.Execu val code = Protocol.AuthorizationCode.random() coll.insert.one( PendingAuthorizationBSONHandler write PendingAuthorization( - code.secret.hashed, + code.hashed, request.clientId, request.user, request.redirectUri, @@ -27,7 +27,7 @@ final class AuthorizationApi(val coll: Coll)(implicit ec: scala.concurrent.Execu def consume( request: AccessTokenRequest.Prepared ): Fu[Validated[Protocol.Error, AccessTokenRequest.Granted]] = - coll.findAndModify($doc(F.hashedCode -> request.code.secret.hashed), coll.removeModifier) map { + coll.findAndModify($doc(F.hashedCode -> request.code.hashed), coll.removeModifier) map { _.result[PendingAuthorization] .toValid(Protocol.Error.AuthorizationCodeInvalid) .ensure(Protocol.Error.AuthorizationCodeExpired)(_.expires.isAfter(DateTime.now())) diff --git a/modules/oauth/src/main/OAuthForm.scala b/modules/oauth/src/main/OAuthForm.scala index ae734b8349..c374b8b67a 100644 --- a/modules/oauth/src/main/OAuthForm.scala +++ b/modules/oauth/src/main/OAuthForm.scala @@ -29,7 +29,7 @@ object OAuthForm { ) { def make(user: lila.user.User) = AccessToken( - id = AccessToken.makeId, + id = AccessToken.Id.random(), publicId = BSONObjectID.generate(), clientId = PersonalToken.clientId, userId = user.id, diff --git a/modules/oauth/src/main/Protocol.scala b/modules/oauth/src/main/Protocol.scala index 97a59eb6ec..4b7a169dbf 100644 --- a/modules/oauth/src/main/Protocol.scala +++ b/modules/oauth/src/main/Protocol.scala @@ -10,23 +10,12 @@ import io.lemonlabs.uri.AbsoluteUrl import lila.common.SecureRandom object Protocol { - case class Secret(value: String) { - def hashed: String = Algo.sha256(value).hex - override def toString = "Secret(***)" - override def equals(other: Any) = other match { - case other: Secret => hashed == other.hashed - case _ => false - } - override def hashCode = hashed.hashCode() + case class AuthorizationCode(secret: String) extends AnyVal { + def hashed = Algo.sha256(secret).hex + override def toString = "AuthorizationCode(***)" } - object Secret { - def random(prefix: String) = Secret(s"$prefix${SecureRandom.nextString(32)}") - } - - case class AuthorizationCode(secret: Secret) extends AnyVal object AuthorizationCode { - def apply(value: String): AuthorizationCode = AuthorizationCode(Secret(value)) - def random() = AuthorizationCode(Secret.random("liu_")) + def random() = AuthorizationCode(s"liu_${SecureRandom.nextString(32)}") } case class ClientId(value: String) extends AnyVal @@ -91,7 +80,7 @@ object Protocol { def code(code: AuthorizationCode, state: Option[State]): String = value .withQueryString( - "code" -> Some(code.secret.value), + "code" -> Some(code.secret), "state" -> state.map(_.value) ) .toString From 33556e58ea4eeba065579011cc618cd03c165ba8 Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Mon, 28 Jun 2021 00:19:34 +0200 Subject: [PATCH 35/64] scalafmt --- app/views/simul/form.scala | 2 +- app/views/site/contact.scala | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/views/simul/form.scala b/app/views/simul/form.scala index 5e87b98da5..1ea6dd5a0b 100644 --- a/app/views/simul/form.scala +++ b/app/views/simul/form.scala @@ -55,7 +55,7 @@ object form { ), postForm(cls := "terminate", action := routes.Simul.abort(simul.id))( submitButton(dataIcon := "", cls := "text button button-red confirm")( - trans.cancelSimul() + trans.cancelSimul() ) ) ) diff --git a/app/views/site/contact.scala b/app/views/site/contact.scala index c2f22410b8..087bbe2f91 100644 --- a/app/views/site/contact.scala +++ b/app/views/site/contact.scala @@ -209,7 +209,6 @@ object contact { p(ratedGame()), botRatingAbuse() ) - ), Leaf( "error-page", From f5c409a8027a6427b9be37276bbd419e6827c3f0 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 28 Jun 2021 08:25:10 +0200 Subject: [PATCH 36/64] code golf --- ui/analyse/src/nodeFinder.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ui/analyse/src/nodeFinder.ts b/ui/analyse/src/nodeFinder.ts index f6a85da98d..ff0029e723 100644 --- a/ui/analyse/src/nodeFinder.ts +++ b/ui/analyse/src/nodeFinder.ts @@ -2,9 +2,7 @@ import { winningChances } from 'ceval'; import { defined } from 'common'; function hasCompChild(node: Tree.Node): boolean { - return !!node.children.find(function (c) { - return !!c.comp; - }); + return !!node.children.find(c => !!c.comp); } export function nextGlyphSymbol( From 787efc7a8b010393145d1dd2b164956d3b9003f6 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 28 Jun 2021 08:25:48 +0200 Subject: [PATCH 37/64] fix black checkmates in learn from your mistakes - for #7846 --- ui/analyse/src/nodeFinder.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ui/analyse/src/nodeFinder.ts b/ui/analyse/src/nodeFinder.ts index ff0029e723..a692f882ba 100644 --- a/ui/analyse/src/nodeFinder.ts +++ b/ui/analyse/src/nodeFinder.ts @@ -35,7 +35,10 @@ export function evalSwings(mainline: Tree.Node[], nodeFilter: (node: Tree.Node) const prev = mainline[i - 1]; if (nodeFilter(node) && node.eval && prev.eval) { const diff = Math.abs(winningChances.povDiff('white', prev.eval, node.eval)); - if (hasCompChild(prev) && (diff > threshold || (prev.eval.mate && !node.eval.mate && prev.eval.mate <= 3))) { + if ( + hasCompChild(prev) && + (diff > threshold || (prev.eval.mate && !node.eval.mate && Math.abs(prev.eval.mate) <= 3)) + ) { found.push(node); } } From 6cd08ee7a7456a7fe193eb64f0e89349b1092322 Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Mon, 28 Jun 2021 10:34:04 +0200 Subject: [PATCH 38/64] Remove old translations --- translation/dest/site/af-ZA.xml | 2 -- translation/dest/site/an-ES.xml | 2 -- translation/dest/site/ar-SA.xml | 2 -- translation/dest/site/az-AZ.xml | 2 -- translation/dest/site/be-BY.xml | 2 -- translation/dest/site/bg-BG.xml | 1 - translation/dest/site/bn-BD.xml | 1 - translation/dest/site/br-FR.xml | 2 -- translation/dest/site/bs-BA.xml | 2 -- translation/dest/site/ca-ES.xml | 2 -- translation/dest/site/cs-CZ.xml | 2 -- translation/dest/site/cy-GB.xml | 2 -- translation/dest/site/da-DK.xml | 2 -- translation/dest/site/de-CH.xml | 2 -- translation/dest/site/de-DE.xml | 2 -- translation/dest/site/el-GR.xml | 2 -- translation/dest/site/en-US.xml | 2 -- translation/dest/site/eo-UY.xml | 2 -- translation/dest/site/es-ES.xml | 2 -- translation/dest/site/et-EE.xml | 2 -- translation/dest/site/eu-ES.xml | 2 -- translation/dest/site/fa-IR.xml | 2 -- translation/dest/site/fi-FI.xml | 2 -- translation/dest/site/fo-FO.xml | 2 -- translation/dest/site/fr-FR.xml | 2 -- translation/dest/site/ga-IE.xml | 2 -- translation/dest/site/gl-ES.xml | 2 -- translation/dest/site/he-IL.xml | 2 -- translation/dest/site/hi-IN.xml | 2 -- translation/dest/site/hr-HR.xml | 2 -- translation/dest/site/hu-HU.xml | 2 -- translation/dest/site/ia-IA.xml | 2 -- translation/dest/site/id-ID.xml | 2 -- translation/dest/site/is-IS.xml | 2 -- translation/dest/site/it-IT.xml | 2 -- translation/dest/site/ja-JP.xml | 2 -- translation/dest/site/kk-KZ.xml | 2 -- translation/dest/site/kmr-TR.xml | 2 -- translation/dest/site/ko-KR.xml | 2 -- translation/dest/site/lt-LT.xml | 2 -- translation/dest/site/lv-LV.xml | 2 -- translation/dest/site/mk-MK.xml | 2 -- translation/dest/site/ml-IN.xml | 2 -- translation/dest/site/mn-MN.xml | 2 -- translation/dest/site/mr-IN.xml | 2 -- translation/dest/site/ms-MY.xml | 2 -- translation/dest/site/nb-NO.xml | 2 -- translation/dest/site/ne-NP.xml | 2 -- translation/dest/site/nl-NL.xml | 2 -- translation/dest/site/nn-NO.xml | 1 - translation/dest/site/vi-VN.xml | 1 - translation/dest/site/zh-CN.xml | 1 - translation/dest/site/zh-TW.xml | 1 - 53 files changed, 100 deletions(-) diff --git a/translation/dest/site/af-ZA.xml b/translation/dest/site/af-ZA.xml index 984523a089..4cc5455ce0 100644 --- a/translation/dest/site/af-ZA.xml +++ b/translation/dest/site/af-ZA.xml @@ -673,8 +673,6 @@ rekenaar analise, kletskamer en deelbare URL te kry. Skakel kindermodus aan Skakel kindermodus aan Sekuriteit - Hierdie is \'n lys van toestelle wat in jou rekening ingeteken het. Herroep enige sessies wat jy nie herken nie. - Andersins kan jy %s. alle sessies herroep Speel skaak oral So gratis soos Lichess diff --git a/translation/dest/site/an-ES.xml b/translation/dest/site/an-ES.xml index aee478c661..8d625467af 100644 --- a/translation/dest/site/an-ES.xml +++ b/translation/dest/site/an-ES.xml @@ -672,8 +672,6 @@ Activar lo modo infantil Desactivar lo modo infantil Seguridat - Esta ye una lista de dispositivos dende los quals has iniciau sesión. Zarra totas las sesions que no reconoixcas. - U tamién puetz %s. zarrar totas las sesions Chuga a los escaques an que siga Igual de gratis como lichess diff --git a/translation/dest/site/ar-SA.xml b/translation/dest/site/ar-SA.xml index e3816b9ff7..35f088a647 100644 --- a/translation/dest/site/ar-SA.xml +++ b/translation/dest/site/ar-SA.xml @@ -836,8 +836,6 @@ تمكين نمط الطفل تعطيل نمط الطفل الأمان - هذه هي قائمة بالأجهزة التي قامت بتسجيل الدخول إلى حسابك. قم بإلغاء أي جلسات اعمل لا تعرفها. - وبدلاً من ذلك يمكنك %s. إلغاء كافة جلسات العمل العب الشطرنج فى كل مكان مجاني diff --git a/translation/dest/site/az-AZ.xml b/translation/dest/site/az-AZ.xml index 2e7c712725..8af621119c 100644 --- a/translation/dest/site/az-AZ.xml +++ b/translation/dest/site/az-AZ.xml @@ -691,8 +691,6 @@ Uşaq rejimini aktivləşdir Uşaq rejimini deaktiv et Təhlükəsizlik - Bu hesabınıza daxil olan cihazların siyahısıdır. Tanımadığınız sessiyaları ləğv edin. - Həmçinin %s də edə bilərsiniz. bütün sessiyaları ləğv et Şahmatı hər yerdə oyna Lichess kimi azad diff --git a/translation/dest/site/be-BY.xml b/translation/dest/site/be-BY.xml index 9190d0d498..617fe4757a 100644 --- a/translation/dest/site/be-BY.xml +++ b/translation/dest/site/be-BY.xml @@ -763,8 +763,6 @@ Уключыць дзіцячы рэжым Адключыць дзіцячы рэжым Бяспека - Гэта спіс прылад, з якіх уваходзілі ў ваш акаўнт. Скасуеце кожныя падазроныя сеансы. - У якасці альтэрнатывы вы можаце %s. скасаваць усе сесіі Гуляйце ў шахматы дзе заўгодна Бясплатна, як і Lichess diff --git a/translation/dest/site/bg-BG.xml b/translation/dest/site/bg-BG.xml index 2e07776b9c..2e3662e785 100644 --- a/translation/dest/site/bg-BG.xml +++ b/translation/dest/site/bg-BG.xml @@ -694,7 +694,6 @@ Изключване на детски режим Сигурност Това е списъкът на устройствата, които са логнати във вашия акаунт. Отменете всички сесии, които не разпознавате. - Като алтернатива можете да %s. Сесии отмени всички сесии Играй шах навсякъде diff --git a/translation/dest/site/bn-BD.xml b/translation/dest/site/bn-BD.xml index 73a7dc6a78..e8e73c7a18 100644 --- a/translation/dest/site/bn-BD.xml +++ b/translation/dest/site/bn-BD.xml @@ -694,7 +694,6 @@ বাচ্চা ধরন নিষ্ক্রিয় করুন নিরাপত্তা এটা হয় ডিভাইসগুলির একটি তালিকা যা আপনার একাউন্টের সাথে লগইন আছে. বাতিল করুন সেই সেশন গুলো যা আপনি চেনেন না. - অন্যভাবে আপনি পারেন %s. সকল সেশন বাতিল করুন দাবা খেলুন সব জায়গায় যেমন লিচাস মুক্ত হিসাবে diff --git a/translation/dest/site/br-FR.xml b/translation/dest/site/br-FR.xml index 026d50e47e..3134dd0a8e 100644 --- a/translation/dest/site/br-FR.xml +++ b/translation/dest/site/br-FR.xml @@ -761,8 +761,6 @@ Gweredekaat ar mod evit ar vugale Diweredekaat ar mod evit ar vugale Surentez - Setu roll an trobarzhelloù bet luget war ho kont. Skarzhit an dalc\'hoù dianav deoc\'h. - A-hend-all e c\'hallit %s. skarzhañ an holl zalc\'hoù C\'hoari echedoù e pep lec\'h Ken digoust ha lichess diff --git a/translation/dest/site/bs-BA.xml b/translation/dest/site/bs-BA.xml index 58bfd99af6..d205ee6c91 100644 --- a/translation/dest/site/bs-BA.xml +++ b/translation/dest/site/bs-BA.xml @@ -727,8 +727,6 @@ računarsku analizu, mogućnost dopisivanja i link za slanje drugima. Uključite dječji režim Isključite dječji režim Sigurnost - Ovo je popis uređaja koji su se prijavili na Vaš račun. Opozovite bilo koju sesiju koju ne prepoznajete. - Alternativno, možete %s. Sesije opozvati sve sesije Igrajte šah svugdje diff --git a/translation/dest/site/ca-ES.xml b/translation/dest/site/ca-ES.xml index 4235f0f263..49d98c5671 100644 --- a/translation/dest/site/ca-ES.xml +++ b/translation/dest/site/ca-ES.xml @@ -692,8 +692,6 @@ Activar el mode de nen Desactivar el mode de nen Seguretat - Aquesta és una llista de dispositius que han iniciat sessió al teu compte. Si us plau tanqui qualsevol session que no reconegui. - Alternativament pots %s. tancar totes les sessions Jugueu a escacs a qualsevol lloc Tan lliure com lichess diff --git a/translation/dest/site/cs-CZ.xml b/translation/dest/site/cs-CZ.xml index a7b3e7a83c..6f0a9fc57a 100644 --- a/translation/dest/site/cs-CZ.xml +++ b/translation/dest/site/cs-CZ.xml @@ -761,8 +761,6 @@ Povolit dětský režim Vypnout dětský režim Zabezpečení - Toto je přehled zařízení, na kterých došlo k přihlášení k Vašemu účtu. Pokud některé zařízení nepoznáváte, můžete zrušit jeho relaci. - Nebo můžete %s. odebrat všechny relace Hrajte šachy kdekoliv Svobodný jako lichess diff --git a/translation/dest/site/cy-GB.xml b/translation/dest/site/cy-GB.xml index 6077b4463d..7fcd05e2ef 100644 --- a/translation/dest/site/cy-GB.xml +++ b/translation/dest/site/cy-GB.xml @@ -605,8 +605,6 @@ Galluogi modd plant Analluogi modd plant Diogelwch - Dyma restr o ddyfeisiau a defnyddiwyd i fewngofnodi i\'ch cyfrif. Analluogwch unrhyw sesiynnau amheus. - Fel arall gallwch %s. dirymu pob sesiwn Chwarae gwyddbwyll ym mhobman Yn ddi-dâl fel lichess diff --git a/translation/dest/site/da-DK.xml b/translation/dest/site/da-DK.xml index df50d938ed..118679aa72 100644 --- a/translation/dest/site/da-DK.xml +++ b/translation/dest/site/da-DK.xml @@ -692,8 +692,6 @@ Aktiver børnetilstand Deaktiver børnetilstand Sikkerhed - Dette er en liste over enheder, der har logget ind på din konto, Annuller enhver session du ikke genkender. - Alternativt kan du %s. Sessioner annuller alle sessioner Spil skak hvor som helst diff --git a/translation/dest/site/de-CH.xml b/translation/dest/site/de-CH.xml index 7b59d0eb20..e6dcf05159 100644 --- a/translation/dest/site/de-CH.xml +++ b/translation/dest/site/de-CH.xml @@ -692,8 +692,6 @@ Chindermodus aktiviärä Chindermodus deaktiviärä Sicherheit - Das isch ä Liischtä vo allnä Grät, wo mit dim Konto verchnüpft sind. Entfärn alli Sitzigä, wo du nöd kennsch. - Alternativ chasch au %s. Sitzigä alli Sitzigä beändä Schpill Schach überall diff --git a/translation/dest/site/de-DE.xml b/translation/dest/site/de-DE.xml index 0b41123b3d..67192a7faa 100644 --- a/translation/dest/site/de-DE.xml +++ b/translation/dest/site/de-DE.xml @@ -692,8 +692,6 @@ Kindermodus aktivieren Kindermodus deaktivieren Sicherheit - Dies ist eine Liste aller Geräte, die mit deinem Konto verknüpft sind. Entferne alle Sitzungen, die du nicht kennst. - Alternativ kannst du %s. Sitzungen alle Sitzungen beenden Spiele Schach überall diff --git a/translation/dest/site/el-GR.xml b/translation/dest/site/el-GR.xml index adcdbed7d7..04327ab01c 100644 --- a/translation/dest/site/el-GR.xml +++ b/translation/dest/site/el-GR.xml @@ -693,8 +693,6 @@ Ενεργοποίηση λειτουργίας παιδιού Απενεργοποίηση λειτουργίας παιδιού Ασφάλεια - Αυτή είναι η λίστα συσκευών συνδεδεμένες με τον λογαριασμό σας. Ανακαλέστε τις συνεδρίες που δεν αναγνωρίζετε. - Εναλλακτικά, μπορείτε να %s. Συνεδρίες ανακαλέστε όλες τις συνεδρίες Παίξτε σκάκι παντού diff --git a/translation/dest/site/en-US.xml b/translation/dest/site/en-US.xml index 51e14404d4..d88ec864f7 100644 --- a/translation/dest/site/en-US.xml +++ b/translation/dest/site/en-US.xml @@ -693,8 +693,6 @@ computer analysis, game chat and shareable URL. Enable Kid mode Disable Kid mode Security - This is a list of devices that have logged into your account. Revoke any sessions that you do not recognize. - Alternatively you can %s. revoke all sessions Play chess everywhere As free as lichess diff --git a/translation/dest/site/eo-UY.xml b/translation/dest/site/eo-UY.xml index a25d3c0b13..ee0c6e4559 100644 --- a/translation/dest/site/eo-UY.xml +++ b/translation/dest/site/eo-UY.xml @@ -673,8 +673,6 @@ Aktivigi infanan modon Malaktivigi infanan modon Sekureco - Ĉi tio estas listo da aparatoj kiuj ensalutis en vian konton. Revoku ajnan sesion kiun vi ne rekonas. - Alternative vi povas %s. revoki ĉiujn sesiojn Ludi ŝakon ĉie Tiom libera kiom lichess diff --git a/translation/dest/site/es-ES.xml b/translation/dest/site/es-ES.xml index f637b0e9f4..d0faac271c 100644 --- a/translation/dest/site/es-ES.xml +++ b/translation/dest/site/es-ES.xml @@ -692,8 +692,6 @@ Activar el modo infantil Desactivar el modo infantil Seguridad - Esta es una lista de dispositivos desde los que has iniciado sesión. Cierra todas las sesiones que no reconozcas. - O también puedes %s. Sesiones cerrar todas las sesiones Juega al ajedrez donde sea diff --git a/translation/dest/site/et-EE.xml b/translation/dest/site/et-EE.xml index c24f65acf2..15265e6b47 100644 --- a/translation/dest/site/et-EE.xml +++ b/translation/dest/site/et-EE.xml @@ -683,8 +683,6 @@ arvutianalüüsi, mängu jututoa ning jagatava URL-i. Aktiveeri lapserežiim Deaktiveeri lapserežiim Turvalisus - See on nimekiri seadmetest, mis on sellesse kasutajasse sisselogitud. Eemalda kõik sessioonid, mis ei ole tuttavad. - Võite ka %s. Sessioonid lõpetada kõik sessioonid Mängi malet kõikjal diff --git a/translation/dest/site/eu-ES.xml b/translation/dest/site/eu-ES.xml index 3e1c972ae5..2973f2bf87 100644 --- a/translation/dest/site/eu-ES.xml +++ b/translation/dest/site/eu-ES.xml @@ -692,8 +692,6 @@ Haurren modua aktibatu Haurren modua desaktibatu Segurtasuna - Zure kontua erabili duten gailuen zerre da da hau. Itxi ezagutzen ez dituzun sesio guztiak. - Gainera %s ditzakezu. Saioak sesio guztiak itxi Jokatu xakean, nonnahi diff --git a/translation/dest/site/fa-IR.xml b/translation/dest/site/fa-IR.xml index 2f91469866..42cf861f1c 100644 --- a/translation/dest/site/fa-IR.xml +++ b/translation/dest/site/fa-IR.xml @@ -676,8 +676,6 @@ فعال کردن حالت کودکانه غیر فعال کردن حالت کودکانه امنیت - این لیستی از تمامی دستگاه هایی است که وارد حساب کاربری شما شده اند.مواردی را که نمی شناسید،باطل کنید. - همچنین شما می توانید %s. جلسات باطل کردن تمامی موارد همه جا شطرنج بازی کنید diff --git a/translation/dest/site/fi-FI.xml b/translation/dest/site/fi-FI.xml index 1b8aae3a19..119943d42d 100644 --- a/translation/dest/site/fi-FI.xml +++ b/translation/dest/site/fi-FI.xml @@ -692,8 +692,6 @@ Lapsitila käyttöön Lapsitila käytöstä Turvallisuus - Lista laitteista joihin olet kirjautunut tunnuksellasi. Katkaise sessiot, joita et tunnista. - Tai voit %s. Istunnot katkaista kaikki sessiot Pelaa shakkia kaikkialla diff --git a/translation/dest/site/fo-FO.xml b/translation/dest/site/fo-FO.xml index f07bdbe1cc..f1b13531dc 100644 --- a/translation/dest/site/fo-FO.xml +++ b/translation/dest/site/fo-FO.xml @@ -675,8 +675,6 @@ Vel barnastøðu Sløkk barnastøðu Trygd - Hetta er ein listi yvir tól, ið hava ritað inn á tína kontu. Strika tær setur, tú ikki kennir aftur. - Í øðrum lagi kanst tú %s. strika allar setur (sessions) Telva allastaðni Ókeypis sum Lichess diff --git a/translation/dest/site/fr-FR.xml b/translation/dest/site/fr-FR.xml index e604a770e6..5b3dc3f9d3 100644 --- a/translation/dest/site/fr-FR.xml +++ b/translation/dest/site/fr-FR.xml @@ -692,8 +692,6 @@ Activer le mode enfants Désactiver le mode enfants Sécurité - Voici une liste de périphériques qui sont connectés à votre compte. Supprimez les sessions que vous ne reconnaissez pas. - Vous pouvez également %s. Sessions supprimer toutes les sessions Jouez aux échecs partout diff --git a/translation/dest/site/ga-IE.xml b/translation/dest/site/ga-IE.xml index cace0c8c0d..09bc002406 100644 --- a/translation/dest/site/ga-IE.xml +++ b/translation/dest/site/ga-IE.xml @@ -801,8 +801,6 @@ anailís ríomhaire, comhrá cluiche agus URL inroinnte. Cuir mód na bpáistí ar siúl Múch mód na bpáistí Slándáil - Seo liosta de na gléasanna atá logáilte isteach i do chuntas. Déan aon seisiúin nach n-aithníonn tú a chealú. - Mar rogha eile is féidir leat %s. Seisiúin cealaigh gach seisiún Imir ficheall i ngach áit diff --git a/translation/dest/site/gl-ES.xml b/translation/dest/site/gl-ES.xml index e5dc22591a..785b3bcb95 100644 --- a/translation/dest/site/gl-ES.xml +++ b/translation/dest/site/gl-ES.xml @@ -693,8 +693,6 @@ unha análise por ordenador, un chat de xogo e unha URL para compartir. Activar modo infantil Desactivar modo infantil Seguridade - Esta é unha lista de dispositivos que teñen iniciado sesión coa túa conta. Peche todas as sesións que non recoñeza. - Alternativamente podes %s. Sesións pechar todas as sesións Xoga ó xadrez en todas partes diff --git a/translation/dest/site/he-IL.xml b/translation/dest/site/he-IL.xml index 3a46d24e5c..768fb6e4ad 100644 --- a/translation/dest/site/he-IL.xml +++ b/translation/dest/site/he-IL.xml @@ -764,8 +764,6 @@ הפעל מצב ילדים בטל מצב ילדים אבטחה - רשימת המכשירים שהתחברו לחשבונך, בטל את ההתחברויות שאתה לא מכיר. - לחלופין, ניתן לעשות %s. בטל כל הפעלות שחק בשחמט בכל מקום חופשי כמו ליצ\'ס diff --git a/translation/dest/site/hi-IN.xml b/translation/dest/site/hi-IN.xml index 474bbfdb98..e14d1661ef 100644 --- a/translation/dest/site/hi-IN.xml +++ b/translation/dest/site/hi-IN.xml @@ -686,8 +686,6 @@ बच्चे मोड को सक्षम करें बच्चे मोड अक्षम करें सुरक्षा - यह उन डिवाइसों की एक सूची है जो आपके खाते में लॉग इन हैं। उन सत्रों को रद्द करें जिन्हें आप नहीं पहचानते हैं - वैकल्पिक रूप से आप %s कर सकते हैं। सभी सत्र रद्द हर जगह शतरंज खेलें Lichess जैसा मुक्त diff --git a/translation/dest/site/hr-HR.xml b/translation/dest/site/hr-HR.xml index a7a7f006e5..24c2c67205 100644 --- a/translation/dest/site/hr-HR.xml +++ b/translation/dest/site/hr-HR.xml @@ -707,8 +707,6 @@ računalnu analizu, chat partije i URL za dijeljenje. Omogući dječji način Onemogući dječji način Sigurnost - Ovo je popis uređaja koji su se prijavili u tvoj račun. Opozovi bilo koju sesiju koju ne prepoznaješ. - Alternativno, možeš %s. opozvati sve sesije Igraj šah svugdje Besplatno kao i lichess diff --git a/translation/dest/site/hu-HU.xml b/translation/dest/site/hu-HU.xml index 28a80c8511..41718b8fb8 100644 --- a/translation/dest/site/hu-HU.xml +++ b/translation/dest/site/hu-HU.xml @@ -692,8 +692,6 @@ Gyereküzemmód bekapcsolása Gyereküzemmód kikapcsolása Biztonság - Ezen a listán megtalálod az összes eszközt, amin be vagy jelentkezve. Ha nem ismersz fel egy eszközt, vond vissza. - Ha úgy gondolod %s. Munkamenetek eltávolíthatod az összes eszközt Sakkozz bárhol! diff --git a/translation/dest/site/ia-IA.xml b/translation/dest/site/ia-IA.xml index e2d31b3857..424610fe83 100644 --- a/translation/dest/site/ia-IA.xml +++ b/translation/dest/site/ia-IA.xml @@ -676,8 +676,6 @@ Activar modo infantil Disactivar modo infantil Securitate - Isto es un lista de dispositivos que tu ha registrate in tu conto. Revoca qualcunque session que tu non recognosce. - Alternativemente tu pote %s. revocar tote sessiones Joca chacos ubique! Tanto gratis como Lichess diff --git a/translation/dest/site/id-ID.xml b/translation/dest/site/id-ID.xml index e55d84b475..73cb9201fc 100644 --- a/translation/dest/site/id-ID.xml +++ b/translation/dest/site/id-ID.xml @@ -656,8 +656,6 @@ Mengaktifkan mode anak Menonaktifkan modus anak Keamanan - Ini adalah daftar perangkat yang memiliki login ke akun Anda. Batalkan setiap sesi yang Anda tidak mengenali. - Atau Anda dapat %s. Sesi mencabut semua sesi Bermain catur dimanapun diff --git a/translation/dest/site/is-IS.xml b/translation/dest/site/is-IS.xml index d473200042..e2ee201503 100644 --- a/translation/dest/site/is-IS.xml +++ b/translation/dest/site/is-IS.xml @@ -647,8 +647,6 @@ Kveikja á krakkaham Slökkva á krakkaham Öryggi - Þetta er listi af tækjum sem hafa skráð sig inn á reikninginn þinn. Lokaðu á allar tengingar sem þú þekkir ekki. - Þú getur líka %s. lokað á allar tengingar Tefldu hvar sem er Eins frítt og lichess diff --git a/translation/dest/site/it-IT.xml b/translation/dest/site/it-IT.xml index 0272a4c450..c7eb41133f 100644 --- a/translation/dest/site/it-IT.xml +++ b/translation/dest/site/it-IT.xml @@ -693,8 +693,6 @@ analizzarla con il computer, commentarla in chat, e condividerla tramite un indi Attiva \"modalità bambino\" Disattiva \"modalità bambino\" Sicurezza - Questa è la lista di dispositivi collegata al tuo account. Rimuovi ogni istanza che non riconosci. - In alternativa è possibile %s. rimuovi tutte le sessioni Gioca a scacchi ovunque Gratuita, proprio come Lichess diff --git a/translation/dest/site/ja-JP.xml b/translation/dest/site/ja-JP.xml index 563fe37986..f1d2ebfc9e 100644 --- a/translation/dest/site/ja-JP.xml +++ b/translation/dest/site/ja-JP.xml @@ -657,8 +657,6 @@ キッズモードを有効化 キッズモードを無効化 セキュリティ - これはあなたのアカウントにログインしたデバイスの一覧です。覚えのないセッションは削除してください。 - あるいは %s こともできます。  セッション すべてのセッションを取り消す どこでもチェスを対局 diff --git a/translation/dest/site/kk-KZ.xml b/translation/dest/site/kk-KZ.xml index ceb9906fa1..ceeb58fb69 100644 --- a/translation/dest/site/kk-KZ.xml +++ b/translation/dest/site/kk-KZ.xml @@ -673,8 +673,6 @@ Балалық нұсқаны іске қосу Балалық нұсқаны сөндіру Қауіпсіздік - Бұл – сіздің тіркелгіңізге жалғанған құрылғылар тізімі. Арасында бейтаныс жайт болса, оны ажыратыңыз. - Сонымен қатар, сіз %s-ға дәрмендісіз. бәрін ажырату Шахматты кез-келген жерде ойнаңыз Личес-тей тегін diff --git a/translation/dest/site/kmr-TR.xml b/translation/dest/site/kmr-TR.xml index 95caddd9b3..d62f32871a 100644 --- a/translation/dest/site/kmr-TR.xml +++ b/translation/dest/site/kmr-TR.xml @@ -680,8 +680,6 @@ Moda zarokan aktîv bike Moda zarokan neçalak bike Ewlehî - Ev lîsteyeke amûrên ku têketine hesaba te ne. Danişînên ku tu nas nakî betal bike. - Alternatîven tu dikarî %s. hemû danişînan betal bikî Kişikê bilîze li her derî Bi qasî lichessê azad diff --git a/translation/dest/site/ko-KR.xml b/translation/dest/site/ko-KR.xml index 7e28ec59e4..18d0629330 100644 --- a/translation/dest/site/ko-KR.xml +++ b/translation/dest/site/ko-KR.xml @@ -654,8 +654,6 @@ 아이 모드 활성화하기 아이 모드 비활성화하기 보안 - 사용자 계정에 로그인한 장치의 목록입니다. 이 중 낯선 장치가 보이면 세션을 취소하세요. - %s를 하셔도 됩니다. 모든 세션 비활성화 어디에서나 체스를 즐기세요 lichess처럼 무료입니다 diff --git a/translation/dest/site/lt-LT.xml b/translation/dest/site/lt-LT.xml index 96440f802d..2de81c880d 100644 --- a/translation/dest/site/lt-LT.xml +++ b/translation/dest/site/lt-LT.xml @@ -765,8 +765,6 @@ kompiuterinę analizę, partijos pokalbį bei URL dalinimuisi. Įjungti vaiko veikseną Išjungti vaiko veikseną Saugumas - Toliau pateikiamas sąrašas įrenginių, kurie yra prisijungę prie jūsų paskyros. Panaikinkite visus seansus, kurių neatpažįstate. - Arba galite %s. Sesijos atšaukti visus seansus Žaiskite šachmatais visur diff --git a/translation/dest/site/lv-LV.xml b/translation/dest/site/lv-LV.xml index f3b6038145..96dd1b8dea 100644 --- a/translation/dest/site/lv-LV.xml +++ b/translation/dest/site/lv-LV.xml @@ -728,8 +728,6 @@ Iespējot Bērnu režīmu Atspējot Bērnu režīmu Drošība - Šis ir saraksts ar visām ierīcēm, kuras pieslēgušās jūsu kontam. Dzēsiet jebkuru sesiju, kuru neatpazīstat. - Varat arī %s. Sesijas dzēst visas sesijas Spēlējiet šahu jebkur diff --git a/translation/dest/site/mk-MK.xml b/translation/dest/site/mk-MK.xml index 79cba4ee69..b008b6b52a 100644 --- a/translation/dest/site/mk-MK.xml +++ b/translation/dest/site/mk-MK.xml @@ -666,8 +666,6 @@ Вклучи го детскиот режим Исклучи го детскиот режим Безбедност - Ова е листа на уреди кои се приклучиле на вашата сметка. Избришете ги сесиите кои ви се непознати. - Исто така можете да ги %s. избришете сите сесии Играј шах секаде Бесплатно како lichess diff --git a/translation/dest/site/ml-IN.xml b/translation/dest/site/ml-IN.xml index fee9cd0ea8..a765697935 100644 --- a/translation/dest/site/ml-IN.xml +++ b/translation/dest/site/ml-IN.xml @@ -688,8 +688,6 @@ കിഡ്-മോഡ് സജ്ജമാക്കുക കിഡ്-മോഡ് ഒഴിവാക്കുക സുരക്ഷിതത്വം - ഇത് നിങ്ങളുടെ അക്കൗണ്ടിൽ ലോഗിൻ ചെയ്ത ഉപകരണങ്ങളാണ്. നിങ്ങൾ അറിയാത്ത വല്ല ഉപകരണങ്ങളും ഇതിൽ ഉണ്ടെങ്കിൽ ആ ഉപകരണം ഇതിൽ നിന്നും പിൻവലിക്കാൻ സാധിക്കുന്നതാണ്. - ഇതിനുപുറമേ നിങ്ങൾക്ക് %s പറ്റും. എല്ലാ സെഷനും പിൻവലിക്കാൻ എല്ലായിടത്തും ചതുരംഗം കളിക്കൂ Lichess തികച്ചും സ്വതന്ത്രമാണ് diff --git a/translation/dest/site/mn-MN.xml b/translation/dest/site/mn-MN.xml index 912c470dc0..36d078061a 100644 --- a/translation/dest/site/mn-MN.xml +++ b/translation/dest/site/mn-MN.xml @@ -635,8 +635,6 @@ Хүүхдэд ээлтэй хувилбар руу шилжүүл Хүүхдэд ээлтэй хувилбараас гарах Хамгаалалт - Жагсаалтад таны нэвтэрсэн төхөөрөмжүүд бүртгэгдсэн байгаа. Таны мэдэхгүй хандалт байгаа бол хүчингүй болгоно уу. - Эсвэл та %s. бүх хандалтыг хүчингүй болгох Хаа газар шатар тоглоцгооё Ямар ч үнэ төлбөргүй diff --git a/translation/dest/site/mr-IN.xml b/translation/dest/site/mr-IN.xml index 4da421aaff..1bcc9f9edc 100644 --- a/translation/dest/site/mr-IN.xml +++ b/translation/dest/site/mr-IN.xml @@ -692,8 +692,6 @@ Kid Mode सुरू करा Kid Mode बंद करा सुरक्षितता - ही आपल्या खात्यात लॉग इन केलेल्या उपकरणांची सूची आहे. आपण ओळखत नसलेली कोणतीही सत्रे मागे घ्या. - याव्यतिरिक्त आपण हे करू शकता %s. सत्र सर्व सत्र रद्द करा सगळीकडे बुद्धिबळ खेळा diff --git a/translation/dest/site/ms-MY.xml b/translation/dest/site/ms-MY.xml index 146e749ffd..adf6a990ec 100644 --- a/translation/dest/site/ms-MY.xml +++ b/translation/dest/site/ms-MY.xml @@ -458,8 +458,6 @@ Pasang mod kanak-kanak Lumpuhkan mod kanak-kanak Keselamatan - Ini adalah senarai alat mudah alih yang sudah log dalam akaun anda. Batalkan sesi yang anda tidak kenal. - Secara alternatif, anda boleh %s. batalkan semua sesi Main catur dimana-mana Percuma seperti Lichess diff --git a/translation/dest/site/nb-NO.xml b/translation/dest/site/nb-NO.xml index af6831e2f1..164e43b3ce 100644 --- a/translation/dest/site/nb-NO.xml +++ b/translation/dest/site/nb-NO.xml @@ -692,8 +692,6 @@ Skru på barnemodus Skru av barnemodus Sikkerhet - Dette er en liste over enheter du har logget inn på med din konto. Lukk alle økter du ikke gjenkjenner. - Ellers kan du %s. Økter lukke alle økter Spill sjakk overalt diff --git a/translation/dest/site/ne-NP.xml b/translation/dest/site/ne-NP.xml index b87da4961d..abfb12e991 100644 --- a/translation/dest/site/ne-NP.xml +++ b/translation/dest/site/ne-NP.xml @@ -665,8 +665,6 @@ बाल मोड लागु गरौं बाल मोड बन्द गरौं सुरक्षा - यो सुची तपाइको खाताबाट लीचेसमा लग इन गरेका उपकरणहरुको हो। तपाइले नचिन्ने सत्रहरु हटाउनुहोस्। - वैकल्पिक रूपमा तपाइ %s गर्न सक्नुहुनेछ। सबै सत्र रद्द गर्नुहोस् सबै ठाउँमा बुद्धिचाल खेलौं लीचेस जस्तै सित्तैमा diff --git a/translation/dest/site/nl-NL.xml b/translation/dest/site/nl-NL.xml index fb04870010..ed663cce13 100644 --- a/translation/dest/site/nl-NL.xml +++ b/translation/dest/site/nl-NL.xml @@ -692,8 +692,6 @@ Activeer Kindermodus Deactiveer Kindermodus Beveiliging - Dit is een lijst van apparaten die zijn aangemeld op je account. Stop alle sessies die je niet herkent. - Als alternatief kunt u %s. Sessies alle sessies intrekken Schaak overal diff --git a/translation/dest/site/nn-NO.xml b/translation/dest/site/nn-NO.xml index 810a5fafe0..59ee76253c 100644 --- a/translation/dest/site/nn-NO.xml +++ b/translation/dest/site/nn-NO.xml @@ -693,7 +693,6 @@ få en computeranalyse, chatte eller dele ein URL. Skru av barnemodus Tryggleik Dette er ei liste over einingar du har logga inn på med din konto. Lukk dei du ikkje dreg kjensel på. - Alternativt kan du %s. Økter lukke alle økter Spel sjakk overalt diff --git a/translation/dest/site/vi-VN.xml b/translation/dest/site/vi-VN.xml index da267a9b55..e4337c55b3 100644 --- a/translation/dest/site/vi-VN.xml +++ b/translation/dest/site/vi-VN.xml @@ -653,7 +653,6 @@ Kích hoạt chế độ trẻ em Tắt chế độ trẻ em Bảo mật - Đây là danh sách các thiết bị đã đăng nhập bằng tài khoản của bạn. Hãy xóa những phiên đăng nhập mà bạn không hận ra. Ngoài ra, bạn có thể %s. xóa toàn bộ phiên đăng nhập Chơi cờ ở bất cứ đâu diff --git a/translation/dest/site/zh-CN.xml b/translation/dest/site/zh-CN.xml index e8012761b6..85bb6edc0f 100644 --- a/translation/dest/site/zh-CN.xml +++ b/translation/dest/site/zh-CN.xml @@ -654,7 +654,6 @@ 打开儿童模式 关闭儿童模式 安全 - 以下是通过您的帐户登录的设备列表。请注销所有您不认为是您本人开启的会话。 或者你可以 %s。 注销所有会话 在任何地方下棋! diff --git a/translation/dest/site/zh-TW.xml b/translation/dest/site/zh-TW.xml index f21133478f..2e4d0c24d1 100644 --- a/translation/dest/site/zh-TW.xml +++ b/translation/dest/site/zh-TW.xml @@ -652,7 +652,6 @@ 啟用兒童模式 停用兒童模式 資訊安全相關設定 - 這是已登入到您帳戶的裝置列表,您可以登出任何您無法識別的裝置。 或者,您可以%s 登出所有裝置 随处下棋! From 95a796174752ff2f672cd60059cd62c87871b18f Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Mon, 28 Jun 2021 10:35:01 +0200 Subject: [PATCH 39/64] trans-lint: Handle de-CH correctly --- bin/trans-lint.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/trans-lint.py b/bin/trans-lint.py index f66b00f7bd..982811bf38 100755 --- a/bin/trans-lint.py +++ b/bin/trans-lint.py @@ -26,7 +26,7 @@ class Report: def short_lang(lang): - if lang in ["ne-NP", "la-LA", "nn-NO", "zh-CN", "ur-PK", "zh-TW", "tlh-AA", "ml-IN", "pt-BR", "tt-RU"]: + if lang in ["ne-NP", "la-LA", "nn-NO", "zh-CN", "ur-PK", "zh-TW", "tlh-AA", "ml-IN", "pt-BR", "tt-RU", "de-CH"]: return lang.replace("-", "").lower() elif lang == "kab-DZ": return "kaby" From 2c7acf5ced0773b7b6ca5e8da7e43ddbda3ab3ae Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Mon, 28 Jun 2021 12:29:02 +0200 Subject: [PATCH 40/64] noImplicitAny for ui/lobby --- ui/lobby/src/form.ts | 2 +- ui/lobby/src/hookRepo.ts | 15 ++++++++------- ui/lobby/src/interfaces.ts | 20 ++++++++++++++++++-- ui/lobby/src/poolRangeStorage.ts | 6 +++--- ui/lobby/src/seekRepo.ts | 3 ++- ui/lobby/src/setup.ts | 17 ++++++++++------- ui/lobby/src/socket.ts | 4 ++-- ui/lobby/src/variant.ts | 4 ++-- ui/lobby/src/view/realTime/chart.ts | 4 ++-- ui/lobby/src/view/realTime/list.ts | 10 +++++----- ui/lobby/tsconfig.json | 5 +---- 11 files changed, 54 insertions(+), 36 deletions(-) diff --git a/ui/lobby/src/form.ts b/ui/lobby/src/form.ts index f2f0291e1a..7e56c19b40 100644 --- a/ui/lobby/src/form.ts +++ b/ui/lobby/src/form.ts @@ -20,7 +20,7 @@ export const toFormObject = (lines: FormLines): FormObject => const i = k.indexOf('['); const fk = i > 0 ? k.slice(0, i) : k; return i > 0 ? { ...o, [fk]: [...(o[fk] || []), lines[k]] } : { ...o, [fk]: lines[k] }; - }, {}); + }, {} as FormObject); export const makeStore = (storage: LichessStorage): FormStore => ({ get: () => JSON.parse(storage.get() || 'null') as FormLines, diff --git a/ui/lobby/src/hookRepo.ts b/ui/lobby/src/hookRepo.ts index bdf8a06c3d..b79267a9cf 100644 --- a/ui/lobby/src/hookRepo.ts +++ b/ui/lobby/src/hookRepo.ts @@ -1,11 +1,11 @@ import LobbyController from './ctrl'; import { Hook } from './interfaces'; -function ratingOrder(a, b) { +function ratingOrder(a: Hook, b: Hook) { return (a.rating || 0) > (b.rating || 0) ? -1 : 1; } -function timeOrder(a, b) { +function timeOrder(a: Hook, b: Hook) { return a.t < b.t ? -1 : 1; } @@ -13,16 +13,17 @@ export function sort(ctrl: LobbyController, hooks: Hook[]) { hooks.sort(ctrl.sort === 'time' ? timeOrder : ratingOrder); } -export function init(hook: Hook) { +export function init(hook: Hook): Hook { hook.action = hook.sri === lichess.sri ? 'cancel' : 'join'; hook.variant = hook.variant || 'standard'; + return hook; } export function initAll(ctrl: LobbyController) { ctrl.data.hooks.forEach(init); } -export function add(ctrl: LobbyController, hook) { +export function add(ctrl: LobbyController, hook: Hook) { init(hook); ctrl.data.hooks.push(hook); } @@ -30,15 +31,15 @@ export function setAll(ctrl: LobbyController, hooks: Hook[]) { ctrl.data.hooks = hooks; initAll(ctrl); } -export function remove(ctrl: LobbyController, id) { +export function remove(ctrl: LobbyController, id: string) { ctrl.data.hooks = ctrl.data.hooks.filter(h => h.id !== id); ctrl.stepHooks.forEach(h => { if (h.id === id) h.disabled = true; }); } -export function syncIds(ctrl: LobbyController, ids) { +export function syncIds(ctrl: LobbyController, ids: string[]) { ctrl.data.hooks = ctrl.data.hooks.filter(h => ids.includes(h.id)); } -export function find(ctrl: LobbyController, id) { +export function find(ctrl: LobbyController, id: string) { return ctrl.data.hooks.find(h => h.id === id); } diff --git a/ui/lobby/src/interfaces.ts b/ui/lobby/src/interfaces.ts index 430fd15c77..027ccbb014 100644 --- a/ui/lobby/src/interfaces.ts +++ b/ui/lobby/src/interfaces.ts @@ -11,7 +11,23 @@ interface Untyped { [key: string]: any; } -export interface Hook extends Untyped {} +export interface Hook { + id: string; + sri: string; + clock: string; + t: number; // time + s: number; // speed + i: number; // increment + variant: VariantKey; + perf: Exclude; + prov?: true; // is rating provisional + u?: string; // username + rating?: number; + ra?: 1; // rated + c?: Color; + action: 'cancel' | 'join'; + disabled?: boolean; +} export interface Seek { id: string; @@ -21,7 +37,7 @@ export interface Seek { days?: number; color: string; perf: { - key: string; + key: Exclude; }; provisional?: boolean; variant?: string; diff --git a/ui/lobby/src/poolRangeStorage.ts b/ui/lobby/src/poolRangeStorage.ts index 45824f290f..62a4d39a15 100644 --- a/ui/lobby/src/poolRangeStorage.ts +++ b/ui/lobby/src/poolRangeStorage.ts @@ -1,13 +1,13 @@ -function makeKey(poolId) { +function makeKey(poolId: string) { return 'lobby-pool-range-' + poolId; } -export function set(poolId, range) { +export function set(poolId: string, range?: string) { const key = makeKey(poolId); if (range) lichess.storage.set(key, range); else lichess.storage.remove(key); } -export function get(poolId) { +export function get(poolId: string) { return lichess.storage.get(makeKey(poolId)); } diff --git a/ui/lobby/src/seekRepo.ts b/ui/lobby/src/seekRepo.ts index 0b1e5078bd..37742df7ed 100644 --- a/ui/lobby/src/seekRepo.ts +++ b/ui/lobby/src/seekRepo.ts @@ -1,6 +1,7 @@ import LobbyController from './ctrl'; +import { Seek } from './interfaces'; -function order(a, b) { +function order(a: Seek, b: Seek) { return a.rating > b.rating ? -1 : 1; } diff --git a/ui/lobby/src/setup.ts b/ui/lobby/src/setup.ts index 15587d4872..c18fb0cc14 100644 --- a/ui/lobby/src/setup.ts +++ b/ui/lobby/src/setup.ts @@ -4,12 +4,14 @@ import debounce from 'common/debounce'; import * as xhr from 'common/xhr'; import LobbyController from './ctrl'; +type Stores = { + hook: FormStore; + friend: FormStore; + ai: FormStore; +}; + export default class Setup { - stores: { - hook: FormStore; - friend: FormStore; - ai: FormStore; - }; + stores: Stores; constructor(readonly makeStorage: (name: string) => LichessStorage, readonly root: LobbyController) { this.stores = { @@ -19,7 +21,8 @@ export default class Setup { }; } - private save = (form: HTMLFormElement) => this.stores[form.getAttribute('data-type')!].set(toFormLines(form)); + private save = (form: HTMLFormElement) => + this.stores[form.getAttribute('data-type') as keyof Stores].set(toFormLines(form)); private sliderTimes = [ 0, @@ -174,7 +177,7 @@ export default class Setup { }, save = () => this.save($form[0] as HTMLFormElement); - const c = this.stores[typ].get(); + const c = this.stores[typ as keyof Stores].get(); if (c) { Object.keys(c).forEach(k => { $form.find(`[name="${k}"]`).each(function (this: HTMLInputElement) { diff --git a/ui/lobby/src/socket.ts b/ui/lobby/src/socket.ts index e1e8c849eb..b417cb6b8a 100644 --- a/ui/lobby/src/socket.ts +++ b/ui/lobby/src/socket.ts @@ -1,7 +1,7 @@ import * as xhr from './xhr'; import * as hookRepo from './hookRepo'; import LobbyController from './ctrl'; -import { Hook, PoolMember } from './interfaces'; +import { PoolMember, Hook } from './interfaces'; interface Handlers { [key: string]: (data: any) => void; @@ -31,7 +31,7 @@ export default class LobbySocket { ctrl.redraw(); }, hli(ids: string) { - hookRepo.syncIds(ctrl, ids.match(/.{8}/g)); + hookRepo.syncIds(ctrl, ids.match(/.{8}/g) || []); ctrl.redraw(); }, reload_seeks() { diff --git a/ui/lobby/src/variant.ts b/ui/lobby/src/variant.ts index 106a987076..6e974213ad 100644 --- a/ui/lobby/src/variant.ts +++ b/ui/lobby/src/variant.ts @@ -13,12 +13,12 @@ const variantConfirms = { 'This is a Crazyhouse game!\n\nEvery time a piece is captured, the capturing player gets a piece of the same type and of their color in their pocket.', }; -const storageKey = key => 'lobby.variant.' + key; +const storageKey = (key: string) => 'lobby.variant.' + key; export default function (variant?: string) { return ( !variant || - Object.keys(variantConfirms).every(function (key) { + Object.keys(variantConfirms).every(function (key: keyof typeof variantConfirms) { if (variant === key && !lichess.storage.get(storageKey(key))) { const c = confirm(variantConfirms[key]); if (c) lichess.storage.set(storageKey(key), '1'); diff --git a/ui/lobby/src/view/realTime/chart.ts b/ui/lobby/src/view/realTime/chart.ts index 0bb86ceaf0..6489d4ff1b 100644 --- a/ui/lobby/src/view/realTime/chart.ts +++ b/ui/lobby/src/view/realTime/chart.ts @@ -8,7 +8,7 @@ const percents = (v: number) => v + '%'; const ratingLog = (a: number) => Math.log(a / 150 + 1); -function ratingY(e: number) { +function ratingY(e?: number) { const rating = Math.max(1000, Math.min(2200, e || 1500)); let ratio: number; const mid = 2 / 5; @@ -42,7 +42,7 @@ function renderPlot(ctrl: LobbyController, hook: Hook) { hook: { insert(vnode) { $(vnode.elm as HTMLElement).powerTip({ - placement: hook.rating > 1800 ? 'se' : 'ne', + placement: hook.rating && hook.rating > 1800 ? 'se' : 'ne', closeDelay: 200, popupId: 'hook', preRender() { diff --git a/ui/lobby/src/view/realTime/list.ts b/ui/lobby/src/view/realTime/list.ts index 3cdb1d5aa3..a4233d1447 100644 --- a/ui/lobby/src/view/realTime/list.ts +++ b/ui/lobby/src/view/realTime/list.ts @@ -11,7 +11,7 @@ function renderHook(ctrl: LobbyController, hook: Hook) { 'tr.hook.' + hook.action, { key: hook.id, - class: { disabled: hook.disabled }, + class: { disabled: !!hook.disabled }, attrs: { title: hook.disabled ? '' @@ -45,17 +45,17 @@ function renderHook(ctrl: LobbyController, hook: Hook) { ); } -function isStandard(value) { - return function (hook) { +function isStandard(value: boolean) { + return function (hook: Hook) { return (hook.variant === 'standard') === value; }; } -function isMine(hook) { +function isMine(hook: Hook) { return hook.action === 'cancel'; } -function isNotMine(hook) { +function isNotMine(hook: Hook) { return !isMine(hook); } diff --git a/ui/lobby/tsconfig.json b/ui/lobby/tsconfig.json index d58bc6e3ad..4eb37fee05 100644 --- a/ui/lobby/tsconfig.json +++ b/ui/lobby/tsconfig.json @@ -1,6 +1,3 @@ { - "extends": "../tsconfig.base.json", - "compilerOptions": { - "noImplicitAny": false - } + "extends": "../tsconfig.base.json" } From a9183159aa9029d66e6df7a5ac6e335d2b8e13d1 Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Mon, 28 Jun 2021 12:31:04 +0200 Subject: [PATCH 41/64] noImplicitAny for simul --- ui/simul/tsconfig.json | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/ui/simul/tsconfig.json b/ui/simul/tsconfig.json index 04f49f21c0..4eb37fee05 100644 --- a/ui/simul/tsconfig.json +++ b/ui/simul/tsconfig.json @@ -1,7 +1,3 @@ { - "extends": "../tsconfig.base.json", - "compilerOptions": { - "noImplicitAny": false, - "noImplicitReturns": false - } + "extends": "../tsconfig.base.json" } From 34b949a4082c36597c4db5b479fda3358363d16b Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Mon, 28 Jun 2021 12:46:22 +0200 Subject: [PATCH 42/64] ui/lobby: Remove Untyped --- ui/lobby/src/ctrl.ts | 4 ++-- ui/lobby/src/interfaces.ts | 17 +++++++++++------ ui/lobby/src/store.ts | 4 ++-- ui/lobby/src/view/tabs.ts | 2 +- ui/tournament/tsconfig.json | 6 +----- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/ui/lobby/src/ctrl.ts b/ui/lobby/src/ctrl.ts index 35f468af91..d42c91a3a8 100644 --- a/ui/lobby/src/ctrl.ts +++ b/ui/lobby/src/ctrl.ts @@ -36,7 +36,7 @@ export default class LobbyController { this.data.hooks = []; this.pools = opts.pools; this.playban = opts.playban; - this.isBot = opts.data.me && opts.data.me.isBot; + this.isBot = !!opts.data.me?.isBot; this.filter = new Filter(lichess.storage.make('lobby.filter'), this); this.setup = new Setup(lichess.storage.make, this); @@ -44,7 +44,7 @@ export default class LobbyController { seekRepo.initAll(this); this.socket = new LobbySocket(opts.socketSend, this); - this.stores = makeStores(this.data.me ? this.data.me.username.toLowerCase() : null); + this.stores = makeStores(this.data.me?.username.toLowerCase()); (this.tab = this.isBot ? 'now_playing' : this.stores.tab.get()), (this.mode = this.stores.mode.get()), (this.sort = this.stores.sort.get()), diff --git a/ui/lobby/src/interfaces.ts b/ui/lobby/src/interfaces.ts index 027ccbb014..dbf8fda4bf 100644 --- a/ui/lobby/src/interfaces.ts +++ b/ui/lobby/src/interfaces.ts @@ -7,10 +7,6 @@ export type Sort = 'rating' | 'time'; export type Mode = 'list' | 'chart'; export type Tab = 'pools' | 'real_time' | 'seeks' | 'now_playing'; -interface Untyped { - [key: string]: any; -} - export interface Hook { id: string; sri: string; @@ -51,17 +47,26 @@ export interface Pool { perf: string; } -export interface LobbyOpts extends Untyped { +export interface LobbyOpts { element: HTMLElement; socketSend: SocketSend; pools: Pool[]; blindMode: boolean; + playban: boolean; + data: LobbyData; + i18n: I18nDict; + trans: Trans; } -export interface LobbyData extends Untyped { +export interface LobbyData { hooks: Hook[]; seeks: Seek[]; + nbNowPlaying: number; nowPlaying: NowPlaying[]; + me?: { + isBot: boolean; + username: string; + } } export interface NowPlaying { diff --git a/ui/lobby/src/store.ts b/ui/lobby/src/store.ts index 4e23174807..8e3374d4b3 100644 --- a/ui/lobby/src/store.ts +++ b/ui/lobby/src/store.ts @@ -38,7 +38,7 @@ const sort: Config = { }, }; -function makeStore(conf: Config, userId: string): Store { +function makeStore(conf: Config, userId?: string): Store { const fullKey = conf.key + ':' + (userId || '-'); return { set(v: string): A { @@ -52,7 +52,7 @@ function makeStore(conf: Config, userId: string): Store { }; } -export function make(userId: string): Stores { +export function make(userId?: string): Stores { return { tab: makeStore(tab, userId), mode: makeStore(mode, userId), diff --git a/ui/lobby/src/view/tabs.ts b/ui/lobby/src/view/tabs.ts index 1a4e6a1edf..8d599c256f 100644 --- a/ui/lobby/src/view/tabs.ts +++ b/ui/lobby/src/view/tabs.ts @@ -27,7 +27,7 @@ export default function (ctrl: LobbyController) { ctrl.isBot ? undefined : tab(ctrl, 'seeks', active, [ctrl.trans.noarg('correspondence')]), active === 'now_playing' || nbPlaying || ctrl.isBot ? tab(ctrl, 'now_playing', active, [ - ctrl.trans.plural('nbGamesInPlay', nbPlaying >= 100 ? '100+' : nbPlaying), + ...ctrl.trans.vdomPlural('nbGamesInPlay', nbPlaying, nbPlaying >= 100 ? '100+' : nbPlaying.toString()), myTurnPovsNb > 0 ? h('i.unread', myTurnPovsNb >= 9 ? '9+' : myTurnPovsNb) : null, ]) : null, diff --git a/ui/tournament/tsconfig.json b/ui/tournament/tsconfig.json index 04f49f21c0..4eb37fee05 100644 --- a/ui/tournament/tsconfig.json +++ b/ui/tournament/tsconfig.json @@ -1,7 +1,3 @@ { - "extends": "../tsconfig.base.json", - "compilerOptions": { - "noImplicitAny": false, - "noImplicitReturns": false - } + "extends": "../tsconfig.base.json" } From b95644dd8aee9467bfaafbaf9a961a61705f4217 Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Mon, 28 Jun 2021 14:16:34 +0200 Subject: [PATCH 43/64] noImplicitAny for ui/tournament --- ui/tournament/src/ctrl.ts | 15 ++- ui/tournament/src/interfaces.ts | 149 ++++++++++++++++++++++++--- ui/tournament/src/pagination.ts | 8 +- ui/tournament/src/socket.ts | 3 +- ui/tournament/src/tournament.ts | 2 +- ui/tournament/src/view/arena.ts | 20 ++-- ui/tournament/src/view/button.ts | 5 +- ui/tournament/src/view/finished.ts | 11 +- ui/tournament/src/view/header.ts | 16 +-- ui/tournament/src/view/playerInfo.ts | 9 +- ui/tournament/src/view/started.ts | 2 +- ui/tournament/src/view/util.ts | 10 +- 12 files changed, 193 insertions(+), 57 deletions(-) diff --git a/ui/tournament/src/ctrl.ts b/ui/tournament/src/ctrl.ts index 8146bf49dd..c13b0eecfe 100644 --- a/ui/tournament/src/ctrl.ts +++ b/ui/tournament/src/ctrl.ts @@ -3,7 +3,7 @@ import * as xhr from './xhr'; import { myPage, players } from './pagination'; import * as sound from './sound'; import * as tour from './tournament'; -import { TournamentData, TournamentOpts, Pages, PlayerInfo, TeamInfo, Standing } from './interfaces'; +import { TournamentData, TournamentOpts, Pages, PlayerInfo, TeamInfo, Standing, Player } from './interfaces'; // eslint-disable-next-line no-duplicate-imports import { TournamentSocket } from './socket'; @@ -22,7 +22,7 @@ export default class TournamentController { lastPageDisplayed: number | undefined; focusOnMe: boolean; joinSpinner = false; - playerInfo: PlayerInfo = {}; + playerInfo: { id?: string; player?: Player; data?: PlayerInfo } = {}; teamInfo: CtrlTeamInfo = {}; disableClicks = true; searching = false; @@ -55,10 +55,10 @@ export default class TournamentController { reload = (data: TournamentData): void => { // we joined a private tournament! Reload the page to load the chat - if (!this.data.me && data.me && this.data['private']) lichess.reload(); + if (!this.data.me && data.me && this.data.private) lichess.reload(); this.data = { ...this.data, ...data }; this.data.me = data.me; // to account for removal on withdraw - if (data.playerInfo && data.playerInfo.player.id === this.playerInfo.id) this.playerInfo.data = data.playerInfo; + if (data.playerInfo?.player.id === this.playerInfo.id) this.playerInfo.data = data.playerInfo!; this.loadPage(data.standing); if (this.focusOnMe) this.scrollToMe(); sound.end(data); @@ -159,19 +159,18 @@ export default class TournamentController { if (this.focusOnMe) this.scrollToMe(); }; - showPlayerInfo = player => { + showPlayerInfo = (player: Player) => { if (this.data.secondsToStart) return; const userId = player.name.toLowerCase(); this.teamInfo.requested = undefined; this.playerInfo = { - id: this.playerInfo.id === userId ? null : userId, + id: this.playerInfo.id === userId ? undefined : userId, player: player, - data: null, }; if (this.playerInfo.id) xhr.playerInfo(this, this.playerInfo.id); }; - setPlayerInfoData = data => { + setPlayerInfoData = (data: PlayerInfo) => { if (data.player.id === this.playerInfo.id) this.playerInfo.data = data; }; diff --git a/ui/tournament/src/interfaces.ts b/ui/tournament/src/interfaces.ts index 155013429f..9b9bfae901 100644 --- a/ui/tournament/src/interfaces.ts +++ b/ui/tournament/src/interfaces.ts @@ -3,28 +3,102 @@ import { VNode } from 'snabbdom'; export type MaybeVNode = VNode | string | null | undefined; export type MaybeVNodes = MaybeVNode[]; -interface Untyped { - [key: string]: any; +export interface StandingPlayer extends SimplePlayer { + id: string; + withdraw: boolean; + score: number; + fire: boolean; + rank: number; + sheet: { + fire: boolean; + total: number; + scores: unknown[]; + }; + nb: Nb; + team?: string; } -export interface StandingPlayer extends Untyped {} - export interface Standing { failed?: boolean; page: number; players: StandingPlayer[]; } -export interface TournamentOpts extends Untyped { +export interface TournamentOpts { element: HTMLElement; socketSend: SocketSend; + data: TournamentData; + i18n: I18nDict; + trans: Trans; + classes: string | null; + $side: Cash; + $faq: Cash; + userId?: string; + chat?: any; } -export interface TournamentData extends Untyped { +export interface TournamentData { + id: string; + socketVersion: number; + fullName: string; teamBattle?: TeamBattle; teamStanding?: RankedTeam[]; myTeam?: RankedTeam; featured?: FeaturedGame; + standing: Standing; + perf: { + key: Exclude; + }; + me?: { + rank: number; + username: string; + gameId: string; + withdraw: boolean; + pauseDelay?: number; + }; + playerInfo?: PlayerInfo; + private: boolean; + pairingsClosed: boolean; + verdicts: { + accepted: boolean; + list: { condition: string; verdict: string }[]; + }; + secondsToStart?: number; + nbPlayers: number; + podium?: PodiumPlayer[]; + berserkable: boolean; + isStarted: boolean; + isFinished: boolean; + isRecentlyFinished: boolean; + secondsToFinish?: number; + startsAt: number; + defender?: string; + spotlight?: { + iconImg: string; + iconFont: string; + }; + schedule?: { + freq: 'shield' | 'marathon'; + }; + quote: { + author: string; + text: string; + }; + greatPlayer?: { + name: string; + url: string; + }; + stats?: { + games: number; + moves: number; + whiteWins: number; + blackWins: number; + draws: number; + berserks: number; + averageRating: number; + }; + duels: Duel[]; + duelTeams?: DuelTeams; } export interface FeaturedGame { @@ -46,11 +120,15 @@ export interface FeaturedGame { winner?: Color; } -interface FeaturedPlayer { - rank: number; +export interface SimplePlayer { name: string; rating: number; title?: string; + provisional?: boolean; +} + +interface FeaturedPlayer extends SimplePlayer { + rank: number; berserk?: boolean; } @@ -82,11 +160,36 @@ export interface Pages { [n: number]: Page; } -export interface PlayerInfo { - id?: string; - player?: any; - data?: any; +export interface Player extends SimplePlayer { + id: string; + rank: number; + score: number; + fire: boolean; + nb: Nb; + performance?: number; + withdraw: boolean; + team?: string; } + +export interface Pairing { + id: string; + color: Color; + op: { + rating: number; + name: string; + title?: string; + }; + win: boolean; + status: number; + score: number; + berserk: boolean; +} + +export interface PlayerInfo { + player: Player; + pairings: Pairing[]; +} + export interface TeamInfo { id: string; nbPlayers: number; @@ -119,3 +222,25 @@ export interface DuelPlayer { export interface DuelTeams { [userId: string]: string; } + +export interface PodiumPlayer { + name: string; + performance?: number; + nb: Nb; +} + +export interface Nb { + game: number; + win: number; + berserk: number; +} + +export interface Pagination { + currentPage: number; + maxPerPage: number; + from: number; + to: number; + currentPageResults: Page; + nbResults: number; + nbPages: number; +} diff --git a/ui/tournament/src/pagination.ts b/ui/tournament/src/pagination.ts index 57b7853201..52028b7418 100644 --- a/ui/tournament/src/pagination.ts +++ b/ui/tournament/src/pagination.ts @@ -1,6 +1,6 @@ import { h, VNode } from 'snabbdom'; import TournamentController from './ctrl'; -import { MaybeVNodes } from './interfaces'; +import { MaybeVNodes, Pagination } from './interfaces'; import { bind } from './view/util'; import * as search from './search'; @@ -26,9 +26,10 @@ function scrollToMeButton(ctrl: TournamentController): VNode | undefined { }, hook: bind('mousedown', ctrl.toggleFocusOnMe, ctrl.redraw), }); + return undefined; } -export function renderPager(ctrl: TournamentController, pag): MaybeVNodes { +export function renderPager(ctrl: TournamentController, pag: Pagination): MaybeVNodes { const enabled = !!pag.currentPageResults, page = ctrl.page; return pag.nbPages > -1 @@ -48,7 +49,7 @@ export function renderPager(ctrl: TournamentController, pag): MaybeVNodes { : []; } -export function players(ctrl: TournamentController) { +export function players(ctrl: TournamentController): Pagination { const page = ctrl.page, nbResults = ctrl.data.nbPlayers, from = (page - 1) * maxPerPage, @@ -66,4 +67,5 @@ export function players(ctrl: TournamentController) { export function myPage(ctrl: TournamentController): number | undefined { if (ctrl.data.me) return Math.floor((ctrl.data.me.rank - 1) / 10) + 1; + return undefined; } diff --git a/ui/tournament/src/socket.ts b/ui/tournament/src/socket.ts index 87ddd58763..43fc778c28 100644 --- a/ui/tournament/src/socket.ts +++ b/ui/tournament/src/socket.ts @@ -19,7 +19,8 @@ export default function (send: SocketSend, ctrl: TournamentController) { return { send, receive(type: string, data: any) { - if (handlers[type]) return handlers[type](data); + const handler = (handlers as SocketHandlers)[type]; + if (handler) return handler(data); return false; }, }; diff --git a/ui/tournament/src/tournament.ts b/ui/tournament/src/tournament.ts index eef319f3f6..346855055a 100644 --- a/ui/tournament/src/tournament.ts +++ b/ui/tournament/src/tournament.ts @@ -1,7 +1,7 @@ import TournamentController from './ctrl'; export function isIn(ctrl: TournamentController) { - return ctrl.data.me && !ctrl.data.me.withdraw; + return !!ctrl.data.me && !ctrl.data.me.withdraw; } export function willBePaired(ctrl: TournamentController) { diff --git a/ui/tournament/src/view/arena.ts b/ui/tournament/src/view/arena.ts index bd3ab60df7..97793d1db9 100644 --- a/ui/tournament/src/view/arena.ts +++ b/ui/tournament/src/view/arena.ts @@ -2,17 +2,18 @@ import { h, VNode } from 'snabbdom'; import TournamentController from '../ctrl'; import { player as renderPlayer, ratio2percent, bind, dataIcon, playerName } from './util'; import { teamName } from './battle'; -import { MaybeVNodes } from '../interfaces'; +import { MaybeVNodes, Pagination, PodiumPlayer, StandingPlayer } from '../interfaces'; import * as button from './button'; import * as pagination from '../pagination'; const scoreTagNames = ['score', 'streak', 'double']; -function scoreTag(s) { - return h(scoreTagNames[(s[1] || 1) - 1], [Array.isArray(s) ? s[0] : s]); +function scoreTag(s: [number, number] | number) { + const [score, tag] = Array.isArray(s) ? s : [s, 1]; + return h(scoreTagNames[tag - 1], [score]); } -function playerTr(ctrl: TournamentController, player) { +function playerTr(ctrl: TournamentController, player: StandingPlayer) { const userId = player.name.toLowerCase(), nbScores = player.sheet.scores.length; const battle = ctrl.data.teamBattle; @@ -54,7 +55,7 @@ function playerTr(ctrl: TournamentController, player) { ); } -function podiumUsername(p) { +function podiumUsername(p: PodiumPlayer) { return h( 'a.text.ulpt.user-link', { @@ -64,7 +65,7 @@ function podiumUsername(p) { ); } -function podiumStats(p, berserkable, trans: Trans): VNode { +function podiumStats(p: PodiumPlayer, berserkable: boolean, trans: Trans): VNode { const noarg = trans.noarg, nb = p.nb; return h('table.stats', [ @@ -79,8 +80,9 @@ function podiumStats(p, berserkable, trans: Trans): VNode { ]); } -function podiumPosition(p, pos: string, berserkable, trans: Trans): VNode | undefined { +function podiumPosition(p: PodiumPlayer, pos: string, berserkable: boolean, trans: Trans): VNode | undefined { if (p) return h('div.' + pos, [h('div.trophy'), podiumUsername(p), podiumStats(p, berserkable, trans)]); + return undefined; } let lastBody: MaybeVNodes | undefined; @@ -98,11 +100,11 @@ function preloadUserTips(el: HTMLElement) { lichess.powertip.manualUserIn(el); } -export function controls(ctrl: TournamentController, pag): VNode { +export function controls(ctrl: TournamentController, pag: Pagination): VNode { return h('div.tour__controls', [h('div.pager', pagination.renderPager(ctrl, pag)), button.joinWithdraw(ctrl)]); } -export function standing(ctrl: TournamentController, pag, klass?: string): VNode { +export function standing(ctrl: TournamentController, pag: Pagination, klass?: string): VNode { const tableBody = pag.currentPageResults ? pag.currentPageResults.map(res => playerTr(ctrl, res)) : lastBody; if (pag.currentPageResults) lastBody = tableBody; return h( diff --git a/ui/tournament/src/view/button.ts b/ui/tournament/src/view/button.ts index 6a50dbcc16..ca02394b76 100644 --- a/ui/tournament/src/view/button.ts +++ b/ui/tournament/src/view/button.ts @@ -51,8 +51,8 @@ export function join(ctrl: TournamentController): VNode { const el = vnode.elm as HTMLElement; el.style.animation = `tour-delay ${delay}s linear`; setTimeout(() => { - if (delay === ctrl.data.me.pauseDelay) { - ctrl.data.me.pauseDelay = 0; + if (delay === ctrl.data.me!.pauseDelay) { + ctrl.data.me!.pauseDelay = 0; ctrl.redraw(); } }, delay * 1000); @@ -80,4 +80,5 @@ export function joinWithdraw(ctrl: TournamentController): VNode | undefined { ctrl.trans('signIn') ); if (!ctrl.data.isFinished) return isIn(ctrl) ? withdraw(ctrl) : join(ctrl); + return undefined; } diff --git a/ui/tournament/src/view/finished.ts b/ui/tournament/src/view/finished.ts index 33ca714131..fc5102afa4 100644 --- a/ui/tournament/src/view/finished.ts +++ b/ui/tournament/src/view/finished.ts @@ -16,9 +16,11 @@ function confetti(data: TournamentData): VNode | undefined { insert: _ => lichess.loadScript('javascripts/confetti.js'), }, }); + return undefined; } -function stats(data: TournamentData, trans: Trans): VNode { +function stats(data: TournamentData, trans: Trans): VNode | undefined { + if (!data.stats) return undefined; const noarg = trans.noarg; const tableData = [ numberRow(noarg('averageElo'), data.stats.averageRating, 'raw'), @@ -30,8 +32,7 @@ function stats(data: TournamentData, trans: Trans): VNode { ]; if (data.berserkable) { - const berserkRate = [data.stats.berserks / 2, data.stats.games]; - tableData.push(numberRow(noarg('berserkRate'), berserkRate, 'percent')); + tableData.push(numberRow(noarg('berserkRate'), [data.stats.berserks / 2, data.stats.games], 'percent')); } return h('div.tour__stats', [ @@ -117,7 +118,5 @@ export function table(ctrl: TournamentController): VNode | undefined { ? playerInfo(ctrl) : ctrl.teamInfo.requested ? teamInfo(ctrl) - : stats - ? stats(ctrl.data, ctrl.trans) - : undefined; + : stats(ctrl.data, ctrl.trans); } diff --git a/ui/tournament/src/view/header.ts b/ui/tournament/src/view/header.ts index 645cd045c5..f25e2de1e6 100644 --- a/ui/tournament/src/view/header.ts +++ b/ui/tournament/src/view/header.ts @@ -1,9 +1,10 @@ -import { h, VNode } from 'snabbdom'; +import { h, Hooks, VNode } from 'snabbdom'; import TournamentController from '../ctrl'; import { dataIcon } from './util'; import perfIcons from 'common/perfIcons'; +import { TournamentData } from '../interfaces'; -function startClock(time) { +function startClock(time: number): Hooks { return { insert: vnode => $(vnode.elm as HTMLElement).clock({ time }), }; @@ -11,11 +12,11 @@ function startClock(time) { const oneDayInSeconds = 60 * 60 * 24; -function hasFreq(freq, d) { - return d.schedule && d.schedule.freq === freq; +function hasFreq(freq: 'shield' | 'marathon', d: TournamentData) { + return d.schedule?.freq === freq; } -function clock(d): VNode | undefined { +function clock(d: TournamentData): VNode | undefined { if (d.isFinished) return; if (d.secondsToFinish) return h('div.clock', [ @@ -33,7 +34,7 @@ function clock(d): VNode | undefined { }, hook: { insert(vnode) { - (vnode.elm as HTMLElement).setAttribute('datetime', '' + (Date.now() + d.secondsToStart * 1000)); + (vnode.elm as HTMLElement).setAttribute('datetime', '' + (Date.now() + d.secondsToStart! * 1000)); }, }, }), @@ -45,9 +46,10 @@ function clock(d): VNode | undefined { }), ]); } + return undefined; } -function image(d): VNode | undefined { +function image(d: TournamentData): VNode | undefined { if (d.isFinished) return; if (hasFreq('shield', d) || hasFreq('marathon', d)) return; const s = d.spotlight; diff --git a/ui/tournament/src/view/playerInfo.ts b/ui/tournament/src/view/playerInfo.ts index a82ee174bb..9fcfe0fed5 100644 --- a/ui/tournament/src/view/playerInfo.ts +++ b/ui/tournament/src/view/playerInfo.ts @@ -3,8 +3,9 @@ import { spinner, bind, numberRow, playerName, dataIcon, player as renderPlayer import { teamName } from './battle'; import * as status from 'game/status'; import TournamentController from '../ctrl'; +import { Player } from '../interfaces'; -function result(win, stat): string { +function result(win: boolean, stat: number): string { switch (win) { case true: return '1'; @@ -15,7 +16,7 @@ function result(win, stat): string { } } -function playerTitle(player) { +function playerTitle(player: Player) { return h('h2', [h('span.rank', player.rank + '. '), renderPlayer(player, true, false, false)]); } @@ -31,7 +32,7 @@ export default function (ctrl: TournamentController): VNode { const noarg = ctrl.trans.noarg; const tag = 'div.tour__player-info.tour__actor-info'; if (!data || data.player.id !== ctrl.playerInfo.id) - return h(tag, [h('div.stats', [playerTitle(ctrl.playerInfo.player), spinner()])]); + return h(tag, [h('div.stats', [playerTitle(ctrl.playerInfo.player!), spinner()])]); const nb = data.player.nb, pairingsLen = data.pairings.length, avgOp = pairingsLen @@ -62,7 +63,7 @@ export default function (ctrl: TournamentController): VNode { ? h( 'team', { - hook: bind('click', () => ctrl.showTeamInfo(data.player.team), ctrl.redraw), + hook: bind('click', () => ctrl.showTeamInfo(data.player.team!), ctrl.redraw), }, [teamName(ctrl.data.teamBattle!, data.player.team)] ) diff --git a/ui/tournament/src/view/started.ts b/ui/tournament/src/view/started.ts index fc81982d53..3a13d7d67c 100644 --- a/ui/tournament/src/view/started.ts +++ b/ui/tournament/src/view/started.ts @@ -22,7 +22,7 @@ function joinTheGame(ctrl: TournamentController, gameId: string) { function notice(ctrl: TournamentController): VNode { return tour.willBePaired(ctrl) - ? h('div.tour__notice.bar-glider', ctrl.trans('standByX', ctrl.data.me.username)) + ? h('div.tour__notice.bar-glider', ctrl.trans('standByX', ctrl.data.me!.username)) : h('div.tour__notice.closed', ctrl.trans('tournamentPairingsAreNowClosed')); } diff --git a/ui/tournament/src/view/util.ts b/ui/tournament/src/view/util.ts index 0a7448b0d7..bb9898ba87 100644 --- a/ui/tournament/src/view/util.ts +++ b/ui/tournament/src/view/util.ts @@ -1,5 +1,6 @@ -import { Attrs, h, Hooks, VNode } from 'snabbdom'; +import { Attrs, h, Hooks, VNode, VNodeChildren } from 'snabbdom'; import { numberFormat } from 'common/number'; +import { SimplePlayer } from '../interfaces'; export function bind(eventName: string, f: (e: Event) => any, redraw?: () => void): Hooks { return onInsert(el => @@ -29,11 +30,11 @@ export function ratio2percent(r: number) { return Math.round(100 * r) + '%'; } -export function playerName(p) { +export function playerName(p: { title?: string; name: string }) { return p.title ? [h('span.utitle', p.title), ' ' + p.name] : p.name; } -export function player(p, asLink: boolean, withRating: boolean, defender = false, leader = false) { +export function player(p: SimplePlayer, asLink: boolean, withRating: boolean, defender = false, leader = false) { return h( 'a.ulpt.user-link' + (((p.title || '') + p.name).length > 15 ? '.long' : ''), { @@ -53,6 +54,9 @@ export function player(p, asLink: boolean, withRating: boolean, defender = false ); } +export function numberRow(name: string, value: number): VNode; +export function numberRow(name: string, value: [number, number], typ: 'percent'): VNode; +export function numberRow(name: string, value: VNodeChildren, typ: 'raw'): VNode; export function numberRow(name: string, value: any, typ?: string) { return h('tr', [ h('th', name), From a139807e5156bfeec665e9a26d7ac7031abc994a Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Mon, 28 Jun 2021 15:21:23 +0200 Subject: [PATCH 44/64] Prettier --- ui/lobby/src/hookRepo.ts | 3 +-- ui/lobby/src/interfaces.ts | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ui/lobby/src/hookRepo.ts b/ui/lobby/src/hookRepo.ts index b79267a9cf..05a13d2557 100644 --- a/ui/lobby/src/hookRepo.ts +++ b/ui/lobby/src/hookRepo.ts @@ -13,10 +13,9 @@ export function sort(ctrl: LobbyController, hooks: Hook[]) { hooks.sort(ctrl.sort === 'time' ? timeOrder : ratingOrder); } -export function init(hook: Hook): Hook { +export function init(hook: Hook) { hook.action = hook.sri === lichess.sri ? 'cancel' : 'join'; hook.variant = hook.variant || 'standard'; - return hook; } export function initAll(ctrl: LobbyController) { diff --git a/ui/lobby/src/interfaces.ts b/ui/lobby/src/interfaces.ts index dbf8fda4bf..76b08f8f99 100644 --- a/ui/lobby/src/interfaces.ts +++ b/ui/lobby/src/interfaces.ts @@ -66,7 +66,7 @@ export interface LobbyData { me?: { isBot: boolean; username: string; - } + }; } export interface NowPlaying { From dc15613e98fbaa2e3950050638f2e439d6a2d1ec Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Mon, 28 Jun 2021 15:40:05 +0200 Subject: [PATCH 45/64] Fix eval cache move number calc --- modules/evalCache/src/main/EvalCacheApi.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/evalCache/src/main/EvalCacheApi.scala b/modules/evalCache/src/main/EvalCacheApi.scala index cb47c0be6a..11106c4d80 100644 --- a/modules/evalCache/src/main/EvalCacheApi.scala +++ b/modules/evalCache/src/main/EvalCacheApi.scala @@ -95,5 +95,5 @@ final class EvalCacheApi( } private def destSize(fen: FEN): Int = - chess.Game(chess.variant.Standard.some, fen.some).situation.destinations.size + chess.Game(chess.variant.Standard.some, fen.some).situation.moves.view.map(_._2.size).sum } From 5891d2097acc81946bd3003947abee49e8c02a88 Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Mon, 28 Jun 2021 15:40:44 +0200 Subject: [PATCH 46/64] noImplicitAny for ui/tournament-calendar --- ui/tournamentCalendar/src/interfaces.ts | 39 ++++++++++++++++++++----- ui/tournamentCalendar/src/main.ts | 10 +++---- ui/tournamentCalendar/src/view.ts | 12 ++++---- ui/tournamentCalendar/tsconfig.json | 6 +--- 4 files changed, 43 insertions(+), 24 deletions(-) diff --git a/ui/tournamentCalendar/src/interfaces.ts b/ui/tournamentCalendar/src/interfaces.ts index 9b6f3e8739..243e064372 100644 --- a/ui/tournamentCalendar/src/interfaces.ts +++ b/ui/tournamentCalendar/src/interfaces.ts @@ -1,13 +1,36 @@ export interface Tournament { - [key: string]: any; -} -export interface Ctrl { - trans: Trans; - data: { - since: number; - to: number; - tournaments: Tournament[]; + id: string; + bounds: { + start: Date; + end: Date; + }; + startsAt: number; + minutes: number; + rated: boolean; + hasMaxRating: boolean; + schedule: { + freq: string; + }; + fullName: string; + perf: { + key: Exclude; }; } +export interface Ctrl { + trans: Trans; + data: Data; +} + +export interface Opts { + data: Data; + i18n: I18nDict; +} + +export interface Data { + since: number; + to: number; + tournaments: Tournament[]; +} + export type Lanes = Array>; diff --git a/ui/tournamentCalendar/src/main.ts b/ui/tournamentCalendar/src/main.ts index cd0cf0b541..d3c9fb8d67 100644 --- a/ui/tournamentCalendar/src/main.ts +++ b/ui/tournamentCalendar/src/main.ts @@ -2,13 +2,13 @@ import view from './view'; import { init, VNode, classModule, attributesModule } from 'snabbdom'; -import { Ctrl } from './interfaces'; +import { Ctrl, Opts } from './interfaces'; const patch = init([classModule, attributesModule]); -export function app(element: HTMLElement, env: any) { +export function app(element: HTMLElement, opts: Opts) { // enrich tournaments - env.data.tournaments.forEach(t => { + opts.data.tournaments.forEach(t => { if (!t.bounds) t.bounds = { start: new Date(t.startsAt), @@ -17,8 +17,8 @@ export function app(element: HTMLElement, env: any) { }); const ctrl: Ctrl = { - data: env.data, - trans: lichess.trans(env.i18n), + data: opts.data, + trans: lichess.trans(opts.i18n), }; let vnode: VNode; diff --git a/ui/tournamentCalendar/src/view.ts b/ui/tournamentCalendar/src/view.ts index 945a7da09d..6458b57b93 100644 --- a/ui/tournamentCalendar/src/view.ts +++ b/ui/tournamentCalendar/src/view.ts @@ -1,4 +1,4 @@ -import { h, VNode } from 'snabbdom'; +import { Classes, h, VNode } from 'snabbdom'; import eachDayOfInterval from 'date-fns/eachDayOfInterval'; import addDays from 'date-fns/addDays'; import getHours from 'date-fns/getHours'; @@ -8,18 +8,18 @@ import format from 'date-fns/format'; import { Tournament, Lanes, Ctrl } from './interfaces'; import perfIcons from 'common/perfIcons'; -function tournamentClass(tour: Tournament, day: Date) { +function tournamentClass(tour: Tournament, day: Date): Classes { const classes = { rated: tour.rated, casual: !tour.rated, 'max-rating': tour.hasMaxRating, yesterday: tour.bounds.start < day, - }; + } as Classes; if (tour.schedule) classes[tour.schedule.freq] = true; return classes; } -const iconOf = tour => (tour.schedule?.freq === 'shield' ? '' : perfIcons[tour.perf.key]); +const iconOf = (tour: Tournament) => (tour.schedule?.freq === 'shield' ? '' : perfIcons[tour.perf.key]); function renderTournament(tour: Tournament, day: Date) { let left = ((getHours(tour.bounds.start) + getMinutes(tour.bounds.start) / 60) / 24) * 100; @@ -121,7 +121,7 @@ function renderTimeline() { } // converts Date to "%H:%M" with leading zeros -function timeString(hour) { +function timeString(hour: number) { return ('0' + hour).slice(-2); } @@ -132,7 +132,7 @@ function makeGroups(days: Date[]): Date[][] { return groups; } -export default function (ctrl) { +export default function (ctrl: Ctrl) { const days = eachDayOfInterval({ start: new Date(ctrl.data.since), end: new Date(ctrl.data.to), diff --git a/ui/tournamentCalendar/tsconfig.json b/ui/tournamentCalendar/tsconfig.json index c1e89d9ccc..4eb37fee05 100644 --- a/ui/tournamentCalendar/tsconfig.json +++ b/ui/tournamentCalendar/tsconfig.json @@ -1,7 +1,3 @@ { - "extends": "../tsconfig.base.json", - - "compilerOptions": { - "noImplicitAny": false - } + "extends": "../tsconfig.base.json" } From 39960c323c2afac7eb1a7ad537bc984d1aef4f9b Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Mon, 28 Jun 2021 16:02:21 +0200 Subject: [PATCH 47/64] Fix acpl chart select --- public/javascripts/chart/acpl.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/javascripts/chart/acpl.js b/public/javascripts/chart/acpl.js index 575aef9049..49c2bd05f5 100644 --- a/public/javascripts/chart/acpl.js +++ b/public/javascripts/chart/acpl.js @@ -91,7 +91,7 @@ lichess.advantageChart = function (data, trans, el) { events: { click: function (event) { if (event.point) { - event.point.select(); + event.point.select(true); lichess.pubsub.emit('analysis.chart.click', event.point.x); } }, From b2cf00bb6a2ed8e1c772157d1560cdbbce57a96e Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Mon, 28 Jun 2021 16:07:47 +0200 Subject: [PATCH 48/64] noImplicitAny for ui/tournament-schedule --- ui/tournamentSchedule/src/dragscroll.d.ts | 1 + ui/tournamentSchedule/src/interfaces.ts | 49 +++++++++++++++++++++ ui/tournamentSchedule/src/main.ts | 17 ++++---- ui/tournamentSchedule/src/view.ts | 53 ++++++++++++----------- ui/tournamentSchedule/tsconfig.json | 5 +-- 5 files changed, 87 insertions(+), 38 deletions(-) create mode 100644 ui/tournamentSchedule/src/dragscroll.d.ts create mode 100644 ui/tournamentSchedule/src/interfaces.ts diff --git a/ui/tournamentSchedule/src/dragscroll.d.ts b/ui/tournamentSchedule/src/dragscroll.d.ts new file mode 100644 index 0000000000..589b1d5b3c --- /dev/null +++ b/ui/tournamentSchedule/src/dragscroll.d.ts @@ -0,0 +1 @@ +declare module 'dragscroll'; diff --git a/ui/tournamentSchedule/src/interfaces.ts b/ui/tournamentSchedule/src/interfaces.ts new file mode 100644 index 0000000000..e8b77cad58 --- /dev/null +++ b/ui/tournamentSchedule/src/interfaces.ts @@ -0,0 +1,49 @@ +import perfIcons from 'common/perfIcons'; + +export interface Tournament { + id: string; + fullName: string; + schedule: { + freq: string; + speed: string; + }; + perf: { + key: keyof typeof perfIcons; + position: number; + name: string; + }; + hasMaxRating: boolean; + variant: Variant; + startsAt: number; + finishesAt: number; + status: number; + position: number; + rated: boolean; + minutes: number; + createdBy: string; + clock: Clock; + nbPlayers: number; +} + +export interface Data { + created: Tournament[]; + started: Tournament[]; + finished: Tournament[]; +} + +export interface Opts { + data: Data; + i18n: I18nDict; +} + +export interface Clock { + limit: number; + increment: number; +} + +export interface Ctrl { + data(): Data; + trans: Trans; +} + +export type Lane = Tournament[]; diff --git a/ui/tournamentSchedule/src/main.ts b/ui/tournamentSchedule/src/main.ts index 9b9b34ed49..49ada33b63 100644 --- a/ui/tournamentSchedule/src/main.ts +++ b/ui/tournamentSchedule/src/main.ts @@ -2,19 +2,20 @@ import view from './view'; import { init, VNode, classModule, attributesModule } from 'snabbdom'; import dragscroll from 'dragscroll'; +import { Opts, Tournament } from './interfaces'; const patch = init([classModule, attributesModule]); dragscroll; // required to include the dependency :( :( :( -export default function (env: any) { +export default function (opts: Opts) { lichess.StrongSocket.defaultParams.flag = 'tournament'; const element = document.querySelector('.tour-chart') as HTMLElement; const ctrl = { - data: () => env.data, - trans: lichess.trans(env.i18n), + data: () => opts.data, + trans: lichess.trans(opts.i18n), }; let vnode: VNode; @@ -27,16 +28,16 @@ export default function (env: any) { setInterval(redraw, 3700); lichess.pubsub.on('socket.in.reload', d => { - env.data = { - created: update(env.data.created, d.created), - started: update(env.data.started, d.started), - finished: update(env.data.finished, d.finished), + opts.data = { + created: update(opts.data.created, d.created), + started: update(opts.data.started, d.started), + finished: update(opts.data.finished, d.finished), }; redraw(); }); } -function update(prevs, news) { +function update(prevs: Tournament[], news: Tournament[]) { // updates ignore team tournaments (same for all) // also lacks finished tournaments const now = new Date().getTime(); diff --git a/ui/tournamentSchedule/src/view.ts b/ui/tournamentSchedule/src/view.ts index 265e256c5c..1dad73ad78 100644 --- a/ui/tournamentSchedule/src/view.ts +++ b/ui/tournamentSchedule/src/view.ts @@ -1,18 +1,19 @@ -import { h, VNode } from 'snabbdom'; +import { Classes, h, VNode } from 'snabbdom'; import perfIcons from 'common/perfIcons'; +import { Clock, Ctrl, Lane, Tournament } from './interfaces'; const scale = 8; let now: number, startTime: number, stopTime: number; -const i18nNames = {}; +const i18nNames: Record = {}; -function i18nName(t) { +function i18nName(t: Tournament) { if (!i18nNames[t.id]) i18nNames[t.id] = t.fullName; return i18nNames[t.id]; } -function displayClockLimit(limit) { +function displayClockLimit(limit: number) { switch (limit) { case 15: return '¼'; @@ -27,16 +28,16 @@ function displayClockLimit(limit) { } } -function displayClock(clock) { +function displayClock(clock: Clock) { return displayClockLimit(clock.limit) + '+' + clock.increment; } -function leftPos(time) { +function leftPos(time: number) { const rounded = 1000 * 60 * Math.floor(time / 1000 / 60); return (scale * (rounded - startTime)) / 1000 / 60; } -function laneGrouper(t) { +function laneGrouper(t: Tournament): number { if (t.schedule && t.schedule.freq === 'unique') { return -1; } else if (t.variant.key !== 'standard') { @@ -54,34 +55,34 @@ function laneGrouper(t) { } } -function group(arr, grouper) { - const groups = {}; +function group(arr: Tournament[], grouper: (t: Tournament) => number): Lane[] { + const groups: Dictionary = {}; let g; arr.forEach(e => { g = grouper(e); - if (!groups[g]) groups[g] = []; - groups[g].push(e); + if (groups[g]) groups[g]?.push(e); + else groups[g] = [e]; }); return Object.keys(groups) .sort() .map(function (k) { - return groups[k]; + return groups[k]!; }); } -function fitLane(lane, tour2) { - return !lane.some(function (tour1) { +function fitLane(lane: Lane, tour2: Tournament) { + return !lane.some(function (tour1: Tournament) { return !(tour1.finishesAt <= tour2.startsAt || tour2.finishesAt <= tour1.startsAt); }); } // splits lanes that have collisions, but keeps // groups separate by not compacting existing lanes -function splitOverlaping(lanes) { - let ret: any[] = [], +function splitOverlaping(lanes: Lane[]): Lane[] { + let ret: Lane[] = [], i: number; lanes.forEach(lane => { - const newLanes: any[] = [[]]; + const newLanes: Lane[] = [[]]; lane.forEach(tour => { let collision = true; for (i = 0; i < newLanes.length; i++) { @@ -98,7 +99,7 @@ function splitOverlaping(lanes) { return ret; } -function tournamentClass(tour) { +function tournamentClass(tour: Tournament): Classes { const finished = tour.status === 30, userCreated = tour.createdBy !== 'lichess', classes = { @@ -110,16 +111,16 @@ function tournamentClass(tour) { 'tsht-thematic': !!tour.position, 'tsht-short': tour.minutes <= 30, 'tsht-max-rating': !userCreated && tour.hasMaxRating, - }; + } as Classes; if (tour.schedule) classes['tsht-' + tour.schedule.freq] = true; return classes; } -const iconOf = tour => (tour.schedule?.freq === 'shield' ? '' : perfIcons[tour.perf.key]); +const iconOf = (tour: Tournament) => (tour.schedule?.freq === 'shield' ? '' : perfIcons[tour.perf.key]); let mousedownAt: number[] | undefined; -function renderTournament(ctrl, tour) { +function renderTournament(ctrl: Ctrl, tour: Tournament) { let width = tour.minutes * scale; const left = leftPos(tour.startsAt); // moves content into viewport, for long tourneys and marathons @@ -212,23 +213,23 @@ function renderTimeline() { } // converts Date to "%H:%M" with leading zeros -function timeString(time) { +function timeString(time: Date) { return ('0' + time.getHours()).slice(-2) + ':' + ('0' + time.getMinutes()).slice(-2); } -function isSystemTournament(t) { +function isSystemTournament(t: Tournament) { return !!t.schedule; } -export default function (ctrl) { +export default function (ctrl: Ctrl) { now = Date.now(); startTime = now - 3 * 60 * 60 * 1000; stopTime = startTime + 10 * 60 * 60 * 1000; const data = ctrl.data(); - const systemTours: any[] = [], - userTours: any[] = []; + const systemTours: Tournament[] = [], + userTours: Tournament[] = []; data.finished .concat(data.started) diff --git a/ui/tournamentSchedule/tsconfig.json b/ui/tournamentSchedule/tsconfig.json index d58bc6e3ad..4eb37fee05 100644 --- a/ui/tournamentSchedule/tsconfig.json +++ b/ui/tournamentSchedule/tsconfig.json @@ -1,6 +1,3 @@ { - "extends": "../tsconfig.base.json", - "compilerOptions": { - "noImplicitAny": false - } + "extends": "../tsconfig.base.json" } From 4a299c6349b391d0046f6dcc27f2703697a50756 Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Mon, 28 Jun 2021 16:28:31 +0200 Subject: [PATCH 49/64] Remove unnecessary eslint-disable --- ui/analyse/src/main.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/ui/analyse/src/main.ts b/ui/analyse/src/main.ts index 5354475657..bce17dbdd5 100644 --- a/ui/analyse/src/main.ts +++ b/ui/analyse/src/main.ts @@ -1,7 +1,6 @@ import { attributesModule, classModule, init } from 'snabbdom'; import boot from './boot'; import LichessChat from 'chat'; -// eslint-disable-next-line no-duplicate-imports import makeCtrl from './ctrl'; import menuHover from 'common/menuHover'; import view from './view'; From 14904c07767c574df06e32b4c75eefb2c6fff4c3 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 28 Jun 2021 12:31:24 +0200 Subject: [PATCH 50/64] manual start of private races - for #9276 requires lila-ws update --- app/views/racer.scala | 1 + modules/i18n/src/main/I18nKeys.scala | 1 + modules/racer/src/main/RacerApi.scala | 19 ++++++++++++------- modules/racer/src/main/RacerJson.scala | 3 ++- modules/racer/src/main/RacerSocket.scala | 12 ++++++++++++ translation/source/storm.xml | 1 + ui/racer/css/_racer.scss | 4 ++++ ui/racer/src/ctrl.ts | 6 ++++++ ui/racer/src/interfaces.ts | 3 +++ ui/racer/src/view/main.ts | 22 +++++++++++++++++++++- 10 files changed, 63 insertions(+), 9 deletions(-) diff --git a/app/views/racer.scala b/app/views/racer.scala index f5a4317dfd..ae2be0b75f 100644 --- a/app/views/racer.scala +++ b/app/views/racer.scala @@ -71,6 +71,7 @@ object racer { s.raceComplete, s.spectating, s.joinTheRace, + s.startTheRace, s.yourRankX, s.waitForRematch, s.nextRace, diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index b144ae1830..dd19dd0bf1 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -2128,6 +2128,7 @@ val `waitingForMorePlayers` = new I18nKey("storm:waitingForMorePlayers") val `raceComplete` = new I18nKey("storm:raceComplete") val `spectating` = new I18nKey("storm:spectating") val `joinTheRace` = new I18nKey("storm:joinTheRace") +val `startTheRace` = new I18nKey("storm:startTheRace") val `yourRankX` = new I18nKey("storm:yourRankX") val `waitForRematch` = new I18nKey("storm:waitForRematch") val `nextRace` = new I18nKey("storm:nextRace") diff --git a/modules/racer/src/main/RacerApi.scala b/modules/racer/src/main/RacerApi.scala index 3e61f538dd..3a76d3c635 100644 --- a/modules/racer/src/main/RacerApi.scala +++ b/modules/racer/src/main/RacerApi.scala @@ -39,7 +39,7 @@ final class RacerApi(colls: RacerColls, selector: StormSelector, userRepo: UserR .make( owner = player, puzzles = puzzles.grouped(2).flatMap(_.headOption).toList, - countdownSeconds = 10 + countdownSeconds = 5 ) store.put(race.id, race) lila.mon.racer.race(lobby = race.isLobby).increment() @@ -69,18 +69,23 @@ final class RacerApi(colls: RacerColls, selector: StormSelector, userRepo: UserR def join(id: RacerRace.Id, player: RacerPlayer.Id): Option[RacerRace] = get(id).flatMap(_ join player) map { r => - val race = start(r) | r + val race = (r.isLobby ?? doStart(r)) | r saveAndPublish(race) race } - private def start(race: RacerRace): Option[RacerRace] = race.startCountdown.map { starting => - system.scheduler.scheduleOnce(RacerRace.duration.seconds + race.countdownSeconds.seconds + 50.millis) { - finish(race.id) - } - starting + private[racer] def manualStart(race: RacerRace): Unit = !race.isLobby ?? { + doStart(race) foreach saveAndPublish } + private def doStart(race: RacerRace): Option[RacerRace] = + race.startCountdown.map { starting => + system.scheduler.scheduleOnce(RacerRace.duration.seconds + race.countdownSeconds.seconds + 50.millis) { + finish(race.id) + } + starting + } + private def finish(id: RacerRace.Id): Unit = get(id) foreach { race => lila.mon.racer.players(lobby = race.isLobby).record(race.players.size) diff --git a/modules/racer/src/main/RacerJson.scala b/modules/racer/src/main/RacerJson.scala index 05de3416a7..04f7c895b4 100644 --- a/modules/racer/src/main/RacerJson.scala +++ b/modules/racer/src/main/RacerJson.scala @@ -27,7 +27,8 @@ final class RacerJson(stormJson: StormJson, sign: StormSign, lightUserSync: Ligh .add("lobby", race.isLobby), "player" -> player, "puzzles" -> race.puzzles - ) ++ state(race) + ) + .add("owner", race.owner == player.id) ++ state(race) // socket updates def state(race: RacerRace) = Json diff --git a/modules/racer/src/main/RacerSocket.scala b/modules/racer/src/main/RacerSocket.scala index 26aa160149..707c76687d 100644 --- a/modules/racer/src/main/RacerSocket.scala +++ b/modules/racer/src/main/RacerSocket.scala @@ -1,5 +1,6 @@ package lila.racer + import lila.room.RoomSocket.{ Protocol => RP, _ } import lila.socket.RemoteSocket.{ Protocol => P, _ } import play.api.libs.json.{ JsObject, Json } @@ -28,6 +29,12 @@ final private class RacerSocket( api.join(raceId, playerId).unit case Protocol.In.PlayerScore(raceId, playerId, score) => api.registerPlayerScore(raceId, playerId, score) + case Protocol.In.RaceStart(raceId, playerId) => + api + .get(raceId) + .filter(_.startsAt.isEmpty) + .filter(_.owner == playerId) + .foreach(api.manualStart) } remoteSocketApi.subscribe("racer-in", Protocol.In.reader)( @@ -45,6 +52,7 @@ object RacerSocket { case class PlayerJoin(race: RacerRace.Id, player: RacerPlayer.Id) extends P.In case class PlayerScore(race: RacerRace.Id, player: RacerPlayer.Id, score: Int) extends P.In + case class RaceStart(race: RacerRace.Id, player: RacerPlayer.Id) extends P.In val reader: P.In.Reader = raw => raceReader(raw) orElse RP.In.reader(raw) @@ -58,6 +66,10 @@ object RacerSocket { raw.get(3) { case Array(raceId, playerId, scoreStr) => scoreStr.toIntOption map { PlayerScore(RacerRace.Id(raceId), RacerPlayer.Id(playerId), _) } } + case "racer/start" => + raw.get(2) { case Array(raceId, playerId) => + RaceStart(RacerRace.Id(raceId), RacerPlayer.Id(playerId)).some + } case _ => none } } diff --git a/translation/source/storm.xml b/translation/source/storm.xml index 4c56fa40bd..4338b47519 100644 --- a/translation/source/storm.xml +++ b/translation/source/storm.xml @@ -38,6 +38,7 @@ Race complete! Spectating Join the race! + Start the race Your rank: %s Wait for rematch Next race diff --git a/ui/racer/css/_racer.scss b/ui/racer/css/_racer.scss index 00e6edc80c..20efd424f3 100644 --- a/ui/racer/css/_racer.scss +++ b/ui/racer/css/_racer.scss @@ -54,6 +54,10 @@ } } + .puz-side__start { + margin-top: 1em; + } + .puz-clock { flex-flow: row wrap; justify-content: space-between; diff --git a/ui/racer/src/ctrl.ts b/ui/racer/src/ctrl.ts index 2f0f998fd9..edbe1baf45 100644 --- a/ui/racer/src/ctrl.ts +++ b/ui/racer/src/ctrl.ts @@ -95,6 +95,8 @@ export default class StormCtrl { isRacing = () => this.status() == 'racing'; + isOwner = () => this.data.owner; + myScore = (): number | undefined => { const p = this.data.players.find(p => p.name == this.data.player.name); return p?.score; @@ -104,6 +106,10 @@ export default class StormCtrl { if (!this.isPlayer()) this.socketSend('racerJoin'); }); + start = throttle(1000, () => { + if (this.isOwner()) this.socketSend('racerStart'); + }); + countdownSeconds = (): number | undefined => this.status() == 'pre' && this.vm.startsAt && this.vm.startsAt > new Date() ? Math.min(9, Math.ceil((this.vm.startsAt.getTime() - Date.now()) / 1000)) diff --git a/ui/racer/src/interfaces.ts b/ui/racer/src/interfaces.ts index 31cc4ceb9e..6e1dd5b4c5 100644 --- a/ui/racer/src/interfaces.ts +++ b/ui/racer/src/interfaces.ts @@ -5,6 +5,8 @@ export type RaceStatus = 'pre' | 'racing' | 'post'; export type WithGround = (f: (g: CgApi) => A) => A | false; +export type PlayerId = string; + export interface RacerOpts { data: RacerData; pref: RacerPrefs; @@ -22,6 +24,7 @@ export interface RacerData extends UpdatableData { race: Race; puzzles: Puzzle[]; player: Player; + owner?: boolean; } export interface Race { diff --git a/ui/racer/src/view/main.ts b/ui/racer/src/view/main.ts index 93bf6298e0..091d50f62e 100644 --- a/ui/racer/src/view/main.ts +++ b/ui/racer/src/view/main.ts @@ -45,7 +45,7 @@ const selectScreen = (ctrl: RacerCtrl): MaybeVNodes => { : [ waitingToStart(noarg), h('div.racer__pre__message', [ - ctrl.raceFull() ? undefined : ctrl.isPlayer() ? renderLink(ctrl) : renderJoin(ctrl), + ...(ctrl.raceFull() ? [] : ctrl.isPlayer() ? [renderLink(ctrl), renderStart(ctrl)] : [renderJoin(ctrl)]), povMsg, ]), comboZone(ctrl), @@ -150,6 +150,26 @@ const renderLink = (ctrl: RacerCtrl) => ]), ]); +const renderStart = (ctrl: RacerCtrl) => + ctrl.isOwner() && !ctrl.vm.startsAt + ? h( + 'div.puz-side__start', + h( + 'button.button.button-fat', + { + class: { + disabled: ctrl.players().length < 2, + }, + hook: bind('click', ctrl.start), + attrs: { + disabled: ctrl.players().length < 2, + }, + }, + ctrl.trans.noarg('startTheRace') + ) + ) + : null; + const renderJoin = (ctrl: RacerCtrl) => h( 'div.puz-side__join', From 41518242159f0cd6cc8c9db9c8535fecc60a7c30 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 28 Jun 2021 17:01:56 +0200 Subject: [PATCH 51/64] chessground 8.1.1 - for ornicar/chessground#193 --- ui/analyse/package.json | 2 +- ui/editor/package.json | 2 +- ui/lobby/package.json | 2 +- ui/puz/package.json | 2 +- ui/puzzle/package.json | 2 +- ui/racer/package.json | 2 +- ui/round/package.json | 2 +- ui/storm/package.json | 2 +- ui/swiss/package.json | 2 +- ui/tournament/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ui/analyse/package.json b/ui/analyse/package.json index c742a15fd8..966e9797a7 100644 --- a/ui/analyse/package.json +++ b/ui/analyse/package.json @@ -25,7 +25,7 @@ "ceval": "2.0.0", "chat": "2.0.0", "chess": "2.0.0", - "chessground": "^8.1.0", + "chessground": "^8.1.1", "chessops": "^0.9.0", "common": "2.0.0", "game": "2.0.0", diff --git a/ui/editor/package.json b/ui/editor/package.json index 061e49cdd1..900430f381 100644 --- a/ui/editor/package.json +++ b/ui/editor/package.json @@ -15,7 +15,7 @@ "@build/rollupProject": "2.0.0" }, "dependencies": { - "chessground": "^8.1.0", + "chessground": "^8.1.1", "chessops": "^0.9.0", "snabbdom": "^3.0.1", "common": "2.0.0" diff --git a/ui/lobby/package.json b/ui/lobby/package.json index 8215031c39..b968a8621e 100644 --- a/ui/lobby/package.json +++ b/ui/lobby/package.json @@ -18,7 +18,7 @@ "@types/lichess": "2.0.0" }, "dependencies": { - "chessground": "^8.1.0", + "chessground": "^8.1.1", "common": "2.0.0", "snabbdom": "^3.0.1" }, diff --git a/ui/puz/package.json b/ui/puz/package.json index dbf68a19a3..5efcf6641c 100644 --- a/ui/puz/package.json +++ b/ui/puz/package.json @@ -16,7 +16,7 @@ "dependencies": { "chessops": "^0.9.0", "snabbdom": "^3.0.1", - "chessground": "^8.1.0", + "chessground": "^8.1.1", "common": "2.0.0" }, "devDependencies": { diff --git a/ui/puzzle/package.json b/ui/puzzle/package.json index d1f2ad9637..6cf99831a1 100644 --- a/ui/puzzle/package.json +++ b/ui/puzzle/package.json @@ -19,7 +19,7 @@ "dependencies": { "ceval": "2.0.0", "chart.js": "^2.9", - "chessground": "^8.1.0", + "chessground": "^8.1.1", "chessops": "^0.9.0", "common": "2.0.0", "nvui": "2.0.0", diff --git a/ui/racer/package.json b/ui/racer/package.json index 49ee3a029d..14ab98e185 100644 --- a/ui/racer/package.json +++ b/ui/racer/package.json @@ -17,7 +17,7 @@ }, "dependencies": { "chessops": "^0.9.0", - "chessground": "^8.1.0", + "chessground": "^8.1.1", "snabbdom": "^3.0.1", "common": "2.0.0", "puz": "2.0.0" diff --git a/ui/round/package.json b/ui/round/package.json index 4321a8771b..fd77a8c63d 100644 --- a/ui/round/package.json +++ b/ui/round/package.json @@ -18,7 +18,7 @@ "dependencies": { "ab": "https://github.com/lichess-org/ab-stub", "chat": "2.0.0", - "chessground": "^8.1.0", + "chessground": "^8.1.1", "common": "2.0.0", "game": "2.0.0", "nvui": "2.0.0", diff --git a/ui/storm/package.json b/ui/storm/package.json index 6903e5e956..b0ae980cd0 100644 --- a/ui/storm/package.json +++ b/ui/storm/package.json @@ -17,7 +17,7 @@ }, "dependencies": { "chessops": "^0.9.0", - "chessground": "^8.1.0", + "chessground": "^8.1.1", "snabbdom": "^3.0.1", "common": "2.0.0", "puz": "2.0.0" diff --git a/ui/swiss/package.json b/ui/swiss/package.json index 36e8053045..5aa487c16f 100644 --- a/ui/swiss/package.json +++ b/ui/swiss/package.json @@ -17,7 +17,7 @@ }, "dependencies": { "chat": "2.0.0", - "chessground": "^8.1.0", + "chessground": "^8.1.1", "common": "2.0.0", "game": "2.0.0", "snabbdom": "^3.0.1" diff --git a/ui/tournament/package.json b/ui/tournament/package.json index eb2c38511a..b197e31c74 100644 --- a/ui/tournament/package.json +++ b/ui/tournament/package.json @@ -17,7 +17,7 @@ }, "dependencies": { "chat": "2.0.0", - "chessground": "^8.1.0", + "chessground": "^8.1.1", "common": "2.0.0", "game": "2.0.0", "snabbdom": "^3.0.1" From dab80e958b8db0acf0734af97ecfe59d6e11d2a3 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 28 Jun 2021 17:41:16 +0200 Subject: [PATCH 52/64] update yarn.lock --- yarn.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index e83779ffd4..c742909fb4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -959,10 +959,10 @@ chessground@^4.4: merge "1.2.0" mithril "github:ornicar/mithril.js#v1.0.1" -chessground@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/chessground/-/chessground-8.1.0.tgz#dccddd158758d69334458a992a33e0597c34fb9e" - integrity sha512-r2KCqwAqtJ/fTPRQZKlRqY7WAHcPdT7g9/YNXM4zD8jsek0FuXdQ0t5JQ0+9VXbByO2D/lesIqk/bPYY5rN9Fw== +chessground@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/chessground/-/chessground-8.1.1.tgz#685aee54a23009121deecacd4f6b1ce6042e5123" + integrity sha512-xFLrO+kAa1H1h7kpN9blDz1C172C/4M72LcaWl/2OHfJ+7Jx5Qr4gCXIdEofReABoXaTJt6hAhJxSL/2SSj1ug== chessops@^0.9.0: version "0.9.0" From 76861839adad2d45a218c4ff9afa94188ad140b0 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 28 Jun 2021 17:50:19 +0200 Subject: [PATCH 53/64] New Crowdin updates (#9218) * New translations: class.xml (Japanese) * New translations: class.xml (Romanian) * New translations: activity.xml (Danish) * New translations: tourname.xml (Danish) * New translations: class.xml (Malayalam) * New translations: class.xml (Uzbek) * New translations: class.xml (Bosnian) * New translations: class.xml (Breton) * New translations: class.xml (Esperanto) * New translations: class.xml (Faroese) * New translations: class.xml (Norwegian Bokmal) * New translations: class.xml (Aragonese) * New translations: class.xml (French) * New translations: class.xml (Arabic) * New translations: site.xml (Dutch) * New translations: site.xml (Latvian) * New translations: site.xml (Norwegian Nynorsk) * New translations: site.xml (German) * New translations: site.xml (Hungarian) * New translations: site.xml (Danish) * New translations: class.xml (German, Switzerland) * New translations: site.xml (German, Switzerland) * New translations: puzzle.xml (Danish) * New translations: site.xml (German) * New translations: site.xml (Spanish) * New translations: site.xml (Danish) * New translations: site.xml (Russian) * New translations: site.xml (Polish) * New translations: site.xml (Russian) * New translations: contact.xml (Russian) * New translations: site.xml (Polish) * New translations: site.xml (Latvian) * New translations: contact.xml (Polish) * New translations: site.xml (Slovenian) * New translations: site.xml (Toki Pona) * New translations: site.xml (French) * New translations: contact.xml (French) * New translations: contact.xml (Slovenian) * New translations: site.xml (Portuguese) * New translations: site.xml (German) * New translations: site.xml (French) * New translations: site.xml (Norwegian Nynorsk) * New translations: site.xml (Lithuanian) * New translations: site.xml (Swedish) * New translations: arena.xml (French) * New translations: contact.xml (Lithuanian) * New translations: site.xml (Lithuanian) * New translations: site.xml (Swedish) * New translations: arena.xml (French) * New translations: site.xml (Swedish) * New translations: site.xml (English, United States) * New translations: arena.xml (French) * New translations: site.xml (French) * New translations: arena.xml (French) * New translations: contact.xml (Swedish) * New translations: contact.xml (English, United States) * New translations: site.xml (French) * New translations: site.xml (Greek) * New translations: contact.xml (French) * New translations: site.xml (French) * New translations: site.xml (Greek) * New translations: arena.xml (Greek) * New translations: arena.xml (Greek) * New translations: contact.xml (Greek) * New translations: arena.xml (French) * New translations: site.xml (French) * New translations: site.xml (Danish) * New translations: site.xml (Romanian) * New translations: site.xml (Danish) * New translations: preferences.xml (Danish) * New translations: site.xml (Danish) * New translations: site.xml (Dutch) * New translations: faq.xml (Danish) * New translations: site.xml (Korean) * New translations: site.xml (Korean) * New translations: class.xml (Korean) * New translations: contact.xml (Finnish) * New translations: coordinates.xml (Finnish) * New translations: patron.xml (Korean) * New translations: site.xml (Portuguese, Brazilian) * New translations: site.xml (Finnish) * New translations: site.xml (Korean) * New translations: class.xml (Korean) * New translations: arena.xml (Korean) * New translations: site.xml (Portuguese, Brazilian) * New translations: site.xml (Finnish) * New translations: site.xml (Korean) * New translations: arena.xml (Portuguese, Brazilian) * New translations: contact.xml (Korean) * New translations: site.xml (Irish) * New translations: site.xml (Hungarian) * New translations: contact.xml (Irish) * New translations: class.xml (Breton) * New translations: class.xml (Breton) * New translations: contact.xml (Portuguese, Brazilian) * New translations: puzzleTheme.xml (Toki Pona) * New translations: site.xml (Portuguese, Brazilian) * New translations: puzzleTheme.xml (Toki Pona) * New translations: site.xml (Spanish) * New translations: learn.xml (Estonian) * New translations: site.xml (Spanish) * New translations: contact.xml (Spanish) * New translations: site.xml (Spanish) * New translations: contact.xml (Spanish) * New translations: site.xml (Indonesian) * New translations: contact.xml (Indonesian) * New translations: site.xml (Danish) * New translations: site.xml (Danish) * New translations: site.xml (Norwegian Bokmal) * New translations: contact.xml (Burmese) * New translations: site.xml (Japanese) * New translations: contact.xml (Japanese) * New translations: puzzle.xml (Czech) * New translations: site.xml (Finnish) * New translations: site.xml (Hungarian) * New translations: swiss.xml (Spanish) * New translations: site.xml (Greek) * New translations: site.xml (Danish) * New translations: site.xml (French) * New translations: site.xml (Romanian) * New translations: site.xml (German) * New translations: site.xml (Irish) * New translations: site.xml (Spanish) * New translations: site.xml (German, Switzerland) * New translations: site.xml (Swedish) * New translations: site.xml (Indonesian) * New translations: site.xml (Norwegian Nynorsk) * New translations: site.xml (Portuguese, Brazilian) * New translations: site.xml (English, United States) * New translations: site.xml (Norwegian Bokmal) * New translations: site.xml (Japanese) * New translations: site.xml (Korean) * New translations: site.xml (Lithuanian) * New translations: site.xml (Dutch) * New translations: site.xml (Portuguese) * New translations: site.xml (German) * New translations: site.xml (French) * New translations: site.xml (Danish) * New translations: site.xml (Portuguese) * New translations: swiss.xml (French) * New translations: swiss.xml (Danish) * New translations: swiss.xml (German) * New translations: site.xml (German) * New translations: site.xml (Romanian) * New translations: site.xml (Basque) * New translations: site.xml (Latvian) * New translations: arena.xml (Basque) * New translations: swiss.xml (Romanian) * New translations: swiss.xml (French) * New translations: swiss.xml (German) * New translations: swiss.xml (Estonian) * New translations: swiss.xml (Latvian) * New translations: swiss.xml (Finnish) * New translations: site.xml (Finnish) * New translations: arena.xml (Basque) * New translations: contact.xml (Basque) * New translations: swiss.xml (Basque) * New translations: swiss.xml (Finnish) * New translations: site.xml (French) * New translations: arena.xml (German, Switzerland) * New translations: arena.xml (Burmese) * New translations: arena.xml (Hungarian) * New translations: arena.xml (Japanese) * New translations: arena.xml (Korean) * New translations: arena.xml (Dutch) * New translations: arena.xml (Portuguese) * New translations: arena.xml (Romanian) * New translations: arena.xml (French) * New translations: arena.xml (Spanish) * New translations: arena.xml (Bulgarian) * New translations: arena.xml (Basque) * New translations: arena.xml (Catalan) * New translations: arena.xml (Danish) * New translations: arena.xml (German) * New translations: arena.xml (Greek) * New translations: arena.xml (Slovenian) * New translations: arena.xml (Norwegian Nynorsk) * New translations: arena.xml (Latvian) * New translations: arena.xml (Persian) * New translations: arena.xml (Turkish) * New translations: arena.xml (Ukrainian) * New translations: arena.xml (Indonesian) * New translations: arena.xml (Portuguese, Brazilian) * New translations: swiss.xml (French) * New translations: site.xml (Portuguese) * New translations: arena.xml (Chinese Traditional) * New translations: arena.xml (Persian) * New translations: arena.xml (German, Switzerland) * New translations: contact.xml (Irish) * New translations: swiss.xml (Portuguese) * New translations: site.xml (Greek) * New translations: site.xml (Hungarian) * New translations: faq.xml (Danish) * New translations: swiss.xml (Greek) * New translations: swiss.xml (Hungarian) * New translations: faq.xml (Catalan) * New translations: site.xml (Russian) * New translations: swiss.xml (Russian) * New translations: site.xml (Russian) * New translations: site.xml (Persian) * New translations: swiss.xml (Russian) * New translations: swiss.xml (Persian) * New translations: swiss.xml (Persian) * New translations: site.xml (English, United States) * New translations: site.xml (Dutch) * New translations: site.xml (Portuguese) * New translations: swiss.xml (Dutch) * New translations: swiss.xml (English, United States) * New translations: swiss.xml (German) * New translations: site.xml (French) * New translations: site.xml (Hungarian) * New translations: contact.xml (Turkish) * New translations: swiss.xml (Hungarian) * New translations: site.xml (French) * New translations: site.xml (English, United States) * New translations: site.xml (Finnish) * New translations: swiss.xml (Dutch) * New translations: site.xml (Dutch) * New translations: swiss.xml (Japanese) * New translations: site.xml (Japanese) * New translations: swiss.xml (Japanese) * New translations: site.xml (Malay) * New translations: site.xml (Lithuanian) * New translations: swiss.xml (Lithuanian) * New translations: site.xml (Malay) * New translations: swiss.xml (Lithuanian) * New translations: site.xml (Norwegian Bokmal) * New translations: swiss.xml (Norwegian Bokmal) * New translations: swiss.xml (Portuguese, Brazilian) * New translations: site.xml (Portuguese, Brazilian) * New translations: swiss.xml (Portuguese, Brazilian) * New translations: storm.xml (French) * New translations: site.xml (English, United States) * New translations: storm.xml (Portuguese) * New translations: storm.xml (Spanish) * New translations: storm.xml (Danish) * New translations: storm.xml (Greek) * New translations: site.xml (English, United States) * New translations: site.xml (Norwegian Nynorsk) * New translations: arena.xml (English, United States) * New translations: swiss.xml (Norwegian Nynorsk) * New translations: storm.xml (German) * New translations: storm.xml (Turkish) * New translations: storm.xml (English, United States) * New translations: storm.xml (Persian) * New translations: swiss.xml (Norwegian Nynorsk) * New translations: storm.xml (Finnish) * New translations: swiss.xml (Chinese Traditional) * New translations: search.xml (Chinese Traditional) --- translation/dest/activity/da-DK.xml | 8 +- translation/dest/activity/de-CH.xml | 2 +- translation/dest/activity/hy-AM.xml | 4 + translation/dest/arena/bg-BG.xml | 6 ++ translation/dest/arena/ca-ES.xml | 2 + translation/dest/arena/da-DK.xml | 10 ++- translation/dest/arena/de-CH.xml | 11 ++- translation/dest/arena/de-DE.xml | 11 ++- translation/dest/arena/el-GR.xml | 8 ++ translation/dest/arena/en-US.xml | 8 ++ translation/dest/arena/es-ES.xml | 8 ++ translation/dest/arena/eu-ES.xml | 8 ++ translation/dest/arena/fa-IR.xml | 14 ++- translation/dest/arena/fi-FI.xml | 8 ++ translation/dest/arena/fr-FR.xml | 8 ++ translation/dest/arena/ga-IE.xml | 8 ++ translation/dest/arena/gl-ES.xml | 8 ++ translation/dest/arena/hu-HU.xml | 8 ++ translation/dest/arena/hy-AM.xml | 3 + translation/dest/arena/id-ID.xml | 8 ++ translation/dest/arena/ja-JP.xml | 8 ++ translation/dest/arena/ko-KR.xml | 8 ++ translation/dest/arena/lt-LT.xml | 8 ++ translation/dest/arena/lv-LV.xml | 8 ++ translation/dest/arena/my-MM.xml | 11 ++- translation/dest/arena/nb-NO.xml | 8 ++ translation/dest/arena/nl-NL.xml | 8 ++ translation/dest/arena/nn-NO.xml | 8 ++ translation/dest/arena/pl-PL.xml | 8 ++ translation/dest/arena/pt-BR.xml | 8 ++ translation/dest/arena/pt-PT.xml | 8 ++ translation/dest/arena/ro-RO.xml | 3 + translation/dest/arena/ru-RU.xml | 8 ++ translation/dest/arena/sl-SI.xml | 8 ++ translation/dest/arena/tr-TR.xml | 8 ++ translation/dest/arena/uk-UA.xml | 8 ++ translation/dest/arena/zh-TW.xml | 3 +- translation/dest/broadcast/uk-UA.xml | 11 ++- translation/dest/challenge/de-CH.xml | 10 +-- translation/dest/challenge/eo-UY.xml | 14 ++- translation/dest/challenge/he-IL.xml | 13 +++ translation/dest/class/af-ZA.xml | 1 - translation/dest/class/an-ES.xml | 1 - translation/dest/class/ar-SA.xml | 1 - translation/dest/class/az-AZ.xml | 1 - translation/dest/class/bg-BG.xml | 4 + translation/dest/class/bn-BD.xml | 1 - translation/dest/class/br-FR.xml | 4 +- translation/dest/class/bs-BA.xml | 1 - translation/dest/class/ca-ES.xml | 1 - translation/dest/class/cs-CZ.xml | 1 - translation/dest/class/da-DK.xml | 9 +- translation/dest/class/de-CH.xml | 7 +- translation/dest/class/de-DE.xml | 9 +- translation/dest/class/el-GR.xml | 5 +- translation/dest/class/en-US.xml | 5 +- translation/dest/class/eo-UY.xml | 1 - translation/dest/class/es-ES.xml | 5 +- translation/dest/class/et-EE.xml | 3 +- translation/dest/class/eu-ES.xml | 5 +- translation/dest/class/fa-IR.xml | 4 + translation/dest/class/fi-FI.xml | 5 +- translation/dest/class/fo-FO.xml | 1 - translation/dest/class/fr-FR.xml | 5 +- translation/dest/class/ga-IE.xml | 5 +- translation/dest/class/gl-ES.xml | 5 +- translation/dest/class/gu-IN.xml | 5 +- translation/dest/class/he-IL.xml | 1 - translation/dest/class/hi-IN.xml | 1 - translation/dest/class/hr-HR.xml | 1 - translation/dest/class/hu-HU.xml | 5 +- translation/dest/class/id-ID.xml | 5 +- translation/dest/class/it-IT.xml | 1 - translation/dest/class/ja-JP.xml | 5 +- translation/dest/class/kk-KZ.xml | 1 - translation/dest/class/ko-KR.xml | 5 +- translation/dest/class/lt-LT.xml | 5 +- translation/dest/class/lv-LV.xml | 5 +- translation/dest/class/mk-MK.xml | 1 - translation/dest/class/ml-IN.xml | 4 +- translation/dest/class/nb-NO.xml | 5 +- translation/dest/class/nl-NL.xml | 5 +- translation/dest/class/nn-NO.xml | 5 +- translation/dest/class/pl-PL.xml | 5 +- translation/dest/class/pt-BR.xml | 5 +- translation/dest/class/pt-PT.xml | 1 - translation/dest/class/ro-RO.xml | 5 +- translation/dest/class/ru-RU.xml | 5 +- translation/dest/class/sk-SK.xml | 1 - translation/dest/class/sl-SI.xml | 5 +- translation/dest/class/sq-AL.xml | 1 - translation/dest/class/sr-SP.xml | 1 - translation/dest/class/sv-SE.xml | 1 - translation/dest/class/tr-TR.xml | 5 +- translation/dest/class/uk-UA.xml | 1 - translation/dest/class/uz-UZ.xml | 1 - translation/dest/class/vi-VN.xml | 1 - translation/dest/class/zh-CN.xml | 1 - translation/dest/coach/pt-PT.xml | 22 ++--- translation/dest/contact/da-DK.xml | 1 + translation/dest/contact/de-CH.xml | 116 ++++++++++++------------- translation/dest/contact/de-DE.xml | 1 + translation/dest/contact/el-GR.xml | 1 + translation/dest/contact/es-ES.xml | 63 +++++++------- translation/dest/contact/eu-ES.xml | 1 + translation/dest/contact/fi-FI.xml | 1 + translation/dest/contact/fr-FR.xml | 1 + translation/dest/contact/ga-IE.xml | 4 +- translation/dest/contact/gl-ES.xml | 1 + translation/dest/contact/hu-HU.xml | 1 + translation/dest/contact/id-ID.xml | 1 + translation/dest/contact/ja-JP.xml | 1 + translation/dest/contact/ko-KR.xml | 1 + translation/dest/contact/lt-LT.xml | 1 + translation/dest/contact/lv-LV.xml | 1 + translation/dest/contact/my-MM.xml | 1 + translation/dest/contact/nl-NL.xml | 1 + translation/dest/contact/nn-NO.xml | 1 + translation/dest/contact/pl-PL.xml | 1 + translation/dest/contact/pt-BR.xml | 1 + translation/dest/contact/ru-RU.xml | 1 + translation/dest/contact/sl-SI.xml | 1 + translation/dest/contact/sv-SE.xml | 1 + translation/dest/contact/tr-TR.xml | 1 + translation/dest/coordinates/fi-FI.xml | 2 +- translation/dest/faq/ca-ES.xml | 6 +- translation/dest/faq/da-DK.xml | 5 +- translation/dest/learn/cs-CZ.xml | 6 ++ translation/dest/learn/de-CH.xml | 14 +-- translation/dest/learn/et-EE.xml | 2 +- translation/dest/learn/he-IL.xml | 1 + translation/dest/patron/cs-CZ.xml | 4 +- translation/dest/patron/de-CH.xml | 4 +- translation/dest/patron/es-ES.xml | 34 ++++---- translation/dest/patron/ko-KR.xml | 2 + translation/dest/patron/sv-SE.xml | 29 ++++--- translation/dest/patron/uk-UA.xml | 1 + translation/dest/perfStat/cs-CZ.xml | 1 + translation/dest/perfStat/fi-FI.xml | 2 +- translation/dest/perfStat/pt-PT.xml | 11 +-- translation/dest/preferences/da-DK.xml | 4 +- translation/dest/puzzle/cs-CZ.xml | 3 + translation/dest/puzzle/da-DK.xml | 2 +- translation/dest/puzzle/de-CH.xml | 16 ++-- translation/dest/puzzleTheme/bg-BG.xml | 4 +- translation/dest/puzzleTheme/cs-CZ.xml | 2 + translation/dest/puzzleTheme/eo-UY.xml | 22 +++++ translation/dest/search/uk-UA.xml | 5 ++ translation/dest/search/zh-TW.xml | 6 +- translation/dest/settings/pt-PT.xml | 4 +- translation/dest/site/bg-BG.xml | 11 ++- translation/dest/site/bn-BD.xml | 1 - translation/dest/site/ca-ES.xml | 6 ++ translation/dest/site/cs-CZ.xml | 7 ++ translation/dest/site/da-DK.xml | 67 ++++++++++---- translation/dest/site/de-CH.xml | 32 ++++++- translation/dest/site/de-DE.xml | 29 +++++++ translation/dest/site/el-GR.xml | 29 +++++++ translation/dest/site/en-US.xml | 32 ++++++- translation/dest/site/es-ES.xml | 24 +++++ translation/dest/site/et-EE.xml | 2 + translation/dest/site/eu-ES.xml | 28 ++++++ translation/dest/site/fa-IR.xml | 20 +++++ translation/dest/site/fi-FI.xml | 35 +++++++- translation/dest/site/fr-FR.xml | 25 ++++++ translation/dest/site/ga-IE.xml | 24 +++++ translation/dest/site/gl-ES.xml | 15 ++++ translation/dest/site/he-IL.xml | 1 + translation/dest/site/hr-HR.xml | 2 + translation/dest/site/hu-HU.xml | 29 +++++++ translation/dest/site/hy-AM.xml | 79 ++++++++++++++++- translation/dest/site/id-ID.xml | 24 +++++ translation/dest/site/ja-JP.xml | 37 +++++++- translation/dest/site/ko-KR.xml | 31 ++++++- translation/dest/site/lt-LT.xml | 29 +++++++ translation/dest/site/lv-LV.xml | 28 ++++++ translation/dest/site/ms-MY.xml | 41 +++++++++ translation/dest/site/my-MM.xml | 15 ++++ translation/dest/site/nb-NO.xml | 23 ++++- translation/dest/site/nl-NL.xml | 29 +++++++ translation/dest/site/nn-NO.xml | 31 ++++++- translation/dest/site/pl-PL.xml | 29 ++++++- translation/dest/site/pt-BR.xml | 31 ++++++- translation/dest/site/pt-PT.xml | 31 ++++++- translation/dest/site/ro-RO.xml | 11 ++- translation/dest/site/ru-RU.xml | 31 ++++++- translation/dest/site/si-LK.xml | 62 +++++++++++++ translation/dest/site/sk-SK.xml | 2 - translation/dest/site/sl-SI.xml | 26 +++++- translation/dest/site/sq-AL.xml | 2 - translation/dest/site/sr-SP.xml | 2 - translation/dest/site/sv-SE.xml | 21 ++++- translation/dest/site/th-TH.xml | 2 - translation/dest/site/tk-TM.xml | 2 - translation/dest/site/tl-PH.xml | 2 - translation/dest/site/tp-TP.xml | 3 +- translation/dest/site/tr-TR.xml | 17 +++- translation/dest/site/tt-RU.xml | 2 - translation/dest/site/uk-UA.xml | 2 - translation/dest/site/ur-PK.xml | 2 - translation/dest/site/uz-UZ.xml | 2 - translation/dest/site/vi-VN.xml | 1 - translation/dest/site/zh-CN.xml | 1 - translation/dest/site/zh-TW.xml | 1 - translation/dest/storm/da-DK.xml | 1 + translation/dest/storm/de-DE.xml | 1 + translation/dest/storm/el-GR.xml | 1 + translation/dest/storm/en-US.xml | 1 + translation/dest/storm/eo-UY.xml | 15 +++- translation/dest/storm/es-ES.xml | 1 + translation/dest/storm/fa-IR.xml | 7 ++ translation/dest/storm/fi-FI.xml | 1 + translation/dest/storm/fr-FR.xml | 4 +- translation/dest/storm/he-IL.xml | 28 +++++- translation/dest/storm/pt-PT.xml | 2 + translation/dest/storm/tr-TR.xml | 1 + translation/dest/storm/uk-UA.xml | 1 + translation/dest/streamer/de-CH.xml | 62 ++++++------- translation/dest/study/fi-FI.xml | 4 +- translation/dest/swiss/da-DK.xml | 7 ++ translation/dest/swiss/de-DE.xml | 7 ++ translation/dest/swiss/el-GR.xml | 7 ++ translation/dest/swiss/en-US.xml | 7 ++ translation/dest/swiss/es-ES.xml | 2 +- translation/dest/swiss/et-EE.xml | 1 + translation/dest/swiss/eu-ES.xml | 7 ++ translation/dest/swiss/fa-IR.xml | 4 + translation/dest/swiss/fi-FI.xml | 7 ++ translation/dest/swiss/fr-FR.xml | 7 ++ translation/dest/swiss/he-IL.xml | 6 ++ translation/dest/swiss/hu-HU.xml | 7 ++ translation/dest/swiss/ja-JP.xml | 7 ++ translation/dest/swiss/lt-LT.xml | 7 ++ translation/dest/swiss/lv-LV.xml | 7 ++ translation/dest/swiss/nb-NO.xml | 2 + translation/dest/swiss/nl-NL.xml | 7 ++ translation/dest/swiss/nn-NO.xml | 7 ++ translation/dest/swiss/pt-BR.xml | 7 ++ translation/dest/swiss/pt-PT.xml | 7 ++ translation/dest/swiss/ro-RO.xml | 5 ++ translation/dest/swiss/ru-RU.xml | 7 ++ translation/dest/swiss/zh-TW.xml | 1 + translation/dest/team/fi-FI.xml | 2 +- translation/dest/tfa/fa-IR.xml | 1 + translation/dest/tourname/da-DK.xml | 56 ++++++------ 245 files changed, 1921 insertions(+), 408 deletions(-) diff --git a/translation/dest/activity/da-DK.xml b/translation/dest/activity/da-DK.xml index 12ee9878fb..15e512cf7c 100644 --- a/translation/dest/activity/da-DK.xml +++ b/translation/dest/activity/da-DK.xml @@ -27,12 +27,12 @@ Spillede %1$s træk - i %1$s korrespondance-spil - i %1$s korrespondance-spil + i %1$s korrespondanceparti + i %1$s korrespondancepartier - Afsluttede %s korrespondancespil - Afsluttede %s korrespondancespil + Afsluttede %s korrespondanceparti + Afsluttede %s korrespondancepartier Begyndte at følge %s spiller diff --git a/translation/dest/activity/de-CH.xml b/translation/dest/activity/de-CH.xml index 8343af63ac..b2a21cc6da 100644 --- a/translation/dest/activity/de-CH.xml +++ b/translation/dest/activity/de-CH.xml @@ -1,7 +1,7 @@ Verlauf - Hät en livestream gmacht + Hät en liveschtriim gmacht Unterstützt lichess.org sit %1$s Monät als %2$s Unterstützt lichess.org seit %1$s Monaten als %2$s diff --git a/translation/dest/activity/hy-AM.xml b/translation/dest/activity/hy-AM.xml index e1a54fa82f..5504ebd046 100644 --- a/translation/dest/activity/hy-AM.xml +++ b/translation/dest/activity/hy-AM.xml @@ -1,4 +1,8 @@ Գործունեություն + + Ավարտված է %s «Արենա» մրցաշարը + Ավարտված են %s «Արենա» մրցաշարերը + diff --git a/translation/dest/arena/bg-BG.xml b/translation/dest/arena/bg-BG.xml index 18144ba928..b8a1237d72 100644 --- a/translation/dest/arena/bg-BG.xml +++ b/translation/dest/arena/bg-BG.xml @@ -43,4 +43,10 @@ Вижте отбора Вижте всички %s отбора + Нова отборна битка + Начална дата + Позволи Берсерк + Позволи на играчите да обсъждат в чата + Последователности в арената + След 2 победи, всяка последователна победа носи 4 точки вместо 2. diff --git a/translation/dest/arena/ca-ES.xml b/translation/dest/arena/ca-ES.xml index d1628815a6..2cdbe820db 100644 --- a/translation/dest/arena/ca-ES.xml +++ b/translation/dest/arena/ca-ES.xml @@ -41,4 +41,6 @@ Juga ràpid i torna al vestíbul per jugar més partits i guanyar més punts.Veure l\'equip Veure els %s equips + Nova batalla d\'equips + Es permet Berserk diff --git a/translation/dest/arena/da-DK.xml b/translation/dest/arena/da-DK.xml index 157de567fb..e3b122aae2 100644 --- a/translation/dest/arena/da-DK.xml +++ b/translation/dest/arena/da-DK.xml @@ -24,7 +24,7 @@ Bersærk giver kun ekstra point, hvis du laver mindst 7 træk i partiet.Hvordan findes vinderen? Spilleren (eller spillerne) med flest point, når turneringens fastsatte tidsgrænse nås, erklæres for vinder(e). Hvordan foretages pardannelse? - Ved starten på turneringen parres spillere på baggrund af deres rating. Vend tilbage til turneringslobbyen, når du afslutter et parti: så vil du igen blive parret med en spiller tæt på din score. Det sikrer minimal ventetid, men du møder måske ikke alle andre deltagere i turneringen. + Ved starten på turneringen parres spillere på baggrund af deres rating. Vend tilbage til turneringslobbyen, når du afslutter et parti: så vil du igen blive parret med en spiller tæt på din ranking. Det sikrer minimal ventetid, men du møder måske ikke alle andre deltagere i turneringen. Spil hurtigt og vend tilbage til lobbyen for at spille flere partier og vinde flere point. Hvordan afsluttes det? Turneringen har et nedtællingsur. Når det rammer nul fastfryses turneringsplaceringer, og en vinder kåres. Igangværende partier skal spilles færdig, men de tæller ikke med i turneringen. @@ -42,4 +42,12 @@ Spil hurtigt og vend tilbage til lobbyen for at spille flere partier og vinde fl Se holdet Se alle %s hold + Ny holdkamp + Tilpasset startdato + I din egen lokale tidszone. Dette tilsidesætter \"Tid før turnering starter\" indstillingen + Tillad Berserk + Lad spillerne halvere deres tid på uret for at få et ekstra point + Lad spillere diskutere i et chatrum + Arena-stime + Efter 2 sejre giver fortløbende sejre 4 point i stedet for 2. diff --git a/translation/dest/arena/de-CH.xml b/translation/dest/arena/de-CH.xml index 236bcfbcdb..c46cd1a94b 100644 --- a/translation/dest/arena/de-CH.xml +++ b/translation/dest/arena/de-CH.xml @@ -29,8 +29,7 @@ Wenn zwei oder meh Schpiller/-innä di gliich Punktzahl bsitzäd, entscheidät d Sobald du es Schpiil beändät häsch, chasch du zur Turnierübersicht zrugggoh. Dir wird dänn än Schpiller/ ä Schpillerin mit ähnlichäm Rang zuäteilt. So wird ä churzi Warteziit erreicht, allerdings cha passiärä, dass du nöd geg alli anderä Schpiller/-innä im Turnier spillsch. Prässiär und gohn zur Turnierübersicht zrugg, zum meh Schpiil z\'schpilä und ä höcheri Punktzahl z\'erziilä. Wänn ändät äsTurnier? - WährendmäTurnier wird d\'Ziit abäzellt. Wenn si null erreicht, wird d\'Ranglischte iigfrorä und dä Gwünner bekanntgeh. -Laufendi Partiä münd beändä wärdä, zelläd aber nümä für das Turnier. + WährendmäTurnier wird d\'Ziit abäzellt. Wenn si null erreicht, wird d\'Ranglischte iigfrorä und dä Gwünner bekanntgeh. Laufendi Partiä münd beändä wärdä, zelläd aber nümä für das Turnier. Anderi wichtigi Reglä Es git en Countdown für din erschtä Zug. Züchsch du nöd innerhalb vo därä Zit, wird dä Siig dim Gegner zuegsprochä. Usserdem bechömäd Zürcher immer ein Punkt Abzug. @@ -45,4 +44,12 @@ Laufendi Partiä münd beändä wärdä, zelläd aber nümä für das Turnier.Das Team ansehen Alli %s Teams aluägä + Neuer Teamkampf + Benutzerdefiniertes Startdatum + In deiner eigenen, lokalen Zeitzone. Dies wird die Einstellung \"Zeit bevor das Turnier beginnt\" überschreiben + Berserk erlauben + Lasse Spieler ihre Bedenkzeit halbieren, um einen zusätzlichen Punkt zu erzielen + Lasse Spieler in einem Chatraum diskutieren + Arena-Siegesserien + Nach 2 Siegen gewähren aufeinander folgende Siege 4 Punkte anstelle von 2. diff --git a/translation/dest/arena/de-DE.xml b/translation/dest/arena/de-DE.xml index 0610befa53..c2a6c08bb4 100644 --- a/translation/dest/arena/de-DE.xml +++ b/translation/dest/arena/de-DE.xml @@ -29,8 +29,7 @@ Wenn zwei oder mehr Spieler die gleiche Punktzahl besitzen, entscheidet die Turn Sobald du ein Spiel beendet hast, kannst du zur Turnierübersicht zurückkehren. Dir wird dann ein Spieler mit ähnlichem Rang zugeteilt. Dadurch wird eine kurze Wartezeit erreicht, allerdings kann es sein, dass du nicht gegen alle anderen Spieler in diesem Turnier spielen wirst. Spiele schnell und kehre zur Turnierübersicht zurück, um mehr Spiele zu spielen und eine höhere Punktzahl zu erzielen. Wann endet das Turnier? - Während des Turniers wird die Zeit heruntergezählt. Wenn sie null erreicht, wird die Rangliste eingefroren und der Gewinner bekanntgegeben. -Laufende Partien müssen beendet werden, zählen aber nicht mehr für das Turnier. + Während des Turniers wird die Zeit heruntergezählt. Wenn sie null erreicht, wird die Rangliste eingefroren und der Gewinner bekanntgegeben. Laufende Partien müssen beendet werden, zählen aber nicht mehr für das Turnier. Andere wichtige Regeln Es gibt einen Countdown für deinen ersten Zug. Ziehst du nicht innerhalb dieser Zeit, wird der Sieg deinem Gegner zugesprochen. @@ -45,4 +44,12 @@ Laufende Partien müssen beendet werden, zählen aber nicht mehr für das Turnie Das Team ansehen Alle %s Teams ansehen + Neuer Teamkampf + Benutzerdefiniertes Startdatum + In deiner eigenen, lokalen Zeitzone. Dies wird die Einstellung \"Zeit bevor das Turnier beginnt\" überschreiben + Berserk erlauben + Lasse Spieler ihre Bedenkzeit halbieren, um einen zusätzlichen Punkt zu erzielen + Lasse Spieler in einem Chatraum diskutieren + Arena-Siegesserien + Nach 2 Siegen gewähren aufeinander folgende Siege 4 Punkte anstelle von 2. diff --git a/translation/dest/arena/el-GR.xml b/translation/dest/arena/el-GR.xml index ebdddaafbb..5e8d429b1d 100644 --- a/translation/dest/arena/el-GR.xml +++ b/translation/dest/arena/el-GR.xml @@ -44,4 +44,12 @@ To Berserk δεν ισχύει για παρτίδες με μηδενικό α Δείτε την ομάδα Δείτε όλες τις %s ομάδες + Νέα ομαδική μάχη + Προσαρμοσμένη ημερομηνία έναρξης + Στην τοπική ζώνη ώρας σας. Αυτό υπερισχύει της ρύθμισης \"Χρόνος προτού ξεκινήσει το πρωτάθλημα\" + Να επιτρέπεται το Berserk + Να επιτρέπεται στους παίκτες να μειώσουν τον χρόνο στο ρολόι τους κατά το ήμισυ για να κερδίσουν έναν επιπλέον πόντο + Να επιτρέπεται στους παίκτες να συζητούν σε δωμάτιο συνομιλίας + Arena streaks + Μετά από 2 νίκες, επιπλέον διαδοχικές νίκες σας 4 πόντους αντί για 2. diff --git a/translation/dest/arena/en-US.xml b/translation/dest/arena/en-US.xml index a0e5ae24da..f8ed4c8c39 100644 --- a/translation/dest/arena/en-US.xml +++ b/translation/dest/arena/en-US.xml @@ -45,4 +45,12 @@ Play fast and return to the lobby to play more games and win more points.View the team View all %s teams + New Team Battle + Custom start date + In your own local timezone. This overrides the \"Time before tournament starts\" setting + Allow Berserk + Let players halve their clock time to gain an extra point + Let players discuss in a chat room + Arena streaks + After 2 wins, consecutive wins grant 4 points instead of 2. diff --git a/translation/dest/arena/es-ES.xml b/translation/dest/arena/es-ES.xml index 2d8030ef9a..ff7768aaed 100644 --- a/translation/dest/arena/es-ES.xml +++ b/translation/dest/arena/es-ES.xml @@ -44,4 +44,12 @@ Juega rápido y vuelve al recibidor para jugar más partidas y ganar más puntos Ver equipo Ver los %s equipos + Nueva batalla de equipo + Fecha de inicio personalizada + En tu propia zona horaria local. Esto reemplaza la configuración de «Tiempo antes de que comience el torneo». + Permitir Berserk + Permite a los jugadores reducir el tiempo de la partida a la mitad para ganar un punto extra + Permite a los jugadores comunicarse en una sala de chat + Rachas de torneos + Después de ganar 2 partidas seguidas, cada victoria consecutiva concede 4 puntos en lugar de 2. diff --git a/translation/dest/arena/eu-ES.xml b/translation/dest/arena/eu-ES.xml index 7a474e53d4..8ac1dbbacf 100644 --- a/translation/dest/arena/eu-ES.xml +++ b/translation/dest/arena/eu-ES.xml @@ -43,4 +43,12 @@ Jokatu azkar, itzuli egongelara partida gehiago jokatu eta puntu gehiago irabazt Taldea ikusi %s taldeak ikusi + Taldeen Arteko Txapelketa berria + Pertsonalizatutako hasiera data + Zure ordu-zonan. Honek \"Txapeketa hasi aurreko denbora\" ezarpena gainidazten du + Berserk onartu + Utzi jokalariei beren denbora erdira jaisten puntu gehigarri bat lortzeko + Utzi jokalariei txatean hitz egiten + Arena boladak + Bi garaipenen ostean, jarraian datozen garaipenek 4 puntu emango dituzte 2 eman beharrean. diff --git a/translation/dest/arena/fa-IR.xml b/translation/dest/arena/fa-IR.xml index 7222ba7772..5598af32cb 100644 --- a/translation/dest/arena/fa-IR.xml +++ b/translation/dest/arena/fa-IR.xml @@ -1,5 +1,6 @@ + مسابقات آیا رسمی است؟ هنگام شروع تورنومنت به شما اطلاع داده خواهد شد، پس در زمان انتظار بازی کردن در تب های دیگر بلامانع است. این تورنومنت رسمی است و بر روی ریتینگ شما تاثیر میگذارد. @@ -25,10 +26,17 @@ در ابتدای تورنومنت، بازیکنان با توجه به امتیازهایشان با یکدیگر روبه رو میشوند. به محض اینکه شما بازی را تمام کردید و به لابی تورنومنت برگردید: شما به بازیکنی که رتبه نزدیک تری به شما دارد متصل میشوید. این مکانیزم در حداقل زمان ممکن انجام میشود، هرچند امکان دارد با همه بازیکنان تورنومنت روبه رو نشوید. سریع بازی کنید و به لابی برگردید تا بازی های بیشتری بازی کنید و امتیاز بیشتری بگیرید. - چگونه پایان میابد؟ - تورنومنت یک ساعت شمارش معکوس دارد. وقتی به صفر برسد، رتبه بندی تورنومنت غیرقابل تغییر میشود، و برنده اعلام میشود. -بازی های در حال اجرا باید تمام شوند، هر چند نتیجه آن بازی ها تاثیری در تورنومنت ندارد. + چگونه به پایان می رسد؟ + تورنومنت یک ساعت شمارش معکوس دارد. وقتی به صفر برسد، رتبه بندی تورنومنت غیرقابل تغییر میشود، و برنده اعلام میشود. بازی های در حال اجرا باید تمام شوند، هر چند نتیجه آن بازی ها تاثیری در تورنومنت ندارد. قوانین مهم دیگر این یک تورنومنت خصوصی است این لینک را برای پیوستن دیگران به اشتراک بگذارید.%s + تاریخچه مسابقات + مبارزه تیمی جدید + تنظیم تاریخ شروع + در منطقه زمانی محلی خودتان. تنظیمات \"زمان قبل شروع شدن مسابقه\" را نادیده می گیرد + مجاز کردن برسرک + به بازیکنان اجازه دهید تا زمان خود را نصف کنند تا یک امتیاز اضافی بگیرند + اجازه دادن بحث به بازیکنان در چت روم + بعد از دو برد، بردهای پی در پی بجای 2 امتیاز 4 امتیاز می دهند. diff --git a/translation/dest/arena/fi-FI.xml b/translation/dest/arena/fi-FI.xml index bc169b44b8..228a27466d 100644 --- a/translation/dest/arena/fi-FI.xml +++ b/translation/dest/arena/fi-FI.xml @@ -43,4 +43,12 @@ Pelaa nopeasti ja palaa aulaan, niin voit pelata lisää pelejä ja ansaita lis Näytä joukkue Näytä kaikki %s joukkuetta + Uusi joukkuetaisto + Mukautettu alkamisaika + Omalla aikavyöhykkeelläsi. Tämä korvaa asetuksen \"Aika ennen turnauksen alkua\" + Salli berserkki + Anna pelaajien puolittaa aika kellossaan ja tavoitella lisäpistettä + Anna pelaajien kirjoittaa keskusteluhuoneeseen + Areenaputket + Kahden voiton jälkeen jokaisesta seuraavasta voitosta saa 4 pistettä (2 pisteen sijaan). diff --git a/translation/dest/arena/fr-FR.xml b/translation/dest/arena/fr-FR.xml index a86037e821..f913f311f4 100644 --- a/translation/dest/arena/fr-FR.xml +++ b/translation/dest/arena/fr-FR.xml @@ -42,4 +42,12 @@ Jouez vite et retournez à la page d\'accueil du tournoi pour jouer plus de part Voir l\'équipe Voir toutes les équipes %s + Nouveau combat en équipe + Date de début modifiée + Selon votre fuseau horaire. Ce paramètre désactive le paramètre « Temps restant avant le début du tournoi ». + Activer l\'option Berserk + Permettre aux joueurs de réduire de moitié leur temps pour gagner un point supplémentaire + Permettre aux joueurs de clavarder dans le salon de discussion + Série de victoires dans l\'arène + Après 2 victoires, des victoires consécutives donnent 4 points au lieu de 2. diff --git a/translation/dest/arena/ga-IE.xml b/translation/dest/arena/ga-IE.xml index 6371501dc7..012c5c5df5 100644 --- a/translation/dest/arena/ga-IE.xml +++ b/translation/dest/arena/ga-IE.xml @@ -51,4 +51,12 @@ Imir go tapa agus filleadh chuig an forhalla chun níos mó cluichí a imirt agu Féach ar na %s foireann go léir Féach ar na %s foireann go léir + Cath Foirne Nua + Dáta tosaigh saincheaptha + I do chrios ama áitiúil féin. Sáraíonn sé seo an socrú \"Am sula dtosaíonn an comórtas\" + Lig Berserk + Lig d’imreoirí a gcuid ama clog a laghdú chun pointe breise a fháil + Lig d’imreoirí plé a dhéanamh i seomra comhrá + Sruthanna airéine + Tar éis 2 bhua, deonaíonn 4 bhua as a chéile 4 phointe in ionad 2. diff --git a/translation/dest/arena/gl-ES.xml b/translation/dest/arena/gl-ES.xml index 7a2d501bbf..75c9ce2eb5 100644 --- a/translation/dest/arena/gl-ES.xml +++ b/translation/dest/arena/gl-ES.xml @@ -43,4 +43,12 @@ Xoga rápido e volta ao lobby para xogar máis partidas e gañar máis puntos.Ver o equipo Ver todos os %s equipos + Nova batalla por equipos + Fecha de comezo persoalizada + Na túa zona de tempo local. Isto sobreescribe a preferencia \"Tempo antes de que o torneo comece\" + Berserk permitido + Deixa ás xogadoras que reduzan á metade o seu tempo para gañar un ponto extra + Deixa ás xogadoras falar nunha sala de chat + Racha de victorias no Torneo + Despois de 2 victorias, as seguintes victorias consecutivas dan 4 pontos en lugar de 2. diff --git a/translation/dest/arena/hu-HU.xml b/translation/dest/arena/hu-HU.xml index 72ee423c08..c737dd8e02 100644 --- a/translation/dest/arena/hu-HU.xml +++ b/translation/dest/arena/hu-HU.xml @@ -43,4 +43,12 @@ Játssz gyorsan, térj vissza a lobbiba további játszmákért, hogy több pont Csapat megtekintése Mind a %s csapat megtekintése + Új csapatverseny + Kezdés időpontja + Saját időzóna szerint. Ez felülbírálja a \"Hátralévő idő a verseny kezdetéig\" beállítást + Berserk engedélyezése + A játékosok saját idejük feléért cserébe többletpontot kapnak + Chatszoba engedélyezése a játékosoknak + Aréna sorozatok + A második nyert játszmát követően minden nyert játszma 4 pontot ér 2 helyett. diff --git a/translation/dest/arena/hy-AM.xml b/translation/dest/arena/hy-AM.xml index 0691863f54..2f84ad4b2e 100644 --- a/translation/dest/arena/hy-AM.xml +++ b/translation/dest/arena/hy-AM.xml @@ -1,5 +1,6 @@ + «Արենա» մրցաշարեր Գնահատված է? Դուք կտեղեկացվեք մրցաշարի սկզբի մասին, այնպես որ հանգիստ սպասեք: Այս մրցաշարում վարկանիշի հաշվարկ կա, այնպես որ այն կազդի Ձեր վարկանիշի վրա: @@ -26,4 +27,6 @@ Մրցաշարի սկզբում զույգերը կազմվում են ըստ անհատական վարկանիշների: Խաղի ավարտից հետո սեղմեք <<դեպի մրցաշար>> հետ վերադարձի կոճակը, որից հետո Դուք կստանաք նոր մրցակից՝ ըստ Ձեր զբաղեցրած դիրքի: Վիճակահանությունը կտևի ոչ այդքան երկար, սակայն բոլորի հետ խաղալ չեք կարող, միայն Ձեր մոտակայքում գտնվող խաղացողներից կկազմվի զույգը: Խաղացեք արագ և վերադարձեք մրցաշարի հիմնական էջ, որպեսզի խաղաք շատ խաղեր և հավաքեք շատ միավորներ: + Ոչ-ոքիների շարք. եթե խաղացողը «Արենայում» ունի իրար հաջորդող մի քանի ոչ-ոքի, ապա միավոր է տրվում միայն առաջին ոչ-ոքիի համար, կամ այն ոչ-ոքիի համար, որը կտևի %s քայլից ավելի։ Ոչ-ոքիների շարքը կարելի է ընդհատել միայն հաղթանակով, բայց ոչ պարտությամբ կամ ևս մեկ ոչ-ոքիով։ + «Արենայի» պատմություն diff --git a/translation/dest/arena/id-ID.xml b/translation/dest/arena/id-ID.xml index 5d5881f7bb..ac685ba2ec 100644 --- a/translation/dest/arena/id-ID.xml +++ b/translation/dest/arena/id-ID.xml @@ -28,4 +28,12 @@ Lihat semua %s tim + Pertempuran Tim Baru + Tanggal mulai khusus + Dalam zona waktu lokal Anda sendiri. Ini akan menimpa pengaturan \"Waktu sebelum turnamen dimulai\" + Izinkan Berserk + Biarkan pemain memotong waktu jam mereka untuk mendapatkan sebuah poin ekstra + Biarkan pemain berdiskusi dalam sebuah ruang obrol + Streak arena + Setelah 2 kemenangan, secar berurutan akan mendapatkan 4 poin alih-alih 2. diff --git a/translation/dest/arena/ja-JP.xml b/translation/dest/arena/ja-JP.xml index f0fe9be273..1d140f0f68 100644 --- a/translation/dest/arena/ja-JP.xml +++ b/translation/dest/arena/ja-JP.xml @@ -35,4 +35,12 @@ %s チームを表示 + 新しいチームバトル + 開始日を指定 + 自分のタイムゾーンでの日時。これは「トーナメント開始時刻」の設定より優先されます。 + バーサークあり + 持時間半減で 1 ポイントボーナスを認める + チャットルームでの会話を認める + 連勝ボーナスあり + 2 連勝すると以降の勝ちは 2 ではなく 4 ポイントになる。 diff --git a/translation/dest/arena/ko-KR.xml b/translation/dest/arena/ko-KR.xml index 8b501258b4..4f8d41e5a7 100644 --- a/translation/dest/arena/ko-KR.xml +++ b/translation/dest/arena/ko-KR.xml @@ -43,4 +43,12 @@ 모두 %s개 팀 보기 + 새 팀 배틀 + 시작시간 설정 + 당신의 현지 시간대입니다. \"토너먼트 시작까지 시간\" 설정을 덮어씁니다. + 버서크 모드 허용 + 플레이어는 자신의 시간을 절반으로 줄이며 대신 추가 승점을 얻습니다 + 플레이어가 채팅방에서 토론할 수 있습니다 + 아레나 연승 + 2승 이후 추가로 연승을 하면 2점이 아니라 4점을 얻습니다. diff --git a/translation/dest/arena/lt-LT.xml b/translation/dest/arena/lt-LT.xml index 4f5fd9f908..c20df36631 100644 --- a/translation/dest/arena/lt-LT.xml +++ b/translation/dest/arena/lt-LT.xml @@ -47,4 +47,12 @@ Kai tik baigiate partiją, grįžkite į turnyro laukiamąjį: tuomet būsite su Peržvelgti visas %s komandų Peržvelgti visas %s komandų + Nauja komandinė kova + Kita pradžios data + Jūsų laiko zonoje. Turi pirmenybę prieš \"Laikas iki turnyro pradžios\" nustatymą + Leisti \"įsiutį\" + Leisti žaidėjams gauti tašką perpus sumažinant laiką ant savo laikrodžio + Leisti žaidėjams kalbėtis pokalbių kambaryje + Arenos serijos + Po dviejų pergalių kiti laimėjimai suteikia keturis taškus vietoje dviejų. diff --git a/translation/dest/arena/lv-LV.xml b/translation/dest/arena/lv-LV.xml index d922445ca3..da782160bf 100644 --- a/translation/dest/arena/lv-LV.xml +++ b/translation/dest/arena/lv-LV.xml @@ -48,4 +48,12 @@ Spēlē ātri un atgriezies vestibilā lai spēlētu vairāk spēļu un iegūtu Skatīt %s komandu Skatīt visas %s komandas + Jauna Komandas Kauja + Pielāgots sākuma datums + Jūsu laika zonā. Šis aizstās iestatījumu \"Laiks līdz turnīra sākumam\" + Atļaut \"dullās\" spēles + Ļaut spēlētājiem apmainīt pusi laika pret iespēju gūt papildpunktu + Ļaut spēlētājiem izmantot sarunu istabu + Arēnas uzvaru sērija + Pēc 2 uzvarām, secīgās uzvaras piešķirs 4 punktus nevis 2. diff --git a/translation/dest/arena/my-MM.xml b/translation/dest/arena/my-MM.xml index 3ea04e700d..1e41078977 100644 --- a/translation/dest/arena/my-MM.xml +++ b/translation/dest/arena/my-MM.xml @@ -1,2 +1,11 @@ - + + အသင်းအလိုက် တိုက်ပွဲ အသစ် + ပြိုင်ပွဲ စတင်ရန် စိတ်ကြိုက် သတ်မှတ်သည့် နေ့ရက် + သင့် ဒေသန္တရ အချိန်ဇုံ အရ။ ဤသတ်မှတ်ချက်က \"ပြိုင်ပွဲ မစမီ အချိန်ကာလ\" ဆက်တင်ကို လွှမ်းမိုးသည် + အသဲအသန် Berserk အချိန်တိုင်း ပုံစံ ခွင့်ပြုသည် + ခွင့်ပြုချိန် တစ်ဝက် စွန့်လွှတ်ပါက အမှတ် တစ်မှတ် အပို ပေးမည် + ကစားသမားတို့ ချက်ထ်ရူးမ် အတွင်း စကားပြောခွင့် ပေးသည် + အရီနာပုံစံ ပြိုင်ပွဲ တွတ် သတ်မှတ်ချက် + နှစ်ပွဲနိုင်ပြီးနောက် ဆက်တိုက် နိုင်သည့် ပွဲတိုင်း ၂-မှတ် အစား ၄-မှတ် ရမည်။ + diff --git a/translation/dest/arena/nb-NO.xml b/translation/dest/arena/nb-NO.xml index 103e67a0e0..962d7b4b44 100644 --- a/translation/dest/arena/nb-NO.xml +++ b/translation/dest/arena/nb-NO.xml @@ -37,4 +37,12 @@ Berserk gir ett ekstrapoeng bare om du spiller minst 7 trekk i partiet. Vis laget Vis alle %s lagene + Ny lagkamp + Egendefinert startdato + I tidssonen din. Dette overstyrer innstillingen «Tid før turnering starter» + Tillat berserk + La spillerne halvere tiden sin på klokken for et ekstra poeng + La spillerne diskutere i samtalerom + Arenarekker + Etter 2 seiere gir påfølgende seiere 4 poeng i stedet for 2. diff --git a/translation/dest/arena/nl-NL.xml b/translation/dest/arena/nl-NL.xml index 2703dede46..34e7014e95 100644 --- a/translation/dest/arena/nl-NL.xml +++ b/translation/dest/arena/nl-NL.xml @@ -43,4 +43,12 @@ Speel snel en ga terug naar de toernooilobby om meer partijen te spelen en meer Bekijk het team Bekijk alle %s teams + Nieuwe wedstrijd + Aangepaste startdatum + In je eigen lokale tijdzone. Dit overschrijft de instelling \"Tijd voordat het toernooi begint\" + Berserk toestaan + Spelers kunnen met de helft van de tijd spelen om een extra punt te krijgen + Spelers kunnen chatten in de chat room + Arena streaks + Na 2 overwinningen geven opeenvolgende overwinningen 4 punten in plaats van 2. diff --git a/translation/dest/arena/nn-NO.xml b/translation/dest/arena/nn-NO.xml index fb8d9c17cd..7779145ad8 100644 --- a/translation/dest/arena/nn-NO.xml +++ b/translation/dest/arena/nn-NO.xml @@ -37,4 +37,12 @@ Berserk gjev eitt ekstrapoeng berre om du spelar minst 7 trekk i partiet.Vis laget Vis alle %s lag + Ny lagkamp + Eigendefinert startdato + I din tidssone. Dette overstyrar innstillinga «Tid før turnering startar» + Tillat berserk + Lat spelarane halvere tida si på klokka for eit ekstra poeng + Lat spelarane diskutera i samtalerom + Arena-sigersrekkjer + Etter to sigrar gjev seinara sigrar fire poeng i staden for to. diff --git a/translation/dest/arena/pl-PL.xml b/translation/dest/arena/pl-PL.xml index a2765022a5..3691a1ca76 100644 --- a/translation/dest/arena/pl-PL.xml +++ b/translation/dest/arena/pl-PL.xml @@ -47,4 +47,12 @@ Graj szybko i wracaj do poczekalni, by rozegrać więcej partii i zdobyć więce Zobacz wszystkie %s zespołów Zobacz wszystkie %s zespołów + Nowa bitwa klubów + Niestandardowa data rozpoczęcia + W Twojej lokalnej strefie czasowej. Nadpisuje ustawienie \"Czas przed rozpoczęciem turnieju\" + Zezwalaj na Berserk + Pozwól graczom na zmniejszenie o połowę czasu pozwalając na zdobycie dodatkowego punktu + Pozwól graczom dyskutować na czacie + Serie aren + Po dwóch zwycięstwach, kolejne zwycięstwa dają 4 punkty zamiast 2. diff --git a/translation/dest/arena/pt-BR.xml b/translation/dest/arena/pt-BR.xml index 870dd177f7..6c3ceb0a8c 100644 --- a/translation/dest/arena/pt-BR.xml +++ b/translation/dest/arena/pt-BR.xml @@ -42,4 +42,12 @@ Assim que terminar a sua partida, você voltará a aguardar o emparceiramento co Ver a equipe Ver todas as %s equipes + Nova batalha de equipes + Mudar a data de início + No seu próprio fuso horário. Isso irá cancelar a configuração \"Contagem regressiva para início do torneio\" + Permitir Berserk + Os jogadores poderão reduzir seu tempo pela metade para ganhar um ponto extra + Permite que os jogadores discutam em uma sala de chat + Sequências de vitória em arena + Após ganhar 2 partidas, vitórias consecutivas valem 4 pontos, ao invés de 2. diff --git a/translation/dest/arena/pt-PT.xml b/translation/dest/arena/pt-PT.xml index 902213db45..ecadea292f 100644 --- a/translation/dest/arena/pt-PT.xml +++ b/translation/dest/arena/pt-PT.xml @@ -44,4 +44,12 @@ Joga rápido e volta ao vestíbulo para jogares mais jogos e ganhares mais ponto Ver a equipa Ver todas as %s equipas + Batalha de Equipas + Data inicial personalizada + No seu próprio fuso horário local. Substitui a configuração \"Tempo antes do torneio começar\" + Permitir Berserk + Permitir aos jogadores ganhar um ponto extra ao reduzir a duração do relógio a metade + Permitir que os jogadores discutam numa sala de bate-papo + Séries de Arena + Depois de 2 vitórias, vitórias consecutivas concedem 4 pontos em vez de 2. diff --git a/translation/dest/arena/ro-RO.xml b/translation/dest/arena/ro-RO.xml index d79d47d3bb..a6eb8a9f9e 100644 --- a/translation/dest/arena/ro-RO.xml +++ b/translation/dest/arena/ro-RO.xml @@ -45,4 +45,7 @@ Joacă rapid și întoarce-te la lobby pentru a juca mai multe meciuri și pentr Vezi toate cele %s echipe Vezi toate cele %s de echipe + Data de început personalizată + Lăsați jucătorii să își înjumătățească timpul pentru a obține un punct în plus + Permiteți jucătorilor să discute într-o cameră de chat diff --git a/translation/dest/arena/ru-RU.xml b/translation/dest/arena/ru-RU.xml index 627bffeaca..674fa8dccd 100644 --- a/translation/dest/arena/ru-RU.xml +++ b/translation/dest/arena/ru-RU.xml @@ -41,4 +41,12 @@ Посмотреть все %s клубов Посмотреть все %s клубов + Новый межклубный турнир + Особая дата начала + В вашем часовом поясе. Это переопределяет настройку «Время до начала турнира» + Разрешить Берсерк + Разрешает игрокам получать дополнительные очки, если они уменьшат своё время наполовину + Разрешить игрокам обсуждение в чате + Серии Арены + После двух побед подряд каждая следующая победа даёт не 2 очка, а 4. diff --git a/translation/dest/arena/sl-SI.xml b/translation/dest/arena/sl-SI.xml index dedd0409c9..e3f299dbbd 100644 --- a/translation/dest/arena/sl-SI.xml +++ b/translation/dest/arena/sl-SI.xml @@ -41,4 +41,12 @@ Igrajte hitro in se vrnite v čakalno vrsto v igralni dvorani, ter si tako zagot Delite ta URL, da se igralci lahko pridružijo: %s Niz remijev: Ko igralec zeporedoma remizira v areni, bo le leprvi remi rezultiral v točko ali remiji z več kot %s potezami. Niz remijev se lahko prekine le z zmago, ne pa s porazom ali remijem. Zgodovina arene + Nova skupinska bitka + Začetni datum po meri + V svojem lokalnem časovnem pasu. To preglasi nastavitev \"Čas pred začetkom turnirja\" + Dovoli divjanje + Naj igralci razpolovijo svoj čas ure, da pridobijo dodatno točko + Naj igralci razpravljajo v klepetalnici + Arena proge + Po 2 zaporednih zmagah nadaljne zmage namesto 2 dodelijo 4 točke. diff --git a/translation/dest/arena/tr-TR.xml b/translation/dest/arena/tr-TR.xml index 22b7fd0459..331cdb72f9 100644 --- a/translation/dest/arena/tr-TR.xml +++ b/translation/dest/arena/tr-TR.xml @@ -42,4 +42,12 @@ Daha fazla oyun oynayıp daha çok puan kazanmak için hızlıca oynayın ve lob Takımı görüntüleyin Tüm %s takımlarını görüntüleyin + Yeni Takım Çarpışması + Özel başlangıç tarihi + Kendi saat diliminizi kullanın. \"Turnuvaya kalan süre\" ayarı geçersiz kalacaktır + Divane moduna izin ver + Ekstra puan kazanmak isteyen oyuncuların, sürelerinin yarısından feragat etmesine izin ver + Oyuncuların sohbet odasında konuşmasına izin ver + Arena serisi + 2 kez üst üste kazandıktan sonra yapılan maçlar 2 yerine 4 puan verir. diff --git a/translation/dest/arena/uk-UA.xml b/translation/dest/arena/uk-UA.xml index e16cbb5eb0..9496f2bd12 100644 --- a/translation/dest/arena/uk-UA.xml +++ b/translation/dest/arena/uk-UA.xml @@ -46,4 +46,12 @@ Переглянути %s команд Переглянути %s команди + Нова Командна битва + Власна дата початку + У вашому локальному часовому поясі. Це замінює налаштування \"Час до початку турніру\" + Дозволити Берсерк + Дозволити гравцям зменшити наполовину свій час, щоб отримати додатковий бал + Дозволити гравцям обговорення в чаті + Серії Арени + Після двох перемог, кожна наступна перемога принесе 4 бали замість 2. diff --git a/translation/dest/arena/zh-TW.xml b/translation/dest/arena/zh-TW.xml index 2b0dcc5493..cbba65a6a8 100644 --- a/translation/dest/arena/zh-TW.xml +++ b/translation/dest/arena/zh-TW.xml @@ -36,8 +36,7 @@ 這是一個非公開的錦標賽 分享這個網址讓其他人加入這場錦標賽:%s - 連續平手機制:當一位玩家連續在錦標賽中或的平局,只有第一場平局會獲得積分,或是在下超過%s步時才會獲得積分。 -連續平手機制只會在獲勝或輸的時候被解除。 + 連續平手機制:當一位玩家連續在錦標賽中或的平局,只有第一場平局會獲得積分,或是在下超過%s步時才會獲得積分。連續平手機制只會在獲勝或輸的時候被解除。 先前的重要錦標賽 查看所有 %s 團隊 diff --git a/translation/dest/broadcast/uk-UA.xml b/translation/dest/broadcast/uk-UA.xml index 529af0a2fa..0c720b6ced 100644 --- a/translation/dest/broadcast/uk-UA.xml +++ b/translation/dest/broadcast/uk-UA.xml @@ -3,10 +3,14 @@ Трансляція Онлайн трансляції турнірів Нова трансляція наживо + Додати раунд Поточні Майбутні Завершені - Номер раунда + Назва раунду + Номер раунду + Назва турніру + Короткий опис турніру Повний опис події Необов\'язковий довгий опис трансляції. Наявна розмітка %1$s. Довжина має бути менша ніж %2$s символів. URL джерела, або ідентифікатор гри @@ -15,4 +19,9 @@ Дата початку у Вашому часовому поясі Необов\'язково, якщо Ви знаєте, коли починається подія Вдячність джерелу + Скинути цей раунд + Видалити цей раунд + Посилання на трансляцію + Посилання на поточний раунд + Посилання на поточну гру diff --git a/translation/dest/challenge/de-CH.xml b/translation/dest/challenge/de-CH.xml index cc92038392..31709c7453 100644 --- a/translation/dest/challenge/de-CH.xml +++ b/translation/dest/challenge/de-CH.xml @@ -1,7 +1,7 @@ Usäfoderigä - Zu nere partie useforderä + Zunärä Partii usäfordärä Usäfoderig abglähnt Usäfoderig angnoo! Usäfoderig abbrochää. @@ -13,11 +13,11 @@ %s nimmt Usäfoderigä nur vo Brudis a. I nim momentan kei Usäfoderigä me a. I nim momentan kei Usäfoderigä me a, bitte frog spöter nonemol. - Ziet zum überlege isch z\'churz für mi, bitte forderä mich nomel mit meh Bedenkzeit ussä. - Ziet zum überlege isch z\'lang für mi, bitte forderä mich nomel mit weniger Bedenkzeit ussä. + Ziit zum Überlegä isch z\'churz für mich, bitte fordärä mich nomol mit meh Bedänkziit usä. + Ziit zum Überlegä isch z\'lang für mich, bitte fordärä mich nomol mit wäniger Bedänkziit usä. I nim momentan kei Usäfoderigä me a. - Bitte forderä mi stattdessä zu enerä gewertetä Partie usä. - Bitte fordere mich stattdessä zu einer ungewertetä Partie usä. + Bitte fordrää mich schtattdessä zunärä gwärtätä Partii usä. + Bitte fordärä mich schtattdessä zunärä ungwärtätä Partii usä. I nimm momentan kei Usäforderigä für anderi Schpiilvariantä a. I bi im moment nöd parrat, diä Variantä zu spielä. Ich nimm kei Usäfoderigä von Bots a. diff --git a/translation/dest/challenge/eo-UY.xml b/translation/dest/challenge/eo-UY.xml index 3ea04e700d..54f954984a 100644 --- a/translation/dest/challenge/eo-UY.xml +++ b/translation/dest/challenge/eo-UY.xml @@ -1,2 +1,14 @@ - + + Defioj + Defii al nova ludo + Defio malakceptita + Defio akceptita! + Defio nuligita. + Vi ne povas defii %s. + %s ne akceptas defiojn. + %s nur akceptas defiojn de amikoj. + Mi ne akceptas defiojn en tiu ĉi momento. + Mi ne akceptas defiojn de robotoj. + Mi nur akceptas defiojn de robotoj. + diff --git a/translation/dest/challenge/he-IL.xml b/translation/dest/challenge/he-IL.xml index a4d1bfee9c..3c09c7e645 100644 --- a/translation/dest/challenge/he-IL.xml +++ b/translation/dest/challenge/he-IL.xml @@ -8,5 +8,18 @@ אנא הירשמו על מנת לשלוח הזמנות למשחקים. לא ניתן להזמין את %s למשחק. %s לא מקבל הזמנות למשחקים. + הדירוג שלך %1$s רחוק מדי מ%2$s. + אין אפשרות לאתגר בגלל דירוג זמני של %s. + %s מאשר רק אתגרים מחברים. + לא מקבל תלמידים בזמן זה. + זה לא הזמן המתאים עבורי, אנא שאל שוב מאוחר יותר. + הזמנים האלו יותר מדי מהירים בשבילי, בבקשה תאתגר שוב עם משחק יותר איטי. + הזמנים האלו יותר מדי איטיים בשבילי, בבקשה תאתגר שוב עם משחק יותר מהיר. + אני לא מאשר אתגרים עם בקרת זמנים. + בבקשה תשלח לי אתגר מדורג במקום. + בבקשה תשלח לי אתגר לא מדורג במקום. + אני לא מקבל אתגרים של גרסאות אחרות בזמן זה. + אני לא מוכן לשחק את הגרסה האחרת הזאת עכשיו. + אני לא מאשר הזמנות מבוטים. מאשר הזמנות למשחק רק מבוטים. diff --git a/translation/dest/class/af-ZA.xml b/translation/dest/class/af-ZA.xml index 8c2653f09b..f87bb3ec27 100644 --- a/translation/dest/class/af-ZA.xml +++ b/translation/dest/class/af-ZA.xml @@ -93,5 +93,4 @@ Hier is die skakel om die klas te betree. Voeg die onlangse nuus aan die bokant. Moenie vorige nuus uitvee nie. Skei nuus met --- Dit sal \'n horisontale lyn vertoon. - %s is beskikbaar vir meer ingewikkelde sintaks. diff --git a/translation/dest/class/an-ES.xml b/translation/dest/class/an-ES.xml index f8a1350371..2f72a09fe6 100644 --- a/translation/dest/class/an-ES.xml +++ b/translation/dest/class/an-ES.xml @@ -92,5 +92,4 @@ Aquí ye lo vinclo d\'acceso. Totas las noticias de clase en un solo puesto. Anyade las noticias recients en a parte superior. No elimina las noticias anteriors. Deseparar noticias con --- amostrará una linia horizontal. - %s ye disponible pa una sintaxi mas abanzada. diff --git a/translation/dest/class/ar-SA.xml b/translation/dest/class/ar-SA.xml index e86147d4b0..66ffbde95d 100644 --- a/translation/dest/class/ar-SA.xml +++ b/translation/dest/class/ar-SA.xml @@ -105,5 +105,4 @@ إضافة الأخبار الأخيرة في الأعلى. لا تقم بحذف الأخبار السابقة. إفصل الأخبار ب --- سيعرض سطرا أفقيا. - %s متاح لتركيبات الأكثر تطوراً. diff --git a/translation/dest/class/az-AZ.xml b/translation/dest/class/az-AZ.xml index d710d11e96..9856f9f781 100644 --- a/translation/dest/class/az-AZ.xml +++ b/translation/dest/class/az-AZ.xml @@ -93,5 +93,4 @@ Sinfə daxil olmaq üçün link. Üstə son xəbərləri əlavə edin. Əvvəlki xəbərləri silməyin. Xəbərləri bununla ayırın --- Bu üfüqi bir xətt göstərəcək. - Daha inkişaf etmiş sintaksis üçün %s mövcuddur. diff --git a/translation/dest/class/bg-BG.xml b/translation/dest/class/bg-BG.xml index aa91f3a0f7..e8986cfc0d 100644 --- a/translation/dest/class/bg-BG.xml +++ b/translation/dest/class/bg-BG.xml @@ -52,6 +52,10 @@ Ето линк за достъп към класа. Вие сте поканен да влезете в класа \"%s\" като ученик. Натиснете тук, за да приемете поканата: + Закриване на регистрацията + Постоянно закриване на регистрацията на ученика. + Ученикът няма никога вече да може да използва тази регистрация. Затварянето е постоянно. Уверете се че ученикът разбира и се съгласява с това. + Вместо това, можете да предадете контрола върху регистрацията на ученика, така че тя/той да продължат да я използват. Учители Учител diff --git a/translation/dest/class/bn-BD.xml b/translation/dest/class/bn-BD.xml index e225a23b5f..c76e223632 100644 --- a/translation/dest/class/bn-BD.xml +++ b/translation/dest/class/bn-BD.xml @@ -50,5 +50,4 @@ সামপ্রতিক সংবাদ উপরে যোগ করুন। পুরনো সংবাদ মুছবেন না। --- দিয়ে সংবাদ পৃথক করুন এটা একটা আনুভূমিক রেখা প্রদর্শন করবে। - %s আরো অ্যাডভান্সড সিনট্যাক্সের জন্য উপলব্ধ। diff --git a/translation/dest/class/br-FR.xml b/translation/dest/class/br-FR.xml index fd7b22fa45..2a01da4eda 100644 --- a/translation/dest/class/br-FR.xml +++ b/translation/dest/class/br-FR.xml @@ -70,6 +70,9 @@ Amañ emañ al liamm evit mont ennañ. Ur wech dieubet ur gont ne c\'halloc\'h ket mui bezañ mestr warni. Gallout a ray ar studier lazhañ ar mod evit ar vugale ha cheñch ar ger-tremen e-unan. Ezel eus ar c\'hlasad e chomo ar studier ur wech dieubet e gont. Chomlec\'h postel nemetañ ha gwir ar studier. Ur gemennadenn gadarnaat a vo kaset gant ul liamm da glikañ warnañ evit dieubiñ ar gont. + Serriñ ar gont + Serriñ kont ar studier da viken. + Ne c\'hallo ket ar studier implijout ar gont-mañ ken. Peurbadus eo serriñ. Bezit sur eo bet komprenet hag asantet gant ar studier. Kelennerien Kelenner @@ -102,5 +105,4 @@ Amañ emañ al liamm evit mont ennañ. En nec\'h emañ ar c\'heleier nevez. Ne ziverkit ket ar c\'heleier kozh. Rannit ar c\'heleier gant --- Mod-se ho po ul linenn a-blaen. - Bez\' eus %s evit mont pelloc\'h gant an ereadurezh. diff --git a/translation/dest/class/bs-BA.xml b/translation/dest/class/bs-BA.xml index e08e13ac48..6d18914f05 100644 --- a/translation/dest/class/bs-BA.xml +++ b/translation/dest/class/bs-BA.xml @@ -95,5 +95,4 @@ Evo linka za pristup času. Sve vijesti časa u jednom polju. Dodajte najnoviju vijest na vrh. Ne brišite prethodne vijesti. Odvojite vijesti sa --- kako biste prikazali horizontalnu liniju. - %s je na raspolaganju za napredniju sintaksu. diff --git a/translation/dest/class/ca-ES.xml b/translation/dest/class/ca-ES.xml index 0e6cfa593a..7a1a16dd61 100644 --- a/translation/dest/class/ca-ES.xml +++ b/translation/dest/class/ca-ES.xml @@ -93,5 +93,4 @@ Aquí està l\'enllaç per a accedir a la classe. Afegeix les novetats més recents a la part superior. No eliminis les novetats anteriors. Separa les novetats amb --- Mostrarà una línia separadora horitzontal. - %s està disponible per a una sintaxis més avançada. diff --git a/translation/dest/class/cs-CZ.xml b/translation/dest/class/cs-CZ.xml index 0794889986..ded6a456db 100644 --- a/translation/dest/class/cs-CZ.xml +++ b/translation/dest/class/cs-CZ.xml @@ -99,5 +99,4 @@ Zde je odkaz pro přístup ke třídě. Přidejte poslední novinky nahoru. Neodstraňujte předchozí novinky. Oddělte zprávy --- Zobrazí se vodorovná čára. - %s je k dispozici pro pokročilejší syntaxi. diff --git a/translation/dest/class/da-DK.xml b/translation/dest/class/da-DK.xml index 10ce6761ea..e6fe00bfb6 100644 --- a/translation/dest/class/da-DK.xml +++ b/translation/dest/class/da-DK.xml @@ -63,10 +63,14 @@ Her er linket, der giver adgang til klassen. Denne elevkonto er under administration Opgrader fra administreret til selvstyret Frigiv - Frigiv kontoen så eleven kan styre den selv. + Frigiv kontoen så eleven selv kan kontrollere den. En frigivet konto kan ikke sættes under administration igen. Eleven vil kunne ændre i børnetilstand og selv nulstille adgangskode. Eleven vil blive i klassen efter deres konto er frigivet. - Korrekt, unik e-mailadresse for eleven. Vi sender en bekræftelsesmail til den med et link til at frigive kontoen. + Rigtig, unik e-mailadresse for eleven. Vi sender en bekræftelsesmail til den med et link til frigivelse af kontoen. + Luk konto + Luk elevkontoen permanent. + Eleven vil aldrig kunne bruge denne konto igen. Lukning er endelig. Sørg for at eleven forstår og er enig. + Du bør måske give eleven kontrol over kontoen i stedet, så de kan fortsætte med at bruge den. Lærere Lærer @@ -92,5 +96,4 @@ Her er linket, der giver adgang til klassen. Alle klasse-nyheder i et enkelt felt. Tilføj de seneste nyheder i toppen. Slet ikke tidligere nyheder. Adskil nyheder med --- det vil blive vist som en vandret linje. - %s er tilgængelig for mere avanceret syntaks. diff --git a/translation/dest/class/de-CH.xml b/translation/dest/class/de-CH.xml index f8044d29c1..b2045c9229 100644 --- a/translation/dest/class/de-CH.xml +++ b/translation/dest/class/de-CH.xml @@ -30,7 +30,7 @@ Generiere ein neues Passwort für den Schüler Eingeladen zu %1$s von %2$s Echter Name - Privat. Wird nie außerhalb der Klasse angezeigt. Hilft dir, dich zu erinnern, wer der Schüler ist. + Privat. Wird niä usserhalb vodä Klass aazeigt. Hilft dir, dich z\'erinnärä, wer dä Schüaler / diä Schüälerin isch. Schüler hinzufügen Lichess-Profil %1$s erstellt für %2$s. Schüäler/-in: %1$s @@ -67,6 +67,10 @@ Hier ist der Link zum Zugriff auf die Klasse. Ein freigegebenes Konto kann nicht mehr verwaltet werden. Der Schüler wird in der Lage sein den Kindermodus abzuschalten und das Passwort selbstständig zurückzusetzen. Der Schüler bleibt in der Klasse nachdem sein Konto freigegeben wurde. Echte, einmalige Email-Adresse des Schülers. Wir werden eine Bestätigungsmail mit einem Link zur Freigabe des Kontos versenden. + Benutzerkonto gschlüssä + Schüälerkonto permanent gschlüssä. + Dä Schüäler / diä Schüälerin cha das Konto niä meh verwändä. Gschlüssä isch endgültig. Schtell sicher, dass dä Schüäler / d\'Schüälerin das verschtoht und akzeptiärt. + Du chasch schattdessä äm Schüäler / diä Schüälerin d\'Kontrollä über das Konto gäh, damit är sis / si ihräs Konto wiiterhin verwändä chan. Lehrer Lehrer @@ -92,5 +96,4 @@ Hier ist der Link zum Zugriff auf die Klasse. Alle Klassennachrichten in einem einzigen Feld. Füge die aktuellen Neuigkeiten oben hinzu. Lösche keine vorherigen Neuigkeiten. Trenne Neuigkeiten mit --- Es wird als horizontale Linie angezeigt. - %s ist für erweiterte Syntax verfügbar. diff --git a/translation/dest/class/de-DE.xml b/translation/dest/class/de-DE.xml index 1cb700c568..4ff8219dd5 100644 --- a/translation/dest/class/de-DE.xml +++ b/translation/dest/class/de-DE.xml @@ -62,11 +62,15 @@ Hier ist der Link zum Zugriff auf die Klasse. Verwaltet Dieses Schülerkonto wird verwaltet Aufwerten von verwaltet zu selbstständig - Freigabe + Hochstufen Gib das Konto frei, damit der Schüler es selbstständig verwalten kann. Ein freigegebenes Konto kann nicht mehr verwaltet werden. Der Schüler wird in der Lage sein den Kindermodus abzuschalten und das Passwort selbstständig zurückzusetzen. Der Schüler bleibt in der Klasse nachdem sein Konto freigegeben wurde. - Echte, einmalige Email-Adresse des Schülers. Wir werden eine Bestätigungsmail mit einem Link zur Freigabe des Kontos versenden. + Echte, eindeutige E-Mail-Adresse des Schülers. Wir werden eine Bestätigungs-E-Mail mit einem Link zur Freigabe des Kontos versenden. + Schülerkonto schließen + Das Schülerkonto dauerhaft schließen. + Der Schüler wird das Konto nie wieder nutzen können. Die Schließung ist endgültig. Stelle sicher, dass der Schüler dies versteht und einverstanden ist. + Du kannst stattdessen dem Schüler die Kontrolle über das Konto überlassen, so dass er es weiter nutzen kann. Lehrer Lehrer @@ -92,5 +96,4 @@ Hier ist der Link zum Zugriff auf die Klasse. Alle Klassennachrichten in einem einzigen Feld. Füge die aktuellen Neuigkeiten oben hinzu. Lösche keine vorherigen Neuigkeiten. Trenne Neuigkeiten mit --- Es wird als horizontale Linie angezeigt. - %s ist für erweiterte Syntax verfügbar. diff --git a/translation/dest/class/el-GR.xml b/translation/dest/class/el-GR.xml index 1a1c02756d..1c0b5777c8 100644 --- a/translation/dest/class/el-GR.xml +++ b/translation/dest/class/el-GR.xml @@ -67,6 +67,10 @@ Ένας αυτόνομος λογαριασμός δεν μπορεί να ξαναγίνει διαχειριζόμενος. Ο μαθητής θα μπορεί να ενεργοποιήσει ή να απενεργοποιήσει την παιδική λειτουργία και να επαναφέρει το κωδικό πρόσβασης. Ο μαθητής θα παραμείνει στην τάξη μετά την απελευθέρωση του λογαριασμού του. Πραγματική, μοναδική διεύθυνση ηλεκτρονικού ταχυδρομείου του μαθητή. Θα στείλουμε ένα email επιβεβαίωσης σε αυτήν με ένα σύνδεσμο για ενεργοποίηση του λογαριασμού. + Κλείστε αυτόν τον λογαριασμό + Κλείστε μόνιμα αυτόν τον μαθητικό λογαριασμό. + Ο μαθητής δε θα μπορέσει ποτέ να χρησιμοποιήσει ξανά αυτόν τον λογαριασμό. Η ενέργειά σας αυτή είναι τελική. Βεβαιωθείτε ότι ο μαθητής κατανοεί τις επιπτώσεις και συμφωνεί με την απόφαση. + Μπορεί εναλλακτικά, αν θέλετε, να δώσετε τον έλεγχο του λογαριασμού στον μαθητή, έτσι ώστε να μπορεί να τον χρησιμοποιεί. Δάσκαλοι Δάσκαλος @@ -93,5 +97,4 @@ Προσθήκη πρόσφατων νέων στη κορυφή. Να μη διαγραφούν τα προηγούμενα νέα. Να διαχωρίζονται τα νέα με --- Θα εμφανιστεί μια οριζόντια γραμμή. - Η μορφή %s είναι διαθέσιμη για μια πιο προχωρημένη σύνταξη. diff --git a/translation/dest/class/en-US.xml b/translation/dest/class/en-US.xml index 59bb6345f2..317f207224 100644 --- a/translation/dest/class/en-US.xml +++ b/translation/dest/class/en-US.xml @@ -67,6 +67,10 @@ Here is the link to access the class. A released account cannot be made managed again. The student will be able to toggle kid mode and reset password themselves. The student will remain in the class after their account is released. Real, unique email address of the student. We will send a confirmation email to it, with a link to release the account. + Close account + Close the student account permanently. + The student will never be able to use this account again. Closing is final. Make sure the student understands and agrees. + You may want to give the student control over the account instead, so that they can continue using it. Teachers Teacher @@ -93,5 +97,4 @@ Here is the link to access the class. Add the recent news at the top. Don\'t delete previous news. Separate news with --- It will display a horizontal line. - %s is available for more advanced syntax. diff --git a/translation/dest/class/eo-UY.xml b/translation/dest/class/eo-UY.xml index 4c0dbea837..7bc9e1d2d2 100644 --- a/translation/dest/class/eo-UY.xml +++ b/translation/dest/class/eo-UY.xml @@ -93,5 +93,4 @@ Jen la ligo por aliri la klason. Aldonu la lastajn novaĵojn ĉe la supro. Ne forigu antaŭajn novaĵojn. Apartaj novaĵoj kun --- Ĝi aperos horizontala linio. - %s estas havebla por pli progresinta sintakso. diff --git a/translation/dest/class/es-ES.xml b/translation/dest/class/es-ES.xml index 3d5dcc0a82..a9314e978d 100644 --- a/translation/dest/class/es-ES.xml +++ b/translation/dest/class/es-ES.xml @@ -67,6 +67,10 @@ Aquí está el enlace para acceder a la clase. Una cuenta liberada no se puede volver a gestionar de nuevo. El estudiante podrá cambiar el modo infantil y la contraseña por sí mismo. El estudiante permanecerá en la clase tras la liberación de su cuenta. Dirección de correo electrónico real y única del estudiante. Enviaremos un correo electrónico de confirmación, con un enlace para liberar la cuenta. + Cerrar cuenta + Cerrar la cuenta del estudiante permanentemente. + El estudiante nunca podrá usar esta cuenta otra vez. El cierre es definitivo. Asegúrate que el estudiante entienda y esté de acuerdo con esto. + En su lugar, puedes transferir el control de la cuenta al estudiante para que pueda seguir usándola. Profesores %s profesor @@ -93,5 +97,4 @@ Aquí está el enlace para acceder a la clase. Añade las novedades más recientes en la parte superior. No elimines las novedades anteriores. Separa las novedades con --- Mostrará una línea separadora horizontal. - %s está disponible para una sintaxis más avanzada. diff --git a/translation/dest/class/et-EE.xml b/translation/dest/class/et-EE.xml index 33916995a6..1dabb61c2c 100644 --- a/translation/dest/class/et-EE.xml +++ b/translation/dest/class/et-EE.xml @@ -67,6 +67,8 @@ Siin on link klassi sisenemiseks. Vabastatud kasutajaid ei saa uuesti hallata. Õpilane saab ise ümberlülituda lapsereziimile ja lähtestada oma parooli ise. Õpilane jääb peale vabastamist ikka klassi. Päris, unikaalne õpilase emaili aadress. Me saadame sinna kinnituse koos lingiga, et vabastada kasutajanimi. + Sulge konto + Sulge õpilase konto jäädavalt. Õpetajad Õpetaja @@ -93,5 +95,4 @@ Siin on link klassi sisenemiseks. Lisa uued uudised ülespoole. Ära kustuta vanu uudiseid. Eralda uudiseid nii: --- Neid näidatakse horisontaalselt. - %s on võimalik kasutada edasiarenenuma kujunduse jaoks. diff --git a/translation/dest/class/eu-ES.xml b/translation/dest/class/eu-ES.xml index d6408a8032..4604943663 100644 --- a/translation/dest/class/eu-ES.xml +++ b/translation/dest/class/eu-ES.xml @@ -67,6 +67,10 @@ Hemen dago bertara sartzeko lotura. Askatutako kontua ezin da kudeatutako kontu bihurtu berriz. Ikasleak haur-modua aktibatu dezake eta pasahitza euren kabuz berrezarri dezakete. Ikasleak klasean jarraituko du kontua askatu ostean. Ikaslearen benetako eposta helbidea. Kontua askatzeko konfirmazio mezua bidaliko diogu. + Kontua itxi + Ikasle-kontua betiko itxi. + Ikasleak ezingo du kontu hau berriz erabili. Ixtea betiko izango da. Ziurtatu ikasleak ulertu duela eta ados dagoela. + Ikasleari bere kontuaren kontrola eman diezaiokezu, horrela erabiltzen jarraitu ahal izango du. Irakasleak Irakaslea @@ -92,5 +96,4 @@ Hemen dago bertara sartzeko lotura. Klaseko albiste guztiak leku bakarrean. Albiste berrienak goian gehitu. Ez ezabatu albiste zaharrak. Albisteak --- ikurrarekin banatu. Horrela marra bat agertuko da. - %s erabili dezakezu gauza aurreratuak egiteko. diff --git a/translation/dest/class/fa-IR.xml b/translation/dest/class/fa-IR.xml index 8e37280c71..25e8904f2c 100644 --- a/translation/dest/class/fa-IR.xml +++ b/translation/dest/class/fa-IR.xml @@ -8,4 +8,8 @@ حذف شده نام کلاس نام واقعی + بستن حساب کاربری + بستن دائمی حساب دانش آموز. + دانش آموز هرگز قادر به استفاده دوباره از این حساب کاربری نخواهد بود. بستن حساب گام نهایی است. مطمئن شود که دانش آموز درک می کند و موافق است. + شما ممکن است بخواهد به دانش آموزان کنترل اکانت را بدهید، بنابراین آن ها می توانند که به استفاده از آن ادامه دهند. diff --git a/translation/dest/class/fi-FI.xml b/translation/dest/class/fi-FI.xml index a694ca9374..56c4107f6c 100644 --- a/translation/dest/class/fi-FI.xml +++ b/translation/dest/class/fi-FI.xml @@ -67,6 +67,10 @@ Tässä on linkki, josta pääset luokkaan. Vapautettua käyttäjätiliä ei voi myöhemmin enää ottaa hallintaan. Oppilas voi itsenäisesti kytkeä lapsitilan pois päältä ja nollata salasanan. Oppilas pysyy luokassa senkin jälkeen, kun käyttäjätili on vapautettu. Oppilaan todellinen ja yksilöllinen sähköpostiosoite. Lähetämme siihen vahvistussähköpostilla linkin, jolla käyttäjätunnuksen voi vapauttaa. + Sulje tunnus + Sulje oppilaan tunnus pysyvästi. + Oppilaasi ei voi enää koskaan käyttää tätä tunnusta. Sulkeminen on lopullinen. Varmistathan, että oppilaasi ymmärtää ja hyväksyy tämän. + Vaihtoehtoisesti voit antaa oppilaan hallita tunnusta, jotta hän voi edelleen käyttää sitä. Opettajat Opettaja @@ -93,5 +97,4 @@ Tässä on linkki, josta pääset luokkaan. Lisää tuoreet uutiset ylimmäksi. Älä poista aiempia uutisia. Erottele uutiset näin: --- Se luo vaakasuoran erotinviivan. - %s-muotoilua voi käyttää edistyneempään muotoiluun. diff --git a/translation/dest/class/fo-FO.xml b/translation/dest/class/fo-FO.xml index 8fb58dfc64..418e2d634c 100644 --- a/translation/dest/class/fo-FO.xml +++ b/translation/dest/class/fo-FO.xml @@ -93,5 +93,4 @@ Her er leinkið til atgongdina til flokkin. Legg nýggjastu tíðindini ovast. Ikki strika eldru tíðindini. Skil tíðindi sundur við --- Tað verður víst sum ein vatnrøtt linja. - %s er til taks, um neyðugt er við meira framkomnum setningsbygnaði. diff --git a/translation/dest/class/fr-FR.xml b/translation/dest/class/fr-FR.xml index 90f6e7bce7..e664e26bf6 100644 --- a/translation/dest/class/fr-FR.xml +++ b/translation/dest/class/fr-FR.xml @@ -67,6 +67,10 @@ Voici le lien pour accéder à la classe. Un compte autonome ne peut plus être géré. L\'élève pourra choisir d\'utiliser ou non le mode enfant et changer son mot de passe lui-même. L\'élève restera dans la classe après que son compte ait été libéré. Adresse email réelle de l\'élève. Nous lui enverrons une mail de confirmation, avec un lien pour rendre le compte autonome. + Fermer le compte + Fermer le compte de l\'élève définitivement. + L\'élève ne pourra plus utiliser ce compte. Il sera fermé définitivement. Assurez-vous que l\'élève l\'a compris et accepté. + Vous pouvez aussi laisser le contrôle du compte à l\'élève pour qu\'il puisse continuer de l\'utiliser. Enseignants Enseignant @@ -92,5 +96,4 @@ Voici le lien pour accéder à la classe. Toutes les nouvelles de la classe dans un seul champ. Ajouter les dernières nouvelles en haut. Ne pas supprimer les nouvelles précédentes. Séparez les actualités par ---- cela affichera une barre horizontale. - %s est disponible pour une syntaxe plus avancée. diff --git a/translation/dest/class/ga-IE.xml b/translation/dest/class/ga-IE.xml index ff490a5324..c71b981a6a 100644 --- a/translation/dest/class/ga-IE.xml +++ b/translation/dest/class/ga-IE.xml @@ -70,6 +70,10 @@ Seo an nasc le dul isteach sa rang. Ní féidir cuntas scaoilte a bhainistiú arís. Beidh an dalta in ann modh páiste a scoránú agus pasfhocal a athshocrú iad féin. Fanfaidh an dalta sa rang tar éis a chuntas a scaoileadh. Seoladh ríomhphoist fíor, uathúil an dalta. Seolfaimid r-phost dearbhaithe chuige, le nasc chun an cuntas a scaoileadh. + Dún cuntas + Dún cuntas na mac léinn go buan. + Ní bheidh an mac léinn riamh in ann an cuntas seo a úsáid arís. Tá an clabhsúr críochnaitheach. Déan cinnte go dtuigeann agus go n-aontaíonn an mac léinn. + B’fhéidir gur mhaith leat smacht a thabhairt don mhac léinn ar an gcuntas ina áit, ionas gur féidir leo leanúint ar aghaidh ag úsáid. Múinteoirí Múiteoir @@ -102,5 +106,4 @@ Seo an nasc le dul isteach sa rang. Cuir an nuacht is déanaí ag an mbarr. Ná scrios nuacht roimhe seo. Scar nuacht le --- Beidh líne chothrománach le feiceáil. - Tá %s ar fáil le haghaidh comhréir níos airde. diff --git a/translation/dest/class/gl-ES.xml b/translation/dest/class/gl-ES.xml index f3a697e408..a96f41682a 100644 --- a/translation/dest/class/gl-ES.xml +++ b/translation/dest/class/gl-ES.xml @@ -67,6 +67,10 @@ Aquí está a ligazón para acceder. Unha conta liberada non pode volver ser supervisada de novo. O estudante poderá cambiar o modo infantil e redefinir o contrasinal por si mesmo. O estudante permanecerá na clase trala liberación da conta. Dirección de correo electrónico real e única do estudante. Enviaremos unha mail de confirmación para el, cun link para liberar a conta. + Pechar conta + Pechar a conta de estudante permanentemente. + A estudante non poderá usar esta conta de novo. O peche é definitivo. Asegúrate que a estudante o entende e está dacordo. + Quizais queres darlle á estudante o control sobre a conta no seu lugar, de maneira que poida seguir empregándoa. Profesores Profesor @@ -93,5 +97,4 @@ Aquí está a ligazón para acceder. Engade as novas recente na parte superior. Non elimines as novidades previas. Separa as novas con --- Amosará unha liña separadora horizontal. - %s está dispoñíbel para unha sintaxe máis avanzada. diff --git a/translation/dest/class/gu-IN.xml b/translation/dest/class/gu-IN.xml index 3ea04e700d..e90640616f 100644 --- a/translation/dest/class/gu-IN.xml +++ b/translation/dest/class/gu-IN.xml @@ -1,2 +1,5 @@ - + + આ બટન ઉપર ક્લિક કરવાથી સ્ટુડન્ટ અકાઉંટ બંધ થશે + વિદ્યાર્થી નું એકાઉન્ટ મેનેજ અને કંટ્રોલ કરવા માટે આ ચેસ ટીચર માટે છે, જો તેઓ એકાઉન્ટ બંધ કરવા ઈછતા હોય તો. + diff --git a/translation/dest/class/he-IL.xml b/translation/dest/class/he-IL.xml index b9b667402e..ec3c7b16be 100644 --- a/translation/dest/class/he-IL.xml +++ b/translation/dest/class/he-IL.xml @@ -99,5 +99,4 @@ הוסף את החדשות החדשות למעלה. אל תמחוק את החדשות הקודמות. חדשות נפרדות עם --- זה יציג קו אופקי. - %s זמין לתחביר מתקדם יותר. diff --git a/translation/dest/class/hi-IN.xml b/translation/dest/class/hi-IN.xml index 8d287d31d9..09e84c7942 100644 --- a/translation/dest/class/hi-IN.xml +++ b/translation/dest/class/hi-IN.xml @@ -93,5 +93,4 @@ शीर्ष पर हाल की खबर जोड़ें। पिछली खबरों को डिलीट न करें। अलग खबरें --- यह एक क्षैतिज रेखा प्रदर्शित करेगा। - %s अधिक उन्नत सिंटैक्स के लिए उपलब्ध है। diff --git a/translation/dest/class/hr-HR.xml b/translation/dest/class/hr-HR.xml index 49e11b71c2..cf5fef699f 100644 --- a/translation/dest/class/hr-HR.xml +++ b/translation/dest/class/hr-HR.xml @@ -95,5 +95,4 @@ Lozinka: %3$s Postavi posljednje novosti na vrh. Nemoj obrisati prethodne novosti. Odvoji novosti sa --- To će prikazati horizontalnu liniju. - %s je dostupan za još napredniju sintaksu. diff --git a/translation/dest/class/hu-HU.xml b/translation/dest/class/hu-HU.xml index efa879ff6a..99457a3b5e 100644 --- a/translation/dest/class/hu-HU.xml +++ b/translation/dest/class/hu-HU.xml @@ -67,6 +67,10 @@ Itt található a link az osztály eléréséhez. A kiadott fiókot nem lehet újra kezelni. A hallgató képes lesz a gyerek mód váltására és a jelszó visszaállítására. A tanuló a fiókja kiadása után az osztályban marad. A hallgató valódi, egyedi e-mail címe. Küldünk neki egy visszaigazoló e-mailt, amelyben megtalálható egy link a fiók felszabadításához. + Fiók törlése + A tanulói fiók végleges törlése. + A tanuló soha többé nem fér újra hozzá ehhez a fiókhoz. A törlés végleges. Bizonyosodj meg, hogy a tanuló megérti és elfogadja ezt. + Lehetőséged van a fiók jogosultságait átadni a tanulónak, így továbbra is használhatja majd azt. Tanárok Tanár @@ -93,5 +97,4 @@ Itt található a link az osztály eléréséhez. Adja hozzá a legfrissebb híreket a tetején. Ne törölje a korábbi híreket. Különválaszthatja a --- Vízszintes vonalat jelenít meg. - A %s elérhető a fejlettebb szintaxishoz. diff --git a/translation/dest/class/id-ID.xml b/translation/dest/class/id-ID.xml index 58c1f6bd26..16c2bfd73d 100644 --- a/translation/dest/class/id-ID.xml +++ b/translation/dest/class/id-ID.xml @@ -66,6 +66,10 @@ Inilah tautan untuk mengakses kelas. Akun yang dirilis tidak dapat dikelola lagi. Siswa akan dapat mengaktifkan mode anak dan mereset kata sandi sendiri. Siswa akan tetap berada di kelas setelah akun mereka dirilis. Alamat email siswa yang nyata dan unik. Kami akan mengirim email konfirmasi ke sana, dengan tautan untuk melepaskan akun. + Tutup akun + Tutup akun siswa secara permanen. + Siswa tidak akan dapat menggunakan akun ini lagi. Penutupan ini bersifat final. Pastikan siswa memahami dan menyetujui. + Anda mungkin ingin memberikan kendali kepada siswa atas akun sebagai gantinya, sehingga mereka dapat terus menggunakannya. Guru-guru %s guru @@ -89,5 +93,4 @@ Inilah tautan untuk mengakses kelas. Semua berita kelas dalam satu tempat. Tambahkan berita terbaru di atas. Jangan hapus berita sebelumnya. Pisahkan berita dengan --- itu akan menampilkan garis horizontal. - %s tersedia untuk sintaks lebih lanjut. diff --git a/translation/dest/class/it-IT.xml b/translation/dest/class/it-IT.xml index 8cf555c351..6f3992ce68 100644 --- a/translation/dest/class/it-IT.xml +++ b/translation/dest/class/it-IT.xml @@ -92,5 +92,4 @@ Questo è il link per accedere alla lezione. Tutte le news di classe in un unico campo. Aggiungi le notizie recenti in alto. Non eliminare le notizie precedenti. Separa le notizie con --- mostrerà una linea orizzontale. - %s è disponibile per la sintassi più avanzata. diff --git a/translation/dest/class/ja-JP.xml b/translation/dest/class/ja-JP.xml index 8b3b53fa1d..b31054e186 100644 --- a/translation/dest/class/ja-JP.xml +++ b/translation/dest/class/ja-JP.xml @@ -66,6 +66,10 @@ 解放したアカウントは二度と管理下にできません。生徒は自分でキッズモードの切り替えやパスワードリセットを行なえます。 アカウントを解放しても、生徒は教室に残ったままです。 生徒の実在のメールアドレス。Lichess からアカウント解放用のリンクを付した確認メールが送られます。 + アカウント停止 + 生徒のアカウントを永久に停止する + 生徒はこのアカウントを二度と使えなくなります。停止は後で解除できません。生徒の理解と同意を確かめてください。 + あるいはアカウントのコントロールを生徒に渡すこともでき、そうすれば生徒はアカウント使用を続けられます。 講師 %s 講師 @@ -89,5 +93,4 @@ 教室のニュースをすべてひとつのフィールドに入れます。 最新ニュースをいちばん上に追加、古いものも削除しないこと。 項目の間に「---」を入れてください、横線が表示されます。 - もっと高度な文法として %s も使えます。 diff --git a/translation/dest/class/kk-KZ.xml b/translation/dest/class/kk-KZ.xml index 3ffd08876f..c1f7eb9241 100644 --- a/translation/dest/class/kk-KZ.xml +++ b/translation/dest/class/kk-KZ.xml @@ -93,5 +93,4 @@ Кейінгі жаңалықты төбеге қосыңыз. Алдыңғыларды өшірмеңіз. Жаңалықтарды өзара --- таңбасымен ажыратыңыз Ол көлденең сызық болып көрсетіледі. - %s кеңейтілген синтаксис үшін қолжетімді. diff --git a/translation/dest/class/ko-KR.xml b/translation/dest/class/ko-KR.xml index af7a7a1411..822b6ca680 100644 --- a/translation/dest/class/ko-KR.xml +++ b/translation/dest/class/ko-KR.xml @@ -66,6 +66,10 @@ 해제된 계정은 다시 관리할 수 없습니다. 학생은 어린이 모드를 전환하고 직접 비밀번호를 재설정 할 수 있습니다. 학생은 계정이 해제된 후에도 수업에 남아있습니다. 학생의 실제 고유 이메일 주소입니다. 계정을 해제 할 수 있는 링크가 포함된 확인 이메일을 보내드립니다. + 계정 폐쇄 + 학생 계정을 영구적으로 폐쇄합니다. + 학생은 이 계정을 다시 사용할 수 없으며 되돌릴 수 없습니다. 학생이 이에 대해 이해했으며 동의했는지 확인하세요. + 대신 학생이 계정을 계속 사용할 수 있도록 학생에게 제어 권한을 줄 수 있습니다. 선생님 선생님 %s명 @@ -90,5 +94,4 @@ 상단에 최근 뉴스를 추가하세요. 이전 뉴스를 삭제하지 마세요. 각 뉴스를 ---로 구분하세요. 가로선으로 보이게 됩니다. - 추가로 %s 문법을 사용하실 수 있습니다. diff --git a/translation/dest/class/lt-LT.xml b/translation/dest/class/lt-LT.xml index 1dc6089d60..069b1d8cd5 100644 --- a/translation/dest/class/lt-LT.xml +++ b/translation/dest/class/lt-LT.xml @@ -69,6 +69,10 @@ Slaptažodis: %3$s Išleista paskyra nebegali tapti valdoma. Mokinys galės perjungi vaikų režimą ar pakeisti savo slaptažodį. Po paskyros paleidimo mokinys liks klasėje. Tikras, unikalus mokinio el. pašto adresas. Juo išsiųsime patvirtinimo laišką su nuoroda išleisti paskyrą. + Uždaryti paskyrą + Visam laikui uždaro mokinio paskyrą. + Mokinys nebegalės prieiti prie šios paskyros. Uždarymas yra neatstatomas. Įsitikinkite, kad mokinys supranta ir sutinka. + Jūs taip pat galite paskyros valdymą perleisti mokiniui. Taip jie galės toliau naudotis savo paskyra. Mokytojai Mokytojas @@ -99,5 +103,4 @@ Slaptažodis: %3$s Paskutines naujienas pridėkite viršuje. Netrinkite esamų naujienų. Atskirkite naujienas su --- Taip bus parodyta horizontali linija. - %s prieinamas sudėtingesnei sintaksei. diff --git a/translation/dest/class/lv-LV.xml b/translation/dest/class/lv-LV.xml index 18e46c7d04..e6325cbcfd 100644 --- a/translation/dest/class/lv-LV.xml +++ b/translation/dest/class/lv-LV.xml @@ -68,6 +68,10 @@ Lūk saite, lai piekļūtu kasei. Atbrīvotu kontu nevar padarīt pārvaldāmu. Skolēns varēs pats pārslēgt bērnu režīmu un atiestatīt paroli. Skolēns paliks grupā pēc konta atbrīvošanas. Īsta, unikāla skolēna e-pasta adrese. Mēs uz to nosūtīsim apstiprinājuma e-pastu, ar saiti lai atbrīvotu kontu. + Slēgt kontu + Mūžīgi slēgt skolēna kontu. + Skolēns vairs nevarēs izmantot šo kontu. Slēgšana ir neatgriezeniska. Pārliecinieties, ka skolēns to ir sapratis un piekrīt slēgt kontu. + Iespējams, vēlaties atdot kontroli pār kontu, lai skolēns var turpināt to lietot. Skolotāji %s skolotāji @@ -95,5 +99,4 @@ Lūk saite, lai piekļūtu kasei. Visas grupas ziņas vienā laukā. Pievienojiet jaunākās ziņas augšpusē. Nedzēsiet iepriekšējās ziņas. Atdaliet ziņas ar \"---\", tas izveidos horizontālu līniju. - Uzlabotai sintaksei pieejams %s. diff --git a/translation/dest/class/mk-MK.xml b/translation/dest/class/mk-MK.xml index 2fc4bbff5f..7c04c8f481 100644 --- a/translation/dest/class/mk-MK.xml +++ b/translation/dest/class/mk-MK.xml @@ -93,5 +93,4 @@ Додади ја последната вест на врвот. Не бриши ги претходните вести. Оддели ги вестите со --- Ќе биде покажано како линија. - %s е достапно за понапредна синтакса. diff --git a/translation/dest/class/ml-IN.xml b/translation/dest/class/ml-IN.xml index 3ea04e700d..dc2a419cdc 100644 --- a/translation/dest/class/ml-IN.xml +++ b/translation/dest/class/ml-IN.xml @@ -1,2 +1,4 @@ - + + അക്കൗണ്ട് അടച്ചുപൂട്ടുക + diff --git a/translation/dest/class/nb-NO.xml b/translation/dest/class/nb-NO.xml index eded2f45b9..b18608b2d8 100644 --- a/translation/dest/class/nb-NO.xml +++ b/translation/dest/class/nb-NO.xml @@ -67,6 +67,10 @@ Her er lenken som gir tilgang til klassen. En frigitt konto kan ikke settes under administrasjon igjen. Eleven vil kunne endre barnemodus og selv nullstille passordet. Eleven vil forbli i klassen selv om kontoen er frigitt. Elevens korrekte, unike e-postadresse. Vi sender en bekreftelsesmelding til adressen med en lenke som gjør det mulig å frigi kontoen. + Avslutt konto + Steng elevkontoen for godt. + Eleven vil aldri kunne bruke denne kontoen igjen. Dette er endelig. Sørg for at eleven forstår dette og er enig i det. + Du vil kanskje heller gi eleven kontroll over kontoen, slik at bruken kan fortsette. Lærere Lærer @@ -92,5 +96,4 @@ Her er lenken som gir tilgang til klassen. Alle klasse-nyheter i et enkelt felt. Legg inn de siste nyhetene på toppen. Ikke slett tidligere nyheter. Skill enkeltnyheter med --- det blir vist som en horisontal linje. - %s er tilgjengelig for mer avansert syntaks. diff --git a/translation/dest/class/nl-NL.xml b/translation/dest/class/nl-NL.xml index 1c4f06ab1c..eb9de00d67 100644 --- a/translation/dest/class/nl-NL.xml +++ b/translation/dest/class/nl-NL.xml @@ -67,6 +67,10 @@ Hier is de link om toegang te krijgen tot de groep. Een vrijgegeven account kan niet opnieuw worden beheerd. De student kan dan zelf de kind-modus veranderen of het wachtwoord resetten. De leerling blijft in de groep nadat zijn account is vrijgegeven. Echt, unieke e-mailadres van de student. We sturen een bevestigingsmail met een link om het account vrij te geven. + Account sluiten + Sluit het leerlingaccount zonder dat ongedaan maken mogelijk is. + De leerling zal dit dit account nooit meer kunnen gebruiken. Sluiten is definitief. Zorg ervoor dat de leerling dit begrijpt en ermee instemt. + Je kunt de leerling in plaats daarvan controle over het account geven, zodat de leerling het account kan blijven gebruiken. Leraren Leraar @@ -92,5 +96,4 @@ Hier is de link om toegang te krijgen tot de groep. Alle groepsnieuws in een enkel veld. Voeg het laatste nieuws toe aan de top. Verwijder vorig nieuws niet. Scheid het nieuws met --- het zal als een horizontale lijn worden weergeven. - %s is beschikbaar voor meer geavanceerde syntaxis. diff --git a/translation/dest/class/nn-NO.xml b/translation/dest/class/nn-NO.xml index 678c1130dc..c37bd4711b 100644 --- a/translation/dest/class/nn-NO.xml +++ b/translation/dest/class/nn-NO.xml @@ -67,6 +67,10 @@ Her er lenka som gir deg tilgjenge til klassen. En frigjeven konto kan ikkje settast under administrasjon igjen. Eleven vil kunne endre barnemodus og sjølv nullstille passordet. Eleven vil bli i klassa sjølv om kontoen er frigjeven. Korrekt, unik e-postadresse for eleven. Vi sender ei stadfestingsmelding til adressa med ei lenke for å frigi kontoen. + Steng elevkonto + Steng elevkontoen permanent. + Eleven vil aldri kunne bruka denne kontoen att. Stenging er ei endeleg avgjerd. Ver heilt sikker på at eleven forstår og samtykkjer i dette. + Eit alternativ er å gje eleven kontroll over kontoen slik at den framleis kan vera til gagn. Lærarar Lærar @@ -92,5 +96,4 @@ Her er lenka som gir deg tilgjenge til klassen. Alle klassenyhende i eit enkelt felt. Legg inn dei siste nyhendene på toppen. Ikkje slett tidlegare nyhende. Sett inn --- mellom kvar nyhende, det vil visast med ei horisontal linje. - %s er tilgjengeleg for meir avansert syntaks. diff --git a/translation/dest/class/pl-PL.xml b/translation/dest/class/pl-PL.xml index ac1a2d77ff..f5456bec27 100644 --- a/translation/dest/class/pl-PL.xml +++ b/translation/dest/class/pl-PL.xml @@ -69,6 +69,10 @@ Oto link do klasy. Nie będzie można ponownie zarządzać kontem. Uczeń będzie mógł samodzielnie przełączyć tryb konta i resetować hasło. Uczeń pozostanie w klasie po przekazaniu mu zarządzania kontem. Adres e-mail ucznia. Wyślemy na niego wiadomość z linkiem pozwalającym mu przejąć zarządzanie jego kontem. + Zamknij konto + Zamknij nieodwracalnie konto studenckie. + Uczeń nigdy więcej nie będzie mógł używać tego konta. Zamykanie jest ostateczne. Upewnij się, że rozumie i zgadza się na to. + Zamiast tego możesz dać uczniowi kontrolę nad kontem, aby mógł on nadal z niego korzystać. Nauczyciele Nauczyciel @@ -98,5 +102,4 @@ Oto link do klasy. Wszystkie aktualności w jednym polu. Dodaj najnowsze wiadomości u góry. Nie usuwaj poprzednich wiadomości. Oddziel wiadomości --- co wyświetli poziomą linię. - %s jest dostępny dla bardziej zaawansowanej składni. diff --git a/translation/dest/class/pt-BR.xml b/translation/dest/class/pt-BR.xml index 6d41bd514d..03b2ca1b8a 100644 --- a/translation/dest/class/pt-BR.xml +++ b/translation/dest/class/pt-BR.xml @@ -67,6 +67,10 @@ Aqui está o link para acessar a turma. Uma conta libertada não pode ser administrada novamente. O aluno será capaz de alternar o modo de criança e redefinir a palavra-passe para si mesmo. O aluno permanecerá na aula após a libertação da sua conta. Endereço de e-mail real e exclusivo do aluno. Enviaremos um e-mail de confirmação para ele, com um link para libertar a conta. + Encerrar conta + Encerrar a conta do aluno permanentemente. + O aluno nunca mais poderá usar esta conta novamente. O encerramento é definitivo. Tenha certeza de que o aluno entende e concorda. + Você também pode dar ao aluno controle sobre a conta. Assim, ele poderá continuar usando-a. Professores Professor @@ -92,5 +96,4 @@ Aqui está o link para acessar a turma. Todas as notícias sobre a aula num único campo. Adicione as notícias recentes no topo. Não exclua notícias anteriores. Separe as notícias com --- tal irá mostrar uma linha horizontal. - %s está disponível para sintaxe mais avançada. diff --git a/translation/dest/class/pt-PT.xml b/translation/dest/class/pt-PT.xml index 6cc676c56f..2cd4e1e88c 100644 --- a/translation/dest/class/pt-PT.xml +++ b/translation/dest/class/pt-PT.xml @@ -92,5 +92,4 @@ Aqui está o link para acederes à aula. Todas as novidades sobre a aula num único campo. Adiciona as novidades recentes no topo. Não excluas novidades anteriores. Separa as novidades com --- tal irá mostrar uma linha horizontal. - %s está disponível para sintaxe mais avançada. diff --git a/translation/dest/class/ro-RO.xml b/translation/dest/class/ro-RO.xml index 5ba0bc19f9..099c190bc0 100644 --- a/translation/dest/class/ro-RO.xml +++ b/translation/dest/class/ro-RO.xml @@ -68,6 +68,10 @@ Aici este link-ul pentru a accesa clasa. Un cont eliberat nu poate fi facut din nou manageriat. Studentul poate să activeze modul copil și să reseteze parola singur. Studentul va rămâne în clasă dupa e contul lui este eliberat. Adresa de e-mail unică și reală a studentului. Vom trimite un e-mail de confirmare la acea adresă, cu un link-ul pentru a elibera contul. + Închide contul + Închideți permanent contul de student. + Studentul nu va mai putea niciodată să folosească acest cont. Închiderea este finală. Asigurați-vă că elevul înțelege și este de acord. + În schimb, poate doriți să îi acordați studentului controlul asupra contului, astfel încât să îl poată folosi în continuare. Profesori Profesor @@ -96,5 +100,4 @@ Aici este link-ul pentru a accesa clasa. Adaugă noutățile recente în partea de sus. Nu șterge noutățile anterioare. Separă noutățile cu --- Va aparea o linie orizontală. - %s este disponibil pentru o sintaxă mai avansată. diff --git a/translation/dest/class/ru-RU.xml b/translation/dest/class/ru-RU.xml index f862f9c359..5d406f9d2e 100644 --- a/translation/dest/class/ru-RU.xml +++ b/translation/dest/class/ru-RU.xml @@ -69,6 +69,10 @@ Выданная учётная запись не может стать опять управляемой. Ученик сможет самостоятельно переключать детский режим и менять пароль. Ученик останется в классе даже после того, как его учётная запись будет выдана ему. Настоящий, уникальный email ученика. Мы отправим на этот адрес подтверждение со ссылкой, по которой ученику будет выдана его учётная запись. + Закрыть аккаунт + Навсегда закрыть аккаунт ученика. + Ученик больше не сможет пользоваться этим аккаунтом. Закрытие является окончательным. Убедитесь, что ученик понимает это и согласен. + Вместо этого вы можете передать ученику контроль над аккаунтом, чтобы он мог его использовать самостоятельно. Преподаватели Преподаватель @@ -98,5 +102,4 @@ Все новости класса в одном поле. Добавляйте свежие новости сверху. Не удаляйте предыдущие новости. Разделяйте новости с помощью трёх дефисов --- они превратятся в горизонтальную линию. - %s может быть использован для форматирования текста. diff --git a/translation/dest/class/sk-SK.xml b/translation/dest/class/sk-SK.xml index 65fb8aaf57..a681575a6a 100644 --- a/translation/dest/class/sk-SK.xml +++ b/translation/dest/class/sk-SK.xml @@ -99,5 +99,4 @@ Tu je link pre prístup ku kurzu. Pridajte nedávne správy na vrch. Nemažte predošlé správy. Oddelujte novinky s --- To zobrazí horizontálnu čiaru. - %s je dostupný pre viac pokročilý syntax. diff --git a/translation/dest/class/sl-SI.xml b/translation/dest/class/sl-SI.xml index 4a5aea6d6f..4eeb154e3d 100644 --- a/translation/dest/class/sl-SI.xml +++ b/translation/dest/class/sl-SI.xml @@ -69,6 +69,10 @@ Tukaj je povezava za dostop do razreda. Objavljen račun ne more biti spet upravljan. Študent bo lahko sam preklopil način za otroke in ponastavil geslo. Študent bo ostal v razredu po objavi njegovega računa. Reničen, unikaten elektronski naslov študenta. Poslali bomo potrditveno pošto na ta elektronski naslov s povezavo za objavo računa. + Zapri račun + Trajno zaprite študentski račun. + Študent tega računa ne bo mogel več uporabljati. Zaprtje je dokončno. Prepričajte se, da študent razume in se strinja. + Namesto tega boste morda želeli študentu dati nadzor nad računom, da ga bo lahko še naprej uporabljal. Učitelji Učitelj @@ -99,5 +103,4 @@ Tukaj je povezava za dostop do razreda. Dodajte zadnje novice na vrh. Ne izbrišite prejšnjih novic. Ločene novice s --- Prikazal bo horizontalno črto. - %s je na voljo za naprednejšo skladnjo. diff --git a/translation/dest/class/sq-AL.xml b/translation/dest/class/sq-AL.xml index 1130ad69c5..03451931b0 100644 --- a/translation/dest/class/sq-AL.xml +++ b/translation/dest/class/sq-AL.xml @@ -93,5 +93,4 @@ Kjo eshte adresa per tu futur ne klase. Shtoni lajmet e fundit në krye. Mos fshini lajmet e mëparshme. Lajme të ndara me --- Do të shfaqë një vijë horizontale. - %s është në dispozicion për sintaksë më të përparuar. diff --git a/translation/dest/class/sr-SP.xml b/translation/dest/class/sr-SP.xml index cf748af4e9..716ef028cc 100644 --- a/translation/dest/class/sr-SP.xml +++ b/translation/dest/class/sr-SP.xml @@ -96,5 +96,4 @@ Додајте нове вести на врх. Не бришите претходне вести. Одвојите вести са --- Биће приказано као хоризонтална линија. - %s је доступно за напреднију синтаксу. diff --git a/translation/dest/class/sv-SE.xml b/translation/dest/class/sv-SE.xml index ff64c47c76..3a8999cec0 100644 --- a/translation/dest/class/sv-SE.xml +++ b/translation/dest/class/sv-SE.xml @@ -92,5 +92,4 @@ Här är länken för att komma till klassen. Alla klassnyheter i ett enda fält. Lägg till de senaste nyheterna högst upp. Ta inte bort tidigare nyheter. Separera nyheter med --- det kommer att visa en horisontell linje. - %s är tillgänglig för mer avancerad syntax. diff --git a/translation/dest/class/tr-TR.xml b/translation/dest/class/tr-TR.xml index 4692e0e95e..c00a511fa8 100644 --- a/translation/dest/class/tr-TR.xml +++ b/translation/dest/class/tr-TR.xml @@ -67,6 +67,10 @@ Sınıfa erişim linki burada. Serbest bırakılan bir hesap tekrar yönetilemez. Öğrenciler kendileri çocuk modunu değiştirebilirler ve şifrelerini sıfırlayabilirler. Öğrenciler hesapları serbest bırakıldıktan sonra sınıfta kalmaya devam edecekler. Öğrencinin gerçek ve kendisine özgü e-posta adresi. Bu adrese, hesabının serbest bırakma bağlantısını içeren bir onay e-postası göndereceğiz. + Hesabı kapat + Öğrenci hesabını kalıcı olarak kapat. + Öğrenci, hesabını bir daha asla kullanamayacak. Bu işlem geri çevrilemez. Öğrencinin bu durumdan haberdar olduğuna emin olun. + Bunun yerine hesabın kontrolünü öğrenciye devredebilirsiniz. Böylece hesabı kullanmaya devam edebilir. Antrenörler Antrenör @@ -93,5 +97,4 @@ Sınıfa erişim linki burada. Yeni haberleri en üstte göster. Eski haberleri silme. Haberleri şununla ayırın --- Bu yatay bir çizgi oluşturacaktır. - %s daha gelişmiş sözdizimi için kullanılabilir. diff --git a/translation/dest/class/uk-UA.xml b/translation/dest/class/uk-UA.xml index 1415b51fbf..9604540ffd 100644 --- a/translation/dest/class/uk-UA.xml +++ b/translation/dest/class/uk-UA.xml @@ -99,5 +99,4 @@ Додавайте останні новини зверху. Не видаляйте попередні новини. Відокремте новини через --- Вони будуть відображені в горизонтальну лінію. - %s доступний для більш детального форматування. diff --git a/translation/dest/class/uz-UZ.xml b/translation/dest/class/uz-UZ.xml index 985458f5d3..ee6bede912 100644 --- a/translation/dest/class/uz-UZ.xml +++ b/translation/dest/class/uz-UZ.xml @@ -92,5 +92,4 @@ Paroli: %3$s Yangi habarlarni tepaga qoʻshing. Avvalgi yangiliklarni oʻchirmang. Yangiliklarni --- bilan ajrating, u gorizontal chiziqni tasvirlaydi. - %s yanada kengroq sintaksisga ega. diff --git a/translation/dest/class/vi-VN.xml b/translation/dest/class/vi-VN.xml index 772aaddea5..14244bf08b 100644 --- a/translation/dest/class/vi-VN.xml +++ b/translation/dest/class/vi-VN.xml @@ -89,5 +89,4 @@ Mật khẩu: %3$s Tất cả các tin tức lớp học trong một lĩnh vực đơn lẻ. Thêm những tin tức mới nhất lên đầu trang. Đừng xóa tin tức trước đó. Phân cách tin tức bởi --- nó sẽ hiển thị một đường ngang. - %s sẵn sàng cho cấu trúc nâng cao hơn. diff --git a/translation/dest/class/zh-CN.xml b/translation/dest/class/zh-CN.xml index 6b4421dac0..87a765a4ff 100644 --- a/translation/dest/class/zh-CN.xml +++ b/translation/dest/class/zh-CN.xml @@ -90,5 +90,4 @@ 在顶部添加最近的新闻。不要删除以前的新闻。 用----分离新闻 它将显示一条横线。 - %s 可用于更高级的语法。 diff --git a/translation/dest/coach/pt-PT.xml b/translation/dest/coach/pt-PT.xml index 5cb2995909..8730757e3a 100644 --- a/translation/dest/coach/pt-PT.xml +++ b/translation/dest/coach/pt-PT.xml @@ -1,26 +1,26 @@ Treinadores no Lichess - Teinador no Lichess - És um bom treinador de xadrez com um %s? + Treinador no Lichess + É um bom treinador de xadrez com um %s? título FIDE ou NM - Confirma o teu título aqui e analisaremos a tua candidatura. - Envia-nos um e-mail para %s e analisaremos a tua candidatura. + Confirme o seu título aqui e analisaremos a sua candidatura. + Envie-nos um e-mail para %s e analisaremos a sua candidatura. Localização Línguas Pontuação - Taxa por hora + Taxa horária Disponibilidade A aceitar alunos - Não está a aceitar alunos atualmente + Não está a aceitar alunos de momento %s treina alunos de xadrez - Ver o perfil de %s no Lichess - Enviar-lhe uma mensagem privada + Ver perfil de %s no Lichess + Enviar uma mensagem privada Sobre mim Experiência de jogo Experiência de ensino Outras experiências - Melhores habilidades + Melhores competências Metodologia de ensino Estudos públicos Vídeos no YouTube @@ -28,8 +28,8 @@ Avaliação de um aluno Avaliação de %s alunos - Obrigado pela tua avaliação! - %s aprovar-te-á em breve ou um moderador dar-lhe-á uma olhada. + Obrigado pela avaliação! + %s irá aprovar em breve ou um moderador irá dar-lhe uma olhada. Avaliar este treinador Descreve a tua experiência de treino com %s diff --git a/translation/dest/contact/da-DK.xml b/translation/dest/contact/da-DK.xml index f74c91499f..b12ba55d9c 100644 --- a/translation/dest/contact/da-DK.xml +++ b/translation/dest/contact/da-DK.xml @@ -52,6 +52,7 @@ Det er muligt at sætte skakmat med blot en springer eller løber, hvis modstanderen har mere end en konge på brættet. Ingen ratingpoint blev givet Vær sikker på, at du spillede et ratet parti. Uformelle partier påvirker ikke spillernes rating. + Under visse omstændigheder, når du spiller mod en bot-konto, giver et ratet parti måske ikke point, hvis det fastslås, at spilleren misbruger bot\'en for ratingpoint. Fejlside Hvis du stødte på en fejlside, kan du anmelde det: Appellere en udelukkelse eller IP-restriktion diff --git a/translation/dest/contact/de-CH.xml b/translation/dest/contact/de-CH.xml index 2d1da9e15d..8d831c2c10 100644 --- a/translation/dest/contact/de-CH.xml +++ b/translation/dest/contact/de-CH.xml @@ -1,75 +1,75 @@ Kontakt - Lichess kontaktieren - Wie können wir dir helfen? - Besuche diese Seite, um das Problem zu lösen - Ich kann mich nicht einloggen - Ich erhalte meine Bestätigungs-E-Mail nicht - Ich habe mein Passwort vergessen + Lichess kontaktiärä + Wiä chönd mir dir hälfä? + Bsuäch diä Siitä, zum s\'Problem lösä + Ich cha mich nöd iiloggä + Ich bechum mis Beschtätigungs-E-Mail nöd + Ich han mis Passwort vergässä Ich han min Benutzernamä vergässä - Du kannst dich mit der E-Mail-Adresse einloggen, mit der du dich angemeldet hast + Du chasch dich mit dä E-Mail-Adresse iiloggä, mit därä du dich aagmoldä häsch Ich ha dä Zuägriff uf mini Zwei-Faktor-Authäntifiziärigscodes verlorä Setz dis Passwort zrugg, zum din zweitä Faktor z\'entfärnä - Ich benötige Konto-Unterstützung - Ich möchte, dass mein Titel auf Lichess angezeigt wird + Ich benötigä Konto-Underschtützig + Ich wött, dass min Titäl uf Lichess aazeigt wird Zum din Titäl in dim Lichess-Profil z\'zeigä und adä Titled-Arenas teilznäh, bsuäch d\'Titälbeschtätigungssiitä - Ich möchte mein Konto schließen - Du kannst dein Konto auf dieser Seite schließen - Bitte uns nicht per E-Mail ein Konto zu schließen, wir werden es nicht schließen. - Ich möchte mein Konto wiedereröffnen - Du kannst dein Konto auf dieser Seite wiedereröffnen. Das funktioniert nur ein einziges Mal. - Bitte uns nicht per E-Mail ein Konto wiederzueröffnen, wir werden es nicht wiedereröffnen. + Ich wött mis Konto gschlüssä + Du chasch dis Konto uf därä Siitä gschlüssä + Bitt üs nöd per E-Mail, äs Konto z\'gschlüssä, mir gschlüssäds nöd. + Ich wött mis Konto wiedereröffnä + Du chasch dis Konto uf därä Siitä wiedereröffnä. Das klappät aber nur äs einzigs Mol. + Bitt üs nöd per E-Mail, äs Konto wiederz\'eröffnä, mir machäd das nöd. Ich wött min Benutzernamä ändärä - Bsuäche diä Siitä, zum d\'Gross-/Chliischriibig vo dim Benutzernamä z\'ändärä - Wir können nicht mehr als die Groß-/Kleinschreibung ändern. Aus technischen Gründen ist es schlichtweg unmöglich. - Du kannst jedoch dein Konto schließen und ein neues erstellen. - Ich möchte meinen Verlauf oder meine Wertung löschen - Es ist nicht möglich deinen Spiel-, Puzzleverlauf oder deine Wertung zu löschen. - Ich möchte einen Spieler melden - Benutze das Meldeformular, um einen Spieler zu melden + Bsuäch diä Siitä, zum d\'Gross-/Chliischriibig vo dim Benutzernamä z\'ändärä + Mir chönd nöd meh als d\'Gross-/Chliischriibig z\'ändärä. Us tächnischä Gründ isch das schlichtwäg unmöglich. + Du chasch aber dis Konto gschlüssä und äs neus ärschtelä. + Ich wött min Verlauf oder mini Wärtig löschä + Äs isch nöd möglich din Schpiil- und Puzzleverlauf oder dini Wärtig z\'löschä. + Ich wött än Schpiller / ä Schpillerin mäldä + Benutz das Mäldeformular, zum än Schpiller / ä Schpillerin z\'mäldä Du erreichsch diä Siitä ebefalls, indäm du uf dä %s Mäldechnopf ufärä Profiilsiitä klicksch. - Melde keine Spieler im Forum. - Sende uns keine Meldungen per E-Mail. - Sende den Moderatoren keine direkten Nachrichten. - Lediglich Spieler per Meldeformular zu melden ist effektiv. - Ich möchte einen Fehler melden + Mäld kei Schpiller/-innä im Forum. + Schick üs kei Mäldigä per E-Mail. + Schick dä Moderatorä kei direkti Nochrichtä. + Numä Schpiller/-innä per Mäldeformular z\'mäldä isch effektiv. + Ich wött än Fähler mäldä Im Lichess Feedbackforum - Als ein Lichess Seitenproblem auf GitHub - Als ein Lichess Handyapp Problem auf GitHub + Als äs Lichess Siitäproblem uf GitHub + Als äs Lichess Handyapp Problem uf GitHub Im Lichess Discordserver - Bitte beschreibe wie der Fehler aussieht, was du stattdessen erwartet hättest, sowie die Schritte um den Fehler zu reproduzieren. - Unerlaubtes Bauern-Schlagen - Das wird \"en passant\" genannt und gehört zu den Schachregeln. + Bitte beschriib wiä dä Fähler usgseht, was du schtattdessä erwartät hettisch und d\'Schritte zum dä Fähler z\'reproduziärä. + Unerlaubts Puurä-Schloh + Das wird \"im Vorbigoh\" gnännt und ghört zudä Schachreglä. Probiär das chliine, interaktive Schpiil us und lärn meh über \"im Vorbigoh\". - Unerlaubtes oder unmögliches Rochieren - Die Rochade wird nur verhindert, falls der König durch ein kontrolliertes Feld zieht. - Stelle sicher, dass du mit den Rochaderegeln vertraut bist + Unerlaubts oder unmöglichs Roschiärä + D\'Roschaadä wird nur verhindärät, falls dä König dur äs kontrolliärts Fäld zücht. + Schtell sicher, dass du mit dä Roschaadereglä vertraut bisch Probiär das chliine, interaktive Schpiil zum d\'Roschaadä im Schpiil z\'üäbä - Falls du ein Spiel importiert oder es von einer Stellung heraus gestartet hast, stelle sicher, dass du die Rochaderechte richtig eingestellt hast. - Unzureichendes Material zum Mattsetzen - Gemäß den FIDE Schachregeln §6.9 wird das Spiel nicht als Remis gewertet, falls ein Schachmatt in irgendeiner Serie von legalen Zügen erreichbar ist - Es ist möglich mit nur einem Springer oder Läufer Matt zu setzen, falls der Gegner mehr als einen König auf dem Brett hat. - Keine Wertungspunkte wurden vergeben - Stelle sicher, dass du ein gewertetes Spiel spielst. Ungewertete Spiele beeinflussen nicht die Spielerwertungen. - Fehlerseite - Falls du eine Fehlerseite entdeckt hast kannst du sie melden: - Einspruch gegen einen Bann oder IP-Beschränkung - Markierung für Computerunterstützung/Betrug - Du kannst deinen Einspruch an %s senden. - Falsche Positivergebnisse können gelegentlich auftreten und dafür möchten wir uns entschuldigen. - Falls dein Einspruch gerechtfertigt ist werden wir den Bann so schnell wie möglich aufheben. - Falls du jedoch auch nur ein einziges Mal Maschinenunterstützung benutzt hast, ist dein Konto leider verloren. - Leugne nicht betrogen zu haben. Falls du die Erlaubnis willst ein neues Konto zu eröffnen, gib einfach zu was du getan hast und zeige, dass du eingesehen hast, dass das ein Fehler war. - Andere Beschränkung + Falls du äs Schpiil importiärt oder eis vonärä Schtellig usä gschtartät häsch, schtell sicher, dass du d\'Roschaaderächt richtig iigschtellt häsch. + Unzuäreichends Material zum Mattsetzä + Gemäss dä FIDE Schachreglä §6.9 wird äs Schpiil nöd als Remis gwärtät, falls äs Schachmatt vo irgendärä Serie vo legalä Züg erreichbar isch + Äs isch möglich, mit nur eim Gaul oder Läufer Matt z\'setzä, falls dä Gegner meh als nu dä König ufäm Brätt hät. + Kei Wärtigspünkt sind vergeh wordä + Schtell sicher, dass du äs gwärtäts Schpiil schpilsch. Ungwärtäti Schpiil beiiflussäd d\'Schpillerwärtigä nöd. + Fählersiitä + Falls du ä Fählersiitä entdeckt häsch, chasch du si mäldä: + Iischpruch gäg än Bann oder IP-Beschränkig + Markiärig für Kompi-Underschtützig/Bschiss + Du chasch din Iischpruch a %s sändä. + Falschi Positivärgebnis chönd ab und zuä ufträtä, wofür mir üs entschuldigäd. + Falls din Iischprich grächtfärtigät isch, wärdäd mir dä Bann so schnäll wi möglich ufhebä. + Falls du aber au nur äs einzigs Mol Maschinä-Underschtützig bruucht und dämit bschissä häsch, isch dis Konto leider verlorä. + Beschtriit dä Bschiss nöd. Falls du \'Ärlaubnis wöttsch, äs neus Konto z\'eröffnä, gib eifach zuä was du boosgät häsch und zeig, dass du iisichtig bisch, dass das än Fähler gsi isch. + Andäri Beschränkigä Zämänarbät, Rächtlichäs, Kommerziälls - Lichess Monetarisierung - Lichess kaufen - Genehmigung um Lichess zu nutzen - Du bist eingeladen Lichess für deine Aktivitäten zu verwenden, sogar für kommerzielle Zwecke. + Lichess Monetarisiärig + Lichess poschtä + Genehmigung zum Lichess z\'benutzä + Du bisch iigladä, Lichess für dini Aktivitätä z\'verwändä, sogar für kommerzielli Zwäck. Du chasch das i dinä Videos zeigä und du chasch au Screenshots vo Lichess in dini Büächer truckä. - Eine Erwähnung ist wünschenswert aber nicht notwendig. - Keines der oben genannten - Sende uns eine Mail an %s. + Än Erwähnig isch wünschenswärt, aber nöd notwändig. + Öppis anders + Schick üs äs Mail a %s. Bitte beschriib dini Afrog klar und düütlich. Nenn din Lichess Nutzernamä und jeglichi Informationä, won üs hälfä chöntäd, Dir z\'hälfä. diff --git a/translation/dest/contact/de-DE.xml b/translation/dest/contact/de-DE.xml index 66da27e5c5..bef36f4aad 100644 --- a/translation/dest/contact/de-DE.xml +++ b/translation/dest/contact/de-DE.xml @@ -52,6 +52,7 @@ Es ist möglich mit nur einem Springer oder Läufer Matt zu setzen, falls der Gegner mehr als einen König auf dem Brett hat. Keine Wertungspunkte wurden vergeben Stelle sicher, dass du ein gewertetes Spiel spielst. Ungewertete Spiele beeinflussen nicht die Spielerwertungen. + Wenn ein Spieler gegen einen Bot spielt, kann es unter Umständen passieren, dass ein Sieg in einem gewertetem Spiel keine Punkte einbringt, falls der Spieler den Bot dazu benutzt, Wertungspunkte anzuhäufen. Fehlerseite Falls du eine Fehlerseite entdeckt hast kannst du sie melden: Einspruch gegen einen Bann oder IP-Beschränkung diff --git a/translation/dest/contact/el-GR.xml b/translation/dest/contact/el-GR.xml index bd1f8034c9..2a7464c56f 100644 --- a/translation/dest/contact/el-GR.xml +++ b/translation/dest/contact/el-GR.xml @@ -52,6 +52,7 @@ Είναι δυνατό το ματ με μόνο έναν ίππο ή έναν αξιωματικό εάν ο αντίπαλος έχει περισσότερα κομμάτια στη σκακιέρα εκτός από τον βασιλιά του. Δεν κέρδισα πόντους μετά το τέλος μιας παρτίδας μου Βεβαιωθείτε ότι η παρτίδα δεν ήταν φιλική. Οι φιλικές παρτίδες δεν επηρεάζουν την αξιολόγηση των παικτών. + Σε ορισμένες περιπτώσεις, παίζοντας εναντίον ενός λογαριασμού-υπολογιστή ένα βαθμολογημένο παιχνίδι μπορεί να μην αποφέρει πόντους βαθμολογίας εάν ο παίκτης κάνει κατάχρηση αυτού. Σελίδα σφάλματος Αν εμφανίστηκε σελίδα σφάλματος, μπορείτε να το αναφέρετε: Θέλω να αποσυρθεί ο περιορισμός/αποκλεισμός της διεύθυνσης IP μου diff --git a/translation/dest/contact/es-ES.xml b/translation/dest/contact/es-ES.xml index 737c6641fe..06f09313c5 100644 --- a/translation/dest/contact/es-ES.xml +++ b/translation/dest/contact/es-ES.xml @@ -10,8 +10,8 @@ Olvidé mi nombre de usuario Puedes iniciar sesión con la dirección de correo electrónico con la que te registraste Perdí mis códigos de autenticación en dos pasos - Completa el cuadro de restablecimiento de contraseña para eliminar tu segundo factor - Necesito soporte de cuenta + Complete a password reset to remove your second factor + I need account support Quiero que mi título se muestre en Lichess Para mostrar tu título en tu perfil de Lichess y participar en los torneos que lo exijan, visita la página de verificación de títulos Quiero cerrar mi cuenta @@ -27,49 +27,50 @@ Quiero borrar mi historial o puntuación No puedes borrar tu historial de partidas, ejercicios o puntuaciones. Quiero denunciar a un jugador - Para denunciar a un jugador utiliza el formulario de denuncia + To report a player, use the report form También puedes acceder a esa página pulsando el botón de denuncia %s en un perfil. No denuncies a jugadores en el foro. No nos envíes correo para denunciar jugadores. No envíes mensajes directos a los moderadores. La única forma eficaz de denunciar jugadores es mediante el formulario de denuncia. Quiero informar de un error - En el foro de comentarios de Lichess - Como un problema de la página de Lichess en GitHub - Como un problema de la aplicación móvil de Lichess en GitHub - En el servidor de Discord de Lichess - Por favor, describe cómo se ve el error, qué esperabas que sucediera, y los pasos para reproducir el error. + In the Lichess Feedback section of the forum + As a Lichess website issue on GitHub + As a Lichess mobile app issue on GitHub + In the Lichess Discord server + Please describe what the bug looks like, what you expected to happen instead, and the steps to reproduce the bug. Captura de peón ilegal Se llama captura al paso y es una de las reglas del ajedrez. Prueba este pequeño juego interactivo para aprender más sobre la captura al paso. Enroque ilegal o imposible - El enroque está prohibido si el rey pasa por un cuadrado controlado. - Asegúrate de entender las reglas del enroque + Castling is only prevented if the king goes through a controlled square. + Make sure you understand the castling rules Prueba este pequeño tutorial interactivo para practicar el enroque en el ajedrez - Si has importado el juego, o lo iniciaste desde una posición, asegúrate de establecer correctamente los derechos del enroque. + If you imported the game, or started it from a position, make sure you correctly set the castling rights. Material insuficiente para dar mate - Según las reglas FIDE §6.9, si un jaque mate es posible con cualquier secuencia legal de movimientos, entonces el juego no es un empate - Puedes hacer jaque mate con sólo un caballo o un alfil, si el oponente tiene más que un rey en el tablero. - No se han concedido puntos - Asegúrate de haber jugado una partida por puntuación. Las partidas amistosas no afectan a las puntuaciones de los jugadores. + According to the FIDE Laws of Chess §6.9, if a checkmate is possible with any legal sequence of moves, then the game is not a draw + It is possible to checkmate with only a knight or a bishop, if the opponent has more than a king on the board. + No rating points were awarded + Make sure you played a rated game. Casual games do not affect the players ratings. + Al jugar contra una cuenta de bot, puede que una partida por puntos no se contabilice si se determina que el jugador abusa del bot para conseguir puntos. Página de error - Si una página te da error, puedes reportarla: - Apelar por un bloqueo o una restricción de IP - Motor o marca de trampa - Puedes enviar una apelación a %s. - A veces ocurren falsos positivos, y lo lamentamos. - Si tu apelación es legítima, levantaremos la prohibición lo antes posible. - Sin embargo, si realmente has utilizado asistencia del motor, incluso una sola vez, tu cuenta está lamentablemente perdida. - No niegues haber hecho trampa. Si quieres que se te permita crear una nueva cuenta, sólo tienes que admitir lo que hiciste, y mostrar que has comprendido que se trataba de un error. - Otra restricción - Colaboración, legal, comercial - Monetizar Lichess + If you faced an error page, you may report it: + Appeal for a ban or IP restriction + Engine or cheat mark + You may send an appeal to %s. + False positives do happen sometimes, and we\'re sorry about that. + If your appeal is legitimate, we will lift the ban ASAP. + However if you indeed used engine assistance, even just once, then your account is unfortunately lost. + Do not deny having cheated. If you want to be allowed to create a new account, just admit to what you did, and show that you understood that it was a mistake. + Other restriction + Collaboration, legal, commercial + Monetising Lichess Comprar Lichess - Autorización para usar Lichess + Authorisation to use Lichess Puedes usar Lichess para tu fin particular, incluso comercial. - Puedes mostrarlo en vídeos y tomar capturas de pantalla de Lichess en tus libros. - Se aprecia el crédito, pero no es necesario. - Ninguna de las anteriores + You can show it in your videos, and you can print screenshots of Lichess in your books. + Credit is appreciated but not required. + None of the above Envíanos un correo electrónico a %s. - Por favor explica tu solicitud de forma clara y exhaustiva. Especifica tu nombre de usuario de Lichess y cualquier información que nos pueda ser útil. + Please explain your request clearly and thoroughly. State your Lichess username, and any information that could help us help you. diff --git a/translation/dest/contact/eu-ES.xml b/translation/dest/contact/eu-ES.xml index 66c35d4a17..d7d127cd25 100644 --- a/translation/dest/contact/eu-ES.xml +++ b/translation/dest/contact/eu-ES.xml @@ -52,6 +52,7 @@ Posible izan daiteke zaldun edo alfil batekin aurkariari xake-mate ematea, aurkariak erregeaz gain beste piezaren bat badu. Ez da puntuaziorik jaso Ziurtatu puntuaziorako baliogarria den partida bat jokatu duzula. Lagunarteko partidek ez dute eraginik jokalarien puntuazioan. + Kasu batzutan robot baten aurka jokatzean, partida batek ez ditu sailkapenerako puntuak ematen jokalaria robotarekin gehiegitan jokatzen ari bada. Errore orrialdea Errorea orrialdea agertu bazaizu, horren berri eman diezagukezu: Debeku edo IP murriztapen baten aurka egitea diff --git a/translation/dest/contact/fi-FI.xml b/translation/dest/contact/fi-FI.xml index a394f42903..f6b91bd35d 100644 --- a/translation/dest/contact/fi-FI.xml +++ b/translation/dest/contact/fi-FI.xml @@ -52,6 +52,7 @@ On mahdollista matittaa pelkällä ratsulla ja lähetillä, jos vastustajalla on pelkkä kuningas laudalla. Vahvuuslukupisteitä ei jaettu Varmistu että pelasit pisteytetyn pelin. Rennot pelit eivät vaikuta pelaajien vahvuuslukuihin. + Joissakin tilanteissa bottia vastaan pelatusta pisteytetystä pelistä ei välttämättä saa pisteitä, jos pelaajan katsotaan käyttävän bottia hyväkseen pisteiden saamiseksi. Virhesivu Jos törmäsit virhesivuun, voit raportoida sen: Valita porttikiellosta tai IP-estosta diff --git a/translation/dest/contact/fr-FR.xml b/translation/dest/contact/fr-FR.xml index 50dd42586c..ed2580dcdb 100644 --- a/translation/dest/contact/fr-FR.xml +++ b/translation/dest/contact/fr-FR.xml @@ -52,6 +52,7 @@ Il est possible de mater avec seulement un cavalier ou un fou si l\'adversaire possède d\'autres pièces que son roi. Aucun point de cote attribué Seules les parties classées sont prises en compte dans le calcul du classement. Les parties amicales ne sont pas comptées. + Dans certains cas, si vous jouez contre un bot, une partie classée ne vous donnera pas de points s\'il est déterminé que vous avez abusé du bot pour obtenir des points. Page d\'erreur Si un message d\'erreur s\'est affiché, vous pouvez le signaler : Demande d\'appel pour un bannissement ou une restriction IP diff --git a/translation/dest/contact/ga-IE.xml b/translation/dest/contact/ga-IE.xml index ea55b0fd11..b3af457517 100644 --- a/translation/dest/contact/ga-IE.xml +++ b/translation/dest/contact/ga-IE.xml @@ -43,8 +43,7 @@ Tugtar \"en passant\" air agus \'sé ceann de rialacha i bhficheall. Bain triail as an gcluiche beag idirghníomhach seo chun níos mó a fhoghlaim faoi \"en passant\". Caisliú dodhéanta nó mídhleathach - Níor cheart an Rí dul trasna cearnóg atá faoi -ionsaí namhaid agus tú ag iarraidh caisliú. + Níor cheart an Rí dul trasna cearnóg atá faoi ionsaí namhaid agus tú ag iarraidh caisliú. Déan cinnte go dtuigeann tú na rialacha faoin caisliú Bain triail as an gcluiche beag idirghníomhach seo chun an caisliú i bhficheall a chleachtadh Má iompórtáladh tú an cluiche, nó má chuir tú tús leis ó shuíomh, déan cinnte go socróidh tú na rialacha caisliú i gceart. @@ -53,6 +52,7 @@ ionsaí namhaid agus tú ag iarraidh caisliú. Is féidir marbhsháinn a dhéanamh le ridire nó easpag amháin, má tá níos mó ná rí ag an céile comhraic. Níor bronnadh aon phointí rátála Déan cinnte gur imir tú cluiche rátáilte. Ní dhéanann cluichí ócáideacha difear do rátálacha na n-imreoirí. + In imthosca áirithe agus é ag imirt i gcoinne cuntas bot, ní fhéadfaidh cluiche rátáilte pointí a dhámhachtain má chinntear go bhfuil an t-imreoir ag mí-úsáid an bot le haghaidh pointí rátála. Leathanach earráide Má thiteann tú ar leathanach earráide, féadfaidh tú é a thuairisciú: Achomharc ar thoirmeasc nó srian IP diff --git a/translation/dest/contact/gl-ES.xml b/translation/dest/contact/gl-ES.xml index 2ab1bddda8..17baeb359e 100644 --- a/translation/dest/contact/gl-ES.xml +++ b/translation/dest/contact/gl-ES.xml @@ -52,6 +52,7 @@ É posible dar xaque mate con só un cabalo ou un alfil se o opoñente posúe algunha peza máis no taboleiro. Non se concederon puntos Asegúrate que xogaches unha partida puntuada. Partidas amistosas non afectan á puntuación dos xogadores/as. + Baixo determinadas circunstancias cando xogas contra un bot, unha partida puntuada non dará puntos se determínase que o xogador abusa do bot para conseguir puntos. Páxina de erro Se unha páxina dá erro, podes reportala: Apelar por un bloqueo o unha restricción de IP diff --git a/translation/dest/contact/hu-HU.xml b/translation/dest/contact/hu-HU.xml index 343151df4f..4f52c2afb4 100644 --- a/translation/dest/contact/hu-HU.xml +++ b/translation/dest/contact/hu-HU.xml @@ -52,6 +52,7 @@ Lehet mattot adni egy futóval vagy huszárral is, ha az ellenfélnek van még figurája a királyon kívül. Nem kaptam értékpontot jutalmul Ellenőrizd, hogy rangsorolt játszmát játszol. Nem rangsorolt játékok nincsenek hatással az értékszámra. + Bizonyos helyzetekben amikor a játékos bot ellen játszik, az értékelt játszma nem feltétlen oszt pontokat, ha a játékos kikövetkeztethetően visszaél a bottal szemben értékpontok miatt. Hibaoldal Ha hibaoldallal találkoztál, itt jelentheted: Fellebbezés kitiltás vagy IP cím korlátozás miatt diff --git a/translation/dest/contact/id-ID.xml b/translation/dest/contact/id-ID.xml index b815b61d12..113a1b6bff 100644 --- a/translation/dest/contact/id-ID.xml +++ b/translation/dest/contact/id-ID.xml @@ -52,6 +52,7 @@ Dimungkinkan untuk skakmat hanya dengan sebuah bidak kuda atau bidak gajah, jika lawan memiliki lebih dari satu raja di papan catur. Tidak ada poin rating yang diberikan Pastikan Anda memainkan permainan ber rating. Permainan santai tidak memengaruhi rating pemain. + Dalam keadaan tertentu saat bermain melawan akun bot, sebuah game yang diberi peringkat mungkin tidak memberikan poin jika ditentukan bahwa pemain menyalahgunakan bot untuk poin peringkat. Halaman bermasalah Jika Anda menghadapi halaman bermasalah, Anda dapat melaporkannya: Pertimbangan untuk larangan atau pembatasan IP diff --git a/translation/dest/contact/ja-JP.xml b/translation/dest/contact/ja-JP.xml index 89c99caef9..f7534293c1 100644 --- a/translation/dest/contact/ja-JP.xml +++ b/translation/dest/contact/ja-JP.xml @@ -52,6 +52,7 @@ たとえばナイト 1 個やビショップ 1 個だけでも、相手にキング以外の駒が残っていればメイトの可能性があります。 勝ったのにレーティングが増えない レート戦だったかどうか確かめてください。非レート戦ではレーティングは動きません。 + ボットアカウントとの対戦で、ボットを利用してレーティングを操作していると判断された場合は、レーティングの点が与えられません。 エラーページ エラーページに出会ったら、以下で報告できます。 アクセス禁止や IP 制限への異議申し立て diff --git a/translation/dest/contact/ko-KR.xml b/translation/dest/contact/ko-KR.xml index f48e7afcf8..ae3c8ea49b 100644 --- a/translation/dest/contact/ko-KR.xml +++ b/translation/dest/contact/ko-KR.xml @@ -52,6 +52,7 @@ 상대방이 킹이 아닌 다른 기물을 가지고 있다면 나이트 하나 또는 비숍 하나로도 체크메이트가 가능합니다. 레이팅 포인트 미지급 레이팅 게임을 했는지 다시 한번 확인하십시오. 캐주얼 게임은 레이팅에 영향을 미치지 않습니다. + 특정 상황에서 봇 계정을 상대로 플레이할 때, 플레이어가 레이팅을 얻기 위해 부정행위를 하는 것으로 판단될 경우 레이팅 포인트가 부여되지 않을 수 있습니다. 에러 페이지 에러 페이지가 나온 경우 여기에서 신고해주세요: 차단 또는 IP 제한에 대한 이의를 제기하고 싶습니다 diff --git a/translation/dest/contact/lt-LT.xml b/translation/dest/contact/lt-LT.xml index bbaff3d3dd..e4f72c4683 100644 --- a/translation/dest/contact/lt-LT.xml +++ b/translation/dest/contact/lt-LT.xml @@ -52,6 +52,7 @@ Yra įmanoma atlikti matą tik su žirgu ar rikiu jeigu priešininkas ant lentos turi daugiau negu tik karalių. Nebuvo skirta reitingo taškų Įsitikinkite, kad žaidėte reitinguotą partiją. Nevertinamos partijos nedaro įtakos žaidėjų reitingams. + Tam tikromis aplinkybėmis, jei nustatoma, kad žmogus išnaudoja robotą norėdamas gauti daugiau reitingo taškų, reitinguotas žaidimas prieš roboto paskyrą gali nesuteikti reitingo taškų. Klaidos puslapis Jei susidūrėte su klaidos puslapiu galite apie jį pranešti: Apeliuoti blokavimą ar IP adreso apribojimą diff --git a/translation/dest/contact/lv-LV.xml b/translation/dest/contact/lv-LV.xml index ab2943f394..7c84623d4b 100644 --- a/translation/dest/contact/lv-LV.xml +++ b/translation/dest/contact/lv-LV.xml @@ -52,6 +52,7 @@ Mats var būt iespējams ar karali un laidni, ja pretiniekam ir vairāk kā tikai karalis uz galdiņa. Neviens reitinga punkts netika piešķirts Pārliecinieties, ka spēlējāt vērtētu spēli. Draudzīgas spēles nemaina spēlētāju reitingus. + Noteiktos gadījumos, spēlējot pret datorprogrammu, par vērtētām spēlēm nepiešķir punktus, ja ir noteikts, ka spēlētājs ļaunprātīgi izmanto programmu, lai paaugstinātu reitingu. Kļūdas lapa Ja saskārāties ar kļūdas lapu, varat par to ziņot: Pārsūdzēt liegumu vai IP ierobežojumu diff --git a/translation/dest/contact/my-MM.xml b/translation/dest/contact/my-MM.xml index 9a67b31a9a..fcae3523a3 100644 --- a/translation/dest/contact/my-MM.xml +++ b/translation/dest/contact/my-MM.xml @@ -1,4 +1,5 @@ ကစားသမား တစ်ဦးနှင့် ပတ်သက်၍ တိုင်ကြားလိုလျှင် တိုင်ကြားရေးပုံစံကို သုံးပါ + စက်ရုပ်အကောင့် တစ်ခုနှင့် ယှဉ်ပြိုင် ကစားရာ၌ ကစားသမားသည် လက်ရည်အမှတ် ရရန်အလို့ငှာ စက်ရုပ်အကောင့်ကို တလွဲသုံးနေကြောင်း တွေ့ရှိရလျှင် အမှတ် အကျုံးဝင်သော ပွဲအတွက် အမှတ် မပေးခြင်း ရှိနိုင်ပါသည်။ diff --git a/translation/dest/contact/nl-NL.xml b/translation/dest/contact/nl-NL.xml index c0c0d33719..0c1920bfd7 100644 --- a/translation/dest/contact/nl-NL.xml +++ b/translation/dest/contact/nl-NL.xml @@ -52,6 +52,7 @@ Schaakmat is mogelijk met enkel een paard of een loper, als de tegenstander meer stukken dan enkel een koning op het bord heeft. Geen ratingpunten toegekend Zorg ervoor dat je een partij met rating hebt gespeeld. Vrijblijvende partijen hebben geen invloed op de rating van de spelers. + Wanneer een speler tegen een bot-account speelt, worden onder bepaalde omstandigheden geen ratingpunten toegekend wanneer blijkt dat de speler de bot misbruikt om ratingpunten te winnen. Foutpagina Als u te maken kreeg met een foutpagina, kunt u dat melden: Vragen om een ban of IP beperking diff --git a/translation/dest/contact/nn-NO.xml b/translation/dest/contact/nn-NO.xml index b83e9abbcf..766c26aaca 100644 --- a/translation/dest/contact/nn-NO.xml +++ b/translation/dest/contact/nn-NO.xml @@ -52,6 +52,7 @@ Det er mogleg å setja sjakkmatt med berre éin springar eller éin løpar dersom motspelaren har fleire brikker enn kongen på brettet. Det vart ikkje tildelt ratingpoeng Forsikre deg om at partiet du spela var rangert. Uforpliktande parti påverkar ikkje ratinga til spelarane. + Dersom det vert slått fast at ein spelar misbrukar ein bot-konto for å manipulera ratingpoeng, kan det hende det ikkje vert gjeven poeng for spelet. Feilside Dersom du støtte på ei feilside kan du rapportere det: Protest ved utestenging eller IP-restriksjon diff --git a/translation/dest/contact/pl-PL.xml b/translation/dest/contact/pl-PL.xml index 95c1b43715..b654785d18 100644 --- a/translation/dest/contact/pl-PL.xml +++ b/translation/dest/contact/pl-PL.xml @@ -52,6 +52,7 @@ Można zamatować przeciwnika tylko skoczkiem lub gońcem, jeśli przeciwnik ma więcej niż tylko króla. Nie przyznano punktów rankingowych Upewnij się, że grałeś partię rankingową. Zwykłe gry nie mają wpływu na ranking graczy. + W pewnych okolicznościach, grając przeciwko botowi, partia rankingowa może nie przynieść punktów, jeśli zostanie rozpoznane, że gracz nadużywa bota do nabijania ich sobie. Strona błędu Jeśli znalazłeś się na stronie błędu, możesz to zgłosić: Odwołanie od zablokowania konta lub ograniczenia IP diff --git a/translation/dest/contact/pt-BR.xml b/translation/dest/contact/pt-BR.xml index ac49c62e1a..3cd84305f0 100644 --- a/translation/dest/contact/pt-BR.xml +++ b/translation/dest/contact/pt-BR.xml @@ -52,6 +52,7 @@ É possível fazer xeque-mate apenas com um cavalo ou um bispo se o adversário tiver outra peça além do rei no tabuleiro. Não recebi pontos após a partida Certifique-se de ter jogado uma partida por pontuação. Jogos casuais não alteram a pontuação dos jogadores. + Em certos casos, ao jogar contra uma conta bot, um jogo ranqueado poderá não valer pontos, se for determinado que o jogador está abusando do bot para conseguir pontos. Página de erro Se você encontrou uma página de erro, você pode reportá-la: Apelação de banimento ou restrição de IP diff --git a/translation/dest/contact/ru-RU.xml b/translation/dest/contact/ru-RU.xml index 02427457f0..07a006231a 100644 --- a/translation/dest/contact/ru-RU.xml +++ b/translation/dest/contact/ru-RU.xml @@ -52,6 +52,7 @@ Например, можно поставить мат только конем или только слоном, если у соперника на доске есть больше чем король. Не были начислены рейтинговые очки Убедитесь, что вы играли рейтинговую игру. Пользовательские игры не влияют на рейтинг игроков. + В рейтинговых играх против ботов в некоторых случаях очки рейтинга не начисляются, если система считает, что игрок эксплуатирует слабости бота для набивания рейтинга. Сообщение об ошибке Если вы столкнулись с сообщением об ошибке, вы можете сообщить об этом: Обжалование бана аккаунта или ограничения IP-адреса diff --git a/translation/dest/contact/sl-SI.xml b/translation/dest/contact/sl-SI.xml index d8393f2000..9595fc19ac 100644 --- a/translation/dest/contact/sl-SI.xml +++ b/translation/dest/contact/sl-SI.xml @@ -52,6 +52,7 @@ Mogoče je matirati samo s skakačem ali lovcem, če nasprotnik nima na šahovnici samo kralja. Nobene rating točke niso bile podeljene Prepričajte se, da ste igrali rangirano igro. Običajne igre ne vplivajo na igralčeve ratinge. + V določenih okoliščinah pri igranju proti robotskemu računu rejtingirana igra ne sme dodeliti točk, če se ugotovi, da igralec zlorablja robota za rejtingiranje. Stran z napako Če ste soočeni s stranjo z napako, jo lahko prijavite: Pritožba na prepoved ali omejitev IP diff --git a/translation/dest/contact/sv-SE.xml b/translation/dest/contact/sv-SE.xml index 58d34751bc..cf912d016b 100644 --- a/translation/dest/contact/sv-SE.xml +++ b/translation/dest/contact/sv-SE.xml @@ -52,6 +52,7 @@ Det kan vara möjligt att göra schackmatt med endast en springare eller löpare, om motståndaren har mer än en kung på brädet. Inga rating-poäng tilldelades Försäkra dig om att du spelade ett rankat parti. Orankade partier påverkar inte spelarnas rating. + När man spelar mot ett bot-konto kan ett rankat parti under vissa omständigheter inte ge några ranking-poäng. Detta om det fastslås att spelaren missbrukar boten för att manipulera sin rating. Felsida Om du stöter på en felsida, kan du rapportera det: Överklaga en avstängning eller IP-begränsning diff --git a/translation/dest/contact/tr-TR.xml b/translation/dest/contact/tr-TR.xml index 072c3fbd3f..c823ec643a 100644 --- a/translation/dest/contact/tr-TR.xml +++ b/translation/dest/contact/tr-TR.xml @@ -52,6 +52,7 @@ Eğer rakipte şah dışında herhangi bir taş var ise, yalnızca at ve ya fil ile mat edilebilir. Maçtan oyun puanı kazanmadım Puanlı bir oyun oynadığınızdan emin olun. Puansız oyunlar oyun puanınızı etkilemez. + Bir bot hesaba karşı oynarken belirli durumlarda, eğer oyuncunun botu derecelendirme puanları için kötüye kullandığı tespit edilirse dereceli oyun puan vermeyebilir. Hata sayfası Bir hata mesajı alırsanız lütfen bize bildirin: Yasaklamaya itiraz et diff --git a/translation/dest/coordinates/fi-FI.xml b/translation/dest/coordinates/fi-FI.xml index 7d98c3a041..bd686fd914 100644 --- a/translation/dest/coordinates/fi-FI.xml +++ b/translation/dest/coordinates/fi-FI.xml @@ -6,7 +6,7 @@ Keskimääräinen tulos mustana: %s Shakkilaudan koordinaattien hallinta on erittäin tärkeä kyky shakinpelaajalle: Useimmilla shakkikursseilla ja harjoitteissa algebrallinen merkintätapa vilisee siellä ja täällä. - On helpompaa keskustella shakista, kun molemmat ymmärtävät \"shakin kieltä\". + Keskusteleminen shakkikavereidesi kanssa helpottuu, kun ymmärrätte puolin ja toisin \"shakin kieltä\". Peliä voi analysoida tehokkaammin, kun ei tarvitse haeskella ruutujen nimiä. Ruudun nimi ilmestyy laudalle ja sinun on klikattava oikeaa ruutua. Sinulla on 30 sekuntia aikaa tunnistaa niin monta ruutua kuin ehdit! Aloita harjoitus diff --git a/translation/dest/faq/ca-ES.xml b/translation/dest/faq/ca-ES.xml index 3faa2451bd..cd697db912 100644 --- a/translation/dest/faq/ca-ES.xml +++ b/translation/dest/faq/ca-ES.xml @@ -73,8 +73,7 @@ Veure el capítol de %3$s sobre aquest moviment per practicar-lo. configurar Comptes Quins títols hi ha a Lichess? - Lichess reconeix tots els títols FIDE obtinguts OTB (sobre el tauler), així com %1$s. -Aquí hi ha una llista de títols FIDE: + Lichess reconeix tots els títols FIDE obtinguts OTB (sobre el tauler), així com %1$s. Aquí hi ha una llista de títols FIDE: Si tens un títol OTB, pots sol·licitar que es mostri en la teva compta completant el %1$s, incloent una imatge clara d\'un document/targeta d\'identificació i una foto teva portant el document/targeta. La verificació com a jugador titulat a Lichess dóna accés a jugar en els esdeveniments d\'Arena per a titulats. @@ -130,8 +129,7 @@ Un altre punt que cal destacar és que, al passar el temps, l\'interval de confi Habilita el mode Zen a les %1$s o prement %2$s durant una partida. preferències de visualització He perdut una partida degut a un retard/desconnexió. Puc recuperar els meus punts? - Desafortunadament, no podem retornar punts en les partides perdudes degut al retard de la xarxa o per desconnexió, independentment de si el problema era teu o nostre. -L\'últim cas cal dir que és molt estrany. També cal tenir en compte que quan Lichess es reinicia i perds per temps per aquest motiu, avortem la partida per prevenir una pèrdua injusta. + Desafortunadament, no podem retornar punts en les partides perdudes degut al retard de la xarxa o per desconnexió, independentment de si el problema era teu o nostre. L\'últim cas cal dir que és molt estrany. També cal tenir en compte que quan Lichess es reinicia i perds per temps per aquest motiu, avortem la partida per prevenir una pèrdua injusta. Com... Activar o desactivar les notificacions emergents? Veure finestra emergent d\'informació del lloc diff --git a/translation/dest/faq/da-DK.xml b/translation/dest/faq/da-DK.xml index 93c0ccb595..558bd784b2 100644 --- a/translation/dest/faq/da-DK.xml +++ b/translation/dest/faq/da-DK.xml @@ -21,7 +21,7 @@ Et minut efter en spiller får en anmærkning, bliver deres 40 seneste ratede sejre i løbet af de sidste 3 dage inddraget. Hvis du var deres modstander i de partier og din rating ikke var provisorisk, vil du få en rating-refundering. Størrelsen på refunderingen afgøres af din højeste rating og din rating-udvikling efter partiet. (Hvis for eksempel din rating steg markant efter de partier, får du måske ingen refundering eller kun en delvis refundering.) En refundering vil aldrig være på mere end 150 point. Hvad gøres der ved spillere, som forlader partier uden at opgive? - Hvis din modstander ofte afbryder / forlader spil, får de \"spilforbud\", hvilket betyder, at de får et midlertidigt forbud mod at spille. Dette er ikke offentliggjort på deres profil. Hvis denne opførsel fortsætter, øges spilleforbuddets længde - og en vedvarende opførsel af denne art kan føre til lukning af kontoen. + Hvis din modstander ofte afbryder / forlader spil, får de \"spilforbud\", hvilket betyder, at de får et midlertidigt forbud mod at spille. Dette er ikke offentliggjort på deres profil. Hvis denne opførsel fortsætter, forlænges spilleforbuddet - og en vedvarende opførsel af denne art kan føre til lukning af kontoen. Hvordan kan jeg blive moderator? Det er ikke muligt at ansøge om at blive moderator. Hvis vi ser nogen, som vi tror ville være en god moderator, vil du kontakte dem direkte. Er korrespondance anderledes end normal skak? @@ -73,8 +73,7 @@ Tjek %3$s for dette træk og for at øve det. konfigurér Konti Hvilke titler er der på Lichess? - Lichess anerkender alle FIDE-titler opnået OTB (over brættet) spil, såvel som %1$s. -Her er en liste over FIDE-titler: + Lichess anerkender alle FIDE-titler opnået OTB (over brættet) spil, såvel som %1$s. Her er en liste over FIDE-titler: Hvis du har en OTB-title, kan du anmode om at få denne vist på din konto ved at udfylde en %1$s, inklusiv et tydeligt billede af et identificerende dokument/kort og en selfie af dig, som holder dokumentet/kortet. Verificering som titulær spiller på Lichess giver adgang til at spille ved Titled Arena-begivenheder. diff --git a/translation/dest/learn/cs-CZ.xml b/translation/dest/learn/cs-CZ.xml index 8606b7f697..b99b93fb6d 100644 --- a/translation/dest/learn/cs-CZ.xml +++ b/translation/dest/learn/cs-CZ.xml @@ -147,6 +147,12 @@ Král má nevyčíslitelnou hodnotu! Ztráta krále znamená prohru partie.Vyberte figuru s nejvyšší hodnotou! Dáma > Střelec + Vyberte figuru s nejvyšší hodnotou! + Nevyměňujte + figuru s vyšší hodnotou za figuru s menší hodnotou. + Vyberte figuru +s nejvyšší hodnotou! +Ujistěte se, že je váš tah legální! Vyberte figuru s nejvyšší hodnotou! Blahopřejeme! Nyní znáte hodnotu materiálu! Dáma = 9 diff --git a/translation/dest/learn/de-CH.xml b/translation/dest/learn/de-CH.xml index dd631c14af..a2ba8bd879 100644 --- a/translation/dest/learn/de-CH.xml +++ b/translation/dest/learn/de-CH.xml @@ -135,9 +135,9 @@ wänn sich din Puur uf dä 5. Reihä befindät. - Schwarz kann sich nicht bewegen - Es wird kein Schach geboten. Herzlichen Glückwunsch! Lieber Patt als Matt! - Fortgeschritten + Fortgschrittä Figuräwert - Bewerti d\'stärchi vo de Figuren + Bewärt d\'Stärchi vo dä Figurä Figurä mit meh Zugmöglichkeitä besitzäd än höcherä Wärt! Mä chan sich das so verbildlichä, dass diä mit höchärä Zahlä Oschtschwiizer sind. Damä = 9 Turm = 5 @@ -171,14 +171,14 @@ Puur = 1 Bechum äs chostäloses Benutzerkonto bi Lichess Üäbä Hüüfigi Motiiv lärnä - Uufgabä - Trainiere deine taktischen Fähigkeiten + Ufgoobä + Träniär dini taktischä Fähigkeitä Filmli - Sieh dir lehrreiche Schachvideos an + Luäg dir lehrriichi Schachfilmli aa Online schpilä - Gegner aus der ganzen Welt + Gegner us dä ganzä Wält Computerschach - Fordere den Computer heraus + Fordärä dä Kompi usä Los geht\'s! Level %s Super! diff --git a/translation/dest/learn/et-EE.xml b/translation/dest/learn/et-EE.xml index 638378e0c4..0dd5d9e8f8 100644 --- a/translation/dest/learn/et-EE.xml +++ b/translation/dest/learn/et-EE.xml @@ -152,7 +152,7 @@ Blokeeri ruut, siis mine lossi! lossi kuninga poolele! Leia tee lossi kuninganna poolele! Palju õnne! Sa peaks peaaegu alati vangerdama. - Kõrvalmärkusena + En passant Eriline etturi liigutus Kui vastase ettur on liikunud kahe ruudu võrra, siis sa saad seda kui ühe ruuduna võtta. Must liikus etturiga diff --git a/translation/dest/learn/he-IL.xml b/translation/dest/learn/he-IL.xml index 07b3ec382b..b13635e28c 100644 --- a/translation/dest/learn/he-IL.xml +++ b/translation/dest/learn/he-IL.xml @@ -143,6 +143,7 @@ רגלי = 1 המלך לא יסולא בפז! הפסדת המלך משמעותה הפסדת המשחק. עדיף לקחת מהיריב כלים יותר חזקים! מלכה > רץ + קח את הכלי עם הערך הגבוה ביותר! וודא שהמהלך שלך חוקי! קח את הכלי החזק יותר! יפה, אתה מכיר את הערך של הכלים! מלכה=9, diff --git a/translation/dest/patron/cs-CZ.xml b/translation/dest/patron/cs-CZ.xml index f081ad31b1..adda3ed845 100644 --- a/translation/dest/patron/cs-CZ.xml +++ b/translation/dest/patron/cs-CZ.xml @@ -9,7 +9,7 @@ Šachy zdarma pro všechny, navždy! Žádné reklamy, žádné předplatné, ale otevřený kód a vášeň. Děkujeme za váš příspěvek! - Máte doživotní Patron účet. To je docela úžasné! + You have a Lifetime Patron account. That\'s pretty awesome! Máte Patron účet do %s. Pokud nedojde k obnoveni, budete sníženi na variantu zdarma. Jsme neziskovým sdružením, protože jsme přesvědčeni, že každý by měl mít přístup k bezplatné, prvotřídní šachové platformě. @@ -22,6 +22,7 @@ Jednorázově Jediný příspěvek, který vám poskytne křídla Patrona na jeden měsíc. Ostatní + Please enter an amount in %s Platební karta PayPal Jsme malý tým, takže vaše podpora dělá velké změny! @@ -55,6 +56,7 @@ Patroni se však blýsknou novou cool ikonou profilu. Další platba Bude vám účtováno %1$s dne %2$s. Poskytnout nyní další příspěvek + Darujte křídla někomu jinému Aktualizovat Změnit měsíční částku (%s) zrušit svou podporu diff --git a/translation/dest/patron/de-CH.xml b/translation/dest/patron/de-CH.xml index 6e4fb6a8d0..1ba383b8a2 100644 --- a/translation/dest/patron/de-CH.xml +++ b/translation/dest/patron/de-CH.xml @@ -10,13 +10,13 @@ %1$s underschtützt Lichess sit %2$s Monät als Patroon Neui Patroons - Kostenloses Schach für alle, für immer! + Choschtälosäs Schach für alli, für immer! Keine Werbung, keine Abonnements; aber quelloffen und mit Leidenschaft. Vielen Dank für die Spende! Du bsitzisch äs läbänslangs Underschtützerkonto. Das isch schlichtwäg grossartig! Du bsitzisch äs Patroonkonto bis %s. Falls nicht erneuert, wird dein Konto zu einem kostenlosen herabgestuft. - Wir sind eine Non-Profit-Organisation, denn wir glauben daran, dass jeder Zugang zu einer kostenlosen Schachplattform von Weltklasse haben sollte. + Mir sind ä Non-Profit-Organisation, will mir dra glaubäd, dass alli än Zuägang zunärä choschtälosä Schachplattform vo Wältklass ha söttäd. Mir sind uf Underschtützig vo Lüüt wi dir aagwisä, um das möglich z\'machä. Falls dir Lichess gfallt, chasch du Lichess underschtützä, indäm du schpändisch und än Patroon wirsch! Lebenslang Zall eimalig %s. Wird für immer Lichess Patroon! diff --git a/translation/dest/patron/es-ES.xml b/translation/dest/patron/es-ES.xml index 6bcb8b2500..197d681af2 100644 --- a/translation/dest/patron/es-ES.xml +++ b/translation/dest/patron/es-ES.xml @@ -19,7 +19,7 @@ Somos una organización sin ánimo de lucro porque creemos que todos deberíamos tener acceso a una plataforma de ajedrez de primera clase y gratuita. Lo hacemos posible gracias al apoyo de gente como tú. Si te gusta Lichess, por favor ¡considera apoyarnos donando y convirtiéndote en patrón! De por vida - Paga %s una vez. ¡Sé un patrón de Lichess para siempre! + Pay %s once. Be a Lichess Patron forever! Patrón de Lichess de por vida Mensual Facturación recurrente, renovando tus alas de patrón cada mes. @@ -52,27 +52,27 @@ Sin embargo, los patrones obtienen derecho a presumir de su nuevo icono de perfi Patrón de Lichess por un mes Patrón de Lichess por %s meses - Apoyas a lichess.org con %s al mes. - ¡Muchas gracias por tu apoyo! ¡Eres genial! - Estado actual - Próximo pago - Se te cobrará %1$s el %2$s. - Haz una donación adicional ahora - Regalar alas de patrocinador a un jugador - Actualizar - Cambiar la cantidad mensual (%s) - cancela tu apoyo - %1$s o %2$s + You support lichess.org with %s per month. + Thank you very much for your help. You rock! + Current status + Next payment + You will be charged %1$s on %2$s. + Make an additional donation + Gift Patron wings to a player + Update + Change the monthly amount (%s) + cancel your support + %1$s or %2$s Decide cuanto vale Lichess para ti: Retira tu tarjeta de crédito y detén los pagos: - Ya no apoyas a Lichess + No longer support Lichess Ver otros Patrones de Lichess - Fecha - Cantidad - La transacción ha sido completada y el recibo de la donación se te ha enviado por correo electrónico. + Date + Amount + Your transaction has been completed, and a receipt for your donation has been emailed to you. Ahora tienes una cuenta de Patrón permanente. ¡Échale un vistazo a tu página de perfil! ¡Ahora eres un Patrón de Lichess de por vida! ¡Ahora eres un Patrón de Lichess por un mes! - En un mes, NO se te cobrará de nuevo, y tu cuenta de Lichess será reducida a la versión normal. + In one month, you will NOT be charged again, and your Lichess account will revert to a regular account. diff --git a/translation/dest/patron/ko-KR.xml b/translation/dest/patron/ko-KR.xml index c4562325e4..2430cdd9ac 100644 --- a/translation/dest/patron/ko-KR.xml +++ b/translation/dest/patron/ko-KR.xml @@ -25,6 +25,7 @@ 한번 일회성 기부는 한 달 동안 후원자 날개를 달아줍니다. 기타 + 금액을 %s로 입력해주세요 신용카드 페이팔 우리는 작은 팀이기 때문에 당신의 지원이 큰 차이를 만듭니다! @@ -55,6 +56,7 @@ 다음 결제일 %1$s가 %2$s에 결제될 예정입니다. 지금 추가 기부하기 + 후원자 날개를 선물하기 업데이트 월 금액 변경(%s) 지원 취소 diff --git a/translation/dest/patron/sv-SE.xml b/translation/dest/patron/sv-SE.xml index bbfb53a286..e22a67eb60 100644 --- a/translation/dest/patron/sv-SE.xml +++ b/translation/dest/patron/sv-SE.xml @@ -3,26 +3,26 @@ Donera Lichess-donator Gratis konto - Bli en Lichess beskyddare - %s blev en Lichess beskyddare + Bli en Lichess Patron + %s blev en Lichess Patron - %1$s är en Lichess-donator i %2$s månad - %1$s är en Lichess-donator i %2$s månader + %1$s är en Lichess Patron i %2$s månad + %1$s är en Lichess Patron i %2$s månader - Nya beskyddare (Patrons) + Nya Patroner Gratis schack för alla, för evigt! Inga annonser, inga prenumerationer; men öppen källkod och passion. Tack för din gåva! - Du har ett livstids beskyddare konto. Det är respekt! - Du har ett beskyddarkonto till %s. + Du har ett livstids Patron-konto. Det är ganska häftigt! + Du har ett Patron-konto till %s. Om det inte förnyas kommer du sedan nedgraderas till fri. Vi är en ideell förening eftersom vi anser att alla bör ha tillgång till en gratis schackplattform i världsklass. Vi förlitar oss på stöd från personer som du för att göra detta möjligt. Om du tycker om att använda Lichess, vänligen överväg att stödja oss genom att donera och bli beskyddare! Livstid - Betala %s en gång. Var en Lichess beskyddare för evigt! - Livstids Lichess beskyddare + Betala %s en gång. Var en Lichess Patron för evigt! + Livstids Lichess Patron Månadsvis - Återkommande fakturering, förnya dina beskyddare vingar varje månad. + Återkommande fakturering, förnya dina Patron-vingar varje månad. En gång En enda donation som ger dig Beskyddar-vingar i en månad. Annat @@ -30,7 +30,7 @@ Kreditkort PayPal Vi är ett litet team, så ditt stöd gör en enorm skillnad! - Dessa hyllade beskyddare som gör Lichess möjligt + De berömda Patronerna som gör Lichess möjligt Vart går pengarna? Först och främst till kraftfulla servrar. Sedan betalar vi en heltidsutvecklare: %s, grundaren av Lichess. @@ -49,15 +49,16 @@ Eller så kan du %s. Men beskyddare får skryta med rätten till en cool ny profilikon. Se den detaljerade jämförelsen av funktioner - Lichess beskyddare i en månad - Lichess beskyddare i %s månader + Lichess Patron i en månad + Lichess Patron i %s månader Du stödjer lichess.org med %s per månad. - Tack så mycket för din hjälp. Du äger! + Tack så mycket för din hjälp. Du är bäst! Nuvarande status Nästa betalning Du kommer att debiteras %1$s den %2$s. Gör ytterligare en donation nu + Skänk Patron-vingar till en spelare Uppdatera Ändra månadsbeloppet (%s) avbryt ditt stöd diff --git a/translation/dest/patron/uk-UA.xml b/translation/dest/patron/uk-UA.xml index 24f9d43c8a..460abb40cc 100644 --- a/translation/dest/patron/uk-UA.xml +++ b/translation/dest/patron/uk-UA.xml @@ -55,6 +55,7 @@ Наступний платіж З %2$s буде знято %1$s. Зробити додатковий внесок зараз + Подарувати крила Покровителя гравцю Оновити Змінити місячну суму (%s) скасувати підтримку diff --git a/translation/dest/perfStat/cs-CZ.xml b/translation/dest/perfStat/cs-CZ.xml index ef8dfef70d..824b8a9a83 100644 --- a/translation/dest/perfStat/cs-CZ.xml +++ b/translation/dest/perfStat/cs-CZ.xml @@ -6,6 +6,7 @@ Nebyl odebrán dostatečný počet hodnocených her pro odhad spolehlivého ratingu. Pokrok v posledních %s hrách: Odchylka hodnocení: %s. + Nižší hodnota znamená, že je hodnocení stabilnější. Nad %1$s je hodnocení považováno za prozatímní. Pro zahrnutí do žebříčku by tato hodnota měla být nižší než %2$s (standartní šachy) nebo %3$s (varianty). Celkový počet her Hodnocených her Turnajové partie diff --git a/translation/dest/perfStat/fi-FI.xml b/translation/dest/perfStat/fi-FI.xml index 22a1537700..df6f4b3ec9 100644 --- a/translation/dest/perfStat/fi-FI.xml +++ b/translation/dest/perfStat/fi-FI.xml @@ -10,7 +10,7 @@ Pelejä yhteensä Pisteytettyjä pelejä Turnauspelejä - Berserk-pelejä + Berserkkipelejä Pelaamiseen käytetty aika Keskimääräinen vastustaja Voittoja diff --git a/translation/dest/perfStat/pt-PT.xml b/translation/dest/perfStat/pt-PT.xml index ab6e198440..742b46bc68 100644 --- a/translation/dest/perfStat/pt-PT.xml +++ b/translation/dest/perfStat/pt-PT.xml @@ -3,11 +3,12 @@ Estatísticas de %s Ver as partidas provisório - Não foi jogado um número suficiente de partidas a valer pontos para estabelecer uma pontuação de confiança. + Não foi jogado um número suficiente de partidas a pontuar para estabelecer uma pontuação de confiança. Progresso nas últimas %s partidas: Desvio da pontuação: %s. + Um valor inferior significa que a classificação é mais estável. Acima de %1$s, a classificação é considerada provisória. Para ser incluído nas classificações, esse valor deve estar abaixo de %2$s (xadrez padrão) ou %3$s (variantes). Total de partidas - Total de partidas a valer pontos + Total de partidas a pontuar Partidas em torneios Partidas no modo frenético Tempo passado a jogar @@ -23,10 +24,10 @@ Derrotas consecutivas Sequência mais longa: %s Sequência atual: %s - Melhores vitórias a valer pontos - Piores derrotas a valer pontos + Melhores vitórias a pontuar + Piores derrotas a pontuar Partidas jogadas de seguida - Menos que uma hora entre partidas + Menos de uma hora entre partidas Tempo máximo passado a jogar agora diff --git a/translation/dest/preferences/da-DK.xml b/translation/dest/preferences/da-DK.xml index dcd2db3846..7015a7288c 100644 --- a/translation/dest/preferences/da-DK.xml +++ b/translation/dest/preferences/da-DK.xml @@ -10,7 +10,7 @@ Trækliste mens der spilles Notation Skakbrik-symbol - Bogstaver (K, Q, R, B, N) + Bogstaver (K, Q, R, B, N) Zentilstand Vis brætstørrelse justering Kun ved indledende position @@ -42,6 +42,6 @@ Flyt kongen over på tårn Lav træk med tastaturet Marker lovlige træk med pile - Sig \"Godt spil, godt spillet\" ved nederlag eller remis + Sig \"Good game, well played\" (Godt parti, godt spillet) ved nederlag eller remis Dine præferencer er blevet gemt. diff --git a/translation/dest/puzzle/cs-CZ.xml b/translation/dest/puzzle/cs-CZ.xml index 5c0a3d9c9c..09ba492b3c 100644 --- a/translation/dest/puzzle/cs-CZ.xml +++ b/translation/dest/puzzle/cs-CZ.xml @@ -57,4 +57,7 @@ Přeskočit tento krok pro zachování své série! Funguje pouze jednou za běh. Pokračovat v sérii Nová série + Z mých partií + 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! diff --git a/translation/dest/puzzle/da-DK.xml b/translation/dest/puzzle/da-DK.xml index a92aa7d042..41c405add5 100644 --- a/translation/dest/puzzle/da-DK.xml +++ b/translation/dest/puzzle/da-DK.xml @@ -68,6 +68,6 @@ Opgaver fra %s\' partier Søg opgaver Du har ingen opgaver i databasen, men Lichess elsker dig alligevel. -Spil hurtige og klassiske partier for at forøge chancerne for at en af dine opgave tilføjes! +Spil hurtige (rapid) og klassiske (classical) partier for at forøge chancerne for at en af dine opgave tilføjes! %1$s opgaver fundet i %2$s partier diff --git a/translation/dest/puzzle/de-CH.xml b/translation/dest/puzzle/de-CH.xml index d2f99771d9..dacfe64a17 100644 --- a/translation/dest/puzzle/de-CH.xml +++ b/translation/dest/puzzle/de-CH.xml @@ -5,7 +5,7 @@ Empfohlä Phasä Motiv - Fortgeschritten + Fortgschrittä Längen Matts Ziele @@ -16,7 +16,7 @@ Dini Taktikwärtig: %s Find dä beschte Zug für Wiis. Finde den besten Zug für Schwarz. - Um personalisierte Aufgaben zu erhalten: + Zum personalisiärti Ufgoobä z\'bechoo: Aufgabe %s Ufgoob vom Tag Zum Lösen klicken @@ -28,12 +28,12 @@ Das ist nicht der Zug! Versuche etwas anderes. Wertung: %s - versteckt + verschteckt %s mal gespielt %s mal gespielt - Aus der Partie %s + Us dä Partii %s Training fortsetzen Schwierigkeitsgrad Normal @@ -51,16 +51,16 @@ Beispiel Ein weiteres Motiv hinzufügen - Sofort zur nächsten Aufgabe springen + Sofort zur nöchschtä Ufgoob gumpä Ufgoobäübersicht Värbessärigsbereich Stärken Ufoobäverlauf gelöst fehlgeschlagen - Löse schwieriger werdende Aufgaben und baue eine Erfolgsserie auf. Es gibt keine Uhr, also nimm dir Zeit. Ein falscher Zug und es ist vorbei! Du kannst jedoch einen Zug pro Sitzung überspringen. - Deine Siegesserie: %s - Überspringe diesen Zug, um deine Erfolgsserie beizubehalten! Du kannst das nur einmal pro Durchlauf machen. + Lös schwiriger wärdändi Ufgoobä und bau än Erfolgsschträhnä uf. Äs git kei Uhr, also nimm\'der Ziit. Än falschä Zug und äs isch vorbei! Du chasch aber ein Zug pro Sitzig überschpringä. + Dini Siegesschträhnä: %s + Überschpring dä Zug, zum dini Erfolgsschträhnä biizbhaltä! Du chasch das nur eimol pro Durchlauf machä. Erfolgsserie fortsetzen Neue Erfolgsserie Aus meinen Partien diff --git a/translation/dest/puzzleTheme/bg-BG.xml b/translation/dest/puzzleTheme/bg-BG.xml index d1533efe55..95ccccf6ca 100644 --- a/translation/dest/puzzleTheme/bg-BG.xml +++ b/translation/dest/puzzleTheme/bg-BG.xml @@ -51,9 +51,9 @@ Дълга задача Победа в три хода. Майсторски Игри - Задачи от партии играни от титуловани играчи. + Задачи от партии играни от титулувани играчи. Партии Майстор срещу Майстор - Задачи от партии играни от титуловани играчи. + Задачи от партии между двама титулувани играчи. Матове Победи със стил. Мат в 1 ход diff --git a/translation/dest/puzzleTheme/cs-CZ.xml b/translation/dest/puzzleTheme/cs-CZ.xml index 513158288e..b6704154fc 100644 --- a/translation/dest/puzzleTheme/cs-CZ.xml +++ b/translation/dest/puzzleTheme/cs-CZ.xml @@ -38,6 +38,7 @@ Koncovka Taktický obrat během poslední fáze hry. Ohrožený král + Taktika zahrnují krále s pár obránci okolo něj, obvykle vedoucí k matu. Vidlička Tah, kterým tažená figura útočí na dvě protivníkovy figury najednou. Visící figura @@ -91,6 +92,7 @@ Taktika zahrnující krátkodobé vzdání materiálu, s cílem získat opět výhodu po vynucené sekvenci tahů. Krátká úloha Dva tahy do výhry. + Motiv zahrnující útok na figuru vyšší hodnoty, která útoku uhne, ale dovolí tak útok nebo sebrání figury nižší hodnoty za ní, opak vazby. Dušený mat Úlohy Super GM Hádanky z her hraných nejlepšími hráči na světě. diff --git a/translation/dest/puzzleTheme/eo-UY.xml b/translation/dest/puzzleTheme/eo-UY.xml index 642e3853e1..ddf5584d29 100644 --- a/translation/dest/puzzleTheme/eo-UY.xml +++ b/translation/dest/puzzleTheme/eo-UY.xml @@ -1,30 +1,50 @@ + Antaŭenigita peono Avantaĝo + Anastasia ŝakmato + Araba ŝakmato Atako al f2 aŭ f7 + Altiro Kuriera finludo + Finludo nur kun kurieroj kaj peonoj. + Boden ŝakmato Aroko Kapti la defendanton + Aplomba + Duokuriera ŝakmato Egaligi Atako al la reĝa flanko + Senigo Defenda movo + Devio Malkovrita atako Duobla ŝako Finludo + Taktiko dum la lasta fazo de la ludo. Neprotektita reĝo Forko + Pendanta ŝakpeco + Hoka ŝakmato Interfero + Intermeza movo Ĉevala finludo + Finludo nur kun ĉevaloj kaj peonoj. Longa puzlo Tri movoj por venki. Majstraj ludoj Majstro kontraŭ Majtro ludoj Puzloj el ludoj inter du titolitaj ŝakistoj. Mato + Gajni la ludon stile. Mato en 1 + Liveri ŝakmaton en unu movo. Mato en 2 + Liveri ŝakmaton en du movoj. Mato en 3 + Liveri ŝakmaton en tri movoj. Mato en 4 + Liveri ŝakmaton en kvar movoj. Mato en 5 aŭ pli Mezludo Unumova puzlo @@ -38,7 +58,9 @@ Ofero Mallonga puzlo Du movoj por venki. + Kaptita ŝakpeco Damigi al ĉevalo, kuriero aŭ turo. Tre longa puzlo Kvar aŭ pliaj movoj por venki. + X-radia atako diff --git a/translation/dest/search/uk-UA.xml b/translation/dest/search/uk-UA.xml index 193b718d2b..91b963c40d 100644 --- a/translation/dest/search/uk-UA.xml +++ b/translation/dest/search/uk-UA.xml @@ -28,4 +28,9 @@ Підбирати за Аналіз Лише ігри з комп\'ютерним аналізом + Колір + Оцінка + Максимальне число + Включити + Згенерувати URL diff --git a/translation/dest/search/zh-TW.xml b/translation/dest/search/zh-TW.xml index 0888d7d670..15a43d78f8 100644 --- a/translation/dest/search/zh-TW.xml +++ b/translation/dest/search/zh-TW.xml @@ -15,7 +15,7 @@ 不管您的對手是電腦或是其他玩家 A.I等級 來源 - 回和數 + 回合數 結果 獲勝方棋子顏色 日期 @@ -24,8 +24,8 @@ 僅可進行有電腦分析的遊戲 顏色 評估 - 最大值 + 最大值 回傳的最大場數 - 包含 + 包含 產生網址 diff --git a/translation/dest/settings/pt-PT.xml b/translation/dest/settings/pt-PT.xml index fbcb6633ac..43a0f8da64 100644 --- a/translation/dest/settings/pt-PT.xml +++ b/translation/dest/settings/pt-PT.xml @@ -3,8 +3,8 @@ Configurações Encerrar a conta O encerramento é definitivo. Não podes voltar atrás. Tens a certeza? - Não poderás criar uma nova conta com o mesmo nome, mesmo que as maiúsculas ou minúsculas sejam diferentes. - Mudei de ideias, não encerre a minha conta + Não poderá criar uma nova conta com o mesmo nome, mesmo que as maiúsculas ou minúsculas sejam diferentes. + Mudei de ideias, não encerrem a minha conta Tens a certeza que queres encerrar sua conta? Encerrar a tua conta é uma decisão permanente. Tu NUNCA MAIS serás capaz de iniciar sessão nesta conta. Esta conta foi encerrada diff --git a/translation/dest/site/bg-BG.xml b/translation/dest/site/bg-BG.xml index 2e3662e785..7f78284272 100644 --- a/translation/dest/site/bg-BG.xml +++ b/translation/dest/site/bg-BG.xml @@ -693,7 +693,6 @@ Включване на детски режим Изключване на детски режим Сигурност - Това е списъкът на устройствата, които са логнати във вашия акаунт. Отменете всички сесии, които не разпознавате. Сесии отмени всички сесии Играй шах навсякъде @@ -870,4 +869,14 @@ Lichess е благотворителна организация и работи с напълно безплатен софтуер и отворен код. Всички разходи за опериране, разработка и съдържание са финансирани единствено от дарения от потребителите ни. Настройки за треньори Настройки за стриймъри + Отмени турнира + Описание на турнира + Игрите са с рейтинг и влияят на рейтинга на играчите + Само членове на отбора + Без ограничение + Минимален брой игри с рейтинг + Минимален рейтинг + Максимален седмичен рейтинг + Само титулувани играчи + Изискване на официална титла за участие в турнира diff --git a/translation/dest/site/bn-BD.xml b/translation/dest/site/bn-BD.xml index e8e73c7a18..4baf89d2d9 100644 --- a/translation/dest/site/bn-BD.xml +++ b/translation/dest/site/bn-BD.xml @@ -693,7 +693,6 @@ বাচ্চা ধরন সক্রিয় করুন বাচ্চা ধরন নিষ্ক্রিয় করুন নিরাপত্তা - এটা হয় ডিভাইসগুলির একটি তালিকা যা আপনার একাউন্টের সাথে লগইন আছে. বাতিল করুন সেই সেশন গুলো যা আপনি চেনেন না. সকল সেশন বাতিল করুন দাবা খেলুন সব জায়গায় যেমন লিচাস মুক্ত হিসাবে diff --git a/translation/dest/site/ca-ES.xml b/translation/dest/site/ca-ES.xml index 49d98c5671..2832dbee38 100644 --- a/translation/dest/site/ca-ES.xml +++ b/translation/dest/site/ca-ES.xml @@ -692,6 +692,7 @@ Activar el mode de nen Desactivar el mode de nen Seguretat + Sessions tancar totes les sessions Jugueu a escacs a qualsevol lloc Tan lliure com lichess @@ -866,4 +867,9 @@ Benvinguts! Lichess és una entitat sense ànim de lucre i un programari totalment lliure i de codi obert. Les despeses de funcionament, desenvolupament i continguts es financen exclusivament amb donacions d\'usuaris. + Cancel-lar el torneig + Descripció del torneig + Només membres de l\'equip + Sense restriccions + Es necessita un títol oficial per entrar en el torneig diff --git a/translation/dest/site/cs-CZ.xml b/translation/dest/site/cs-CZ.xml index 6f0a9fc57a..f06ff084f9 100644 --- a/translation/dest/site/cs-CZ.xml +++ b/translation/dest/site/cs-CZ.xml @@ -516,6 +516,7 @@ Jméno Příjmení O mně + Země nebo vlajka Děkujeme! Odkazy na sociální sítě Notace v řádcích @@ -748,8 +749,10 @@ PDF pro tisk Výsledky K pohybu v partii můžete také použít scrollovací kolečko myši nad šachovnicí. + Najetím na varianty počítače zobrazíte jejich náhled. Kliknutím se shiftem či kliknutím pravým tlačítkem lze kreslit do šachovnice kolečka a šipky. Povolit zprávy od ostatních hráčů + Dostat oznámení, pokud jste zmíněni ve fóru Sdílejte výsledky analýzy vašeho hraní S nikým S přáteli @@ -939,4 +942,8 @@ Vráceno %1$s %2$s ratingových bodů. Čas vám běží! [Klikněte pro zobrazení e-mailové adresy] + Stáhnout + Vítej! + Lichess je bezplatný a zcela svobodný/nezávislý open source software. +Veškeré provozní náklady, vývoj a obsah jsou financovány výhradně z příspěvků uživatelů. diff --git a/translation/dest/site/da-DK.xml b/translation/dest/site/da-DK.xml index 118679aa72..5ccb495af1 100644 --- a/translation/dest/site/da-DK.xml +++ b/translation/dest/site/da-DK.xml @@ -2,7 +2,7 @@ Spil mod en ven Spil mod computeren - Invitér en til at spille ved at give denne URL + Invitér en til at spille ved at oplyse denne URL Spillet er slut Venter på modstander Venter @@ -40,7 +40,7 @@ Din modstander har forladt spillet. Du kan kræve sejr om %s sekunder. Din modstander har forladt spillet. Du kan fremtvinge modstanderens kapitulation eller vente. - Tving din modstander til at opgive + Tving din modstander til at kapitulere Kræv sejr Fremtving remis Hold en venlig tone i chatten! @@ -58,7 +58,7 @@ Analysebræt Dybde %s Ved brug af serveranalyse - Indlæser engine ... + Indlæser skakmotor ... Cloud-analyse Analysér dybere Vis trussel @@ -137,8 +137,8 @@ Tilbyd remis Remis - %s spiller online - %s spillere online + %s spiller + %s spillere Igangværende partier @@ -335,13 +335,13 @@ Skal være en del af hold %s Du er ikke på holdet %s Tilbage til partiet - Gratis online skakspil. Spil skak med det samme i et rent design. Ingen registrering, ingen reklamer, ingen plugins nødvendige. Spil skak mod computeren, venner eller tilfældige modstandere. + Gratis online skakserver. Spil skak med et rent design. Ingen registrering, ingen reklamer, ingen plugins nødvendige. Spil skak mod computeren, venner eller tilfældige modstandere. %1$s blev medlem af %2$s %1$s oprettede holdet %2$s %s begyndte at streame Gennemsnitlig rating Sted - Filtrér spil + Filtrér partier Nulstil Anvend Gem @@ -463,7 +463,7 @@ Online spillere Aktiv i dag Aktive spillere - Bemærk: Spillet er ratet, men er uden tidsbegrænsning! + Bemærk: Partiet er ratet, men er uden tidsbegrænsning! Fuldført %s parti i gang @@ -557,7 +557,7 @@ Maximum: %s tegn. - %s blokerede spillere + %s blokeret spiller %s blokerede spillere Vis spillere du har blokeret @@ -571,7 +571,7 @@ Du er blevet logget ud Du er nu logget ind Spil offline, brug som bræt - Spil computer offline + Computer Modstander Lær Studie @@ -608,7 +608,7 @@ Streamere Mobil App Webmasters - Om os + Om Om %s %1$s er en gratis (%2$s), libre, annoncefri, open source skak-server. virkelig @@ -646,7 +646,7 @@ Start/slut variation Ny turnering Skakturnering med forskellige tidskontroller og varianter - Spil tempofyldte skakturneringer! Meld dig til en officielt organiseret turnering eller opret din egen. Bullet, Blitz, Klassisk, Chess960, King of the Hill, Tre-check og andre muligheder for ubegrænset skaksjov. + Spil tempofyldte skakturneringer! Meld dig til en officielt organiseret turnering eller opret din egen. Bullet, Blitz, Classical, Chess960, King of the Hill, Tre-check og andre muligheder for ubegrænset skaksjov. Turnering ikke fundet Denne turnering eksisterer ikke. Den kan være blevet aflyst, hvis alle spillere forlod den før turneringsstart. @@ -676,7 +676,7 @@ Download importeret Print-venlig PDF Korstabel - Du kan også rulle over bord for at bevæge sig i spillet. + Du kan også scrolle frem til et træk i partiet. Scroll over computer variationer for at få en forhåndsvisning af dem. Tryk shift + klik eller højreklik for at tegne cirkler og pile på brættet. Lad andre spillere sende en besked til dig @@ -687,7 +687,7 @@ Med alle Du har allerede registreret Email adressen: %s Børnetilstand - Dette angår sikkerhed. I børnetilstand er alt kommunikation deaktiveret. Aktivér hvis du vil beskytte dine børn eller skolebørn fra at kunne kommunikere med andre internetbrugere. + Dette angår sikkerhed. I børnetilstand er alt kommunikation deaktiveret. Aktivér hvis du vil beskytte dine børn eller skoleelever fra at kunne kommunikere med andre internetbrugere. I børnetilstand vil Lichess-logoet få et %s ikon, så du ved, at dine børn er sikret. Aktiver børnetilstand Deaktiver børnetilstand @@ -703,7 +703,7 @@ Telefon og tablet Bullet, lyn, klassisk Korrespondanceskak - Online eller offline spil + Online og offline spil Se løsningen Følg og udfordre dine venner @@ -820,19 +820,19 @@ Livstidsscore Nuværende kampscore Jeg lover, at jeg på intet tidspunkt i løbet af mine partier vil modtage assistance (fra en skakcomputer, bog, database eller anden person). - Jeg lover, at jeg altid vil være venlig mod andre spillere. + Jeg lover, at jeg altid vil være respektfuld mod andre spillere. Jeg lover, at jeg ikke vil oprette flere konti. Jeg lover, at jeg vil overholde alle Lichess-politikker. Søg eller start ny diskussion Rediger - Hurtigskak - Klassisk + Rapid + Classical Vanvittigt hurtige spil: mindre end 30 sekunder Meget hurtige spil: mindre end 3 minutter Hurtige spil: 3 til 8 minutter Hurtige spil: 8 til 25 minutter Klassiske spil: 25 minutter eller mere - Korrespondancespil: en eller adskillige dage per træk + Korrespondancepartier: en eller adskillige dage per træk Skaktaktik-træner Vigtigt Der findes måske allerede et svar på dit spørgsmål %1$s @@ -869,4 +869,33 @@ Alle driftsomkostninger, udvikling og indhold finansieres udelukkende af brugerdonationer. Træner-administration Streamer-administration + Aflys turneringen + Turneringsbeskrivelse + Noget særligt du ønsker at fortælle deltagerne? Prøv at holde det kort. Markdown-links er tilgængelige: [name](https://url) + Partier er ratede +og påvirker spilleres ratings + Kun medlemmer af hold + Ingen restriktion + Minimum ratede partier + Minimum rating + Maksimal ugentlig rating + Kun spilere med titel + Kræv en officiel titel for at deltage i turneringen + Indsæt en gyldig FEN for at starte hvert parti fra en given position. +Det virker kun for standardspil, ikke med varianter. +Du kan bruge %s til at generere en FEN-position og derefter indsætte den her. +Lad stå tomt for at starte partier fra den normale udgangsposition. + Annuller simultanen + Værtsfarve for hvert parti + Anslået starttidspunkt + Vis på %s + Vis din simultan til alle på %s. Deaktivér for private simultaner. + Simultanbeskrivelse + Noget du ønsker at fortælle deltagerne? + %s er tilgængelig for mere avanceret syntaks. + I din egen lokale tidszone + Turneringschat + Ingen chat + Kun holdledere + Kun holdmedlemmer diff --git a/translation/dest/site/de-CH.xml b/translation/dest/site/de-CH.xml index e6dcf05159..0dee3e9f49 100644 --- a/translation/dest/site/de-CH.xml +++ b/translation/dest/site/de-CH.xml @@ -93,7 +93,7 @@ Nächschti Schlag- oder Buuräzug in %s Halbzug (Dischtanz zum Zruggsetzte vom Zähler für d 50-Züg-Reglä) Nöchschti Schlag- oder Puuräzug in %s Halbzüg (Dischtanz zum Zruggsetzte vom Zähler fürd 50-Züg-Reglä) - Kas Schpiil gfundä + Käs Schpiil gfundä Villicht söted meh Schpiil vom Iischteligs Menu iibezogä werdä? Eröffnigsdatäbank %s Eröffnigsbuäch @@ -338,7 +338,7 @@ Chostälosi online Schach-Server. Schpill jetzt ufärä übersichtlichä Benutzeroberflächi Schach! Käi Regrischtriärig und käi Plugins erforderlich und komplett ohni Wärbig. Schpill jetzt gäg än Fründ, dä Kompi oder gäg än zuefälligä Gägnär! %1$s isch äm Team %2$s biiträttä %1$s hät s\'Team %2$s gründät - %s hät än Stream gschtartät + %s hät än Schtriim gschtartät Durchschnittswärtig Ort Partiiä filtärä @@ -605,7 +605,7 @@ Gsamtziit uf Lichess TV: %s Zuäluägä Filmli-Bibliothek - Schtreamer + Schtriimer/-innä Mobili Äpp Webmaster Über @@ -868,5 +868,29 @@ Lichess isch ä Wohltätigkeitsorganisation und ä völlig chostälosi/freii Open-Source-Software. Alli Betriebschostä, Entwicklig und Inhält wärdäd usschliässlich dur Benutzerschpändä finanziärt. Trääner Mänätscher - Schtreamer Mänätscher + Schtriimer Mänätscher + Turnier abbrechen + Turnierbeschreibung + Möchtest du den Teilnehmern etwas Besonderes mitteilen? Fasse dich kurz. Du kannst eine URL mit einem Namen versehen: [Name](https://url) + Partien sind gewertet +und beeinflussen die Wertungszahl der Spieler + Nur Teammitglieder + Keine Einschränkung + Mindestanzahl gewerteter Partien + Niedrigste Wertungszahl + Höchste Wertungszahl in dieser Woche + Nur Spieler mit Titel + Benötigt einen offiziellen Titel, um dem Turnier beizutreten + Füge eine gültige FEN ein, um jede Partie aus einer gegebenen Stellung zu beginnen. +Das funktioniert nur für Standardspiele, nicht für Varianten. +Du kannst den %s verwenden, um eine FEN-Stellung zu generieren und diese dann hier einfügen. +Leer lassen, um Partien von der normalen Ausgangsstellung aus zu starten. + Die Simultan-Veranstaltung abbrechen + Farbe des Gastgebers für jede Partie + Voraussichtliche Startzeit + Auf %s zeigen + Zeige allen auf %s deine Simultan-Veranstaltung. Für private Simultan-Veranstaltungen deaktivieren. + Simultan Beschreibung + Möchtest du den Teilnehmern etwas mitteilen? + %s ist für erweiterte Syntax verfügbar. diff --git a/translation/dest/site/de-DE.xml b/translation/dest/site/de-DE.xml index 67192a7faa..cc0b2b4ed0 100644 --- a/translation/dest/site/de-DE.xml +++ b/translation/dest/site/de-DE.xml @@ -869,4 +869,33 @@ Alle Betriebskosten, Entwicklung und Inhalte werden ausschließlich durch Benutzerspenden finanziert. Trainerverwaltung Streamerverwaltung + Turnier abbrechen + Turnierbeschreibung + Möchtest du den Teilnehmern etwas Besonderes mitteilen? Fasse dich kurz. Du kannst eine URL mit einem Namen versehen: [Name](https://url) + Partien sind gewertet +und beeinflussen die Wertungszahl der Spieler + Nur Teammitglieder + Keine Einschränkung + Mindestanzahl gewerteter Partien + Niedrigste Wertungszahl + Höchste Wertungszahl in dieser Woche + Nur Spieler mit Titel + Benötigt einen offiziellen Titel, um dem Turnier beizutreten + Füge eine gültige FEN ein, um jede Partie aus einer gegebenen Stellung zu beginnen. +Das funktioniert nur für Standardspiele, nicht für Varianten. +Du kannst den %s verwenden, um eine FEN-Stellung zu generieren und diese dann hier einfügen. +Leer lassen, um Partien von der normalen Ausgangsstellung aus zu starten. + Die Simultan-Veranstaltung abbrechen + Farbe des Gastgebers für jede Partie + Voraussichtliche Startzeit + Auf %s zeigen + Zeige allen auf %s deine Simultan-Veranstaltung. Für private Simultan-Veranstaltungen deaktivieren. + Simultan Beschreibung + Möchtest du den Teilnehmern etwas mitteilen? + %s ist für erweiterte Syntax verfügbar. + In deiner eigenen lokalen Zeitzone + Turnierchat + Kein Chat + Nur Teamleiter + Nur Teammitglieder diff --git a/translation/dest/site/el-GR.xml b/translation/dest/site/el-GR.xml index 04327ab01c..3e88c622bd 100644 --- a/translation/dest/site/el-GR.xml +++ b/translation/dest/site/el-GR.xml @@ -870,4 +870,33 @@ Όλα τα εξοδα λειτουργίας, ανάπτυξης και περιεχομένου καλύπτοναι αποκλειστικά από δωρεές χρηστών. Διαχειριστής προπονητή Διαχειριστής streamer + Ακύρωση τουρνουά + Περιγραφή του τουρνουά + Θέλετε να πείτε κάτι ιδιαίτερο στους παίκτες; Προσπαθήστε να κρατήσετε το μήνυμά σας σύντομο. Μπορείτε να χρησιμοποιείτε συνδέσμους σε Markdown: [name](https://url) + Τα παιχνίδια αξιολογούνται +και επηρεάζουν τη βαθμολογία των παιχτών + Μόνο μέλη της ομάδας + Χωρίς περιορισμούς + Ελάχιστος αριθμός βαθμολογημένων παιχνιδιών + Ελάχιστη βαθμολογία + Μέγιστη εβδομαδιαία βαθμολογία + Μόνο τιτλούχοι παίκτες + Να απαιτείται επίσημος τίτλος για τη συμμετοχή στο τουρνουά + Επικολλήστε ένα έγκυρο FEN για να ξεκινήσει κάθε παιχνίδι από μια συγκεκριμένη θέση. +Λειτουργεί μόνο για κανονικά παιχνίδια, όχι για παραλλαγές. +Μπορείτε να χρησιμοποιήσετε τον %s για να πάρετε το FEN μιας θέσης, και στη συνέχεια να την επικολλήστε το εδώ. +Μπορείτε να αφήσετε το πλαίσιο κενό για να ξεκινούν οι παρτίδες από την κανονική αρχική θέση. + Ακύρωση σιμουλτανέ + Χρώμα διοργανωτή σε κάθε παιχνίδι + Εκτιμώμενη ώρα έναρξης + Προβεβλημένο στο %s + Να εμφανίζεται το σιμουλτανέ σε όλους στο %s. Απενεργοποιήστε αυτήν την επιλογή για ιδιωτικά σιμουλτανέ. + Περιγραφή σιμουλτανέ + Θέλετε να πείτε κάτι στους συμμετέχοντες; + Η μορφή %s είναι διαθέσιμη για μια πιο προχωρημένη σύνταξη. + Στη δική σας ζώνη ώρας + Δωμάτιο συνομιλίας τουρνουά + Να μην επιτρέπεται η συνομιλία + Μόνο οι αρχηγοί ομάδων + Μόνο τα μέλη της ομάδας diff --git a/translation/dest/site/en-US.xml b/translation/dest/site/en-US.xml index d88ec864f7..584caaf81e 100644 --- a/translation/dest/site/en-US.xml +++ b/translation/dest/site/en-US.xml @@ -331,7 +331,7 @@ Your top weekly %1$s rating (%2$s) is too high Your %1$s rating (%2$s) is too low Rated ≥ %1$s in %2$s - Rated ≤ %1$s in %2$s + Rated ≤ %1$s in %2$s for the last week Must be in team %s You are not in the team %s Back to game @@ -693,6 +693,7 @@ computer analysis, game chat and shareable URL. Enable Kid mode Disable Kid mode Security + Sessions revoke all sessions Play chess everywhere As free as lichess @@ -869,4 +870,33 @@ computer analysis, game chat and shareable URL. All operating costs, development, and content are funded solely by user donations. Coach manager Streamer manager + Cancel the tournament + Tournament description + Anything special you want to tell the participants? Try to keep it short. Markdown links are available: [name](https://url) + Games are rated +and impact players ratings + Only members of team + No restriction + Minimum rated games + Minimum rating + Maximum weekly rating + Only titled players + Require an official title to join the tournament + Paste a valid FEN to start every game from a given position. +It only works for standard games, not with variants. +You can use the %s to generate a FEN position, then paste it here. +Leave empty to start games from the normal initial position. + Cancel the simul + Host color for each game + Estimated start time + Feature on %s + Show your simul to everyone on %s. Disable for private simuls. + Simul description + Anything you want to tell the participants? + %s is available for more advanced syntax. + In your own local timezone + Tournament chat + No chat + Only team leaders + Only team members diff --git a/translation/dest/site/es-ES.xml b/translation/dest/site/es-ES.xml index d0faac271c..1d0f2d2014 100644 --- a/translation/dest/site/es-ES.xml +++ b/translation/dest/site/es-ES.xml @@ -869,4 +869,28 @@ Todos los costes de funcionamiento, desarrollo y contenidos se financian únicamente mediante las donaciones de los usuarios. Administrador de entrenadores Administrador de presentadores + Cancelar el torneo + Descripción del torneo + ¿Quieres decirle algo especial a los participantes? Intenta ser breve. Puedes usar Markdown para escribir enlaces: [nombre](https://url) + Las partidas afectan +a la puntuación de los jugadores + Solo miembros del equipo + Sin restricciones + Mínimo de partidas por puntos + Puntuación mínima + Puntuación máxima semanal + Solo jugadores titulados + Exigir un título oficial para participar en el torneo + Pega una posición FEN válida para empezar todas las partidas con una posición específica. +Solo funciona con partidas estándar, no con las variantes. +Puedes usar el %s para crear una posición FEN y, a continuación, pegarla aquí. +Deja vacío el campo para empezar las partidas desde la posición inicial normal. + Cancelar la simultánea + Color del anfitrión para cada partida + Hora de inicio estimada + Mostrar simultánea en %s + Muestra la simultánea públicamente en %s. Deshabilitado para simultáneas privadas. + Descripción de la simultánea + ¿Quieres decirle algo a los participantes? + %s está disponible para una sintaxis más avanzada. diff --git a/translation/dest/site/et-EE.xml b/translation/dest/site/et-EE.xml index 15265e6b47..8c99592f44 100644 --- a/translation/dest/site/et-EE.xml +++ b/translation/dest/site/et-EE.xml @@ -850,4 +850,6 @@ arvutianalüüsi, mängu jututoa ning jagatava URL-i. [Vajuta e-maili aadressi nägemiseks] Allalaadimine Tere tulemast! + Tühista turniir + Turniiri kirjeldus diff --git a/translation/dest/site/eu-ES.xml b/translation/dest/site/eu-ES.xml index 2973f2bf87..59153e0b65 100644 --- a/translation/dest/site/eu-ES.xml +++ b/translation/dest/site/eu-ES.xml @@ -869,4 +869,32 @@ Garapen eta mantentze-kostu guztiak erabiltzaileen dohaintzekin ordaintzen dira. Entrenatzaileen kudeatzailea Zuzenekoen kudeatzailea + Bertan behera utzi txapelketa + Txapelketaren deskribapena + Parte-hartzaileei zerbait esan nahi diezu? Markdown erako estekak erabili ditzakezu [izena](http://helbidea) + Partidek jokalarien sailkapenerako balio dute + Talde bateko kideak bakarrik + Murrizketarik ez + Gutxieneko partida kopurua + Gutxieneko sailkapena + Asteroko gehieneko sailkapena + Tituludun jokalariak bakarrik + Eskatu titulu ofiziala izatea txapelketan sartzeko + Partida guztiak posizio jakin batekin asteko sartu posizioaren FEN balioa. +Xake-arrunteko partidekin bakarrik balio du, ez aldaerekin. +%s erabili dezakezu FEN balioa lortzeko, eta ondoren hemen itsatsi. +Utzi hutsik partidak ohiko posizioarekin hasteko. + Utzi bertan behera aldi-berekoa + Aldi-berekoa ematen duenaren kolorea + Ustezko hasiera ordua + Destakatu hemen: %s + Erakutsi zure aldi-berekoa mundu guztiari %s helbideak. Desaktibatu aldi-bereko pribatuentzat. + Aldi-berekoaren deskribapena + Parte-hartzaileei zerbait esan nahi diezu? + %s erabili dezakezu. + Zure ordu-zonan + Txapelketaren txata + Txatik ez + Taldeen kapitainak bakarrik + Taldeen kideak bakarrik diff --git a/translation/dest/site/fa-IR.xml b/translation/dest/site/fa-IR.xml index 42cf861f1c..a0522b7491 100644 --- a/translation/dest/site/fa-IR.xml +++ b/translation/dest/site/fa-IR.xml @@ -851,4 +851,24 @@ خوش آمدید! لایچس یک خیریه و کاملا رایگان و نرم افزاری متن باز است. تمام هزینه های اجرا، توسعه و محتوا تنها بر پایه هدایای کاربران بنا شده است. تنظیمات مربی + لغو مسابقه + توضیحات مسابقه + نکته خاصی را می خواهید با شرکت کنندگان در میان بگذارید؟ سعی کنید کوتاه باشد. لینک های علامت گذاری موجود هستند: [name] (https://url) + بازی ها رتبه بندی می شوند و در ریتینگ بازیکنان موثر است + تنها اعضای تیم + بدون محدودیت + حداقل بازی های ریتد + حداقل امتیاز + حداکثر امتیاز هفتگی + تنها بازیکنان عنوان دار + نیاز به یک عنوان رسمی برای پیوستن به مسابقه است + برای شروع هر بازی از یک پوزیشن مشخص یک FEN معتبر را جایگذاری کنید. +این عمل فقط برای بازی های استاندارد امکان پذیر است، نه با واریانت ها. +شما می توانید %s را جهت ساخت یک پوزیشن FEN استفاده کنید و سپس اینجا جایگذاری کنید. +برای شروع بازی ها از وضعیت عادی ابتدایی خالی بگذارید. + ذر منطقه زمانی شما + چت مسابقه + بدون چت + تنها مسئولان تیم + تنها اعضای تیم diff --git a/translation/dest/site/fi-FI.xml b/translation/dest/site/fi-FI.xml index 119943d42d..be5ce65cab 100644 --- a/translation/dest/site/fi-FI.xml +++ b/translation/dest/site/fi-FI.xml @@ -250,7 +250,7 @@ Pelaa Postilaatikko Keskusteluhuone - Kirjaudu chattiin + Kirjaudu osallistuaksesi keskusteluun Olet jäähyllä. Katsojienhuone Luo viesti @@ -352,7 +352,7 @@ Jatka tästä Tutki Tuo peli - Kun liität pelin PGN:n, voit selata peliä, näet tietokoneen analyysin ja pelille luodaan chat sekä URL, jonka voi jakaa. + Liitä pelin PGN, niin voit selata peliä ja saat sille tietokoneanalyysin, keskusteluhuoneen sekä URL:n, jonka voit jakaa. %s Tuotua peliä %s Tuotua peliä @@ -426,7 +426,7 @@ Ole valmiina %s, etsimme sinulle seuraavaa vastustajaa! Sinä pelaat! Voittoprosentti - Berserkprosentti + Berserkkiprosentti Suoritus Turnaus päättynyt Siirtoja @@ -869,4 +869,33 @@ Kaikki toimintakustannukset, kehitystyö ja sisältö rahoitetaan yksinomaan käyttäjien lahjoituksilla. Valmentaja-asetukset Striimausasetukset + Peruuta turnaus + Turnauksen kuvaus + Haluatko kertoa osallistujille jotain erityistä? Kerro se lyhyesti ja ytimekkäästi. Voit käyttää markdown-linkkejä: [name](https://url) + Pelit pisteytetään ja niillä on +vaikutus pelaajien vahvuuslukuihin + Vain joukkueen jäsenet + Ei rajoituksia + Pisteytettyjä pelejä vähintään + Vahvuusluku vähintään + Viikoittainen vahvuusluku enintään + Vain arvonimen saaneet pelaajat + Turnaukseen liittyminen edellyttää virallista arvonimeä + Liitä tähän FEN-koodi, jos haluat jokaisen pelin alkavan tietystä asemasta. +Se toimii vain tavallisissa peleissä, ei varianteissa. +Voit luoda aseman %slla ja kopioida FEN-koodin sieltä tänne. +Jätä kenttä tyhjäksi, jos haluat pelien alkavan normaalista alkuasemasta. + Peruuta simultaani + Isännän väri joka pelissä + Arvioitu alkamisaika + Näytä sivulla %s + Näytä simultaanisi kaikille %slla. Poista valinta pitääksesi simultaanin yksityisenä. + Simultaanin kuvaus + Haluatko kertoa osallistujille jotain? + Tekstin yksityiskohtaisempaan muotoiluun voit käyttää %s-kieltä. + Omalla aikavyöhykkeelläsi + Turnauksen keskusteluhuone + Ei keskustelua + Vain joukkueenjohtajille + Vain joukkueen jäsenille diff --git a/translation/dest/site/fr-FR.xml b/translation/dest/site/fr-FR.xml index 5b3dc3f9d3..2d6e07a3f7 100644 --- a/translation/dest/site/fr-FR.xml +++ b/translation/dest/site/fr-FR.xml @@ -869,4 +869,29 @@ Tous les coûts d\'exploitation, le développement et le contenu sont financés uniquement par les dons des utilisateurs. Configuration des paramètres Coach Configuration des paramètres Streamer + Annuler le tournoi + Description du tournoi + Quelque chose de spécial à dire aux participants? Soyez bref. Des liens Markdown sont disponibles : [name](https://url) + Les parties sont classées +et ont un impact sur le classement des joueurs + Seulement les membres de l\'équipe + Sans restriction + Nombre minimum de parties classées + Classement minimal + Classement hebdomadaire maximal + Joueurs titrés seulement + Titre officiel requis pour participer à un tournoi + Annuler la simultanée + Couleur des pièces jouées par l\'hôte pour chaque partie + Heure de début estimée + Simultanée diffusée sur %s + Montrez votre simultanée à tout le monde sur %s. Désactivez cette option pour les simultanées privées. + Description de la simultanée + Voulez-vous dire quelque chose aux participants? + %s offre des options de formatage supplémentaires. + Dans votre fuseau horaire + Salon de discussion du tournoi + Aucun salon de discussion + Seulement les chefs d’équipe + Seulement les membres des équipes diff --git a/translation/dest/site/ga-IE.xml b/translation/dest/site/ga-IE.xml index 09bc002406..11ce168962 100644 --- a/translation/dest/site/ga-IE.xml +++ b/translation/dest/site/ga-IE.xml @@ -990,4 +990,28 @@ anailís ríomhaire, comhrá cluiche agus URL inroinnte. Maoinítear na costais oibriúcháin, na forbartha agus an t-ábhar go léir trí thabhartais úsáideora amháin. Socruithe cóitseál a bhainistiú Socruithe sruthanna a bhainistiú + Cuir an comórtas ar ceal + Cur síos ar an gcomórtas + Rud ar bith speisialta ba mhaith leat a rá leis na rannpháirtithe? Déan iarracht é a choinneáil gearr. Tá naisc Markdown ar fáil: [name](https://url) + Déantar cluichí a rátáil +agus rátálacha imreoirí tionchair + Baill foirne amháin + Gan aon srian + Cluichí rátáilte íosta + Rátáil íosta + Uasráta seachtainiúil + Imreoirí dar teideal amháin + Teideal oifigiúil a éileamh chun páirt a ghlacadh sa chomórtas + Greamaigh FEN bailí chun gach cluiche a thosú ó áit ar leith. +Ní oibríonn sé ach le haghaidh cluichí caighdeánacha, ní le leaganacha. +Is féidir leat an %s a úsáid chun suíomh FEN a ghiniúint, ansin é a ghreamú anseo. +Fág folamh chun cluichí a thosú ón ngnáthshuíomh tosaigh. + Cuir an taispeántas comhuaineach ar ceal + Dath óstach do gach cluiche + Am tosaithe measta + Gné ar %s + Taispeáin do thaispeántas comhuaineach do gach duine ar %s. Díchumasaithe do thaispeántais chomhuaineacha phríobháideacha. + Tuairisc ar thaispeántas comhuaineach + Rud ar bith is mian leat a rá leis na rannpháirtithe? + Tá %s ar fáil le haghaidh comhréir níos airde. diff --git a/translation/dest/site/gl-ES.xml b/translation/dest/site/gl-ES.xml index 785b3bcb95..6163eed73b 100644 --- a/translation/dest/site/gl-ES.xml +++ b/translation/dest/site/gl-ES.xml @@ -870,4 +870,19 @@ unha análise por ordenador, un chat de xogo e unha URL para compartir. Tódolos custos de funcionamento, desenvolvemento e contidos financianse unicamente mediante as doazóns d@s usuari@s. Administrador de adestradores/as Administrador de streamers + Cancelar o torneo + Descripción do torneo + Tes algo en especial que dicir ás participantes? Tenta ser breve. Poden engadir ligazóns de Markdown [name](https://url) + As partidas son puntuadas e impactan nas calificacións das xogadoras + Só membros do equipo + Sen restrición + Mínimo de partidas por puntos + Mínima puntuación + Máxima puntuación semanal + Só xogadoras tituladas + Require un título oficial para xogar o torneo + Pega un FEN válido para comezar cada partida dende unha posición determinada. +Só funciona para xogos estándar, non con variantes. +Podes empregar o %s para xerar unha posición FEN e despois pegala aquí. +Deixa en branco para comezar partidas dende a posición inicial normal. diff --git a/translation/dest/site/he-IL.xml b/translation/dest/site/he-IL.xml index 768fb6e4ad..66e9964605 100644 --- a/translation/dest/site/he-IL.xml +++ b/translation/dest/site/he-IL.xml @@ -516,6 +516,7 @@ שם פרטי שם משפחה ביוגרפיה + מדינה או דגל תודה רבה! קישורי רשתות חברתיות תיאור מהלכים בשורה diff --git a/translation/dest/site/hr-HR.xml b/translation/dest/site/hr-HR.xml index 24c2c67205..1c0c274526 100644 --- a/translation/dest/site/hr-HR.xml +++ b/translation/dest/site/hr-HR.xml @@ -25,6 +25,7 @@ Igraš bijelim figurama Igraš crnim figurama Ti si na redu! + Varanje otkriveno Kralj na centru Tri šaha Utrka je završena @@ -470,6 +471,7 @@ računalnu analizu, chat partije i URL za dijeljenje. Ime Prezime Životopis + Država ili zastava Hvala! Linkovi društvenih mreža Kompaktnija notacija diff --git a/translation/dest/site/hu-HU.xml b/translation/dest/site/hu-HU.xml index 41718b8fb8..db191874d9 100644 --- a/translation/dest/site/hu-HU.xml +++ b/translation/dest/site/hu-HU.xml @@ -869,4 +869,33 @@ Minden működési költséget, fejlesztést és tartalmat felhasználói adományokból fedezünk. Edzői vezérlőpult Közvetítői vezérlőpult + Versenykiírás törlése + Verseny leírása + Bármi különleges amit a résztvevőkkel közölnél? Próbáld rövidre fogni. Markdown linkek elérhetőek: [name](https://url) + Rangsorolt játszmák amik +befolyásolják a játékosok értékszámát + Kizárólag csapattagoknak + Korlátozás nélkül + Legkevesebb értékelt játszma + Legalacsonyabb értékszám + Legmagasabb heti értékszám + Csak címmel rendelkező játékosok + A részvétel feltétele a hivatalos cím megléte + Illessz be egy FEN sort, hogy minden játszma adott állásból induljon. +Csak hagyományos játszmákkal működik, variánsokkal nem. +Használhatod a %s a FEN készítésére, azt illeszd be ide. +Hagyd üresen és a játszmák a kezdőállásból indulnak. + Szimultán törlése + Szimultánt adó színe minden játszmában + Kezdés becsült ideje + Közzététel %s + Szimultán közzététele %s oldalon. Kapcsold ki privát szimultánhoz. + Szimultán leírása + Van bármi amit elmondanál a résztvevőknek? + %s is elérhető a haladó szerkesztéshez. + Saját időzónád szerint + Verseny csevegő + Nincs csevegő + Csak csapatvezetőknek + Csak csapattagoknak diff --git a/translation/dest/site/hy-AM.xml b/translation/dest/site/hy-AM.xml index c610daa586..5a20ac0c03 100644 --- a/translation/dest/site/hy-AM.xml +++ b/translation/dest/site/hy-AM.xml @@ -163,7 +163,7 @@ Վարկանիշի ստատիստիկա Օգտատիրոջ անուն Օգտատիրոջ անուն կամ email - Փոփոխել օգտանուն + Փոխել օգտանունը Փոխել օգտանունը։ Սա կարող է արվել ընդամենը մեկ անգամ, միայն թույլատրվում է օգտանվան փոքրատառերը դարձնել մեծատառ և հակառակը։ Գաղտնաբառ Փոխել գաղտնաբառը @@ -177,13 +177,17 @@ Վարկանիշը թարմացվում է ամեն րոպե Վարկանիշը թարմացվում է ամեն %s րոպե + + %s խնդիր + %s խնդիրներ + Խաղացած խաղեր %s Խաղեր՝ ձեր հետ %s Խաղեր՝ ձեր հետ Հերքել - Սպաիտակների ժամանակը սպառվեց + Սպիտակների ժամանակը սպառվեց Սևերի ժամանակը սպառվեց Ոչ-ոքի առաջարկը ուղարկված է Ոչ-ոքի առաջարկը մերժվել է @@ -248,6 +252,10 @@ %s ոչ-ոքի %s ոչ-ոքի + + %s խաղացվում Է + %s խաղացվում են + Էկսպորտ անել խաղերը Elo միջակայք @@ -266,9 +274,17 @@ Մրցաշար Մրցաշարեր Մրցաշարային միավորներ + + %s ստուդիա + %s ուսուցում + Դիտել մրցաշարը Վերադարձ դեպի մրցաշարը Թեմատիկա + + Վարկանիշային խաղերը՝ ≥ %s + Վարկանիշային խաղերը՝ ≥ %s + Վերադառնալ պարտիային Անվճար օնլայն շախմատ: Խաղացեք հաճելի ինտերֆեյսով, առանց գրանցման և գովազդի: Խաղացեք համակարգչի, ընկերների կամ անծանոթների հետ: %1$s միացած թիմեր %2$s @@ -400,7 +416,7 @@ պատասխանել հաղորդագրություն Ստեղծել թեմա - Հաղորդել օգտվողին + Հաղորդել օգտատիրոջ մասին Օգտատեր Պատճառ Ի՞նչ է պատահել @@ -479,6 +495,10 @@ Փոխատեղում Սպիտակները O-O Սեւերը O-O + + %s հաղորդագրություն ֆորումում + %s հաղորդագրություն ֆորումում + Դիտել խաղեր Դիտել Տեսագրադարան @@ -514,16 +534,63 @@ Բաց Մուգ Թափանցիկ + Խաղատախտակի չափսը + Խաղաքարերի ձևավորում + Ստանալ կոդ՝ կայքում տեղադրելու համար + Մասնակցային այս անունն արդեն զբաղված է։ Խնդրում ենք փորձել ուրիշը + Մասնակցային անունը պետք է սկսվի տառով + Մասնակցային անունը պետք է վերջանա տառով կամ թվով։ + Մասնակցային անունը պետք է բաղկացած լինի միայն տառերից, թվերից, ընդգծումներից և գծիկներից։ + Մասնակցային այս անունն արդեն զբաղված է կամ անթույլատրելի է։ + Աջակցել Lichess-ին։ + Շախմատային ոճով Շախմատի հիմունքներ + Մարզիչներ + Ոչ կոռեկտ PGN + Ոչ կոռեկտ PGN + Նվազագույն երկարությունը՝ %s + Նվազագույն երկարությունը՝ %s + Արժեքը պետք է լինի մեծ կամ հավասար %s-ին + Արժեքը պետք է լինի մեծ կամ հավասար %s-ին Սխալ + Սեփական խաղ + Ծանուցումներ + Վարկանիշ՝ %s + + %s վայրկյան առաջին քայլի համար + %s վայրկյան առաջին քայլի համար + + Մարզում համակարգչի հետ + Կարելի էր %s + Ավելի լավ էր %s + Դուք դուրս եկաք մարզման ռեժիմից + Վերսկսել մարզումը + Խաղն ավարտվեց ոչ-ոքի։ + Համակարգիչը մտածում է... + Դիտել լավագույն քայլը + Թաքցնել լավագույն քայլը + Օգտվել հուշումից + Ձեր քայլի գնահատականը... Սպիտակները հաղթեցին Սևերն հաղթեցին Սովորիր սխալներից Սովորիր այս սխալից Բաց թողնել այս քայլը Հաջորդ + Խաղացվել է %s + Սպիտակների համար գտե՛ք ավելի ուժեղ քայլ + Սևերի համար գտե՛ք ավելի ուժեղ քայլ Շարունակել սովորել + Կա ավելի ուժեղ քայլ + Սպիտակների համար փորձե՛ք այլ քայլ + Սևերի համար փորձե՛ք այլ քայլ Լուծում + Վերլուծության ստացման սպասում + Սպիտակների սխալներ չեն գտնվել + Սևերի սխալներ չեն գտնվել + Սպիտակների սխալները վերլուծված են + Սևերի սխալները վերլուծված են + Կատարել ևս մեկ անգամ Վերանայել սևերի սխալները Առավելություն @@ -551,4 +618,10 @@ %1$s թիմ Բաժանորդագրվել Ապաբաժանորդագրվել + Ներբեռնել + Բարի՜ գալուստ։ + Lichess-ը բարեգործական կազմակերպություն է, որը տրամադրում է բաց նախնական կոդով ազատ և անվճար ծրագրային ապահովում։ +Օպերացիոն բոլոր ծախսերը, մշակումները և կոնտենտը ֆինանսավորվում են բացառապես օգտատերերի նվիրաբերությունների հաշվին։ + Մարզիչների համար + Սթրիմերների համար diff --git a/translation/dest/site/id-ID.xml b/translation/dest/site/id-ID.xml index 73cb9201fc..d0d6ea6681 100644 --- a/translation/dest/site/id-ID.xml +++ b/translation/dest/site/id-ID.xml @@ -829,4 +829,28 @@ Semua biaya operasi, pengembangan, dan konten didanai sepenuhnya oleh donasi pengguna. Manajer pelatih Manajer stream + Batalkan turnamen + Deskripsi turnamen + Adakah sesuatu yang spesial yang Anda ingin katakan kepada peserta? Coba buat pendek saja. Tautan Markdown tersedia: [name] (https://url) + Permainan dinilai +dan berdampak pada peringkat pemain + Hanya anggota dari tim + Tidak ada pembatasan + Permainan di nilai minimum + Peringkat minimum + Peringkat mingguan maksimum + Hanya pemain yang memiliki gelar + Diperlukan sebuah gelar resmi untuk mengikuti turnamen + Tempelkan sebuah FEN yang valid untuk memulai setiap game dari posisi yang diberikan. +Ini hanya berfungsi untuk game standar, bukan yang dengan variasi. +Anda dapat menggunakan %s untuk menghasilkan sebuah posisi FEN, lalu tempel di sini. +Kosongkan untuk memulai permainan dari posisi awal yang normal. + Batalkan simulasi + Pilih warna untuk setiap permainan + Waktu estimasi mulai + Tersedia di %s + Tampilkan simulasi Anda ke semua orang pada %s. Nonaktifkan untuk simulasi pribadi. + Deskripsi simulasi + Adakah sesuatu yang ingin Anda sampaikan pada peserta? + %s tersedia untuk sintaks lebih lanjut. diff --git a/translation/dest/site/ja-JP.xml b/translation/dest/site/ja-JP.xml index f1d2ebfc9e..851dcaaaa9 100644 --- a/translation/dest/site/ja-JP.xml +++ b/translation/dest/site/ja-JP.xml @@ -198,15 +198,15 @@ キャンセル 白時間切れ 黒時間切れ - 引き分けの提案を送信しました + ドローの提案を送信しました ドロー提案が拒否されました ドロー提案が承諾されました - 引き分けの提案をキャンセルしました + ドローの提案をキャンセルしました 白が引き分けを提案しました 黒が引き分けを提案しました 白が引き分けを拒否しました 黒が引き分けを拒否しました - 相手が引き分けを申し込みました + 相手がドローを提案しました 承諾 拒否 対局中 @@ -657,7 +657,7 @@ キッズモードを有効化 キッズモードを無効化 セキュリティ -  セッション + セッション すべてのセッションを取り消す どこでもチェスを対局 Lichess は常に無料 @@ -830,4 +830,33 @@ 運営費、開発、コンテンツを支えているのはすべてユーザーの寄付です。 コーチ用設定 配信者用設定 + トーナメントをキャンセル + トーナメントの説明 + 参加者に特に説明しておきたいことはありますか? 短く書いてください。リンクも入れられます:[name](https://url) + レート戦です +プレイヤーのレーティングが動きます + チームメンバーのみ + 制限なし + 必要対局数(レート戦) + レーティング下限 + レーティング上限(週内) + 公式タイトル保持者のみ + 参加には公式タイトルを必須とする + 有効な FEN をペーストすると全対局がその局面から始まります。 +通常ルールのチェスだけで、バリアントには使えません。 +%s を使えば FEN が作れます。それをここにペーストするだけです。 +通常の開始局面から始める場合はここは空白のままです。 + 同時対局をキャンセル + ホスト側の手番 + 開始予定時刻 + %s に表示 + %s 上の全員に表示します。非公開の同時対局では無効にしてください。 + 同時対局の説明 + 参加者に伝えたいことがあればどうぞ + 高度な修飾方法として %s も使えます。 + 自分のタイムゾーンで + トーナメント チャット + チャットなし + チームリーダー限定 + チームメンバー限定 diff --git a/translation/dest/site/ko-KR.xml b/translation/dest/site/ko-KR.xml index 18d0629330..29bc573d1b 100644 --- a/translation/dest/site/ko-KR.xml +++ b/translation/dest/site/ko-KR.xml @@ -408,7 +408,7 @@ 보드 편집기 보드 세팅하기 인기 있는 오프닝 - 원래대로 + 시작 포지션 보드 지우기 포지션 저장 포지션 불러오기 @@ -641,8 +641,10 @@ 인쇄에 용이한 PDF 포맷으로 다운로드 점수판 마우스 스크롤을 돌림으로써 수를 진행할 수 있습니다. + 컴퓨터 변화수를 미리보기 위해서는 커서를 올리세요. Shift + 왼쪽/오른쪽 클릭으로 원이나 화살표를 보드 상에 그릴 수 있습니다. 다른 사람들이 당신에게 메시지를 보낼 수 있도록 합니다. + 포럼에서 언급되면 알림을 받습니다 당신의 게임 분석 결과를 공유합니다. 나만 보기 친구들만 @@ -654,6 +656,7 @@ 아이 모드 활성화하기 아이 모드 비활성화하기 보안 + 세션 모든 세션 비활성화 어디에서나 체스를 즐기세요 lichess처럼 무료입니다 @@ -824,4 +827,30 @@ 환영합니다! Lichess는 비영리 기구이며 완전한 무료/자유 오픈소스 소프트웨어입니다. 모든 운영 비용, 개발, 컨텐츠 조달은 전적으로 사용자들의 기부로 이루어집니다. + 코치 설정 + 스트리머 설정 + 토너먼트 취소 + 토너먼트 설명 + 참가자에게 하고 싶은 말이 있나요? 짧게 작성해주세요. 마크다운 링크가 가능합니다: [name](https://url) + 레이팅 게임을 합니다 +플레이어 레이팅에 영향을 줍니다 + 팀 멤버만 + 제한 없음 + 최소 레이팅 게임 참여 횟수 + 최소 레이팅 + 최대 주간 레이팅 + 타이틀 플레이어만 + 토너먼트에 참여하기 위해서는 공식 타이틀이 있어야 합니다 + 모든 게임을 주어진 포지션으로 시작하려면 FEN을 붙여넣으세요. +일반 게임이 아닌 변형 체스에는 적용되지 않습니다. +FEN 포지션을 생성하기 위해 %s를 사용할 수 있습니다. +비워두면 일반 시작 포지션에서 시작합니다. + 동시대국 취소하기 + 각 게임에서 호스트의 색 + 예상 시작 시간 + %s에서 공개 + 모두가 %s에서 동시대국을 볼 수 있습니다. 비공개 대국을 위해서는 비활성화하세요. + 동시대국 설명 + 참가자들에게 하고 싶은 말이 있나요? + 추가로 %s 문법을 사용하실 수 있습니다. diff --git a/translation/dest/site/lt-LT.xml b/translation/dest/site/lt-LT.xml index 2de81c880d..aa55c94f58 100644 --- a/translation/dest/site/lt-LT.xml +++ b/translation/dest/site/lt-LT.xml @@ -950,4 +950,33 @@ kompiuterinę analizę, partijos pokalbį bei URL dalinimuisi. Visos veikimo išlaidos, programavimas ir turinys yra padengti išskirtinai tik vartotojų parama. Trenerių valdymas Transliuotojų valdymas + Atšaukti turnyrą + Turnyro aprašymas + Yra kažkas, ką turi žinoti dalyviai? Stenkitės perteikti trumpai. Galimos Markdown nuorodos: [pavadinimas](https://url) + Partijos reitinguotos +ir daro įtaką žaidėjų reitingams + Tik komandos nariai + Jokių apribojimų + Mažiausiai įvertintos partijos + Minimalus reitingas + Maksimalus savaitinis reitingas + Tik tituluoti žaidėjai + Jungiantis prie turnyro reikalauti oficialaus titulo + Norėdami pradėti žaidimą nuo specifinės pozicijos, įklijuokite teisingą FEN. +Veikia tik standartiniams žaidimams, ne variantams. +Norėdami sugeneruoti FEN poziciją galite naudotis %s, tada ją įklijuokite čia. +Palikite tuščią norėdami pradėti žaidimą nuo įprastos pradinės pozicijos. + Atšaukti simulą + Šeimininko spalva kiekvienam žaidimui + Numatytas pradžios laikas + Rodyti %s + Rodyti simulą visiems %s. Neįjungta privatiems simulams. + Simulo aprašymas + Ar norite ką nors pranešti dalyviams? + %s prieinama norint naudoti sudėtingesnę sintaksę. + Jūsų laiko zonoje + Turnyro pokalbis + Jokio pokalbio + Tik komandų vadovams + Tik komandos nariams diff --git a/translation/dest/site/lv-LV.xml b/translation/dest/site/lv-LV.xml index 96dd1b8dea..39329f2fc3 100644 --- a/translation/dest/site/lv-LV.xml +++ b/translation/dest/site/lv-LV.xml @@ -909,4 +909,32 @@ Visas izmaksas, izstrādāšanu un saturu finansē vienīgi lietotāju ziedojumi. Trenera iestatījumi Straumētāja iestatījumi + Atcelt turnīru + Turnīra apraksts + Vai vēlaties dalībniekiem teikt ko īpašu? Centieties izteikties īsi! Iespējams ievietot Markdown saites: [nosaukums](https://url) + Spēles ir vērtētas un ietekmē spēlētāju reitingu + Tikai komandas dalībnieki + Bez ierobežojumiem + Minimālais vērtēto spēļu skaits + Minimālais reitings + Maksimālais nedēļas reitings + Tikai spēlētāji ar tituliem + Pieprasīt titulu pirms pievienošanās turnīram + Ielīmējiet derīgu FEN, lai sāktu katru spēli no dotās pozīcijas. +Šis darbojas tikai ar standarta spēlēm nevis variantiem. +Varat izmantot rīku \"%s\", lai izveidotu FEN pozīciju, tad ielīmējiet to šeit. +Atstājiet tukšu, lai spēles sāktos no parastās pozīcijas. + Atcelt simultānseansu + Uzņemošā spēlētāja krāsa katrā spēlē + Paredzētais sākuma laiks + Rādīt %s + Visiem rādīt simultānseansu %s. Atspējojiet šo opciju privātiem simultānseansiem. + Simultānseansa apraksts + Vai vēlaties ko teikt dalībniekiem? + Papildu formatējumam pieejams %s. + Jūsu vietējā laika zonā + Turnīra saruna + Nav sarunas + Tikai komandas vadītāji + Tikai komandas dalībnieki diff --git a/translation/dest/site/ms-MY.xml b/translation/dest/site/ms-MY.xml index adf6a990ec..f3bde3444e 100644 --- a/translation/dest/site/ms-MY.xml +++ b/translation/dest/site/ms-MY.xml @@ -25,6 +25,7 @@ Mula dengan buah putih Mula dengan buah hitam Giliran anda sekarang! + Penipuan Dikesan Raja di tengah Tiga check Perlumbaan tamat @@ -272,6 +273,7 @@ %s tournament points + Lihat pertandingan Back to tournament Thematic @@ -296,6 +298,15 @@ You are not in the team %s Back to game Free online chess server. Play chess in a clean interface. No registration, no ads, no plugin required. Play chess with the computer, friends or random opponents. + Tetap Semula + Hantar + Simpan + + %s rakan dalam talian + + Tiada rakan dalam talian + Cari rakan + Ikut Senarai yang diikuti Berhenti mengikuti Menghalang @@ -351,7 +362,14 @@ Pertandingan selesai Gerakan dimain Buah putih menang + Menang Hitam + Seri + Ahli sahaja Posisi permulaan + Pautan media sosial + Aktif hari ini + Pemain aktif + Berjaya %s permainan sedang berlangsung @@ -396,6 +414,23 @@ Kata kunci tidak tepat Kod authentikasi tidak sah Emel saya link tersebut + Kata laluan kini + Kata laluan baharu + Kata laluan baharu (lagi sekali) + Kata laluan baharu tidak sepadan + Kekuatan kata laluan + Privasi + Polisi privasi + Bunyi + Tiada + Laju + Biasa + Perlahan + Mudah + Biasa + Susah + Menang + Kalah Lawan Belajar Selidik @@ -518,4 +553,10 @@ Timeout berakhir %s. Kenapa? Matlamat kami adalah untuk memberikan pengalaman catur yang baik untuk semua. + Tahniah, anda menang! + Muat turun + Selamat Datang! + Anggaran masa bermula + Ketua pasukan sahaja + Ahli pasukan sahaja diff --git a/translation/dest/site/my-MM.xml b/translation/dest/site/my-MM.xml index 2362c3bf36..c86578bb52 100644 --- a/translation/dest/site/my-MM.xml +++ b/translation/dest/site/my-MM.xml @@ -93,4 +93,19 @@ ပွဲများ ထပ်ကစားပြီးမှ ဆွေးနွေးချက်များ တင်ခွင့်ရပါမည်။ ရယူလိုပါသည်။ မရယူလိုတော့ပါ။ + ပြိုင်ပွဲကို ပယ်ဖျက်သည် + ပြိုင်ပွဲ အကြောင်းအရာ + ပြိုင်ပွဲဝင်တို့ထံ အထူး မှာကြားချက် (တိုတိုရေးပါ)။ Markdown စာသားများထံ အညွှန်း ထည့်သွင်းနိုင်ပါသည် - [name](https://url) + လက်ရည် အတက်အကျ အတွက် အကျုံးဝင်သည် + အသင်းဝင်များသာ + ကန့်သတ်ချက် မရှိ + လက်ရည် ကန့်သတ်ချက်ဖြင့် ကစားပြီး ဖြစ်ရမည့် ကစားပွဲ အနည်းဆုံး အရေအတွက် + အနိမ့်ဆုံး လက်ရည် + ရက်သတ္တ တစ်ပတ် အတွင်း ရရှိသော အမြင့်ဆုံး လက်ရည် + တရားဝင်ဘွဲ့ထူး ရရှိထားသော ကစားသမားများသာ + ပြိုင်ပွဲသို့ ဝင်ရောက်နိုင်ရေး အတွက် တရားဝင်ဘွဲ့ထူး ရရှိထားရန် လိုအပ်သည် + ကစားပွဲတိုင်းကို သတ်မှတ် အနေအထား တစ်မျိုးတည်းမှ စတင်ရန် အလို့ငှာ အမှားကင်းသော FEN တစ်ခု ထည့်သွင်းပါ။ +မူကွဲစနစ်များ အတွက် မရဘဲ စံနစ်သုံးပွဲများ အတွက်သာ လုပ်ဆောင်နိုင်ပါသည်။ +ထည့်သွင်းလိုသည့် FEN ကို %s အသုံးပြုကာ ထုတ်လုပ်နိုင်ပါသည်။ +ပုံမှန် အနေအထား အတိုင်း စတင်ရန် အတွက် FEN မထည့်ဘဲ အလွတ်ထားပါ။ diff --git a/translation/dest/site/nb-NO.xml b/translation/dest/site/nb-NO.xml index 164e43b3ce..66c7e7a28a 100644 --- a/translation/dest/site/nb-NO.xml +++ b/translation/dest/site/nb-NO.xml @@ -331,7 +331,7 @@ Den beste ukeratingen din i %1$s (%2$s) er for høy Ratingen din i %1$s (%2$s) er for lav Ratet ≥ %1$s i %2$s - Ratet ≤ %1$s i %2$s denne uken + Ratet ≤ %1$s i %2$s den foregående uken Du må være med i laget %s Du er ikke med i teamet %s Tilbake til partiet @@ -869,4 +869,25 @@ Alle kostnader for drift, utvikling og innhold finansieres utelukkende av brukerdonasjoner. Innstillinger for trenere Innstillinger for strømmere + Avlys turneringen + Turneringsbeskrivelse + Noe du vil si til deltakerne? Vær kortfattet. Markdown-lenker kan brukes: [name](https://url) + Partiene er ratet +og påvirker spillernes rating + Kun lagmedlemmer + Ingen begrensning + Minimum ratede partier + Minimum rating + Maksimum ukerating + Kun spillere med sjakktittel + Krev en offisiell sjakktittel for å bli med i turneringen + Lim inn gyldig FEN for å begynne hvert parti fra gitt stilling. +Det fungerer bare for standardpartier, ikke for varianter. +Du kan bruke %s for å generere en FEN-stilling, som du limer inn her. +La feltet stå tomt for å begynne partiene fra den normale utgangsstillingen. + Avbryt simultanoppvisningen + Vertsfarge for hvert parti + Forventet starttidspunkt + Vis på %s + I tidssonen din diff --git a/translation/dest/site/nl-NL.xml b/translation/dest/site/nl-NL.xml index ed663cce13..067b2af8c1 100644 --- a/translation/dest/site/nl-NL.xml +++ b/translation/dest/site/nl-NL.xml @@ -869,4 +869,33 @@ Alle exploitatiekosten, ontwikkeling en inhoud worden enkel gefinancierd door donaties van gebruikers. Coach manager Streamer manager + Toernooi annuleren + Toernooibeschrijving + Iets bijzonders dat je de deelnemers wilt vertellen? Probeer het kort te houden. Markdown-links zijn beschikbaar: [name](https://url) + Partijen worden met rating gespeeld +en hebben effect op de rating van de spelers + Alleen leden van het team + Geen restrictie + Minimumaantal partijen met rating + Minimumrating + Maximale wekelijkse rating + Alleen titelhouders + Officiële titel vereist voor deelname aan het toernooi + Plak een geldige FEN-code om een partij te beginnen vanaf een bepaalde stelling. +Het werkt alleen voor standaardpartijen, niet met varianten. +U kunt de %s gebruiken om een FEN-code te genereren en deze hier plakken. +Laat leeg om partijen te starten vanaf de normale beginstelling. + Simultaan annuleren + Kleur van de simultaangever voor elk spel + Geschatte starttijd + Simultaan tonen op %s + De simultaan voor iedereen weergeven op %s. Schakel dit uit voor privésimultaans. + Omschrijving van de simultaan + Is er nog iets wat de deelnemers moeten weten? + %s is beschikbaar voor meer geavanceerde opmaak. + In je eigen lokale tijdzone + Toernooichat + Geen chat + Alleen teamleiders + Alleen teamleden diff --git a/translation/dest/site/nn-NO.xml b/translation/dest/site/nn-NO.xml index 59ee76253c..166bd9cf03 100644 --- a/translation/dest/site/nn-NO.xml +++ b/translation/dest/site/nn-NO.xml @@ -681,6 +681,7 @@ få en computeranalyse, chatte eller dele ein URL. Scroll over datamaskin-variasjonane for å førehandsvisa dei. Trykk shift-klikk eller høyreklikk for å tegne sirklar og piler på brettet. Lat andre spelarar ta kontakt med deg + Bli varsla når du vert nemd i forumet Del den personlege spelarstatistikken din Med ingen Med vener @@ -692,7 +693,6 @@ få en computeranalyse, chatte eller dele ein URL. Skru på barnemodus Skru av barnemodus Tryggleik - Dette er ei liste over einingar du har logga inn på med din konto. Lukk dei du ikkje dreg kjensel på. Økter lukke alle økter Spel sjakk overalt @@ -870,4 +870,33 @@ få en computeranalyse, chatte eller dele ein URL. Alle kostnader for drift, utvikling og innhald vert finansiert eine og åleine av brukardonasjonar. Trenarleiar Strøymingsleiar + Avlys turneringa + Beskriving av turneringa + Noko du vil seie til deltakarane? Ver kortfatta. Du kan gje URL\'en eit namn: [name](https://url) + Partia er rata +og påverkar ratinga til spelarane + Berre medlemar av laget + Inga avgrensingar + Minste antal rata parti + Lågaste rating + Høgste rating siste veke + Berre spelarar med sjakktittel + Krev ein offisiell sjakktittel for å delta med i turneringa + Sett inn ein gyldig FEN for å starte kvart parti frå gjeven stilling. +Det fungerar berre for standardparti, ikke for variantar. +Du kan bruke %s for å generere en FEN-stilling, som du limar inn her. +La feltet stå tomt for å starte partia frå den normale utgangsstillinga. + Avbryt simultantilskipinga + Vertsfarge for kvart parti + Forventa starttidspunkt + Vis på %s + Vis simultantilskipinga til alle på %s. Deaktivér for private simultantilskipingar. + Beskriving av simultantilskipinga + Noko du vil fortelja deltakarane? + %s er tilgjengeleg for meir avansert syntaks. + I di tidssone + Turneringschat + Ikkje chat + Berre lagleiarar + Berre lagsmedlemer diff --git a/translation/dest/site/pl-PL.xml b/translation/dest/site/pl-PL.xml index da7af04259..e9e5af2cce 100644 --- a/translation/dest/site/pl-PL.xml +++ b/translation/dest/site/pl-PL.xml @@ -1,7 +1,7 @@ Zagraj ze znajomym - Zagraj z komputerem + Graj z komputerem Przekaż ten adres, by zaprosić kogoś do wspólnej gry Partia zakończona Oczekiwanie na przeciwnika @@ -387,7 +387,7 @@ Musisz należeć do klubu %s Nie należysz do klubu %s Wróć do partii - Darmowe szachy online. Zagraj teraz w szachy o przyjaznym interfejsie. Bez rejestracji, bez reklam, bez wtyczek. Zagraj w szachy z komputerem, znajomymi lub losowo wybranymi przeciwnikami. + Darmowe szachy online. Zagraj w szachy o przyjaznym interfejsie. Bez rejestracji, bez reklam, bez wtyczek. Zagraj w szachy z komputerem, znajomymi lub losowo wybranymi przeciwnikami. %1$s dołączył do klubu %2$s %1$s założył klub %2$s %s rozpoczął streaming @@ -764,8 +764,6 @@ Włącz tryb dla dzieci Wyłącz tryb dla dzieci Bezpieczeństwo - To jest lista urządzeń, z których logowałeś się na swoje konto. Unieważnij sesje, których nie rozpoznajesz. - Możesz również %s. Sesje unieważnić wszystkie sesje Graj w szachy wszędzie @@ -951,4 +949,27 @@ Wszystkie koszty operacyjne, rozwój i treści są finansowane wyłącznie z darowizn użytkowników. Menedżer trenera Menedżer streamera + Anuluj turniej + Opis turnieju + Czy chcesz powiedzieć coś szczególnego uczestnikom? Pisz krótko i na temat. Istnieje możliwość dodania odnośników: [text](https://url) + Partie są rankingowe i wpływają na ranking graczy + Tylko członkowie klubu + Bez ograniczeń + Minimalna liczba partii rankingowych + Minimalny ranking + Maksymalny tygodniowy ranking + Tylko gracze z tytułem + Wymagaj oficjalnego tytułu, aby dołączyć do turnieju + Wklej poprawny FEN, aby rozpocząć każdą partię z danej pozycji. +Działa tylko dla standardowych gier, nie działa dla wariantów. +Możesz użyć %s , aby wygenerować pozycję FEN, a następnie wkleić ją tutaj. +Pozostaw puste, aby rozpoczynać partie z normalnej pozycji początkowej. + Anuluj symultanę + Kolor prowadzącego symultanę dla każdej partii + Szacowany czas rozpoczęcia + Dostępna na %s + Pokaż symultanę wszystkim na %s. Wyłącz dla prywatnych symultan. + Opis symultany + Wiadomość do przekazania uczestnikom + %s jest dostępny dla bardziej zaawansowanej składni. diff --git a/translation/dest/site/pt-BR.xml b/translation/dest/site/pt-BR.xml index 3f64ff20af..b3193512f3 100644 --- a/translation/dest/site/pt-BR.xml +++ b/translation/dest/site/pt-BR.xml @@ -692,8 +692,6 @@ Habilitar o modo infantil Desabilitar o modo infantil Segurança - Esta é uma lista de dispositivos com os quais você logou em sua conta. Revogue qualquer sessão que você não reconheça. - Como alternativa, você pode %s. Sessões revogar todas as sessões Jogue xadrez em qualquer lugar @@ -870,4 +868,33 @@ Lichess é um software de código aberto, totalmente grátis e sem fins lucrativos. Todos os custos operacionais, de desenvolvimento, e os conteúdos são financiados unicamente através de doações de usuários. Configurações para professores Configurações para streamers + Cancelar o torneio + Descrição do torneio + Algo especial que você queira dizer aos participantes? Tente ser breve. Links em Markdown disponíveis: [name](https://url) + Os jogos valem pontos +e afetam a classificação dos jogadores + Apenas membros da equipe + Sem restrição + Mínimo de partidas ranqueadas + Classificação mínima + Classificação máxima da semana + Apenas jogadores titulados + Exigir um título oficial para entrar no torneio + Cole um FEN válido para iniciar as partidas a partir de uma posição específica. +Só funciona com jogos padrão, e não com variantes. +Use o %s para gerar uma posição FEN, e depois cole-a aqui. +Deixe em branco para começar as partidas na posição inicial padrão. + Cancelar a simultânea + Cor do simultanista em cada jogo + Tempo de início estimado + Compartilhar em %s + Compartilhar a simultânia com todos em %s. Desative para jogos privados. + Descrição da simultânea + Você gostaria de dizer algo aos participantes? + %s está disponível para opções de formatação adicionais. + No seu próprio fuso horário + Chat do torneio + Sem chat + Apenas líderes de equipe + Apenas membros da equipe diff --git a/translation/dest/site/pt-PT.xml b/translation/dest/site/pt-PT.xml index af920e0880..4a2ab2adc3 100644 --- a/translation/dest/site/pt-PT.xml +++ b/translation/dest/site/pt-PT.xml @@ -692,8 +692,6 @@ análise de computador, sala de chat do jogo e link de partilha. Ativar o modo infantil Desativar o modo infantil Segurança - Esta é a lista de dispositivos que se conectaram à tua conta. Desativa quaisquer sessões que não reconheças. - Alternativamente, podes %s. Sessões desativar todas as sessões Joga xadrez em qualquer lugar @@ -871,4 +869,33 @@ análise de computador, sala de chat do jogo e link de partilha. Todos os custos operacionais, de desenvolvimento e conteúdo são financiados exclusivamente por doações de usuários. Gestor de treinadores Gestor de streamers + Cancelar o torneio + Descrição do torneio + Quer dizer alguma coisa em especial aos participantes? Seja breve. Estão disponíveis ligações de Markdown: [name](https://url) + Os jogos são classificados +e afetam as avaliações dos jogadores + Apenas membros da equipa + Sem restrições + Jogos com classificação mínima + Classificação mínima + Avaliação semanal máxima + Apenas jogadores com títulos + Exigir um título oficial para entrar no torneio + Cole um FEN válido para iniciar todos os jogos a partir de uma determinada posição. +Só funciona para os jogos padrão, não com variantes. +Você pode usar o %s para gerar uma posição FEN e, em seguida, colá-lo aqui. +Deixe em branco para iniciar jogos da posição inicial normal. + Cancelar a simultânea + Cor do anfitrião para cada jogo + Hora de início prevista + Em destaque em %s + Mostre a sua simultânea a todos em %s. Desativar para simultâneas privadas. + Descrição da simultânea + Quer dizer alguma coisa aos participantes? + %s está disponível para sintaxe mais avançada. + No seu próprio fuso horário local + Chat do torneio + Sem chat + Apenas líderes da equipa + Apenas membros da equipa diff --git a/translation/dest/site/ro-RO.xml b/translation/dest/site/ro-RO.xml index 50102e5d9b..13ef03ec3c 100644 --- a/translation/dest/site/ro-RO.xml +++ b/translation/dest/site/ro-RO.xml @@ -726,8 +726,6 @@ Activează modul „copil” Dezactivează modul „copil” Securitate - Aceasta este o listă cu device-urile conectate la contul dvs.. Revocați orice sesiune pe care nu o recunoașteți. - Alternativ, puteți %s. Sesiuni revocați toate sesiunile Joacă șah oriunde @@ -907,4 +905,13 @@ Bine ați venit! Lichess este o asociație non-profit și un software gratuit și open-source. Toate costurile de operare și de dezvoltare sunt finanțate doar din donațiile utilizatorilor. + Anulează turneul + Descrierea turneului + Vrei să spui participanților ceva special? Încearcă să fii succint. Poți folosi legături Markdown: [name](https://url) + Numai membrii echipei + Fără restricții + %s este disponibil pentru sintaxă mai avansată. + În fusul orar local + Doar lideri de echipă + Doar membrii echipei diff --git a/translation/dest/site/ru-RU.xml b/translation/dest/site/ru-RU.xml index a5913939f9..93cd99b4d8 100644 --- a/translation/dest/site/ru-RU.xml +++ b/translation/dest/site/ru-RU.xml @@ -764,8 +764,6 @@ Включить детский режим Отключить детский режим Безопасность - Это список устройств, с которых входили в ваш аккаунт. Закройте все подозрительные сеансы. - Также вы можете %s. Сессии закрыть все сессии Играйте в шахматы везде @@ -951,4 +949,33 @@ Все операционные расходы, разработки и контент финансируются исключительно за счёт пожертвований пользователей. Для тренеров Для стримеров + Отменить турнир + Описание турнира + Всё, что вы хотите рассказать участникам. Будьте краткими. Для ссылок доступна разметка Markdown: [name](https://url) + Игры идут с обсчётом рейтинга +и влияют на рейтинг игроков + Только для членов клуба + Без ограничений + Минимум рейтинговых игр + Минимальный рейтинг + Максимальный еженедельный рейтинг + Только игроки со званиями + Требует официального звания для участия в турнире + Вставьте правильную строку FEN, чтобы каждая игра начиналась с заданной позиции. +Это работает только для стандартных игр, но не с вариантами. +Вы можете использовать %s для создания позиции FEN, а затем вставить её здесь. +Оставьте поле пустым, чтобы игры начинались с обычной начальной позиции. + Отменить сеанс + Цвет сеансёра в каждой партии + Предполагаемое время начала сеанса + Показывать на %s + Показывать сеанс на %s. Отключите для частных сеансов. + Описание сеанса + Хотите что-нибудь сказать участникам? + %s доступен для расширенного форматирования. + В вашем часовом поясе + Чат турнира + Без чата + Только организаторы клуба + Только члены клуба diff --git a/translation/dest/site/si-LK.xml b/translation/dest/site/si-LK.xml index e9bf0d164c..0087f1acae 100644 --- a/translation/dest/site/si-LK.xml +++ b/translation/dest/site/si-LK.xml @@ -25,6 +25,7 @@ You play the white pieces You play the white pieces ඔබගේ වාරය! + වංචා කර ඇත රජු කෙන්ද්‍රයේය වැටලුම් තුනක් තරඟය අවසන් @@ -34,6 +35,10 @@ ක්‍රීඩාවට සම්බන්ධ වන්න සෙල්ලම් කිරීමට සුදු සෙල්ලම් කිරීමට කළු + + ඔබගේ ප්‍රතිවාදියා තරඟය හැර ගොස් ඇත. තව තත්පරය්%s කින් ඔබට ජයග්‍රණයට හිමිකම් කීමට හැකියාව තිබේ. + ඔබගේ ප්‍රතිවාදියා තරඟය හැර ගොස් ඇත. තව තත්පර %s කින් ඔබට ජයග්‍රණයට හිමිකම් කීමට හැකියාව තිබේ. + අනෙක් ක්‍රීඩකයා ක්‍රීඩාවෙන් ඉවත් වන්නට ඇත. ඔබට ජයග්‍රහණයට හිමිකම් කීමට, ක්‍රීඩාව දිනුම් ඇදීමක් ලෙස හැඳින්විමට, නැතහොත් රැඳී සිටින්න. ඔබේ විරුද්ධවාදියා ඉල්ලා අස්වීමට ජයග්‍රහණය ඉල්ලා සිටින්න @@ -145,6 +150,63 @@ තරඟ සාකච්ඡා මණ්ඩපය %1$sposted in topic%2$s + නවතම පෝරම සටහන් + ක්‍රීඩකයන් + යහළුවන් + සංවාද + අද + ඊයේ + එක් පැත්තකට මිනිත්තු + වර්ගය + වර්ග + කාල පරාසය + සත්‍ය වේලාව + දීර්ඝ කාල පරාසය + දින ගණන + එක් දිනක් + + %s දිනක් + %s දින + + + %s පැයක් + %s පැය + + වෙලාව + තක්සේරු + තක්සේරු තත්වය + පරිශීලක නාමය + පරිශීලක නාමය හෝ ඊ තැපෑල + පරිශීලක නාමය වෙනස් කරන්න + වෙනස් විය හැක්කේ අක්ෂරවල සිද්ධිය පමණි. උදාහරණයක් ලෙස \"ජොන්ඩෝ\" සිට \"ජෝන්ඩෝ\". + ඔබගේ පරිශීලක නාමය වෙනස් කරන්න. මෙය කළ හැක්කේ එක් වරක් පමණක් වන අතර ඔබේ පරිශීලක නාමයේ ඇති අකුරු වෙනස් කිරීමට ඔබට අවසර ඇත. + මුරපදය + මුරපදය වෙනස් කරන්න + විද්‍යුත් තැපෑල වෙනස් කරන්න + ඊතැපෑල + මුරපදය වෙනස් කරන්න + මුරපදය මතක නැහැ? + ශ්‍රේණිය + ශ්‍රේණිය %s + + ශ්‍රේණිය සෑම මිනිත්තුවකම යාවත්කාලීන වේ + සෑම මිනිත්තු %s ශ්‍රේණිය යාවත්කාලීන වේ + + ක්‍රීඩා කල ක්‍රීඩා ගණන + අවලංගු කරන්න + සුදුගේ වේලාව ඉවතට + කලුගේ වේලාව ඉවතට + සමාන කිරීමේ අවස්තාව යවා ඇත + සමාන කිරීමේ අවස්තාව ප්‍රතික්ශේප කරයි + සමාන කිරීමේ අවස්තාව පිලිගනී + සමාන කිරීමේ අවස්තාව අවලංගු කරයි + සුදු සමාන කිරීමේ අවස්තාවක් එවා ඇත + කලු සමාන කිරීමේ අවස්තාවක් එවා ඇත + සුදු සමාන කිරීමේ අවස්තාව ප්‍රතික්ශේප කරයි + කලු සමාන කිරීමේ අවස්තාව ප්‍රතික්ශේප කරයි + ඔබගේ ප්‍රතිවාදියා සමාන කිරීමේ අවස්තාවක් එවා ඇත + පිලිගන්නවා + ප්‍රතික්ෂේප කරන්න දැන් තරඟ කරයි දැන් තරඟ කරයි අවසානයි diff --git a/translation/dest/site/sk-SK.xml b/translation/dest/site/sk-SK.xml index c187f352e7..e6772c49f0 100644 --- a/translation/dest/site/sk-SK.xml +++ b/translation/dest/site/sk-SK.xml @@ -756,8 +756,6 @@ Povoliť detský režim Vypnúť detský režim Zabezpečenie - Toto je prehľad zariadení, ktoré sa prihlásili cez Váš účet. Ak niektoré zariadenie nespoznávate, môžete zrušiť jeho reláciu. - Alebo môžete %s. Pripojenia odobrať všetky relácie Hrajte šachy kdekoľvek diff --git a/translation/dest/site/sl-SI.xml b/translation/dest/site/sl-SI.xml index 375f317127..fd369eaf47 100644 --- a/translation/dest/site/sl-SI.xml +++ b/translation/dest/site/sl-SI.xml @@ -746,8 +746,6 @@ Vključite otroški način Izključite otroški način Varnost - To je seznam naprav, ki so prijavljene v tvoj račun. Prekličite vse seje, ki jih ne prepoznate. - Alternativa je %s. Seje preklic vseh sej Igraj šah kjerkoli @@ -929,4 +927,28 @@ Prenos Nastavitve za trenerja Nastavitve upravitelja pretočnega predvajanja + Prekini turnir + Opis turnirja + Kaj posebnega želite povedati udeležencem? Poskusite, da bo kratek. Na voljo so povezave do oznak: [name] (https://url) + Igre so rangirane +in vplivajo na rejtinge igralcev + Samo člani ekipe + Brez omejitev + Najmanjše število rangiranih iger + Najmanjši rejting + Najvišji tedenski rejting + Samo igralci z nazivom + Za pridružitev turnirju zahtevajte uradni naziv + Prilepite veljaven FEN, da začnete vsako igro z določenega položaja. +Deluje samo za standardne igre, ne pa tudi z različicami. +%s lahko ustvarite položaj FEN, nato pa ga prilepite sem. +Pustite prazno, da začnete igre iz običajnega začetnega položaja. + Prekliči simultanko + Barva gostitelja za vsako igro + Predvideni čas začetka + Funkcija v %s + Pokažite svojo simultanko vsem na %s. Onemogoči za zasebne simulacije. + Opis simultanke + Kaj želite povedati udeležencem? + %s je na voljo za naprednejšo skladnjo. diff --git a/translation/dest/site/sq-AL.xml b/translation/dest/site/sq-AL.xml index 0bbcc2cc61..c80cf6b473 100644 --- a/translation/dest/site/sq-AL.xml +++ b/translation/dest/site/sq-AL.xml @@ -691,8 +691,6 @@ Aktivizo modalitetin per femije Çaktivizo modalitetin per femije Siguria - Kjo eshte nje liste e pajisjeve qe kane hyre ne llogarine tuaj. Terhiq cdo seance qe nuk e njihni. - Ose mund te %s. terhiq te gjitha seksionet Luaj shah kudo Pa pagesë si vetë lichess diff --git a/translation/dest/site/sr-SP.xml b/translation/dest/site/sr-SP.xml index 57eae7c82e..48b18e99b6 100644 --- a/translation/dest/site/sr-SP.xml +++ b/translation/dest/site/sr-SP.xml @@ -709,8 +709,6 @@ Омогућите Дечији режим рада Онемогућите Дечији режим рада Сигурност - Ово је листа уређаја који су евидентирани у ваш налог. Опозовите све сесије које не препознајете. - Алтернативно, можете %s. опозвати све сесије Играј шах свуда Бесплатно као лицхесс diff --git a/translation/dest/site/sv-SE.xml b/translation/dest/site/sv-SE.xml index c2c812dfe8..69640ec6c6 100644 --- a/translation/dest/site/sv-SE.xml +++ b/translation/dest/site/sv-SE.xml @@ -692,8 +692,6 @@ Aktivera barnsäkert läge Avaktivera barnsäkert läge Säkerhet - Detta är en lista över enheter som har loggat in på ditt konto. Återkalla alla sessioner som du inte känner igen. - Alternativt kan du %s. återkalla alla sessioner Spela schack var du vill Lika gratis som lichess @@ -866,4 +864,23 @@ [Klicka för att visa mailadress] Ladda ner Välkommen! + Avbryt turneringen + Turneringsbeskrivning + Något speciellt du vill berätta för deltagarna? Försök att hålla det kort. Markdown länkar finns tillgängliga: [name](https://url) + Partier är rankade +och påverkar spelares rating + Ingen begränsning + Minst antal rankade partier + Lägsta rating + Högsta vecko-rating + Endast betitlade spelare + Kräv en officiell titel för att delta i turneringen + Avbryt simultanen + Värdfärg för varje parti + Beräknad starttid + Visa på %s + Visa din simultan för alla på %s. Inaktivera för privata simultaner. + Simultan-beskrivning + Något du vill berätta för deltagarna? + %s är tillgängligt för mer avancerad syntax. diff --git a/translation/dest/site/th-TH.xml b/translation/dest/site/th-TH.xml index ea891b262d..7c47814333 100644 --- a/translation/dest/site/th-TH.xml +++ b/translation/dest/site/th-TH.xml @@ -646,8 +646,6 @@ เปิดใช้งานโหมดสำหรับเด็ก ปิดใช้งานโหมดสำหรับเด็ก ความปลอดภัย - นี่คือรายการอุปกรณ์ที่ได้เข้าสู่บัญชีของคุณ จงยกเลิกวาระที่คุณไม่รู้จัก - อีกวิธีหนึ่งคือคุณสามารถ %s ยกเลิกวาระทั้งหมด เล่นหมากรุกได้ทุกที่ อิสระเหมือนดั่ง lichess diff --git a/translation/dest/site/tk-TM.xml b/translation/dest/site/tk-TM.xml index 993f11d89d..612860195e 100644 --- a/translation/dest/site/tk-TM.xml +++ b/translation/dest/site/tk-TM.xml @@ -638,8 +638,6 @@ kompýuter derňewi, oýun çäti we paýlaşmaga URL alýaňyz. Çaga moduny işlet Çaga moduny bekle Howpsuzlyk - Ynha hasabyňyza giriş amala aşyrlan enjamlaryň sanawy. Size degişli däl sessiýalary ýapyň. - Bolmasa %s hem mümkin. ähli sessiýalary ýapmak Her ýerde küşt oýna Lichess deýin mugt diff --git a/translation/dest/site/tl-PH.xml b/translation/dest/site/tl-PH.xml index 38949c93ef..46eae100b7 100644 --- a/translation/dest/site/tl-PH.xml +++ b/translation/dest/site/tl-PH.xml @@ -677,8 +677,6 @@ Paganahin ang Batang mode Huwag paganahin ang batang mode Seguridad - Ito ay isang listahan ng mga aparatu na nakalog-in sa iyong akawnt. Bawiin ang kahit anong sesyon na hindi mo kilala. - Altenatibong pwede mong %s. bawiin ang lahat ng sesyon Maglaro ng chess kahit saan Kasinglibre ng lichess diff --git a/translation/dest/site/tp-TP.xml b/translation/dest/site/tp-TP.xml index fbd95a5458..be989d35b2 100644 --- a/translation/dest/site/tp-TP.xml +++ b/translation/dest/site/tp-TP.xml @@ -690,8 +690,6 @@ o musi lon lipu pona. sina wile ala pana e nimi li wile ala e ilo. sitelen esun o kepeken e nasin pi jan lili o kepeken ala e nasin pi jan lili awen sona - ilo ni li kepeken e lipu lawa sina. sina sona ala e ilo pi lipu ni la, sina ken pakala e linja ona. - ante la, sina ken %s. pakala e linja ale o musi lon ma ale sama ilo Lichess la, ona li wile ala e mani @@ -863,4 +861,5 @@ sina wile e ni la, o pali e tawa ken pi jan musi tu. sina kama jo monsi e nanpa wawa %1$s pi nasin musi %2$s. tenpo lili li lon a! [pilin la sina ken lukin e ma pi lipu kon] + o kama pona! diff --git a/translation/dest/site/tr-TR.xml b/translation/dest/site/tr-TR.xml index 040577151e..349e4ce895 100644 --- a/translation/dest/site/tr-TR.xml +++ b/translation/dest/site/tr-TR.xml @@ -692,8 +692,6 @@ Çocuk modunu aktifleştir Çocuk modunu devre dışı bırak Güvenlik - Bu, hesabınıza giriş yaptığınız cihazların listesidir. Tanımadığınız veya bilmediğiniz tüm oturumları kapatın. - Ayrıca %s de yapabilirsiniz. Oturumlar tüm oturumları kaldır Her yerde satranç oyna @@ -870,4 +868,19 @@ Lichess bir yardım kuruluşudur ve tamamen özgür/açık kaynak kodlu bir yazılımdır. Tüm işletme maliyetleri, geliştirmeler ve içerikler yalnızca kullanıcı bağışları ile finanse edilmektedir. Eğitmen ayarları Yayıncı ayarları + Turnuvayı iptal et + Turnuva açıklaması + Katılımcılara söylemek istediğiniz özel bir şey var mı? Kısa tutmaya çalışın. İşaretleme bağlantılarını kullanabilirsiniz: [name](https://url) + Oyunlar derecelidir ve oyuncu puanlarını etkilemektedir + Sadece takım üyeleri + Kısıtlama yok + En düşük puanlı oyunlar + En düşük puan + Haftalık en yüksek puan + Sadece unvanlı oyuncular + Sadece resmî bir unvana sahip oyuncular turnuvaya katılsın + Her oyunda belirli bir pozisyondan başlamak için geçerli FEN yazınız. +Sadece standart oyunlarda çalışır, varyantlarda çalışmaz. +FEN pozisyonu oluşturmak için %s kullanıp buraya yazabilirsiniz. +Başlangıç pozisyonundan oynamak için boş bırakınız. diff --git a/translation/dest/site/tt-RU.xml b/translation/dest/site/tt-RU.xml index 264ab52fff..d73cb59077 100644 --- a/translation/dest/site/tt-RU.xml +++ b/translation/dest/site/tt-RU.xml @@ -653,8 +653,6 @@ Балалар осулын куй Сабый осулын кирегә куй Хәвефсезлек - Бу сезнең хисапка кергән җайланмалар исемлеге. Сез танымаган сессияләрне кире кагарга. - Альтернатив рәвештә сез %s эшли аласыз. һәр сессиядан чыгу Уйна шаһмат бөтен җирдә Личесс кебек азат diff --git a/translation/dest/site/uk-UA.xml b/translation/dest/site/uk-UA.xml index 99439885a8..f5ff2d637e 100644 --- a/translation/dest/site/uk-UA.xml +++ b/translation/dest/site/uk-UA.xml @@ -746,8 +746,6 @@ Увімкнути дитячий режим Вимкнути дитячий режим Безпека - Це список пристроїв, з котрих заходили в Ваш аккаунт. Завершіть будь-які підозрілі сеанси. - Крім того, Ви можете %s. завершити усі сеанси Грайте в шахи будь-де Безкоштовний, як і Lichess diff --git a/translation/dest/site/ur-PK.xml b/translation/dest/site/ur-PK.xml index 4bd7c418b7..cafb8d9960 100644 --- a/translation/dest/site/ur-PK.xml +++ b/translation/dest/site/ur-PK.xml @@ -668,8 +668,6 @@ کڈز موڈ آن کریں کڈز موڈ آف کریں سیکورٹی - یہ ان آلات کی فہرست ہے جنہوں نے آپ کے اکاؤنٹ میں لاگ ان کیا ہے۔ کسی بھی سیشن کو کالعدم کریں جسے آپ نہیں پہچانتے ہیں۔. - اس کے بجائے آپ %s کر سکتے ہیں. تمام سیشنز کالعدم قرار دے دیں شطرنج کھلیں ہر جگا لی چیس کی طرح مفت diff --git a/translation/dest/site/uz-UZ.xml b/translation/dest/site/uz-UZ.xml index 5f0957fbc5..dfc8ce89e5 100644 --- a/translation/dest/site/uz-UZ.xml +++ b/translation/dest/site/uz-UZ.xml @@ -672,8 +672,6 @@ Bola rejimini yoqish Bola rejimini o\'chirish Xavfsizlik - Sizning akkauntingiz bilan kirilgan qurilmalaringiz ro\'yhati. O\'zingizga tanimagan seanslarni bekor qilishingiz mumkin. - Yoki siz %s ni qilishingiz mumkin. barcha sessiyalarni bekor qilish Shahmatni xamma joyda o\'ynash Lichess kabi bepul diff --git a/translation/dest/site/vi-VN.xml b/translation/dest/site/vi-VN.xml index e4337c55b3..c884e793ce 100644 --- a/translation/dest/site/vi-VN.xml +++ b/translation/dest/site/vi-VN.xml @@ -653,7 +653,6 @@ Kích hoạt chế độ trẻ em Tắt chế độ trẻ em Bảo mật - Ngoài ra, bạn có thể %s. xóa toàn bộ phiên đăng nhập Chơi cờ ở bất cứ đâu Miễn phí như lichess diff --git a/translation/dest/site/zh-CN.xml b/translation/dest/site/zh-CN.xml index 85bb6edc0f..191ac1f1af 100644 --- a/translation/dest/site/zh-CN.xml +++ b/translation/dest/site/zh-CN.xml @@ -654,7 +654,6 @@ 打开儿童模式 关闭儿童模式 安全 - 或者你可以 %s。 注销所有会话 在任何地方下棋! Lichess 永远免费 diff --git a/translation/dest/site/zh-TW.xml b/translation/dest/site/zh-TW.xml index 2e4d0c24d1..463bf5d0b3 100644 --- a/translation/dest/site/zh-TW.xml +++ b/translation/dest/site/zh-TW.xml @@ -652,7 +652,6 @@ 啟用兒童模式 停用兒童模式 資訊安全相關設定 - 或者,您可以%s 登出所有裝置 随处下棋! 完全又永遠的免費。 diff --git a/translation/dest/storm/da-DK.xml b/translation/dest/storm/da-DK.xml index 8254d7be1e..ad49fea07f 100644 --- a/translation/dest/storm/da-DK.xml +++ b/translation/dest/storm/da-DK.xml @@ -38,6 +38,7 @@ Race fuldført! Tilskuere Deltag i racet! + Start racet Din rang: %s Vent på omkamp Næste race diff --git a/translation/dest/storm/de-DE.xml b/translation/dest/storm/de-DE.xml index 8ca72d0f32..a49072aef1 100644 --- a/translation/dest/storm/de-DE.xml +++ b/translation/dest/storm/de-DE.xml @@ -38,6 +38,7 @@ Rennen abgeschlossen! Zuschauen Nimm am Rennen teil! + Starte das Rennen Deine Platzierung: %s Warte auf ein neues Rennen Nächstes Rennen diff --git a/translation/dest/storm/el-GR.xml b/translation/dest/storm/el-GR.xml index 528664ac0e..c3e21bca51 100644 --- a/translation/dest/storm/el-GR.xml +++ b/translation/dest/storm/el-GR.xml @@ -38,6 +38,7 @@ Ο αγώνας ολοκληρώθηκε! Παρακολούθηση Λάβετε μέρος στον αγώνα! + Εκκίνηση αγώνα Κατάταξη: %s Αναμονή για ρεβάνς Επόμενος αγώνας diff --git a/translation/dest/storm/en-US.xml b/translation/dest/storm/en-US.xml index d22158e99f..c8fb40b904 100644 --- a/translation/dest/storm/en-US.xml +++ b/translation/dest/storm/en-US.xml @@ -38,6 +38,7 @@ Race complete! Spectating Join the race! + Start the race Your rank: %s Wait for rematch Next race diff --git a/translation/dest/storm/eo-UY.xml b/translation/dest/storm/eo-UY.xml index 3ea04e700d..3e61d133d8 100644 --- a/translation/dest/storm/eo-UY.xml +++ b/translation/dest/storm/eo-UY.xml @@ -1,2 +1,15 @@ - + + Movu por komenci + Vi ludas per la blankaj pecoj en ĉiuj puzloj + Vi ludas per la nigraj pecoj en ĉiuj puzloj + puzloj solvitaj + Reludi + Movoj + Precizeco + Tempo + Tempo por movo + Luditaj puzloj + Via poentaro: %s + Kreu novan ludon + diff --git a/translation/dest/storm/es-ES.xml b/translation/dest/storm/es-ES.xml index c1ebd44c93..bd19350e27 100644 --- a/translation/dest/storm/es-ES.xml +++ b/translation/dest/storm/es-ES.xml @@ -38,6 +38,7 @@ ¡Carrera completada! Observando ¡Únete a la carrera! + Comienza la competencia Tu puntuación: %s Espera para la revancha Siguiente carrera diff --git a/translation/dest/storm/fa-IR.xml b/translation/dest/storm/fa-IR.xml index 2ba49731ec..c2ce755308 100644 --- a/translation/dest/storm/fa-IR.xml +++ b/translation/dest/storm/fa-IR.xml @@ -1,6 +1,13 @@ برای شروع حرکت کنید + شما تمام پازل ها را با رنگ سفید بازی میکنید + شما تمام پازل ها را با رنگ سیاه بازی میکنید + معماها حل شد + رکورد جدید روزانه! + رکورد جدید هفتگی! + رکورد جدید ماهانه! + شروع مسابقه ایجاد یک بازی جدید به یک مسابقه عمومی بپیوندید رد کردن diff --git a/translation/dest/storm/fi-FI.xml b/translation/dest/storm/fi-FI.xml index 1b220e43e9..df2b9e0d9e 100644 --- a/translation/dest/storm/fi-FI.xml +++ b/translation/dest/storm/fi-FI.xml @@ -38,6 +38,7 @@ Kisa on päättynyt! Katsomassa Liity kisaan! + Aloita kisa Sijoituksesi: %s Odota revanssia Seuraava kisa diff --git a/translation/dest/storm/fr-FR.xml b/translation/dest/storm/fr-FR.xml index 5d85258f48..b113a8c6d7 100644 --- a/translation/dest/storm/fr-FR.xml +++ b/translation/dest/storm/fr-FR.xml @@ -22,11 +22,11 @@ Score Coups Précision - Enchaînement + Combo Temps Temps par coup Prob. résolu le plus difficile - Problèmes faits + Problèmes joués Nouvel essai (raccourci clavier: Espace) Terminer l\'essai (raccourci clavier: Entrée) Meilleurs scores diff --git a/translation/dest/storm/he-IL.xml b/translation/dest/storm/he-IL.xml index 3ea04e700d..76a73af17d 100644 --- a/translation/dest/storm/he-IL.xml +++ b/translation/dest/storm/he-IL.xml @@ -1,2 +1,28 @@ - + + זוז כדי להתחיל + אתה משחק בלבן בכל החידות + אתה משחק בשחור בכל החידות + חידות נפתרו + שיא יומי חדש! + שיא שבועי חדש! + שיא חודשי חדש! + שיא חדש בכל הזמנים! + שיא קודם היה %s + שחק שוב + ניקוד + מהלכים + דיוק + רצף + זמן + הצטרפו למירוץ! + הדרגה שלך: %s + המתן למשחק חוזר + מחכה להתחיל + צור משחק חדש + הצטרפו למירוץ ציבורי + התחרה עם חבריך + דלג + אתה יכול לדלג פעם אחת לכל מרוץ: + דלג על מהלך זה כדי לשמור על הקומבו שלך! עובד רק פעם אחת במירוץ. + diff --git a/translation/dest/storm/pt-PT.xml b/translation/dest/storm/pt-PT.xml index e603c3fb37..07a39dfd77 100644 --- a/translation/dest/storm/pt-PT.xml +++ b/translation/dest/storm/pt-PT.xml @@ -38,10 +38,12 @@ Corrida concluída! A assistir Junta-te à corrida! + Começar a corrida A tua posição: %s Espera pela desforra Próxima corrida Esperando pelo início + Criar um novo jogo Junta-te a uma corrida pública ignorar Pode pular um movimento por corrida: diff --git a/translation/dest/storm/tr-TR.xml b/translation/dest/storm/tr-TR.xml index 20ba2f6fac..325fbc85e3 100644 --- a/translation/dest/storm/tr-TR.xml +++ b/translation/dest/storm/tr-TR.xml @@ -38,6 +38,7 @@ Yarış sona erdi! İzleyici modu Yarışa katıl! + Yarışı başlat Sıralamanız: %s Rövanş için bekle Sıradaki yarış diff --git a/translation/dest/storm/uk-UA.xml b/translation/dest/storm/uk-UA.xml index d4c789d657..3933a30fbc 100644 --- a/translation/dest/storm/uk-UA.xml +++ b/translation/dest/storm/uk-UA.xml @@ -40,6 +40,7 @@ Приготуйтеся! Очікуємо інших гравців... Гонка завершена! + Спостерігати Приєднатися до гонки! Ваше місце: %s Очікування реваншу diff --git a/translation/dest/streamer/de-CH.xml b/translation/dest/streamer/de-CH.xml index c75c5a5a54..693aea1e3c 100644 --- a/translation/dest/streamer/de-CH.xml +++ b/translation/dest/streamer/de-CH.xml @@ -1,50 +1,50 @@ - Lichess Streamer - Lichess Streamer + Lichess Schtriimer/-in + Lichess Schtriimer/-in LIVE! OFFLINE - Streamt gerade: %s - Letzter Stream %s - Werd en Lichess Streamer - Hast du einen Twitch oder YouTube-Kanal? + Schtriimt grad: %s + Letschtä Schtriim %s + Wird än Lichess Schtriimer / ä Lichess Schtriimerin + Häsch du än Twitch- oder än YouTube-Kanal? Los geht\'s! - Alle Streamer - Streamerseite bearbeiten - Deine Streamerseite - Lade das Streamerpaket herunter - %s streamt gerade - Streaming-Regeln - Füäg s\'Stichwort \"lichess.org\" i dim Streamtitäl ii und verwänd d\'Kategorie \"Chess\", wänn du uf Lichess streamsch. - Entferne das Stichwort, wenn du gerade nicht Lichess-bezogen streamst. - Lichess wird automatisch deinen Stream erkennen und folgende Zusatzdienste aktivieren: - Vorteile für das Streamen mit dem Schlüsselwort - Erhalte ein flammendes Streamer-Symbol auf deinem Lichess-Profil. - Werde an die Spitze der Streamerliste gesetzt. + Alli Schtriimer/-innä + Schtriimersiitä bearbeitä + Dini Schtriimersiitä + Lad s\'Schtriimerpaket abä + %s schtriimt grad + Schtriimer-Reglä + Füäg s\'Stichwort \"lichess.org\" i dim Schtriimtitäl ii und verwänd d\'Kategorie \"Chess\", wänn du uf Lichess schtriimsch. + Entfärn s\'Stichwort, wänn du grad nöd Lichess-bezogä schtriimsch. + Lichess wird automatisch din Schtriim ärkänä und folgändi Zuäsatzdiänscht aktiviärä: + Vorteil fürs Schtriimä mitämä Schlüssälwort + Bechum äs flammänds Schtriimer-Symbol uf dim Lichess-Profil. + Wird ad Schpitzä vodä Schtriimerlischtä gsetzt. Benachrichtige deine Lichess-Follower. - Zeige deinen Stream in deinen Spielen, Turnieren und Studien. - Dein Stream wurde genehmigt. - Dein Stream wird von Moderatoren überprüft. - Bitte fülle deine Streamer-Informationen aus und lade ein Bild hoch. - Wenn du bereit bist als Streamer angezeigt zu werden, %s - fordere eine Überprüfung durch Moderatoren an - Falls du in einer anderen Sprache als Englisch streamst, füge die richtige Sprachmarkierung (%s) am Anfang deines Streamtitels ein, eingeschlossen von eckigen Klammern. Zum Beispiel \"[DE]\" für deutsch, \"[TR]\" für türkisch, \"[FR]\" für französisch usw. -Das kannst du auf Twitch oder YouTube einstellen, nicht in den Lichess-Streamereinstellungen. -Falls dein Stream in Englisch ist, bruchst du keine Sprachmarkierung einfügen. + Zeig din Schtriim i dinä Schpiil, Turniär und Schtuudiä. + Din Schtriim isch genehmigät wordä. + Din Schtriim wird vo Moderatorä überprüäft. + Bitte füll dini Schtriimer-Informationä us und lad äs Bildli uä. + Wenn du parat bisch, als Schtriimer/-in aazeigt z\'wärdä, %s + fordärä än Überprüäfig dur Moderatorä aa + Falls du inärä andärä Schproch als Änglisch schtriimsch, füäg di richtig Sprochmarkiärig (%s) am Afang vom Schtriimtitäl ii, inklusive eggigä Chlammärä. Zum Biischpiil \"[DE]\" für hochdüütsch, \"[TR]\" für türkisch, \"[FR]\" für französisch usw. +Das chasch du uf Twitch oder YouTube iischtelä, nöd idä Lichess-Schtriimeriischtelligä. +Falls din Schtriim uf Änglisch isch, muäsch kei Schprochmarkiärig iifüägä. Din Twitch-Benutzernamä oder d\'URL Optional. Leer lassen falls nicht verfügbar Dini YouTube-Kanal-ID oder -URL - Dein Streamername auf Lichess + Din Schtriimernamä uf Lichess Kurz fassen: Maximal %s Zeichen Kurz halten: Maximal %s Zeichen - Sichtbar auf der Streamerseite + Sichtbar uf dä Schtriimersiitä Sobald von den Moderatoren genehmigt Titel - Erzähle uns in einem Satz etwas über deinen Stream + Verzell üs i eim Satz öppis über din Schtriim Ausführliche Beschreibung - %s Streamerbild + %s Schtriimerbildli Ändere/Lösche dein Bild Lade ein Bild hoch Lösche ein Bild diff --git a/translation/dest/study/fi-FI.xml b/translation/dest/study/fi-FI.xml index f5059cfc2c..88be63b324 100644 --- a/translation/dest/study/fi-FI.xml +++ b/translation/dest/study/fi-FI.xml @@ -123,8 +123,8 @@ Kiinnitetty tutkielmakommentti Aloita Tallenna - Tyhjennä chatti - Poista tutkielman chattihistoria? Paluuta ei ole! + Tyhjennä keskustelu + Haluatko poistaa tutkielman keskusteluhistorian? Et voi palauttaa sitä enää! Poista tutkielma Poista koko tutkielma? Paluuta ei ole! Missä haluat tutkia? diff --git a/translation/dest/swiss/da-DK.xml b/translation/dest/swiss/da-DK.xml index c4ad6700ab..9f3ac4a47f 100644 --- a/translation/dest/swiss/da-DK.xml +++ b/translation/dest/swiss/da-DK.xml @@ -5,4 +5,11 @@ Se runden Se alle %s runder + Startdato for turnering + Antal runder + Et ulige antal runder giver optimal farvebalance. + Interval mellem runder + Forbudte parringer + Brugernavne på spillere der ikke må spille sammen (for eksempel søskende). To brugernavne pr. linje, adskilt af et mellemrum. + Ny monradturnering diff --git a/translation/dest/swiss/de-DE.xml b/translation/dest/swiss/de-DE.xml index 7abd22275b..8faf939a87 100644 --- a/translation/dest/swiss/de-DE.xml +++ b/translation/dest/swiss/de-DE.xml @@ -5,4 +5,11 @@ Die Runde ansehen Alle %s Runden ansehen + Turnier-Startzeit + Anzahl der Runden + Eine ungerade Anzahl an Runden ermöglicht eine optimale Farbverteilung. + Zeitabstand zwischen Runden + Verbotene Paarungen + Benutzernamen von Spielern, die nicht gegeneinander spielen dürfen (zum Beispiel Geschwister). Zwei Benutzernamen pro Zeile, getrennt durch ein Leerzeichen. + Neues Turnier nach Schweizer System diff --git a/translation/dest/swiss/el-GR.xml b/translation/dest/swiss/el-GR.xml index e7090b36e9..ce46754b4b 100644 --- a/translation/dest/swiss/el-GR.xml +++ b/translation/dest/swiss/el-GR.xml @@ -5,4 +5,11 @@ Δείτε τον γύρο Δείτε όλους τους %s γύρους + Ημερομηνία έναρξης τουρνουά + Αριθμός γύρων + Ένας περιττός αριθμός γύρων βοηθάει στη βέλτιστη ισορροπία χρωμάτων. + Διάστημα μεταξύ γύρων + Απαγορευμένες κληρώσεις + Ονόματα χρηστών των παικτών που δεν πρέπει να παίξουν μαζί (για παράδειγμα δύο αδέρφια). Εισάγετε δύο ονόματα χρήστη σε κάθε γραμμή, με ένα κενό ανάμεσα. + Νέο Ελβετικό πρωτάθλημα diff --git a/translation/dest/swiss/en-US.xml b/translation/dest/swiss/en-US.xml index 65e7602582..4050ef0d23 100644 --- a/translation/dest/swiss/en-US.xml +++ b/translation/dest/swiss/en-US.xml @@ -5,4 +5,11 @@ View the round View all %s rounds + Tournament start date + Number of rounds + An odd number of rounds allows optimal color balance. + Interval between rounds + Forbidden pairings + Usernames of players that must not play together (Siblings, for instance). Two usernames per line, separated by a space. + New Swiss tournament diff --git a/translation/dest/swiss/es-ES.xml b/translation/dest/swiss/es-ES.xml index 1bb0275ed6..fa624ffa95 100644 --- a/translation/dest/swiss/es-ES.xml +++ b/translation/dest/swiss/es-ES.xml @@ -3,6 +3,6 @@ Torneos suizos Ver la ronda - Ver todas las %s rondas + Ver las %s rondas diff --git a/translation/dest/swiss/et-EE.xml b/translation/dest/swiss/et-EE.xml index f23412f424..12dbba537b 100644 --- a/translation/dest/swiss/et-EE.xml +++ b/translation/dest/swiss/et-EE.xml @@ -5,4 +5,5 @@ Vaata vooru Vaata kõiki %s vooru + Uus Šveitsi turniir diff --git a/translation/dest/swiss/eu-ES.xml b/translation/dest/swiss/eu-ES.xml index e381830117..032e79ed12 100644 --- a/translation/dest/swiss/eu-ES.xml +++ b/translation/dest/swiss/eu-ES.xml @@ -5,4 +5,11 @@ Txanda ikusi %s txandak ikusi + Txapelketaren hasiera data + Txanda kopurua + Txanda kopuru bakoitiak partidetako koloreak era egokian banatzen ditu. + Txanden arteko itxaron-denbora + Debekatutako parekatzeak + Elkarren artean jokatu ezin duten jokalarien erabiltzaile-izenak. Lerro bakoitzean espazioaren banatutako bi erabiltzaile-izen idatzi. + Txapelketa Suitzar berria diff --git a/translation/dest/swiss/fa-IR.xml b/translation/dest/swiss/fa-IR.xml index a91a3eef43..106203b241 100644 --- a/translation/dest/swiss/fa-IR.xml +++ b/translation/dest/swiss/fa-IR.xml @@ -1,4 +1,8 @@ مسابقات فرمت سوئیسی + زمان آغاز مسابقه + تعداد دورها + فاصله بین دورها + مسابقه سوئیسی جدید diff --git a/translation/dest/swiss/fi-FI.xml b/translation/dest/swiss/fi-FI.xml index e219f16efc..57084e9eda 100644 --- a/translation/dest/swiss/fi-FI.xml +++ b/translation/dest/swiss/fi-FI.xml @@ -5,4 +5,11 @@ Näytä kierros Näytä kaikki %s kierrosta + Turnauksen alkamisaika + Kierrosten määrä + Parittomalla kierrosten määrällä värit jakautuvat tasapainoisimmin. + Kierrosten välinen aika + Kielletyt parit + Määritä pelaajat, joiden ei tule pelata toisiaan vastaan (esim. sisarukset). Kirjoita kullekin riville kaksi käyttäjätunnusta välilyönnillä erotettuna. + Uusi sveitsiläinen turnaus diff --git a/translation/dest/swiss/fr-FR.xml b/translation/dest/swiss/fr-FR.xml index 4113f1878d..d59a380818 100644 --- a/translation/dest/swiss/fr-FR.xml +++ b/translation/dest/swiss/fr-FR.xml @@ -5,4 +5,11 @@ Voir la ronde Voir les %s rondes en détail + Date de début du tournoi + Nombre de rondes + Un nombre impair de rondes permet une alternance optimale des couleurs. + Délai entre les rondes + Appariements interdits + Noms d\'utilisateur des joueurs qui ne doivent pas jouer ensemble (frères et sœurs, par exemple). Deux noms d\'utilisateur par ligne, séparés par un espace. + Nouveau tournoi suisse diff --git a/translation/dest/swiss/he-IL.xml b/translation/dest/swiss/he-IL.xml index 7e2043bdf7..d1214e4335 100644 --- a/translation/dest/swiss/he-IL.xml +++ b/translation/dest/swiss/he-IL.xml @@ -1,4 +1,10 @@ טורנירים שוויצרי + + צפו בסיבוב + צפו בכל %s הסיבובים + צפו בכל %s הסיבובים + צפו בכל %s הסיבובים + diff --git a/translation/dest/swiss/hu-HU.xml b/translation/dest/swiss/hu-HU.xml index d9fd6463e1..38c048b9a7 100644 --- a/translation/dest/swiss/hu-HU.xml +++ b/translation/dest/swiss/hu-HU.xml @@ -5,4 +5,11 @@ Forduló megtekintése Mind a %s forduló megtekintése + Verseny kezdési ideje + Fordulók száma + Páratlan számú fordulók kiegyensúlyozottabb színpárosítást tesznek lehetővé. + Fordulók közötti szünet + Tiltott párosítások + Játékosok felhasználónevei amelyek nem játszhatnak egymás ellen (például testvérek). Két felhasználónév soronként, szóközzel elválasztva. + Új svájci rendszerű verseny diff --git a/translation/dest/swiss/ja-JP.xml b/translation/dest/swiss/ja-JP.xml index ed8b392b2d..4f162ee992 100644 --- a/translation/dest/swiss/ja-JP.xml +++ b/translation/dest/swiss/ja-JP.xml @@ -4,4 +4,11 @@ %s ラウンドを表示 + トーナメント開始日 + ラウンド数 + ラウンド数は奇数のほうが色のバランスがよくなります。 + ラウンド間のインターバル時間 + 禁止ペアリング + 対戦しないプレイヤーのユーザー名(兄弟姉妹など)。1 行につき 2 つのユーザー名を半角スペースで区切って並べます。 + 新しいスイス式トーナメント diff --git a/translation/dest/swiss/lt-LT.xml b/translation/dest/swiss/lt-LT.xml index ed2b80d3b0..1af8e7f579 100644 --- a/translation/dest/swiss/lt-LT.xml +++ b/translation/dest/swiss/lt-LT.xml @@ -7,4 +7,11 @@ Peržvelgti visus %s raundo Peržvelgti visus %s raundų + Turnyro pradžios data + Raundų skaičius + Nelyginis raundų skaičius užtikrina žaidžiamų spalvų balansą. + Tarpai tarp raundų + Neleistinos poros + Vartotojai, kurie negali žaisti akrtu (pvz. broliai, sesės). Du vartotojų vardai per eilutę, atskirti tarpu. + Naujas Šveicariškas turnyras diff --git a/translation/dest/swiss/lv-LV.xml b/translation/dest/swiss/lv-LV.xml index dddf655534..6ee4f651eb 100644 --- a/translation/dest/swiss/lv-LV.xml +++ b/translation/dest/swiss/lv-LV.xml @@ -6,4 +6,11 @@ Skatīt %s kārtu Skatīt %s kārtas + Turnīra sākuma datums + Raundu skaits + Nepāra raundu skaits atļauj noturēt vislabāko krāsu līdzsvaru. + Laiks starp raundiem + Neatļautie pāri + Spēlētāji, kuri nedrīkst spēlēt kopā (piemēram brāļi vai māsas). Katrā rindā, ar atstarpi atdalīti, divi lietotājvārdi. + Jauns Šveices turnīrs diff --git a/translation/dest/swiss/nb-NO.xml b/translation/dest/swiss/nb-NO.xml index aee9888042..158d7f146b 100644 --- a/translation/dest/swiss/nb-NO.xml +++ b/translation/dest/swiss/nb-NO.xml @@ -5,4 +5,6 @@ Vis runden Vis alle %s rundene + Antall runder + Ny sveitserturnering diff --git a/translation/dest/swiss/nl-NL.xml b/translation/dest/swiss/nl-NL.xml index f9f0f92161..933c4827ca 100644 --- a/translation/dest/swiss/nl-NL.xml +++ b/translation/dest/swiss/nl-NL.xml @@ -5,4 +5,11 @@ Bekijk de ronde Bekijk alle %s rondes + Begindatum toernooi + Aantal rondes + Een oneven aantal rondes zorgt voor een optimale kleurenbalans. + Interval tussen rondes + Verboden paringen + Gebruikersnamen van spelers waarvan je niet wilt dat ze tegen elkaar zullen spelen (bijvoorbeeld broers en zussen). Vul twee gebruikersnamen per regel in, gescheiden door een spatie. + Nieuw Zwitsers toernooi diff --git a/translation/dest/swiss/nn-NO.xml b/translation/dest/swiss/nn-NO.xml index 818e33e6e7..dca404e38d 100644 --- a/translation/dest/swiss/nn-NO.xml +++ b/translation/dest/swiss/nn-NO.xml @@ -5,4 +5,11 @@ Vis runden Vis alle %s rundar + Startdato for turneringa + Antal rundar + Eit ulike antal rundar gjer optimal fargefordeling. + Intervall mellom rundar + Forbodne parsamansetjingar + Brukernamn for spelarar som ikkje må spela saman (til dømes sysken). To brukarnamn per linje, skilde med eit mellomrom. + Ny sveitserturnering diff --git a/translation/dest/swiss/pt-BR.xml b/translation/dest/swiss/pt-BR.xml index 6f436287d9..b685f61f73 100644 --- a/translation/dest/swiss/pt-BR.xml +++ b/translation/dest/swiss/pt-BR.xml @@ -5,4 +5,11 @@ Ver a rodada Ver todas as %s rodadas + Data de início do torneio + Número de rodadas + Um número ímpar de rodadas permite um equilíbrio ideal das cores. + Intervalo entre rodadas + Pareamentos proibidos + Nomes de usuários de jogadores que não devem jogar juntos (irmãos, por exemplo). Dois nomes por linha, separados por espaço. + Novo torneio suíço diff --git a/translation/dest/swiss/pt-PT.xml b/translation/dest/swiss/pt-PT.xml index 4dd0ebc19d..1745058286 100644 --- a/translation/dest/swiss/pt-PT.xml +++ b/translation/dest/swiss/pt-PT.xml @@ -5,4 +5,11 @@ Ver a ronda Ver todas as %s equipas + Data de início do torneio + Número de rondas + Um número ímpar de rondas permite um equilíbrio de cores ideal. + Intervalo entre rondas + Emparelhamentos proibidos + Nomes de utilizador de jogadores que não devem jogar juntos (irmãos, por exemplo). Dois nomes de utilizador por linha, separados por um espaço. + Novo torneio em sistema Suíço diff --git a/translation/dest/swiss/ro-RO.xml b/translation/dest/swiss/ro-RO.xml index 6cf9cf697c..768f675dc1 100644 --- a/translation/dest/swiss/ro-RO.xml +++ b/translation/dest/swiss/ro-RO.xml @@ -6,4 +6,9 @@ Vezi toate cele %s runde Vezi toate cele %s de runde + Data de începere a turneului + Număr de runde + Interval între runde + Asocieri interzise + Numele de utilizator ale jucătorilor care nu trebuie să se joace împreună (frați, de exemplu). Două nume de utilizator pe linie, separate de un spațiu. diff --git a/translation/dest/swiss/ru-RU.xml b/translation/dest/swiss/ru-RU.xml index d6625c1b86..9863cff5c5 100644 --- a/translation/dest/swiss/ru-RU.xml +++ b/translation/dest/swiss/ru-RU.xml @@ -7,4 +7,11 @@ Посмотреть все %s раундов Посмотреть все %s раундов + Дата начала турнира + Количество туров + Нечётное количество туров даёт оптимальный баланс цвета для всех игроков. + Перерыв между турами + Запрещённые пары + Имена игроков, которые не должны играть вместе (например, родственники). По два имени в строке, разделённые пробелами. + Новый турнир по швейцарской системе diff --git a/translation/dest/swiss/zh-TW.xml b/translation/dest/swiss/zh-TW.xml index 8526872978..98a2decfb9 100644 --- a/translation/dest/swiss/zh-TW.xml +++ b/translation/dest/swiss/zh-TW.xml @@ -1,4 +1,5 @@ 積分循環制錦標賽 + 回合數 diff --git a/translation/dest/team/fi-FI.xml b/translation/dest/team/fi-FI.xml index 4c63356edf..9cbbeeb2d6 100644 --- a/translation/dest/team/fi-FI.xml +++ b/translation/dest/team/fi-FI.xml @@ -42,7 +42,7 @@ Pelaajat, jotka eivät mielellään ota vastaan viestejäsi, saattavat lähteä Johtamani joukkueet Saatat haluta linkata yhden näistä tulevista turnauksista? Käyttäjät, jotka voivat hallita tätä joukkuetta - Johtajien chat + Johtajien keskustelu Sulje joukkue Sulkee joukkueen pysyvästi. Joukkueen salasana diff --git a/translation/dest/tfa/fa-IR.xml b/translation/dest/tfa/fa-IR.xml index efba94d743..e3c5653b1d 100644 --- a/translation/dest/tfa/fa-IR.xml +++ b/translation/dest/tfa/fa-IR.xml @@ -1,4 +1,5 @@ احراز هویت دومرحله‌ای + احراز هویت دو مرحله ای یک لایه امنیتی دیگر به حساب شما اضافه میکند. diff --git a/translation/dest/tourname/da-DK.xml b/translation/dest/tourname/da-DK.xml index 1e2676f7e2..40a34e058a 100644 --- a/translation/dest/tourname/da-DK.xml +++ b/translation/dest/tourname/da-DK.xml @@ -1,47 +1,47 @@ - Hurtigskak-arena hver time - Hurtigskak hver time + Rapid Arena hver time + Rapid hver time %s Arena hver time %s hver time - Daglig Hurtigskak-arena - Daglig Hurtigskak - Daglig Klassisk-arena - Daglig Klassisk + Daglig Rapid Arena + Daglig Rapid + Daglig Classical Arena + Daglig Classical Daglig %s Arena Daglig %s - Østlig Hurtigskak-arena - Østlig Hurtigskak - Østlig Klassisk-arena - Østlig Klassisk + Østlig Rapid Arena + Østlig Rapid + Østlig Classical Arena + Østlig Classical Østlig %s Arena Østlig %s - Ugentlig Hurtigskak-arena - Ugentlig Hurtigskak - Ugentlig Klassisk-arena - Ugentlig Klassisk + Ugentlig Rapid Arena + Ugentlig Rapid + Ugentlig Classical Arena + Ugentlig Classical Ugentlig %s Arena Ugentlig %s - Månedlig Hurtigskak-arena - Månedlig Hurtigskak - Månedlig Klassisk-arena - Månedlig Klassisk + Månedlig Rapid Arena + Månedlig Rapid + Månedlig Classical Arena + Månedlig Classical Månedlig %s Arena Månedlig %s - Årlig Hurtigskak-arena - Årlig Hurtigskak - Årlig Klassisk-arena - Årlig Klassisk + Årlig Rapid Arena + Årlig Rapid + Årlig Classical Arena + Årlig Classical Årlig %s Arena Årlig %s - Hurtigskak skjoldarena - Hurtigskak Skjold - Klassisk Skjold-arena - Klassisk Skjold + Rapid Skjold-arena + Rapid Skjold + Classical Skjold-arena + Classical Skjold %s Skjold-arena %s Skjold - %s Hurtigskak Arena - %s Hurtigskak + %s Rapid Arena + %s Rapid %s Holdkamp Elite %s Arena Elite %s From 3a6d231fb8f7255f9f655aca7d4f340ad8a293fd Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 28 Jun 2021 18:11:28 +0200 Subject: [PATCH 54/64] scalachess 10.2.4 --- project/Dependencies.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index b7f8626f3d..bf12ce19da 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -8,7 +8,7 @@ object Dependencies { val scalalib = "com.github.ornicar" %% "scalalib" % "7.0.2" val hasher = "com.roundeights" %% "hasher" % "1.2.1" val jodaTime = "joda-time" % "joda-time" % "2.10.10" - val chess = "org.lichess" %% "scalachess" % "10.2.2" + val chess = "org.lichess" %% "scalachess" % "10.2.4" val compression = "org.lichess" %% "compression" % "1.6" val maxmind = "com.sanoma.cda" %% "maxmind-geoip2-scala" % "1.3.1-THIB" val prismic = "io.prismic" %% "scala-kit" % "1.2.19-THIB213" From 1c94acdee1ccf93d7e3e7dc9cb34468c3fb3e6ec Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 28 Jun 2021 18:11:36 +0200 Subject: [PATCH 55/64] load new board editor translation - for #9274 --- app/views/board/bits.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/board/bits.scala b/app/views/board/bits.scala index 6f215aeacc..650065bde6 100644 --- a/app/views/board/bits.scala +++ b/app/views/board/bits.scala @@ -59,6 +59,7 @@ object bits { trans.flipBoard, trans.loadPosition, trans.popularOpenings, + trans.endgamePositions, trans.castling, trans.whiteCastlingKingside, trans.blackCastlingKingside, From 03549dd773fe785cf575f2bbc6ee94e1f4ced7c6 Mon Sep 17 00:00:00 2001 From: Benedikt Werner <1benediktwerner@gmail.com> Date: Mon, 28 Jun 2021 18:14:42 +0200 Subject: [PATCH 56/64] Allow disabling board scrolling (#9266) Co-authored-by: Thibault Duplessis --- app/views/account/pref.scala | 4 ++++ modules/i18n/src/main/I18nKeys.scala | 1 + modules/pref/src/main/JsonView.scala | 3 ++- modules/pref/src/main/Pref.scala | 4 ++++ modules/pref/src/main/PrefForm.scala | 10 +++++++--- modules/pref/src/main/PrefHandlers.scala | 2 ++ modules/puzzle/src/main/JsonView.scala | 1 + modules/round/src/main/JsonView.scala | 3 +++ modules/storm/src/main/StormJson.scala | 1 + translation/source/preferences.xml | 1 + ui/analyse/src/interfaces.ts | 1 + ui/analyse/src/view.ts | 2 +- ui/puz/src/interfaces.ts | 1 + ui/puzzle/src/interfaces.ts | 1 + ui/puzzle/src/view/main.ts | 5 ++++- ui/round/src/interfaces.ts | 1 + ui/round/src/view/main.ts | 2 +- 17 files changed, 36 insertions(+), 7 deletions(-) diff --git a/app/views/account/pref.scala b/app/views/account/pref.scala index 387515cf4e..a3ffada51e 100644 --- a/app/views/account/pref.scala +++ b/app/views/account/pref.scala @@ -150,6 +150,10 @@ object pref { setting( sayGgWpAfterLosingOrDrawing(), radios(form("behavior.courtesy"), booleanChoices) + ), + setting( + scrollOnTheBoardToReplayMoves(), + radios(form("behavior.scrollMoves"), booleanChoices) ) ), categFieldset(PrefCateg.Privacy, categ)( diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index 787bf13fd3..95b8f0c35f 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -1601,6 +1601,7 @@ val `inputMovesWithTheKeyboard` = new I18nKey("preferences:inputMovesWithTheKeyb val `snapArrowsToValidMoves` = new I18nKey("preferences:snapArrowsToValidMoves") val `sayGgWpAfterLosingOrDrawing` = new I18nKey("preferences:sayGgWpAfterLosingOrDrawing") val `yourPreferencesHaveBeenSaved` = new I18nKey("preferences:yourPreferencesHaveBeenSaved") +val `scrollOnTheBoardToReplayMoves` = new I18nKey("preferences:scrollOnTheBoardToReplayMoves") } object team { diff --git a/modules/pref/src/main/JsonView.scala b/modules/pref/src/main/JsonView.scala index fcc51c2977..d2f82e2171 100644 --- a/modules/pref/src/main/JsonView.scala +++ b/modules/pref/src/main/JsonView.scala @@ -41,7 +41,8 @@ object JsonView { "keyboardMove" -> p.keyboardMove, "zen" -> p.zen, "moveEvent" -> p.moveEvent, - "rookCastle" -> p.rookCastle + "rookCastle" -> p.rookCastle, + "scrollMoves" -> p.scrollMoves ) } } diff --git a/modules/pref/src/main/Pref.scala b/modules/pref/src/main/Pref.scala index 5bd2022d79..950e057f8b 100644 --- a/modules/pref/src/main/Pref.scala +++ b/modules/pref/src/main/Pref.scala @@ -37,6 +37,7 @@ case class Pref( keyboardMove: Int, zen: Int, rookCastle: Int, + scrollMoves: Int, moveEvent: Int, pieceNotation: Int, resizeHandle: Int, @@ -214,6 +215,8 @@ object Pref { object Mention extends BooleanPref + object ScrollMoves extends BooleanPref + object KeyboardMove extends BooleanPref object RookCastle { @@ -441,6 +444,7 @@ object Pref { keyboardMove = KeyboardMove.NO, zen = Zen.NO, rookCastle = RookCastle.YES, + scrollMoves = ScrollMoves.YES, moveEvent = MoveEvent.BOTH, pieceNotation = PieceNotation.SYMBOL, resizeHandle = ResizeHandle.INITIAL, diff --git a/modules/pref/src/main/PrefForm.scala b/modules/pref/src/main/PrefForm.scala index 67e2463370..dbba51f24d 100644 --- a/modules/pref/src/main/PrefForm.scala +++ b/modules/pref/src/main/PrefForm.scala @@ -39,7 +39,8 @@ object PrefForm { "submitMove" -> checkedNumber(Pref.SubmitMove.choices), "confirmResign" -> checkedNumber(Pref.ConfirmResign.choices), "keyboardMove" -> optional(booleanNumber), - "rookCastle" -> optional(booleanNumber) + "rookCastle" -> optional(booleanNumber), + "scrollMoves" -> optional(booleanNumber) )(BehaviorData.apply)(BehaviorData.unapply), "clock" -> mapping( "tenths" -> checkedNumber(Pref.ClockTenths.choices), @@ -78,7 +79,8 @@ object PrefForm { submitMove: Int, confirmResign: Int, keyboardMove: Option[Int], - rookCastle: Option[Int] + rookCastle: Option[Int], + scrollMoves: Option[Int] ) case class ClockData( @@ -129,6 +131,7 @@ object PrefForm { zen = display.zen | pref.zen, resizeHandle = display.resizeHandle | pref.resizeHandle, rookCastle = behavior.rookCastle | pref.rookCastle, + scrollMoves = behavior.scrollMoves | pref.scrollMoves, pieceNotation = display.pieceNotation | pref.pieceNotation, moveEvent = behavior.moveEvent | pref.moveEvent ) @@ -158,7 +161,8 @@ object PrefForm { submitMove = pref.submitMove, confirmResign = pref.confirmResign, keyboardMove = pref.keyboardMove.some, - rookCastle = pref.rookCastle.some + rookCastle = pref.rookCastle.some, + scrollMoves = pref.scrollMoves.some ), clock = ClockData( tenths = pref.clockTenths, diff --git a/modules/pref/src/main/PrefHandlers.scala b/modules/pref/src/main/PrefHandlers.scala index 748dd37c3e..4a08d0b189 100644 --- a/modules/pref/src/main/PrefHandlers.scala +++ b/modules/pref/src/main/PrefHandlers.scala @@ -47,6 +47,7 @@ private object PrefHandlers { keyboardMove = r.getD("keyboardMove", Pref.default.keyboardMove), zen = r.getD("zen", Pref.default.zen), rookCastle = r.getD("rookCastle", Pref.default.rookCastle), + scrollMoves = r.getD("scrollMoves", Pref.default.scrollMoves), pieceNotation = r.getD("pieceNotation", Pref.default.pieceNotation), resizeHandle = r.getD("resizeHandle", Pref.default.resizeHandle), moveEvent = r.getD("moveEvent", Pref.default.moveEvent), @@ -91,6 +92,7 @@ private object PrefHandlers { "keyboardMove" -> o.keyboardMove, "zen" -> o.zen, "rookCastle" -> o.rookCastle, + "scrollMoves" -> o.scrollMoves, "moveEvent" -> o.moveEvent, "pieceNotation" -> o.pieceNotation, "resizeHandle" -> o.resizeHandle, diff --git a/modules/puzzle/src/main/JsonView.scala b/modules/puzzle/src/main/JsonView.scala index bf4b754987..a7ea17ae62 100644 --- a/modules/puzzle/src/main/JsonView.scala +++ b/modules/puzzle/src/main/JsonView.scala @@ -86,6 +86,7 @@ final class JsonView( "blindfold" -> p.blindfold, "coords" -> p.coords, "rookCastle" -> p.rookCastle, + "scrollMoves" -> p.scrollMoves, "animation" -> Json.obj("duration" -> p.animationMillis), "destination" -> p.destination, "moveEvent" -> p.moveEvent, diff --git a/modules/round/src/main/JsonView.scala b/modules/round/src/main/JsonView.scala index 4bd788348f..053c355e39 100644 --- a/modules/round/src/main/JsonView.scala +++ b/modules/round/src/main/JsonView.scala @@ -94,6 +94,7 @@ final class JsonView( .add("confirmResign" -> (!nvui && pref.confirmResign == Pref.ConfirmResign.YES)) .add("keyboardMove" -> (!nvui && pref.keyboardMove == Pref.KeyboardMove.YES)) .add("rookCastle" -> (pref.rookCastle == Pref.RookCastle.YES)) + .add("scrollMoves" -> (pref.scrollMoves == Pref.ScrollMoves.YES)) .add("blindfold" -> pref.isBlindfold) .add("highlight" -> pref.highlight) .add("destination" -> (pref.destination && !pref.isBlindfold)) @@ -189,6 +190,7 @@ final class JsonView( .add("highlight" -> pref.highlight) .add("destination" -> (pref.destination && !pref.isBlindfold)) .add("rookCastle" -> (pref.rookCastle == Pref.RookCastle.YES)) + .add("scrollMoves" -> (pref.scrollMoves == Pref.ScrollMoves.YES)) .add("showCaptured" -> pref.captured), "evalPut" -> JsBoolean(me.??(evalCache.shouldPut)) ) @@ -244,6 +246,7 @@ final class JsonView( "moveEvent" -> pref.moveEvent ) .add("rookCastle" -> (pref.rookCastle == Pref.RookCastle.YES)) + .add("scrollMoves" -> (pref.scrollMoves == Pref.ScrollMoves.YES)) .add("is3d" -> pref.is3d) .add("highlight" -> pref.highlight) .add("destination" -> (pref.destination && !pref.isBlindfold)), diff --git a/modules/storm/src/main/StormJson.scala b/modules/storm/src/main/StormJson.scala index 99a22dfc1f..827e31c2a4 100644 --- a/modules/storm/src/main/StormJson.scala +++ b/modules/storm/src/main/StormJson.scala @@ -20,6 +20,7 @@ final class StormJson(sign: StormSign) { Json.obj( "coords" -> p.coords, "rookCastle" -> p.rookCastle, + "scrollMoves" -> p.scrollMoves, "destination" -> p.destination, "moveEvent" -> p.moveEvent, "highlight" -> p.highlight, diff --git a/translation/source/preferences.xml b/translation/source/preferences.xml index 14d249175d..c0a263929d 100644 --- a/translation/source/preferences.xml +++ b/translation/source/preferences.xml @@ -44,4 +44,5 @@ Snap arrows to valid moves Say "Good game, well played" upon defeat or draw Your preferences have been saved. + Scroll on the board to replay moves diff --git a/ui/analyse/src/interfaces.ts b/ui/analyse/src/interfaces.ts index d992d59760..87c87b2fd4 100644 --- a/ui/analyse/src/interfaces.ts +++ b/ui/analyse/src/interfaces.ts @@ -56,6 +56,7 @@ export interface AnalysePref { is3d?: boolean; showDests?: boolean; rookCastle?: boolean; + scrollMoves?: boolean; destination?: boolean; highlight?: boolean; animationDuration?: number; diff --git a/ui/analyse/src/view.ts b/ui/analyse/src/view.ts index 402c4c0a74..fa81287d07 100644 --- a/ui/analyse/src/view.ts +++ b/ui/analyse/src/view.ts @@ -347,7 +347,7 @@ export default function (ctrl: AnalyseCtrl): VNode { addChapterId(study, 'div.analyse__board.main-board'), { hook: - 'ontouchstart' in window || ctrl.gamebookPlay() + 'ontouchstart' in window || ctrl.gamebookPlay() || !ctrl.data.pref.scrollMoves ? undefined : bind('wheel', (e: WheelEvent) => wheel(ctrl, e)), }, diff --git a/ui/puz/src/interfaces.ts b/ui/puz/src/interfaces.ts index 48a0e9bf8b..cc0fda5e73 100644 --- a/ui/puz/src/interfaces.ts +++ b/ui/puz/src/interfaces.ts @@ -19,6 +19,7 @@ export interface PuzPrefs { is3d: boolean; destination: boolean; rookCastle: boolean; + scrollMoves: boolean; moveEvent: number; highlight: boolean; } diff --git a/ui/puzzle/src/interfaces.ts b/ui/puzzle/src/interfaces.ts index 8748555484..e99f30a1a5 100644 --- a/ui/puzzle/src/interfaces.ts +++ b/ui/puzzle/src/interfaces.ts @@ -119,6 +119,7 @@ export interface PuzzlePrefs { is3d: boolean; destination: boolean; rookCastle: boolean; + scrollMoves?: boolean; moveEvent: number; highlight: boolean; animation: { diff --git a/ui/puzzle/src/view/main.ts b/ui/puzzle/src/view/main.ts index f07ad27a26..ee78c7613a 100644 --- a/ui/puzzle/src/view/main.ts +++ b/ui/puzzle/src/view/main.ts @@ -109,7 +109,10 @@ export default function (ctrl: Controller): VNode { h( 'div.puzzle__board.main-board' + (ctrl.pref.blindfold ? '.blindfold' : ''), { - hook: 'ontouchstart' in window ? undefined : bind('wheel', e => wheel(ctrl, e as WheelEvent)), + hook: + 'ontouchstart' in window || !ctrl.pref.scrollMoves + ? undefined + : bind('wheel', e => wheel(ctrl, e as WheelEvent)), }, [chessground(ctrl), ctrl.promotion.view()] ), diff --git a/ui/round/src/interfaces.ts b/ui/round/src/interfaces.ts index 8e8de18aa0..9658b2c1ae 100644 --- a/ui/round/src/interfaces.ts +++ b/ui/round/src/interfaces.ts @@ -175,6 +175,7 @@ export interface Pref { moveEvent: Prefs.MoveEvent; replay: Prefs.Replay; rookCastle: boolean; + scrollMoves?: boolean; showCaptured: boolean; submitMove: boolean; resizeHandle: Prefs.ShowResizeHandle; diff --git a/ui/round/src/view/main.ts b/ui/round/src/view/main.ts index c5c3aa922c..ac933ab483 100644 --- a/ui/round/src/view/main.ts +++ b/ui/round/src/view/main.ts @@ -63,7 +63,7 @@ export function main(ctrl: RoundController): VNode { 'div.round__app__board.main-board' + (ctrl.data.pref.blindfold ? '.blindfold' : ''), { hook: - 'ontouchstart' in window + 'ontouchstart' in window || !ctrl.data.pref.scrollMoves ? undefined : util.bind('wheel', (e: WheelEvent) => wheel(ctrl, e), undefined, false), }, From a7a1ef07d9358c91612e458c003995f967cc592b Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 28 Jun 2021 18:34:47 +0200 Subject: [PATCH 57/64] make scrollMoves a local storage pref - for #9266 --- modules/pref/src/main/JsonView.scala | 3 +-- modules/pref/src/main/Pref.scala | 4 ---- modules/pref/src/main/PrefForm.scala | 10 +++------- modules/pref/src/main/PrefHandlers.scala | 2 -- modules/puzzle/src/main/JsonView.scala | 1 - modules/round/src/main/JsonView.scala | 3 --- modules/storm/src/main/StormJson.scala | 1 - ui/analyse/src/interfaces.ts | 1 - ui/analyse/src/view.ts | 2 +- ui/puz/src/interfaces.ts | 1 - ui/puzzle/src/interfaces.ts | 1 - ui/puzzle/src/view/main.ts | 2 +- ui/round/src/interfaces.ts | 1 - ui/round/src/view/main.ts | 2 +- ui/site/src/account.ts | 25 +++++++++++++----------- 15 files changed, 21 insertions(+), 38 deletions(-) diff --git a/modules/pref/src/main/JsonView.scala b/modules/pref/src/main/JsonView.scala index d2f82e2171..fcc51c2977 100644 --- a/modules/pref/src/main/JsonView.scala +++ b/modules/pref/src/main/JsonView.scala @@ -41,8 +41,7 @@ object JsonView { "keyboardMove" -> p.keyboardMove, "zen" -> p.zen, "moveEvent" -> p.moveEvent, - "rookCastle" -> p.rookCastle, - "scrollMoves" -> p.scrollMoves + "rookCastle" -> p.rookCastle ) } } diff --git a/modules/pref/src/main/Pref.scala b/modules/pref/src/main/Pref.scala index 950e057f8b..5bd2022d79 100644 --- a/modules/pref/src/main/Pref.scala +++ b/modules/pref/src/main/Pref.scala @@ -37,7 +37,6 @@ case class Pref( keyboardMove: Int, zen: Int, rookCastle: Int, - scrollMoves: Int, moveEvent: Int, pieceNotation: Int, resizeHandle: Int, @@ -215,8 +214,6 @@ object Pref { object Mention extends BooleanPref - object ScrollMoves extends BooleanPref - object KeyboardMove extends BooleanPref object RookCastle { @@ -444,7 +441,6 @@ object Pref { keyboardMove = KeyboardMove.NO, zen = Zen.NO, rookCastle = RookCastle.YES, - scrollMoves = ScrollMoves.YES, moveEvent = MoveEvent.BOTH, pieceNotation = PieceNotation.SYMBOL, resizeHandle = ResizeHandle.INITIAL, diff --git a/modules/pref/src/main/PrefForm.scala b/modules/pref/src/main/PrefForm.scala index dbba51f24d..67e2463370 100644 --- a/modules/pref/src/main/PrefForm.scala +++ b/modules/pref/src/main/PrefForm.scala @@ -39,8 +39,7 @@ object PrefForm { "submitMove" -> checkedNumber(Pref.SubmitMove.choices), "confirmResign" -> checkedNumber(Pref.ConfirmResign.choices), "keyboardMove" -> optional(booleanNumber), - "rookCastle" -> optional(booleanNumber), - "scrollMoves" -> optional(booleanNumber) + "rookCastle" -> optional(booleanNumber) )(BehaviorData.apply)(BehaviorData.unapply), "clock" -> mapping( "tenths" -> checkedNumber(Pref.ClockTenths.choices), @@ -79,8 +78,7 @@ object PrefForm { submitMove: Int, confirmResign: Int, keyboardMove: Option[Int], - rookCastle: Option[Int], - scrollMoves: Option[Int] + rookCastle: Option[Int] ) case class ClockData( @@ -131,7 +129,6 @@ object PrefForm { zen = display.zen | pref.zen, resizeHandle = display.resizeHandle | pref.resizeHandle, rookCastle = behavior.rookCastle | pref.rookCastle, - scrollMoves = behavior.scrollMoves | pref.scrollMoves, pieceNotation = display.pieceNotation | pref.pieceNotation, moveEvent = behavior.moveEvent | pref.moveEvent ) @@ -161,8 +158,7 @@ object PrefForm { submitMove = pref.submitMove, confirmResign = pref.confirmResign, keyboardMove = pref.keyboardMove.some, - rookCastle = pref.rookCastle.some, - scrollMoves = pref.scrollMoves.some + rookCastle = pref.rookCastle.some ), clock = ClockData( tenths = pref.clockTenths, diff --git a/modules/pref/src/main/PrefHandlers.scala b/modules/pref/src/main/PrefHandlers.scala index 4a08d0b189..748dd37c3e 100644 --- a/modules/pref/src/main/PrefHandlers.scala +++ b/modules/pref/src/main/PrefHandlers.scala @@ -47,7 +47,6 @@ private object PrefHandlers { keyboardMove = r.getD("keyboardMove", Pref.default.keyboardMove), zen = r.getD("zen", Pref.default.zen), rookCastle = r.getD("rookCastle", Pref.default.rookCastle), - scrollMoves = r.getD("scrollMoves", Pref.default.scrollMoves), pieceNotation = r.getD("pieceNotation", Pref.default.pieceNotation), resizeHandle = r.getD("resizeHandle", Pref.default.resizeHandle), moveEvent = r.getD("moveEvent", Pref.default.moveEvent), @@ -92,7 +91,6 @@ private object PrefHandlers { "keyboardMove" -> o.keyboardMove, "zen" -> o.zen, "rookCastle" -> o.rookCastle, - "scrollMoves" -> o.scrollMoves, "moveEvent" -> o.moveEvent, "pieceNotation" -> o.pieceNotation, "resizeHandle" -> o.resizeHandle, diff --git a/modules/puzzle/src/main/JsonView.scala b/modules/puzzle/src/main/JsonView.scala index a7ea17ae62..bf4b754987 100644 --- a/modules/puzzle/src/main/JsonView.scala +++ b/modules/puzzle/src/main/JsonView.scala @@ -86,7 +86,6 @@ final class JsonView( "blindfold" -> p.blindfold, "coords" -> p.coords, "rookCastle" -> p.rookCastle, - "scrollMoves" -> p.scrollMoves, "animation" -> Json.obj("duration" -> p.animationMillis), "destination" -> p.destination, "moveEvent" -> p.moveEvent, diff --git a/modules/round/src/main/JsonView.scala b/modules/round/src/main/JsonView.scala index 053c355e39..4bd788348f 100644 --- a/modules/round/src/main/JsonView.scala +++ b/modules/round/src/main/JsonView.scala @@ -94,7 +94,6 @@ final class JsonView( .add("confirmResign" -> (!nvui && pref.confirmResign == Pref.ConfirmResign.YES)) .add("keyboardMove" -> (!nvui && pref.keyboardMove == Pref.KeyboardMove.YES)) .add("rookCastle" -> (pref.rookCastle == Pref.RookCastle.YES)) - .add("scrollMoves" -> (pref.scrollMoves == Pref.ScrollMoves.YES)) .add("blindfold" -> pref.isBlindfold) .add("highlight" -> pref.highlight) .add("destination" -> (pref.destination && !pref.isBlindfold)) @@ -190,7 +189,6 @@ final class JsonView( .add("highlight" -> pref.highlight) .add("destination" -> (pref.destination && !pref.isBlindfold)) .add("rookCastle" -> (pref.rookCastle == Pref.RookCastle.YES)) - .add("scrollMoves" -> (pref.scrollMoves == Pref.ScrollMoves.YES)) .add("showCaptured" -> pref.captured), "evalPut" -> JsBoolean(me.??(evalCache.shouldPut)) ) @@ -246,7 +244,6 @@ final class JsonView( "moveEvent" -> pref.moveEvent ) .add("rookCastle" -> (pref.rookCastle == Pref.RookCastle.YES)) - .add("scrollMoves" -> (pref.scrollMoves == Pref.ScrollMoves.YES)) .add("is3d" -> pref.is3d) .add("highlight" -> pref.highlight) .add("destination" -> (pref.destination && !pref.isBlindfold)), diff --git a/modules/storm/src/main/StormJson.scala b/modules/storm/src/main/StormJson.scala index 827e31c2a4..99a22dfc1f 100644 --- a/modules/storm/src/main/StormJson.scala +++ b/modules/storm/src/main/StormJson.scala @@ -20,7 +20,6 @@ final class StormJson(sign: StormSign) { Json.obj( "coords" -> p.coords, "rookCastle" -> p.rookCastle, - "scrollMoves" -> p.scrollMoves, "destination" -> p.destination, "moveEvent" -> p.moveEvent, "highlight" -> p.highlight, diff --git a/ui/analyse/src/interfaces.ts b/ui/analyse/src/interfaces.ts index 87c87b2fd4..d992d59760 100644 --- a/ui/analyse/src/interfaces.ts +++ b/ui/analyse/src/interfaces.ts @@ -56,7 +56,6 @@ export interface AnalysePref { is3d?: boolean; showDests?: boolean; rookCastle?: boolean; - scrollMoves?: boolean; destination?: boolean; highlight?: boolean; animationDuration?: number; diff --git a/ui/analyse/src/view.ts b/ui/analyse/src/view.ts index fa81287d07..eed88490e7 100644 --- a/ui/analyse/src/view.ts +++ b/ui/analyse/src/view.ts @@ -347,7 +347,7 @@ export default function (ctrl: AnalyseCtrl): VNode { addChapterId(study, 'div.analyse__board.main-board'), { hook: - 'ontouchstart' in window || ctrl.gamebookPlay() || !ctrl.data.pref.scrollMoves + 'ontouchstart' in window || ctrl.gamebookPlay() || lichess.storage.get('scrollMoves') == '0' ? undefined : bind('wheel', (e: WheelEvent) => wheel(ctrl, e)), }, diff --git a/ui/puz/src/interfaces.ts b/ui/puz/src/interfaces.ts index cc0fda5e73..48a0e9bf8b 100644 --- a/ui/puz/src/interfaces.ts +++ b/ui/puz/src/interfaces.ts @@ -19,7 +19,6 @@ export interface PuzPrefs { is3d: boolean; destination: boolean; rookCastle: boolean; - scrollMoves: boolean; moveEvent: number; highlight: boolean; } diff --git a/ui/puzzle/src/interfaces.ts b/ui/puzzle/src/interfaces.ts index e99f30a1a5..8748555484 100644 --- a/ui/puzzle/src/interfaces.ts +++ b/ui/puzzle/src/interfaces.ts @@ -119,7 +119,6 @@ export interface PuzzlePrefs { is3d: boolean; destination: boolean; rookCastle: boolean; - scrollMoves?: boolean; moveEvent: number; highlight: boolean; animation: { diff --git a/ui/puzzle/src/view/main.ts b/ui/puzzle/src/view/main.ts index ee78c7613a..0642609a53 100644 --- a/ui/puzzle/src/view/main.ts +++ b/ui/puzzle/src/view/main.ts @@ -110,7 +110,7 @@ export default function (ctrl: Controller): VNode { 'div.puzzle__board.main-board' + (ctrl.pref.blindfold ? '.blindfold' : ''), { hook: - 'ontouchstart' in window || !ctrl.pref.scrollMoves + 'ontouchstart' in window || lichess.storage.get('scrollMoves') == '0' ? undefined : bind('wheel', e => wheel(ctrl, e as WheelEvent)), }, diff --git a/ui/round/src/interfaces.ts b/ui/round/src/interfaces.ts index 9658b2c1ae..8e8de18aa0 100644 --- a/ui/round/src/interfaces.ts +++ b/ui/round/src/interfaces.ts @@ -175,7 +175,6 @@ export interface Pref { moveEvent: Prefs.MoveEvent; replay: Prefs.Replay; rookCastle: boolean; - scrollMoves?: boolean; showCaptured: boolean; submitMove: boolean; resizeHandle: Prefs.ShowResizeHandle; diff --git a/ui/round/src/view/main.ts b/ui/round/src/view/main.ts index ac933ab483..8df69fe4b9 100644 --- a/ui/round/src/view/main.ts +++ b/ui/round/src/view/main.ts @@ -63,7 +63,7 @@ export function main(ctrl: RoundController): VNode { 'div.round__app__board.main-board' + (ctrl.data.pref.blindfold ? '.blindfold' : ''), { hook: - 'ontouchstart' in window || !ctrl.data.pref.scrollMoves + 'ontouchstart' in window || lichess.storage.get('scrollMoves') == '0' ? undefined : util.bind('wheel', (e: WheelEvent) => wheel(ctrl, e), undefined, false), }, diff --git a/ui/site/src/account.ts b/ui/site/src/account.ts index 4fe8aec263..786b3c8607 100644 --- a/ui/site/src/account.ts +++ b/ui/site/src/account.ts @@ -1,8 +1,11 @@ import * as xhr from 'common/xhr'; lichess.load.then(() => { - const arrowSnapStore = lichess.storage.make('arrow.snap'); - const courtesyStore = lichess.storage.make('courtesy'); + const localPrefs: [string, string, string, number][] = [ + ['behavior', 'arrowSnap', 'arrow.snap', 1], + ['behavior', 'courtesy', 'courtesy', 0], + ['behavior', 'scrollMoves', 'scrollMoves', 1], + ]; $('.security table form').on('submit', function (this: HTMLFormElement) { xhr.text(this.action, { method: 'post', body: new URLSearchParams(new FormData(this) as any) }); @@ -15,13 +18,12 @@ lichess.load.then(() => { $form = $(form), showSaved = () => $form.find('.saved').show(); $form.find('input').on('change', function (this: HTMLInputElement) { - if (this.name == 'behavior.arrowSnap') { - arrowSnapStore.set(this.value); - showSaved(); - } else if (this.name == 'behavior.courtesy') { - courtesyStore.set(this.value); - showSaved(); - } + localPrefs.forEach(([categ, name, storeKey]) => { + if (this.name == `${categ}.${name}`) { + lichess.storage.set(storeKey, this.value); + showSaved(); + } + }); xhr.formToXhr(form).then(() => { showSaved(); lichess.storage.fire('reload-round-tabs'); @@ -29,6 +31,7 @@ lichess.load.then(() => { }); }); - $(`#irbehavior_arrowSnap_${arrowSnapStore.get() || 1}`).prop('checked', true); - $(`#irbehavior_courtesy_${courtesyStore.get() || 0}`).prop('checked', true); + localPrefs.forEach(([categ, name, storeKey, def]) => + $(`#ir${categ}_${name}_${lichess.storage.get(storeKey) || def}`).prop('checked', true) + ); }); From 5b05c4a13f62ca81b9f51a70c1def6548724e0c7 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 28 Jun 2021 18:38:20 +0200 Subject: [PATCH 58/64] New Crowdin updates (#9291) * New translations: storm.xml (French) * New translations: storm.xml (French) * New translations: storm.xml (Irish) * New translations: storm.xml (Russian) * New translations: preferences.xml (Turkish) * New translations: preferences.xml (Slovak) * New translations: preferences.xml (Danish) * New translations: site.xml (Portuguese) * New translations: site.xml (Japanese) * New translations: site.xml (Korean) * New translations: site.xml (Lithuanian) * New translations: site.xml (Dutch) * New translations: site.xml (Hungarian) * New translations: site.xml (Portuguese, Brazilian) * New translations: site.xml (French) * New translations: site.xml (Finnish) * New translations: site.xml (German, Switzerland) * New translations: site.xml (English, United States) * New translations: site.xml (Malay) * New translations: site.xml (Norwegian Nynorsk) --- translation/dest/preferences/da-DK.xml | 2 +- translation/dest/preferences/sk-SK.xml | 2 +- translation/dest/preferences/tr-TR.xml | 2 +- translation/dest/site/de-CH.xml | 5 +++++ translation/dest/site/en-US.xml | 8 ++++---- translation/dest/site/fi-FI.xml | 6 +++--- translation/dest/site/fr-FR.xml | 2 +- translation/dest/site/hu-HU.xml | 2 +- translation/dest/site/ja-JP.xml | 10 +++++----- translation/dest/site/ko-KR.xml | 2 +- translation/dest/site/lt-LT.xml | 8 ++++---- translation/dest/site/ms-MY.xml | 4 ++-- translation/dest/site/nl-NL.xml | 8 ++++---- translation/dest/site/nn-NO.xml | 8 ++++---- translation/dest/site/pt-BR.xml | 8 ++++---- translation/dest/site/pt-PT.xml | 2 +- translation/dest/storm/fr-FR.xml | 1 + translation/dest/storm/ga-IE.xml | 1 + translation/dest/storm/ru-RU.xml | 1 + 19 files changed, 45 insertions(+), 37 deletions(-) diff --git a/translation/dest/preferences/da-DK.xml b/translation/dest/preferences/da-DK.xml index 7015a7288c..92cc995c22 100644 --- a/translation/dest/preferences/da-DK.xml +++ b/translation/dest/preferences/da-DK.xml @@ -10,7 +10,7 @@ Trækliste mens der spilles Notation Skakbrik-symbol - Bogstaver (K, Q, R, B, N) + Bogstaver (K, Q, R, B, N) Zentilstand Vis brætstørrelse justering Kun ved indledende position diff --git a/translation/dest/preferences/sk-SK.xml b/translation/dest/preferences/sk-SK.xml index d9d3b55231..c6d8441e87 100644 --- a/translation/dest/preferences/sk-SK.xml +++ b/translation/dest/preferences/sk-SK.xml @@ -10,7 +10,7 @@ Zobraziť šachovú notáciu počas partie Označenie figúr v notácii Symboly šachových figúr - Písmenová notácia (K, D, V, S, J) + Písmenová notácia (K, D, V, S, J) Zen mód Zobraziť tlačidlo na zmenu veľkosti šachovnice Iba v základnom postavení diff --git a/translation/dest/preferences/tr-TR.xml b/translation/dest/preferences/tr-TR.xml index 3c993e9984..1d91f421cd 100644 --- a/translation/dest/preferences/tr-TR.xml +++ b/translation/dest/preferences/tr-TR.xml @@ -10,7 +10,7 @@ Oyun sırasında notasyonu göster Notasyon tut Satranç taşı sembolü - Harf (K, Q, R, B, N) + Harf (K, Q, R, B, N) Sade görünüm Tahta büyüklüğünü ayarlama kolunu göster Sadece oyunun başında diff --git a/translation/dest/site/de-CH.xml b/translation/dest/site/de-CH.xml index 0dee3e9f49..6c5bc18ba7 100644 --- a/translation/dest/site/de-CH.xml +++ b/translation/dest/site/de-CH.xml @@ -893,4 +893,9 @@ Leer lassen, um Partien von der normalen Ausgangsstellung aus zu starten.Simultan Beschreibung Möchtest du den Teilnehmern etwas mitteilen? %s ist für erweiterte Syntax verfügbar. + In deiner eigenen lokalen Zeitzone + Turnierchat + Kein Chat + Nur Teamleiter + Nur Teammitglieder diff --git a/translation/dest/site/en-US.xml b/translation/dest/site/en-US.xml index ad6faa3ffc..ce9fe75573 100644 --- a/translation/dest/site/en-US.xml +++ b/translation/dest/site/en-US.xml @@ -893,11 +893,11 @@ Leave empty to start games from the normal initial position. Feature on %s Show your simul to everyone on %s. Disable for private simuls. Simul description - Anything you want to tell the participants? + Anything you want to tell the participants? %s is available for more advanced syntax. In your own local timezone Tournament chat - No chat - Only team leaders - Only team members + No chat + Only team leaders + Only team members diff --git a/translation/dest/site/fi-FI.xml b/translation/dest/site/fi-FI.xml index be5ce65cab..011f5ba150 100644 --- a/translation/dest/site/fi-FI.xml +++ b/translation/dest/site/fi-FI.xml @@ -895,7 +895,7 @@ Jätä kenttä tyhjäksi, jos haluat pelien alkavan normaalista alkuasemasta.Tekstin yksityiskohtaisempaan muotoiluun voit käyttää %s-kieltä. Omalla aikavyöhykkeelläsi Turnauksen keskusteluhuone - Ei keskustelua - Vain joukkueenjohtajille - Vain joukkueen jäsenille + Ei keskustelua + Vain joukkueenjohtajille + Vain joukkueen jäsenille diff --git a/translation/dest/site/fr-FR.xml b/translation/dest/site/fr-FR.xml index 2d6e07a3f7..1733d6df75 100644 --- a/translation/dest/site/fr-FR.xml +++ b/translation/dest/site/fr-FR.xml @@ -891,7 +891,7 @@ et ont un impact sur le classement des joueurs %s offre des options de formatage supplémentaires. Dans votre fuseau horaire Salon de discussion du tournoi - Aucun salon de discussion + Aucun salon de discussion Seulement les chefs d’équipe Seulement les membres des équipes diff --git a/translation/dest/site/hu-HU.xml b/translation/dest/site/hu-HU.xml index db191874d9..676074fd25 100644 --- a/translation/dest/site/hu-HU.xml +++ b/translation/dest/site/hu-HU.xml @@ -895,7 +895,7 @@ Hagyd üresen és a játszmák a kezdőállásból indulnak. %s is elérhető a haladó szerkesztéshez. Saját időzónád szerint Verseny csevegő - Nincs csevegő + Nincs csevegő Csak csapatvezetőknek Csak csapattagoknak diff --git a/translation/dest/site/ja-JP.xml b/translation/dest/site/ja-JP.xml index 851dcaaaa9..6a3a829c05 100644 --- a/translation/dest/site/ja-JP.xml +++ b/translation/dest/site/ja-JP.xml @@ -224,7 +224,7 @@ レート戦 この対局はレート戦です 再対局 - 再対局の申し込みです + 再対局の提案が来ました 白が再対局を提案しました 黒が再対局を提案しました 再対局の提案が承諾されました @@ -852,11 +852,11 @@ %s に表示 %s 上の全員に表示します。非公開の同時対局では無効にしてください。 同時対局の説明 - 参加者に伝えたいことがあればどうぞ + 参加者に伝えたいことがあればどうぞ 高度な修飾方法として %s も使えます。 自分のタイムゾーンで トーナメント チャット - チャットなし - チームリーダー限定 - チームメンバー限定 + チャットなし + チームリーダー限定 + チームメンバー限定 diff --git a/translation/dest/site/ko-KR.xml b/translation/dest/site/ko-KR.xml index 29bc573d1b..fd6e67cce3 100644 --- a/translation/dest/site/ko-KR.xml +++ b/translation/dest/site/ko-KR.xml @@ -442,7 +442,7 @@ 퍼즐 최근 업데이트 토너먼트 승리자 - 팀 이름 + 이름 설명 비공개 설명 팀 멤버만 볼 수 있는 텍스트입니다. 설정된다면, 팀 멤버에게는 공개 설명 대신 보이게 됩니다. diff --git a/translation/dest/site/lt-LT.xml b/translation/dest/site/lt-LT.xml index aa55c94f58..65e5a274e5 100644 --- a/translation/dest/site/lt-LT.xml +++ b/translation/dest/site/lt-LT.xml @@ -972,11 +972,11 @@ Palikite tuščią norėdami pradėti žaidimą nuo įprastos pradinės pozicijo Rodyti %s Rodyti simulą visiems %s. Neįjungta privatiems simulams. Simulo aprašymas - Ar norite ką nors pranešti dalyviams? + Ar norite ką nors pranešti dalyviams? %s prieinama norint naudoti sudėtingesnę sintaksę. Jūsų laiko zonoje Turnyro pokalbis - Jokio pokalbio - Tik komandų vadovams - Tik komandos nariams + Jokio pokalbio + Tik komandų vadovams + Tik komandos nariams diff --git a/translation/dest/site/ms-MY.xml b/translation/dest/site/ms-MY.xml index f3bde3444e..2cb8e91c75 100644 --- a/translation/dest/site/ms-MY.xml +++ b/translation/dest/site/ms-MY.xml @@ -557,6 +557,6 @@ Muat turun Selamat Datang! Anggaran masa bermula - Ketua pasukan sahaja - Ahli pasukan sahaja + Ketua pasukan sahaja + Ahli pasukan sahaja diff --git a/translation/dest/site/nl-NL.xml b/translation/dest/site/nl-NL.xml index 067b2af8c1..4e8fcaeb0e 100644 --- a/translation/dest/site/nl-NL.xml +++ b/translation/dest/site/nl-NL.xml @@ -891,11 +891,11 @@ Laat leeg om partijen te starten vanaf de normale beginstelling. Simultaan tonen op %s De simultaan voor iedereen weergeven op %s. Schakel dit uit voor privésimultaans. Omschrijving van de simultaan - Is er nog iets wat de deelnemers moeten weten? + Is er nog iets wat de deelnemers moeten weten? %s is beschikbaar voor meer geavanceerde opmaak. In je eigen lokale tijdzone Toernooichat - Geen chat - Alleen teamleiders - Alleen teamleden + Geen chat + Alleen teamleiders + Alleen teamleden diff --git a/translation/dest/site/nn-NO.xml b/translation/dest/site/nn-NO.xml index 166bd9cf03..f757166cd5 100644 --- a/translation/dest/site/nn-NO.xml +++ b/translation/dest/site/nn-NO.xml @@ -892,11 +892,11 @@ La feltet stå tomt for å starte partia frå den normale utgangsstillinga.Vis på %s Vis simultantilskipinga til alle på %s. Deaktivér for private simultantilskipingar. Beskriving av simultantilskipinga - Noko du vil fortelja deltakarane? + Noko du vil fortelja deltakarane? %s er tilgjengeleg for meir avansert syntaks. I di tidssone Turneringschat - Ikkje chat - Berre lagleiarar - Berre lagsmedlemer + Ikkje chat + Berre lagleiarar + Berre lagsmedlemer diff --git a/translation/dest/site/pt-BR.xml b/translation/dest/site/pt-BR.xml index b3193512f3..487575affd 100644 --- a/translation/dest/site/pt-BR.xml +++ b/translation/dest/site/pt-BR.xml @@ -890,11 +890,11 @@ Deixe em branco para começar as partidas na posição inicial padrão. Compartilhar em %s Compartilhar a simultânia com todos em %s. Desative para jogos privados. Descrição da simultânea - Você gostaria de dizer algo aos participantes? + Você gostaria de dizer algo aos participantes? %s está disponível para opções de formatação adicionais. No seu próprio fuso horário Chat do torneio - Sem chat - Apenas líderes de equipe - Apenas membros da equipe + Sem chat + Apenas líderes de equipe + Apenas membros da equipe diff --git a/translation/dest/site/pt-PT.xml b/translation/dest/site/pt-PT.xml index 4a2ab2adc3..39cc28c30b 100644 --- a/translation/dest/site/pt-PT.xml +++ b/translation/dest/site/pt-PT.xml @@ -895,7 +895,7 @@ Deixe em branco para iniciar jogos da posição inicial normal. %s está disponível para sintaxe mais avançada. No seu próprio fuso horário local Chat do torneio - Sem chat + Sem chat Apenas líderes da equipa Apenas membros da equipa diff --git a/translation/dest/storm/fr-FR.xml b/translation/dest/storm/fr-FR.xml index b113a8c6d7..2948a8adcf 100644 --- a/translation/dest/storm/fr-FR.xml +++ b/translation/dest/storm/fr-FR.xml @@ -38,6 +38,7 @@ Course terminée! Observer Participez! + Débuter la course Votre classement : %s Attendre une offre de revanche Course suivante diff --git a/translation/dest/storm/ga-IE.xml b/translation/dest/storm/ga-IE.xml index 5025639023..55dbc4f2d7 100644 --- a/translation/dest/storm/ga-IE.xml +++ b/translation/dest/storm/ga-IE.xml @@ -44,6 +44,7 @@ Léibhéal críochnaithe! Ag breathnú Bí sa rás! + Tosaigh an rás Do rang: %s Fan ar athchluiche Chéad rás eile diff --git a/translation/dest/storm/ru-RU.xml b/translation/dest/storm/ru-RU.xml index 40fb53f215..99360c1c26 100644 --- a/translation/dest/storm/ru-RU.xml +++ b/translation/dest/storm/ru-RU.xml @@ -42,6 +42,7 @@ Гонка завершена! Наблюдение Присоединиться к гонке! + Начать гонку Ваше место: %s Ожидание реванша Следующая гонка From c766c36651f3e61cd9e7051279e2ab73686049fb Mon Sep 17 00:00:00 2001 From: Konstantinos07 Date: Mon, 28 Jun 2021 20:04:17 +0300 Subject: [PATCH 59/64] exclude BOTs from "active players" leaderboard --- modules/user/src/main/UserRepo.scala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/user/src/main/UserRepo.scala b/modules/user/src/main/UserRepo.scala index dd42333250..7b4c870cc2 100644 --- a/modules/user/src/main/UserRepo.scala +++ b/modules/user/src/main/UserRepo.scala @@ -22,7 +22,7 @@ final class UserRepo(val coll: Coll)(implicit ec: scala.concurrent.ExecutionCont val normalize = User normalize _ def topNbGame(nb: Int): Fu[List[User]] = - coll.find(enabledSelect).sort($sort desc "count.game").cursor[User]().list(nb) + coll.find(enabledNoBotSelect).sort($sort desc "count.game").cursor[User]().list(nb) def byId(id: ID): Fu[Option[User]] = User.noGhost(id) ?? coll.byId[User](id) @@ -277,6 +277,10 @@ final class UserRepo(val coll: Coll)(implicit ec: scala.concurrent.ExecutionCont $doc(F.marks -> UserMark.Boost.key), $doc(F.marks -> UserMark.Troll.key) ) + val enabledNoBotSelect = $and( + $doc(F.enabled -> true), + $doc(F.title -> $ne(Title.BOT)) + ) def stablePerfSelect(perf: String) = $doc(s"perfs.$perf.gl.d" -> $lt(lila.rating.Glicko.provisionalDeviation)) val patronSelect = $doc(s"${F.plan}.active" -> true) From a263059eea43a9ab0853da4aaf3f8323a8d20579 Mon Sep 17 00:00:00 2001 From: Niklas Fiekas Date: Mon, 28 Jun 2021 19:21:52 +0200 Subject: [PATCH 60/64] do oauth redirect with 303 to force get method --- app/controllers/OAuth.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/OAuth.scala b/app/controllers/OAuth.scala index c80f7dd7b7..8950374b20 100644 --- a/app/controllers/OAuth.scala +++ b/app/controllers/OAuth.scala @@ -48,9 +48,9 @@ final class OAuth(env: Env) extends LilaController(env) { prompt.authorize(me) match { case Validated.Valid(authorized) => env.oAuth.authorizationApi.create(authorized) map { code => - Redirect(authorized.redirectUrl(code)) + SeeOther(authorized.redirectUrl(code)) } - case Validated.Invalid(error) => Redirect(prompt.redirectUri.error(error, prompt.state)).fuccess + case Validated.Invalid(error) => SeeOther(prompt.redirectUri.error(error, prompt.state)).fuccess } } } From 06ff93ad9fbd4d40a7788711137d30fee58985f3 Mon Sep 17 00:00:00 2001 From: Konstantinos07 Date: Mon, 28 Jun 2021 20:46:36 +0300 Subject: [PATCH 61/64] scalafmt --- modules/user/src/main/UserRepo.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/user/src/main/UserRepo.scala b/modules/user/src/main/UserRepo.scala index 7b4c870cc2..2dc7c89627 100644 --- a/modules/user/src/main/UserRepo.scala +++ b/modules/user/src/main/UserRepo.scala @@ -278,8 +278,8 @@ final class UserRepo(val coll: Coll)(implicit ec: scala.concurrent.ExecutionCont $doc(F.marks -> UserMark.Troll.key) ) val enabledNoBotSelect = $and( - $doc(F.enabled -> true), - $doc(F.title -> $ne(Title.BOT)) + $doc(F.enabled -> true), + $doc(F.title -> $ne(Title.BOT)) ) def stablePerfSelect(perf: String) = $doc(s"perfs.$perf.gl.d" -> $lt(lila.rating.Glicko.provisionalDeviation)) From 551be742684d6b9c8a04ba5250a76b7d65a52a61 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 28 Jun 2021 20:23:10 +0200 Subject: [PATCH 62/64] tweak UserRepo.enabledNoBotSelect --- modules/user/src/main/UserRepo.scala | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/modules/user/src/main/UserRepo.scala b/modules/user/src/main/UserRepo.scala index 2dc7c89627..dacc05c711 100644 --- a/modules/user/src/main/UserRepo.scala +++ b/modules/user/src/main/UserRepo.scala @@ -277,10 +277,7 @@ final class UserRepo(val coll: Coll)(implicit ec: scala.concurrent.ExecutionCont $doc(F.marks -> UserMark.Boost.key), $doc(F.marks -> UserMark.Troll.key) ) - val enabledNoBotSelect = $and( - $doc(F.enabled -> true), - $doc(F.title -> $ne(Title.BOT)) - ) + val enabledNoBotSelect = enabledSelect ++ $doc(F.title $ne Title.BOT) def stablePerfSelect(perf: String) = $doc(s"perfs.$perf.gl.d" -> $lt(lila.rating.Glicko.provisionalDeviation)) val patronSelect = $doc(s"${F.plan}.active" -> true) From 3ef906b98d1054b829edd2dbc5fba8397585997d Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 28 Jun 2021 22:47:16 +0200 Subject: [PATCH 63/64] fix translation key collision - for #9251 --- app/views/swiss/form.scala | 9 +++++---- modules/i18n/src/main/I18nKeys.scala | 4 ++-- translation/source/swiss.xml | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/views/swiss/form.scala b/app/views/swiss/form.scala index 75ea79b1fc..66f19e7d69 100644 --- a/app/views/swiss/form.scala +++ b/app/views/swiss/form.scala @@ -87,7 +87,7 @@ object form { ) } -private def condition(form: Form[_], fields: SwissFields, swiss: Option[Swiss])(implicit ctx: Context) = + private def condition(form: Form[_], fields: SwissFields, swiss: Option[Swiss])(implicit ctx: Context) = frag( form3.split( form3.group(form("conditions.nbRatedGame.nb"), trans.minimumRatedGames(), half = true)( @@ -133,8 +133,8 @@ final private class SwissFields(form: Form[_], swiss: Option[Swiss])(implicit ct def nbRounds = form3.group( form("nbRounds"), - trans.swiss.nbRounds(), - help = trans.swiss.nbRoundsHelp().some, + trans.swiss.numberOfRounds(), + help = trans.swiss.numberOfRoundsHelp().some, half = true )( form3.input(_, typ = "number") @@ -183,7 +183,8 @@ final private class SwissFields(form: Form[_], swiss: Option[Swiss])(implicit ct trans.startPosition(), klass = "position", half = true, - help = trans.positionInputHelp(a(href := routes.Editor.index, targetBlank)(trans.boardEditor.txt())).some + help = + trans.positionInputHelp(a(href := routes.Editor.index, targetBlank)(trans.boardEditor.txt())).some )(form3.input(_)) def startsAt = form3.group( diff --git a/modules/i18n/src/main/I18nKeys.scala b/modules/i18n/src/main/I18nKeys.scala index ac45e4d708..b1ff44df3a 100644 --- a/modules/i18n/src/main/I18nKeys.scala +++ b/modules/i18n/src/main/I18nKeys.scala @@ -1881,8 +1881,8 @@ val `roundsAreStartedManually` = new I18nKey("swiss:roundsAreStartedManually") val `startingIn` = new I18nKey("swiss:startingIn") val `nextRound` = new I18nKey("swiss:nextRound") val `tournStartDate` = new I18nKey("swiss:tournStartDate") -val `nbRounds` = new I18nKey("swiss:nbRounds") -val `nbRoundsHelp` = new I18nKey("swiss:nbRoundsHelp") +val `numberOfRounds` = new I18nKey("swiss:numberOfRounds") +val `numberOfRoundsHelp` = new I18nKey("swiss:numberOfRoundsHelp") val `roundInterval` = new I18nKey("swiss:roundInterval") val `forbiddenPairings` = new I18nKey("swiss:forbiddenPairings") val `forbiddenPairingsHelp` = new I18nKey("swiss:forbiddenPairingsHelp") diff --git a/translation/source/swiss.xml b/translation/source/swiss.xml index 573121a146..42e32161a9 100644 --- a/translation/source/swiss.xml +++ b/translation/source/swiss.xml @@ -28,8 +28,8 @@ Ongoing games Tournament start date - Number of rounds - An odd number of rounds allows optimal color balance. + Number of rounds + An odd number of rounds allows optimal color balance. Interval between rounds Forbidden pairings Usernames of players that must not play together (Siblings, for instance). Two usernames per line, separated by a space. From 7f8b5cdeb7b92ff2258bec95403d35756ce4aea8 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Mon, 28 Jun 2021 22:47:43 +0200 Subject: [PATCH 64/64] tweak IRC info message --- modules/irc/src/main/IrcApi.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/irc/src/main/IrcApi.scala b/modules/irc/src/main/IrcApi.scala index c40a62b4d9..b36cc0aad2 100644 --- a/modules/irc/src/main/IrcApi.scala +++ b/modules/irc/src/main/IrcApi.scala @@ -235,7 +235,7 @@ final class IrcApi( icon = "horsey", text = slackdown linkifyUsers msg ) - ) >> zulip()(s":lichess: ${markdown linkifyUsers msg}") + ) >> zulip()(s":info: ${markdown linkifyUsers msg}") object charge { import lila.hub.actorApi.plan.ChargeEvent