Merge branch 'master' into ScalaEvaluator

* master: (98 commits)
  restore lila logger
  pt "Português" translation #12166. Author: josevitor91. brazilian portuguese
  uk "українська" translation #12164. Author: chesshater.
  ca "Català, valencià" translation #12161. Author: Catalan_player.
  cs "čeština" translation #12151. Author: xslyepov.
  sl "slovenščina" translation #12141. Author: woodswoods. Better translation of some special words.
  tweak logger
  uk "українська" translation #12136. Author: IvTK. a lot of work to do!!!
  ru "русский язык" translation #12119. Author: bishop_rope-dancer. In Russian language is not the word "Мозайка" (the correct word is "Мозаика"). But the best translation into Russian: 319/417 Puzzles = "Головоломки". Please fix it.
  fix japanese translation
  fa "فارسی" translation #12114. Author: ar123.
  sl "slovenščina" translation #12112. Author: woodswoods.
  ja "日本語" translation #12110. Author: hitsujyun.
  ar "العربية" translation #12109. Author: Abd0.
  ar "العربية" translation #12108. Author: Abd0.
  nl "Nederlands" translation #12107. Author: joachimvhw.
  ar "العربية" translation #12106. Author: Abd0.
  pt "Português" translation #12103. Author: BearJr.
  nl "Nederlands" translation #12102. Author: centrumspits.
  nl "Nederlands" translation #12101. Author: bobflob.
  ...
pull/259/head
Thibault Duplessis 2015-01-17 09:57:45 +01:00
commit 922e119ccb
93 changed files with 2036 additions and 276 deletions

View File

@ -1,4 +1,4 @@
Copyright (c) 2012-2014 Thibault Duplessis
Copyright (c) 2012-2015 Thibault Duplessis
The MIT license

View File

@ -356,42 +356,6 @@ This returns the raw PGN for a game.
1. e4 e5 2. Nf3 Nc6 3. Bc4 { Italian Game, General } Qf6?! { (0.13 → 0.98) Inaccuracy. The best move was Nf6. } (3... Nf6 4. d3 Bc5 5. O-O O-O 6. Bg5 Be7 7. a3 d6 8. h3 a6) 4. d3 h6 5. Be3 d6 6. h3?! { (0.84 → 0.31) Inaccuracy. The best move was Nc3. } (6. Nc3 Be6 7. Nd5 Qd8 8. d4 exd4 9. Nxd4 Nxd4 10. Qxd4 c6 11. Nc3 Bxc4 12. Qxc4 Nf6 13. O-O Be7) 6... a6 7. Nbd2 Be6 8. Qe2 Bxc4 9. Nxc4 Nge7 10. a3 Nd4?! { (0.29 → 0.79) Inaccuracy. The best move was O-O-O. } (10... O-O-O 11. O-O g5 12. a4 Bg7 13. Bd2 Kb8 14. Rae1 Qe6 15. b4 f5 16. b5 fxe4) 11. Bxd4 exd4 12. O-O-O Nc6 13. Rhe1 O-O-O 14. e5 dxe5 15. Nfxe5 Nxe5 16. Qxe5 Qxe5? { (0.35 → 1.78) Mistake. The best move was Qxf2. } (16... Qxf2 17. Re2 Qf6 18. Qxf6 gxf6 19. Rf1 Bg7 20. Nd2 h5 21. Ne4 Rhe8 22. Ref2 Re5 23. b3 Rdd5 24. Kb2) 17. Nxe5 Rg8?! { (1.76 → 2.32) Inaccuracy. The best move was Rd7. } (17... Rd7 18. Nxd7 Kxd7 19. Re4 c5 20. c3 dxc3 21. bxc3 Bd6 22. Kc2 b5 23. a4 Ra8 24. d4 Kc6 25. dxc5) 18. Nxf7 Rd7? { (2.35 → Mate in 2) Checkmate is now unavoidable. The best move was Rd5. } (18... Rd5 19. Re8+ Kd7 20. Rde1 Bb4 21. Rxg8 Bxe1 22. Rxg7 Bxf2 23. Nxh6+ Kc6 24. Kd1 Rb5 25. b3 Rh5 26. Nf7) 19. Re8+ { Black resigns } 1-0
```
### `GET /api/puzzle/<id>` fetch one puzzle
```
> curl http://en.lichess.org/api/puzzle/23045
```
```javascript
{
"id": 16177,
"url": "http://lichess.org/training/16177", // URL of the puzzle
"color": "black", // color of the player
"position": "6NK/5k2/2r5/2n3PP/8/8/8/8 w - - 7 39", // FEN initial position
"solution": ["c6h6", "g5h6", "c5e6", "h8h7", "e6g5",
"h7h8", "f7f8", "h6h7", "g5f7"], // solution moves
"rating": 1799 // puzzle glicko2 rating
}
```
### `GET /api/puzzle/daily` fetch daily puzzle
```
> curl http://en.lichess.org/api/puzzle/daily
```
```javascript
{
"id": 16177,
"url": "http://lichess.org/training/16177", // URL of the puzzle
"color": "black", // color of the player
"position": "6NK/5k2/2r5/2n3PP/8/8/8/8 w - - 7 39", // FEN initial position
"solution": ["c6h6", "g5h6", "c5e6", "h8h7", "e6g5",
"h7h8", "f7f8", "h6h7", "g5f7"], // solution moves
"rating": 1799 // puzzle glicko2 rating
}
```
Credits
-------

View File

@ -82,16 +82,30 @@ object Game extends LilaController with BaseGame {
}
def export(user: String) = Auth { implicit ctx =>
me =>
if (me.id == user.toLowerCase) fuccess {
play.api.Logger("export").info(s"$user from ${ctx.req.remoteAddress}")
import org.joda.time.DateTime
import org.joda.time.format.DateTimeFormat
val date = (DateTimeFormat forPattern "yyyy-MM-dd") print new DateTime
Ok.chunked(Env.game export user).withHeaders(
CONTENT_TYPE -> ContentTypes.TEXT,
CONTENT_DISPOSITION -> ("attachment; filename=" + s"lichess_${me.username}_$date.pgn"))
_ =>
Env.security.forms.emptyWithCaptcha map {
case (form, captcha) => Ok(html.game.export(user, form, captcha))
}
}
def exportConfirm(user: String) = AuthBody { implicit ctx =>
me =>
implicit val req = ctx.body
val userId = user.toLowerCase
if (me.id == userId)
Env.security.forms.empty.bindFromRequest.fold(
err => Env.security.forms.anyCaptcha map { captcha =>
BadRequest(html.game.export(userId, err, captcha))
},
_ => fuccess {
play.api.Logger("export").info(s"$user from ${ctx.req.remoteAddress}")
import org.joda.time.DateTime
import org.joda.time.format.DateTimeFormat
val date = (DateTimeFormat forPattern "yyyy-MM-dd") print new DateTime
Ok.chunked(Env.game export userId).withHeaders(
CONTENT_TYPE -> ContentTypes.TEXT,
CONTENT_DISPOSITION -> ("attachment; filename=" + s"lichess_${me.username}_$date.pgn"))
})
else notFound
}
}

View File

@ -18,11 +18,13 @@ object Opening extends LilaController {
private def env = Env.opening
private def identify(opening: OpeningModel) =
env.api.identify(opening.fen, 5)
private def renderShow(opening: OpeningModel)(implicit ctx: Context) =
env userInfos ctx.me zip
(env.api.name find opening.fen) map {
case (infos, names) =>
views.html.opening.show(opening, names, infos, env.AnimationDuration)
env userInfos ctx.me zip identify(opening) map {
case (infos, identified) =>
views.html.opening.show(opening, identified, infos, env.AnimationDuration)
}
private def makeData(
@ -31,10 +33,10 @@ object Opening extends LilaController {
play: Boolean,
attempt: Option[Attempt],
win: Option[Boolean])(implicit ctx: Context): Fu[Result] =
env.api.name find opening.fen map { names =>
identify(opening) map { identified =>
Ok(JsData(
opening,
names,
identified,
infos,
play = play,
attempt = attempt,

View File

@ -62,6 +62,13 @@ object Relation extends LilaController {
}
}
def blocks = Auth { implicit ctx =>
me =>
env.api.blocks(me.id) flatMap followship(me) map { rels =>
html.relation.blocks(me, rels)
}
}
private def followship(user: UserModel)(userIds: Set[String])(implicit ctx: Context): Fu[List[Related]] =
UserRepo byIds userIds flatMap { users =>
(ctx.isAuth ?? { Env.pref.api.followableIds(users map (_.id)) }) flatMap { followables =>

View File

@ -6,6 +6,8 @@ import lila.setup.TimeMode
import lila.api.Context
import lila.tournament.System
import lila.report.Reason
import lila.pref.Pref
import lila.pref.Pref.Difficulty
trait SetupHelper { self: I18nHelper =>
@ -68,4 +70,47 @@ trait SetupHelper { self: I18nHelper =>
}
}, none)
}
def translatedAnimationChoices(implicit ctx: Context) = List(
(Pref.Animation.NONE, trans.none.str()),
(Pref.Animation.FAST, trans.fast.str()),
(Pref.Animation.NORMAL, trans.normal.str()),
(Pref.Animation.SLOW, trans.slow.str())
)
def translatedBoardCoordinateChoices(implicit ctx: Context) = List(
(Pref.Coords.NONE, trans.no.str()),
(Pref.Coords.INSIDE, trans.insideTheBoard.str()),
(Pref.Coords.OUTSIDE, trans.outsideTheBoard.str())
)
def translatedMoveListWhilePlayingChoices(implicit ctx: Context) = List(
(Pref.Replay.NEVER, trans.never.str()),
(Pref.Replay.SLOW, trans.onSlowGames.str()),
(Pref.Replay.ALWAYS, trans.always.str())
)
def translatedTakebackChoices(implicit ctx: Context) = List(
(Pref.Takeback.NEVER, trans.never.str()),
(Pref.Takeback.ALWAYS, trans.always.str()),
(Pref.Takeback.CASUAL, trans.inCasualGamesOnly.str())
)
def translatedAutoQueenChoices(implicit ctx: Context) = List(
(Pref.AutoQueen.NEVER, trans.never.str()),
(Pref.AutoQueen.ALWAYS, trans.always.str()),
(Pref.AutoQueen.PREMOVE, trans.whenPremoving.str())
)
def translatedAutoThreefoldChoices(implicit ctx: Context) = List(
(Pref.AutoThreefold.NEVER, trans.never.str()),
(Pref.AutoThreefold.ALWAYS, trans.always.str()),
(Pref.AutoThreefold.TIME, trans.whenTimeRemainingLessThanThirtySeconds.str())
)
def translatedDifficultyChoices(implicit ctx: Context) = List(
(Pref.Difficulty.EASY, trans.difficultyEasy.str()),
(Pref.Difficulty.NORMAL, trans.difficultyNormal.str()),
(Pref.Difficulty.HARD, trans.difficultyHard.str())
)
}

View File

@ -1,23 +1,22 @@
@(u: User)(implicit ctx: Context)
@title = @{ "%s - close account".format(u.username) }
@title = @{ "%s - ${trans.closeAccount.str()}".format(u.username) }
@account.layout(title = title, active = "close") {
<div class="content_box small_box">
<div class="signup_box">
<h1 class="lichess_title">Close your account</h1>
<h1 class="lichess_title">@trans.closeYourAccount()</h1>
<p class="explanation">
Are you sure you want to close your account? Closing your account is a permanent decision.
You will no longer be able to login, and your profile page will no longer be accessible.
@trans.closeAccountExplanation()
</p>
<form action="@routes.Account.closeConfirm" method="POST">
<br /><br />
<a href="@routes.User.show(u.username)">
I changed my mind, don't close my account
@trans.changedMindDoNotCloseAccount()
</a>
<br /><br />
<br /><br />
<input type="submit" class="submit button" value="Close my account" />
<input type="submit" class="submit button" value="@trans.closeYourAccount()" />
</form>
</div>
</div>

View File

@ -21,7 +21,7 @@
@trans.changeEmail()
</a>
<a class="@active.active("close")" href="@routes.Account.close()">
Close account
@trans.closeAccount()
</a>
}

View File

@ -18,9 +18,9 @@
</h1>
<form action="@routes.Account.passwdApply" method="POST">
<ul>
@account.passwdFormField(form("oldPasswd"), "Current password")
@account.passwdFormField(form("newPasswd1"), "New password")
@account.passwdFormField(form("newPasswd2"), "New password (again)")
@account.passwdFormField(form("oldPasswd"), trans.currentPassword.str())
@account.passwdFormField(form("newPasswd1"), trans.newPassword.str())
@account.passwdFormField(form("newPasswd2"), trans.newPasswordAgain.str())
<li>
@errMsg(form)
</li>

View File

@ -14,90 +14,90 @@
<ul>
<li>
<h2>@trans.pieceAnimation()</h2>
@base.radios(form("animation"), Pref.Animation.choices)
@base.radios(form("animation"), translatedAnimationChoices)
</li>
<li>
<h2>@trans.materialDifference()</h2>
@base.radios(form("captured"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</li>
<li>
<h2>Board highlights (last move and check)</h2>
<h2>@trans.boardHighlights()</h2>
@base.radios(form("highlight"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</li>
<li>
<h2>Piece destinations (valid moves and premoves)</h2>
<h2>@trans.pieceDestinations()</h2>
@base.radios(form("destination"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</li>
<li>
<h2>Board coordinates (A-H, 1-8)</h2>
@base.radios(form("coords"), Pref.Coords.choices)
<h2>@trans.boardCoordinates()</h2>
@base.radios(form("coords"), translatedBoardCoordinateChoices)
</li>
<li>
<h2>Move list while playing</h2>
@base.radios(form("replay"), Pref.Replay.choices)
<h2>@trans.moveListWhilePlaying()</h2>
@base.radios(form("replay"), translatedMoveListWhilePlayingChoices)
</li>
</ul>
</fieldset>
<fieldset>
<legend>Chess clock</legend>
<legend>@trans.chessClock()</legend>
<ul>
<li>
<h2>Tenths of seconds</h2>
@base.radios(form("clockTenths"), Seq(0 -> "Never", 1 -> "When time remaining < 10 seconds"))
<h2>@trans.tenthsOfSeconds()</h2>
@base.radios(form("clockTenths"), Seq(0 -> trans.never.str(), 1 -> trans.whenTimeRemainingLessThanTenSeconds.str()))
</li>
<li>
<h2>Horizontal green progress bars</h2>
<h2>@trans.horizontalGreenProgressBars()</h2>
@base.radios(form("clockBar"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</li>
<li>
<h2>Sound when time gets critical</h2>
<h2>@trans.soundWhenTimeGetsCritical()</h2>
@base.radios(form("clockSound"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</li>
</ul>
</fieldset>
<fieldset>
<legend>Game behavior</legend>
<legend>@trans.gameBehavior()</legend>
<ul>
<li>
<h2>Premoves (playing during opponent turn)</h2>
<h2>@trans.premovesPlayingDuringOpponentTurn()</h2>
@base.radios(form("premove"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</li>
<li>
<h2>Takebacks (with opponent approval)</h2>
@base.radios(form("takeback"), Pref.Takeback.choices)
<h2>@trans.takebacksWithOpponentApproval()</h2>
@base.radios(form("takeback"), translatedTakebackChoices)
</li>
<li>
<h2>Promote to Queen automatically</h2>
@base.radios(form("autoQueen"), Pref.AutoQueen.choices)
<h2>@trans.promoteToQueenAutomatically()</h2>
@base.radios(form("autoQueen"), translatedAutoQueenChoices)
</li>
<li>
<h2>Claim draw on <a href="http://en.wikipedia.org/wiki/Threefold_repetition">threefold repetition</a> automatically</h2>
@base.radios(form("autoThreefold"), Pref.AutoThreefold.choices)
<h2>@trans.claimDrawOnThreefoldRepetitionAutomatically("<a href=\"http://en.wikipedia.org/wiki/Threefold_repetition\">", "</a>")</h2>
@base.radios(form("autoThreefold"), translatedAutoThreefoldChoices)
</li>
</ul>
</fieldset>
<fieldset>
<legend>Privacy</legend>
<legend>@trans.privacy()</legend>
<ul>
<li>
<h2>Let other players follow you</h2>
<h2>@trans.letOtherPlayersFollowYou()</h2>
@base.radios(form("follow"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</li>
<li>
<h2>Let other players challenge you</h2>
<h2>@trans.letOtherPlayersChallengeYou()</h2>
@base.radios(form("challenge"), Pref.Challenge.choices)
</li>
</ul>
</fieldset>
<fieldset>
<legend>Sound</legend>
<legend>@trans.sound()</legend>
<ul>
<li>
The sound control is in the top bar of every page, on the right side.
@trans.soundControlInTheTopBarOfEveryPage()
</li>
</ul>
</fieldset>
<p data-icon="E"> Your preferences have been saved.</p>
<p data-icon="E"> @trans.yourPreferencesHaveBeenSaved()</p>
</form>
</div>
</div>

View File

@ -10,7 +10,7 @@
<div class="content_box small_box">
<div class="signup_box">
<h1 class="lichess_title">@trans.editProfile()</h1>
<p>All information is public and optional.</p>
<p>@trans.allInformationIsPublicAndOptional()</p>
<form action="@routes.Account.profileApply" method="POST">
<ul>
<li class="field">
@ -20,13 +20,13 @@
<li class="field">
<label for="@form("location").id">@trans.location()</label>
@base.input(form("location"))
<p class="help">Your city, region, or department.</p>
<p class="help">@trans.yourCityRegionOrDepartment()</p>
</li>
<li class="field">
<label for="@form("bio").id">@trans.biography()</label>
<textarea name="@form("bio").name" id="@form("bio").id" cols="25" rows="7">@form("bio").value</textarea>
<p class="help">Tell about you, what you like in chess, your favorite openings, games, players&#8230;</p>
<p class="help">Maximum: 400 characters.</p>
<p class="help">@trans.biographyDescription()</p>
<p class="help">@trans.maximumNbCharacters(400)</p>
</li>
<li class="field">
<label for="@form("firstName").id">@trans.firstName()</label>

View File

@ -115,13 +115,13 @@ openGraph = povOpenGraph(pov)) {
}.getOrElse {
@if(analysis.isEmpty) {
<form class="future_game_analysis@if(ctx.isAnon) { must_login }" action="@routes.Analyse.requestAnalysis(gameId)" method="post">
<button type="submit" class="button"><span class="is3" data-icon="A"> @trans.requestAComputerAnalysis()</span></button>
<button type="submit" class="button text"><span class="is3 text" data-icon="^">@trans.requestAComputerAnalysis()</span></button>
</form>
}
}
<div class="view_game_analysis future_game_analysis" data-href="@routes.Round.watcher(pov.gameId, pov.color.name)">
<a class="button" href="@routes.Round.watcher(pov.gameId, pov.color.name)">
<span class="is3" data-icon="A"> @trans.viewTheComputerAnalysis()</span>
<span class="is3 text" data-icon="^">@trans.viewTheComputerAnalysis()</span>
</a>
</div>
</div>
@ -172,7 +172,7 @@ openGraph = povOpenGraph(pov)) {
@analysis.filter(_.old && ctx.isAuth).map { a =>
<form class="better_analysis" action="@routes.Analyse.betterAnalysis(gameId, color.name)" method="post">
<button type="submit" class="button">
<span class="is3" data-icon="A"> Request a better computer analysis</span>
<span class="is3 text" data-icon="^">Request a better computer analysis</span>
</button>
</form>
}

View File

@ -29,7 +29,7 @@ zen = true) {
</li>
@errMsg(form)
<li>
<button type="submit" class="submit button" data-icon="F"> Email me a link</button>
<button type="submit" class="submit button" data-icon="F"> @trans.emailMeALink()</button>
</li>
</ul>
</form>

View File

@ -14,7 +14,7 @@ data: @Html(play.api.libs.json.Json.stringify(data)),
routes: roundRoutes.controllers,
i18n: @round.jsI18n()
};
lichess.user_analysis.data.inGame = true;
lichess.user_analysis.data.inGame = @pov.isDefined;
}
}

View File

@ -22,7 +22,7 @@
<td class="last_post">
@categ.lastPost.map {
case (topic, post, page) => {
<a href="@routes.ForumTopic.show(categ.slug, topic.slug, page)#@post.number">@momentFromNow(post.createdAt)</a><br />by @Html(authorName(post))
<a href="@routes.ForumTopic.show(categ.slug, topic.slug, page)#@post.number">@momentFromNow(post.createdAt)</a><br />@trans.by(Html(authorName(post)))
}
}
</td>

View File

@ -0,0 +1,22 @@
@(userId: String, form: Form[_], captcha: lila.common.Captcha)(implicit ctx: Context)
@auth.layout(
title = trans.exportGames.str(),
zen = true) {
<div class="content_box small_box signup">
<div class="signup_box">
<h1 class="lichess_title">@trans.exportGames()</h1>
<form action="@routes.Game.exportConfirm(userId)" method="POST">
<ul>
<li>
@base.captcha(form("move"), form("gameId"), captcha)
</li>
@errMsg(form)
<li>
<button type="submit" class="text submit button" data-icon="F">@trans.exportGames()</button>
</li>
</ul>
</form>
</div>
</div>
}

View File

@ -83,7 +83,7 @@
<br /><br />
}
<div class="metadata">
@if(g.metadata.analysed) {<span data-icon="A"> Computer analysis available</span><br />}
@if(g.metadata.analysed) {<span data-icon="^"> Computer analysis available</span><br />}
@g.pgnImport.flatMap(_.user).map { user =>
PGN import by @userIdLinkMini(user)<br />
}

View File

@ -78,7 +78,7 @@ openGraph = Map(
}
<div class="open_tournaments undertable">
<div class="undertable_top">
<a class="more hint--bottom" data-hint="See all tournaments" href="@routes.Tournament.home()">@trans.more() »</a>
<a class="more hint--bottom" data-hint="@trans.seeAllTournaments()" href="@routes.Tournament.home()">@trans.more() »</a>
<span class="title"> @trans.openTournaments()</span>
</div>
<div id="enterable_tournaments" class="undertable_inner scroll-shadow-hard">

View File

@ -12,7 +12,7 @@ object JsData extends lila.Steroids {
def apply(
opening: Opening,
names: List[String],
identified: List[Identified],
userInfos: Option[lila.opening.UserInfos],
play: Boolean,
attempt: Option[Attempt],
@ -35,7 +35,11 @@ object JsData extends lila.Steroids {
"quality" -> quality.name)
}),
"url" -> s"$netBaseUrl${routes.Opening.show(opening.id)}",
"names" -> names
"identified" -> identified.map { ident =>
Json.obj(
"name" -> ident.name,
"moves" -> ident.moves)
}
),
"animation" -> Json.obj(
"duration" -> ctx.pref.animationFactor * animationDuration.toMillis

View File

@ -1,4 +1,4 @@
@(opening: lila.opening.Opening, names: List[String], userInfos: Option[lila.opening.UserInfos], animationDuration: scala.concurrent.duration.Duration)(implicit ctx: Context)
@(opening: lila.opening.Opening, identified: List[lila.opening.Identified], userInfos: Option[lila.opening.UserInfos], animationDuration: scala.concurrent.duration.Duration)(implicit ctx: Context)
@evenMoreJs = {
@helper.javascriptRouter("openingRoutes")(
@ -6,7 +6,7 @@
@embedJs {
LichessOpening(
document.querySelector('#lichess .round'),
@JsData(opening, names, userInfos, play = true, attempt = none, win = none, animationDuration = animationDuration),
@JsData(opening, identified, userInfos, play = true, attempt = none, win = none, animationDuration = animationDuration),
openingRoutes.controllers,
@Html(J.stringify(i18nJsObject(
trans.training,
@ -33,7 +33,10 @@ trans.thisMoveGivesYourOpponentTheAdvantage,
trans.analysis,
trans.puzzles,
trans.coordinates,
trans.openings
trans.openings,
trans.continueFromHere,
trans.playWithTheMachine,
trans.playWithAFriend
)))
);
}

View File

@ -70,7 +70,7 @@ object JsData extends lila.Steroids {
},
"difficulty" -> ctx.isAuth.option {
Json.obj(
"choices" -> JsArray(lila.pref.Pref.Difficulty.choices.map {
"choices" -> JsArray(translatedDifficultyChoices.map {
case (k, v) => Json.arr(k, v)
}),
"current" -> ctx.pref.puzzleDifficulty

View File

@ -0,0 +1,12 @@
@(u: User, users: List[lila.relation.Related])(implicit ctx: Context)
@user.layout(title = u.username + " - " + trans.blocks(users.size)) {
<div class="content_box no_padding">
<h1>
@userLink(u, withOnline = false)
@trans.blocks(users.size)
</h1>
@user.simpleTable(users)
</div>
}

View File

@ -17,19 +17,19 @@ case ForumPost(userId, topicName, postId) => {
@trans.xPostedInForumY(userIdLink(userId.some, withOnline = false), """<a href="%s">&nbsp;%s</a>""".format(routes.ForumPost.redirect(postId), shorten(topicName, 30)))
}
case NoteCreate(fromId, toId) => {
@userIdLink(fromId.some, withOnline = false) left a note on @userIdLink(toId.some, withOnline = false, params = "?note")
@trans.xLeftANoteOnY(userIdLink(fromId.some, withOnline = false), userIdLink(toId.some, withOnline = false, params = "?note"))
}
case TourJoin(userId, tourId, tourName) => {
@userIdLink(userId.some, withOnline = false) competes in <a href="@routes.Tournament.show(tourId)">@tourName</a>
@trans.xCompetesInY(userIdLink(userId.some, withOnline = false), """<a href="%s">%s</a>""".format(routes.Tournament.show(tourId), tourName))
}
case QaQuestion(userId, id, title) => {
@userIdLink(userId.some, withOnline = false) asked <a href="@routes.QaQuestion.show(id, "redirect")">@title</a>
@trans.xAskedY(userIdLink(userId.some, withOnline = false), """<a href="%s">%s</a>""".format(routes.QaQuestion.show(id, "redirect"), title))
}
case QaAnswer(userId, id, title, answerId) => {
@userIdLink(userId.some, withOnline = false) answered <a href="@routes.QaQuestion.show(id, "redirect")#answer-@answerId">@title</a>
@trans.xAnsweredY(userIdLink(userId.some, withOnline = false), """<a href="%s#answer-%s">%s</a>""".format(routes.QaQuestion.show(id, "redirect"), answerId, title))
}
case QaComment(userId, id, title, commentId) => {
@userIdLink(userId.some, withOnline = false) commented <a href="@routes.QaQuestion.show(id, "redirect")#comment-@commentId">@title</a>
@trans.xCommentedY(userIdLink(userId.some, withOnline = false), """<a href="%s#comment-%s">%s</a>""".format(routes.QaQuestion.show(id, "redirect"), commentId, title))
}
}
@momentFromNow(e.date)

View File

@ -1,6 +1,6 @@
@(entries: List[lila.timeline.Entry])(implicit ctx: Context)
@base.layout(title = "Timeline") {
@base.layout(title = trans.timeline.str()) {
<style type="text/css">
#timeline_more td {
padding: 1em 25px;
@ -19,7 +19,7 @@
}
</style>
<div id="timeline_more" class="content_box small_box no_padding">
<h1>Timeline</h1>
<h1>@trans.timeline()</h1>
<table class="datatable"><tbody>
@entries.map { e =>
<tr>

View File

@ -2,6 +2,7 @@
@Html(J.stringify(i18nJsObject(
trans.standing,
trans.isPrivate,
trans.starting,
trans.tournamentIsStarting,
trans.tournamentPoints,
trans.viewTournament,

View File

@ -8,7 +8,7 @@ robots = false) {
<h1 class="lichess_title">@u.username</h1>
</div>
<div class="content_box_content clearfix">
This account is closed.
@trans.thisAccountIsClosed()
</div>
</div>
}

View File

@ -115,6 +115,9 @@ openGraph = Map(
<a class="button hint--bottom-left" href="@routes.Account.profile" data-hint="@trans.editProfile()">
<span data-icon="%"></span>
</a>
<a class="button hint--bottom-left" href="@routes.Relation.blocks" data-hint="@trans.listBlockedPlayers()">
<span data-icon="k"></span>
</a>
}
@if(isGranted(_.UserSpy)) {
<a class="button mod_zone_toggle hint--bottom-left" href="@routes.User.mod(u.username)" data-hint="Mod zone"><span data-icon="n"></span></a>

View File

@ -336,8 +336,6 @@ replyToThisTopic=Reply to this topic
reply=Reply
message=Message
createTheTopic=Create the topic
reopenTheTopic=Reopen the topic
closeTheTopic=Close the topic
reportAUser=Report a user
user=User
reason=Reason
@ -360,3 +358,62 @@ typePrivateNotesHere=Type private notes here
gameDisplay=Game display
pieceAnimation=Piece animation
materialDifference=Material difference
closeAccount=Close account
closeYourAccount=Close your account
changedMindDoNotCloseAccount=I changed my mind, don't close my account
closeAccountExplanation=Are you sure you want to close your account? Closing your account is a permanent decision. You will no longer be able to login, and your profile page will no longer be accessible.
thisAccountIsClosed=This account is closed.
invalidUsernameOrPassword=Invalid username or password
emailMeALink=Email me a link
currentPassword=Current password
newPassword=New password
newPasswordAgain=New password (again)
boardHighlights=Board highlights (last move and check)
pieceDestinations=Piece destinations (valid moves and premoves)
boardCoordinates=Board coordinates (A-H, 1-8)
moveListWhilePlaying=Move list while playing
chessClock=Chess clock
tenthsOfSeconds=Tenths of seconds
never=Never
whenTimeRemainingLessThanTenSeconds=When time remaining < 10 seconds
horizontalGreenProgressBars=Horizontal green progress bars
soundWhenTimeGetsCritical=Sound when time gets critical
gameBehavior=Game behavior
premovesPlayingDuringOpponentTurn=Premoves (playing during opponent turn)
takebacksWithOpponentApproval=Takebacks (with opponent approval)
promoteToQueenAutomatically=Promote to Queen automatically
claimDrawOnThreefoldRepetitionAutomatically=Claim draw on %sthreefold repetition%s automatically
privacy=Privacy
letOtherPlayersFollowYou=Let other players follow you
letOtherPlayersChallengeYou=Let other players challenge you
sound=Sound
soundControlInTheTopBarOfEveryPage=The sound control is in the top bar of every page, on the right side.
yourPreferencesHaveBeenSaved=Your preferences have been saved.
none=None
fast=Fast
normal=Normal
slow=Slow
insideTheBoard=Inside the board
outsideTheBoard=Outside the board
onSlowGames=On slow games
always=Always
inCasualGamesOnly=In casual games only
whenPremoving=When premoving
whenTimeRemainingLessThanThirtySeconds=When time remaining < 30 seconds
difficultyEasy=Easy
difficultyNormal=Normal
difficultyHard=Hard
xLeftANoteOnY=%s left a note on %s
xCompetesInY=%s competes in %s
xAskedY=%s asked %s
xAnsweredY=%s answered %s
xCommentedY=%s commented %s
timeline=Timeline
seeAllTournaments=See all tournaments
starting=Starting:
allInformationIsPublicAndOptional=All information is public and optional.
yourCityRegionOrDepartment=Your city, region, or department.
biographyDescription=Tell about you, what you like in chess, your favorite openings, games, players…
maximumNbCharacters=Maximum: %s characters.
blocks=%s blocks
listBlockedPlayers=List players that you have blocked

View File

@ -85,6 +85,7 @@ password=Wagwoord
haveAnAccount=Klaar geregistreer?
allYouNeedIsAUsernameAndAPassword=Dis vinnig, jy't net 'n gebruiker-naam en wagwoord nodig.
changePassword=Verander wagwoord
forgotPassword=vergeet my waagword
learnMoreAboutLichess=Leer meer oor Lichess
rank=Vlak
gamesPlayed=Gespeel
@ -246,3 +247,6 @@ watchLichessTV=Kyk Lichess TV
previouslyOnLichessTV=Voorigekeer op Lichess TV
todaysLeaders=Vandag se voorloopers
onlinePlayers=Online Speelers
progressToday=vordering vandag
progressThisWeek=vorder hierdie week
progressThisMonth=vorder hierdie maand

View File

@ -127,13 +127,13 @@ mode=النمط
casual=غير مقيّمة
rated=مقيّمة
thisGameIsRated=هذه المبارة مقيّمة
rematch=إعادة المبارة
rematchOfferSent=تم إرسال عرض مباراة ثانية
rematchOfferAccepted=تم قبول عرض المباراة الثانية
rematch=إعادة اللعب
rematchOfferSent=تم إرسال عرض إعادة اللعب
rematchOfferAccepted=تم قبول عرض إعادة اللعب
rematchOfferCanceled=تم إلغاء عرض إعادة اللعب
rematchOfferDeclined=تم رفض عرض إعادة اللعب
cancelRematchOffer=إلغاء عرض إعادة اللعب
viewRematch=مشاهدة إعادة المباراة
viewRematch=مشاهدة إعادة اللعب
play=إلعب
inbox=صندوق الرسائل
chatRoom=غرفة الدردشة
@ -149,10 +149,10 @@ spectators=المتفرجون
nbWins=%s ربح
nbLosses=%s خسر
nbDraws=%s تعادل
exportGames=تصدير اللعب
exportGames=تصديراللعبات
ratingRange=تصنيف Elo
giveNbSeconds=اعطاء %s ثوان
premoveEnabledClickAnywhereToCancel=لديك نقلة مسبقة"اضغط في أي مكان للإلغاء"
giveNbSeconds=اعطاء %s ثانية
premoveEnabledClickAnywhereToCancel=لديك نقلة إستباقية" اضغط في أي مكان للإلغاء"
thisPlayerUsesChessComputerAssistance=هذا اللاعب يستعين ببرامج شطرنج
opening=افتتاحية
takeback=تراجع عن النقلة
@ -165,11 +165,11 @@ yourOpponentProposesATakeback=خصمك يقترح تراجع عن النقلة
bookmarkThisGame=أضف هذه اللعبة للمفضلة
search=بحث
advancedSearch=بحث متقدم
tournament=بطولة
tournaments=بطولات
tournamentPoints=نقاط البطولة
viewTournament=شاهد البطولة
backToTournament=عودة الى البطولة
tournament=مسابقة
tournaments=مسابقات
tournamentPoints=نقاط المسابقة
viewTournament=شاهد المسابقة
backToTournament=عودة الى المسابقة
backToGame=العودة للعبة
freeOnlineChessGamePlayChessNowInACleanInterfaceNoRegistrationNoAdsNoPluginRequiredPlayChessWithComputerFriendsOrRandomOpponents=.لعبة شطرنج اون لاين مجانية. العب شطرنج الآن بواجهة نظيفه. لا تسجيل. لا دعايات. لا حاجه لوجود أي إضافات. العب الشطرنج مع الحاسوب، أو مع أصدقائك أو مع خصم عشوائي.
teams=الفِرق
@ -236,7 +236,7 @@ required=مطلوب
openTournaments=المسابقات المفتوحة
duration=المدة
winner=الفائز
standing=المكانه
standing=المكانة
createANewTournament=أنشئ مسابقة جديدة
join=انضم
withdraw=انسحب
@ -245,14 +245,14 @@ wins=الفوز
losses=الخسارة
winStreak=فوز متتالي
createdBy=أُنشئت بواسطة
waitingForNbPlayers=بانتظار %s لاعبين
waitingForNbPlayers=بانتظار %s لاعب
tournamentIsStarting=المسابقة بدأت
membersOnly=للأعضاء فقط
boardEditor=محرر الرقعه
startPosition=وضع البدايه
clearBoard=مسح الرقعه
savePosition=تخزين الوضعية
loadPosition=موقف الحمل
loadPosition=تحميل وضعية
isPrivate=خاص
reportXToModerators=التبليغ عن %s
profile=الملف الشخصي
@ -262,8 +262,8 @@ lastName=اللقب
biography=نبذة عن الشخصية
country=البلد
preferences=خیارات
watchLichessTV=تفرج على Lichess TV
previouslyOnLichessTV=سابقا على Liches TV
watchLichessTV=شاهد Lichess TV
previouslyOnLichessTV=سابقاً على Liches TV
todaysLeaders=قياديي اليوم
onlinePlayers=لاعبين على الشبكة
progressToday=تقدم اليوم
@ -316,3 +316,102 @@ thisMoveGivesYourOpponentTheAdvantage=هذه النقلة تعطي خصمك ال
openingFailed=خسرت الإفتتاحية
openingSolved=ربحت الإفتتاحية
recentlyPlayedOpenings=إفتتاحيات تم لعبها مؤخراً
puzzles=ألغاز
coordinates=إحداثيات
openings=إفتتاحيات
latestUpdates=آخر التحديثات
tournamentWinners=فائزوا المسابقة
name=الإسم
description=الوصف
no=لا
yes=نعم
help=مساعدة:
createANewTopic=أنشئ موضوع جديد
topics=المواضيع
posts=المنشورات
lastPost=آخر منشور
views=المشاهدات
replies=الردود
replyToThisTopic=رد على هذا الموضوع
reply=رد
message=الرسالة
createTheTopic=أنشىء الموضوع
reportAUser=إخبار عن مستخدم
user=المستخدم
reason=السبب
whatIsIheMatter=ماهي المشكلة؟
cheat=غش
insult=إهانة
troll=تلاعب
other=أخرى
reportDescriptionHelp=ألصق رابط اللعبة/اللعب واشرح ماهو الخطأ في سلوك هذا المستخدم
by=بواسطة %s
thisTopicIsNowClosed=هذا الموضوع مغلق الآن
theming=السمات
donate=التبرع
blog=المدونة
map=الخريطة
realTimeWorldMapOfChessMoves=خريطة عالمية آنية لتفاعلات الشطرنج
questionsAndAnswers=أسئلة و أجوبة
notes=ملاحظات
typePrivateNotesHere=أكتب ملاحظات خاصة هنا
gameDisplay=عرض اللعبة
pieceAnimation=الرسم الحركي للقطعة
materialDifference=الفرق المادي
closeAccount=إغلاق الحساب
closeYourAccount=أغلق حسابك
changedMindDoNotCloseAccount=لقد غيّرت رأيي, لاتغلق حسابي
closeAccountExplanation=هل أنت متأكد أنك تريد إغلاق حسابك؟ إن إغلاق حسابك هو قرار نهائي. فلن تكون قادراً على الدخول مرة أخرى, ولايمكنك الوصول لصفحة حسابك بعد الآن.
thisAccountIsClosed=هذا الحساب مغلق.
invalidUsernameOrPassword=إسم المستخدم أو كلمة المرور غير صحيح
emailMeALink=أرسل الرابط لي عبر الإيميل
currentPassword=كلمة المرور الحالية
newPassword=كلمة المرور الجديدة
newPasswordAgain=كلمة المرور الجديدة (إعادة)
boardHighlights=تلوين اللوح (آخر نقلة والقطعة المراد تحريكها)
pieceDestinations=وجهات القطعة ( النقلات المتاحة والنقلات الإستباقية)
boardCoordinates=إحداثيات اللوح (A-H, 1-8)
moveListWhilePlaying=لائحة النقلات خلال اللعب
chessClock=ساعة الشطرنج
tenthsOfSeconds=عشر ثوانٍ
never=أبداً
whenTimeRemainingLessThanTenSeconds=عندما يكون الوقت المتبقي أقل من 10 ثوانٍ
horizontalGreenProgressBars=الشريط الأخضر الأفقي للتقدم
soundWhenTimeGetsCritical=الصوت عندما يقارب الوقت على الإنتهاء
gameBehavior=سلوكيات اللعبة
premovesPlayingDuringOpponentTurn=النقلات الإستباقية (اللعب خلال دور الخصم)
takebacksWithOpponentApproval=التراجع عن النقلات (بموافقة الخصم)
promoteToQueenAutomatically=الترقية إلى وزير آلياً
claimDrawOnThreefoldRepetitionAutomatically=إعلان التعادل آلياً عند التكرار الثلاثي %sthreefold repetition%s
privacy=الخصوصية
letOtherPlayersFollowYou=اسمح للّاعبين الآخرين بمتابعتك
letOtherPlayersChallengeYou=اسمح للّاعبين الآخرين بأن يتحدوك
sound=الصوت
soundControlInTheTopBarOfEveryPage=متحكم الصوت موجود في الشرط العلوي في كل صفحة, على الجانب الأيمن.
yourPreferencesHaveBeenSaved=تم حفظ تفضيلاتك.
none=لاشئ
fast=سريع
normal=عادي
slow=بطيء
insideTheBoard=داخل اللوح
outsideTheBoard=خارج اللوح
onSlowGames=في اللعبات البطيئة
always=دائماً
inCasualGamesOnly=في اللعبات غير المقيمة فقط
whenPremoving=عند الحركة الإستباقية
whenTimeRemainingLessThanThirtySeconds=عندما يكون الوقت المتبقي أقل من 30 ثانية
difficultyEasy=سهل
difficultyNormal=عادي
difficultyHard=صعب
xLeftANoteOnY=ترك %s ملاحظة على %s
xCompetesInY=%s تنافس في %s
xAskedY=%s سأل %s
xAnsweredY=%s أجاب %s
xCommentedY=%s علّق %s
timeline=الخط الزمني
seeAllTournaments=شاهد كل المسابقات
starting=تبدأ خلال:
allInformationIsPublicAndOptional=كل المعلومات متاحة للجميع وهي إختيارية.
yourCityRegionOrDepartment=مدينتك, منطقتك. أو المقاطعة.
biographyDescription=أخبر عن نفسك, ماذا تحب في الشطرنج, ماذا تفضل من الإفتتاحيات, اللعبات, اللاعبين....
maximumNbCharacters=الحد الأقصى: %s حرف.

View File

@ -316,3 +316,15 @@ thisMoveGivesYourOpponentTheAdvantage=Bu gediş rəqibinə üstünlük verir
openingFailed=Uğursuz başlanğıc
openingSolved=Həll olunmuş başlanğıc
recentlyPlayedOpenings=Oynanmış son başlanğıclar
puzzles=Puzzlelar
coordinates=Kordinatlar
openings=Açılışlar
latestUpdates=Son yeniliklər
tournamentWinners=Turnirin qalibləri
name=Komanda adı
description=Təsvir
no=Hayır
yes=Evət
help=Yardım
createANewTopic=Yeni mövzu yarat
topics=Mövzular

View File

@ -316,3 +316,45 @@ thisMoveGivesYourOpponentTheAdvantage=Ovaj potez daje prednost vašem protivniku
openingFailed=Neuspješno riješeno otvaranje
openingSolved=Uspješno riješeno otvaranje
recentlyPlayedOpenings=Nedavno odigrana otvaranja
puzzles=Slagalice
coordinates=Koordinate
openings=Otvaranja
latestUpdates=Najnovija ažuriranja
tournamentWinners=Pobjednici turnira
name=Ime
description=Opis
no=Ne
yes=Da
help=Pomoć:
createANewTopic=Napravi novu temu
topics=Teme
posts=Postovi
lastPost=Zadnji post
views=Pregledi
replies=Odgovori
replyToThisTopic=Odgovor za ovu temu
reply=Odgovor
message=Poruka
createTheTopic=Napravi temu
reportAUser=Prijavi korisnika
user=Korisnik
reason=Razlog
whatIsIheMatter=Šta se desilo?
cheat=Varanje
insult=Uvreda
troll=Mamljenje
other=Ostalo
reportDescriptionHelp=Zalijepiti link za igru (e) i objasniti šta je pogrešno u ponašanju ovog korisnika.
by=od %s
thisTopicIsNowClosed=Ova tema je sada zatvorena.
theming=Izgled
donate=Donacija
blog=Blog
map=Karta
realTimeWorldMapOfChessMoves=Realno vrijeme šahovskih poteza na karti svijeta
questionsAndAnswers=Pitanja i odgovori
notes=Bilješke
typePrivateNotesHere=Ovdje upiši ličnu bilješku
gameDisplay=Prikaz igre
pieceAnimation=Animacija figura
materialDifference=Razlika materijala

View File

@ -358,3 +358,54 @@ typePrivateNotesHere=Escriu notes privades aquí
gameDisplay=Display del joc
pieceAnimation=Animació de les peces
materialDifference=Diferència de material
closeAccount=Tancar el compte
closeYourAccount=Tanca el teu compte
changedMindDoNotCloseAccount=He canviat d'opinió, no vull tancar el meu compte
closeAccountExplanation=Estàs segur que vols tancar el teu compte? Tancar-lo és una decisió permanent. Ja no podràs iniciar la sessió, i la teva pàgina de perfil no serà accessible.
thisAccountIsClosed=Aquest compte està tancat
invalidUsernameOrPassword=Nom d'usuari o contrasenya incorrectes
emailMeALink=Envieu-me per correu electrònic un enllaç
currentPassword=Contrasenya actual
newPassword=Nova contrasenya
newPasswordAgain=Nova contrasenya (de nou)
boardHighlights=Llums del tauler (últim moviment i escac)
pieceDestinations=Destinacions de la peça (moviments vàlids i moviments anticipats)
boardCoordinates=Coordenades del tauler (A-H, 1-8)
moveListWhilePlaying=Moure llista durant la partida
chessClock=Rellotge d'escacs
tenthsOfSeconds=Dècimes de segon
never=Mai
whenTimeRemainingLessThanTenSeconds=Quan restin menys de 10 segons
horizontalGreenProgressBars=Barres horitzontals verdes de temps
soundWhenTimeGetsCritical=Que soni quan quedi poc temps
gameBehavior=Comportament del joc
premovesPlayingDuringOpponentTurn=Moviments anticipats (moure durant el torn de l'oponent)
promoteToQueenAutomatically=Corona la Dama automàticament
claimDrawOnThreefoldRepetitionAutomatically=Reclama l'empat en %s repeticions, automàticament
privacy=Intimitat
letOtherPlayersFollowYou=Deixa que altres jugadors et segueixin
letOtherPlayersChallengeYou=Deixa que altres jugadors et reptin
sound=So
soundControlInTheTopBarOfEveryPage=El control de so es troba a la barra superior de cada pàgina, a la part dreta
yourPreferencesHaveBeenSaved=Les teves preferències s'han desat
none=Cap
fast=Ràpid
normal=Normal
slow=Lent
insideTheBoard=Dins del tauler
outsideTheBoard=Fora del tauler
onSlowGames=En els jocs lents
always=Sempre
inCasualGamesOnly=Només en els jocs amistosos
whenTimeRemainingLessThanThirtySeconds=Quan restin < 30 segons
difficultyEasy=Fàcil
difficultyNormal=Normal
difficultyHard=Dur
xLeftANoteOnY=%s ha deixat una nota a %s
timeline=Cronologia
seeAllTournaments=Veure tots els tornejos
starting=Començant
allInformationIsPublicAndOptional=Tota la informació és pública i opcional
yourCityRegionOrDepartment=La teva ciutat, comarca o regió
biographyDescription=Parla sobre tu, què t'agrada dels escacs, les teves obertures preferides, jocs, jugadors ...
maximumNbCharacters=Màxim: %s caràcters

View File

@ -316,3 +316,8 @@ thisMoveGivesYourOpponentTheAdvantage=Tento tah dá přebahu tvému soupeři
openingFailed=Zahájení bylo neúspěšné
openingSolved=Zahájení vyřešeno
recentlyPlayedOpenings=Posledně hraná zahájení
puzzles=Puzzle
openings=Zahájení
latestUpdates=Poslední upgrait
tournamentWinners=Vítěz turnaje
name=Jméno

View File

@ -316,3 +316,17 @@ thisMoveGivesYourOpponentTheAdvantage=Dette trekket gir motstanderen fordel
openingFailed=Åpningen mislykket
openingSolved=Åpningen løst
recentlyPlayedOpenings=Nylig spilte åpninger
openings=Åbninger
tournamentWinners=Turneringsvindere
name=Navn
description=Beskrivelse
no=Nej
yes=Ja
help=Hjælp:
createANewTopic=Lav et nyt emne
topics=Emner
posts=Opslag
lastPost=Seneste opslag
views=Visninger
replies=Svar
materialDifference=Materialeforskel

View File

@ -316,3 +316,102 @@ thisMoveGivesYourOpponentTheAdvantage=Dieser Zug gibt deinem Gegner den Vorteil
openingFailed=Eröffnung nicht bestanden
openingSolved=Eröffnung bestanden
recentlyPlayedOpenings=Kürzlich gespielte Eröffnungen
puzzles=Rätsel
coordinates=Koordinaten
openings=Eröffnungen
latestUpdates=Neueste Updates
tournamentWinners=Turniergewinner
name=Name
description=Beschreibung
no=Nein
yes=Ja
help=Hilfe
createANewTopic=Eröffne ein neues Thema
topics=Themen
posts=Beiträge
lastPost=Letzter Beitrag
views=Angesehen
replies=Antworten
replyToThisTopic=Auf diesen Beitrag antworten
reply=Antwort
message=Nachricht
createTheTopic=Thema erstellen
reportAUser=Benutzer melden
user=Benutzer
reason=Grund
whatIsIheMatter=Was ist das Problem?
cheat=Betrug
insult=Beleidigung
troll=Troll
other=Anderes
reportDescriptionHelp=Füge den Link zum Spiel ein und erkläre die Auffälligkeiten bezüglich des Spielerverhaltens.
by=von %s
thisTopicIsNowClosed=Das Thema ist jetzt geschlossen.
theming=Erscheinungsbild
donate=Spenden
blog=Blog
map=Weltkarte
realTimeWorldMapOfChessMoves=Weltkarte der Schachzüge in Echtzeit
questionsAndAnswers=Fragen & Antworten
notes=Notizen
typePrivateNotesHere=Private Notizen hier eingeben
gameDisplay=Erscheinungsbild
pieceAnimation=Figurenanimation
materialDifference=Materialunterschiede
closeAccount=Mitgliedschaft beenden
closeYourAccount=Deine Mitgliedschaft beenden
changedMindDoNotCloseAccount=Habe meine Meinung geändert, die Mitgliedschaft doch nicht beenden
closeAccountExplanation=Möchten Sie die Mitgliedschaft wirklich beenden? Diese Entscheidung ist endgültig. Ein Login ist danach nicht mehr möglich und die Profilseite nicht mehr verfügbar.
thisAccountIsClosed=Dieses Mitgliedskonto ist geschlossen.
invalidUsernameOrPassword=Ungültiger Benutzername oder Passwort
emailMeALink=Mir einen Link per E-Mail senden
currentPassword=Derzeitiges Passwort
newPassword=Neues Passwort
newPasswordAgain=Neues Passwort (wiederholen)
boardHighlights=Hervorhebungen auf Brett (letzter Zug und Schach)
pieceDestinations=Zielfelder hervorheben (gültige Züge und Vorauszüge)
boardCoordinates=Brettkoordinaten (A-H, 1-8)
moveListWhilePlaying=Zugliste während des Spiels zeigen
chessClock=Schachuhr
tenthsOfSeconds=Zehntelsekunden
never=Nie
whenTimeRemainingLessThanTenSeconds=Wenn Restzeit < 10 Sekunden
horizontalGreenProgressBars=Horizontale grüne Fortschrittsbalken
soundWhenTimeGetsCritical=Ton, wenn die Zeit knapp wird
gameBehavior=Spielverhalten
premovesPlayingDuringOpponentTurn=Vorauszüge (während der Gegner am Zug ist)
takebacksWithOpponentApproval=Zugrücknahme (mit Erlaubnis des Gegners)
promoteToQueenAutomatically=Automatische Umwandlung zur Dame
claimDrawOnThreefoldRepetitionAutomatically=Erzwinge automatisch remis bei %sdreifacher Stellungswiederholung%s
privacy=Privatsphäre
letOtherPlayersFollowYou=Anderen erlauben mir zu folgen
letOtherPlayersChallengeYou=Anderen erlauben mich herauszufordern
sound=Ton
soundControlInTheTopBarOfEveryPage=Die Lautstärke kann auf jeder Seite im rechten oberen Bildrand geändert werden.
yourPreferencesHaveBeenSaved=Die Einstellungen wurden gespeichert.
none=Keine
fast=Schnell
normal=Normal
slow=Langsam
insideTheBoard=Auf dem Brett
outsideTheBoard=Neben dem Brett
onSlowGames=Bei langsamen Spielen
always=Immer
inCasualGamesOnly=Nur in ungewerteten Spielen
whenPremoving=Bei Vorauszug
whenTimeRemainingLessThanThirtySeconds=Wenn Restzeit < 30 Sekunden
difficultyEasy=Leicht
difficultyNormal=Mittel
difficultyHard=Schwer
xLeftANoteOnY=%s hat eine Notiz über %s hinterlassen
xCompetesInY=%s nimmt teil bei %s
xAskedY=%s fragte %s
xAnsweredY=%s antwortete %s
xCommentedY=%s kommentierte %s
timeline=Zeitleiste
seeAllTournaments=Alle Turniere zeigen
starting=beginnt:
allInformationIsPublicAndOptional=Alle Infos sind öffentlich und optional.
yourCityRegionOrDepartment=Deine Stadt, Region, Kanton oder Bundesland.
biographyDescription=Über dich, was du am Schach magst, Lieblingseröffnungen, Spiele, Spieler…
maximumNbCharacters=Maximal: %s Zeichen.

View File

@ -316,6 +316,8 @@ thisMoveGivesYourOpponentTheAdvantage=Αυτή η κίνηση δίνει στο
openingFailed=Άνοιγμα απέτυχε
openingSolved=Επιτυχής ολοκλήρωση ανοίγματος
recentlyPlayedOpenings=Ανοίγματα που παίξατε πρόσφατα
puzzles=Γρίφοι
coordinates=Συντεταγμένες
openings=Ανοίγματα
latestUpdates=Τελευταίες ενημερώσεις
tournamentWinners=Νικητές τουρνουά
@ -324,18 +326,26 @@ description=Περιγραφή
no=Όχι
yes=Ναι
help=Βοήθεια:
createANewTopic=Δημιουργήστε καινούργιο θέμα
topics=Θέματα
posts=Δημοσιεύσεις
lastPost=Τελευταία δημοσίευση
views=Εμφανίσεις
replies=Απαντήσεις
replyToThisTopic=Ξαναπαίξτε σε αυτό το θέμα
reply=Απάντηση
message=Μήνυμα
createTheTopic=Δημιουργήστε το θέμα
reportAUser=Αναφορά χρήστη
user=Χρήστης
reason=Αιτία
whatIsIheMatter=Τι είδους;
cheat=Απάτη
insult=Προσβολή
troll=Τρολ
other=Άλλο
reportDescriptionHelp=Κάντε επικόλληση το link του παιχνιδιου και εξηγήστε τι είναι παράξενο στη συμπεριφορά αυτού του χρήστη
by=Από τον %s
map=Χάρτης
questionsAndAnswers=Ερωτήσεις & Απαντήσεις
notes=Σημειώσεις

View File

@ -358,3 +358,58 @@ typePrivateNotesHere=Podés escribir tus notas privadas acá
gameDisplay=Configuración visual del juego
pieceAnimation=Animación de las piezas
materialDifference=Diferencia material
closeAccount=Cerrar cuenta
closeYourAccount=Cerrar su cuenta
changedMindDoNotCloseAccount=Cambié de opinión, no cierre mi cuenta.
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.
thisAccountIsClosed=Esta cuenta ha sido cerrada.
invalidUsernameOrPassword=Nombre de usuario o palabra clave inválidas
emailMeALink=Envíame por correo electrónico un link.
currentPassword=Contraseña actual.
newPassword=Nueva contraseña.
newPasswordAgain=Nueva contraseña (de nuevo)
boardHighlights=Destacar casillas del tablero. (último movimiento y jaque)
pieceDestinations=Destino de las piezas (movimientos válidos y premovimientos)
boardCoordinates=Coordenadas de tablero (A-H, 1-8)
moveListWhilePlaying=Lista de movimientos durante el juego.
chessClock=Reloj de ajedrez
tenthsOfSeconds=Decenas de segundo
never=Nunca
whenTimeRemainingLessThanTenSeconds=Cuando en el tiempo quede < 10 segundos
horizontalGreenProgressBars=Barra de progreso horizontal verde
soundWhenTimeGetsCritical=Sonido cuando quede poco tiempo
gameBehavior=Comportamiento del juego
premovesPlayingDuringOpponentTurn=Premovimiento (jugar durante el turno del oponente)
takebacksWithOpponentApproval=Deshacer jugada (con consentimiento del oponente)
promoteToQueenAutomatically=Pormocionar automaticamente a dama
claimDrawOnThreefoldRepetitionAutomatically=Reclamar tablas por %striple repetición%s automaticamente
privacy=Privacidad
letOtherPlayersFollowYou=Permitir que otros jugadores te sigan
letOtherPlayersChallengeYou=Permitir que otros jugadores te desafien
sound=Sonido
soundControlInTheTopBarOfEveryPage=El control de sonido se encuentra en la barra superior de la página, en el lado derecho.
yourPreferencesHaveBeenSaved=Tus preferencias han sido guardadas
none=Ninguna
fast=Rapida
normal=Normal
slow=Lenta
insideTheBoard=Dentro del tablero
outsideTheBoard=Fuera del tablero
onSlowGames=En partidas lentas
always=Siempre
inCasualGamesOnly=En partidas amistosas solamente
whenPremoving=Con premovimiento
whenTimeRemainingLessThanThirtySeconds=Cuando queden < 30 segundos
difficultyEasy=fácil
difficultyNormal=Normal
difficultyHard=Difícil
xCompetesInY=%s completó en %s
xAskedY=%s preguntó %s
xAnsweredY=%s prguntó %s
xCommentedY=%s comentó %s
seeAllTournaments=Ver todos los torneos
starting=Comienzo:
allInformationIsPublicAndOptional=Toda la información es pública y opcional
yourCityRegionOrDepartment=Tu ciudad, región o departamento
biographyDescription=Cuéntanos, que te gusta en ajedrez, tu apertura favorita, partidad, jugadores...
maximumNbCharacters=Máximo: %s caracteres.

View File

@ -316,3 +316,23 @@ thisMoveGivesYourOpponentTheAdvantage=این حرکت به گشایش شما ا
openingFailed=گشایش را اشتباه حل کردید
openingSolved=گشایش حل شد
recentlyPlayedOpenings=اخیرا گشایش را بازی کردید
puzzles=پازل ها
coordinates=مختصات
openings=افتتاح ها
latestUpdates=آخرین به روز رسانی ها
tournamentWinners=برندگان مسابقات
name=نام
description=شرح
no=نه
yes=بله
help=راهنما:
createANewTopic=ایجاد یک موضوع جدید
topics=مباحث
posts=پست ها
lastPost=آخرین ارسال
views=نمایش ها
replies=پاسخ ها
replyToThisTopic=پاسخ به این موضوع
reply=پاسخ
message=پیام
createTheTopic=ایجاد موضوع

View File

@ -316,3 +316,54 @@ thisMoveGivesYourOpponentTheAdvantage=Valittu siirto antaa edun vastustajalle
openingFailed=Avaus epäonnistui
openingSolved=Avaus onnistui
recentlyPlayedOpenings=Viimeksi pelatut avaukset
puzzles=Tehtävät
coordinates=Koordinaatit
openings=Avaukset
latestUpdates=Viimeiset päivitykset
tournamentWinners=Turnausvoittajat
name=Nimi
description=Kuvaus
no=Ei
yes=Kyllä
help=Apu:
createANewTopic=Luo uusi aihe
topics=Aiheet
views=Katseltu
replies=Vastaukset
replyToThisTopic=Vastaa tähän aiheeseen
reply=Vastaa
message=Viesti
createTheTopic=Luo aihe
user=Käyttäjä
reason=Syy
cheat=Huijaus
insult=Loukkaus
troll=Trolli
other=Muu
by=%s
thisTopicIsNowClosed=Tämä aihe on nyt suljettu.
donate=Lahjoita
blog=Blogi
map=Kartta
questionsAndAnswers=Kysymykset ja vastaukset
gameDisplay=Ulkoasu
pieceAnimation=Nappuloiden animaatio
materialDifference=Materiaaliero
invalidUsernameOrPassword=Virheellinen käyttäjätunnus tai salasana
currentPassword=Nykyinen salasana
newPassword=Uusi salasana
newPasswordAgain=Varmista uusi salasana
never=Ei koskaan
whenTimeRemainingLessThanTenSeconds=Kun aikaa jäljellä <10 sekuntia
promoteToQueenAutomatically=Korota automaattisesti kuningattareksi
privacy=Yksityisyys
none=Ei ollenkaan
fast=Nopea
normal=Normaali
slow=Hidas
insideTheBoard=Laudan sisäpuolella
outsideTheBoard=Laudan ulkopuolella
always=Aina
difficultyEasy=Helppo
difficultyNormal=Keskitaso
difficultyHard=Vaikea

View File

@ -319,8 +319,8 @@ recentlyPlayedOpenings=Ouvertures jouées dernièrement
puzzles=Puzzles
coordinates=Coordonnées
openings=Ouvertures
latestUpdates=Articles récents
tournamentWinners=Vainqueurs des tournois
latestUpdates=Dernières mises à jour
tournamentWinners=Vainqueurs du tournoi
name=Nom
description=Description
no=Non
@ -328,8 +328,8 @@ yes=Oui
help=Aide:
createANewTopic=Créer un nouveau sujet
topics=Sujets
posts=Sujets
lastPost=Derniers sujets
posts=Messages
lastPost=Dernier message
views=Vues
replies=Réponses
replyToThisTopic=Répondre à ce sujet
@ -338,23 +338,68 @@ message=Message
createTheTopic=Créer un sujet
reportAUser=Signaler un utilisateur
user=Utilisateur
reason=Raison
whatIsIheMatter=Qu'est ce qui ne va pas?
reason=Motif
whatIsIheMatter=Quel est le problème ?
cheat=Triche
insult=Insulte
troll=Troll
other=Autre
reportDescriptionHelp=Renseigner le lien vers la(s) partie(s) et expliquer ce qui ne va pas avec le comportement de cet utilisateur.
by=Par %s
thisTopicIsNowClosed=Ce sujet est clos
theming=Thèmes
donate=Donation
reportDescriptionHelp=Copiez le(s) lien(s) vers les partie(s) et expliquez ce qui ne va pas avec le comportement de cet utilisateur
by=de %s
thisTopicIsNowClosed=Ce sujet est maintenant fermé
theming=Thème
donate=Faire un don
blog=Blog
map=Carte
realTimeWorldMapOfChessMoves=Carte en temps réel des coups à travers le monde
questionsAndAnswers=Questions & Réponses
map=Mappemonde
realTimeWorldMapOfChessMoves=Coups en temps réel sur la mappemonde
questionsAndAnswers=Question et réponses
notes=Notes
typePrivateNotesHere=Taper vos notes personnelles ici.
gameDisplay=Affichage de la partie
pieceAnimation=Déplacements des pièces
materialDifference=Différence de pièces
typePrivateNotesHere=Ecrivez vos notes privées ici
gameDisplay=Affichage du jeu
pieceAnimation=Animation des pièces
materialDifference=Différence de matériel
closeAccount=Clôturer votre compte
closeYourAccount=Clôturer votre compte
changedMindDoNotCloseAccount=J'ai changé d'avis, ne clôturez pas mon compte
closeAccountExplanation=Êtes-vous sûr de vouloir clôturer votre compte ? Clôturer votre compte est une décision définitive. Vous ne pourrez plus vous connecter, et votre profil ne sera plus accessible.
thisAccountIsClosed=Ce compte a été clôturé.
invalidUsernameOrPassword=Nom d'utilisateur ou mot de passe invalide
emailMeALink=Envoyez-moi un lien par email
currentPassword=Mot de passe actuel
newPassword=Nouveau mot de passe
newPasswordAgain=Nouveau mot de passe (confirmation)
boardHighlights=Surligner les cases (dernier coup, echec)
pieceDestinations=Cases de destination (coups et pré-coups valides)
boardCoordinates=Coordonnées (A-H, 1-8)
moveListWhilePlaying=Liste de coups durant la partie
chessClock=Horloge
tenthsOfSeconds=Dixièmes de seconde
never=Jamais
whenTimeRemainingLessThanTenSeconds=Quand il reste moins de 10 secondes
horizontalGreenProgressBars=Barres horizontales vertes de progression
soundWhenTimeGetsCritical=Alerte quand le temps restant devient critique
gameBehavior=Actions en cours de partie
premovesPlayingDuringOpponentTurn=Pré-coups
takebacksWithOpponentApproval=Annulations du dernier coup
promoteToQueenAutomatically=Promouvoir en dame automatiquement
claimDrawOnThreefoldRepetitionAutomatically=Forcer automatiquement le %snul par répétition%s
privacy=Confidentialité
letOtherPlayersFollowYou=Autoriser les autres joueurs à vous suivre
letOtherPlayersChallengeYou=Autoriser les autres joueurs à vous défier
sound=Volume
soundControlInTheTopBarOfEveryPage=Le contrôle du volume est en haut de chaque page, du côté droit.
yourPreferencesHaveBeenSaved=Vos préférences ont été sauvegardées.
none=Aucun
fast=Rapide
normal=Normal
slow=Lent
insideTheBoard=Sur l'échiquier
outsideTheBoard=En dehors de l'échiquier
onSlowGames=Durant les parties lentes
always=Toujours
inCasualGamesOnly=Durant les parties amicales seulement
whenPremoving=En pré-coup
whenTimeRemainingLessThanThirtySeconds=Quand il reste moins de 30 secondes
difficultyEasy=Facile
difficultyNormal=Normal
difficultyHard=Difficile

View File

@ -314,3 +314,13 @@ thisMoveGivesYourOpponentTheAdvantage=מהלך זה נותן ליריבך את
openingFailed=פתיחה נכשלה
openingSolved=פתיחה נפתרה
recentlyPlayedOpenings=פתיחות אחרונות ששוחקו
puzzles=פאזלים
openings=פתיחות
name=שם
no=לא
yes=כן
help=:עזרה
createANewTopic=צור נושא חדש
topics=נושאים
views=צפיות
replies=תגובות

View File

@ -316,3 +316,43 @@ thisMoveGivesYourOpponentTheAdvantage=Ez a lépés kedvezőtlen
openingFailed=Megnyitás sikertelen
openingSolved=Megnyitás sikeres
recentlyPlayedOpenings=Legutóbbi megnyitások
puzzles=Kirakós
coordinates=Koordináták
openings=Nyitások
latestUpdates=Utolsó frissítések
tournamentWinners=Verseny győztesek
name=Név
description=Leírás
no=Nem
yes=Igen
help=Segítség
createANewTopic=Új topik létrehozása
topics=Topik
posts=Poszt
lastPost=Utolsó poszt
views=Nézetek
replies=Hozzászólások
replyToThisTopic=Hozzászólás
reply=Hozzászólás küldése
message=Üzenet
createTheTopic=Topik létrehozása
reportAUser=Jelenteni egy felhasználót
user=Felhasználó
reason=Indoklás
whatIsIheMatter=Mi újság
cheat=Csevegő
insult=Sértegetés
troll=Trollkodás
other=Más
thisTopicIsNowClosed=Ez a téma jelenleg lezárt
donate=Támogatás
map=Térkép
questionsAndAnswers=Kérdések & Válaszok
notes=Jegyzetek
typePrivateNotesHere=Ide írd a saját jegyzeteidet
gameDisplay=Játék megjelenítés
pieceAnimation=Bábúk animációja
materialDifference=Különböző anyagok
closeAccount=Fiók zárolása
closeYourAccount=Fiók zárolása
changedMindDoNotCloseAccount=Meggondoltam magam, mégsem zárolom a fiókomat

View File

@ -316,3 +316,103 @@ thisMoveGivesYourOpponentTheAdvantage=Questa mossa porta in vantaggio l'avversar
openingFailed=Apertura fallita
openingSolved=Apertura risolta
recentlyPlayedOpenings=Aperture giocate recentemente
puzzles=Puzzle
coordinates=Coordinate
openings=Aperture
latestUpdates=Ultimi aggiornamenti
tournamentWinners=Vincitori del torneo
name=Nome
description=Descrizione
no=No
yes=Si
help=Aiuto:
createANewTopic=Crea una nuova discussione
topics=Discussioni
posts=Messaggi
lastPost=Ultimo messaggio
views=Visualizzazioni
replies=Risposte
replyToThisTopic=Risposte a questa discussione
reply=Rispondi
message=Messaggio
createTheTopic=Crea la discussione
reportAUser=Riporta un utente
user=Utente
reason=Ragione
whatIsIheMatter=Qual è il motivo?
cheat=Imbroglio
insult=Insulto
troll=Spam
other=Altro
reportDescriptionHelp=Incolla il link alla/e partita/e e spiega cosa c'è di sbagliato nel comportamento di tale utente.
by=da %s
thisTopicIsNowClosed=Questa discussione è ora chiusa
theming=Temi
donate=Dona
blog=Blog
map=Mappa
realTimeWorldMapOfChessMoves=Mappa in tempo reale delle mosse di scacchi in tutto il mondo
questionsAndAnswers=Domande e Risposte
notes=Note
typePrivateNotesHere=Scrivi qui le note private
gameDisplay=Schermo di gioco
pieceAnimation=Animazione dei pezzi
materialDifference=Differenza di materiale
closeAccount=Chiudi account
closeYourAccount=Chiudi il tuo account
closeMyAccount=Chiudi il mio account
changedMindDoNotCloseAccount=Ho cambiato idea, non chiudere il mio account
closeAccountExplanation=Sei sicuro di voler chiudere il tuo account? Chiudere il tuo account è una decisione irreversibile. Non ti sarà più possibile effettuare il login, e la pagina del tuo profilo non sarà più accessibile.
thisAccountIsClosed=Questo account è stato chiuso.
invalidUsernameOrPassword=Username o password non validi
emailMeALink=Inviami il link tramite email
currentPassword=Password corrente
newPassword=Nuova password
newPasswordAgain=Nuova password (di nuovo)
boardHighlights=Tieni traccia di ultima mossa e scacco
pieceDestinations=Destinazioni del pezzo (mosse e pre-mosse valide)
boardCoordinates=Coordinate della scacchiera (A-H, 1-8)
moveListWhilePlaying=Lista delle mosse durante la partita
chessClock=Orologio
tenthsOfSeconds=Decimi di secondo
never=Mai
whenTimeRemainingLessThanTenSeconds=Quando il tempo rimanente è < 10 secondi
horizontalGreenProgressBars=Barra verde orizzontale del tempo
soundWhenTimeGetsCritical=Suono quando sei a corto di tempo
gameBehavior=Comportamento del gioco
premovesPlayingDuringOpponentTurn=Pre-mosse (durante il turno dell'avversario)
takebacksWithOpponentApproval=Ritiro della mossa (con l'approvazione del tuo avversario)
promoteToQueenAutomatically=Promuovi a Regina automaticamente
claimDrawOnThreefoldRepetitionAutomatically=Dichiara patta per %striplice ripetizione%s automaticamente
privacy=Privacy
letOtherPlayersFollowYou=Permetti agli altri giocatori di seguirti
letOtherPlayersChallengeYou=Permetti agli altri giocatori di sfidarti
sound=Suono
soundControlInTheTopBarOfEveryPage=Il controllo del suono è nella barra in alto di ogni pagina, sul lato destro.
yourPreferencesHaveBeenSaved=Le tue preferenze sono state salvate.
none=No
fast=Veloce
normal=Normale
slow=Lento
insideTheBoard=Dentro la scacchiera
outsideTheBoard=Fuori la scacchiera
onSlowGames=Nelle partite lente
always=Sempre
inCasualGamesOnly=Solo nelle partite amichevoli
whenPremoving=Quando pre-muovi
whenTimeRemainingLessThanThirtySeconds=Quando il tempo rimanente è < 30 secondi
difficultyEasy=Facile
difficultyNormal=Normale
difficultyHard=Difficile
xLeftANoteOnY=%s ha lasciato una nota nel profilo di %s
xCompetesInY=%s compete in %s
xAskedY=%s ha chiesto %s
xAnsweredY=%s ha risposto %s
xCommentedY=%s ha commentato %s
timeline=Timeline
seeAllTournaments=Vedi tutti i tornei
starting=Inizio:
allInformationIsPublicAndOptional=Tutte le informazioni sono pubbliche e facoltative.
yourCityRegionOrDepartment=La tua città, regione o dipartimento.
biographyDescription=Parlaci di te, cosa ti piace negli scacchi, le tue aperture, giochi, giocatori preferiti...
maximumNbCharacters=Massimo: %s caratteri.

View File

@ -168,6 +168,7 @@ tournaments=トーナメント
tournamentPoints=トーナメントポイント
viewTournament=トーナメントを見る
backToTournament=トーナメントに戻る
backToGame=ゲームに戻る
freeOnlineChessGamePlayChessNowInACleanInterfaceNoRegistrationNoAdsNoPluginRequiredPlayChessWithComputerFriendsOrRandomOpponents=無料オンラインチェスゲーム。今すぐ綺麗なインターフェースでチェスをすることが出来ます。登録、プラグイン不要。広告無し。AI、友達、あるいはランダムな相手とチェスの対局をすることが出来ます。
teams=チーム
nbMembers=%s メンバー
@ -304,3 +305,14 @@ thisPuzzleIsCorrect=このパズルはよく出来ていて興味深い。
thisPuzzleIsWrong=このパズルには間違いがある/あまり意味が無い
youHaveNbSecondsToMakeYourFirstMove=%s 秒以内に初手を指してください
nbGamesInPlay=%s 試合プレイ中
automaticallyProceedToNextGameAfterMoving=指した後 自動的に次のゲームに進む
autoSwitch=自動スイッチ
openingId=オープニング%s
findNbStrongMoves=好手を %s つ指してください
thisMoveGivesYourOpponentTheAdvantage=相手に有利を与えてしまう手
openingFailed=不正解
openingSolved=正解
recentlyPlayedOpenings=最近行ったオープニング
puzzles=タクティクス
coordinates=マスの位置
openings=オープニング

View File

@ -276,35 +276,35 @@ activeThisWeek=Aktīvākie šajā nedēļā
activePlayers=Aktīvākie spēlētāji
bewareTheGameIsRatedButHasNoClock=Uzmanību! Spēle ir ar reitinga aprēķinu, bet bez laika limita!
training=Treniņš
yourPuzzleRatingX=Jūsu pužļu reitings: %s
yourPuzzleRatingX=Tavs uzdevumu reitings: %s
findTheBestMoveForWhite=Atrodi vislabāko gājienu baltajiem
findTheBestMoveForBlack=Atrodi vislabāko gājienu melnajiem
toTrackYourProgress=Izsekot jūsu progresu:
trainingSignupExplanation=Lichess sniegs puzles, kas atbilst jūsu spējām, tādējādi veidojot vislabākās treniņu sesijas.
trainingSignupExplanation=Lai nodrošinātu vislabāko treniņu, Lichess piemeklēs uzdevumus, kas atbilst jūsu spējām.
recentlyPlayedPuzzles=Nesen spēlētās puzles
puzzleId=Puzle %s
puzzleOfTheDay=Dienas puzle
puzzleId=Uzdevums %s
puzzleOfTheDay=Dienas uzdevums
clickToSolve=Uzklikšķini lai atrisinātu
goodMove=Labs gājiens
butYouCanDoBetter=Tu taču vari labāk.
bestMove=Vislabākais gājiens!
keepGoing=Turpini...
puzzleFailed=Puzle nav atrisināta
puzzleFailed=Uzdevums nav atrisināts
butYouCanKeepTrying=Taču tu var mēģināt kamēr izdosies.
victory=Uzvara!
giveUp=Padodos
puzzleSolvedInXSeconds=Puzle ir atrisināta %s sekundēs.
wasThisPuzzleAnyGood=Vai šī puzle bija laba?
pleaseVotePuzzle=Palīdzi lichess`am un balso, izmantojot bultiņas uz augšu un uz leju:
puzzleSolvedInXSeconds=Uzdevums ir atrisināts %s sekundēs.
wasThisPuzzleAnyGood=Vai šī uzdevums bija labs?
pleaseVotePuzzle=Palīdzi Lichess`am un balso, izmantojot bultiņas uz augšu un uz leju:
thankYou=Paldies!
ratingX=Reitings: %s
playedXTimes=Spēlēts reizes %s
fromGameLink=No spēles %s
startTraining=Uzsākt treniņu
continueTraining=Turpināt treniņu
retryThisPuzzle=Atkārtot šo puzli
thisPuzzleIsCorrect=Puzle ir pareiza un interesanta
thisPuzzleIsWrong=Puzle ir aplama vai garlaicīga
retryThisPuzzle=Atkārtot šo uzdevumu
thisPuzzleIsCorrect=Uzdevums ir pareizs un interesants
thisPuzzleIsWrong=Uzdevums ir aplams vai garlaicīgs
youHaveNbSecondsToMakeYourFirstMove=Tavā rīcībā ir %s sekunžu lai veiktu savu pirmo gājienu!
nbGamesInPlay=Pašlaik norisinās %s spēles
automaticallyProceedToNextGameAfterMoving=Pēc gājiena izdarīšanas automātiski pāriet pie nākamās spēles
@ -316,3 +316,102 @@ thisMoveGivesYourOpponentTheAdvantage=Šāds gājiens atdod pārsvaru pretinieka
openingFailed=Atklātne neizdevās
openingSolved=Atklātne atrisināta
recentlyPlayedOpenings=Nesen spēlētās atklātnes
puzzles=Uzdevumi
coordinates=Koordinātas
openings=Atklātnes
latestUpdates=Pēdējās atjaunināšanas
tournamentWinners=Turnīra uzvarētāji
name=Vārds
description=Apraksts
no=Nē
yes=Jā
help=Palīdzība
createANewTopic=Izveidot jaunu tematu
topics=Temati
posts=Ieraksti
lastPost=Pēdējais ieraksts
views=Apskati
replies=Atbildes
replyToThisTopic=Atbildēt šim tematam
reply=Atbilde
message=Vēstule/īsziņa
createTheTopic=Izveidot jaunu tematu
reportAUser=Ziņot lietotājam
user=Lietotājs
reason=Cēlonis
whatIsIheMatter=Kāds ir Jūsu jautājums?
cheat=Apkrāpšana
insult=Aizvainišana
troll=Trollis
other=Cits
reportDescriptionHelp=Ielikt atsauci spēlē un izskaidrot kas nav kārtībā lietotāja uzvedībā.
by=No %s
thisTopicIsNowClosed=Šis temats tagad ir slēgts!
theming=Tēmas
donate=Ziedot
blog=Blogs
map=Karte
realTimeWorldMapOfChessMoves=Šahveida gaitu karte reālā laikā
questionsAndAnswers=Jautājumi un Atbildes
notes=Piezīmes
typePrivateNotesHere=Uzrakstīt privāto piezīmi šeit
gameDisplay=Spēļu displejs
pieceAnimation=Figūru animācija
materialDifference=Materiāla starpība
closeAccount=Slēgt kontu
closeYourAccount=Slēgt savu kontu
changedMindDoNotCloseAccount=Es pārdomāju, neslēdziet manu kontu
closeAccountExplanation=Vai esi pārliecināts, ka vēlies slēgt kontu? Konta slēgšanu nevar atsaukt. Tu vairs nevarēsi pieslēgties, un tavam profilam vairs nevarēs piekļūt.
thisAccountIsClosed=Konts slēgts.
invalidUsernameOrPassword=Nepareizs lietotājvārds vai parole
emailMeALink=Atsūtīt saiti uz epastu
currentPassword=Esošā parole
newPassword=Jaunā parole
newPasswordAgain=Jaunā parole (atkārtoti)
boardHighlights=Lauciņu izcelšana (pēdējais gājiens vai piesakot šahu)
pieceDestinations=Figūru galamērķi (legāli gājieni vai priekšgājieni)
boardCoordinates=Lauciņa koordinātas (A-H, 1-8)
moveListWhilePlaying=Gājienu saraksts spēles laikā
chessClock=Šaha pulkstenis
tenthsOfSeconds=Sekunžu desmitdaļas
never=Nekad
whenTimeRemainingLessThanTenSeconds=Ja atlicis < 10 sekundēm
horizontalGreenProgressBars=Zaļā horizontālā izpildes josla
soundWhenTimeGetsCritical=Signalizēt kad laika pavisam maz
gameBehavior=Spēles uzvedība
premovesPlayingDuringOpponentTurn=Priekšgājieni (izdarīt gājienu kamēr pretinieks domā)
takebacksWithOpponentApproval=Atsaukt gājienu (ar pretinieka piekrišanu)
promoteToQueenAutomatically=Automātiski paaugstināt par Dāmu
claimDrawOnThreefoldRepetitionAutomatically=Automātiski pieprasīt neizšķirtu %strīskāršas atkārtošanās%s gadījumā
privacy=Privātums
letOtherPlayersFollowYou=Ļaut citiem sekot tev
letOtherPlayersChallengeYou=Ļaut citiem izaicināt tevi
sound=Skaņa
soundControlInTheTopBarOfEveryPage=Skaņas vadība ir katras lapas augšējā joslā, labajā pusē.
yourPreferencesHaveBeenSaved=Tavi uzstādījumi saglabāti.
none=Nekāda
fast=Ātra
normal=Normāls
slow=Lēna
insideTheBoard=Lauciņa iekšpusē
outsideTheBoard=Lauciņa ārpusē
onSlowGames=Lēnajās spēlēs
always=Vienmēr
inCasualGamesOnly=Tikai parastajās spēlēs
whenPremoving=Ja priekšgājiens
whenTimeRemainingLessThanThirtySeconds=Ja atlicis < 30 sekundēm
difficultyEasy=Viegls
difficultyNormal=Normāls
difficultyHard=Grūts
xLeftANoteOnY=%s atstāja ziņu %s
xCompetesInY=%s piedalās %s
xAskedY=%s uzdeva jautājumu %s
xAnsweredY=%s atbildēja %s
xCommentedY=%s sniedza komentāru %s
timeline=Laika grafiks
seeAllTournaments=Skatīt visus turnīrus
starting=Sāksies:
allInformationIsPublicAndOptional=Visa informācija ir publiska un nav obligāta.
yourCityRegionOrDepartment=Tava pilsēta, novads vai nodaļa.
biographyDescription=Pastāsti par sevi, kāpēc tev patīk šahs, savas mīļākās atklātes, spēles, šahistus ...
maximumNbCharacters=Maksimums: %s simboli.

View File

@ -316,3 +316,43 @@ thisMoveGivesYourOpponentTheAdvantage=Dette trekket gir fordel til din motstande
openingFailed=Åpningen mislyktes
openingSolved=Åpning løst
recentlyPlayedOpenings=Nylig spilte åpninger
puzzles=Nøtter
coordinates=Koordinater
openings=Åpninger
latestUpdates=Siste oppdateringer
tournamentWinners=Turneringsvinnere
name=Navn
description=Beskrivelse
no=Nei
yes=Ja
help=Hjelp
createANewTopic=Opprett nytt emne
topics=Emner
posts=Innlegg
lastPost=Siste innlegg
views=Visninger
replies=Svar
replyToThisTopic=Skriv nytt innlegg i dette emnet
reply=Svar
message=Melding
createTheTopic=Opprett emnet
reportAUser=Rapportér en bruker
user=Bruker
reason=Årsak
whatIsIheMatter=Hva gjelder det?
cheat=Juks
insult=Fornærmelse
troll=Troll
other=Annet
reportDescriptionHelp=Kopiér lenken til partiet/partiene og forklar hva som er galt med denne brukerens oppførsel
by=Ved %s
thisTopicIsNowClosed=Dette emnet er nå lukket
theming=Utseende
donate=Donér
blog=Blogg
map=Kart
questionsAndAnswers=Spørsmål og svar
notes=Notater
typePrivateNotesHere=Skriv inn private notater her
pieceAnimation=Brikkenes bevegelser
materialDifference=Materiell forskjell

View File

@ -358,3 +358,33 @@ typePrivateNotesHere=Type privé notities hier
gameDisplay=Spel uitstraling
pieceAnimation=Stuk animatie
materialDifference=Materiaal verschil
closeAccount=Sluit account
closeYourAccount=Sluit uw account
thisAccountIsClosed=Deze account is gesloten.
invalidUsernameOrPassword=Ongeldige gebruikersnaam of wachtwoord
emailMeALink=E-mail me een link
currentPassword=Huidig wachtwoord
newPassword=Nieuw wachtwoord
newPasswordAgain=Nieuw wachtwoord (opnieuw)
chessClock=Schaakklok
tenthsOfSeconds=Tienden van seconden
never=Nooit
gameBehavior=Spelgedrag
takebacksWithOpponentApproval=Terugnames (met goedkeuring van tegenstander)
promoteToQueenAutomatically=Automatisch promoveren tot Dame
privacy=Privacy
sound=Geluid
yourPreferencesHaveBeenSaved=Uw voorkeuren werden opgeslagen.
none=Geen
fast=Snel
normal=Normaal
slow=Traag
insideTheBoard=Binnen in het bord
outsideTheBoard=Buiten het bord
always=Altijd
difficultyEasy=Gemakkelijk
difficultyNormal=Normaal
difficultyHard=Moeilijk
timeline=Tijdslijn
seeAllTournaments=Zie alle toernooien
starting=Startend:

View File

@ -316,3 +316,45 @@ thisMoveGivesYourOpponentTheAdvantage=Ten ruch daje twojemu przeciwnikowi przewa
openingFailed=Debiut nierozwiązany
openingSolved=Debiut rozwiązany
recentlyPlayedOpenings=Ostatnio grane debiuty
puzzles=Zagadka
coordinates=Koordynacja
openings=Otwarcia
latestUpdates=Aktualności
tournamentWinners=Turniejowi zwycięzcy
name=Nazwa
description=Deskrypcja
no=Nie
yes=Tak
help=Pomoc
createANewTopic=Utwórz nowy temat
topics=Tematy
posts=Posty
lastPost=Ostatni post
views=Wyświetleń
replies=Odpowiedzi
replyToThisTopic=Odpowiedz w temacie
reply=Odpowiedz
message=Wiadomość
createTheTopic=Utwórz temat
reportAUser=Zgłoś użytkownika
user=Użytkownik
reason=Powód
whatIsIheMatter=Co się stało?
cheat=Oszustwo
insult=Zniewaga
troll=Upierdliwiec
other=Inny
reportDescriptionHelp=Wklej link do tej gry i wytłumacz dlaczego zachowanie użytkownika jest nieprawidłowe
by=przez %s
thisTopicIsNowClosed=Ten temat został zamknięty
theming=Tematyka
donate=Datek
blog=Blog
map=Mapa
realTimeWorldMapOfChessMoves=Realny czas ruchów szachowych na mapie Świata
questionsAndAnswers=Pytania i odpowiedzi
notes=Notatki
typePrivateNotesHere=Dołącz prywatną notatkę tutaj
gameDisplay=Widok gry
pieceAnimation=Ruchliwość figur
materialDifference=Przewaga materiału

View File

@ -358,3 +358,60 @@ typePrivateNotesHere=Digite notas pessoais aqui
gameDisplay=Exibição do jogo
pieceAnimation=Animação das peças
materialDifference=Diferença material
closeAccount=Encerrar conta
closeYourAccount=Encerrar sua conta
changedMindDoNotCloseAccount=Eu mudei de ideia, não fechar minha conta
closeAccountExplanation=Você tem certeza de que deseja encerrar sua conta? Esta é uma decisão permanente. Você não será mais capaz de fazer login, e a página do seu perfil não será mais acessível.
thisAccountIsClosed=Esta conta está encerrada
invalidUsernameOrPassword=Nome de usuário ou senha está incorreto
emailMeALink=Envia-me um link
currentPassword=Senha atual
newPassword=Nova senha
newPasswordAgain=Nova senha (repita)
boardHighlights=Luzes do tabuleiro (último movimento e xeque)
pieceDestinations=Destino das peças (movimentos válidos e pré-movimentos)
boardCoordinates=Coordenadas do tabuleiro
moveListWhilePlaying=Lista de movimentos enquanto joga
chessClock=Relógio de xadrez
tenthsOfSeconds=Décimos de segundo
never=Nunca
whenTimeRemainingLessThanTenSeconds=Quando o tempo remanescente for menor do que 10 segundos
horizontalGreenProgressBars=Barras de progresso verdes horizontais
soundWhenTimeGetsCritical=Som ao atingir um tempo crítico
gameBehavior=Funcionamento do jogo
premovesPlayingDuringOpponentTurn=Pré-movimentos (jogadas durante o turno do oponente)
takebacksWithOpponentApproval=Desfazer o movimento (com aprovação do oponente)
promoteToQueenAutomatically=Promover a Rainha automaticamente
claimDrawOnThreefoldRepetitionAutomatically=Vindicar empate em %srepetições triplas%s automaticamente
privacy=Privacidade
letOtherPlayersFollowYou=Permitir que outros jogadores sigam você
letOtherPlayersChallengeYou=Permitir que outros jogadores desafiem você
sound=Som
soundControlInTheTopBarOfEveryPage=O controle de som fica no topo de cada página, no lado direito.
yourPreferencesHaveBeenSaved=Suas preferências foram salvas.
none=Nenhum
fast=Rápido
normal=Rápido
slow=Lento
insideTheBoard=Dentro do tabuleiro
outsideTheBoard=Fora do tabuleiro
onSlowGames=Em jogos lentos
always=Sempre
inCasualGamesOnly=Somente em jogos casuais
whenPremoving=Quando mover previamente
whenTimeRemainingLessThanThirtySeconds=Quando o tempo restante for menor do que 30 segundos
difficultyEasy=Fácil
difficultyNormal=Normal
difficultyHard=Difícil
xLeftANoteOnY=% deixou uma nota para %s
xCompetesInY=%s compete em %s
xAskedY=%s perguntou %s
xAnsweredY=%s respondeu %s
xCommentedY=%s comentou %s
timeline=Linha do tempo
seeAllTournaments=Ver todos os torneios
starting=Iniciando
allInformationIsPublicAndOptional=Todas as informações são públicas e opcionais.
yourCityRegionOrDepartment=Sua cidade, região ou divisão territorial.
biographyDescription=Fale sobre você, o que você gosta em xadrez, suas aberturas favoritas, jogos, jogadores...
maximumNbCharacters=Máximo: %s caracteres.

View File

@ -316,10 +316,11 @@ thisMoveGivesYourOpponentTheAdvantage=Этот ход даёт вашему со
openingFailed=Дебют проигран
openingSolved=Дебют решён
recentlyPlayedOpenings=Недавно сыгранные дебюты
puzzles=Мозайка
puzzles=Головоломки
coordinates=Координаты
openings=Дебюты
latestUpdates=Последние обновления
tournamentWinners=Победители турнира
name=Имя
description=Описание
no=Нет
@ -331,6 +332,7 @@ posts=Посты
lastPost=Последний пост
views=Обзоры
replies=Ответы
replyToThisTopic=Ответить в тему
reply=Ответ
message=Сообщение
createTheTopic=Создать тему
@ -339,10 +341,13 @@ user=Пользователь
reason=Причина
whatIsIheMatter=В чем ваш вопрос?
cheat=Обман
insult=Пожаловаться
troll=Троллинг
other=Другое
reportDescriptionHelp=Вставить ссылку в игру и объяснить что неправильного в поведении пользователя
by=опубликовал %s
thisTopicIsNowClosed=Эта тема сейчас закрыта
theming=Настройка темы
donate=Пожертвование
blog=Блог
map=Карта
@ -353,3 +358,60 @@ typePrivateNotesHere=Написать приватные заметки здес
gameDisplay=Игровой дисплей
pieceAnimation=Анимация фигур
materialDifference=Разница по материалу
closeAccount=Удалить аккаунт
closeYourAccount=Удаление аккаунта
changedMindDoNotCloseAccount=Я передумал, не удаляйте мой аккаунт
closeAccountExplanation=Вы действительно желаете удалить свой аккаунт? Удаление аккаунта невозможно отменить. Вы больше не сможете зайти в игру, и ваша страница больше не будет доступна.
thisAccountIsClosed=Ваш аккаунт удален.
invalidUsernameOrPassword=Неправильное имя или пароль
emailMeALink=Выслать ссылку
currentPassword=Текущий пароль
newPassword=Новый пароль
newPasswordAgain=Новый пароль (повтор)
boardHighlights=Подсветка (последний ход и шах)
pieceDestinations=Ходы фигур (все возможные)
boardCoordinates=Координаты доски (A-H, 1-8)
moveListWhilePlaying=Показывать список ходов
chessClock=Часы
tenthsOfSeconds=Десятые секунд
never=Никогда
whenTimeRemainingLessThanTenSeconds=Когда остается < 10 секунд
horizontalGreenProgressBars=Горизонтальный зелёный индикатор прогресса
soundWhenTimeGetsCritical=Звук, когда время кончается
gameBehavior=Настройки игры
premovesPlayingDuringOpponentTurn=Возможные ходы (пока ходит противник)
takebacksWithOpponentApproval=Возвраты (с согласия противника)
promoteToQueenAutomatically=Пешка в Ферзя автоматически
claimDrawOnThreefoldRepetitionAutomatically=Считать ничью после %sthreefold repetition% повторений
privacy=Приватность
letOtherPlayersFollowYou=Позволить другим наблюдать за мной
letOtherPlayersChallengeYou=Позволить другим вызывать себя
sound=Звук
soundControlInTheTopBarOfEveryPage=Контроль звука в верхнем углу каждой страницы, справа
yourPreferencesHaveBeenSaved=Ваши настройки сохранены.
none=Нет
fast=Быстрая
normal=Нормальная
slow=Медленная
insideTheBoard=Внутри поля
outsideTheBoard=Снаружи поля
onSlowGames=В медленных играх
always=Всегда
inCasualGamesOnly=Только в случайных играх
whenPremoving=Когда сделан предварительный ход
whenTimeRemainingLessThanThirtySeconds=Когда остается меньше 30 секунд
difficultyEasy=Легкий
difficultyNormal=Нормальный
difficultyHard=Сложный
xLeftANoteOnY=%s оставил заметку о %s
xCompetesInY=%s участвует в %s
xAskedY=%s спрашивает %s
xAnsweredY=%s ответил %s
xCommentedY=%s откомментировал %s
timeline=Дневник
seeAllTournaments=Видеть все турниры
starting=Начинается:
allInformationIsPublicAndOptional=Вся информация публична и опциональна.
yourCityRegionOrDepartment=Ваш город, область или округ
biographyDescription=Расскажите о себе, что вы любите в шахматах, ваши любимые дебюты, партии, игроки...
maximumNbCharacters=Максимум: %s символов.

View File

@ -316,3 +316,27 @@ thisMoveGivesYourOpponentTheAdvantage=Tento ťah dáva súperovi výhodu
openingFailed=Otvorenie zlyhalo
openingSolved=Otvorenie vyriešené
recentlyPlayedOpenings=Naposledy hrané otvorenia
puzzles=skladačky
coordinates=súlad
openings=otvorenia
latestUpdates=obnoviť neskôr
tournamentWinners=víťaz turnaja
name=meno
description=popis
no=nie
yes=áno
help=pomoc
createANewTopic=založ novú tému
topics=téma
posts=správy
lastPost=posledné správy
views=pozretia
replies=odpovede
replyToThisTopic=odpoveď na túto tému
reply=odpoveď
message=správa
createTheTopic=odpovedaj
other=iné
map=mapa
questionsAndAnswers=otázky a odpovede
gameDisplay=obraz hry

View File

@ -316,6 +316,7 @@ thisMoveGivesYourOpponentTheAdvantage=Ta poteza daje nasprotniku prednost
openingFailed=Otvoritev spodletela
openingSolved=Otvoritev uspela
recentlyPlayedOpenings=Nedavno igrane otvoritve
puzzles=Problemi
coordinates=Koordinate
openings=Otvoritve
latestUpdates=Zadnja posodobitev
@ -327,5 +328,90 @@ yes=Da
help=pomoč
createANewTopic=Ustvari novo objavo
topics=Objava
posts=Objave
lastPost=Zadnja objava
views=ogledi
replies=Odgovor
replyToThisTopic=odgovori k tej temi
reply=odgovori
message=Sporočilo
createTheTopic=ustvari temo
reportAUser=prijavi uporabnika
user=uporabnik
reason=razlog
whatIsIheMatter=Kaj je narobe
cheat=goljufija
insult=Žalitev
troll=Provociranje
other=Drugo
reportDescriptionHelp=Prilepi linke iger in pojasni kaj je narobe z obnašanjem uporabnika
by=od %s
thisTopicIsNowClosed=Tema je zaprta
theming=Oblikovanje
donate=Donacije
blog=Blog
map=Zemljevid
realTimeWorldMapOfChessMoves=Zemljevid potez v živo
questionsAndAnswers=Vprašanja in Odgovori
notes=Beležke
typePrivateNotesHere=Privatne beležke
gameDisplay=Videz
pieceAnimation=Animacija figur
materialDifference=Materialna prednost
closeAccount=Zapri račun
closeYourAccount=Zapri svoj račun
changedMindDoNotCloseAccount=Premislil sem si, ne želim zapreti računa
closeAccountExplanation=Si prepričan, da želiš zapreti račun? Preklic odločitve potem ne bo več mogoč. Tvoj profil ne bo več dodtopen.
thisAccountIsClosed=Račun je zaprt.
invalidUsernameOrPassword=Napačno uporabniško ime ali geslo
emailMeALink=Pošlji mi povezavo po emailu
currentPassword=Trenutno geslo
newPassword=Novo geslo
newPasswordAgain=Novo geslo (ponovno)
boardHighlights=Osvetlitev šahovnice (zadnja poteza in kralj v šahu)
pieceDestinations=Možne poteze (regularne in vnaprej določene)
boardCoordinates=Koordinate na šahovnici (A-H, 1-8)
moveListWhilePlaying=Seznam potez med igro
chessClock=Šahovska ura
tenthsOfSeconds=Desetinke sekunde
never=Nikoli
whenTimeRemainingLessThanTenSeconds=Če je preostanek časa pod 10 sekundami
horizontalGreenProgressBars=Vodoravna zelena prečka
soundWhenTimeGetsCritical=Zvočni signal ko je čas postane kritičen
gameBehavior=Nastavitve igre
premovesPlayingDuringOpponentTurn=Predpremik poteze
takebacksWithOpponentApproval=Popravljanje potez (z dovoljenjem nasprotnika)
promoteToQueenAutomatically=Vedno promoviraj v damo
claimDrawOnThreefoldRepetitionAutomatically=Razglasi remi v primeru %strikratne ponovitve%s
privacy=Zasebnost
letOtherPlayersFollowYou=Dovoli sledenje
letOtherPlayersChallengeYou=Dovoli da te izzovejo na partijo
sound=Zvok
soundControlInTheTopBarOfEveryPage=Nastavitve zvoka so zgoraj desno.
yourPreferencesHaveBeenSaved=Nastavitve so bile shranjene.
none=Brez
fast=Hitro
normal=Normalno
slow=Počasi
insideTheBoard=Znotraj šahovnice
outsideTheBoard=Zunaj šahovnice
onSlowGames=Pri počasnih igrah
always=Vedno
inCasualGamesOnly=Samo pri nerangiranih partijah
whenPremoving=Če je predpremik poteze
whenTimeRemainingLessThanThirtySeconds=Če je preostanek časa < 30 sekund
difficultyEasy=Lahko
difficultyNormal=Normalno
difficultyHard=Težko
xLeftANoteOnY=%s je pustil sporočilo za %s
xCompetesInY=%s tekmuje v %s
xAskedY=%s je vprašal v %s
xAnsweredY=%s je odgovoril v %s
xCommentedY=%s je komentiral v %s
timeline=Časovni trak
seeAllTournaments=Poglej vse turnirje
starting=Začetek:
allInformationIsPublicAndOptional=Vsi podatki so vidni in niso nujni.
yourCityRegionOrDepartment=Tvoj kraj, mesto ali regija.
biographyDescription=Povej kaj o sebi, kaj ti je všeč pri šahu, najljubše otvoritve, igralci,...
maximumNbCharacters=Največ: %s znakov.

View File

@ -309,3 +309,108 @@ youHaveNbSecondsToMakeYourFirstMove=Ju keni%s sekonda për të bërë lëvizje t
nbGamesInPlay=%s lojëra duke u luajtur
automaticallyProceedToNextGameAfterMoving=Procesimi Automatik i lojës ,më pas duke luajtur potezin
autoSwitch=Mbyllje automatike
openingId=e hapurg %s
yourOpeningRatingX=Vlerësimi hapjes tuaj:%s
findNbStrongMoves=Gjej%s lëvizje të forta
thisMoveGivesYourOpponentTheAdvantage=Kjo levizje i jep kundërshtarit tuaj përparësi
openingFailed=hapja deshtoj
openingSolved=hapja e zgidhur
recentlyPlayedOpenings=Hapje luajtur kohët e fundit
puzzles=puzzles
coordinates=kordinatat
openings=e hapur
latestUpdates=pëditësimet e fundit
tournamentWinners=fituesi i turnirit
name=emri
description=përshkrimi
no=jo
yes=po
help=ndihmë
createANewTopic=krijimi i një teme të re
topics=tema
posts=rang
lastPost=renditje e fundit
views=shikime
replies=përgjigjëje
replyToThisTopic=përgjigjëje në kët temë
reply=përsëritje
message=mesazhi
createTheTopic=krijo temë
reportAUser=Raporto një përdorues
user=përdorues
reason=arsye
whatIsIheMatter=qfar ndodhi?
cheat=qat
insult=fyerje
troll=karrem
other=tjetër
reportDescriptionHelp=Paste lidhje për të lojës (s) dhe të shpjegojnë çfarë është e gabuar në lidhje me këtë sjellje të përdoruesit.
by=nga %s
thisTopicIsNowClosed=Kjo temë është e mbyllur tani.
theming=thema
donate=dhurim
blog=bllok
map=hartë
realTimeWorldMapOfChessMoves=Ora Real Harta e botës e lëvizjeve të shahut
questionsAndAnswers=Pyetje & Pergjigje
notes=Vrejtje
typePrivateNotesHere=Shkruani një vrejtje në privat
gameDisplay=lojë në monitor
pieceAnimation=pjesëz e animuar
materialDifference=material mbrojtës
closeAccount=Llogari e mbyllur
closeYourAccount=Mbylle llogarin tuaj
changedMindDoNotCloseAccount=Kam ndryshuar mendjen time, mos e mbyllë llogarinë time
closeAccountExplanation=A jeni i sigurt se doni të mbyllni llogarinë tuaj? Mbyllja e llogarisë tuaj është një vendim i përhershëm. Ju nuk do të jeni në gjendje të hyni brënda, dhe Faqja e profilit të juaj do të jetë më i arritshëm.
thisAccountIsClosed=Kjo lloagari është e mbyllur
invalidUsernameOrPassword=Emrin e përdoruesit apo fjalëkalimin i pavlefshëm
emailMeALink=Email me një lidhje
currentPassword=fjalëkalimi aktual
newPassword=fjalëkalimi i ri
newPasswordAgain=Fjalëkalimi i ri (përsëri)
boardHighlights=Nxjerr në pah Bordin,(kontrollo veprimin e fundit)
pieceDestinations=Destinacionet IECE (lëvizje e vlefshme dheepërsëritëshme)
boardCoordinates=Koordinatat e Bordit (A-H, 1-8)
moveListWhilePlaying=Leviz listën duke luajtur
chessClock=ora e shahut
tenthsOfSeconds=Dhjetat e sekondës
never=kurrë
whenTimeRemainingLessThanTenSeconds=Kur koha e mbetur <10 sekonda
horizontalGreenProgressBars=Bartje horizontale progresi nga e gjelbërta
soundWhenTimeGetsCritical=Tingëllojë kur koha merr kahje kritike
gameBehavior=sjellja në lojë
premovesPlayingDuringOpponentTurn=paralevizje e kundershtarit (luajturt nga ana e tij)
takebacksWithOpponentApproval=Kthimi i levizjes (me miratimin kundërshtare)
promoteToQueenAutomatically=Nxitja automatike për mbretëreshë
claimDrawOnThreefoldRepetitionAutomatically=Pretendimi për barazim në%s tërheqje e shpejtë %s në mnyr automatike
privacy=Privatësia
letOtherPlayersChallengeYou=Le lojtarë të tjerë pas teje
sound=Zëri
soundControlInTheTopBarOfEveryPage=Kontrolli i shëndoshë është në bar të lartë të çdo faqe, në anën e djathtë.
yourPreferencesHaveBeenSaved=Parapëlqimet tuaja janë ruajtur.
none=asnjë
fast=shpejt
normal=normal
slow=ngadale
insideTheBoard=Brenda bordit
outsideTheBoard=Jashta bordit
onSlowGames=Ne lojra të ngadalshme
always=gjithëherë
inCasualGamesOnly=Në lojrat e rastësishme i vetëm
whenPremoving=kur tejkalohet
whenTimeRemainingLessThanThirtySeconds=Kur koha e mbetur <30 sekonda
difficultyEasy=e lehtë
difficultyNormal=normal
difficultyHard=e fortë
xLeftANoteOnY=%s la një shënim mbi%s
xCompetesInY=%s konkuron në%s
xAskedY=% s pyeti%s
xAnsweredY=%s përgjigj%s
xCommentedY=s%s komentoi%s
timeline=në faqen time
seeAllTournaments=të gjitha turniret e para
starting=startimi
allInformationIsPublicAndOptional=Të gjitha informacionet janë publike dhe opcionale
yourCityRegionOrDepartment=Qyteti juaj, rajoni, apo departamenti.
biographyDescription=Tregoni për vehte, çfarë ju pëlqen në shah, hapje të preferuar tuaja, lojra, lojtarët ...
maximumNbCharacters=Maksimum:%s karaktere.

View File

@ -316,3 +316,27 @@ thisMoveGivesYourOpponentTheAdvantage=Овај потез даје твом пр
openingFailed=Пропало отварање
openingSolved=Успешно отварање
recentlyPlayedOpenings=Последња отварања
puzzles=Zagonetke
coordinates=Koordinate
openings=Otvaranja
latestUpdates=Poslednje poruke
yes=da
help=pomoć
createANewTopic=Napravi novu temu
topics=teme
posts=Postovi
lastPost=Poslednji post
views=Gledano
replies=Odgovori
replyToThisTopic=Odgovori na ovu temu
reply=Odgovor
message=Poruka
createTheTopic=Napravi temu
reportAUser=Prijavi korisnika
user=Korisnik
reason=Razlog
whatIsIheMatter=Šta je u pitanju?
cheat=Prevarant
insult=Uvreda
troll=Trol
other=Ostalo

View File

@ -358,3 +358,62 @@ typePrivateNotesHere=Skriv privata anteckningar här
gameDisplay=Spelutseende
pieceAnimation=Pjäsanimation
materialDifference=Materialskillnad
closeAccount=Avsluta konto
closeYourAccount=Avsluta ditt konto
changedMindDoNotCloseAccount=Jag ändrade mig, avsluta inte mitt konto
closeAccountExplanation=Är du säker att du vill avsluta ditt konto? Att avsluta ditt konto är ett permanent beslut. Du kommer inte längre kunna logga in och din profilsida kommer inte längre vara tillgänglig.
thisAccountIsClosed=Det här kontot är avslutat
invalidUsernameOrPassword=Ogiltigt användarnamn eller lösenord
emailMeALink=Maila mig en länk
currentPassword=Nuvarande lösenord
newPassword=Nytt lösenord
newPasswordAgain=Repetera nytt lösenord
boardHighlights=Brädmarkeringar (föregående drag och schack)
pieceDestinations=Möjliga drag (giltiga drag och premoves)
boardCoordinates=Brädkoordinater (A-H, 1-8)
moveListWhilePlaying=Lista med drag under spelets gång
chessClock=Schack-klocka
tenthsOfSeconds=Tiondels sekunder
never=Aldrig
whenTimeRemainingLessThanTenSeconds=När återstående tid < 10 sekunder
horizontalGreenProgressBars=Horisontella gröna förloppsindikatorer
soundWhenTimeGetsCritical=Ljud när tiden blir kritisk
gameBehavior=Spelbeteende
premovesPlayingDuringOpponentTurn=Premoves (göra drag i förväg under motståndarens tur)
takebacksWithOpponentApproval=Ta tillbaka drag (med motståndarens godkännande)
promoteToQueenAutomatically=Uppgradera till drottning automatiskt
claimDrawOnThreefoldRepetitionAutomatically=Begär oavgjort automatiskt vid %strefaldig upprepning%s
privacy=Sekretess
letOtherPlayersFollowYou=Låt andra spelare följa dig
letOtherPlayersChallengeYou=Låt andra spelare utmana dig
sound=Ljud
soundControlInTheTopBarOfEveryPage=Ljudkontrollen finns längst till höger i den översta menyn på varje sida.
yourPreferencesHaveBeenSaved=Dina inställningar har sparats.
none=Ingen
fast=Snabb
normal=Medel
slow=Långsam
insideTheBoard=På brädet
outsideTheBoard=Utanför brädet
onSlowGames=På långsamma spel
always=Alltid
inCasualGamesOnly=Endast i ej rankade spel
whenPremoving=Vid premove
whenTimeRemainingLessThanThirtySeconds=När återstående tid < 30 sekunder
difficultyEasy=Lätt
difficultyNormal=Medel
difficultyHard=Svår
xLeftANoteOnY=%s skrev en notering på %s
xCompetesInY=%s tävlar i %s
xAskedY=%s frågade %s
xAnsweredY=%s svarade %s
xCommentedY=%s kommenterade %s
timeline=Tidslinje
seeAllTournaments=Se alla turneringar
starting=Startar:
allInformationIsPublicAndOptional=All information är allmän och frivillig.
yourCityRegionOrDepartment=Din stad, region eller område.
biographyDescription=Berätta om dig själv, vad du gillar med schack, dina favoritöppningar, spel, spelare
maximumNbCharacters=Max: %s tecken.
blocks=%s blockeringar
listBlockedPlayers=Lista spelare som du blockerat

View File

@ -358,3 +358,60 @@ typePrivateNotesHere=พิมพ์หมายเหตุส่วนตั
gameDisplay=การแสดงเกม
pieceAnimation=ความเร็วตัวหมาก
materialDifference=ความแตกต่างในวัตถุ
closeAccount=ปิดบัญชี
closeYourAccount=ปิดบัญชีของคุณ
changedMindDoNotCloseAccount=ฉันเปลี่ยนใจแล้ว, อย่าปิดบัญชีของฉัน
closeAccountExplanation=คุณแน่ใจนะว่าจะปิดบัญชีของคุณ? การปิดบัญชีจะเป็นการตัดสินใจที่ถาวร คุณจะไม่สามารถลงชื่อเข้าได้อีก และข้อมูลประจำตัวของคุณจะไม่สามารถเข้าถึงได้อีกเลย
thisAccountIsClosed=บัญชีนี้ถูกปิดแล้ว
invalidUsernameOrPassword=ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง
emailMeALink=ส่งลิงค์ให้ฉันทางอีเมล
currentPassword=รหัสผ่านปัจจุบัน
newPassword=รหัสผ่านใหม่
newPasswordAgain=รหัสผ่านใหม่ (อีกครั้ง)
boardHighlights=สีเน้นบนกระดาน (ตาเดินล่าสุด และการรุก)
pieceDestinations=เส้นทางของหมาก (ช่องที่เดินได้ และการเดินล่วงหน้า)
boardCoordinates=พิกัดกระดาน
moveListWhilePlaying=แสดงรายชื่อตาที่เดินในขณะที่เล่น
chessClock=นาฬิกาหมากรุก
tenthsOfSeconds=ทศนิยมของวินาที
never=ไม่ต้อง
whenTimeRemainingLessThanTenSeconds=เมื่อเหลือเวลา < 10 วินาที
horizontalGreenProgressBars=แถบแนวนอนสีเขียวแสดงความคืบหน้า
soundWhenTimeGetsCritical=เสียงเมื่อเวลาถึงจุดวิกฤต
gameBehavior=พฤติกรรมของเกม
premovesPlayingDuringOpponentTurn=การเดินล่วงหน้า (การเล่นในขณะที่เป็นตาเดินของคู่แข่ง)
takebacksWithOpponentApproval=การเดินใหม่ (เมื่อคู่แข่งเห็นชอบ)
promoteToQueenAutomatically=เลื่อนขั้นเบี้ยเป็นควีนอัตโนมัติ
claimDrawOnThreefoldRepetitionAutomatically=ใช้สิทธิ์การเสมอเมื่อ %sรุกล้อ (เดินซ้ำสามรอบ)%s อัตโนมัติ
privacy=ความเป็นส่วนตัว
letOtherPlayersFollowYou=อนุญาตให้ผู้อื่นติดตามคุณได้
letOtherPlayersChallengeYou=อนุญาตให้ผู้อื่นท้าดวลเกมกับคุณได้
sound=เสียง
soundControlInTheTopBarOfEveryPage=ตัวควบคุมเสียงอยู่ตรงแถบบนริมขวาของทุกหน้า
yourPreferencesHaveBeenSaved=การตั้งค่าของคุณถูกบันทึกแล้ว
none=ไม่มี
fast=เร็ว
normal=ปกติ
slow=ช้า
insideTheBoard=ด้านในกระดาน
outsideTheBoard=ด้านนอกกระดาน
onSlowGames=ในเกมรูปแบบช้า
always=เสมอ
inCasualGamesOnly=เฉพาะเกมธรรมดา
whenPremoving=เมื่อกำลังเดินล่วงหน้า
whenTimeRemainingLessThanThirtySeconds=เมื่อเวลาเหลือ < 30 วินาที
difficultyEasy=ง่าย
difficultyNormal=ปกติ
difficultyHard=ยาก
xLeftANoteOnY=%s ได้ทิ้งโน้ตไว้ให้ %s
xCompetesInY=%s แข่งขันใน %s
xAskedY=%s ได้ถาม %s
xAnsweredY=%s ได้ตอบ %s
xCommentedY=%s ได้แสดงความคิดเห็น %s
timeline=ไทม์ไลน์
seeAllTournaments=ดูทัวร์นาเมนต์ทั้งหมด
starting=กำลังเริ่ม:
allInformationIsPublicAndOptional=ข้อมูลทั้งหมดเป็นสาธารณะ และไม่บังคับกรอก
yourCityRegionOrDepartment=เมือง, ศาสนา, หรือภาคส่วนของคุณ
biographyDescription=บอกเกี่ยวกับตัวคุณ, คุณชอบอะไรในหมากรุก, การเปิดเกม, เกม, หรือผู้เล่น ฯลฯ ที่คุณชอบ
maximumNbCharacters=สูงสุด: %s ตัวอักษร

View File

@ -316,3 +316,66 @@ thisMoveGivesYourOpponentTheAdvantage=Bu hamle rakibe avantaj sağlıyor.
openingFailed=Açılış başarısız
openingSolved=Açılış çözüldü
recentlyPlayedOpenings=Önceden oynanmış açılışlar
puzzles=Bulmacalar
coordinates=Koordinatlar
openings=Açılışlar
latestUpdates=Son güncellemeler
tournamentWinners=Turnuva şampiyonları
name=İsim
description=Açıklama
no=Hayır
yes=Evet
help=Yardım:
createANewTopic=Yeni bir konu yarat
topics=Konular
posts=Gönderiler
lastPost=Son gönderi
views=Gözatma sayısı
replies=Cevaplar
replyToThisTopic=Bu konu hakkında cevap yaz
reply=Cevap yaz
message=Mesaj
createTheTopic=Konuyu yarat
reportAUser=Kullanıcı ihbar et
user=Kullanıcı
reason=Sebep
whatIsIheMatter=Konu ne?
cheat=Hile
insult=Hakaret
troll=Trol
other=Diğer
reportDescriptionHelp=Oyunun (veya oyunların) linkini yapıştırın ve kullanıcı hakkındaki şikayetinizi açıklayın.
by=%s yazdı
thisTopicIsNowClosed=Bu konu kapanmıştır.
theming=Ortam
donate=Bağış yap
blog=Blog
map=Harita
realTimeWorldMapOfChessMoves=Anlık satranç hamlelerini gösteren dünya haritası
questionsAndAnswers=Sorular ve Cevaplar
notes=Notlar
typePrivateNotesHere=Özel notlarınızı buraya yazın
gameDisplay=Oyun görünümü
pieceAnimation=Hamle canlandırma
materialDifference=Materyal fark
closeAccount=Hesabı kapat
closeYourAccount=Hesabını kapat
changedMindDoNotCloseAccount=Fikrimi değiştirdim, hesabımı kapatmak istemiyorum
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.
thisAccountIsClosed=Hesap kapatılmıştır.
invalidUsernameOrPassword=Hatalı kullanıcı adı ya da şifre
emailMeALink=E-Posta ile giriş linki yolla
currentPassword=Geçerli şifre
newPassword=Yeni şifre
newPasswordAgain=Yeni şifre(tekrar)
boardHighlights=Tahta uyarıları (son hamle ve şah çekme)
pieceDestinations=Taşın gidebileceği kareler (kurallara uygun hamleler)
boardCoordinates=Tahta kordinatları
moveListWhilePlaying=Oyun sırasında hamle listesi
chessClock=Satranç saati
tenthsOfSeconds=Son 10 saniye
never=Asla
whenTimeRemainingLessThanTenSeconds=kalan zaman < 10 saniye
horizontalGreenProgressBars=Yeşil yatay ilerleme çubuğu
soundWhenTimeGetsCritical=Zaman azaldığında sesle uyarı
gameBehavior=Oyun Durumu

View File

@ -316,3 +316,102 @@ thisMoveGivesYourOpponentTheAdvantage=Цей хід дає Вашому опон
openingFailed=Невдале відкриття
openingSolved=Дебют пройдено
recentlyPlayedOpenings=Останні розіграні дебюти
puzzles=Тактика
coordinates=Координати
openings=Дебюти
latestUpdates=Останні оновлення
tournamentWinners=Переможці турнірів
name=Назва
description=Опис
no=Ні
yes=Так
help=Допомога:
createANewTopic=Створити нову тему
topics=Теми
posts=Публікації
lastPost=Остання публікація
views=Переглядів
replies=Відповідей
replyToThisTopic=Відповідь на цю тему
reply=Відповісти
message=Повідомлення
createTheTopic=Створити тему
reportAUser=Розповісти про користувача
user=Користувач
reason=Підстава
whatIsIheMatter=В чому справа?
cheat=Шахрайство
insult=Образа
troll=Набридливість
other=Інше
reportDescriptionHelp=Вставте посилання на гру(ігри) та поясніть, що не так із поведінкою цього користувача.
by=від %s
thisTopicIsNowClosed=Наразі цю тему завершено.
theming=Вигляд
donate=Пожертви
blog=Блог
map=Мапа
realTimeWorldMapOfChessMoves=Світова мапа шахових ходів наживо
questionsAndAnswers=Запитання та відповіді
notes=Нотатки
typePrivateNotesHere=Залишайте приватні нотатки тут
gameDisplay=Вигляд шахівниці
pieceAnimation=Анімація ходів
materialDifference=Співвідношення матеріалу
closeAccount=Закрити обліковий запис
closeYourAccount=Закрити Ваш обліковий запис
changedMindDoNotCloseAccount=Я передумав, не закривайте мій обліковий запис
closeAccountExplanation=Ви впевнені, що хочете закрити Ваш обліковий запис? Закриття Вашого облікового запису є незмінним рішенням. Ви більше не зможете заходити та сторінка Вашого профілю надалі буде недоступна.
thisAccountIsClosed=Цей обліковий запис закрито.
invalidUsernameOrPassword=Недійсне ім’я користувача або пароль
emailMeALink=Надішліть мені посилання
currentPassword=Поточний пароль
newPassword=Новий пароль
newPasswordAgain=Новий пароль (ще раз)
boardHighlights=Висвітлення кольором (останнього ходу та шаху)
pieceDestinations=Поля для ходів (можливі ходи та ходи на випередження)
boardCoordinates=Координати (A-H, 1-8)
moveListWhilePlaying=Список ходів під час гри
chessClock=Шаховий годинник
tenthsOfSeconds=Десяті частки секунди
never=Ніколи
whenTimeRemainingLessThanTenSeconds=Коли часу залишається < 10 секунд
horizontalGreenProgressBars=Горизонтальна зелена смуга поступу
soundWhenTimeGetsCritical=Звук, коли часу стає зовсім мало
gameBehavior=Хід гри
premovesPlayingDuringOpponentTurn=Ходи на випередження (коли хід суперника)
takebacksWithOpponentApproval=Можливість переходити (за згоди суперника)
promoteToQueenAutomatically=Перетворення пішака завжди на ферзя
claimDrawOnThreefoldRepetitionAutomatically=Автоматично вимагати нічию при %sтриразовому повторенні%s
privacy=Конфіденційність
letOtherPlayersFollowYou=Дозволити іншим спостерігати за Вами
letOtherPlayersChallengeYou=Дозволити іншим кидати Вам виклик
sound=Звук
soundControlInTheTopBarOfEveryPage=Контроль звуку є на горішній смузі кожної сторінки, праворуч
yourPreferencesHaveBeenSaved=Ваші налаштування збережено.
none=Немає
fast=Швидко
normal=Нормально
slow=Повільно
insideTheBoard=Всередині шахівниці
outsideTheBoard=За межами шахівниці
onSlowGames=У довгих іграх
always=Завжди
inCasualGamesOnly=Тільки у товариських іграх
whenPremoving=Для ходів на випередження
whenTimeRemainingLessThanThirtySeconds=Коли часу залишається < 30 секунд
difficultyEasy=Легко
difficultyNormal=Нормально
difficultyHard=Складно
xLeftANoteOnY=%s накинули оком на %s
xCompetesInY=%s грає у %s
xAskedY=%s має запитання %s
xAnsweredY=%s має відповідь на %s
xCommentedY=%s має коментар на %s
timeline=Смуга подій
seeAllTournaments=Дивитись усі турніри
starting=Початок:
allInformationIsPublicAndOptional=Уся інформація публічна та необов’язкова.
yourCityRegionOrDepartment=Ваше місто, область, або район.
biographyDescription=Розкажіть про себе, що Вам подобається у грі в шахи, які Ваші улюблені дебюти, ігри, гравці…
maximumNbCharacters=Максимум: %s символів.

View File

@ -25,6 +25,7 @@ POST /rel/unblock/:userId controllers.Relation.unblock(userId: Stri
GET /@/:username/following controllers.Relation.following(username: String)
GET /@/:username/followers controllers.Relation.followers(username: String)
GET /@/:username/suggestions controllers.Relation.suggest(username: String)
GET /rel/blocks controllers.Relation.blocks
# User
GET /@/:username/opponents controllers.User.opponents(username: String)
@ -65,7 +66,8 @@ GET /games/checkmate controllers.Game.checkmate(page: Int ?= 1)
GET /games/bookmark controllers.Game.bookmark(page: Int ?= 1)
GET /games/analysed controllers.Game.analysed(page: Int ?= 1)
GET /games/imported controllers.Game.imported(page: Int ?= 1)
GET /games/export/:user controllers.Game.export(user: String)
POST /games/export/:user controllers.Game.exportConfirm(user: String)
GET /games/export-form/:user controllers.Game.export(user: String)
# Search
GET /games/search controllers.Game.search(page: Int ?= 1)

35
issues
View File

@ -1,35 +0,0 @@
# ornicar/lila open issues
184 Desktop notifications [feature] 1
183 antichess doesn't play well with takebacks [bug] 1
181 miniboard empty [bug] [planned] 1
180 autoswitch after no other game in simul [improvement] [planned]
179 simul autoswitch on game end [improvement] [planned]
178 make sure ragequit is disabled in simul [bug] [planned]
176 Spectator chat split by move number for the benefit of kibitzing context [feature]
175 Implement realtime private messaging a la online-go/facebook [feature] 1
174 clicking on other language subdomain should retain preferred language [feature] [planned]
169 Predefined positions for game creation [feature] [planned]
168 Add advanced options in analysis board [feature]
167 Atomic chess [feature] [in progress]
166 make puzzle of the day embeddable for site owners [feature]
165 [Translation] To French. 'only accepts challenges from friends.' 1
164 Unsubscribe from something [feature]
163 The "%s games" link under favourite opponents no longer works
161 TV channels [feature]
155 Link Win/Draw/Loss indicator in Tournament Standings to Games [improvement]
153 Add support for anti-chess in PDF exporter [improvement]
149 Simul tournament [feature] [planned] @
143 Stream title on TV doesn't wrap [improvement] 2
142 Predefine move sequences in correspondence chess [feature] [planned] 3
130 Several colours for clock bar [feature]
128 when importing PGN, accept clock information [feature] 2
127 export clock information in PGN [feature] 6
126 Feature: Possibility to edit/delete forum posts [feature]
114 Wrong encoding in names of wiki-pages [bug]
97 Feature: Ability to rematch with different game settings [feature] 2
77 Feature wish: Training mode long time chart [feature]
73 Intermitent problem creating tournaments [bug] [can't reproduce]
69 timing in "Spectator room" chat [feature]
59 Feature: Clock pause [feature] 1
58 separate TVs for bullet-time, blitz and slow games. [feature] [planned] 1
53 Advanced comments [feature] 3

@ -1 +1 @@
Subproject commit 785e4fa7dd4108ab673573d2aaf221182596e850
Subproject commit 116abbb200fd913934c76574930cff967d00e991

View File

@ -2,6 +2,7 @@ package lila.game
import org.joda.time.DateTime
import scala.util.{ Try, Success, Failure }
import chess.variant.Variant
import chess._
@ -163,13 +164,13 @@ object BinaryFormat {
} toArray)
}
def read(ba: ByteArray): PieceMap = {
def read(ba: ByteArray, variant: Variant): PieceMap = {
def splitInts(b: Byte) = {
val int = b.toInt
Array(int >> 4, int & 0x0F)
}
def intPiece(int: Int): Option[Piece] =
intToRole(int & 7) map { role => Piece(Color((int & 8) == 0), role) }
intToRole(int & 7, variant) map { role => Piece(Color((int & 8) == 0), role) }
val pieceInts = ba.value flatMap splitInts
(Pos.all zip pieceInts flatMap {
case (pos, int) => intPiece(int) map (pos -> _)
@ -179,14 +180,15 @@ object BinaryFormat {
// cache standard start position
val standard = write(Board.init(chess.variant.Standard).pieces)
private def intToRole(int: Int): Option[Role] = int match {
private def intToRole(int: Int, variant: Variant): Option[Role] = int match {
case 6 => Some(Pawn)
case 1 => Some(King)
case 2 => Some(Queen)
case 3 => Some(Rook)
case 4 => Some(Knight)
case 5 => Some(Bishop)
case 7 => Some(Antiking)
// Legacy from when we used to have an 'Antiking' piece
case 7 if variant.antichess => Some(King)
case _ => None
}
private def roleToInt(role: Role): Int = role match {
@ -196,7 +198,6 @@ object BinaryFormat {
case Rook => 3
case Knight => 4
case Bishop => 5
case Antiking => 7
}
}

View File

@ -93,6 +93,8 @@ case class Game(
createdAt plusMillis (lmt * 100)
} orElse updatedAt
def updatedAtOrCreatedAt = updatedAt | createdAt
def lastMoveTimeInSeconds: Option[Int] = lastMoveTime.map(x => (x / 10).toInt)
// in tenths of seconds
@ -113,7 +115,7 @@ case class Game(
lazy val toChess: ChessGame = {
val pieces = BinaryFormat.piece read binaryPieces
val pieces = BinaryFormat.piece.read(binaryPieces, variant)
ChessGame(
board = Board(pieces, toChessHistory, variant),
@ -343,7 +345,9 @@ case class Game(
def hasClock = clock.isDefined
def isUnlimited = !hasClock && daysPerTurn.isEmpty
def hasCorrespondenceClock = daysPerTurn.isDefined
def isUnlimited = !hasClock && !hasCorrespondenceClock
def isClockRunning = clock ?? (_.isRunning)

View File

@ -119,7 +119,7 @@ object GameRepo {
def nowPlaying(user: User): Fu[List[Pov]] =
$find(Query nowPlaying user.id) map {
_ flatMap { Pov(_, user) } sortBy Pov.priority
_ flatMap { Pov(_, user) } sortWith Pov.priority
}
// gets most urgent game to play

View File

@ -23,11 +23,12 @@ case class Pov(game: Game, color: Color) {
def withGame(g: Game) = copy(game = g)
def withColor(c: Color) = copy(color = c)
def isMyTurn = game.started && game.playable && game.turnColor == color
lazy val isMyTurn = game.started && game.playable && game.turnColor == color
def remainingSeconds: Option[Int] = game.clock.map(_.remainingTime(color).toInt).orElse {
game.correspondenceClock.map(_.remainingTime(color).toInt)
}
lazy val remainingSeconds: Option[Int] =
game.clock.map(_.remainingTime(color).toInt).orElse {
game.correspondenceClock.map(_.remainingTime(color).toInt)
}
def hasMoved = game playerHasMoved color
@ -51,14 +52,20 @@ object Pov {
def apply(game: Game, user: lila.user.User): Option[Pov] =
game player user map { apply(game, _) }
def priority(pov: Pov) = {
val base = if (pov.isMyTurn) {
if (pov.hasMoved) pov.remainingSeconds.getOrElse(Int.MaxValue - 1)
else 10 // first move has priority over games with more than 10s left
}
else Int.MaxValue
if (pov.game.hasClock) base - 1000 else base
}
private def orInf(i: Option[Int]) = i getOrElse Int.MaxValue
private def isFresher(a: Pov, b: Pov) =
a.game.updatedAtOrCreatedAt.getSeconds > b.game.updatedAtOrCreatedAt.getSeconds
def priority(a: Pov, b: Pov) =
if (!a.isMyTurn && !b.isMyTurn) isFresher(a, b)
else if (!a.isMyTurn && b.isMyTurn) false
else if (a.isMyTurn && !b.isMyTurn) true
// first move has priority over games with more than 30s left
else if (!a.hasMoved && orInf(b.remainingSeconds) > 30) true
else if (!b.hasMoved && orInf(a.remainingSeconds) > 30) false
else if (orInf(a.remainingSeconds) < orInf(b.remainingSeconds)) true
else if (orInf(b.remainingSeconds) < orInf(a.remainingSeconds)) false
else isFresher(a, b)
}
case class PovRef(gameId: String, color: Color) {

View File

@ -8,6 +8,7 @@ import org.specs2.mutable._
import org.specs2.specification._
import lila.db.ByteArray
import chess.variant.Standard
class BinaryPieceTest extends Specification {
@ -15,7 +16,7 @@ class BinaryPieceTest extends Specification {
def write(all: PieceMap): List[String] =
(BinaryFormat.piece write all).showBytes.split(',').toList
def read(bytes: List[String]): PieceMap =
BinaryFormat.piece read ByteArray.parseBytes(bytes)
BinaryFormat.piece.read(ByteArray.parseBytes(bytes), Standard)
"binary pieces" should {
"write" should {

View File

@ -49,7 +49,7 @@ private[i18n] final class GitWrite(
val commitMsg = commitMessage(translation, name)
sender ! (git branchExists branch flatMap {
_.fold(
fuloginfo("! Branch already exists: " + branch),
fulogwarn("! Branch already exists: " + branch),
git.checkout(branch, true) >>
writeMessages(translation) >>
fuloginfo("Add " + relFileOf(translation)) >>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,33 @@
package lila.opening
case class Identified(
name: Identified.Name,
moves: Identified.Moves)
case object Identified {
def many(fullNames: List[String], max: Int): List[Identified] =
fullNames.map {
_.split(',').take(2).mkString(",")
}.distinct take max map { name =>
Identified(
name = name,
moves = ~(movesPerName get name))
}
type Name = String
type Moves = String
private lazy val movesPerName: Map[Name, Moves] =
chess.Openings.db.foldLeft(Map[Name, Moves]()) {
case (outerAcc, (_, fullName, moves)) => List(1, 2).foldLeft(outerAcc) {
case (acc, length) =>
val name = fullName.split(',').take(length).mkString(",")
acc get name match {
case None => acc + (name -> moves)
case Some(ms) if moves.size < ms.size => acc + (name -> moves)
case _ => acc
}
}
}
}

View File

@ -20,7 +20,7 @@ case class Opening(
attempts: Int,
wins: Int) {
lazy val goal = qualityMoves.count(_.quality == Quality.Good) min 5
lazy val goal = qualityMoves.count(_.quality == Quality.Good) min 4
lazy val qualityMoves: List[QualityMove] = {
val bestCp = moves.foldLeft(Int.MaxValue) {
@ -39,7 +39,7 @@ sealed abstract class Quality(val threshold: Int) {
}
object Quality {
case object Good extends Quality(30)
case object Dubious extends Quality(80)
case object Dubious extends Quality(70)
case object Bad extends Quality(Int.MaxValue)
def apply(cp: Int) =

View File

@ -71,13 +71,13 @@ private[opening] final class OpeningApi(
}
}
object name {
object identify {
def find(fen: String): Fu[List[String]] = nameColl.find(
def apply(fen: String, max: Int): Fu[List[Identified]] = nameColl.find(
BSONDocument("_id" -> fen),
BSONDocument("_id" -> false)
).one[BSONDocument] map { opt =>
~(opt ?? (_.getAs[List[String]]("names")))
Identified.many(~(opt ?? (_.getAs[List[String]]("names"))), max)
}
}
}

View File

@ -11,6 +11,17 @@ final class DataForm(val captcher: akka.actor.ActorSelection) extends lila.hub.C
import DataForm._
case class Empty(gameId: String, move: String)
val empty = Form(mapping(
"gameId" -> nonEmptyText,
"move" -> nonEmptyText
)(Empty.apply)(_ => None)
.verifying(captchaFailMessage, validateCaptcha _)
)
def emptyWithCaptcha = withCaptcha(empty)
val signup = Form(mapping(
"username" -> nonEmptyText.verifying(
Constraints minLength 2,

View File

@ -12,7 +12,7 @@
</div>
<div style='font-size: 13px; margin-top: 6px; line-height: 12px;'>
Sorry, but your browser does not support WebSockets.<br />
We recommend using the latest version of Firefox, Chrome, Safari or Opera.
We recommend using the latest version of Firefox or Chrome.
</div>
</div>
<div style='width: 80px; float: left;'>
@ -21,8 +21,5 @@
<div style='width: 80px; float: left;'>
<a href='http://www.google.com/chrome' target='_blank'><img src='/assets/images/browser-chrome.png' style='border: none;' alt='Get Google Chrome'/></a>
</div>
<div style='width: 80px; float: left;'>
<a href='http://www.opera.com/download/' target='_blank'><img src='/assets/images/browser-opera.png' style='border: none;' alt='Get Opera'/></a>
</div>
</div>
</div>

Binary file not shown.

Binary file not shown.

View File

@ -93,9 +93,9 @@
<glyph unicode="&#60;" d="M498 14c-19-19-49-19-68 0l-85 85c-35-22-76-36-121-36-124 0-224 101-224 225 0 124 100 224 224 224 124 0 225-100 225-224 0-45-14-86-36-121l85-85c19-19 19-49 0-68z m-274 434c-88 0-160-72-160-160 0-89 72-161 160-161 89 0 161 72 161 161 0 88-72 160-161 160z m32-257l-64 0 0 65-64 0 0 64 64 0 0 64 64 0 0-64 65 0 0-64-65 0z"/>
<glyph unicode="&#61;" d="M96 128l320 0 0 256-320 0z m64 192l192 0 0-128-192 0z m-96 96l96 0 0 32-128 0 0-128 32 0z m0-224l-32 0 0-128 128 0 0 32-96 0z m288 256l0-32 96 0 0-96 32 0 0 128z m96-352l-96 0 0-32 128 0 0 128-32 0z"/>
<glyph unicode="&#63;" d="M73 137l0-55c0-2-1-4-3-6-1-2-4-3-6-3l-55 0c-2 0-4 1-6 3-2 2-3 4-3 6l0 55c0 3 1 5 3 7 2 1 4 2 6 2l55 0c2 0 5-1 6-2 2-2 3-4 3-7z m0 110l0-55c0-2-1-5-3-6-1-2-4-3-6-3l-55 0c-2 0-4 1-6 3-2 1-3 4-3 6l0 55c0 2 1 4 3 6 2 2 4 3 6 3l55 0c2 0 5-1 6-3 2-2 3-4 3-6z m0 110l0-55c0-3-1-5-3-7-1-2-4-2-6-2l-55 0c-2 0-4 0-6 2-2 2-3 4-3 7l0 55c0 2 1 4 3 6 2 2 4 3 6 3l55 0c2 0 5-1 6-3 2-2 3-4 3-6z m439-220l0-55c0-2-1-4-3-6-2-2-4-3-6-3l-384 0c-3 0-5 1-7 3-1 2-2 4-2 6l0 55c0 3 1 5 2 7 2 1 4 2 7 2l384 0c2 0 4-1 6-2 2-2 3-4 3-7z m-439 329l0-55c0-2-1-4-3-6-1-2-4-3-6-3l-55 0c-2 0-4 1-6 3-2 2-3 4-3 6l0 55c0 3 1 5 3 7 2 2 4 2 6 2l55 0c2 0 5 0 6-2 2-2 3-4 3-7z m439-219l0-55c0-2-1-5-3-6-2-2-4-3-6-3l-384 0c-3 0-5 1-7 3-1 1-2 4-2 6l0 55c0 2 1 4 2 6 2 2 4 3 7 3l384 0c2 0 4-1 6-3 2-2 3-4 3-6z m0 110l0-55c0-3-1-5-3-7-2-2-4-2-6-2l-384 0c-3 0-5 0-7 2-1 2-2 4-2 7l0 55c0 2 1 4 2 6 2 2 4 3 7 3l384 0c2 0 4-1 6-3 2-2 3-4 3-6z m0 109l0-55c0-2-1-4-3-6-2-2-4-3-6-3l-384 0c-3 0-5 1-7 3-1 2-2 4-2 6l0 55c0 3 1 5 2 7 2 2 4 2 7 2l384 0c2 0 4 0 6-2 2-2 3-4 3-7z"/>
<glyph unicode="&#91;" d="M416 160c44 0 80-36 80-80 0-44-36-80-80-80-44 0-80 36-80 80 0 5 0 10 1 14l-186 104c-14-13-34-22-55-22-44 0-80 36-80 80 0 44 36 80 80 80 21 0 41-9 55-22l186 104c-1 5-1 9-1 14 0 44 36 80 80 80 44 0 80-36 80-80 0-44-36-80-80-80-22 0-42 9-56 23l-186-102c1-5 2-11 2-17 0-6-1-12-2-17l185-102c14 14 35 23 57 23z"/>
<glyph unicode="&#62;" d="M256 320c-35 0-64-29-64-64 0-35 29-64 64-64 35 0 64 29 64 64 0 35-29 64-64 64z m197-8c-7 2-13 6-19 11-8-16-19-32-30-49-18 23-38 46-61 69-23 22-46 43-69 61 55 39 108 62 145 62 16 0 27-4 35-12 9-8 12-22 12-38 1 0 2 0 3 0 6 0 12-1 18-3 1 24-5 43-18 56-12 12-28 18-50 18-43 0-102-26-163-70-61 44-120 70-163 70-5 0-9 0-13-1 6-5 10-12 13-20 37 0 90-23 145-62-23-18-46-39-69-61-22-23-43-46-61-69-18 26-33 51-44 76-7 16-12 32-15 45-2 0-4 0-6 0-6 0-11 1-16 2 3-17 9-35 18-56 12-27 29-56 50-85-21-29-38-58-50-85-26-58-27-104-2-128 12-12 28-18 50-18 64 0 162 56 250 144 22 23 43 46 61 69 59-83 76-154 50-180-8-8-19-12-35-12-20 0-44 7-71 19-3-7-7-13-12-18 31-14 59-22 83-22 22 0 38 6 50 18 37 37 14 122-52 213 14 19 26 38 36 56z m-360-266c-16 0-27 4-35 12-18 17-15 55 6 104 11 25 26 50 44 76 18-23 39-47 61-69 23-23 46-43 69-61-55-39-108-62-145-62z m235 138c-23-23-48-44-72-63-24 19-48 40-72 63-23 24-44 48-63 72 19 24 40 48 63 72 24 23 48 44 72 63 24-19 48-40 72-63 24-24 45-48 63-72-19-24-40-48-63-72z m141 200c-11 0-21-10-21-21 0-12 10-22 21-22 12 0 22 10 22 22 0 11-10 21-22 21z m-170-277c-12 0-22-10-22-22 0-11 10-21 22-21 11 0 21 10 21 21 0 12-10 22-21 22z m-256 320c11 0 21 9 21 21 0 12-10 21-21 21-12 0-22-9-22-21 0-12 10-21 22-21z"/>
<glyph unicode="&#93;" d="M487 375c7-10 9-23 5-36l-79-259c-3-12-11-23-22-31-11-8-22-12-35-12l-263 0c-15 0-29 5-43 15-13 10-23 23-28 37-5 13-5 25-1 37 0 0 0 3 1 7 1 5 1 8 1 11 0 2 0 4-1 6 0 3-1 5-1 6 1 2 2 4 3 6 1 2 2 4 4 6 2 3 4 5 5 7 5 7 9 16 13 26 4 10 7 19 9 26 0 2 0 5 0 9-1 4-1 6 0 8 0 2 2 5 4 8 3 3 5 5 5 7 4 6 8 15 12 26 4 11 7 19 7 26 1 1 0 4 0 9-1 4-1 7 0 8 1 2 3 5 6 8 4 4 6 6 6 7 4 5 8 13 13 24 4 11 7 20 7 28 1 1 0 4 0 7-1 3-1 6-1 7 0 2 1 4 3 6 1 1 3 4 5 6 2 3 3 5 5 6 1 2 3 5 4 9 2 3 3 7 5 10 1 3 2 6 4 10 2 4 4 7 6 9 2 3 4 5 7 7 3 2 7 3 11 3 3 0 8 0 13-1l0-1c7 2 12 2 14 2l218 0c14 0 25-5 32-16 8-10 10-23 6-37l-79-259c-7-22-13-37-20-43-7-7-19-10-37-10l-248 0c-5 0-9-2-11-5-2-3-2-7 0-12 4-13 18-20 41-20l264 0c5 0 10 2 16 5 5 3 8 6 10 11l85 282c2 5 2 10 2 17 7-3 13-7 17-13z m-304 0c-1-3-1-5 0-7 1-1 3-2 6-2l174 0c2 0 4 1 7 2 2 2 4 4 5 7l6 18c0 3 0 5-1 7-1 1-3 2-6 2l-173 0c-3 0-5-1-8-2-2-2-4-4-4-7z m-24-73c-1-3-1-5 0-7 2-2 3-2 6-2l174 0c2 0 5 0 7 2 3 2 4 4 5 7l6 18c1 2 0 5-1 6-1 2-3 3-5 3l-174 0c-3 0-5-1-7-3-3-1-4-4-5-6z"/>
<glyph unicode="&#96;" d="M228 359c5 0 9 1 14 2 2 0 4 1 5 3 1 2 2 4 2 6l-24 135c-1 5-5 8-10 7-42-7-70-47-62-89 6-37 38-64 75-64z m-18 134l20-116-2-1c-29 0-53 21-58 50-6 29 12 58 40 67z m154-132c5-1 9-2 14-2 37 0 69 27 75 64 8 42-20 82-62 89-2 0-4 0-6-2-2-1-3-3-4-5l-23-135c-1-4 2-9 6-9z m32 132c28-9 46-38 41-67-6-29-31-51-61-49z m99-374l-94 0 6 33c5-3 10-6 16-7 19-4 37 9 40 28l14 90c3 15-1 31-10 44-9 13-23 22-38 25l-67 12c-3 0-5 0-7-2-2-1-3-3-3-5l-31-177c-1-4 2-9 6-9 5-1 8-6 7-10l-3-22-57 0-2 22c-1 4 2 9 7 10 2 0 4 1 5 3 2 2 2 4 2 6l-31 177c-1 5-6 8-10 7l-68-12c-32-6-54-37-48-69l15-89c2-9 7-17 14-22 8-6 17-8 26-6 6 1 11 4 15 7l6-34-43 0 0 9c0 5-4 9-8 9-5 0-9-4-9-9l0-9-128 0c-13 0-15-18-15-34 0-15 2-34 15-34l128 0 0-25c0-5 4-9 9-9 4 0 8 4 8 9l0 25 56 0 4-23c3-17 18-28 34-28 2 0 4 0 6 0 18 4 31 21 28 40l-2 11 31 0-2-11c-2-9 0-18 5-26 5-7 13-12 22-14 2 0 4 0 6 0 17 0 31 12 34 28l4 23 73 0c25 0 43 39 43 60 0 5-4 8-9 8z m-284 65l0 1-10 58c-1 5-5 8-10 7-4 0-8-5-7-9l10-58 0 0 0-1c2-9-4-18-13-19-5-1-9 0-13 3-4 2-6 6-7 11l-15 89c-4 23 11 45 34 49l59 11 29-162c-10-5-15-15-13-26l2-19-35 0z m-117-82l17 0 0-34-17 0z m-17-34l-17 0 0 34 17 0z m-57 34l23 0 0-34-23 0c-2 7-2 27 0 34z m108-34l0 34 17 0 0-34z m145-31c1-9-5-18-14-20-9-2-18 5-20 14l-3 20 34 0z m-111 31l0 34 166 0-6-34z m205-37c-2-9-10-16-20-14-4 1-8 3-11 7-2 4-3 8-3 13l18 101c2 11-3 21-12 26l28 162 59-11c11-2 21-8 27-17 7-10 9-21 7-32l-14-91c-2-9-10-15-20-13-4 0-8 3-11 7-2 3-3 8-3 12l0 1 11 59c0 4-3 9-7 10-5 1-9-3-10-7l-11-61 0-1z m94 37l-70 0 7 34 87 0c-3-14-14-34-24-34z"/>
<glyph unicode="&#64;" d="M223 464c-63-3-97-16-105-38-1-3-2-7-2-17-1-20-3-35-7-51-6-22-10-31-39-72-15-22-22-42-22-59 0-21 7-40 22-55 12-12 29-21 46-25 10-1 26-1 35 1 16 3 31 10 45 21 3 1 5 3 5 3 0 0 0-4 0-8 0-16 2-28 7-37 2-4 4-7 10-13 4-4 10-9 14-12l6-4 0-9 0-8-14-8-13-9-1-12 0-13 13 0 13 0 4-12 4-13 23 0 5 13 4 12 13 0 12 0 0 13 0 12-14 9-13 8 0 8 0 9 5 4c8 6 21 18 24 23 4 7 8 23 8 37 1 9 1 11 2 9 1-1 14-10 21-13 15-8 28-12 45-12 20 0 36 5 50 15 7 4 19 17 23 24 13 20 16 44 8 66-5 14-12 27-27 48-13 18-14 20-19 29-11 22-16 46-18 80-1 19-2 22-9 29-8 9-20 15-40 19-27 7-79 10-124 8z m-9-56l42-4 42 4c40 3 46 3 52 2 8-2 10-10 3-15-11-8-49-12-105-11-46 1-77 4-89 11-4 2-5 4-5 7 1 5 4 7 11 8 4 1 6 1 49-2z m-20-78c12-1 40-5 53-8l8-1 13 2c27 5 50 7 68 8 14 1 28-1 37-5 6-3 24-21 36-36 10-15 21-35 26-47 2-8 2-8 2-18 0-11-1-19-6-27-9-18-28-27-53-28-4 0-10 1-13 1-19 4-38 15-57 34-10 10-16 18-22 30-8 16-12 36-12 55 0 10-4 13-13 15-8 1-17-1-21-4-2-3-3-5-3-12 0-23-8-49-20-68-14-20-37-39-59-47-14-5-36-5-50 0-12 4-22 12-28 23-3 7-5 11-6 22-1 11-1 16 3 26 7 20 26 48 47 70 10 9 13 12 23 14 10 3 26 3 47 1z m-37-18c-8-1-10-2-20-10-14-10-32-32-41-50-5-10-6-15-7-24 0-12 2-20 10-28 5-5 11-8 21-11 8-2 23-2 31 0 15 5 27 12 40 25 17 19 27 42 29 73 1 10 1 11 0 14-3 5-9 9-20 11-7 1-32 1-43 0z m156 0c-13-2-19-6-22-12-1-3-1-4-1-12 2-21 6-34 13-49 5-10 11-18 21-27 12-12 23-19 36-23 5-1 7-1 16-1 13 0 18 1 27 5 5 3 12 9 14 14 3 5 5 16 5 22 0 19-17 46-46 70-12 10-15 12-24 13-10 1-32 1-39 0z"/>
<glyph unicode="&#94;" d="M256 480c-141 0-256-115-256-256 0 0 0-96 0-128 0-32 32-64 64-64 32 0 352 0 384 0 32 0 64 32 64 64 0 32 0 128 0 128 0 141-114 256-256 256z m48-384l-96 0c-9 0-16 7-16 16 0 9 7 16 16 16l96 0c9 0 16-7 16-16 0-9-7-16-16-16z m144 64c0-16-16-32-32-32-16 0-64 0-64 0 0 16-16 32-32 32-16 0-112 0-128 0-16 0-32-16-32-32 0 0-48 0-64 0-16 0-32 16-32 32 0 16 0 180 0 180 39 64 110 108 192 108 82 0 153-44 192-108 0 0 0-164 0-180z m-64 192c-16 0-240 0-256 0-16 0-32-16-32-32 0-16 0-48 0-64 0-16 16-32 32-32 16 0 240 0 256 0 16 0 32 16 32 32 0 16 0 48 0 64 0 16-16 32-32 32z m0-64l-32-32-64 0-32 32-32-32-64 0-32 32 0 32 32 0 32-32 32 32 64 0 32-32 32 32 32 0z"/>
</font></defs></svg>

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

View File

@ -389,10 +389,6 @@ h2{font-size:18px;padding:0 0 21px 5px;margin:45px 0 0 0;text-transform:uppercas
<div class="icon icon-list"></div>
<input type="text" readonly="readonly" value="list">
</li>
<li>
<div class="icon icon-share"></div>
<input type="text" readonly="readonly" value="share">
</li>
<li>
<div class="icon icon-atom"></div>
<input type="text" readonly="readonly" value="atom">
@ -409,6 +405,10 @@ h2{font-size:18px;padding:0 0 21px 5px;margin:45px 0 0 0;text-transform:uppercas
<div class="icon icon-antichess"></div>
<input type="text" readonly="readonly" value="antichess">
</li>
<li>
<div class="icon icon-hubot"></div>
<input type="text" readonly="readonly" value="hubot">
</li>
</ul>
<h2>Character mapping</h2>
<ul class="glyphs character-mapping">
@ -756,10 +756,6 @@ h2{font-size:18px;padding:0 0 21px 5px;margin:45px 0 0 0;text-transform:uppercas
<div data-icon="?" class="icon"></div>
<input type="text" readonly="readonly" value="?">
</li>
<li>
<div data-icon="[" class="icon"></div>
<input type="text" readonly="readonly" value="[">
</li>
<li>
<div data-icon=">" class="icon"></div>
<input type="text" readonly="readonly" value="&gt;">
@ -776,6 +772,10 @@ h2{font-size:18px;padding:0 0 21px 5px;margin:45px 0 0 0;text-transform:uppercas
<div data-icon="@" class="icon"></div>
<input type="text" readonly="readonly" value="@">
</li>
<li>
<div data-icon="^" class="icon"></div>
<input type="text" readonly="readonly" value="^">
</li>
</ul>
</div><script type="text/javascript">
(function() {

View File

@ -296,9 +296,6 @@
.icon-list:before {
content: "?";
}
.icon-share:before {
content: "[";
}
.icon-atom:before {
content: ">";
}
@ -311,3 +308,6 @@
.icon-antichess:before {
content: "@";
}
.icon-hubot:before {
content: "^";
}

View File

@ -70,8 +70,8 @@ time {
}
@font-face {
font-family: "lichess";
src: url("../font30/fonts/lichess.eot");
src: url("../font30/fonts/lichess.eot?#iefix") format("embedded-opentype"), url("../font30/fonts/lichess.woff") format("woff"), url("../font30/fonts/lichess.ttf") format("truetype"), url("../font30/fonts/lichess.svg#lichess") format("svg");
src: url("../font31/fonts/lichess.eot");
src: url("../font31/fonts/lichess.eot?#iefix") format("embedded-opentype"), url("../font31/fonts/lichess.woff") format("woff"), url("../font31/fonts/lichess.ttf") format("truetype"), url("../font31/fonts/lichess.svg#lichess") format("svg");
font-weight: normal;
font-style: normal;
}

View File

@ -28,6 +28,9 @@
#opening .right .loader {
font-size: 10px;
}
#opening table.identified td {
padding-right: 2em;
}
#opening .meter {
width: 494px;
height: 47px;
@ -35,7 +38,7 @@
border-radius: 25px;
padding: 10px;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
margin-top: 20px;
margin: 20px 0 10px 0;
}
#opening .meter ul {
width: 490px;

1
todo
View File

@ -1 +0,0 @@
the todo list has moved to https://etherpad.mozilla.org/ep/pad/view/ro.3bIwxJwTQYW/latest

View File

@ -1,5 +1,7 @@
var chessground = require('chessground');
var movableVariants = ['standard', 'chess960', 'threecheck', 'fromPosition'];
function makeConfig(data, situation, onMove) {
return {
fen: situation.fen,
@ -7,6 +9,7 @@ function makeConfig(data, situation, onMove) {
lastMove: situation.lastMove,
orientation: data.player.color,
coordinates: data.pref.coords !== 0,
viewOnly: movableVariants.indexOf(data.game.variant.key) === -1,
movable: {
free: false,
color: situation.movable.color,

View File

@ -58,10 +58,10 @@ function controls(ctrl, fen) {
])
]),
m('div', [
ctrl.positionLooksLegit() ? m('a.button.text[data-icon="["]', {
ctrl.positionLooksLegit() ? m('a.button.text[data-icon="A"]', {
href: editor.makeUrl('/analysis/', fen),
rel: 'nofollow'
}, ctrl.trans('analysis')) : m('span.button.disabled.text[data-icon="["]', {
}, ctrl.trans('analysis')) : m('span.button.disabled.text[data-icon="A"]', {
rel: 'nofollow'
}, ctrl.trans('analysis')),
m('a.button', {

View File

@ -12,15 +12,15 @@ function renderAnalysisButton(ctrl) {
return m('a.button.hint--bottom', {
'data-hint': ctrl.trans('analysis'),
href: '/analysis/' + encodeURIComponent(ctrl.data.opening.fen).replace(/%20/g, '_').replace(/%2F/g, '/'),
target: '_blank',
target: ctrl.data.play ? '_blank' : '_self',
rel: 'nofollow'
}, m('span', {
'data-icon': '['
'data-icon': 'A'
}));
}
function renderPlayTable(ctrl) {
return m('div.table',
return m('div.table', [
m('div.table_inner', [
m('div.current_player',
m('div.player.' + ctrl.data.opening.color, [
@ -30,15 +30,14 @@ function renderPlayTable(ctrl) {
),
m('div.findit', m.trust(ctrl.trans('findNbStrongMoves', strong(ctrl.data.opening.goal)))),
m('div.control', [
ctrl.data.play ? m('a.button', {
m('a.button', {
onclick: partial(xhr.attempt, ctrl)
}, ctrl.trans('giveUp')) : m('a.button', {
onclick: partial(xhr.newOpening, ctrl)
}, ctrl.trans('continueTraining')),
}, ctrl.trans('giveUp')),
' ',
renderAnalysisButton(ctrl)
])
]));
])
]);
}
function renderViewTable(ctrl) {
@ -51,22 +50,49 @@ function renderViewTable(ctrl) {
}, ctrl.trans('openingId', ctrl.data.opening.id))),
m('p', m.trust(ctrl.trans('ratingX', strong(ctrl.data.opening.rating)))),
m('p', m.trust(ctrl.trans('playedXTimes', strong(ctrl.data.opening.attempts)))),
m('div.control', [
renderAnalysisButton(ctrl),
' ',
m('a.button.hint--bottom', {
'data-hint': ctrl.trans('boardEditor'),
href: '/editor/' + ctrl.data.opening.fen
}, m('span[data-icon=m]')),
' ',
m('a.button.hint--bottom', {
'data-hint': ctrl.trans('continueFromHere'),
onclick: function() {
$.modal($('.continue_with'));
}
}, m('span[data-icon=U]'))
]),
m('p',
m('input.copyable[readonly][spellCheck=false]', {
value: ctrl.data.opening.url
})
)
]),
m('div.continue_wrap', [
m('div.continue_wrap',
m('button.continue.button.text[data-icon=G]', {
onclick: partial(xhr.newOpening, ctrl)
}, ctrl.trans('continueTraining')),
' ',
renderAnalysisButton(ctrl)
])
}, ctrl.trans('continueTraining'))
)
];
}
function renderContinueLinks(ctrl, fen) {
return m('div.continue_with', [
m('a.button', {
href: '/?fen=' + ctrl.data.opening.fen + '#ai',
rel: 'nofollow'
}, ctrl.trans('playWithTheMachine')),
m('br'),
m('a.button', {
href: '/?fen=' + ctrl.data.opening.fen + '#friend',
rel: 'nofollow'
}, ctrl.trans('playWithAFriend'))
]);
}
function renderUserInfos(ctrl) {
return m('div.chart_container', [
m('p', m.trust(ctrl.trans('yourOpeningRatingX', strong(ctrl.data.user.rating)))),
@ -258,7 +284,14 @@ module.exports = function(ctrl) {
))
]),
m('div.center', [
progress(ctrl), (ctrl.data.user && ctrl.data.user.history) ? renderHistory(ctrl) : null
progress(ctrl),
m('table.identified', ctrl.data.opening.identified.map(function(ident) {
return m('tr', [
m('td', ident.name),
m('td', ident.moves)
]);
})), (ctrl.data.user && ctrl.data.user.history) ? renderHistory(ctrl) : null,
ctrl.data.play ? null : renderContinueLinks(ctrl)
])
]);
};

View File

@ -62,11 +62,6 @@ function reload(ground, data, fen, flip) {
function promote(ground, key, role) {
// If the player has promoted to a king in the antichess mode, we treat
// the piece like a king
if (role === "antiking")
role = "king";
var pieces = {};
var piece = ground.data.pieces[key];
if (piece && piece.role == 'pawn') {

View File

@ -39,15 +39,13 @@ module.exports = {
view: function(ctrl) {
var pieces = ctrl.data.game.variant.key != "antichess" ?
['queen', 'knight', 'rook', 'bishop'] : ['queen', 'knight', 'rook', 'bishop', 'antiking']
['queen', 'knight', 'rook', 'bishop'] : ['queen', 'knight', 'rook', 'bishop', 'king']
return promoting ? m('div#promotion_choice', {
onclick: partial(cancel, ctrl)
}, pieces.map(function(serverRole) {
// We display the piece for the antiking the same way we would for a normal king
var internalPiece = serverRole == "antiking" ? "king" : serverRole;
return m('div.cg-piece.' + internalPiece + '.' + ctrl.data.player.color, {
return m('div.cg-piece.' + serverRole + '.' + ctrl.data.player.color, {
onclick: function(e) {
e.stopPropagation();
finish(ctrl, serverRole);

View File

@ -90,7 +90,7 @@ function renderButtons(ctrl, curPly) {
class: 'button hint--top analysis',
'data-hint': root.trans('analysis'),
href: root.router.UserAnalysis.game(root.data.game.id, root.data.player.color).url,
}, m('span[data-icon="["]')) : null)
}, m('span[data-icon="A"]')) : null)
]);
}

View File

@ -81,7 +81,7 @@ module.exports = {
},
rematch: function(ctrl) {
if ((status.finished(ctrl.data) || status.aborted(ctrl.data)) && !ctrl.data.tournament) {
if (ctrl.data.opponent.onGame || ctrl.data.game.perf === 'correspondence') {
if (ctrl.data.opponent.onGame || ctrl.data.game.speed === 'correspondence') {
return m('a.button.hint--bottom', {
'data-hint': ctrl.trans('playWithTheSameOpponentAgain'),
onclick: partial(ctrl.socket.send, 'rematch-yes', null)

View File

@ -10,7 +10,7 @@ function header(ctrl) {
return [
m('th.large',
tour.schedule ? [
'Starting: ',
ctrl.trans('starting') + ' ',
util.secondsFromNow(tour.schedule.seconds)
] : (
tour.enoughPlayersToStart ? ctrl.trans('tournamentIsStarting') : ctrl.trans('waitingForNbPlayers', tour.missingPlayers)