Merge branch 'master' of github.com:ornicar/lila into scala-2.12-play-2.6

* 'master' of github.com:ornicar/lila:
  Manually apply translations
  code tweak
  publish correspondence draw offer notifications - for #3548
  send correspondence takeback notifications - for #3548
  apply translations
  fix search API page number
  code tweaks
  finer comm control
  Fix #3407
  slack wording
  fix #3549
  expire timeline entries after 2 weeks - closes #3558
  fix #3561
  apply translations
  comm log; coded, compiled, tested in Medellín with a CPU stuck at 800Mhz
  Fix/update simul rating display. Fixes #3185
  Fix #3553 Use normal word wrap for user notes
  Update LameName.scala
  fix ui/analyse autoshape toggle
  scalachess 6.8
scala-2.12-play-2.6
Thibault Duplessis 2017-09-04 16:40:26 -05:00
commit 75b1662ed6
67 changed files with 986 additions and 346 deletions

View File

@ -2,9 +2,9 @@ package controllers
import lila.api.Context
import lila.app._
import lila.chat.Chat
import lila.common.{ IpAddress, EmailAddress }
import lila.user.{ UserRepo, User => UserModel }
import lila.chat.Chat
import views._
import play.api.data._
@ -131,28 +131,39 @@ object Mod extends LilaController {
modLogApi.recent map { html.mod.log(_) }
}
def communication(username: String) = Secure(_.MarkTroll) { implicit ctx => me =>
private def communications(username: String, priv: Boolean) = Secure {
perms => if (priv) perms.ViewPrivateComms else perms.MarkTroll
} { implicit ctx => me =>
OptionFuOk(UserRepo named username) { user =>
lila.game.GameRepo.recentPovsByUserFromSecondary(user, 80) flatMap { povs =>
Env.chat.api.playerChat optionsByOrderedIds povs.map(_.gameId).map(Chat.Id.apply) zip
lila.message.ThreadRepo.visibleByUser(user.id, 60).map {
_ filter (_ hasPostsWrittenBy user.id) take 30
priv.?? {
Env.chat.api.playerChat optionsByOrderedIds povs.map(_.gameId).map(Chat.Id.apply)
} zip
priv.?? {
lila.message.ThreadRepo.visibleByUser(user.id, 60).map {
_ filter (_ hasPostsWrittenBy user.id) take 30
}
} zip
(Env.shutup.api getPublicLines user.id) zip
(Env.security userSpy user.id) zip
Env.user.noteApi.forMod(user.id) zip
Env.mod.logApi.userHistory(user.id) map {
case chats ~ threads ~ publicLines ~ spy ~ notes ~ history =>
Env.mod.logApi.userHistory(user.id) zip
Env.report.api.inquiries.ofModId(me.id) map {
case chats ~ threads ~ publicLines ~ spy ~ notes ~ history ~ inquiry =>
if (priv) Env.slack.api.commlog(mod = me, user = user, inquiry.map(_.createdBy))
val povWithChats = (povs zip chats) collect {
case (p, Some(c)) if c.nonEmpty => p -> c
} take 15
val filteredNotes = notes.filter(_.from != "irwin")
html.mod.communication(user, povWithChats, threads, publicLines, spy, filteredNotes, history)
html.mod.communication(user, povWithChats, threads, publicLines, spy, filteredNotes, history, priv)
}
}
}
}
def communicationPublic(username: String) = communications(username, false)
def communicationPrivate(username: String) = communications(username, true)
private[controllers] val ipIntelCache =
Env.memo.asyncCache.multi[IpAddress, Int](
name = "ipIntel",

View File

@ -33,7 +33,7 @@ object Report extends LilaController {
api.inquiries.toggle(me, id) map {
_.fold(Redirect(routes.Report.list)) { report =>
Redirect(report.room match {
case lila.report.Room.Coms => routes.Mod.communication(report.user).url
case lila.report.Room.Coms => routes.Mod.communicationPublic(report.user).url
case _ => routes.User.show(report.user).url + "?mod"
})
}

View File

@ -27,7 +27,7 @@ object Search extends LilaController {
def index(p: Int) = OpenBody { implicit ctx =>
NotForBots {
val page = p min 100 max 1
val page = p atLeast 1
Reasonable(page, 100) {
val ip = HTTPRequest lastRemoteAddress ctx.req
val cost = scala.math.sqrt(page).toInt

View File

@ -1,4 +1,4 @@
@(u: User, players: List[(Pov, lila.chat.MixedChat)], threads: List[lila.message.Thread], publicLines: List[String], spy: lila.security.UserSpy, notes: List[lila.user.Note], history: List[lila.mod.Modlog])(implicit ctx: Context)
@(u: User, players: List[(Pov, lila.chat.MixedChat)], threads: List[lila.message.Thread], publicLines: List[String], spy: lila.security.UserSpy, notes: List[lila.user.Note], history: List[lila.mod.Modlog], priv: Boolean)(implicit ctx: Context)
@moreCss = {
@cssTag("mod-communication.css")
@ -17,18 +17,29 @@ side = side.some) {
<div id="communication" class="content_box">
<h1>
<form style="float:right" method="post" action="@routes.Mod.troll(u.username)?set=1&then=reports">
<input class="button@when(u.troll, " active")" type="submit" value="Shadowban" />
</form>
@defining("Warning: Offensive language") { subject =>
<form style="float:right" method="post" action="@routes.Mod.warn(u.username, subject)">
<input class="button" type="submit" value="Warn" title='Sends the "@subject" message'/>
</form>
}
<form style="float:right" method="post" action="@routes.Mod.troll(u.username)?set=0&then=reports">
<input class="button@when(!u.troll, " active")" type="submit" value="OK" />
</form>
@userLink(u) communications
<div class="title">
@userLink(u) communications
</div>
<div class="actions">
@if(isGranted(_.ViewPrivateComms)) {
@if(priv) {
<a class="priv button active" href="@routes.Mod.communicationPublic(u.username)">PMs</a>
} else {
<a class="priv button" href="@routes.Mod.communicationPrivate(u.username)" title="View private messages. This will be logged in #commlog">PMs</a>
}
}
<form method="post" action="@routes.Mod.troll(u.username)?set=1&then=reports">
<input class="button@when(u.troll, " active")" type="submit" value="Shadowban" />
</form>
@defining("Warning: Offensive language") { subject =>
<form method="post" action="@routes.Mod.warn(u.username, subject)">
<input class="button" type="submit" value="Warn" title='Sends the "@subject" message'/>
</form>
}
<form method="post" action="@routes.Mod.troll(u.username)?set=0&then=reports">
<input class="button@when(!u.troll, " active")" type="submit" value="OK" />
</form>
</div>
</h1>
<h2>Dubious public chats</h2>
@if(publicLines.isEmpty) {
@ -63,6 +74,7 @@ side = side.some) {
</div>
}
@if(priv) {
<h2>Recent private chats</h2>
<div class="player_chats">
@players.map {
@ -102,6 +114,7 @@ side = side.some) {
</div>
}
</div>
}
<div class="alternate_accounts">
<h2>Alternate accounts</h2>
@if(spy.otherUsers.size < 1) {

View File

@ -51,7 +51,7 @@
<div class="links">
<a href="@routes.User.games(in.user.id, "search")?players.b=@in.report.createdBy">View<br />Games</a>
@if(isGranted(_.MarkTroll)) {
<a href="@routes.Mod.communication(in.user.id)">View<br />Coms</a>
<a href="@routes.Mod.communicationPublic(in.user.id)">View<br />Comms</a>
}
</div>
<div class="actions">

View File

@ -14,7 +14,7 @@
<input class="button" type="submit" value="Evaluate" />
</form>
@if(isGranted(_.MarkTroll)) {
<a class="button hint--bottom" href="@routes.Mod.communication(u.id)" data-hint="View communications">Coms</a>
<a class="button hint--bottom" href="@routes.Mod.communicationPublic(u.id)" data-hint="View communications">Comms</a>
}
<form method="post" action="@routes.Mod.notifySlack(u.id)" data-hint="Notify slack #tavern" class="hint--bottom">
<input class="button" type="submit" value="Slack" />

View File

@ -3,10 +3,10 @@
@import lila.app.mashup.UserInfo.Angle
@evenMoreJs = {
@if(!u.lame || ctx.is(u) || isGranted(_.UserSpy)) {
@if(filters.current.name == "search") {
@jsTag("search.js")
}
@if(!u.lame || ctx.is(u) || isGranted(_.UserSpy)) {
@info.ratingChart.map { ratingChart =>
@jsTag("chart/ratingHistory.js")
@embedJs(s"lichess.ratingHistoryChart($ratingChart);")

View File

@ -10,7 +10,7 @@ net {
ip = "5.196.91.160"
asset {
domain = ${net.domain}
version = 1871
version = 1883
}
email = "contact@lichess.org"
crawlable = false

View File

@ -354,7 +354,8 @@ POST /mod/:username/close controllers.Mod.closeAccount(username: St
POST /mod/:username/reopen controllers.Mod.reopenAccount(username: String)
POST /mod/:username/title controllers.Mod.setTitle(username: String)
POST /mod/:username/inquiry controllers.Mod.spontaneousInquiry(username: String)
GET /mod/:username/communication controllers.Mod.communication(username: String)
GET /mod/:username/communication controllers.Mod.communicationPublic(username: String)
GET /mod/:username/communication/private controllers.Mod.communicationPrivate(username: String)
POST /mod/:ip/ipban controllers.Mod.ipban(ip: String)
POST /mod/:username/kickFromRankings controllers.Mod.kickFromRankings(username: String)
POST /mod/:username/reportban controllers.Mod.reportban(username: String)

View File

@ -57,6 +57,7 @@ object LameName {
"cheat",
"administrator",
"cock",
"dick",
"fart"
) map { _ map subs mkString } mkString "|" r).pattern
}

View File

@ -382,6 +382,7 @@ object mon {
}
object send {
def move(platform: String) = inc(s"push.send.$platform.move")()
def takeback(platform: String) = inc(s"push.send.$platform.takeback")()
def corresAlarm(platform: String) = inc(s"push.send.$platform.corresAlarm")()
def finish(platform: String) = inc(s"push.send.$platform.finish")()
def message(platform: String) = inc(s"push.send.$platform.message")()

View File

@ -1,10 +1,10 @@
package lila.forum
import lila.notify.{ Notification, MentionedInThread }
import lila.common.Future
import lila.notify.NotifyApi
import lila.notify.{ Notification, MentionedInThread }
import lila.relation.RelationApi
import lila.user.{ UserRepo, User }
import lila.common.Future
/**
* Notifier to inform users if they have been mentioned in a post
@ -13,17 +13,14 @@ import lila.common.Future
*/
final class MentionNotifier(notifyApi: NotifyApi, relationApi: RelationApi) {
def notifyMentionedUsers(post: Post, topic: Topic): Unit = if (!post.troll) {
post.userId foreach { author =>
val mentionedUsers = extractMentionedUsers(post)
val mentionedBy = MentionedInThread.MentionedBy(author)
for {
validUsers <- filterValidUsers(mentionedUsers, author)
notifications = validUsers.map(createMentionNotification(post, topic, _, mentionedBy))
} yield notifyApi.addNotifications(notifications)
def notifyMentionedUsers(post: Post, topic: Topic): Funit =
post.userId.ifFalse(post.troll) ?? { author =>
filterValidUsers(extractMentionedUsers(post), author) flatMap { validUsers =>
val mentionedBy = MentionedInThread.MentionedBy(author)
val notifications = validUsers.map(createMentionNotification(post, topic, _, mentionedBy))
notifyApi.addNotifications(notifications)
}
}
}
/**
* Checks the database to make sure that the users mentioned exist, and removes any users that do not exist
@ -38,7 +35,7 @@ final class MentionNotifier(notifyApi: NotifyApi, relationApi: RelationApi) {
}
private def filterNotBlockedByUsers(usersMentioned: List[String], mentionedBy: String): Fu[List[String]] = {
Future.filterNot(usersMentioned)(mentioned => relationApi.fetchBlocks(mentioned, mentionedBy))
Future.filterNot(usersMentioned) { relationApi.fetchBlocks(_, mentionedBy) }
}
private def createMentionNotification(post: Post, topic: Topic, mentionedUser: Notification.Notifies, mentionedBy: MentionedInThread.MentionedBy): Notification = {

View File

@ -207,6 +207,8 @@ package round {
alarmable: Boolean,
unlimited: Boolean
)
case class CorresTakebackOfferEvent(gameId: String)
case class CorresDrawOfferEvent(gameId: String)
case class SimulMoveEvent(
move: MoveEvent,
simulId: String,

View File

@ -66,9 +66,8 @@ final class NotifyApi(
def exists = repo.exists _
private def shouldSkip(notification: Notification) =
UserRepo.isKid(notification.notifies.value) flatMap {
case true => fuccess(true)
case false => notification.content match {
UserRepo.isKid(notification.notifies.value) >>| {
notification.content match {
case MentionedInThread(_, _, topicId, _, _) => repo.hasRecentNotificationsInThread(notification.notifies, topicId)
case InvitedToStudy(invitedBy, _, studyId) => repo.hasRecentStudyInvitation(notification.notifies, studyId)
case PrivateMessage(_, thread, _) => repo.hasRecentPrivateMessageFrom(notification.notifies, thread)

View File

@ -49,12 +49,14 @@ final class Env(
def receive = {
case lila.game.actorApi.FinishGame(game, _, _) => pushApi finish game
case lila.hub.actorApi.round.CorresMoveEvent(move, _, pushable, _, _) if pushable => pushApi move move
case lila.hub.actorApi.round.CorresTakebackOfferEvent(gameId) => pushApi takebackOffer gameId
case lila.hub.actorApi.round.CorresDrawOfferEvent(gameId) => pushApi drawOffer gameId
case lila.message.Event.NewMessage(t, p) => pushApi newMessage (t, p)
case lila.challenge.Event.Create(c) => pushApi challengeCreate c
case lila.challenge.Event.Accept(c, joinerId) => pushApi.challengeAccept(c, joinerId)
case lila.game.actorApi.CorresAlarmEvent(pov) => pushApi corresAlarm pov
}
})), 'finishGame, 'moveEventCorres, 'newMessage, 'challenge, 'corresAlarm)
})), 'finishGame, 'moveEventCorres, 'newMessage, 'challenge, 'corresAlarm, 'offerEventCorres)
}
object Env {

View File

@ -64,15 +64,55 @@ private final class PushApi(
stacking = Stacking.GameMove,
payload = Json.obj(
"userId" -> userId,
"userData" -> Json.obj(
"type" -> "gameMove",
"gameId" -> game.id,
"fullId" -> pov.fullId,
"color" -> pov.color.name,
"fen" -> Forsyth.exportBoard(game.toChess.board),
"lastMove" -> game.castleLastMoveTime.lastMoveString,
"secondsLeft" -> pov.remainingSeconds
)
"userData" -> corresGameJson(pov, "gameMove")
)
))
}
}
}
}
}
}
def takebackOffer(gameId: Game.ID): Funit = scheduler.after(1 seconds) {
GameRepo game gameId flatMap {
_.filter(_.playable).?? { game =>
game.players.collectFirst {
case p if p.isProposingTakeback => Pov(game, game opponent p)
} ?? { pov => // the pov of the receiver
pov.player.userId ?? { userId =>
IfAway(pov) {
pushToAll(userId, _.takeback, PushApi.Data(
title = "Takeback offer",
body = s"${opponentName(pov)} proposes a takeback",
stacking = Stacking.GameTakebackOffer,
payload = Json.obj(
"userId" -> userId,
"userData" -> corresGameJson(pov, "gameTakebackOffer")
)
))
}
}
}
}
}
}
def drawOffer(gameId: Game.ID): Funit = scheduler.after(1 seconds) {
GameRepo game gameId flatMap {
_.filter(_.playable).?? { game =>
game.players.collectFirst {
case p if p.isOfferingDraw => Pov(game, game opponent p)
} ?? { pov => // the pov of the receiver
pov.player.userId ?? { userId =>
IfAway(pov) {
pushToAll(userId, _.takeback, PushApi.Data(
title = "Draw offer",
body = s"${opponentName(pov)} offers a draw",
stacking = Stacking.GameDrawOffer,
payload = Json.obj(
"userId" -> userId,
"userData" -> corresGameJson(pov, "gameDrawOffer")
)
))
}
@ -90,19 +130,21 @@ private final class PushApi(
stacking = Stacking.GameMove,
payload = Json.obj(
"userId" -> userId,
"userData" -> Json.obj(
"type" -> "corresAlarm",
"gameId" -> pov.gameId,
"fullId" -> pov.fullId,
"color" -> pov.color.name,
"fen" -> Forsyth.exportBoard(pov.game.toChess.board),
"lastMove" -> pov.game.castleLastMoveTime.lastMoveString,
"secondsLeft" -> pov.remainingSeconds
)
"userData" -> corresGameJson(pov, "corresAlarm")
)
))
}
private def corresGameJson(pov: Pov, typ: String) = Json.obj(
"type" -> typ,
"gameId" -> pov.game.id,
"fullId" -> pov.fullId,
"color" -> pov.color.name,
"fen" -> Forsyth.exportBoard(pov.game.toChess.board),
"lastMove" -> pov.game.castleLastMoveTime.lastMoveString,
"secondsLeft" -> pov.remainingSeconds
)
def newMessage(t: Thread, p: Post): Funit =
lightUser(t.visibleSenderOf(p)) ?? { sender =>
pushToAll(t.receiverOf(p), _.message, PushApi.Data(

View File

@ -6,6 +6,8 @@ private object Stacking {
case object GameFinish extends Stacking("gameFinish", "$[notif_count] games are over")
case object GameMove extends Stacking("gameMove", "It's your turn in $[notif_count] games")
case object GameTakebackOffer extends Stacking("gameTakebackOffer", "Takeback offers in $[notif_count] games")
case object GameDrawOffer extends Stacking("gameDrawOffer", "Draw offers in $[notif_count] games")
case object NewMessage extends Stacking("newMessage", "You have $[notif_count] new messages")
case object ChallengeCreate extends Stacking("challengeCreate", "You have $[notif_count] new challenges")
case object ChallengeAccept extends Stacking("challengeAccept", "$[notif_count] players accepted your challenges")

View File

@ -8,7 +8,8 @@ import chess.Centis
private[round] final class Drawer(
messenger: Messenger,
finisher: Finisher,
prefApi: PrefApi
prefApi: PrefApi,
bus: lila.common.Bus
) {
def autoThreefold(game: Game)(implicit proxy: GameProxy): Fu[Option[Pov]] = Pov(game).map { pov =>
@ -30,7 +31,7 @@ private[round] final class Drawer(
case Pov(g, color) if g playerCanOfferDraw color => proxy.save {
messenger.system(g, color.fold(_.whiteOffersDraw, _.blackOffersDraw))
Progress(g) map { g => g.updatePlayer(color, _ offerDraw g.turns) }
} inject List(Event.DrawOffer(by = color.some))
} >>- publishDrawOffer(pov) inject List(Event.DrawOffer(by = color.some))
case _ => fuccess(List(Event.ReloadOwner))
}
@ -50,4 +51,10 @@ private[round] final class Drawer(
(pov.game.playable && pov.game.toChessHistory.threefoldRepetition) ?? finisher.other(pov.game, _.Draw)
def force(game: Game)(implicit proxy: GameProxy): Fu[Events] = finisher.other(game, _.Draw, None, None)
private def publishDrawOffer(pov: Pov): Unit =
if (pov.game.isCorrespondence && pov.game.nonAi) bus.publish(
lila.hub.actorApi.round.CorresDrawOfferEvent(pov.gameId),
'offerEventCorres
)
}

View File

@ -58,6 +58,8 @@ final class Env(
}
import settings._
private val bus = system.lilaBus
private val moveTimeChannel = system.actorOf(Props(classOf[lila.socket.Channel]), name = ChannelMoveTime)
lazy val eventHistory = History(db(CollectionHistory)) _
@ -79,7 +81,7 @@ final class Env(
def receive: Receive = ({
case actorApi.GetNbRounds =>
nbRounds = size
system.lilaBus.publish(lila.hub.actorApi.round.NbRounds(nbRounds), 'nbRounds)
bus.publish(lila.hub.actorApi.round.NbRounds(nbRounds), 'nbRounds)
}: Receive) orElse actorMapReceive
}), name = ActorMapName)
@ -117,7 +119,7 @@ final class Env(
}),
name = SocketName
)
system.lilaBus.subscribe(actor, 'tvSelect, 'startGame, 'deploy)
bus.subscribe(actor, 'tvSelect, 'startGame, 'deploy)
actor
}
@ -130,7 +132,7 @@ final class Env(
messenger = messenger,
evalCacheHandler = evalCacheHandler,
selfReport = selfReport,
bus = system.lilaBus
bus = bus
)
lazy val perfsUpdater = new PerfsUpdater(historyApi, rankingApi)
@ -152,7 +154,7 @@ final class Env(
crosstableApi = crosstableApi,
notifier = notifier,
playban = playban,
bus = system.lilaBus,
bus = bus,
casualOnly = CasualOnly,
getSocketStatus = getSocketStatus
)
@ -166,7 +168,7 @@ final class Env(
private lazy val player: Player = new Player(
fishnetPlayer = fishnetPlayer,
bus = system.lilaBus,
bus = bus,
finisher = finisher,
uciMemo = uciMemo
)
@ -174,10 +176,12 @@ final class Env(
private lazy val drawer = new Drawer(
prefApi = prefApi,
messenger = messenger,
finisher = finisher
finisher = finisher,
bus = bus
)
lazy val messenger = new Messenger(chat = hub.actor.chat)
lazy val messenger = new Messenger(
chat = hub.actor.chat)
def version(gameId: String): Fu[Int] =
socketHub ? Ask(gameId, GetVersion) mapTo manifest[Int]
@ -210,7 +214,7 @@ final class Env(
name = "titivate"
)
system.lilaBus.subscribe(system.actorOf(
bus.subscribe(system.actorOf(
Props(new CorresAlarm(db(CollectionAlarm), hub.socket.round)),
name = "corres-alarm"
), 'moveEventCorres, 'finishGame)
@ -218,11 +222,12 @@ final class Env(
lazy val takebacker = new Takebacker(
messenger = messenger,
uciMemo = uciMemo,
prefApi = prefApi
prefApi = prefApi,
bus = bus
)
val tvBroadcast = system.actorOf(Props(classOf[TvBroadcast]))
system.lilaBus.subscribe(tvBroadcast, 'moveEvent, 'changeFeaturedGame)
bus.subscribe(tvBroadcast, 'moveEvent, 'changeFeaturedGame)
def checkOutoftime(game: Game) {
if (game.playable && game.started && !game.isUnlimited)

View File

@ -6,7 +6,8 @@ import lila.pref.{ Pref, PrefApi }
private[round] final class Takebacker(
messenger: Messenger,
uciMemo: UciMemo,
prefApi: PrefApi
prefApi: PrefApi,
bus: lila.common.Bus
) {
def yes(situation: Round.TakebackSituation)(pov: Pov)(implicit proxy: GameProxy): Fu[(Events, Round.TakebackSituation)] = IfAllowed(pov.game) {
@ -21,7 +22,8 @@ private[round] final class Takebacker(
val progress = Progress(game) map { g =>
g.updatePlayer(color, _ proposeTakeback g.turns)
}
proxy.save(progress) inject List(Event.TakebackOffers(color.white, color.black))
proxy.save(progress) >>- publishTakebackOffer(pov) inject
List(Event.TakebackOffers(color.white, color.black))
} map (_ -> situation)
case _ => fufail(ClientError("[takebacker] invalid yes " + pov))
}
@ -53,6 +55,14 @@ private[round] final class Takebacker(
}
}
private def publishTakebackOffer(pov: Pov): Unit =
if (pov.game.isCorrespondence && pov.game.nonAi) pov.player.userId foreach { userId =>
bus.publish(
lila.hub.actorApi.round.CorresTakebackOfferEvent(pov.gameId),
'offerEventCorres
)
}
private def IfAllowed[A](game: Game)(f: => Fu[A]): Fu[A] =
if (!game.playable) fufail(ClientError("[takebacker] game is over " + game.id))
else isAllowedByPrefs(game) flatMap {

View File

@ -16,6 +16,7 @@ object Permission {
case object ChatTimeout extends Permission("ROLE_CHAT_TIMEOUT")
case object UserSpy extends Permission("ROLE_USER_SPY")
case object UserEvaluate extends Permission("ROLE_USER_EVALUATE")
case object ViewPrivateComms extends Permission("ROLE_VIEW_PRIVATE_COMS")
case object MarkTroll extends Permission("ROLE_CHAT_BAN", List(UserSpy, ChatTimeout))
case object MarkEngine extends Permission("ROLE_ADJUST_CHEATER", List(UserSpy))
case object MarkBooster extends Permission("ROLE_ADJUST_BOOSTER", List(UserSpy))
@ -53,7 +54,7 @@ object Permission {
))
case object Admin extends Permission("ROLE_ADMIN", List(
Hunter, ModerateForum, IpBan, CloseAccount, ReopenAccount,
Hunter, ModerateForum, IpBan, CloseAccount, ReopenAccount, ViewPrivateComms,
ChatTimeout, MarkTroll, SetTitle, SetEmail, ModerateQa, StreamConfig,
MessageAnyone, CloseTeam, TerminateTournament, ManageTournament, ManageEvent,
PreviewCoach, PracticeConfig, RemoveRanking, ReportBan, Beta

View File

@ -7,7 +7,7 @@ import scala.concurrent.duration._
import chess.variant.Variant
import lila.common.Debouncer
import lila.game.{ Game, GameRepo }
import lila.game.{ Game, GameRepo, PerfPicker }
import lila.hub.actorApi.lobby.ReloadSimuls
import lila.hub.actorApi.map.Tell
import lila.hub.actorApi.timeline.{ Propagate, SimulCreate, SimulJoin }
@ -63,7 +63,17 @@ final class SimulApi(
else {
timeline ! (Propagate(SimulJoin(user.id, simul.id, simul.fullName)) toFollowersOf user.id)
Variant(variantKey).filter(simul.variants.contains).fold(simul) { variant =>
simul addApplicant SimulApplicant.make(SimulPlayer.make(user, variant))
simul addApplicant SimulApplicant.make(
SimulPlayer.make(
user,
variant,
PerfPicker.mainOrDefault(
speed = chess.Speed(simul.clock.config.some),
variant = variant,
daysPerTurn = none
)(user.perfs)
)
)
}
}
}

View File

@ -1,6 +1,7 @@
package lila.simul
import chess.variant.Variant
import lila.rating.Perf
import lila.user.{ User, Perfs }
private[simul] case class SimulPlayer(
@ -16,16 +17,7 @@ private[simul] case class SimulPlayer(
private[simul] object SimulPlayer {
private[simul] def make(user: User, variant: Variant): SimulPlayer = {
val perf =
if (variant == chess.variant.Standard) {
if (user.perfs.classical.nb >= 20 ||
user.perfs.classical.nb > user.perfs.blitz.nb)
user.perfs.classical
else user.perfs.blitz
} else Perfs.variantLens(variant).fold(user.perfs.standard)(_(user.perfs))
private[simul] def make(user: User, variant: Variant, perf: Perf): SimulPlayer = {
new SimulPlayer(
user = user.id,
variant = variant,

View File

@ -60,6 +60,18 @@ final class SlackApi(
case Victory(msg) => publishVictory(msg)
}
def commlog(mod: User, user: User, reportBy: Option[User.ID]): Funit = client(SlackMessage(
username = mod.username,
icon = "eye",
text = {
val finalS = if (user.username endsWith "s") "" else "s"
s"checked out _*${userLink(user.username)}*_'$finalS communications "
} + reportBy.filter(mod.id !=).fold("spontaneously") { by =>
s"while investigating a report created by ${userLink(by)}"
},
channel = "commlog"
))
def publishError(msg: String): Funit = client(SlackMessage(
username = "lichess error",
icon = "lightning",

View File

@ -25,7 +25,10 @@ final class EntryApi(
userEntries(userId, nb) flatMap broadcast.interleave
private def userEntries(userId: String, max: Int): Fu[Vector[Entry]] =
coll.find($doc("users" -> userId), projection)
coll.find($doc(
"users" -> userId,
"date" $gt DateTime.now.minusWeeks(2)
), projection)
.sort($sort desc "date")
.cursor[Entry](ReadPreference.secondaryPreferred)
.gather[Vector](max)
@ -61,11 +64,11 @@ final class EntryApi(
private def fetch: Fu[Vector[Entry]] = coll
.find($doc(
"users" $exists false,
"date" $gt DateTime.now.minusMonths(6)
"date" $gt DateTime.now.minusWeeks(2)
))
.sort($sort desc "date")
.cursor[Entry]() // must be on primary for cache refresh to work
.gather[Vector](8)
.gather[Vector](3)
private[EntryApi] def interleave(entries: Vector[Entry]): Fu[Vector[Entry]] = cache.get map { bcs =>
bcs.headOption.fold(entries) { mostRecentBc =>

View File

@ -29,7 +29,7 @@ object Dependencies {
val hasher = "com.roundeights" %% "hasher" % "1.2.0"
val jodaTime = "joda-time" % "joda-time" % "2.9.9"
val chess = "org.lichess" %% "scalachess" % "6.7"
val chess = "org.lichess" %% "scalachess" % "6.8"
val maxmind = "com.sanoma.cda" %% "maxmind-geoip2-scala" % "1.3.0-THIB"
val prismic = "io.prismic" %% "scala-kit" % "1.2.12-THIB"
val semver = "com.gilt" %% "gfc-semver" % "0.0.5"

View File

@ -1,3 +1,19 @@
#communication h1 {
font-size: 1.5em;
display: flex;
justify-content: space-between;
}
#communication .user_link {
margin-left: -.5em;
}
#communication .actions {
display: flex;
align-items: center;
}
#communication .actions .priv {
margin-right: 5px;
font-weight: normal;
}
#communication h2 {
font-size: 1.6em;
margin-top: 1.6em;

View File

@ -101,7 +101,7 @@
border-bottom: 1px solid #ccc;
}
#perfStat .highlow a,
#perfStat .highlow .na {
#perfStat .highlow span {
font-size: 1.2em;
text-indent: 20px;
display: inline-block;

View File

@ -359,7 +359,6 @@ div.sub_ratings h3 {
}
.user_show .note_zone p.text {
min-height: 2.7em;
word-break: break-all;
}
.user_show div.content_box_inter.tabs {
margin-left: -8px;

View File

@ -2,7 +2,7 @@
<!--Generated by crowdin.com-->
<resources>
<string name="activity">Verlauf</string>
<string name="supportedNbMonths">Unterstützte Lichess für %1$s Monate als %2$s</string>
<string name="supportedNbMonths">Unterstützt Lichess seit %1$s Monaten als %2$s</string>
<plurals name="practicedNbPositions">
<item quantity="one">Hat %1$s Stellung bei %2$s geübt</item>
<item quantity="other">Hat %1$s Stellungen bei %2$s geübt</item>
@ -60,4 +60,4 @@
<item quantity="one">Ist %s Team beigetreten</item>
<item quantity="other">Ist %s Teams beigetreten</item>
</plurals>
</resources>
</resources>

View File

@ -57,7 +57,7 @@
</plurals>
<string name="signedUp">Registrado en Lichess</string>
<plurals name="joinedNbTeams">
<item quantity="one">Ha entrado a %s equipo</item>
<item quantity="other">Ha entrado a %s equipos</item>
<item quantity="one">Has entrado al %s equipo</item>
<item quantity="other">Has entrado a los %s equipos</item>
</plurals>
</resources>
</resources>

View File

@ -1,3 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources></resources>
<resources>
<string name="activity">Kegiatan</string>
<string name="supportedNbMonths">Sudah mendukung lichess.org selama %1$s bulan sebagai %2$s</string>
<plurals name="solvedNbPuzzles">
<item quantity="other">Sudah menyelesaikan %s teka-teki catur</item>
</plurals>
<plurals name="gainedNbFollowers">
<item quantity="other">Memperoleh %s pengikut baru</item>
</plurals>
<plurals name="competedInNbTournaments">
<item quantity="other">Sudah mengikuti %s turnamen</item>
</plurals>
</resources>

View File

@ -2,9 +2,10 @@
<!--Generated by crowdin.com-->
<resources>
<string name="activity">Aktivita</string>
<string name="supportedNbMonths">Podporuje lichess.org %1$s mesiacov ako %2$s</string>
<plurals name="solvedNbPuzzles">
<item quantity="one">%s riešená taktická úloha</item>
<item quantity="few">%s riešené taktické úlohy</item>
<item quantity="other">%s riešených taktických úloh</item>
</plurals>
</resources>
</resources>

View File

@ -3,8 +3,8 @@
<resources>
<string name="isItRated">¿Es por puntos?</string>
<string name="willBeNotified">Se te avisará cuando empiece el torneo. Puedes jugar tranquilamente en otra pestaña mientras esperas.</string>
<string name="isRated">Este torneo es por puntos y afectará a su puntuación.</string>
<string name="isNotRated">Este torneo *no* es por puntos y *no* afectará a su puntuación.</string>
<string name="isRated">Este torneo es por puntos y afectará a tu puntuación.</string>
<string name="isNotRated">Este torneo *no* es por puntos y *no* afectará a tu puntuación.</string>
<string name="someRated">Algunos torneos son por puntos y afectarán a tu puntuación.</string>
<string name="howAreScoresCalculated">¿Cómo se calculan las puntuaciones?</string>
<string name="howAreScoresCalculatedAnswer">De entrada, las victorias valen 2 puntos, las tablas 1 punto y las derrotas 0 puntos.
@ -24,7 +24,7 @@ El modo berserk no está disponible en controles de tiempo con tiempo inicial ce
El modo berserk sólo proporciona un punto adicional por cada victoria si juegas al menos 7 movimientos en la partida.</string>
<string name="howIsTheWinnerDecided">¿Cómo se decide el ganador?</string>
<string name="howIsTheWinnerDecidedAnswer">El jugador con los más puntos al término del torneo será anunciado el ganador.</string>
<string name="howIsTheWinnerDecidedAnswer">El (los) jugador(es) con más puntos al finalizar el torneo será(n) el (los) ganador(es).</string>
<string name="howDoesPairingWork">¿Cómo se realizan los emparejamientos?</string>
<string name="howDoesPairingWorkAnswer">Al principio del torneo, los jugadores se emparejan en base a su puntuación. En cuanto terminas una partida, vuelves al recibidor del torneo, y se te emparejará con un jugador con una puntuación similar a la tuya. Esto minimiza el tiempo de espera, si bien es posible que no juegues contra todos los demás jugadores del torneo.
Juega rápido y vuelve al recibidor para jugar más partidas y ganar más puntos.</string>
@ -34,5 +34,5 @@ Juega rápido y vuelve al recibidor para jugar más partidas y ganar más puntos
<string name="otherRulesAnswer">Debes hacer tu primer movimiento en 20 segundos. Si no lo haces, se concederá la victoria a tu oponente.
Declarar tablas en los primeros 10 movimientos no concederá puntos a ninguno de los jugadores.</string>
<string name="thisIsPrivate">Este es un torneo privado</string>
<string name="shareUrl">Comparte esta URL para que otras personas se unan: %s</string>
</resources>
<string name="shareUrl">Comparte este enlace para que otras personas se unan: %s</string>
</resources>

View File

@ -21,17 +21,17 @@ Berserk w partii z przyrostem czasu anuluje również przyrost (wyjątkiem jest
Berserk nie jest dostępny w partiach z zerowym czasem początkowym (0 + 1, 0 + 2).
Berserk przynosi dodatkowe punkty tylko wtedy gdy zrobisz co najmniej 7 posunięć w partii.</string>
<string name="howIsTheWinnerDecided">Jak jest wyłaniany zwycięzca?</string>
<string name="howIsTheWinnerDecided">Jak wyłaniany jest zwycięzca?</string>
<string name="howIsTheWinnerDecidedAnswer">Zwycięzcą turnieju zostaje gracz (lub gracze) który w momencie upłynięcia czasu przeznaczonego na turniej posiada największą liczbę punktów turniejowych.</string>
<string name="howDoesPairingWork">W jaki sposób dobierani są przeciwnicy?</string>
<string name="howDoesPairingWorkAnswer">Na początku turnieju gracze dobierani są do wspólnej gry na podstawie swoich rankingów.
Zaraz po zakończeniu gry i powrocie do poczekalni zostanie Ci ponownie dobrany gracz o rankingu zbliżonym do Twojego. Dzięki temu czas oczekiwania jest minimalny, możesz jednak nie mieć okazji zagrać z wszystkimi graczami uczestniczącymi w turnieju.
Graj szybko i wracaj do poczekalni aby rozegrać jak najwięcej partii i zdobyć jak najwięcej punktów.</string>
<string name="howDoesItEnd">Kiedy kończy się turniej?</string>
<string name="howDoesItEndAnswer">Turniej ma zegar który odlicza czas wstecz. Gdy osiągnie zero, rankingi turniejowe są zamrażane i ogłasza się zwycięzcę. Gry w toku muszą zostać zakończone, jednak nie są już wliczane do turnieju.</string>
<string name="howDoesItEndAnswer">Turniej ma zegar który odlicza czas wstecz. Gdy osiągnie zero, punkty zdobyte w turnieju są zamrażane i ogłasza się zwycięzcę. Gry w toku muszą zostać zakończone, jednak nie są już wliczane do turnieju.</string>
<string name="otherRules">Inne ważne zasady</string>
<string name="otherRulesAnswer">Jesteś zobowiązany do wykonania pierwszego ruchu w ciągu 20 sekund. Nie wykonanie ruchu w tym czasie spowoduje przegranie partii.
Jeżeli w ciągu pierwszych 10 ruchów gry uzgodnicie remis to żaden z graczy nie zdobędzie punktów.</string>
<string name="thisIsPrivate">Ten turniej jest prywatny</string>
<string name="shareUrl">Udostępnij ten URL innym aby dołączyli do: %s</string>
</resources>
</resources>

View File

@ -1,3 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources></resources>
<resources>
<string name="isItRated">算分吗?</string>
<string name="howDoesItEnd">这么完成?</string>
<string name="otherRules">其他重要的规则</string>
</resources>

View File

@ -11,4 +11,4 @@
<string name="youCanAnalyseAGameMoreEffectively">يمكنك تحليل المباراة بفعالية أكبر إذا كنت لا تحتاج البحث عن أسماء المربعات.</string>
<string name="aSquareNameAppears">اسم المربع ييظهر على الرقعة، ويجب عليك النقر فوق المربع الصحيح. لديك 30 ثانية للتعرف أكبر عدد ممكن من المربعات!</string>
<string name="startTraining">إبدأ التدريب</string>
</resources>
</resources>

View File

@ -6,9 +6,9 @@
<string name="averageScoreAsWhiteX">Durchschnittliche Punktzahl als Weiß: %s</string>
<string name="averageScoreAsBlackX">Durchschnittliche Punktzahl als Schwarz: %s</string>
<string name="knowingTheChessBoard">Die Koordinaten des Schachbretts zu kennen ist eine wichtige Fähigkeit:</string>
<string name="mostChessCourses">Viele Schach-Kurse und Übungen verwenden die algebraische Notation.</string>
<string name="talkToYourChessFriends">Es erleichtert dir, dich mit deinen Schachfreunden zu unterhalten, da ihr beide die \"Schachsprache\" versteht.</string>
<string name="mostChessCourses">Die meisten Schach-Kurse und Übungen verwenden die algebraische Notation.</string>
<string name="talkToYourChessFriends">Es macht es einfacher dich mit deinen Schachfreunden zu unterhalten, da ihr beide die \"Schachsprache\" versteht.</string>
<string name="youCanAnalyseAGameMoreEffectively">Du kannst ein Spiel effektiver analysieren, wenn du nicht immer nach den Feldbezeichnungen suchen musst.</string>
<string name="aSquareNameAppears">Der Feldname wird auf dem Brett angezeigt und du musst auf das zugehörige Feld klicken. Du hast 30 Sekunden, um möglichst viele Felder zu erkennen!</string>
<string name="startTraining">Training beginnen</string>
</resources>
</resources>

View File

@ -11,4 +11,4 @@
<string name="youCanAnalyseAGameMoreEffectively">Puedes analizar partidas de forma más eficiente si no tienes que andar buscando los nombres de los escaques.</string>
<string name="aSquareNameAppears">El nombre de un escaque aparece en la pantalla y debes hacer clic en el escaque correcto. ¡Tienes 30 segundos para identificar tantos escaques como puedas!</string>
<string name="startTraining">Comenzar entrenamiento</string>
</resources>
</resources>

View File

@ -1,3 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources></resources>
<resources>
<string name="coordinates">좌표</string>
<string name="coordinateTraining">좌표 훈련</string>
<string name="averageScoreAsWhiteX">흰색으로 평균 점수: %s</string>
<string name="averageScoreAsBlackX">검정색으로 평균 점수: %s</string>
<string name="knowingTheChessBoard">체스판 좌표를 아는 것은 아주 중요한 체스 기술입니다:</string>
<string name="talkToYourChessFriends">둘다 체스의 \"언어\"를 이해하기 때문에 친구에게 얘기를 하는게 쉽니다.</string>
<string name="startTraining">훈련 시작</string>
</resources>

View File

@ -11,4 +11,4 @@
<string name="youCanAnalyseAGameMoreEffectively">Karelerin adlarını iyice bilirsen oyunları daha etkili bir şekilde analiz edebilirsin.</string>
<string name="aSquareNameAppears">Bu alıştırma için tahta üzerinde adı görünen karelere tıklaman gerekiyor. 30 saniye içinde mümkün olduğunca çok kareyi bulmaya çalış!</string>
<string name="startTraining">Antrenmana başla</string>
</resources>
</resources>

View File

@ -3,19 +3,19 @@
<resources>
<string name="emailConfirm_subject">Bestätige dein Benutzerkonto auf lichess.org, %s</string>
<string name="emailConfirm_click">Klicke auf den Link um dein Benutzerkonto bei Lichess zu aktivieren:</string>
<string name="emailConfirm_ignore">Wenn du dich nicht bei Lichess registriert hast, kannst du diese Nachricht ignorieren.</string>
<string name="emailConfirm_ignore">Wenn Du dich nicht bei Lichess registriert hast kannst Du diese Nachricht ignorieren.</string>
<string name="passwordReset_subject">Setze dein Passwort für lichess.org zurück, %s</string>
<string name="passwordReset_intro">Wir haben eine Anfrage zum Zurücksetzen deines Passworts erhalten.</string>
<string name="passwordReset_clickOrIgnore">Wenn du diese Anfrage gemacht hast, klicke auf den untenstehenden Link. Falls nicht, ignoriere diese E-Mail.</string>
<string name="passwordReset_clickOrIgnore">Wenn Du diese Anfrage gemacht hast, klicke auf den untenstehenden Link. Falls nicht, ignoriere diese E-Mail.</string>
<string name="emailChange_subject">Bestätige die neue E-Mail-Adresse, %s</string>
<string name="emailChange_intro">Du hast eine Änderung deiner E-Mail-Adresse angefordert.</string>
<string name="emailChange_click">Um zu bestätigen, dass du Zugriff auf diese E-Mail hast, klicke bitte auf den untenstehenden Link:</string>
<string name="emailChange_click">Um zu bestätigen, dass Du Zugriff auf diese E-Mail hast, klicke bitte auf den untenstehenden Link:</string>
<string name="welcome_subject">Herzlich willkommen bei lichess.org, %s</string>
<string name="welcome_text">Du hast erfolgreich dein Benutzerkonto auf https://lichess.org erstellt.
Hier geht es zu deiner Profil-Seite: %1$s. Du kannst sie auf %2$s personalisieren.
Viel Spaß und mögen deine Figuren immer den Weg zum gegnerischen König finden!</string>
<string name="common_orPaste">(Klicken funktioniert nicht? Versuche, es in deinen Browser einzufügen!)</string>
<string name="common_orPaste">(Klicken funktioniert nicht? Versuche den Link in deinen Browser einzufügen!)</string>
<string name="common_note">Dies ist eine Service-E-Mail im Zusammenhang mit deiner Nutzung von %s.</string>
</resources>
</resources>

View File

@ -15,7 +15,7 @@
Esta es la página de tu perfil: %1$s. Puedes personalizarla en %2$s.
¡Que te diviertas, y que tus piezas se abran siempre paso hasta el rey enemigo!</string>
¡Diviértete y que tus piezas se abran siempre paso hasta el Rey enemigo!</string>
<string name="common_orPaste">(¿Hacer clic no funciona? Copia la dirección y pégala en la barra del navegador)</string>
<string name="common_note">Esto es un correo automático sobre el uso de %s.</string>
</resources>
</resources>

View File

@ -1,3 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources></resources>
<resources>
<string name="emailConfirm_subject">%s님, 귀하의 lichess.org 계정을 확인하십시오.</string>
<string name="emailConfirm_click">이 링크를 클릭해서 Lichess 계정을 활성화 하십시오.</string>
<string name="emailConfirm_ignore">Lichess에 계정을 만드시지 않으셨으면 이 이메일을 무시하셔도 됩니다.</string>
<string name="passwordReset_subject">%s님, lichess.org 비밀번호를 재설정하십시오.</string>
<string name="passwordReset_intro">귀하의 계정의 비밀번호 재설정 요청을 받았습니다.</string>
<string name="passwordReset_clickOrIgnore">만약 요청을 하셨으면 아래 링크를 클릭하십시오. 요청하지 않으셨다면 이 이메일을 무시하셔도 됩니다.</string>
<string name="emailChange_subject">%s님, 새 이메일 주소를 확인하십시오.</string>
<string name="emailChange_intro">귀하의 이메일 주소를 변경하려 했습니다.</string>
<string name="emailChange_click">확인을 위하여 아래 링크를 클릭해 주십시오.</string>
<string name="welcome_subject">%s님, lichess.org에 오신 것을 환영합니다.</string>
<string name="welcome_text">성공적으로 https://lichess.org에 계정을 만드셨습니다.
프로필 페이지는 %1$s에 있으며 수정은 %2$s에서 하실 수 있습니다.
언제나 상대편 왕으로 갈 길을 찾기를 응원합니다!</string>
<string name="common_orPaste">(링크를 눌러도 되지 않으면 브라우저에 붙여넣기를 하십시오.)</string>
<string name="common_note">이 이메일은 귀하의 %s 사용에 관련된 서비스 이메일입니다.</string>
</resources>

View File

@ -11,7 +11,7 @@
<string name="chessPieces">Las piezas de ajedrez</string>
<string name="theRook">La torre</string>
<string name="itMovesInStraightLines">Se mueve en línea recta</string>
<string name="rookIntro">La torre es una pieza poderosa. ¿Estás listo para dirigirla?</string>
<string name="rookIntro">La Torre es una pieza poderosa. ¿Estás listo para dirigirla?</string>
<string name="rookGoal">¡Haz clic en la torre para llevarla hasta la estrella!</string>
<string name="grabAllTheStars">¡Captura todas las estrellas!</string>
<string name="theFewerMoves">¡Cuantos menos movimientos hagas, más puntos ganas!</string>
@ -34,7 +34,7 @@
<string name="kingComplete">¡Ya puedes dar órdenes al comandante!</string>
<string name="theKnight">El caballo</string>
<string name="itMovesInAnLShape">Se mueve en forma de L</string>
<string name="knightIntro">A ver cómo se te da éste. El caballo es... una pieza complicada.</string>
<string name="knightIntro">A ver cómo se te da éste. El Caballo es... una pieza complicada.</string>
<string name="knightsHaveAFancyWay">¡Los caballos tienen una forma curiosa de saltar!</string>
<string name="knightsCanJumpOverObstacles">¡Los caballos pueden saltar obstáculos! ¡Escapa y captura las estrellas!</string>
<string name="knightComplete">¡Felicidades! Dominas el movimiento del caballo.</string>
@ -133,8 +133,8 @@ Y no pierdas las tuyas.</string>
<string name="stalemateComplete">¡Felicidades! ¡Mejor ahogado que recibir un jaque mate!</string>
<string name="advanced">Avanzado</string>
<string name="pieceValue">Valor de las piezas</string>
<string name="evaluatePieceStrength">Evaluar la fuerza de las piezas</string>
<string name="pieceValueIntro">¡Las piezas con más movilidad tienen más valor!
<string name="evaluatePieceStrength">Sopesa la fuerza de tus piezas</string>
<string name="pieceValueIntro">¡Las piezas con mayor movilidad valen más!
Reina = 9
Torre = 5
Alfil = 3
@ -168,7 +168,7 @@ Peón = 1</string>
<string name="playPeople">Juega contra otros</string>
<string name="opponentsFromAroundTheWorld">Oponentes de todo el mundo</string>
<string name="playMachine">Juega contra la máquina</string>
<string name="testYourSkillsWithTheComputer">Ponte a prueba contra el ordenador</string>
<string name="testYourSkillsWithTheComputer">Ponte a prueba contra la computadora</string>
<string name="letsGo">¡Comencemos!</string>
<string name="stageX">Nivel %s</string>
<string name="awesome">¡Alucinante!</string>
@ -187,4 +187,4 @@ Peón = 1</string>
<string name="backToMenu">Volver al menú</string>
<string name="puzzleFailed">¡Ejercicio fallido!</string>
<string name="retry">Reintentar</string>
</resources>
</resources>

View File

@ -1,3 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources></resources>
<resources>
<string name="learnChess">체스 배우기</string>
<string name="byPlaying">플레이하면서</string>
<string name="menu">메뉴</string>
<string name="progressX">진행도: %s</string>
<string name="resetMyProgress">초기화</string>
<string name="youWillLoseAllYourProgress">당신의 모든 진행이 사라집니다!</string>
<string name="play">시작하기!</string>
<string name="chessPieces">체스 기물</string>
<string name="theRook">루크</string>
<string name="itMovesInStraightLines">직선으로 움직입니다</string>
<string name="rookIntro">루크는 강한 기물입니다. 사용할 준비되셨나요?</string>
<string name="rookGoal">루크를 클릭해서 별로 이동시키세요!</string>
<string name="grabAllTheStars">모든 별로 이동시키세요!</string>
<string name="theFewerMoves">덜 움직일수록 점수를 더 많이 받습니다!</string>
<string name="useTwoRooks">루크 2개를 써서 더 빠르게 하세요!</string>
<string name="rookComplete">축하드립니다! 루크를 성공적으로 마스터하셨습니다.</string>
<string name="theBishop">비숍</string>
<string name="itMovesDiagonally">대각선으로 움직입니다.</string>
<string name="bishopIntro">비숍을 어떻게 옮기는지 배워볼까요?</string>
<string name="theQueen"></string>
<string name="queenCombinesRookAndBishop">퀸 = 룩 + 비숍</string>
<string name="theKing"></string>
<string name="theMostImportantPiece">제일 중요한 기물</string>
<string name="theKingIsSlow">킹은 느립니다.</string>
<string name="lastOne">마지막!</string>
<string name="theKnight">나이트</string>
<string name="itMovesInAnLShape">L자 모양으로 움직입니다</string>
<string name="thePawn"></string>
<string name="pawnPromotion">폰 진급</string>
<string name="yourPawnReachedTheEndOfTheBoard">당신의 폰이 보드 끝을 도달하였습니다!</string>
<string name="fundamentals">기본</string>
<string name="protection">보호</string>
<string name="defendYourKing">킹을 보호하라</string>
<string name="intermediate">중급</string>
<string name="boardSetup">보드 준비</string>
<string name="castling">캐슬링</string>
<string name="enPassant">앙 파상</string>
<string name="stalemate">스테일메이트</string>
<string name="theGameIsADraw">게임이 무승부입니다</string>
<string name="advanced">상급</string>
<string name="register">회원가입</string>
<string name="getAFreeLichessAccount">무료 Lichess 계정 받기</string>
<string name="practice">연습</string>
<string name="puzzles">퍼즐</string>
<string name="videos">동영상</string>
<string name="playPeople">사람들이랑 플레이</string>
<string name="playMachine">컴퓨터랑 게임하기</string>
<string name="testYourSkillsWithTheComputer">컴퓨터로 실력 평가하기</string>
<string name="letsGo">시작하기</string>
<string name="stageX">스테이지 %s</string>
<string name="awesome">좋아요!</string>
<string name="excellent">멋져요!</string>
<string name="greatJob">잘 하셨어요!</string>
<string name="perfect">완벽해요!</string>
<string name="outstanding">대단해요!</string>
<string name="wayToGo">그렇죠!</string>
<string name="yesYesYes">맞아요!</string>
<string name="youreGoodAtThis">잘 하시네요!</string>
<string name="nailedIt">바로 그거에요.</string>
<string name="rightOn">맞습니다!</string>
<string name="yourScore">당신의 점수</string>
<string name="next">다음</string>
<string name="backToMenu">다시 메뉴로</string>
<string name="puzzleFailed">퍼즐 실패</string>
<string name="retry">다시하기</string>
</resources>

View File

@ -48,7 +48,7 @@ Skacz i zbieraj gwiazdki!</string>
Ale jeśli dojdą do ostatniej linii mogą zamienić się w silniejszą figurę!</string>
<string name="mostOfTheTimePromotingToAQueenIsBest">W większości przypadków najlepiej promować piona do królowej.
Jednak czasem bardziej przydatny może być skoczek!</string>
<string name="pawnsMoveForward">Pionki poruszają się do przodu ale biją po przekątnej!</string>
<string name="pawnsMoveForward">Piony poruszają się do przodu ale biją po przekątnej!</string>
<string name="captureThenPromote">Zbij, a później promuj piona!</string>
<string name="useAllThePawns">Użyj wszystkich swoich pionów! Nie ma potrzeby promowania.</string>
<string name="aPawnOnTheSecondRank">Pion będący na drugiej linii może poruszyć się o 2 pola do przodu!</string>
@ -124,9 +124,9 @@ Jednak czasem bardziej przydatny może być skoczek!</string>
<string name="theSpecialPawnMove">Specjalny ruch piona</string>
<string name="enPassantIntro">Kiedy pion przeciwnika poruszył się o dwa pola do przodu, możesz zbić go tak jakby poruszył się tylko o jedno pole.</string>
<string name="blackJustMovedThePawnByTwoSquares">Czarne właśnie ruszyły się pionem o dwa pola do przodu! Zbij go biciem w przelocie.</string>
<string name="enPassantOnlyWorksImmediately">Bicie w przelocie działa tylko od razu po ruchu przeciwnika pionkiem.</string>
<string name="enPassantOnlyWorksImmediately">Bicie w przelocie działa tylko od razu po ruchu przeciwnika pionem.</string>
<string name="enPassantOnlyWorksOnFifthRank">Bicie w przelocie działa tylko wtedy gdy pion jest na 5 linii.</string>
<string name="takeAllThePawnsEnPassant">Zbij wszystkie pionki biciem w przelocie!</string>
<string name="takeAllThePawnsEnPassant">Zbij wszystkie piony biciem w przelocie!</string>
<string name="enPassantComplete">Gratulacje! Potrafisz teraz wykonać bicie w przelocie.</string>
<string name="stalemate">Pat</string>
<string name="theGameIsADraw">Gra zakończona remisem</string>
@ -191,4 +191,4 @@ Pion = 1</string>
<string name="backToMenu">Powrót do menu</string>
<string name="puzzleFailed">To zły ruch!</string>
<string name="retry">Spróbuj jeszcze raz</string>
</resources>
</resources>

View File

@ -103,12 +103,104 @@
<string name="mateInOne">Мат у један</string>
<string name="defeatTheOpponentsKing">Поразите противничког краља</string>
<string name="mateInOneIntro">Ви сте победник када ваш противник не може да се одбрани од шаха.</string>
<string name="attackYourOpponentsKing">Нападните противничког краља
на начин који се не може одбранити!</string>
<string name="mateInOneComplete">Честитамо! Тако се добијају партије!</string>
<string name="intermediate">Средње</string>
<string name="boardSetup">Намештање табле</string>
<string name="howTheGameStarts">Тако почиње партија</string>
<string name="boardSetupIntro">Две армије се суочавају, спремне за битку.</string>
<string name="thisIsTheInitialPosition">Ово је почетна позиција
сваке шаховске партије!
Направите било који потез да наставите.</string>
<string name="firstPlaceTheRooks">Прво ставите топове!
Они иду у ћошкове.</string>
<string name="thenPlaceTheKnights">Затим ставите скакаче!
Они иду поред топова.</string>
<string name="placeTheBishops">Ставите ловчеве!
Они иду поред скакача.</string>
<string name="placeTheQueen">Ставите краљицу!
Она иде на њену боју.</string>
<string name="placeTheKing">Ставите краља!
Одмах поред његове краљице.</string>
<string name="pawnsFormTheFrontLine">Пешаци формирају предњу линију.
Направите било који потез да наставите.</string>
<string name="boardSetupComplete">Честитамо! Знате да поставите шаховску таблу.</string>
<string name="castling">Рокада</string>
<string name="theSpecialKingMove">Специјалан краљев потез</string>
<string name="castlingIntro">Доведите краља у сигурност, и доведите топа да напада!</string>
<string name="castleKingSide">Померите краља за два поља
да урадите малу рокаду!</string>
<string name="castleQueenSide">Померите краља за два поља
да урадите велику рокаду!</string>
<string name="theKnightIsInTheWay">Скакач је на путу!
Померите га, и онда направите малу рокаду.</string>
<string name="castleKingSideMovePiecesFirst">Направите малу рокаду!
Прво морате развити фигуре.</string>
<string name="castleQueenSideMovePiecesFirst">Направите велику рокаду!
Прво морате развити фигуре.</string>
<string name="youCannotCastleIfMoved">Неможете направити рокаду ако
се краљ већ померио
или ако се то већ померио.</string>
<string name="youCannotCastleIfAttacked">Неможете направити рокаду ако
је краљ нападнут на путу.
Блокирајте шах па онда направите рокаду!</string>
<string name="findAWayToCastleKingSide">Нађите начин да
направите малу рокаду!</string>
<string name="findAWayToCastleQueenSide">Нађите начин да
направите велику рокаду!</string>
<string name="castlingComplete">Честитамо! Требали би скоро увек направити рокаду током партије.</string>
<string name="enPassant">Ен пасант</string>
<string name="theSpecialPawnMove">Специјалан пешаков потез</string>
<string name="enPassantIntro">Када се противнички пешак помери за два поља, можете да га поједете као да се померију за једно поље.</string>
<string name="blackJustMovedThePawnByTwoSquares">Црни играч је таман померио пешака
за два поља!
Поједите га ен пасант.</string>
<string name="enPassantOnlyWorksImmediately">Ен пасант једино ради
одмах након што је противник
померио пешака.</string>
<string name="enPassantOnlyWorksOnFifthRank">Ан пасан је могућ само
ако вам је пешак на петом реду.</string>
<string name="takeAllThePawnsEnPassant">Узмите све пешаке ен пасант!</string>
<string name="enPassantComplete">Честитамо! Сада можете узимати ен пасант.</string>
<string name="stalemate">Пат</string>
<string name="theGameIsADraw">Партија је нерешена</string>
<string name="stalemateIntro">Када играч није у шаху и неможе направити ниједан потез, то је пат. Партија је нерешена: нико не добија, нико не губи.</string>
<string name="stalemateGoal">Да направите пат:
- Црни играч не може нигде да се помери
- Нема шаха.</string>
<string name="stalemateComplete">Честитамо! Боље правите пат него да добијете шах мат!</string>
<string name="advanced">Напредно</string>
<string name="pieceValue">Вредност фигура</string>
<string name="evaluatePieceStrength">Процените снагу фигуре</string>
<string name="pieceValueIntro">Фигуре са више поља на које могу да се помере су вредније!
Дама = 9
Топ = 5
Ловац = 3
Скакач = 3
Пешак = 1
Краљ нема вредност! Ако га изгубите, изгубили сте партију.</string>
<string name="queenOverBishop">Поједите фигуру
са највећом вредношћу!
Дама &gt; Ловац</string>
<string name="takeThePieceWithTheHighestValue">Поједите фигуру
са највећом вредношћу!</string>
<string name="pieceValueComplete">Честитамо! Знате вредност материјала!
Дама = 9
Топ = 5
Ловац = 3
Скакач = 3
Пешак = 1</string>
<string name="checkInTwo">Шах у два</string>
<string name="twoMovesToGiveCheck">Два потеза да дате шах</string>
<string name="checkInTwoIntro">Пронађите најбољу комбинацију два потеза којом шахирате противниковог краља!</string>
<string name="checkInTwoGoal">Претите противничком краљу
у два потеза!</string>
<string name="checkInTwoComplete">Честитамо! Дали сте шах вашем противнику, терајући их да одбране свог краља!</string>
<string name="whatNext">Шта је следеће?</string>
<string name="youKnowHowToPlayChess">Знате како да играте шах, честитамо! Да ли желите постати бољи играч?</string>
<string name="learnCommonChessPositions">Научите честе шаховске позиције</string>
<string name="exerciseYourTacticalSkills">Вежбајте ваше тактичке вештине</string>
<string name="watchInstructiveChessVideos">Гледајте инструктивне шаховске снимке</string>
<string name="opponentsFromAroundTheWorld">Противници из целог света</string>
</resources>
</resources>

View File

@ -1,3 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources></resources>
<resources>
<string name="playMachine">跟电脑玩</string>
<string name="testYourSkillsWithTheComputer">看你多强</string>
<string name="letsGo">开始!</string>
<string name="awesome">极好的!</string>
<string name="excellent">非常好!</string>
<string name="greatJob">干的好!</string>
<string name="perfect">完美</string>
<string name="outstanding">优秀!</string>
<string name="wayToGo">太棒了!</string>
<string name="yourScore">呢的分</string>
<string name="next">下一个</string>
<string name="retry">重试</string>
</resources>

View File

@ -3,8 +3,8 @@
<resources>
<string name="playWithAFriend">اللعب مع صديق</string>
<string name="playWithTheMachine">اللعب مع الحاسوب</string>
<string name="toInviteSomeoneToPlayGiveThisUrl">لدعوة شخص ما للعب، أرسل هذا الرابط</string>
<string name="gameOver">انتهت المباراة</string>
<string name="toInviteSomeoneToPlayGiveThisUrl">لدعوة شخص ما للعب، أرسل له هذا الرابط</string>
<string name="gameOver">إنتهت المباراة</string>
<string name="waitingForOpponent">في إنتظار المنافس</string>
<string name="waiting">إنتظار</string>
<string name="yourTurn">دورك</string>
@ -12,42 +12,42 @@
<string name="level">المستوى</string>
<string name="toggleTheChat">تعطيل/تشغيل الدردشة</string>
<string name="toggleSound">تعطيل/تشغيل الصوت</string>
<string name="chat">دردشة</string>
<string name="resign">استسلام</string>
<string name="checkmate">كش مات</string>
<string name="stalemate">الملك مخنوق</string>
<string name="chat">الدردشة</string>
<string name="resign">إستسلام</string>
<string name="checkmate">كش ملك</string>
<string name="stalemate">طريق مسدود</string>
<string name="white">أبيض</string>
<string name="black">أسود</string>
<string name="randomColor">لون عشوائي</string>
<string name="randomColor">جهة عشوائية</string>
<string name="createAGame">إنشاء مباراة</string>
<string name="whiteIsVictorious">الأبيض فاز</string>
<string name="blackIsVictorious">الأسود فاز</string>
<string name="whiteIsVictorious">الأبيض هو المنتصر</string>
<string name="blackIsVictorious">الأسود هو المنتصر</string>
<string name="kingInTheCenter">الملك في الوسط</string>
<string name="threeChecks">كش ملك ثلاثا</string>
<string name="raceFinished">نهاية السباق</string>
<string name="threeChecks">كش ملك ثلاث مرات</string>
<string name="raceFinished">إنتهى السباق</string>
<string name="variantEnding">نهاية مختلفة</string>
<string name="newOpponent">خصم جديد</string>
<string name="yourOpponentWantsToPlayANewGameWithYou">يريد متحديك أن يلعب مباراة جديدة معك</string>
<string name="joinTheGame">انضم إلى المباراة</string>
<string name="yourOpponentWantsToPlayANewGameWithYou">يريد خصمك أن يلعب مباراة جديدة معك</string>
<string name="joinTheGame">إنضم إلى المباراة</string>
<string name="whitePlays">دور الأبيض</string>
<string name="blackPlays">دور الأسود</string>
<string name="opponentLeftChoices">يبدو أن الخصم ترك المباراة. يمكنك انتزاع الفوز، إعلان التعادل أو الانتظار.</string>
<string name="makeYourOpponentResign">اجبر خصمك على الاستسلام</string>
<string name="forceResignation">انتزاع الفوز</string>
<string name="opponentLeftChoices">قد يكون خصمك قد ترك المباراة. يمكنك المطالبة بالنصر، أو التعادل، أو إنتظر.</string>
<string name="makeYourOpponentResign">إجعل خصمك يستسلم</string>
<string name="forceResignation">المطالبة بالنصر</string>
<string name="forceDraw">إعلان التعادل</string>
<string name="talkInChat">كن حسن الخلق في الدردشة</string>
<string name="theFirstPersonToComeOnThisUrlWillPlayWithYou">أول من يأتي لهذا الرابط سيكون خصمك</string>
<string name="whiteResigned">الأبيض استسلم</string>
<string name="blackResigned">الأسود استسلم</string>
<string name="talkInChat">يرجي أن تكون لطيفاً في الدردشة!</string>
<string name="theFirstPersonToComeOnThisUrlWillPlayWithYou">أول من يأتي لهذا الرابط. سيلعب معك.</string>
<string name="whiteResigned">الأبيض إستسلم</string>
<string name="blackResigned">الأسود إستسلم</string>
<string name="whiteLeftTheGame">الأبيض ترك المباراة</string>
<string name="blackLeftTheGame">الأسود ترك المباراة</string>
<string name="shareThisUrlToLetSpectatorsSeeTheGame">شارك هذا الرابط لمن يريد مشاهدة المباراة</string>
<string name="theComputerAnalysisHasFailed">فشل تحليل الحاسب</string>
<string name="viewTheComputerAnalysis">عرض تحليل الحاسب</string>
<string name="requestAComputerAnalysis">اطلب تحليل حاسب</string>
<string name="computerAnalysis">تحليل الحاسب</string>
<string name="computerAnalysisAvailable">متاح تحليل الكمبيوتر</string>
<string name="analysis">تحليل اللعبة</string>
<string name="shareThisUrlToLetSpectatorsSeeTheGame">شارك هذا الرابط مع من يريد مشاهدة المباراة</string>
<string name="theComputerAnalysisHasFailed">فشل تحليل الحاسوب</string>
<string name="viewTheComputerAnalysis">عرض تحليل الحاسوب</string>
<string name="requestAComputerAnalysis">طلب تحليل الحاسوب</string>
<string name="computerAnalysis">تحليل الحاسوب</string>
<string name="computerAnalysisAvailable">تحليل الحاسوب متاح</string>
<string name="analysis">لوحة التحليل</string>
<string name="depthX">عمق التحليل %s</string>
<string name="usingServerAnalysis">استخدام تحليل السيرفر</string>
<string name="loadingEngine">تحميل المحرك...</string>
@ -327,7 +327,7 @@
<string name="tournamentPoints">نقاط المسابقة</string>
<string name="viewTournament">شاهد المسابقة</string>
<string name="backToTournament">عودة للمسابقة</string>
<string name="thematic">موضوعية</string>
<string name="thematic">وضعية مخصصة</string>
<plurals name="moreThanNbRatedGames">
<item quantity="zero">%s لعبة مُقيمة</item>
<item quantity="one">لعبة مقيمة %s</item>
@ -491,11 +491,11 @@
<string name="viewMoreTournaments">عرض المزيد من البطولات</string>
<string name="averageOpponent">معدل الخصم</string>
<string name="membersOnly">للأعضاء فقط</string>
<string name="boardEditor">محررالرقعة</string>
<string name="boardEditor">محرر الرقعة</string>
<string name="setTheBoard">إعداد الرقعة</string>
<string name="popularOpenings">إفتتاحيات شائعة</string>
<string name="startPosition">وضع البداية</string>
<string name="clearBoard">مسح الرقعة</string>
<string name="clearBoard">رقعة بلا قطع</string>
<string name="savePosition">حفظ الوضع</string>
<string name="loadPosition">تحميل الوضع</string>
<string name="isPrivate">خاص</string>
@ -867,7 +867,7 @@
<string name="transparent">شفّاف</string>
<string name="backgroundImageUrl">رابط صورة الخلفية:</string>
<string name="boardGeometry">شكل الرقعة</string>
<string name="boardTheme">سِمة الطاولة</string>
<string name="boardTheme">مربعات الرقعة</string>
<string name="boardSize">حجم الرقعة</string>
<string name="pieceSet">مجموعة القطع</string>
<string name="embedInYourWebsite">تضمين في موقع الويب الخاص بك</string>
@ -890,4 +890,4 @@
<string name="notifications">إشعارات</string>
<string name="challenges">التحديات</string>
<string name="perfRatingX">التقييم: %s</string>
</resources>
</resources>

View File

@ -305,6 +305,7 @@
</plurals>
<string name="yourPerfRatingIsProvisional">Váš rating %s je provizorní</string>
<string name="yourPerfRatingIsTooHigh">Váš %1$s rating (%2$s) je příliš vysoký</string>
<string name="yourTopWeeklyPerfRatingIsTooHigh">Váš týdenní rating ve variantě %1$s (%2$s) je příliš vysoký</string>
<string name="yourPerfRatingIsTooLow">Váš %1$s rating (%2$s) je příliš nízký</string>
<string name="ratedMoreThanInPerf">Rating ≥ %1$s v %2$s variantě</string>
<string name="ratedLessThanInPerf">Rating ≤ %1$s v %2$s variantě</string>
@ -794,4 +795,4 @@ v %3$s</string>
<string name="notifications">Oznámení</string>
<string name="challenges">Výzvy</string>
<string name="perfRatingX">Rating: %s</string>
</resources>
</resources>

View File

@ -77,9 +77,17 @@
<item quantity="one">Mat i %s halv-træk</item>
<item quantity="other">Mat i %s halv-træk</item>
</plurals>
<string name="noGameFound">Ingen spil fundet</string>
<string name="openingExplorer">Åbning Opdagelse</string>
<string name="delete">Slet</string>
<string name="deleteThisImportedGame">Slet dette importerede spil?</string>
<string name="enable">Aktiver</string>
<string name="bestMoveArrow">Bedste træk pil</string>
<string name="multipleLines">Flere linjer</string>
<string name="cpus">CPU\'er</string>
<string name="memory">Hukommelse</string>
<string name="infiniteAnalysis">Uendelig analyse</string>
<string name="removesTheDepthLimit">Fjerner dybdegrænsen, og holder din computer varm</string>
<string name="blunders">Brølere</string>
<string name="mistakes">Fejl</string>
<string name="inaccuracies">Unøjagtigheder</string>
@ -144,6 +152,8 @@
<string name="passwordReset">Nulstil adgangskode</string>
<string name="forgotPassword">Glemt adgangskode?</string>
<string name="rank">Rang</string>
<string name="rankX">Rang: %s</string>
<string name="rankIsUpdatedEveryXMinutes">Rang opdateres hvert %s minut</string>
<string name="gamesPlayed">Antal partier spillet</string>
<plurals name="nbGamesWithYou">
<item quantity="one">%s partier med dig</item>
@ -182,6 +192,7 @@
<string name="play">Spil</string>
<string name="inbox">Indbakke</string>
<string name="chatRoom">Chatrum</string>
<string name="loginToChat">Log ind for at chatte</string>
<string name="spectatorRoom">Tilskuerrum</string>
<string name="composeMessage">Skriv besked</string>
<string name="noNewMessages">Ingen nye beskeder</string>
@ -209,6 +220,7 @@
<item quantity="one">Giv %s sekunder</item>
<item quantity="other">Giv %s sekunder</item>
</plurals>
<string name="giveMoreTime">Give mere tid</string>
<string name="thisPlayerUsesChessComputerAssistance">Denne spiller bruger skakcomputerassistance</string>
<string name="thisPlayerArtificiallyIncreasesTheirRating">Denne spiller forøger eller sænker sin rating kunstigt</string>
<string name="takeback">Omtræk</string>
@ -226,6 +238,7 @@
<string name="tournamentPoints">Turneringspoint</string>
<string name="viewTournament">Se turneringen</string>
<string name="backToTournament">Tilbage til turneringen</string>
<string name="thematic">Tematisk</string>
<string name="backToGame">Vend tilbage til spil</string>
<string name="siteDescription">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.</string>
<string name="teams">Hold</string>
@ -646,4 +659,4 @@
<string name="custom">Tilpasset</string>
<string name="notifications">Meddelelser</string>
<string name="challenges">Udfordringer</string>
</resources>
</resources>

View File

@ -3,7 +3,7 @@
<resources>
<string name="playWithAFriend">Spiele mit einem Freund</string>
<string name="playWithTheMachine">Spiele mit dem Computer</string>
<string name="toInviteSomeoneToPlayGiveThisUrl">Versende diese URL, um jemanden zum Spiel einzuladen</string>
<string name="toInviteSomeoneToPlayGiveThisUrl">Versende diese URL um jemanden zum Spiel einzuladen</string>
<string name="gameOver">Spiel vorbei</string>
<string name="waitingForOpponent">Auf den Gegner warten</string>
<string name="waiting">Warten</string>
@ -20,18 +20,18 @@
<string name="black">Schwarz</string>
<string name="randomColor">Zufällige Farbe</string>
<string name="createAGame">Neue Partie</string>
<string name="whiteIsVictorious">Weiß hat gewonnen</string>
<string name="blackIsVictorious">Schwarz hat gewonnen</string>
<string name="whiteIsVictorious">Weiß gewinnt</string>
<string name="blackIsVictorious">Schwarz gewinnt</string>
<string name="kingInTheCenter">König im Zentrum</string>
<string name="threeChecks">Dreimal Schach gegeben</string>
<string name="raceFinished">Rennen beendet</string>
<string name="variantEnding">Ende der Schachvariante</string>
<string name="variantEnding">Ende der Variante</string>
<string name="newOpponent">Neuer Gegner</string>
<string name="yourOpponentWantsToPlayANewGameWithYou">Dein Gegner möchte eine Revanche mit dir spielen</string>
<string name="yourOpponentWantsToPlayANewGameWithYou">Dein Gegner möchte ein neues Spiel mit dir spielen</string>
<string name="joinTheGame">Der Partie beitreten</string>
<string name="whitePlays">Weiß am Zug</string>
<string name="blackPlays">Schwarz am Zug</string>
<string name="opponentLeftChoices">Dein Gegner hat die Partie verlassen. Du kannst den Sieg beanspruchen, das Spiel remis erklären oder auf deinen Gegner warten.</string>
<string name="opponentLeftChoices">Dein Gegner hat die Partie möglicherweise verlassen. Du kannst den Sieg beanspruchen, das Spiel Remis erklären oder auf deinen Gegner warten.</string>
<string name="makeYourOpponentResign">Zwinge deinen Gegener zur Aufgabe</string>
<string name="forceResignation">Sieg beanspruchen</string>
<string name="forceDraw">Remis erklären</string>
@ -273,8 +273,8 @@
<item quantity="other">≥ %s gewertete Spiele</item>
</plurals>
<plurals name="moreThanNbPerfRatedGames">
<item quantity="one">≥ %1$s %2%s gewertetes Spiel</item>
<item quantity="other">≥ %1$s %2%s gewertete Spiele</item>
<item quantity="one">≥ %1$s gewertetes %2$s Spiel</item>
<item quantity="other">≥ %1$s gewertete %2$s Spiele</item>
</plurals>
<plurals name="needNbMorePerfGames">
<item quantity="one">Du musst noch %1$s gewertete Partie mehr %2$s spielen</item>
@ -288,8 +288,8 @@
<string name="yourPerfRatingIsTooHigh">Deine %1$s Wertung (%2$s) ist zu hoch</string>
<string name="yourTopWeeklyPerfRatingIsTooHigh">Deine beste wöchentliche %1$s Wertung (%2$s) ist zu hoch</string>
<string name="yourPerfRatingIsTooLow">Deine %1$s Wertung (%2$s) ist zu niedrig</string>
<string name="ratedMoreThanInPerf">Wertungszahl ≥ %1$s in %2$s</string>
<string name="ratedLessThanInPerf">Wertungszahl ≤ %1$s in %2$s</string>
<string name="ratedMoreThanInPerf">Wertung ≥ %1$s in %2$s</string>
<string name="ratedLessThanInPerf">Wertung ≤ %1$s in %2$s</string>
<string name="backToGame">Zurück zum Spiel</string>
<string name="siteDescription">Kostenloses Online-Schach. Spiele jetzt in einer einladenden Umgebung Schach! Keine Werbung, keine Registrierung oder Plugins erforderlich. Spiele gegen den Computer, Freunde oder zufällige Gegner!</string>
<string name="teams">Teams</string>
@ -451,7 +451,7 @@
<string name="thisPuzzleIsCorrect">Diese Aufgabe ist korrekt und interessant</string>
<string name="thisPuzzleIsWrong">Diese Aufgabe ist falsch oder langweilig</string>
<plurals name="youHaveNbSecondsToMakeYourFirstMove">
<item quantity="one">Du hast %s Sekunde, um deinen ersten Zug zu machen!</item>
<item quantity="one">Du hast %s Sekunde um deinen ersten Zug zu machen!</item>
<item quantity="other">Du hast %s Sekunden um deinen ersten Zug zu machen!</item>
</plurals>
<plurals name="nbGamesInPlay">
@ -510,7 +510,7 @@
<string name="newPasswordAgain">Neues Passwort (wiederholen)</string>
<string name="boardHighlights">Markierungen auf dem Brett (letzter Zug und Schach)</string>
<string name="pieceDestinations">Zielfelder markieren (gültige Züge und Vorauszüge)</string>
<string name="boardCoordinates">Koordinaten (A-H, 1-8)</string>
<string name="boardCoordinates">Brettkoordinaten (A-H, 1-8)</string>
<string name="moveListWhilePlaying">Notation während des Spiels anzeigen</string>
<string name="pgnPieceNotation">Figurendarstellung in der PGN-Notation</string>
<string name="chessPieceSymbol">Schachfigurensymbol</string>
@ -600,7 +600,7 @@
<string name="error.email_unique">Diese E-Mail-Adresse ist schon vergeben</string>
<string name="error.email_different">Dies ist bereits deine E-Mail Adresse</string>
<string name="blindfoldChess">Blindschach (unsichtbare Figuren)</string>
<string name="zenMode">Zenmodus</string>
<string name="zenMode">Zen-Modus</string>
<string name="moveConfirmation">Zugbestätigung</string>
<string name="inCorrespondenceGames">Im Fernschach</string>
<string name="ifRatingIsPlusMinusX">Nur, wenn die Wertungszahl ± %s ist</string>
@ -762,4 +762,4 @@
<string name="notifications">Benachrichtigungen</string>
<string name="challenges">Herausforderungen</string>
<string name="perfRatingX">Wertungszahl: %s</string>
</resources>
</resources>

View File

@ -65,7 +65,7 @@
<string name="close">Cerrar</string>
<string name="winning">Ganador</string>
<string name="losing">Perdedor</string>
<string name="drawn">Resulta en tablas</string>
<string name="drawn">Resultó empate</string>
<string name="unknown">Desconocido</string>
<string name="database">Base de datos</string>
<string name="whiteDrawBlack">Blancas / Tablas / Negras</string>
@ -78,7 +78,7 @@
<item quantity="other">Mate en %s medios movimientos</item>
</plurals>
<plurals name="nextCaptureOrPawnMoveInXHalfMoves">
<item quantity="one">Siguiente captura o peón mueve en %s medio movimiento (distancia a cero del contador de 50 movimientos)</item>
<item quantity="one">Siguiente captura o movimiento de péon en medio movimiento (distancia a cero del contador de 50 movimientos)</item>
<item quantity="other">Siguiente captura o movimiento de péon en %s medios movimientos (distancia a cero del contador de 50 movimientos)</item>
</plurals>
<string name="noGameFound">No se ha encontrado ninguna partida</string>
@ -277,14 +277,14 @@
<item quantity="other">≥ %1$s %2%s partidas por puntos</item>
</plurals>
<plurals name="needNbMorePerfGames">
<item quantity="one">Te falta jugar %1$s partidas %2$s puntuadas</item>
<item quantity="other">Necesitas jugar %1$s más %2$s partidas puntuadas</item>
<item quantity="one">Necesitas jugar %1$s partida %2$s puntuada</item>
<item quantity="other">Necesitas jugar %1$s partidas %2$s puntuadas</item>
</plurals>
<plurals name="needNbMoreGames">
<item quantity="one">Te falta jugar %s partida puntuada</item>
<item quantity="one">Necesitas jugar %s partida puntuada</item>
<item quantity="other">Te falta jugar %s partidas puntuadas</item>
</plurals>
<string name="yourPerfRatingIsProvisional">Tu puntuación de %s aún no es definitiva</string>
<string name="yourPerfRatingIsProvisional">Tu puntuación de %s es provisional</string>
<string name="yourPerfRatingIsTooHigh">Tu puntuación de %1$s (%2$s) es muy alta</string>
<string name="yourTopWeeklyPerfRatingIsTooHigh">Tu máxima puntación semanal de %1$s (%2$s) es muy alta</string>
<string name="yourPerfRatingIsTooLow">Tu puntuación de %1$s (%2$s) es muy baja</string>
@ -382,7 +382,7 @@
<string name="tournamentIsStarting">El torneo va a empezar</string>
<string name="tournamentPairingsAreNowClosed">Los emparejamientos del torneo están cerrados.</string>
<string name="standByX">Espera %s, emparejando jugadores, ¡prepárate!</string>
<string name="youArePlaying">¡Está jugando!</string>
<string name="youArePlaying">¡Estás jugando!</string>
<string name="winRate">Tasa de victorias</string>
<string name="berserkRate">Tasa de berserk</string>
<string name="performance">Rendimiento</string>
@ -440,7 +440,7 @@
<string name="wasThisPuzzleAnyGood">¿Crees que este ejercicio es bueno?</string>
<string name="pleaseVotePuzzle">Ayuda a Lichess a mejorar a través de tu votación, usando las flechas arriba o abajo:</string>
<string name="thankYou">¡Gracias!</string>
<string name="ratingX">Valoración: %s</string>
<string name="ratingX">Rango: %s</string>
<plurals name="playedXTimes">
<item quantity="one">Jugado %s veces</item>
<item quantity="other">Jugado %s veces</item>
@ -451,16 +451,16 @@
<string name="thisPuzzleIsCorrect">Este ejercicio es correcto e interesante</string>
<string name="thisPuzzleIsWrong">Este ejercicio es erróneo o aburrido</string>
<plurals name="youHaveNbSecondsToMakeYourFirstMove">
<item quantity="one">¡Dispone de %s segundos para hacer su primer movimiento!</item>
<item quantity="other">¡Dispone de %s segundos para hacer su primer movimiento!</item>
<item quantity="one">¡Tienes de %s segundo para hacer el primer movimiento!</item>
<item quantity="other">¡Tienes de %s segundos para hacer el primer movimiento!</item>
</plurals>
<plurals name="nbGamesInPlay">
<item quantity="one">%s partida en juego</item>
<item quantity="other">%s partidas en juego</item>
</plurals>
<string name="automaticallyProceedToNextGameAfterMoving">Proceder automáticamente a la siguiente partida en juego después de mi movimiento</string>
<string name="autoSwitch">Cambio automático</string>
<string name="puzzles">Problemas</string>
<string name="autoSwitch">Ajuste automático</string>
<string name="puzzles">Ejercicios</string>
<string name="latestUpdates">Últimas actualizaciones</string>
<string name="tournamentWinners">Ganadores del torneo</string>
<string name="name">Nombre</string>
@ -468,7 +468,7 @@
<string name="no">No</string>
<string name="yes"></string>
<string name="help">Ayuda:</string>
<string name="createANewTopic">Crear un tema nuevo</string>
<string name="createANewTopic">Crear un nuevo tema</string>
<string name="topics">Temas</string>
<string name="posts">Publicaciones</string>
<string name="lastPost">Última publicación</string>
@ -478,7 +478,7 @@
<string name="reply">Responder</string>
<string name="message">Mensaje</string>
<string name="createTheTopic">Crear tema</string>
<string name="reportAUser">Denunciar a un usuario</string>
<string name="reportAUser">Reportar al usuario</string>
<string name="user">Usuario</string>
<string name="reason">Motivo</string>
<string name="whatIsIheMatter">¿Qué ocurre?</string>
@ -486,7 +486,7 @@
<string name="insult">Insulto</string>
<string name="troll">Acoso</string>
<string name="other">Otro</string>
<string name="reportDescriptionHelp">Pega el enlace a la(s) partida(s) y explícanos qué hay de malo en el comportamiento de este usuario. No digas simplemente \"hace trampa\"; explícanos cómo has llegado a esta conclusión. Tu informe será procesado más rápido si está escrito en inglés.</string>
<string name="reportDescriptionHelp">Pega el enlace a la(s) partida(s) y explícanos qué hay de malo en el comportamiento de este usuario. No digas simplemente \"hace trampa\", explícanos cómo has llegado a esta conclusión. Tu informe será procesado más rápido si está escrito en inglés.</string>
<string name="by">por %s</string>
<string name="thisTopicIsNowClosed">Este tema está cerrado.</string>
<string name="theming">Apariencia</string>
@ -494,24 +494,24 @@
<string name="blog">Blog</string>
<string name="questionsAndAnswers">Preguntas y respuestas</string>
<string name="notes">Notas</string>
<string name="typePrivateNotesHere">Escribe aquí las notas privadas</string>
<string name="gameDisplay">Configuración visual del juego</string>
<string name="typePrivateNotesHere">Escribe aquí tus notas</string>
<string name="gameDisplay">Configuración del tablero</string>
<string name="pieceAnimation">Animación de las piezas</string>
<string name="materialDifference">Diferencia de material</string>
<string name="materialDifference">Diferencia material</string>
<string name="closeAccount">Cerrar cuenta</string>
<string name="changedMindDoNotCloseAccount">Cambié de opinión, no cierren mi cuenta</string>
<string name="closeAccountExplanation">¿Estás seguro de que quieres cerrar tu cuenta? Cerrar tu cuenta es una decisión permanente. No podrás iniciar sesión y tu perfil no volverá a estar disponible.</string>
<string name="thisAccountIsClosed">Esta cuenta está cerrada.</string>
<string name="invalidUsernameOrPassword">Nombre de usuario o contraseña erróneo</string>
<string name="closeAccountExplanation">¿Estás seguro de cerrar tu cuenta? Será una decisión permanente. No podrás iniciar sesión y tu perfil no estará disponible.</string>
<string name="thisAccountIsClosed">Esta cuenta fue cerrada.</string>
<string name="invalidUsernameOrPassword">Nombre de usuario o contraseña inválido</string>
<string name="incorrectPassword">Contraseña incorrecta</string>
<string name="emailMeALink">Envíame un enlace por correo electrónico</string>
<string name="emailMeALink">Envíame el enlace por correo electrónico</string>
<string name="currentPassword">Contraseña actual</string>
<string name="newPassword">Nueva contraseña</string>
<string name="newPasswordAgain">Nueva contraseña (otra vez)</string>
<string name="newPassword">Contraseña nueva</string>
<string name="newPasswordAgain">Contraseña nueva (repite)</string>
<string name="boardHighlights">Destacar casillas del tablero (último movimiento y jaque)</string>
<string name="pieceDestinations">Destino de las piezas (movimientos válidos y premovimientos)</string>
<string name="pieceDestinations">Destino de las piezas (movimientos válidos y anticipados)</string>
<string name="boardCoordinates">Coordenadas del tablero (A-H, 1-8)</string>
<string name="moveListWhilePlaying">Lista de movimientos durante la partida</string>
<string name="moveListWhilePlaying">Lista de movimientos de la partida</string>
<string name="pgnPieceNotation">Notación de los movimientos</string>
<string name="chessPieceSymbol">Símbolo de la pieza</string>
<string name="pgnLetter">Inicial (en inglés) de la pieza (K, Q, R, B, N)</string>
@ -553,14 +553,14 @@
<string name="xLeftANoteOnY">%1$s dejó una nota en %2$s</string>
<string name="xCompetesInY">%1$s compite en %2$s</string>
<string name="xAskedY">%1$s preguntó %2$s</string>
<string name="xAnsweredY">%1$s respondió %2$s</string>
<string name="xAnsweredY">%1$s contestó %2$s</string>
<string name="xCommentedY">%1$s comentó %2$s</string>
<string name="victory">¡Victoria!</string>
<string name="defeat">Derrota</string>
<string name="xVsYinZ">%1$s contra %2$s en %3$s</string>
<string name="timeline">Orden cronológico</string>
<string name="seeAllTournaments">Ver todos los torneos</string>
<string name="starting">Comienzo:</string>
<string name="starting">Inicio:</string>
<string name="allInformationIsPublicAndOptional">Toda la información es pública y opcional.</string>
<string name="yourCityRegionOrDepartment">Tu ciudad, región o provincia.</string>
<string name="biographyDescription">Cuéntanos sobre ti, qué te gusta del ajedrez, tus aperturas favoritas, partidas, jugadores…</string>
@ -583,7 +583,7 @@
<string name="signedOut">Has cerrado la sesión</string>
<string name="loginSuccessful">Conectado</string>
<string name="playOnTheBoardOffline">Jugar sin conexión</string>
<string name="playOfflineComputer">Jugar vs CPU sin conexión</string>
<string name="playOfflineComputer">Jugar contra la computadora</string>
<string name="opponent">Oponente</string>
<string name="learnMenu">Aprender</string>
<string name="community">Comunidad</string>
@ -593,14 +593,14 @@
<string name="playOnline">Jugar en línea</string>
<string name="playOffline">Jugar fuera de línea</string>
<string name="allowAnalytics">Permitir estadísticas anónimas</string>
<string name="shareGameURL">Compartir el URL del juego</string>
<string name="error.required">Campo requerido</string>
<string name="error.email">Este email es inválido</string>
<string name="error.email_acceptable">Este email no es aceptable</string>
<string name="error.email_unique">Este email ya está siendo usado</string>
<string name="error.email_different">Esta es la misma dirección de correo electrónico que tiene actualmente</string>
<string name="shareGameURL">Compartir el enlace del juego</string>
<string name="error.required">Este campo es requerido</string>
<string name="error.email">Este correo es inválido</string>
<string name="error.email_acceptable">Este correo no es aceptado</string>
<string name="error.email_unique">Este correo ya está en uso</string>
<string name="error.email_different">Este es el mismo correo electrónico que tiene en uso</string>
<string name="blindfoldChess">Ajedrez a ciegas (piezas invisibles)</string>
<string name="zenMode">Modo zen</string>
<string name="zenMode">Modo Zen</string>
<string name="moveConfirmation">Confirmación de movimiento</string>
<string name="inCorrespondenceGames">Partidas por correspondencia</string>
<string name="ifRatingIsPlusMinusX">Si la puntuación es ± %s</string>
@ -655,41 +655,41 @@
<string name="keyMoveBackwardOrForward">movimiento hacia atrás y hacia adelante</string>
<string name="keyGoToStartOrEnd">ir al inicio/fin</string>
<string name="keyShowOrHideComments">mostrar/ocultar comentarios</string>
<string name="keyEnterOrExitVariation">entrar/dejar variante</string>
<string name="keyEnterOrExitVariation">iniciar/dejar variante</string>
<string name="newTournament">Nuevo torneo</string>
<string name="tournamentHomeTitle">Torneo de ajedrez que incluye diferentes controles de tiempo y variantes</string>
<string name="tournamentHomeDescription">¡Juega torneos de ajedrez rápido! Únete a un torneo oficial programado o crea el tuyo propio. Bala, Relámpago, Clásico, Ajedrez960, Rey de la Colina, Tres jaques y más opciones disponibles para una diversión sin fin en ajedrez.</string>
<string name="tournamentNotFound">No se encontró el torneo</string>
<string name="tournamentDoesNotExist">Este torneo no existe.</string>
<string name="tournamentMayHaveBeenCanceled">Puede que se haya cancelado, si todos los jugadores se fueron antes de que empezara el torneo.</string>
<string name="tournamentMayHaveBeenCanceled">Puede que se haya cancelado, si todos los jugadores abandonaron antes de comenzar el torneo.</string>
<string name="returnToTournamentsHomepage">Volver a la página principal de torneos</string>
<string name="weeklyPerfTypeRatingDistribution">Distribución mensual de puntos de %s</string>
<plurals name="nbPerfTypePlayersThisWeek">
<item quantity="one">Un jugador de %2$s esta semana.</item>
<item quantity="other">Un jugador de %2$s esta semana.</item>
<item quantity="one">%1$s jugador de %2$s esta semana.</item>
<item quantity="other">%1$s jugadores de %2$s esta semana.</item>
</plurals>
<string name="yourPerfTypeRatingIsRating">Tu puntuación de %1$s es %2$s.</string>
<string name="youAreBetterThanPercentOfPerfTypePlayers">Eres mejor que el %1$s de los jugadores en %2$s.</string>
<string name="youDoNotHaveAnEstablishedPerfTypeRating">No tienes una puntuación de %s establecida.</string>
<string name="checkYourEmail">Revisa tu email</string>
<string name="weHaveSentYouAnEmailClickTheLink">Te hemos enviado un email. Clic en el enlace para activar tu cuenta.</string>
<string name="ifYouDoNotSeeTheEmailCheckOtherPlaces">Si no ves el email, revisa en otros lugares donde pudiese estar, como la papelera, spam, social, u otras carpetas.</string>
<string name="areYouSureYouEvenRegisteredYourEmailOnLichess">¿Estás seguro de que has registrado tu email en lichess?</string>
<string name="youDoNotHaveAnEstablishedPerfTypeRating">Careces de puntuación de %s establecida.</string>
<string name="checkYourEmail">Revisa tu correo</string>
<string name="weHaveSentYouAnEmailClickTheLink">Te hemos enviado un correo. Activa tu cuenta en el enlace proporcionado.</string>
<string name="ifYouDoNotSeeTheEmailCheckOtherPlaces">Si no ves el correo, revísalo en otros lugares destino: papelera, correo basura, social u otras carpetas.</string>
<string name="areYouSureYouEvenRegisteredYourEmailOnLichess">¿Estás seguro de que has registrado tu correo en Lichess?</string>
<string name="itWasNotRequiredForYourRegistration">No se requirió para tu registro.</string>
<string name="weHaveSentYouAnEmailTo">Te hemos enviado un email a %s. Clic en el enlace dentro del email para resetear tu contraseña.</string>
<string name="weHaveSentYouAnEmailTo">Te hemos enviado un correo a %s. Restablece tu contraseña dando clic en el enlace.</string>
<string name="byRegisteringYouAgreeToBeBoundByOur">Al registrarte, estás de acuerdo a estar sujeto a nuestras %s.</string>
<string name="networkLagBetweenYouAndLichess">Retardo de conexión entre tú y lichess</string>
<string name="timeToProcessAMoveOnLichessServer">Tiempo para procesar un movimiento en lichess</string>
<string name="downloadAnnotated">Descargar la partida con anotaciones</string>
<string name="downloadRaw">Descarga la partida en bruto.</string>
<string name="downloadImported">Descargar el juego importado</string>
<string name="printFriendlyPDF">Imprimir en formato PDF</string>
<string name="crosstable">Tabla cruzada</string>
<string name="youCanAlsoScrollOverTheBoardToMoveInTheGame">También puedes usar la rueda del mouse para moverte en la partida.</string>
<string name="analysisShapesHowTo">Presiona Mayús+clic o clic derecho para dibujar círculos y flechas en el tablero.</string>
<string name="confirmResignationAndDrawOffers">Confirmar abandono y ofertas de tablas</string>
<string name="networkLagBetweenYouAndLichess">Demora en el intervalo de conexión entre tu equipo y Lichess</string>
<string name="timeToProcessAMoveOnLichessServer">Tiempo para procesar un movimiento en el servidor de Lichess</string>
<string name="downloadAnnotated">Descargar la partida anotada</string>
<string name="downloadRaw">Descarga la partida simple</string>
<string name="downloadImported">Descargar la partida importada</string>
<string name="printFriendlyPDF">Imprimir en formato PDF simple</string>
<string name="crosstable">Tablas cruzadas</string>
<string name="youCanAlsoScrollOverTheBoardToMoveInTheGame">Puedes usar la rueda del ratón para desplazarte por la partida.</string>
<string name="analysisShapesHowTo">Presiona mayúsculas o clic derecho del ratón para marcar círculos y flechas en el tablero.</string>
<string name="confirmResignationAndDrawOffers">Confirmar resignación y ofertas de tablas</string>
<string name="inputMovesWithTheKeyboard">Entrada de movimientos con el teclado</string>
<string name="letOtherPlayersMessageYou">Deja que otras personas te envíen un mensaje</string>
<string name="letOtherPlayersMessageYou">Permitir que otras personas te envíen un mensaje</string>
<string name="castleByMovingTheKingTwoSquaresOrOntoTheRook">Método de enroque</string>
<string name="castleByMovingTwoSquares">Moviendo el rey dos casillas</string>
<string name="castleByMovingOntoTheRook">Moviendo el rey hasta la torre</string>
@ -705,11 +705,11 @@
<string name="disableKidMode">Desactivar el modo infantil</string>
<string name="security">Seguridad</string>
<string name="thisIsAListOfDevicesThatHaveLoggedIntoYourAccount">Esta es una lista de dispositivos desde los que ha iniciado sesión. Cierre todas las sesiones que no reconozca.</string>
<string name="alternativelyYouCanX">O también puede %s.</string>
<string name="alternativelyYouCanX">O también puedes %s.</string>
<string name="revokeAllSessions">cerrar todas las sesiones</string>
<string name="playChessEverywhere">Juega ajedrez donde sea</string>
<string name="playChessEverywhere">Jugar ajedrez donde sea</string>
<string name="asFreeAsLichess">Tan gratuito como lichess</string>
<string name="builtForTheLoveOfChessNotMoney">Construido por amor al ajedrez, no al dinero</string>
<string name="builtForTheLoveOfChessNotMoney">Construido por amor al ajedrez, no por dinero</string>
<string name="everybodyGetsAllFeaturesForFree">Todos tienen acceso gratuito a todas las opciones</string>
<string name="zeroAdvertisement">Sin anuncios</string>
<string name="fullFeatured">Todas las funciones</string>
@ -729,7 +729,7 @@
<string name="xJoinsY">%1$s se une a %2$s</string>
<string name="xLikesY">a %1$s le gusta %2$s</string>
<string name="quickPairing">Emparejamiento rápido</string>
<string name="lobby">Vestíbulo</string>
<string name="lobby">Sala de espera</string>
<string name="anonymous">Anónimo</string>
<string name="yourScore">Tu puntuación: %s</string>
<string name="language">Idioma</string>
@ -737,7 +737,7 @@
<string name="light">Claro</string>
<string name="dark">Oscuro</string>
<string name="transparent">Transparente</string>
<string name="backgroundImageUrl">Url de Imagen de Fondo:</string>
<string name="backgroundImageUrl">Enlace de imagen de fondo:</string>
<string name="boardGeometry">Geometría del tablero</string>
<string name="boardTheme">Tema del tablero</string>
<string name="boardSize">Tamaño del tablero</string>
@ -747,7 +747,7 @@
<string name="usernameInvalid">Nombre de usuario no válido. Por favor, utilice sólo letras, números, guión bajo y guión.</string>
<string name="usernameStartNoNumber">El nombre de usuario no puede empezar con un número.</string>
<string name="usernameUnacceptable">Este nombre de usuario no es válido.</string>
<string name="directlySupportLichess">Apoyar directamente a Lichess</string>
<string name="directlySupportLichess">Donó a Lichess</string>
<string name="playChessInStyle">Jugar al ajedrez con estilo</string>
<string name="chessBasics">Fundamentos de ajedrez</string>
<string name="coaches">Entrenadores</string>
@ -761,5 +761,5 @@
<string name="custom">Personalizado</string>
<string name="notifications">Notificaciones</string>
<string name="challenges">Desafíos</string>
<string name="perfRatingX">Puntuación: %s</string>
</resources>
<string name="perfRatingX">Clasificación: %s</string>
</resources>

View File

@ -285,10 +285,10 @@
<item quantity="other">Vous devez encore jouer %s parties classées</item>
</plurals>
<string name="yourPerfRatingIsProvisional">Votre classement %s est provisoire</string>
<string name="yourPerfRatingIsTooHigh">Votre cote %1$s (%2$s) est trop élevé</string>
<string name="yourTopWeeklyPerfRatingIsTooHigh">Votre meilleure cote hebdomadaire de %1$s (%2$s) est trop élevé</string>
<string name="yourPerfRatingIsTooLow">Votre cote de %1$s (%2$s) est trop faible</string>
<string name="ratedMoreThanInPerf">Cote : ≥ %1$s dans %2$s</string>
<string name="yourPerfRatingIsTooHigh">Votre cote %1$s (%2$s) est trop élevée</string>
<string name="yourTopWeeklyPerfRatingIsTooHigh">Votre meilleure cote %1$s hebdomadaire (%2$s) est trop élevée</string>
<string name="yourPerfRatingIsTooLow">Votre cote %1$s (%2$s) est trop faible</string>
<string name="ratedMoreThanInPerf">Cote ≥ %1$s en %2$s</string>
<string name="ratedLessThanInPerf">Cote ≤ %1$s dans %2$s</string>
<string name="backToGame">Retour à la partie</string>
<string name="siteDescription">Jeu d\'échecs gratuit en ligne. Jouez aux échecs immédiatement avec une interface simple. Pas d\'inscription obligatoire, pas de publicité, pas de plugin. Jouez aux échecs avec des adversaires en ligne, avec des amis ou contre l\'ordinateur.</string>
@ -396,7 +396,7 @@
<string name="averageOpponent">Opposition moyenne</string>
<string name="membersOnly">Membres seulement</string>
<string name="boardEditor">Éditeur de partie</string>
<string name="setTheBoard">Placer une position</string>
<string name="setTheBoard">Entrer une position</string>
<string name="popularOpenings">Ouvertures courantes</string>
<string name="startPosition">Position de départ</string>
<string name="clearBoard">Vider l\'échiquier</string>
@ -436,11 +436,11 @@
<string name="keepGoing">Continuez…</string>
<string name="puzzleFailed">Problème raté</string>
<string name="butYouCanKeepTrying">Mais vous pouvez réessayer.</string>
<string name="success">Succès</string>
<string name="success">Réussi</string>
<string name="wasThisPuzzleAnyGood">Ce problème était-il intéressant ?</string>
<string name="pleaseVotePuzzle">Aidez Lichess à s\'améliorer en votant grâce aux flèches:</string>
<string name="thankYou">Merci!</string>
<string name="ratingX">Classement : %s</string>
<string name="ratingX">Cote : %s</string>
<plurals name="playedXTimes">
<item quantity="one">Joué %s fois</item>
<item quantity="other">Joué %s fois</item>
@ -460,7 +460,7 @@
</plurals>
<string name="automaticallyProceedToNextGameAfterMoving">Aller automatiquement à la prochaine partie après chaque coup</string>
<string name="autoSwitch">Changement automatique</string>
<string name="puzzles">Problèmes d\'échecs</string>
<string name="puzzles">Problèmes</string>
<string name="latestUpdates">Dernières mises à jour</string>
<string name="tournamentWinners">Vainqueurs de tournois</string>
<string name="name">Nom</string>
@ -508,10 +508,10 @@
<string name="currentPassword">Mot de passe actuel</string>
<string name="newPassword">Nouveau mot de passe</string>
<string name="newPasswordAgain">Nouveau mot de passe (encore)</string>
<string name="boardHighlights">Surligner les cases (dernier coup et échec)</string>
<string name="boardHighlights">Mettre en évidence les cases (dernier coup et échec)</string>
<string name="pieceDestinations">Cases de destination (coups et pré-coups légaux)</string>
<string name="boardCoordinates">Coordonnées (a-h, 1-8)</string>
<string name="moveListWhilePlaying">Notation des coups durant la partie</string>
<string name="moveListWhilePlaying">Liste des coups durant la partie</string>
<string name="pgnPieceNotation">Notation des coups</string>
<string name="chessPieceSymbol">Figurine de la pièce</string>
<string name="pgnLetter">Lettre de la pièce (K, Q, R, B, N)</string>
@ -551,7 +551,7 @@
<string name="difficultyNormal">Normal</string>
<string name="difficultyHard">Difficile</string>
<string name="xLeftANoteOnY">%1$s a laissé une note sur %2$s</string>
<string name="xCompetesInY">%1$s joue à %2$s</string>
<string name="xCompetesInY">%1$s participe à %2$s</string>
<string name="xAskedY">%1$s a demandé %2$s</string>
<string name="xAnsweredY">%1$s a répondu à %2$s</string>
<string name="xCommentedY">%1$s a commenté %2$s</string>
@ -561,12 +561,12 @@
en %3$s</string>
<string name="timeline">Activité</string>
<string name="seeAllTournaments">Voir tous les tournois</string>
<string name="starting">marrage :</string>
<string name="starting">but :</string>
<string name="allInformationIsPublicAndOptional">Toutes les informations sont publiques et facultatives.</string>
<string name="yourCityRegionOrDepartment">Votre ville, région ou département.</string>
<string name="biographyDescription">Parlez de vous, de ce que vous aimez dans les échecs, vos ouvertures préférées, vos parties, vos joueurs, …</string>
<plurals name="maximumNbCharacters">
<item quantity="one">Maximum : %s caractères.</item>
<item quantity="one">Maximum : %s caractère.</item>
<item quantity="other">Maximum : %s caractères.</item>
</plurals>
<plurals name="blocks">
@ -582,7 +582,7 @@ en %3$s</string>
<string name="noInternetConnection">Pas de connexion à Internet. Vous pouvez cependant jouer hors ligne à partir du menu.</string>
<string name="connectedToLichess">Vous êtes maintenant connecté à lichess.org</string>
<string name="signedOut">Vous vous êtes déconnecté</string>
<string name="loginSuccessful">Connexion réussie</string>
<string name="loginSuccessful">Vous êtes connecté</string>
<string name="playOnTheBoardOffline">Jouer hors ligne, avec un ami</string>
<string name="playOfflineComputer">Jouer hors ligne, avec l\'ordinateur</string>
<string name="opponent">Adversaire</string>
@ -595,10 +595,10 @@ en %3$s</string>
<string name="playOffline">Jouer hors ligne</string>
<string name="allowAnalytics">Autoriser l\'envoi de statistiques anonymes</string>
<string name="shareGameURL">Partager l\'URL de la partie</string>
<string name="error.required">Ce champ est requis</string>
<string name="error.email">Cette adresse courriel est invalide</string>
<string name="error.email_acceptable">Cette adresse courriel jetable n\'est pas autorisée</string>
<string name="error.email_unique">Cette adresse courriel est déjà utilisée</string>
<string name="error.required">Ce champ est obligatoire</string>
<string name="error.email">Cette adresse email est invalide</string>
<string name="error.email_acceptable">Cette adresse email n\'est pas acceptable</string>
<string name="error.email_unique">Cette adresse email est déjà utilisée</string>
<string name="error.email_different">Cest déjà votre adresse e-mail</string>
<string name="blindfoldChess">Échecs à l\'aveugle (pièces invisibles)</string>
<string name="zenMode">Mode Zen</string>
@ -629,7 +629,7 @@ en %3$s</string>
<string name="termsOfService">Conditions d\'utilisation</string>
<string name="sourceCode">Code source</string>
<string name="simultaneousExhibitions">Parties simultanées</string>
<string name="host">Exposant(e)</string>
<string name="host">Hôte</string>
<string name="hostColorX">Couleur de lhôte : %s</string>
<string name="createdSimuls">Nouvelles simultanées</string>
<string name="hostANewSimul">Créer une nouvelle simultanée</string>
@ -639,14 +639,14 @@ en %3$s</string>
<string name="aboutSimul">Une simultanée est une rencontre entre un joueur et plusieurs adversaires chacun sur un échiquier séparé.</string>
<string name="aboutSimulImage">Sur 50 adversaires, Fischer a gagné 47 parties, fait 2 nulles et perdu 1 partie.</string>
<string name="aboutSimulRealLife">Le concept est inspiré de la vie réelle, où le joueur passe d\'un échiquier à l\'autre pour jouer chaque coup.</string>
<string name="aboutSimulRules">Le joueur a les Blancs sur chacun des échiquiers et ses adversaires jouent au moment où il se présente devant leur échiquier. La simultanée prend fin lorsque toutes les parties sont terminées.</string>
<string name="aboutSimulRules">Quand la simultanée commence, chaque joueur débute une partie contre l\'hôte, qui a les Blancs. La simultanée prend fin lorsque toutes les parties sont terminées.</string>
<string name="aboutSimulSettings">Les parties simultanées sont toujours amicales. Les revanches, l\'annulation de coups et la possibilité de donner du temps sont désactivées.</string>
<string name="create">Créer</string>
<string name="whenCreateSimul">Lorsque vous créez une simultanée, vouz affrontez plusieurs adversaires à la fois.</string>
<string name="simulVariantsHint">Si vous sélectionnez plusieurs variantes, chaque joueur doit choisir laquelle jouer.</string>
<string name="simulClockHint">Configuration de la cadence Fischer. Plus il y a d\'adversaires, plus vous pourriez avoir besoin de temps.</string>
<string name="simulAddExtraTime">Vous pouvez ajouter du temps supplémentaire à votre pendule pour gérer la simultanée.</string>
<string name="simulHostExtraTime">Temps supplémentaire de l\'exposant(e)</string>
<string name="simulHostExtraTime">Temps supplémentaire de l\'hôte</string>
<string name="lichessTournaments">Tournois Lichess</string>
<string name="tournamentFAQ">FAQ des tournois</string>
<string name="tournamentOfficial">Officiel</string>
@ -660,25 +660,25 @@ en %3$s</string>
<string name="newTournament">Nouveau tournoi</string>
<string name="tournamentHomeTitle">Tournoi réunissant plusieurs variantes et cadences</string>
<string name="tournamentHomeDescription">Jouez des tournois d\'échecs palpitants ! Rejoignez un tournoi officiel programmé ou créez le vôtre. Bullet, Blitz, Classique, Chess960, King of the Hill, Threecheck et d\'autres options sont disponibles pour s\'amuser sans fin.</string>
<string name="tournamentNotFound">Tournoi inexistant</string>
<string name="tournamentNotFound">Tournoi non trouvé</string>
<string name="tournamentDoesNotExist">Ce tournoi n\'existe pas.</string>
<string name="tournamentMayHaveBeenCanceled">Il a peut-être été annulé, si tous les joueurs l\'ont quitté avant le début.</string>
<string name="returnToTournamentsHomepage">Retour à la page des tournois</string>
<string name="weeklyPerfTypeRatingDistribution">Distribution des classements mensuels en %s</string>
<string name="weeklyPerfTypeRatingDistribution">Distribution hebdomadaire des cotes en %s</string>
<plurals name="nbPerfTypePlayersThisWeek">
<item quantity="one">Un joueur de %2$s cette semaine.</item>
<item quantity="other">%1$s joueurs de %2$s cette semaine.</item>
</plurals>
<string name="yourPerfTypeRatingIsRating">Votre classement en %1$s est de %2$s.</string>
<string name="yourPerfTypeRatingIsRating">Votre cote en %1$s est de %2$s.</string>
<string name="youAreBetterThanPercentOfPerfTypePlayers">Vous êtes meilleur que %1$s des joueurs de %2$s.</string>
<string name="youDoNotHaveAnEstablishedPerfTypeRating">Vous n\'avez pas de classement établi en %s.</string>
<string name="checkYourEmail">Vérifiez vos courriels</string>
<string name="weHaveSentYouAnEmailClickTheLink">Nous vous avons envoyé un courriel. Visitez le lien qui s\'y trouve pour activer votre compte.</string>
<string name="ifYouDoNotSeeTheEmailCheckOtherPlaces">Si vous ne trouvez pas le courriel dans votre boîte de réception, vérifiez dans vos courriels indésirables ou autres dossiers.</string>
<string name="areYouSureYouEvenRegisteredYourEmailOnLichess">Êtes vous certain d\'avoir enregistré votre adresse électronique sur lichess ?</string>
<string name="checkYourEmail">Vérifiez vos emails</string>
<string name="weHaveSentYouAnEmailClickTheLink">Nous vous avons envoyé un email. Visitez le lien qui s\'y trouve pour activer votre compte.</string>
<string name="ifYouDoNotSeeTheEmailCheckOtherPlaces">Si vous ne trouvez pas l\'email dans votre boîte de réception, vérifiez dans vos emails indésirables ou autres dossiers.</string>
<string name="areYouSureYouEvenRegisteredYourEmailOnLichess">Êtes-vous certain d\'avoir enregistré votre adresse électronique sur lichess ?</string>
<string name="itWasNotRequiredForYourRegistration">Elle n\'était pas nécessaire pour vous enregistrer initialement.</string>
<string name="weHaveSentYouAnEmailTo">Nous avons envoyé un courriel à %s. Cliquez le lien qui s\'y trouve pour réinitialiser votre mot de passe.</string>
<string name="byRegisteringYouAgreeToBeBoundByOur">En vous inscrivant, vous acceptez d\'être lié à notre %s.</string>
<string name="weHaveSentYouAnEmailTo">Nous avons envoyé un email à %s. Cliquez le lien qui s\'y trouve pour réinitialiser votre mot de passe.</string>
<string name="byRegisteringYouAgreeToBeBoundByOur">En vous inscrivant, vous acceptez d\'être lié à nos %s.</string>
<string name="networkLagBetweenYouAndLichess">Latence du réseau entre vous et lichess</string>
<string name="timeToProcessAMoveOnLichessServer">Temps nécessaire au traitement d\'un coup sur un serveur lichess</string>
<string name="downloadAnnotated">Télécharger le PGN annoté</string>
@ -763,4 +763,4 @@ en %3$s</string>
<string name="notifications">Notifications</string>
<string name="challenges">Défis</string>
<string name="perfRatingX">Classement : %s</string>
</resources>
</resources>

View File

@ -16,40 +16,73 @@
<string name="resign">기권하기</string>
<string name="checkmate">체크메이트</string>
<string name="stalemate">스테일메이트</string>
<string name="white"></string>
<string name="black">검은</string>
<string name="white"></string>
<string name="black"></string>
<string name="randomColor">무작위</string>
<string name="createAGame">새 게임 만들기</string>
<string name="whiteIsVictorious">색 승리</string>
<string name="blackIsVictorious">검은색 승리</string>
<string name="whiteIsVictorious">색 승리</string>
<string name="blackIsVictorious">색 승리</string>
<string name="kingInTheCenter">왕이 중앙에 도달하였다. 승리!</string>
<string name="threeChecks">세 번의 체크로 승리!</string>
<string name="raceFinished">경주 완료</string>
<string name="variantEnding">변형 게임에서 승리!</string>
<string name="variantEnding">변형 게임 엔딩</string>
<string name="newOpponent">새 상대</string>
<string name="yourOpponentWantsToPlayANewGameWithYou">상대가 재대결을 원합니다</string>
<string name="joinTheGame">게임 참가</string>
<string name="whitePlays">색 차례</string>
<string name="blackPlays">검은색 차례</string>
<string name="whitePlays">색 차례</string>
<string name="blackPlays">색 차례</string>
<string name="opponentLeftChoices">상대가 게임을 나갔습니다. 상대를 기다리거나 승리 또는 무승부 처리할 수 있습니다.</string>
<string name="makeYourOpponentResign">상대를 몰수패 처리합니다</string>
<string name="forceResignation">승리 처리</string>
<string name="forceDraw">무승부 처리</string>
<string name="talkInChat">건전한 채팅을 해주세요!</string>
<string name="theFirstPersonToComeOnThisUrlWillPlayWithYou">이 URL로 가장 먼저 들어온 사람과 체스를 두게 됩니다.</string>
<string name="whiteResigned">색 기권</string>
<string name="blackResigned">검은색 기권</string>
<string name="whiteLeftTheGame">색이 게임을 나갔습니다</string>
<string name="blackLeftTheGame">검은색이 게임을 나갔습니다</string>
<string name="whiteResigned">색 기권</string>
<string name="blackResigned">색 기권</string>
<string name="whiteLeftTheGame">색이 게임을 나갔습니다</string>
<string name="blackLeftTheGame">색이 게임을 나갔습니다</string>
<string name="shareThisUrlToLetSpectatorsSeeTheGame">이 URL을 공유해서 관전할 수 있게 하세요.</string>
<string name="theComputerAnalysisHasFailed">컴퓨터 분석에 실패하였습니다</string>
<string name="viewTheComputerAnalysis">컴퓨터 분석 보기</string>
<string name="requestAComputerAnalysis">컴퓨터 분석 요청</string>
<string name="computerAnalysis">컴퓨터 분석</string>
<string name="computerAnalysisAvailable">컴퓨터 분석이 가능합니다.</string>
<string name="analysis">분석</string>
<string name="depthX">%s수 앞 계산 완료</string>
<string name="usingServerAnalysis">서버 분석 사용하기</string>
<string name="loadingEngine">엔진 로드 중 ...</string>
<string name="cloudAnalysis">클라우드 분석</string>
<string name="goDeeper">더 깊게 분석하기</string>
<string name="showThreat">위험요소 표시하기</string>
<string name="inLocalBrowser">브라우저에서</string>
<string name="toggleLocalEvaluation">개인 컴퓨터에서 분석하기</string>
<string name="move"></string>
<string name="variantLoss">변형 체스에서 패배</string>
<string name="variantWin">변형 체스에서 승리</string>
<string name="insufficientMaterial">말이 부족하여 무승부입니다.</string>
<string name="pawnMove">폰 이동</string>
<string name="drawn">무승부</string>
<string name="whiteDrawBlack">백 : 무승부 : 흑</string>
<string name="averageRatingX">평균 레이팅: %s</string>
<string name="recentGames">최근 게임</string>
<string name="masterDbExplanation">%2$s년과 %3$s년 사이 FIDE 레이팅이 최소 %1$s였던 선수들의 기보가 약 2백만개 있습니다.</string>
<plurals name="mateInXHalfMoves">
<item quantity="other">%s반수만에 체크메이트</item>
</plurals>
<string name="noGameFound">게임을 찾을 수 없습니다.</string>
<string name="maybeIncludeMoreGamesFromThePreferencesMenu">설정에서 더 많은 게임을 포함하세요.</string>
<string name="openingExplorer">오프닝 탐색기</string>
<string name="winPreventedBy50MoveRule">50수 규칙에 의하여 승리가 불가능합니다.</string>
<string name="lossSavedBy50MoveRule">50수 규칙에 의하여 패배가 불가능합니다.</string>
<string name="importPgn">PGN 가져오기</string>
<string name="delete">삭제</string>
<string name="deleteThisImportedGame">가져온 게임을 삭제할까요?</string>
<string name="replayMode">게임 다시보기</string>
<string name="realtimeReplay">실시간</string>
<string name="enable">활성화</string>
<string name="bestMoveArrow">화살표로 최상의 수 표시하기</string>
<string name="memory">메모리</string>
<string name="infiniteAnalysis">무한분석</string>
<string name="blunders">치명적 실수</string>
<string name="mistakes">실수</string>
<string name="inaccuracies">사소한 실수</string>
@ -109,6 +142,11 @@
<string name="passwordReset">비밀번호 초기화</string>
<string name="forgotPassword">비밀번호를 잊어버리셨나요?</string>
<string name="rank">순위</string>
<string name="rankX">랭킹: %s</string>
<string name="rankIsUpdatedEveryXMinutes">랭킹은 %s분마다 업데이트 됩니다.</string>
<plurals name="nbPuzzles">
<item quantity="other">퍼즐 %s개</item>
</plurals>
<string name="gamesPlayed">게임</string>
<plurals name="nbGamesWithYou">
<item quantity="other">나와 %s번 대국 함</item>
@ -146,6 +184,8 @@
<string name="play">플레이</string>
<string name="inbox">받은편지함</string>
<string name="chatRoom">채팅</string>
<string name="loginToChat">채팅에 로그인하기</string>
<string name="youHaveBeenTimedOut">채팅에서 로그아웃 되었습니다.</string>
<string name="spectatorRoom">관전자 채팅</string>
<string name="composeMessage">메시지 작성</string>
<string name="noNewMessages">새 메시지 없음</string>
@ -169,6 +209,7 @@
<plurals name="giveNbSeconds">
<item quantity="other">%s초 더 주기</item>
</plurals>
<string name="giveMoreTime">시간 더 주기</string>
<string name="thisPlayerUsesChessComputerAssistance">이 플레이어는 체스 엔진을 악용하는 사람입니다</string>
<string name="thisPlayerArtificiallyIncreasesTheirRating">이 플레이어는 비정상적인 방법으로 레이팅을 조작합니다</string>
<string name="takeback">무르기</string>
@ -186,6 +227,8 @@
<string name="tournamentPoints">토너먼트 점수</string>
<string name="viewTournament">토너먼트 보기</string>
<string name="backToTournament">토너먼트로 돌아가기</string>
<string name="yourPerfRatingIsProvisional">사용자의 임시 등급 %s는 임시적입니다.</string>
<string name="yourPerfRatingIsTooHigh">귀하의 %1$s 레이팅(%2$s)은 너무 높습니다.</string>
<string name="backToGame">게임으로 돌아가기</string>
<string name="siteDescription">회원가입, 광고, 플러그인 없이 즐길 수 있는 깔끔한 구성의 무료 온라인 체스 게임입니다. 컴퓨터, 친구 또는 무작위로 고른 상대와 함께 체스를 즐겨보세요.</string>
<string name="teams"></string>
@ -232,24 +275,24 @@
<string name="findFriends">친구 찾기</string>
<string name="follow">팔로우</string>
<string name="following">팔로잉</string>
<string name="unfollow">팔로우</string>
<string name="unfollow">팔로우 취소</string>
<string name="block">차단</string>
<string name="blocked">차단됨</string>
<string name="unblock">차단 해제</string>
<string name="followsYou">팔로워</string>
<string name="xStartedFollowingY">%1$s(이)가 %2$s(을)를 팔로우했습니다</string>
<plurals name="nbFollowers">
<item quantity="other">%s 팔로워</item>
<item quantity="other">팔로워 %s명</item>
</plurals>
<plurals name="nbFollowing">
<item quantity="other">%s 팔로잉</item>
<item quantity="other">팔로잉 %s명</item>
</plurals>
<string name="more">더보기</string>
<string name="memberSince">가입 시기:</string>
<string name="lastSeenActive">최근 로그인: %s</string>
<string name="challengeToPlay">도전하기</string>
<string name="player">플레이어</string>
<string name="list">리스트</string>
<string name="list">목록</string>
<string name="graph">그래프</string>
<plurals name="lessThanNbMinutes">
<item quantity="other">%s분 미만</item>
@ -260,7 +303,7 @@
<string name="winner">승자</string>
<string name="standing">순위</string>
<string name="createANewTournament">새 토너먼트 생성</string>
<string name="join">참가</string>
<string name="join">참가하기</string>
<string name="withdraw">중단</string>
<string name="points">포인트</string>
<string name="wins">승리</string>
@ -268,6 +311,8 @@
<string name="winStreak">연속 승리</string>
<string name="createdBy">토너먼트 주최자:</string>
<string name="tournamentIsStarting">토너먼트가 곧 시작됩니다</string>
<string name="nextXTournament">다음 %s 대회:</string>
<string name="viewMoreTournaments">더 많은 대회 보기</string>
<string name="membersOnly">회원 전용</string>
<string name="boardEditor">보드 편집기</string>
<string name="startPosition">원래대로</string>
@ -276,6 +321,9 @@
<string name="loadPosition">포지션 불러오기</string>
<string name="isPrivate">비공개</string>
<string name="reportXToModerators">%s 신고</string>
<string name="profileCompletion">프로필 완성도: %s</string>
<string name="xRating">레이팅: %s</string>
<string name="ifNoneLeaveEmpty">없으면 무시하세요</string>
<string name="profile">프로필</string>
<string name="editProfile">프로필 수정</string>
<string name="firstName">이름</string>
@ -304,6 +352,7 @@
<string name="keepGoing">계속하세요...</string>
<string name="puzzleFailed">퍼즐 풀기 실패</string>
<string name="butYouCanKeepTrying">하지만 계속 플레이할 수 있습니다.</string>
<string name="success">성공!</string>
<string name="wasThisPuzzleAnyGood">이 퍼즐이 괜찮았나요?</string>
<string name="pleaseVotePuzzle">위 또는 아래 화살표를 눌러 Lichess를 향상시켜 주세요</string>
<string name="thankYou">감사합니다!</string>
@ -367,6 +416,7 @@
<string name="closeAccountExplanation">정말 계정을 폐쇄하시겠습니까? 계정 폐쇄는 영구적인 결정입니다. 더 이상 이 계정으로 로그인할 수 없게 되고, 프로필 페이지에 접근할 수 없게 됩니다.</string>
<string name="thisAccountIsClosed">계정이 폐쇄됩니다.</string>
<string name="invalidUsernameOrPassword">사용자 이름이나 비밀번호가 잘못되었습니다.</string>
<string name="incorrectPassword">잘못된 비밀번호입니다.</string>
<string name="emailMeALink">메일로 링크를 보내주세요</string>
<string name="currentPassword">현재 비밀번호</string>
<string name="newPassword">새 비밀번호</string>
@ -375,6 +425,8 @@
<string name="pieceDestinations">피스 위치 (유효한 움직임 및 미리두기)</string>
<string name="boardCoordinates">보드 좌표 (A-H, 1-8)</string>
<string name="moveListWhilePlaying">피스 움직임 기록</string>
<string name="chessPieceSymbol">체스 말 기호</string>
<string name="pgnLetter">글자 (K, Q, R, B, N)</string>
<string name="chessClock">체스 시계</string>
<string name="tenthsOfSeconds">1/10초 단위</string>
<string name="never">설정하지 않음</string>
@ -382,12 +434,17 @@
<string name="horizontalGreenProgressBars">녹색 수평 진행 바</string>
<string name="soundWhenTimeGetsCritical">시간이 위태로울 때 소리 재생</string>
<string name="gameBehavior">동작</string>
<string name="clickTwoSquares">현재 위치와 원하는 위치에 클릭하기</string>
<string name="dragPiece">드래그</string>
<string name="bothClicksAndDrag">아무 방법으로</string>
<string name="premovesPlayingDuringOpponentTurn">미리두기 (상대 턴일 때)</string>
<string name="takebacksWithOpponentApproval">무르기 (상대 승인과 함께)</string>
<string name="promoteToQueenAutomatically">퀸으로 자동 승급</string>
<string name="claimDrawOnThreefoldRepetitionAutomatically">세 번 반복하면 자동으로 무승부 요청</string>
<string name="privacy">보안</string>
<string name="letOtherPlayersFollowYou">다른 사람이 팔로우할 수 있게 함</string>
<string name="letOtherPlayersChallengeYou">다른 사람이 나에게 도전할 수 있게 함</string>
<string name="letOtherPlayersInviteYouToStudy">다른 플레이어들이 공부 초대 설정</string>
<string name="sound">소리</string>
<string name="yourPreferencesHaveBeenSaved">설정이 저장되었습니다.</string>
<string name="none">없음</string>
@ -410,11 +467,15 @@
<string name="xAnsweredY">%1$s가 답변을 남겼습니다: %2$s</string>
<string name="xCommentedY">%1$s가 댓글을 남겼습니다: %2$s</string>
<string name="victory">승리!</string>
<string name="defeat">패배</string>
<string name="xVsYinZ">%3$s에서
%1$s 대 %2$s</string>
<string name="timeline">타임라인</string>
<string name="seeAllTournaments">모든 토너먼트 보기</string>
<string name="starting">시작합니다:</string>
<string name="allInformationIsPublicAndOptional">모든 정보는 공개되며 선택 사항입니다.</string>
<string name="yourCityRegionOrDepartment">시도급 또는 시군구급.</string>
<string name="biographyDescription">자신을 알려주세요. 왜 체스를 좋아하는지, 좋아하는 오프닝, 게임, 선수 등등...</string>
<plurals name="maximumNbCharacters">
<item quantity="other">최대 %s자.</item>
</plurals>
@ -426,14 +487,15 @@
<string name="computer">인공지능</string>
<string name="side">진영</string>
<string name="clock">시간 제한</string>
<string name="unauthorizedError">접속 실패했습니다.</string>
<string name="unauthorizedError">접속이 불허되었습니다.</string>
<string name="noInternetConnection">인터넷 연결이 없습니다. 메뉴을 통해 오프라인 게임은 할 수 있습니다.</string>
<string name="connectedToLichess">lichess.org에 접속했습니다</string>
<string name="signedOut">접속 종료했습니다</string>
<string name="signedOut">로그아웃 되었습니다.</string>
<string name="loginSuccessful">로그인 성공</string>
<string name="playOnTheBoardOffline">오프라인, 로컬 게임</string>
<string name="playOfflineComputer">오프라인 컴퓨터와 대국하기</string>
<string name="opponent">상대</string>
<string name="learnMenu">배우기</string>
<string name="community">커뮤니티</string>
<string name="tools">도구</string>
<string name="increment">시간 증가</string>
@ -446,7 +508,9 @@
<string name="error.email">이메일 주소가 유효하지 않습니다.</string>
<string name="error.email_acceptable">이 이메일 주소는 받을 수 없습니다.</string>
<string name="error.email_unique">이미 사용 중인 이메일 주소입니다.</string>
<string name="error.email_different">이미 등록된 이메일 주소입니다.</string>
<string name="blindfoldChess">눈을 가리고 체스</string>
<string name="zenMode">젠 모드</string>
<string name="moveConfirmation">피스를 움직이기 전에 물음</string>
<string name="inCorrespondenceGames">긴 대국에서만</string>
<string name="ifRatingIsPlusMinusX">레이팅이 ± %s 이하일 경우</string>
@ -508,6 +572,9 @@
<string name="tournamentMayHaveBeenCanceled">모든 플레이어가 퇴장하여 취소된 게임일 수 있습니다.</string>
<string name="returnToTournamentsHomepage">토너먼트 홈으로 돌아가기</string>
<string name="weeklyPerfTypeRatingDistribution">주간 %s 레이팅 분포</string>
<plurals name="nbPerfTypePlayersThisWeek">
<item quantity="other">이번 주에 %2$s 사용자는 %1$s명입니다.</item>
</plurals>
<string name="yourPerfTypeRatingIsRating">당신의 %1$s 레이팅은 %2$s입니다.</string>
<string name="youAreBetterThanPercentOfPerfTypePlayers">당신은 상위 %1$s 의 %2$s 성적을 기록했습니다.</string>
<string name="youDoNotHaveAnEstablishedPerfTypeRating">아직 확정된 %s 레이팅을 갖지 않으셨습니다.</string>
@ -527,10 +594,25 @@
<string name="crosstable">점수판</string>
<string name="youCanAlsoScrollOverTheBoardToMoveInTheGame">마우스 스크롤을 돌림으로써 수를 진행할 수 있습니다.</string>
<string name="analysisShapesHowTo">Shift + 왼쪽/오른쪽 클릭으로 원이나 화살표를 보드 상에 그릴 수 있습니다.</string>
<string name="inputMovesWithTheKeyboard">키보드 입력</string>
<string name="letOtherPlayersMessageYou">다른 사람들이 당신에게 메시지를 보낼 수 있도록 합니다.</string>
<string name="castleByMovingTheKingTwoSquaresOrOntoTheRook">캐슬링 방법</string>
<string name="castleByMovingTwoSquares">왕을 2칸 옮기기</string>
<string name="castleByMovingOntoTheRook">킹을 룩한테 이동</string>
<string name="shareYourInsightsData">당신의 게임 분석 결과를 공유합니다.</string>
<string name="withNobody">나만 보기</string>
<string name="withFriends">친구들만</string>
<string name="withEverybody">공개</string>
<string name="youHaveAlreadyRegisteredTheEmail">이 계정은 이미 해당 주소로 연결 되어 있습니다: %s</string>
<string name="kidMode">어린이 모드</string>
<string name="kidModeExplanation">안전을 위해 그런것입니다. 아이 모드에서는 모든 통신이 비활성화됩니다. 당신의 아이들이나 학생들을 다른 인터넷 사용자들에서 보호하게 이 모드를 키십시오.</string>
<string name="inKidModeTheLichessLogoGetsIconX">아이 모드에서sms lichess 로고가 %s 아이콘이 뜨기 때문에 안심하셔도 됩니다.</string>
<string name="enableKidMode">아이 모드 활성화하기</string>
<string name="disableKidMode">아이 모드 비활성화하기</string>
<string name="security">보안</string>
<string name="thisIsAListOfDevicesThatHaveLoggedIntoYourAccount">사용자 계정에 로그인한 장치의 목록입니다. 이 중 낯선 장치가 보이면 세션을 취소하세요.</string>
<string name="alternativelyYouCanX">%s를 하셔도 됩니다.</string>
<string name="revokeAllSessions">모든 세션 비활성화</string>
<string name="playChessEverywhere">어디에서나 체스를 즐기세요</string>
<string name="asFreeAsLichess">lichess처럼 무료입니다</string>
<string name="builtForTheLoveOfChessNotMoney">오직 체스에 대한 열정으로 만들어졌습니다</string>
@ -548,4 +630,41 @@
<item quantity="other">%s개의 언어 지원!</item>
</plurals>
<string name="gameAnalysis">게임 분석기</string>
</resources>
<string name="xHostsY">%2$s가 %1$s를 시작했습니다.</string>
<string name="xJoinsY">%2$s가 %1$s에 참여했습니다.</string>
<string name="xLikesY">%2$s가 %1$s를 좋아합니다.</string>
<string name="quickPairing">빠른 상대 찾기</string>
<string name="lobby">로비</string>
<string name="anonymous">익명 플레이어</string>
<string name="yourScore">당신의 점수는 %s입니다.</string>
<string name="language">언어</string>
<string name="background">배경</string>
<string name="light">밝게</string>
<string name="dark">어둡게</string>
<string name="transparent">투명하게</string>
<string name="backgroundImageUrl">배경 이미지 URL:</string>
<string name="boardGeometry">보드 모양</string>
<string name="boardTheme">보드 테마</string>
<string name="boardSize">보드 크기</string>
<string name="pieceSet">조각 세트</string>
<string name="embedInYourWebsite">웹사이트에 공유하기</string>
<string name="usernameAlreadyUsed">이미 사용중인 사용자 이름입니다. 다른 이름을 사용해주세요.</string>
<string name="usernameInvalid">잘못된 사용자 이름입니다. 영문자, 숫자, 밑줄(_)과 대시(-)만 사용하십시오.</string>
<string name="usernameStartNoNumber">사용자명은 숫자로 시작할 수 없습니다.</string>
<string name="usernameUnacceptable">사용자 이름을 사용할 수 없습니다.</string>
<string name="directlySupportLichess">Lichess 후원하기</string>
<string name="playChessInStyle">스타일리시하게 체스하기</string>
<string name="chessBasics">체스 기본</string>
<string name="coaches">코치</string>
<string name="invalidPgn">잘못된 PGN입니다.</string>
<string name="invalidFen">잘못된 FEN입니다.</string>
<string name="error.minLength">최소 길이는 %s입니다.</string>
<string name="error.maxLength">최대 길이는 %s입니다.</string>
<string name="error.min">크기가 최소 %s이여야합니다.</string>
<string name="error.max">크기가 최대 %s이여야합니다.</string>
<string name="error.unknown">오류</string>
<string name="custom">사용자 지정</string>
<string name="notifications">알림</string>
<string name="challenges">도전</string>
<string name="perfRatingX">레이팅: %s</string>
</resources>

View File

@ -18,27 +18,63 @@
<string name="stalemate">Пат</string>
<string name="white">Ак</string>
<string name="black">Кара</string>
<string name="randomColor">Оң келген тарап</string>
<string name="createAGame">Оюн куруу</string>
<string name="whiteIsVictorious">Ак түстөгү оюнчу утту</string>
<string name="blackIsVictorious">Кара түстөгү оюнчу утту</string>
<string name="kingInTheCenter">Хан ортодо</string>
<string name="threeChecks">Үч шах</string>
<string name="raceFinished">Гонка бүдтүү</string>
<string name="variantEnding">Вариант бүтүшү</string>
<string name="newOpponent">Жаңы өнөктөш</string>
<string name="yourOpponentWantsToPlayANewGameWithYou">Сиздин өнөктөшүңүз сиз менен жаңы оюн ойноого чакырат</string>
<string name="joinTheGame">Оюрга кошулуу</string>
<string name="whitePlays">Ак түстөгү оюнчу баштайт</string>
<string name="blackPlays">Кара түстөгү оюнчу баштайт</string>
<string name="opponentLeftChoices">Сиздин өнөктөшүңүз оюндан чыгып кетти, кутунуз же башка оюн тандаңыз</string>
<string name="forceResignation">Утушту талап кылуу</string>
<string name="forceDraw">Барабардык сурануу</string>
<string name="talkInChat">Чат менен суйлошүү</string>
<string name="theFirstPersonToComeOnThisUrlWillPlayWithYou">Бул шилтеме менен келген биринчи оюнчу сиз менен ойнойт.</string>
<string name="whiteResigned">Ак түстөгү оюнчу утулду</string>
<string name="blackResigned">Кара түстөгү оюнчу утулду</string>
<string name="whiteLeftTheGame">Ак түстөгү оюнчу оюндан чыгып кетти</string>
<string name="blackLeftTheGame">Кара түстөгү оюнчу оюндан чыгып кетти</string>
<string name="shareThisUrlToLetSpectatorsSeeTheGame">Көрүүчүлөр бул оюнду көрүшү үчүн бул шилтемени бөлүшүңүз</string>
<string name="theComputerAnalysisHasFailed">Компьютердик анализ ийгиликсиз аяктады</string>
<string name="viewTheComputerAnalysis">Компьютердик анализди көрүү</string>
<string name="requestAComputerAnalysis">Компьютердик анализ суроо</string>
<string name="computerAnalysis">Компьютердик анализ</string>
<string name="computerAnalysisAvailable">Компьютердик анализ бар</string>
<string name="analysis">Досканы анализдөө</string>
<string name="depthX">Терендик %s</string>
<string name="usingServerAnalysis">Анализдөө сервери колдонулуп жатат</string>
<string name="loadingEngine">Анализ мотору жүктөлүп жатат ...</string>
<string name="cloudAnalysis">Булут талдоосу</string>
<string name="goDeeper">Тереңдет</string>
<string name="showThreat">Вариантты көрсөт</string>
<string name="inLocalBrowser">жергиликтүү браузерде</string>
<string name="toggleLocalEvaluation">Жергиликтүү баалоого которуу</string>
<string name="move">Жүрүш</string>
<string name="variantLoss">Утулуу варианты</string>
<string name="variantWin">Утуу варианты</string>
<string name="insufficientMaterial">Жетишсиз материал</string>
<string name="pawnMove">Пешка жүрүүсү</string>
<string name="capture">Алуу</string>
<string name="close">Жабуу</string>
<string name="winning">Утуп жатат</string>
<string name="losing">Утулуп жатат</string>
<string name="drawn">Тең</string>
<string name="unknown">Белгисиз</string>
<string name="database">Берилиш базасы</string>
<string name="whiteDrawBlack">Актар / Тең / Кара</string>
<string name="averageRatingX">Орточо рейтинг: %s</string>
<string name="recentGames">Жакында бүткөн оюндар</string>
<string name="topGames">Мыкты оюндар</string>
<string name="masterDbExplanation">Эки миллион OTB оюндар %1$sтен + FIDE рейтинги оюнчулары %2$sдан %3$sга чейин</string>
<plurals name="mateInXHalfMoves">
<item quantity="other">%s жарым жүрүштөө мат</item>
</plurals>
<string name="blunders">Одоно ката</string>
<string name="mistakes">Жаңылыштык</string>
<string name="inaccuracies">Так эместик</string>
@ -74,4 +110,4 @@
<string name="tools">Инструменттер</string>
<string name="playOnline">Онлайн оноо</string>
<string name="playOffline">Оффлайн ойноо</string>
</resources>
</resources>

View File

@ -46,7 +46,28 @@
<string name="viewTheComputerAnalysis">Погледнете ја компјутерската анализа</string>
<string name="requestAComputerAnalysis">Побарајте компјутерска анализа</string>
<string name="computerAnalysis">Компјутерска анализа</string>
<string name="computerAnalysisAvailable">Достапна е компјутерска анализа</string>
<string name="analysis">Анализа</string>
<string name="depthX">Длабочина %s</string>
<string name="loadingEngine">Се вчитува компјутерската програма ...</string>
<string name="cloudAnalysis">Анализа на облакот</string>
<string name="goDeeper">Оди подлабоку</string>
<string name="showThreat">Покажи закана</string>
<string name="inLocalBrowser">на вашиот прелистувач (локално)</string>
<string name="toggleLocalEvaluation">Вклчи локална еваулација</string>
<string name="move">Потег</string>
<string name="insufficientMaterial">Нема доволно материјал</string>
<string name="capture">Зема</string>
<string name="close">Затвори</string>
<string name="winning">Победува</string>
<string name="losing">Губи</string>
<string name="drawn">Реми</string>
<string name="unknown">Непознато</string>
<string name="database">База на податоци</string>
<string name="whiteDrawBlack">Бели / Реми / Црни</string>
<string name="averageRatingX">Просечен пласман %s</string>
<string name="recentGames">Неодамнешни игри</string>
<string name="topGames">Топ игри</string>
<string name="blunders">Сериозни пропусти</string>
<string name="mistakes">Грешки</string>
<string name="inaccuracies">Неточности</string>
@ -345,4 +366,4 @@
<string name="opponent">Противник</string>
<string name="phoneAndTablet">Телефон и таблет</string>
<string name="followAndChallengeFriends">Следи и предизвикај пријатели</string>
</resources>
</resources>

View File

@ -18,7 +18,7 @@
<string name="stalemate">Pat</string>
<string name="white">Białe</string>
<string name="black">Czarne</string>
<string name="randomColor">Losowanie koloru</string>
<string name="randomColor">Losowo</string>
<string name="createAGame">Nowa partia</string>
<string name="whiteIsVictorious">Wygrana białych</string>
<string name="blackIsVictorious">Wygrana czarnych</string>
@ -60,7 +60,7 @@
<string name="variantLoss">Wariant przegrany</string>
<string name="variantWin">Wariant wygrany</string>
<string name="insufficientMaterial">Niewystarczający materiał</string>
<string name="pawnMove">Ruch pionkiem</string>
<string name="pawnMove">Ruch pionem</string>
<string name="capture">Bicie</string>
<string name="close">Zamknij</string>
<string name="winning">Wygrywa</string>
@ -85,11 +85,11 @@
</plurals>
<string name="noGameFound">Nie znaleziono partii</string>
<string name="maybeIncludeMoreGamesFromThePreferencesMenu">Może zaimportujesz więcej partii z menu narzędzi?</string>
<string name="openingExplorer">Przeglądarka otwarć</string>
<string name="openingExplorer">Biblioteka otwarć</string>
<string name="xOpeningExplorer">Przeszukiwanie biblioteki otwarć %s</string>
<string name="winPreventedBy50MoveRule">Zwycięstwo przez regułę 50 ruchów</string>
<string name="lossSavedBy50MoveRule">Przegrana przez regułę 50 ruchów</string>
<string name="allSet">Wszystko gotowe!</string>
<string name="allSet">Gotowe!</string>
<string name="importPgn">Importuj PGN</string>
<string name="delete">Usuń</string>
<string name="deleteThisImportedGame">Czy usunąć tę partię?</string>
@ -266,7 +266,7 @@
<string name="giveMoreTime">Dodaj więcej czasu</string>
<string name="thisPlayerUsesChessComputerAssistance">Ten gracz korzysta z pomocy programu szachowego</string>
<string name="thisPlayerArtificiallyIncreasesTheirRating">Ten gracz sztucznie zwiększa/obniża swój ranking</string>
<string name="openingExplorerAndTablebase">Przeglądarka otwarć</string>
<string name="openingExplorerAndTablebase">Biblioteka otwarć i końcówek</string>
<string name="takeback">Cofnij ruch</string>
<string name="proposeATakeback">Poproś o cofnięcie ruchu</string>
<string name="takebackPropositionSent">Wysłano prośbę o cofnięcie ruchu</string>
@ -304,11 +304,11 @@
<item quantity="other">Musisz rozegrać jeszcze %1$s partii rankingowych %2$s</item>
</plurals>
<string name="yourPerfRatingIsProvisional">Twój ranking (%s) jest prowizoryczny</string>
<string name="yourPerfRatingIsTooHigh">Twój ranking %1$s (%2$s) jest za wysoki</string>
<string name="yourTopWeeklyPerfRatingIsTooHigh">Twój ranking z tego tygodnia (%1$s) jest za wysoki (%2$s)</string>
<string name="yourPerfRatingIsTooHigh">Twój ranking %2$s (%1$s) jest za wysoki</string>
<string name="yourTopWeeklyPerfRatingIsTooHigh">Twój ranking z tego tygodnia %2$s (%1$s) jest za wysoki</string>
<string name="yourPerfRatingIsTooLow">Twój ranking %2$s (%1$s) jest zbyt niski</string>
<string name="ratedMoreThanInPerf">Ranking ≥ %1$s w %2$s</string>
<string name="ratedLessThanInPerf">Ranking ≤ %1$s w %2$s</string>
<string name="ratedMoreThanInPerf">Ranking ≥ %1$s (%2$s)</string>
<string name="ratedLessThanInPerf">Ranking ≤ %1$s (%2$s)</string>
<string name="backToGame">Wróć do partii</string>
<string name="siteDescription">Darmowe szachy online. Zagraj teraz w szachy o przyjaznym interfejsie. Bez rejestracji, bez reklam, bez instalowania wtyczek. Zagraj w szachy z komputerem, znajomymi lub losowo wybranymi przeciwnikami.</string>
<string name="teams">Kluby</string>
@ -560,13 +560,13 @@
<string name="privacy">Prywatność</string>
<string name="letOtherPlayersFollowYou">Inni gracze mogą Cię obserwować</string>
<string name="letOtherPlayersChallengeYou">Inni gracze mogą rzucić Ci wyzwanie</string>
<string name="letOtherPlayersInviteYouToStudy">Pozwól innym zapraszać Cię do wspólnego omówienia partii</string>
<string name="letOtherPlayersInviteYouToStudy">Inni gracze mogą zapraszać Cię do omówienia partii</string>
<string name="sound">Dźwięk</string>
<string name="yourPreferencesHaveBeenSaved">Twoje ustawienia zostały zapisane.</string>
<string name="none">Brak</string>
<string name="fast">Szybka</string>
<string name="normal">Normalna</string>
<string name="slow">Wolna</string>
<string name="fast">Szybko</string>
<string name="normal">Normalnie</string>
<string name="slow">Wolno</string>
<string name="insideTheBoard">Na szachownicy</string>
<string name="outsideTheBoard">Poza szachownicą</string>
<string name="onSlowGames">W wolniejszych grach</string>
@ -695,12 +695,12 @@
<string name="returnToTournamentsHomepage">Wróć do turnieju</string>
<string name="weeklyPerfTypeRatingDistribution">Tygodniowy rozkład rankingu w wariancie %s</string>
<plurals name="nbPerfTypePlayersThisWeek">
<item quantity="one">%1$s gracz grał w tym tygodniu w wariant %2$s.</item>
<item quantity="few">%1$s graczy grało w tym tygodniu w wariant %2$s.</item>
<item quantity="other">%1$s graczy grało w tym tygodniu w wariant %2$s.</item>
<item quantity="one">%1$s gracz w tym tygodniu (%2$s).</item>
<item quantity="few">%1$s graczy w tym tygodniu (%2$s).</item>
<item quantity="other">%1$s graczy w tym tygodniu (%2$s).</item>
</plurals>
<string name="yourPerfTypeRatingIsRating">Twój ranking w wariancie %1$s to %2$s.</string>
<string name="youAreBetterThanPercentOfPerfTypePlayers">Jesteś lepszy niż %1$s graczy w tym wariancie.</string>
<string name="youAreBetterThanPercentOfPerfTypePlayers">Jesteś lepszy niż %1$s graczy (%2$s).</string>
<string name="youDoNotHaveAnEstablishedPerfTypeRating">Nie masz jeszcze ustalonego rankingu w tym wariancie.</string>
<string name="checkYourEmail">Sprawdź swoją skrzynkę e-mail</string>
<string name="weHaveSentYouAnEmailClickTheLink">Wysłaliśmy do Ciebie wiadomość e-mail. Kliknij w link znajdujący się w e-mailu aby aktywować swoje konto.</string>
@ -720,7 +720,7 @@
<string name="analysisShapesHowTo">Naciśnij shift i kliknij lub kliknij prawym przyciskiem myszy aby rysować okręgi i strzałki na szachownicy.</string>
<string name="confirmResignationAndDrawOffers">Potwierdzaj poddanie się i wysłanie propozycji remisu</string>
<string name="inputMovesWithTheKeyboard">Wprowadzaj ruchy za pomocą klawiatury</string>
<string name="letOtherPlayersMessageYou">Pozwól innym graczom na pisanie do Ciebie</string>
<string name="letOtherPlayersMessageYou">Inni gracze mogą pisać do Ciebie</string>
<string name="castleByMovingTheKingTwoSquaresOrOntoTheRook">Sposób roszowania</string>
<string name="castleByMovingTwoSquares">Przesuwając króla o dwa pola</string>
<string name="castleByMovingOntoTheRook">Przesuwając króla na wieżę</string>
@ -794,4 +794,4 @@
<string name="notifications">Powiadomienia</string>
<string name="challenges">Wyzwania</string>
<string name="perfRatingX">Ranking: %s</string>
</resources>
</resources>

View File

@ -46,12 +46,33 @@
<string name="viewTheComputerAnalysis">Shiko analizën e kompjuterit</string>
<string name="requestAComputerAnalysis">Kërko analizë kompjuterike</string>
<string name="computerAnalysis">Analizë kompjuterike</string>
<string name="computerAnalysisAvailable">Perdor analizen e kopmjuterit</string>
<string name="analysis">Analiza</string>
<string name="depthX">Thellesia%s </string>
<string name="usingServerAnalysis">Analiza me server</string>
<string name="loadingEngine">Duke ngarkuar...</string>
<string name="cloudAnalysis">Analiza cloud</string>
<string name="goDeeper">Me thelle</string>
<string name="showThreat">Shiko rrezikun</string>
<string name="inLocalBrowser">browser lokal</string>
<string name="toggleLocalEvaluation">Celesi i kalkulimit</string>
<string name="move">Levizjet</string>
<string name="variantLoss">Varianti humbes</string>
<string name="variantWin">Varianti fitues</string>
<string name="insufficientMaterial">Ska material</string>
<string name="pawnMove">Levizje ushtarit</string>
<string name="capture">Zapto</string>
<string name="close">Mbyll</string>
<string name="winning">Fitues</string>
<string name="losing">Humbes</string>
<string name="drawn">barazim</string>
<string name="unknown">I panjohur</string>
<string name="database">Baza e të dhënave</string>
<string name="whiteDrawBlack">e bardhë/barazim/e zezë</string>
<string name="averageRatingX">mesatare pikë:%s</string>
<string name="recentGames">Lojra te meparshme</string>
<string name="topGames">Lojërat më të mira</string>
<string name="masterDbExplanation">Dy milion lojra OTB %1$s + FIDE nga lojtare ranked nga %2$s ne %3$s</string>
<string name="openingExplorer">Studiues i hapjeve</string>
<string name="realtimeReplay">kohe reale</string>
<string name="byCPL">nga CPL</string>
@ -575,4 +596,4 @@
<item quantity="other">I përdorshëm në %s gjuhë!</item>
</plurals>
<string name="gameAnalysis">Analiza e lojës</string>
</resources>
</resources>

View File

@ -82,7 +82,7 @@
<item quantity="other">%s yarım hamle sonra yapılacak taş yeme veya piyon hamlesi (50 hamle kuralının sıfırlanmasına kalan uzaklık)</item>
</plurals>
<string name="noGameFound">Oyun bulunamadı</string>
<string name="maybeIncludeMoreGamesFromThePreferencesMenu">Tercih ayarları değiştirilirse belki daha fazla oyun gösterilebilir?</string>
<string name="maybeIncludeMoreGamesFromThePreferencesMenu">Tercihler menüsünden daha fazla oyun dahil edilebilir belki?</string>
<string name="openingExplorer">ılış kâşifi</string>
<string name="xOpeningExplorer">%s açılış kâşifi</string>
<string name="winPreventedBy50MoveRule">Galibiyet 50 hamle kuralı yüzünden engellendi</string>
@ -212,7 +212,7 @@
<string name="inbox">Gelen kutusu</string>
<string name="chatRoom">Sohbet odası</string>
<string name="loginToChat">Sohbete katılmak için oturum aç</string>
<string name="youHaveBeenTimedOut">Hele biraz soluklanın.</string>
<string name="youHaveBeenTimedOut">Sohbet bağlantısı kesildi.</string>
<string name="spectatorRoom">Seyirci odası</string>
<string name="composeMessage">Mesaj oluştur</string>
<string name="noNewMessages">Yeni mesaj yok</string>
@ -250,7 +250,7 @@
</plurals>
<string name="giveMoreTime">Süre ver</string>
<string name="thisPlayerUsesChessComputerAssistance">Bu oyuncu bir satranç programından yardım alıyor.</string>
<string name="thisPlayerArtificiallyIncreasesTheirRating">Bu oyuncu puanını sahte bir şekilde artırıyor/azaltıyor</string>
<string name="thisPlayerArtificiallyIncreasesTheirRating">Bu oyuncu puanını beklenmedik miktarlarda artırıyor/azaltıyor</string>
<string name="openingExplorerAndTablebase">ılış kâşifi &amp; oyunsonu analizi</string>
<string name="takeback">Hamleni geri al.</string>
<string name="proposeATakeback">Hamleyi geri almayı teklif et.</string>
@ -291,7 +291,7 @@
<string name="ratedMoreThanInPerf">%2$s puanı ≥ %1$s olmalı</string>
<string name="ratedLessThanInPerf">%2$s puanı ≤ %1$s olmalı</string>
<string name="backToGame">Oyuna dön</string>
<string name="siteDescription">Bedava online Satranç sunucusu. Şimdi temiz bir arayüzde Satranç oyna. Kayıta gerek yok, reklam yok, eklenti yok. Bilgisayara karşı, arkadaşlarına veya rastgele bir rakiple Satranç oyna.</string>
<string name="siteDescription">Bedava çevrimiçi Satranç sunucusu. Şimdi temiz bir arayüzde Satranç oyna. Kayda gerek yok, reklam yok, eklenti yok. Bilgisayara karşı, arkadaşlarınla veya rastgele bir rakiple Satranç oyna.</string>
<string name="teams">Takımlar</string>
<plurals name="nbMembers">
<item quantity="one">%s üyeler</item>
@ -381,7 +381,7 @@
<string name="createdBy">Oluşturan kişi</string>
<string name="tournamentIsStarting">Turnuva başlıyor</string>
<string name="tournamentPairingsAreNowClosed">Turnuva eşleştirmeleri şu anda kapalıdır.</string>
<string name="standByX">Biraz bekle %s, eşleştiriliyorsun, hazır ol!</string>
<string name="standByX">Bekle %s, oyuncular eşleştiriliyor, hazır ol!</string>
<string name="youArePlaying">Şu an oyundasınız!</string>
<string name="winRate">Kazanma oranı</string>
<string name="berserkRate">Berserk oranı</string>
@ -499,7 +499,7 @@
<string name="pieceAnimation">Hamle canlandırma</string>
<string name="materialDifference">Taş farkı</string>
<string name="closeAccount">Hesabı kapat</string>
<string name="changedMindDoNotCloseAccount">Fikrimi değiştirdim, hesabımı kapatmak istemiyorum</string>
<string name="changedMindDoNotCloseAccount">Fikrimi değiştirdim, hesabımı kapatma</string>
<string name="closeAccountExplanation">Hesabınızı kapatmak istediğinizden emin misiniz? Hesap kapatmak geri dönüşü olmayan bir işlemdir. Tekrar giriş yapamayacaksınız ve profil sayfanıza erişiminiz kalmayacaktır.</string>
<string name="thisAccountIsClosed">Hesap kapatılmıştır.</string>
<string name="invalidUsernameOrPassword">Hatalı kullanıcı adı ya da şifre</string>
@ -526,7 +526,7 @@
<string name="clickTwoSquares">İki kareye tıklayarak</string>
<string name="dragPiece">Taşı sürükleyerek</string>
<string name="bothClicksAndDrag">Hem tıklayıp hem sürükleyerek</string>
<string name="premovesPlayingDuringOpponentTurn">Ön hamleler (rakibin hamlesini beklerken hamle tanımlama)</string>
<string name="premovesPlayingDuringOpponentTurn">Ön hamleler (hamle sırası rakipteyken oynama)</string>
<string name="takebacksWithOpponentApproval">Geri Alma (rakibin onayıyla)</string>
<string name="promoteToQueenAutomatically">Piyonu otomatik olarak vezire terfi etsin</string>
<string name="claimDrawOnThreefoldRepetitionAutomatically">Üçlü tekrarda otomatik olarak beraberlik teklif et</string>
@ -657,7 +657,7 @@
<string name="keyShowOrHideComments">yorumları gizle/göster</string>
<string name="keyEnterOrExitVariation">varyasyona gir/çık</string>
<string name="newTournament">Yeni turnuva</string>
<string name="tournamentHomeTitle">Çeşitli zaman kontrolleri ve varyantlatları içeren satranç turnuvası</string>
<string name="tournamentHomeTitle">Çeşitli zaman kontrolleri ve varyantları içeren satranç turnuvası</string>
<string name="tournamentHomeDescription">Hızlı tempolu satranç turnuvalarında oynayın! Önceden planlanmış turnuvalara katılın, ya da kendi turnuvanızı oluşturun. Sınırsız satranç eğlenceniz için Kurşun, Yıldırım, Klasik, Satranç960, Tepenin Şahı, Üçşah ve daha fazla seçenek mevcuttur.</string>
<string name="tournamentNotFound">Turnuva bulunamadı.</string>
<string name="tournamentDoesNotExist">Böyle bir turnuva yok.</string>
@ -669,7 +669,7 @@
<item quantity="other">Bu hafta %1$s %2$s oyuncusu.</item>
</plurals>
<string name="yourPerfTypeRatingIsRating">%1$s puanınız %2$s.</string>
<string name="youAreBetterThanPercentOfPerfTypePlayers">%1$s %2$s oyuncularından daha iyisiniz.</string>
<string name="youAreBetterThanPercentOfPerfTypePlayers">%2$s oyuncunun %1$s tanesinden daha iyisiniz.</string>
<string name="youDoNotHaveAnEstablishedPerfTypeRating">Sabit bir %s puanınız yok.</string>
<string name="checkYourEmail">E-postanızı kontrol edin</string>
<string name="weHaveSentYouAnEmailClickTheLink">Size e-posta yolladık. Hesabınızı aktifleştirmek için e-postanızdaki linke tıklayın.</string>
@ -748,7 +748,7 @@
<string name="usernameStartNoNumber">Kullanıcı adı bir sayı ile başlayamaz.</string>
<string name="usernameUnacceptable">Bu kullanıcı adı uygun değil.</string>
<string name="directlySupportLichess">Lichess\'e doğrudan destek verin</string>
<string name="playChessInStyle">Satrancı bir tarz ile oynayın</string>
<string name="playChessInStyle">Tarzınızla satranç oynayın</string>
<string name="chessBasics">Satrancın temel prensipleri</string>
<string name="coaches">Eğitmenler</string>
<string name="invalidPgn">Geçersiz PGN</string>
@ -762,4 +762,4 @@
<string name="notifications">Bildirimler</string>
<string name="challenges">Meydan okumalar</string>
<string name="perfRatingX">Puan: %s</string>
</resources>
</resources>

View File

@ -46,7 +46,9 @@
<string name="viewTheComputerAnalysis">查看電腦分析結果</string>
<string name="requestAComputerAnalysis">請求電腦分析</string>
<string name="computerAnalysis">電腦分析</string>
<string name="computerAnalysisAvailable">有电脑分析</string>
<string name="analysis">分析</string>
<string name="depthX">深度 %s</string>
<string name="loadingEngine">正在载入引擎</string>
<string name="cloudAnalysis">云分析</string>
<string name="goDeeper">深入分析</string>
@ -54,7 +56,32 @@
<string name="inLocalBrowser">在本地浏览器</string>
<string name="toggleLocalEvaluation">切换本地评估</string>
<string name="move">移动</string>
<string name="variantLoss">变种输了</string>
<string name="variantWin">变种赢了</string>
<string name="insufficientMaterial">军队不够</string>
<string name="pawnMove">兵移动</string>
<string name="capture"></string>
<string name="close"></string>
<string name="winning">优胜</string>
<string name="losing">复方</string>
<string name="drawn">和局</string>
<string name="unknown">未知</string>
<string name="database">数据库</string>
<string name="whiteDrawBlack">百/和/黑</string>
<string name="averageRatingX">平均分:%s</string>
<string name="recentGames">最近玩的盘</string>
<string name="topGames">名盘</string>
<plurals name="mateInXHalfMoves">
<item quantity="other">將死还有%s着</item>
</plurals>
<string name="noGameFound">没找到</string>
<string name="openingExplorer">開局瀏覽器</string>
<string name="allSet">好了!</string>
<string name="importPgn">上传PGN</string>
<string name="delete"></string>
<string name="deleteThisImportedGame">删打开的盘?</string>
<string name="byCPL">输了中兵</string>
<string name="cpus">CPUs</string>
<string name="blunders">漏著</string>
<string name="mistakes">錯著</string>
<string name="inaccuracies">失誤</string>
@ -174,6 +201,7 @@
<plurals name="giveNbSeconds">
<item quantity="other">加%s秒</item>
</plurals>
<string name="giveMoreTime">给跟多时间</string>
<string name="thisPlayerUsesChessComputerAssistance">該棋手使用電腦輔助</string>
<string name="thisPlayerArtificiallyIncreasesTheirRating">該棋手偽造等級</string>
<string name="takeback">悔棋</string>
@ -191,6 +219,7 @@
<string name="tournamentPoints">比賽得分</string>
<string name="viewTournament">觀看比賽</string>
<string name="backToTournament">返回比賽</string>
<string name="yourPerfRatingIsTooLow">你的 %1$s 分 (%2$s) 太少了</string>
<string name="backToGame">返回遊戲</string>
<string name="siteDescription">界面清新的免費線上國際象棋平台。不用註冊,沒有廣告,無需插件。快來與電腦、朋友和陌生人一起對戰吧!</string>
<string name="teams">團隊</string>
@ -274,14 +303,26 @@
<string name="createdBy">創建者:</string>
<string name="tournamentIsStarting">錦標賽即將開始</string>
<string name="youArePlaying">你开始玩了</string>
<string name="winRate">赢率</string>
<string name="berserkRate">英雄率</string>
<string name="performance">比赛性能的分:</string>
<string name="tournamentComplete">比赛完了</string>
<string name="movesPlayed">多少圈</string>
<string name="whiteWins">白赢了</string>
<string name="blackWins">黑赢了</string>
<string name="draws">和棋</string>
<string name="averageOpponent">对手的平均分</string>
<string name="membersOnly">只限註冊成員</string>
<string name="boardEditor">棋盤編輯器</string>
<string name="setTheBoard">摆棋</string>
<string name="popularOpenings">明开口</string>
<string name="startPosition">初始局面</string>
<string name="clearBoard">清空棋盤</string>
<string name="savePosition">保存局面</string>
<string name="loadPosition">載入局面</string>
<string name="isPrivate">私人</string>
<string name="reportXToModerators">將%s報告給管理人員</string>
<string name="xRating">%s分</string>
<string name="ifNoneLeaveEmpty">如果没有,请留空</string>
<string name="profile">資料</string>
<string name="editProfile">編輯資料</string>
@ -311,6 +352,7 @@
<string name="keepGoing">繼續……</string>
<string name="puzzleFailed">解題失敗</string>
<string name="butYouCanKeepTrying">但你可以繼續嘗試。</string>
<string name="success">成功</string>
<string name="wasThisPuzzleAnyGood">這道題目好不好?</string>
<string name="pleaseVotePuzzle">按上箭頭鍵或下箭頭鍵投票幫助Lichess改進</string>
<string name="thankYou">謝謝!</string>
@ -374,6 +416,7 @@
<string name="closeAccountExplanation">您確定註銷賬號?此操作不可逆。您將無法再登錄,而您的個人資料也將不可使用。</string>
<string name="thisAccountIsClosed">此帳號已被註銷。</string>
<string name="invalidUsernameOrPassword">賬號名稱或密碼錯誤</string>
<string name="incorrectPassword">密码错了</string>
<string name="emailMeALink">向我電郵鏈接</string>
<string name="currentPassword">當前密碼</string>
<string name="newPassword">新密碼</string>
@ -383,6 +426,7 @@
<string name="boardCoordinates">棋盤坐標AH, 1-8</string>
<string name="moveListWhilePlaying">遊戲進行時顯示棋譜</string>
<string name="chessPieceSymbol">国际象棋件符号</string>
<string name="pgnLetter">字母 K、 Q、 R、 B N</string>
<string name="chessClock">棋鐘</string>
<string name="tenthsOfSeconds">十分之一秒</string>
<string name="never">從不</string>
@ -390,6 +434,9 @@
<string name="horizontalGreenProgressBars">綠色橫進度條</string>
<string name="soundWhenTimeGetsCritical">時間不足時聲音提醒</string>
<string name="gameBehavior">遊戲行為</string>
<string name="clickTwoSquares">点两个位</string>
<string name="dragPiece">拖拉</string>
<string name="bothClicksAndDrag">都行</string>
<string name="premovesPlayingDuringOpponentTurn">預先走棋(在對手的回合走棋)</string>
<string name="takebacksWithOpponentApproval">悔棋(經過對手同意)</string>
<string name="promoteToQueenAutomatically">自動升後</string>
@ -418,11 +465,14 @@
<string name="xAnsweredY">%1$s回答%2$s</string>
<string name="xCommentedY">%1$s 評論%2$s</string>
<string name="victory">成功!</string>
<string name="defeat">输了</string>
<string name="xVsYinZ">%1$s v.s. %2$s: %3$s</string>
<string name="timeline">時間線</string>
<string name="seeAllTournaments">顯示所有比賽</string>
<string name="starting">開始時間:</string>
<string name="allInformationIsPublicAndOptional">所有資料公開選填。</string>
<string name="yourCityRegionOrDepartment">您的城市、區域或省份。</string>
<string name="biographyDescription">写你什么样的人, 你为蛇么喜欢国际象棋, 喜欢的开口, 盘, 棋手。。。</string>
<plurals name="maximumNbCharacters">
<item quantity="other">最多%s個字符</item>
</plurals>
@ -442,6 +492,7 @@
<string name="playOnTheBoardOffline">面對面</string>
<string name="playOfflineComputer">電腦</string>
<string name="opponent">對手</string>
<string name="learnMenu"></string>
<string name="community">社區</string>
<string name="tools">工具</string>
<string name="increment">加秒</string>
@ -454,6 +505,7 @@
<string name="error.email">電郵地址無效</string>
<string name="error.email_acceptable">不接受此電郵地址</string>
<string name="error.email_unique">電郵地址已被使用</string>
<string name="error.email_different">这是你当前的电子邮箱</string>
<string name="blindfoldChess">蒙眼象棋(看不見棋子)</string>
<string name="moveConfirmation">走棋確認</string>
<string name="inCorrespondenceGames">在長期對局中</string>
@ -536,13 +588,20 @@
<string name="youCanAlsoScrollOverTheBoardToMoveInTheGame">您也可以用滾動鍵在棋盤遊戲中移動。</string>
<string name="analysisShapesHowTo">按shift點擊或右鍵棋盤上繪製圓圈和箭頭。</string>
<string name="letOtherPlayersMessageYou">然其他人給你發信息。</string>
<string name="castleByMovingTheKingTwoSquaresOrOntoTheRook">王车易位方法</string>
<string name="castleByMovingTwoSquares">挪王两位</string>
<string name="castleByMovingOntoTheRook">挪王到车上面</string>
<string name="shareYourInsightsData">分享您的慧眼數據</string>
<string name="withNobody">不分享</string>
<string name="withFriends">和朋友分享</string>
<string name="withEverybody">和每个人分享</string>
<string name="youHaveAlreadyRegisteredTheEmail">你已經用《%s》登記過賬戶。</string>
<string name="kidMode">受限模式</string>
<string name="kidModeExplanation">安全第一。在受限模式, 网站的通讯关了。一般保护你的小孩</string>
<string name="enableKidMode">打开受限模式</string>
<string name="disableKidMode">关受限模式</string>
<string name="security">安全保护</string>
<string name="alternativelyYouCanX">或者你可以干 %s。</string>
<string name="playChessEverywhere">隨處下棋!</string>
<string name="asFreeAsLichess">完全又永遠的免費。</string>
<string name="builtForTheLoveOfChessNotMoney">不是為了錢,而是為了棋所創建。</string>
@ -560,11 +619,31 @@
<item quantity="other">%s 種語言!</item>
</plurals>
<string name="gameAnalysis">象棋分析研究</string>
<string name="xLikesY">%1$s喜欢%2$s</string>
<string name="quickPairing">快速配对</string>
<string name="lobby">大堂</string>
<string name="anonymous">匿名</string>
<string name="yourScore">分:%s</string>
<string name="language">语言</string>
<string name="background">背景</string>
<string name="light"></string>
<string name="dark"></string>
<string name="transparent">透明</string>
<string name="boardGeometry">棋盘几何</string>
<string name="boardTheme">棋类型</string>
<string name="boardSize">棋盘大小</string>
<string name="pieceSet">棋子件套</string>
</resources>
<string name="directlySupportLichess">帮助我们</string>
<string name="chessBasics">国际象棋学徒</string>
<string name="coaches">教练</string>
<string name="invalidPgn">PGN错了</string>
<string name="invalidFen">FEN错了</string>
<string name="error.minLength">最小长度:%s</string>
<string name="error.maxLength">最大长度:%s</string>
<string name="error.min">大于等于%s</string>
<string name="error.max">小于等于%s</string>
<string name="error.unknown">错误</string>
<string name="notifications">通知</string>
<string name="challenges">盘问</string>
<string name="perfRatingX">分: %s</string>
</resources>

View File

@ -31,7 +31,13 @@ const advices = [
function playerTable(ctrl: AnalyseCtrl, color: Color): VNode {
const d = ctrl.data;
return h('table', [
return h('table', {
hook: {
insert(vnode) {
window.lichess.powertip.manualUserIn(vnode.elm);
}
}
}, [
h('thead', h('tr', [
h('td', h('i.is.color-icon.' + color)),
h('th', renderPlayer(d, color))

View File

@ -683,7 +683,7 @@ export default class AnalyseCtrl {
else this.chessground && this.chessground.setAutoShapes([]);
}
toggleAutoShapes(v: boolean) {
toggleAutoShapes = (v: boolean): void => {
this.showAutoShapes(v);
this.resetAutoShapes();
}

View File

@ -5,11 +5,11 @@ function ratingAt(title, opt, color) {
return util.fMap(opt, function(r) {
return [
m('h2', [title + ': ', m('strong', color(r.int))]),
util.gameLink(r.gameId, ['reached ', util.date(r.at)])
util.gameLink(r.gameId, util.date(r.at))
];
}, [
m('h2', title + ': '),
m('span.na', util.noData)
m('span', util.noData)
]);
}

View File

@ -11,18 +11,18 @@ function gameLink(id, content) {
}, content);
}
function date(d) {
return m('time', window.lichess.timeago.format(d));
function absDate(d) {
return m('time', window.lichess.timeago.absolute(d));
}
function fromTo(s) {
return fMap(s.from, function(r) {
return [
'from ',
gameLink(r.gameId, date(r.at)),
gameLink(r.gameId, absDate(r.at)),
' to ',
fMap(s.to, function(r) {
return gameLink(r.gameId, date(r.at));
return gameLink(r.gameId, absDate(r.at));
}, 'now')
];
}, m.trust('&nbsp;'));
@ -31,7 +31,7 @@ function fromTo(s) {
module.exports = {
fMap: fMap,
gameLink: gameLink,
date: date,
date: absDate,
showUser: function(u, rating) {
return m('a', {
class: 'ulpt',

View File

@ -77,8 +77,12 @@ lichess.timeago = (function() {
if (!abs) node.innerHTML = formatDiff(diffSec(date));
}
},
// relative
format: function(date) {
return formatDiff(diffSec(date));
},
absolute: function(d) {
return formatter(toDate(d));
}
};
})();