Merge branch 'master' into autocomplete

autocomplete
Niklas Fiekas 2016-10-02 23:12:19 +02:00
commit bb370dcc6e
236 changed files with 1330 additions and 912 deletions

4
.gitmodules vendored
View File

@ -44,6 +44,10 @@
path = public/vendor/Sunsetter8 path = public/vendor/Sunsetter8
url = https://github.com/niklasf/Sunsetter8 url = https://github.com/niklasf/Sunsetter8
branch = js branch = js
[submodule "public/vendor/stockfish.pexe"]
path = public/vendor/stockfish.pexe
url = https://github.com/niklasf/stockfish.pexe
branch = ddugovic
[submodule "public/vendor/jquery-textcomplete"] [submodule "public/vendor/jquery-textcomplete"]
path = public/vendor/jquery-textcomplete path = public/vendor/jquery-textcomplete
url = https://github.com/yuku-t/jquery-textcomplete url = https://github.com/yuku-t/jquery-textcomplete

View File

@ -1,3 +1,4 @@
sudo: false
language: scala language: scala
# https://docs.travis-ci.com/user/notifications/#IRC-notification # https://docs.travis-ci.com/user/notifications/#IRC-notification

View File

@ -48,7 +48,10 @@ drop us an email at contact@lichess.org and we'll discuss it.
### API Limits ### API Limits
To respect the API servers and avoid an IP ban, please wait 1 second between requests. If you receive an HTTP response with a [429 status](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#429), please wait a full minute before resuming API usage. To respect the API servers and avoid an IP ban, please wait 1 second between requests.
If you receive an HTTP response with a [429 status](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#429), please wait a full minute before resuming API usage.
Please do not automate computer analysis requests. They're very expensive.
### `GET /api/user/<username>` fetch one user ### `GET /api/user/<username>` fetch one user

View File

@ -13,7 +13,6 @@ final class Env(
val CliUsername = config getString "cli.username" val CliUsername = config getString "cli.username"
private val RendererName = config getString "app.renderer.name" private val RendererName = config getString "app.renderer.name"
private val WebPath = config getString "app.web_path"
lazy val bus = lila.common.Bus(system) lazy val bus = lila.common.Bus(system)

View File

@ -5,6 +5,7 @@ import play.api.mvc._, Results._
import lila.api.Context import lila.api.Context
import lila.app._ import lila.app._
import lila.common.LilaCookie import lila.common.LilaCookie
import lila.common.PimpedJson._
import lila.security.Permission import lila.security.Permission
import lila.user.{ User => UserModel, UserRepo } import lila.user.{ User => UserModel, UserRepo }
import views._ import views._
@ -51,8 +52,10 @@ object Account extends LilaController {
"nowPlaying" -> JsArray(povs take 20 map Env.api.lobbyApi.nowPlaying), "nowPlaying" -> JsArray(povs take 20 map Env.api.lobbyApi.nowPlaying),
"nbFollowing" -> nbFollowing, "nbFollowing" -> nbFollowing,
"nbFollowers" -> nbFollowers, "nbFollowers" -> nbFollowers,
"kid" -> me.kid, "kid" -> me.kid.option(true),
"nbChallenges" -> nbChallenges) "troll" -> me.troll.option(true),
"nbChallenges" -> nbChallenges
).noNull
} }
} }
} }

View File

@ -1,40 +1,32 @@
package controllers package controllers
import scala.util.{ Success, Failure } import scala.concurrent.duration._
import akka.pattern.ask
import play.api.http.ContentTypes
import play.api.mvc._ import play.api.mvc._
import play.twirl.api.Html
import lila.api.Context import lila.api.Context
import lila.app._ import lila.app._
import lila.common.HTTPRequest import lila.common.HTTPRequest
import lila.evaluation.PlayerAssessments import lila.game.{ Pov, GameRepo }
import lila.game.{ Pov, Game => GameModel, GameRepo, PgnDump }
import lila.hub.actorApi.map.Tell
import views._ import views._
import chess.Color
object Analyse extends LilaController { object Analyse extends LilaController {
private def env = Env.analyse private def env = Env.analyse
private def bookmarkApi = Env.bookmark.api private def bookmarkApi = Env.bookmark.api
private val divider = Env.game.divider private val divider = Env.game.divider
def requestAnalysis(id: String) = Auth { implicit ctx => def requestAnalysis(id: String) = Auth { implicit ctx => me =>
me => OptionFuResult(GameRepo game id) { game =>
OptionFuResult(GameRepo game id) { game => Env.fishnet.analyser(game, lila.fishnet.Work.Sender(
Env.fishnet.analyser(game, lila.fishnet.Work.Sender( userId = me.id.some,
userId = me.id.some, ip = HTTPRequest.lastRemoteAddress(ctx.req).some,
ip = HTTPRequest.lastRemoteAddress(ctx.req).some, mod = isGranted(_.Hunter),
mod = isGranted(_.Hunter), system = false)) map {
system = false)) map { case true => Ok
case true => Ok case false => Unauthorized
case false => Unauthorized
}
} }
}
} }
def replay(pov: Pov, userTv: Option[lila.user.User])(implicit ctx: Context) = def replay(pov: Pov, userTv: Option[lila.user.User])(implicit ctx: Context) =
@ -56,19 +48,19 @@ object Analyse extends LilaController {
withMoveTimes = true, withMoveTimes = true,
withDivision = true, withDivision = true,
withOpening = true) map { data => withOpening = true) map { data =>
Ok(html.analyse.replay( Ok(html.analyse.replay(
pov, pov,
data, data,
initialFen, initialFen,
Env.analyse.annotator(pgn, analysis, pov.game.opening, pov.game.winnerColor, pov.game.status, pov.game.clock).toString, Env.analyse.annotator(pgn, analysis, pov.game.opening, pov.game.winnerColor, pov.game.status, pov.game.clock).toString,
analysis, analysis,
analysisInProgress, analysisInProgress,
simul, simul,
crosstable, crosstable,
userTv, userTv,
chat, chat,
bookmarked = bookmarked)) bookmarked = bookmarked))
} }
} }
} }
} }

View File

@ -67,7 +67,7 @@ object Lobby extends LilaController {
private val cache = lila.memo.AsyncCache[RequestKey, Html]( private val cache = lila.memo.AsyncCache[RequestKey, Html](
f = renderRequestKey, f = renderRequestKey,
timeToLive = 500 millis) timeToLive = 1 second)
private def renderCtx(implicit ctx: Context): Fu[Html] = Env.current.preloader( private def renderCtx(implicit ctx: Context): Fu[Html] = Env.current.preloader(
posts = Env.forum.recent(ctx.me, Env.team.cached.teamIds), posts = Env.forum.recent(ctx.me, Env.team.cached.teamIds),

View File

@ -102,15 +102,18 @@ object Main extends LilaController {
} inject Ok } inject Ok
} }
def glyphs = Action { req => private lazy val glyphsResult: Result = {
import chess.format.pgn.Glyph import chess.format.pgn.Glyph
import lila.socket.tree.Node.glyphWriter import lila.socket.tree.Node.glyphWriter
Ok(Json.obj( Ok(Json.obj(
"move" -> Glyph.MoveAssessment.all, "move" -> Glyph.MoveAssessment.display,
"position" -> Glyph.PositionAssessment.all, "position" -> Glyph.PositionAssessment.display,
"observation" -> Glyph.Observation.all "observation" -> Glyph.Observation.display
)) as JSON )) as JSON
} }
def glyphs = Action { req =>
glyphsResult
}
def image(id: String, hash: String, name: String) = Action.async { req => def image(id: String, hash: String, name: String) = Action.async { req =>
Env.db.image.fetch(id) map { Env.db.image.fetch(id) map {
@ -124,6 +127,15 @@ object Main extends LilaController {
} }
} }
val robots = Action { _ =>
Ok {
if (Env.api.Net.Crawlable)
"User-agent: *\nAllow: /\nDisallow: /game/export"
else
"User-agent: *\nDisallow: /"
}
}
def notFound(req: RequestHeader): Fu[Result] = def notFound(req: RequestHeader): Fu[Result] =
reqToCtx(req) map { implicit ctx => reqToCtx(req) map { implicit ctx =>
lila.mon.http.response.code404() lila.mon.http.response.code404()

View File

@ -46,6 +46,7 @@ object Environment
def netDomain = apiEnv.Net.Domain def netDomain = apiEnv.Net.Domain
def netBaseUrl = apiEnv.Net.BaseUrl def netBaseUrl = apiEnv.Net.BaseUrl
val isGloballyCrawlable = apiEnv.Net.Crawlable
def isProd = apiEnv.isProd def isProd = apiEnv.isProd

View File

@ -6,7 +6,7 @@ side: Option[Html] = None,
menu: Option[Html] = None, menu: Option[Html] = None,
chat: Option[Html] = None, chat: Option[Html] = None,
underchat: Option[Html] = None, underchat: Option[Html] = None,
robots: Boolean = true, robots: Boolean = isGloballyCrawlable,
moreCss: Html = Html(""), moreCss: Html = Html(""),
moreJs: Html = Html(""), moreJs: Html = Html(""),
zen: Boolean = false, zen: Boolean = false,
@ -149,7 +149,7 @@ withGtm: Boolean = false)(body: Html)(implicit ctx: Context)
<a class="fright link text data-count" href="@routes.Report.list" data-count="@reportNbUnprocessed" data-icon="@icon.mod"></a> <a class="fright link text data-count" href="@routes.Report.list" data-count="@reportNbUnprocessed" data-icon="@icon.mod"></a>
} }
} }
<a id="reconnecting" class="fright link" onclick="location.reload();" data-icon="B">&nbsp;@trans.reconnecting()</a> <a id="reconnecting" class="fright link" onclick="window.location.reload()" data-icon="B">&nbsp;@trans.reconnecting()</a>
</div> </div>
<div id="fpmenu">@fpmenu()</div> <div id="fpmenu">@fpmenu()</div>
<div class="content @ctx.is3d.fold("is3d", "is2d")"> <div class="content @ctx.is3d.fold("is3d", "is2d")">

View File

@ -10,12 +10,6 @@ cd gfc-semver
sbt publish-local sbt publish-local
cd .. cd ..
git clone https://github.com/ornicar/ReactiveMongo --branch lichess
cd ReactiveMongo
git checkout b3e895f1c723d7cb518763f31fba62dc74311eab
sbt publish-local
cd ..
git clone https://github.com/ornicar/scalalib git clone https://github.com/ornicar/scalalib
cd scalalib cd scalalib
sbt publish-local sbt publish-local

View File

@ -0,0 +1,45 @@
var puzzles = db.puzzle;
var count = 0;
function depthOf(obj) {
var level = 1;
var key;
for (key in obj) {
if (!obj.hasOwnProperty(key)) continue;
if (typeof obj[key] === 'object') {
var depth = depthOf(obj[key]) + 1;
level = Math.max(depth, level);
}
}
return level;
}
puzzles.find({
"mate": true,
"_id": {
"$gt": 60120
},
'vote.sum': {
'$gt': -8000
}
}).forEach(function(p) {
var depth = depthOf(p);
if (depth % 2 === 1) {
count++;
puzzles.update({
_id: p._id
}, {
$set: {
vote: {
up: NumberInt(0),
down: NumberInt(9000),
sum: NumberInt(-9000)
}
}
});
print(p._id);
}
});
print("Disabled " + count + " puzzles");

View File

@ -0,0 +1,21 @@
var puzzles = db.puzzle;
var count = 0;
puzzles.find().forEach(function(p) {
var parts = p.fen.split(/\s/);
var pieceCount = parts[0].split(/[nbrqkp]/i).length - 1;
if (pieceCount < 9 && p.vote.sum < 50 && p.vote.sum > -1000) {
count++;
puzzles.update({
_id: p._id
}, {
$set: {
vote: {
up: NumberInt(0),
down: NumberInt(0),
sum: NumberInt(-9000)
}
}
});
}
});
print("Disabled " + count + " puzzles");

View File

@ -0,0 +1,10 @@
var coll = db.puzzle;
coll.find({_id:{$lt:60120},'vote.sum':{$gte:100}}).sort({_id:1}).forEach(function(p) {
if (coll.count({fen:p.fen}) == 1) {
var nextId = coll.find({},{_id:1}).sort({_id:-1}).limit(1)[0]._id + 1;
p.salvaged = NumberInt(p._id);
p._id = NumberInt(nextId);
print(p.salvaged + ' -> ' + p._id);
coll.insert(p);
}
});

View File

@ -33,7 +33,9 @@ if [ $mode = "main" ]; then
$CLI deploy pre $CLI deploy pre
fi fi
bin/dev ";stage;exit" SBT_OPTS=""
export JAVA_OPTS="-Xms1024M -Xmx1024M -XX:ReservedCodeCacheSize=64m -XX:+UseConcMarkSweepGC"
sbt ";stage;exit"
if [ $? != 0 ]; then if [ $? != 0 ]; then
lilalog "Deploy canceled" lilalog "Deploy canceled"
exit 1 exit 1

View File

@ -10,9 +10,10 @@ net {
ip = "5.196.91.160" ip = "5.196.91.160"
asset { asset {
domain = ${net.domain} domain = ${net.domain}
version = 1126 version = 1141
} }
email = "contact@lichess.org" email = "contact@lichess.org"
crawlable = false
} }
forcedev = false forcedev = false
play { play {
@ -217,6 +218,7 @@ bookmark {
} }
analyse { analyse {
collection.analysis = analysis2 collection.analysis = analysis2
collection.requester = analysis_requester
net.domain = ${net.domain} net.domain = ${net.domain}
cached.nb.ttl = ${game.cached.nb.ttl} cached.nb.ttl = ${game.cached.nb.ttl}
paginator.max_per_page = ${game.paginator.max_per_page} paginator.max_per_page = ${game.paginator.max_per_page}

View File

@ -26,6 +26,13 @@
<!-- </appender> --> <!-- </appender> -->
<!-- </logger> --> <!-- </logger> -->
<logger name="reactivemongo" level="DEBUG">
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${application.home}/logs/reactivemongo.log</file>
<encoder><pattern>%date [%level] %message%n%xException</pattern></encoder>
</appender>
</logger>
<logger name="lobby" level="DEBUG"> <logger name="lobby" level="DEBUG">
<appender name="FILE" class="ch.qos.logback.core.FileAppender"> <appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${application.home}/logs/lobby.log</file> <file>${application.home}/logs/lobby.log</file>

View File

@ -492,3 +492,5 @@ POST /jslog/$id<\w{12}> controllers.Main.jslog(id)
# Assets # Assets
GET /glyphs controllers.Main.glyphs GET /glyphs controllers.Main.glyphs
GET /assets/*file controllers.Assets.at(path="/public", file) GET /assets/*file controllers.Assets.at(path="/public", file)
GET /robots.txt controllers.Main.robots

View File

@ -3,12 +3,14 @@ package lila.analyse
import akka.actor.ActorSelection import akka.actor.ActorSelection
import chess.format.FEN import chess.format.FEN
import lila.db.dsl._
import lila.game.actorApi.InsertGame import lila.game.actorApi.InsertGame
import lila.game.{ Game, GameRepo } import lila.game.{ Game, GameRepo }
import lila.hub.actorApi.map.Tell import lila.hub.actorApi.map.Tell
final class Analyser( final class Analyser(
indexer: ActorSelection, indexer: ActorSelection,
requesterApi: RequesterApi,
roundSocket: ActorSelection, roundSocket: ActorSelection,
bus: lila.common.Bus) { bus: lila.common.Bus) {
@ -21,6 +23,7 @@ final class Analyser(
sendAnalysisProgress(analysis) >>- { sendAnalysisProgress(analysis) >>- {
bus.publish(actorApi.AnalysisReady(game, analysis), 'analysisReady) bus.publish(actorApi.AnalysisReady(game, analysis), 'analysisReady)
indexer ! InsertGame(game) indexer ! InsertGame(game)
requesterApi save analysis
} }
} }
} }

View File

@ -17,15 +17,19 @@ final class Env(
indexer: ActorSelection) { indexer: ActorSelection) {
private val CollectionAnalysis = config getString "collection.analysis" private val CollectionAnalysis = config getString "collection.analysis"
private val CollectionRequester = config getString "collection.requester"
private val NetDomain = config getString "net.domain" private val NetDomain = config getString "net.domain"
private val CachedNbTtl = config duration "cached.nb.ttl" private val CachedNbTtl = config duration "cached.nb.ttl"
private val PaginatorMaxPerPage = config getInt "paginator.max_per_page" private val PaginatorMaxPerPage = config getInt "paginator.max_per_page"
private val ActorName = config getString "actor.name" private val ActorName = config getString "actor.name"
private[analyse] lazy val analysisColl = db(CollectionAnalysis) lazy val analysisColl = db(CollectionAnalysis)
lazy val requesterApi = new RequesterApi(db(CollectionRequester))
lazy val analyser = new Analyser( lazy val analyser = new Analyser(
indexer = indexer, indexer = indexer,
requesterApi = requesterApi,
roundSocket = roundSocket, roundSocket = roundSocket,
bus = system.lilaBus) bus = system.lilaBus)

View File

@ -0,0 +1,24 @@
package lila.analyse
import org.joda.time._
import lila.db.dsl._
import lila.user.User
final class RequesterApi(coll: Coll) {
private val formatter = format.DateTimeFormat.forPattern("YYYY-MM-dd")
private def today = formatter.print(DateTime.now)
def save(analysis: Analysis): Funit = coll.update(
$id(analysis.uid | "anonymous"),
$inc("total" -> 1) ++
$inc(today -> 1) ++
$set("last" -> analysis.id),
upsert = true
).void
def countToday(userId: User.ID): Fu[Int] =
coll.primitiveOne[Int]($id(userId), today) map (~_)
}

View File

@ -44,6 +44,7 @@ final class Env(
val AssetDomain = config getString "net.asset.domain" val AssetDomain = config getString "net.asset.domain"
val AssetVersion = config getInt "net.asset.version" val AssetVersion = config getInt "net.asset.version"
val Email = config getString "net.email" val Email = config getString "net.email"
val Crawlable = config getBoolean "net.crawlable"
} }
val PrismicApiUrl = config getString "prismic.api_url" val PrismicApiUrl = config getString "prismic.api_url"
val EditorAnimationDuration = config duration "editor.animation.duration" val EditorAnimationDuration = config duration "editor.animation.duration"

View File

@ -29,9 +29,9 @@ final class BookmarkApi(
user ?? { u => user ?? { u =>
val candidateIds = games.filter(_.bookmarks > 0).map(_.id) val candidateIds = games.filter(_.bookmarks > 0).map(_.id)
if (candidateIds.isEmpty) fuccess(Set.empty) if (candidateIds.isEmpty) fuccess(Set.empty)
else coll.distinct("g", Some( else coll.distinct[String, Set]("g", Some(
userIdQuery(u.id) ++ $doc("g" $in candidateIds) userIdQuery(u.id) ++ $doc("g" $in candidateIds)
)) map lila.db.BSON.asStringSet ))
} }
def removeByGameId(gameId: String): Funit = def removeByGameId(gameId: String): Funit =

View File

@ -53,7 +53,7 @@ private final class ChallengeRepo(coll: Coll, maxPerUser: Int) {
)).cursor[Challenge]().gather[List](max) )).cursor[Challenge]().gather[List](max)
private[challenge] def expired(max: Int): Fu[List[Challenge]] = private[challenge] def expired(max: Int): Fu[List[Challenge]] =
coll.find($doc("expiresAt" -> $doc("$lt" -> DateTime.now))).list[Challenge](max) coll.find($doc("expiresAt" -> $lt(DateTime.now))).list[Challenge](max)
def setSeenAgain(id: Challenge.ID) = coll.update( def setSeenAgain(id: Challenge.ID) = coll.update(
$id(id), $id(id),

@ -1 +1 @@
Subproject commit 8c4592ad012f2f4e1e2631ea2db64f6cde9698a3 Subproject commit 645fad395ee538ed54a474aadf138c9f2df1be03

View File

@ -196,23 +196,6 @@ object BSON extends Handlers {
def debugDoc(doc: Bdoc): String = (doc.elements.toList map { def debugDoc(doc: Bdoc): String = (doc.elements.toList map {
case (k, v) => s"$k: ${debug(v)}" case (k, v) => s"$k: ${debug(v)}"
}).mkString("{", ", ", "}") }).mkString("{", ", ", "}")
def hashDoc(doc: Bdoc): String = debugDoc(doc).replace(" ", "") def hashDoc(doc: Bdoc): String = debugDoc(doc).replace(" ", "")
def asStrings(vs: List[BSONValue]): List[String] = {
val b = new scala.collection.mutable.ListBuffer[String]
vs foreach {
case BSONString(s) => b += s
case _ =>
}
b.toList
}
def asStringSet(vs: List[BSONValue]): Set[String] = {
val b = Set.newBuilder[String]
vs foreach {
case BSONString(s) => b += s
case _ =>
}
b.result
}
} }

View File

@ -34,10 +34,13 @@ trait CollExt { self: dsl with QueryBuilderExt =>
def exists(selector: Bdoc): Fu[Boolean] = countSel(selector).map(0!=) def exists(selector: Bdoc): Fu[Boolean] = countSel(selector).map(0!=)
def byOrderedIds[D: BSONDocumentReader](ids: Iterable[String], readPreference: ReadPreference = ReadPreference.primary)(docId: D => String): Fu[List[D]] = def byOrderedIds[D: BSONDocumentReader](ids: Iterable[String], readPreference: ReadPreference = ReadPreference.primary)(docId: D => String): Fu[List[D]] =
coll.find($inIds(ids)).cursor[D](readPreference = readPreference).collect[List]() map { docs => coll.find($inIds(ids)).cursor[D](readPreference = readPreference).
val docsMap = docs.map(u => docId(u) -> u).toMap collect[List](Int.MaxValue, err = Cursor.FailOnError[List[D]]()).
ids.flatMap(docsMap.get).toList map { docs =>
} val docsMap = docs.map(u => docId(u) -> u).toMap
ids.flatMap(docsMap.get).toList
}
// def byOrderedIds[A <: Identified[String]: TubeInColl](ids: Iterable[String]): Fu[List[A]] = // def byOrderedIds[A <: Identified[String]: TubeInColl](ids: Iterable[String]): Fu[List[A]] =
// byOrderedIds[String, A](ids) // byOrderedIds[String, A](ids)

View File

@ -7,11 +7,11 @@ import reactivemongo.bson._
trait CursorExt { self: dsl => trait CursorExt { self: dsl =>
// Can be refactor as CursorProducer
final implicit class ExtendCursor[A: BSONDocumentReader](val c: Cursor[A]) { final implicit class ExtendCursor[A: BSONDocumentReader](val c: Cursor[A]) {
// like collect, but with stopOnError defaulting to false // like collect, but with stopOnError defaulting to false
def gather[M[_]](upTo: Int = Int.MaxValue)(implicit cbf: CanBuildFrom[M[_], A, M[A]]): Fu[M[A]] = def gather[M[_]](upTo: Int = Int.MaxValue)(implicit cbf: CanBuildFrom[M[_], A, M[A]]): Fu[M[A]] = c.collect[M](upTo, Cursor.ContOnError[M[A]]())
c.collect[M](upTo, stopOnError = false)
def list(limit: Option[Int]): Fu[List[A]] = gather[List](limit | Int.MaxValue) def list(limit: Option[Int]): Fu[List[A]] = gather[List](limit | Int.MaxValue)
@ -20,7 +20,7 @@ trait CursorExt { self: dsl =>
def list(): Fu[List[A]] = list(none) def list(): Fu[List[A]] = list(none)
// like headOption, but with stopOnError defaulting to false // like headOption, but with stopOnError defaulting to false
def uno: Fu[Option[A]] = def uno: Fu[Option[A]] = c.collect[Iterable](
c.collect[Iterable](1, stopOnError = false).map(_.headOption) 1, Cursor.ContOnError[Iterable[A]]()).map(_.headOption)
} }
} }

View File

@ -1,48 +1,64 @@
package lila.db package lila.db
import com.typesafe.config.Config import com.typesafe.config.Config
import reactivemongo.api._ import dsl.Coll
import reactivemongo.api.{ DefaultDB, MongoConnection, MongoDriver }
import scala.concurrent.duration._ import scala.concurrent.duration._
import scala.concurrent.Future import scala.concurrent.{ Await, ExecutionContext, Future }
import scala.util.{ Success, Failure } import scala.util.{ Failure, Success, Try }
import dsl._
final class Env( final class Env(
name: String,
config: Config, config: Config,
lifecycle: play.api.inject.ApplicationLifecycle) { lifecycle: play.api.inject.ApplicationLifecycle) {
lazy val db = { lazy val (connection, dbName) = {
val parsedUri: MongoConnection.ParsedURI =
MongoConnection.parseURI(config.getString("uri")) match {
case Success(parsedURI) => parsedURI
case Failure(e) => sys error s"Invalid mongodb.uri"
}
val driver = new MongoDriver(Some(config)) val driver = new MongoDriver(Some(config))
val connection = driver.connection(parsedUri)
parsedUri.db.fold[DefaultDB](sys error s"cannot resolve database from URI: $parsedUri") { dbUri => registerDriverShutdownHook(driver)
val db = DB(dbUri, connection)
registerDriverShutdownHook(driver) (for {
logger.info(s"""ReactiveMongoApi successfully started with DB '$dbUri'! Servers: ${parsedUri.hosts.map { s => s"[${s._1}:${s._2}]" }.mkString("\n\t\t")}""") parsedUri <- MongoConnection.parseURI(config getString "uri")
db con <- driver.connection(parsedUri, true)
} db <- parsedUri.db match {
case Some(name) => Success(name)
case _ => Failure[String](new IllegalArgumentException(
s"cannot resolve connection from URI: $parsedUri"))
}
} yield con -> db).get
} }
def apply(name: String): Coll = db(name) private lazy val lnm = s"${connection.supervisor}/${connection.name}"
@inline private def resolveDB(ec: ExecutionContext) =
connection.database(dbName)(ec).andThen {
case _ => /*logger.debug*/ println(s"[$lnm] MongoDB resolved: $dbName")
}
def db(implicit ec: ExecutionContext): DefaultDB =
Await.result(resolveDB(ec), 10.seconds)
def apply(name: String)(implicit ec: ExecutionContext): Coll =
db(ec).apply(name)
object image { object image {
private lazy val imageColl = apply(config getString "image.collection") private lazy val imageColl = apply(config getString "image.collection")
import dsl._
import DbImage.DbImageBSONHandler import DbImage.DbImageBSONHandler
def fetch(id: String): Fu[Option[DbImage]] = imageColl.byId[DbImage](id) def fetch(id: String): Fu[Option[DbImage]] = imageColl.byId[DbImage](id)
} }
private def registerDriverShutdownHook(mongoDriver: MongoDriver): Unit = private def registerDriverShutdownHook(mongoDriver: MongoDriver): Unit =
lifecycle.addStopHook { () => Future(mongoDriver.close()) } lifecycle.addStopHook { () =>
logger.info(s"[$lnm] Stopping the MongoDriver...")
Future(mongoDriver.close())
}
} }
object Env { object Env {
lazy val current = "db" boot new Env( lazy val current = "db" boot new Env(
name = "main",
config = lila.common.PlayApp loadConfig "mongodb", config = lila.common.PlayApp loadConfig "mongodb",
lifecycle = lila.common.PlayApp.lifecycle) lifecycle = lila.common.PlayApp.lifecycle)
} }

View File

@ -16,7 +16,7 @@ trait QueryBuilderExt { self: dsl =>
// like collect, but with stopOnError defaulting to false // like collect, but with stopOnError defaulting to false
def gather[A, M[_]](upTo: Int = Int.MaxValue)(implicit cbf: CanBuildFrom[M[_], A, M[A]], reader: BSONDocumentReader[A]): Fu[M[A]] = def gather[A, M[_]](upTo: Int = Int.MaxValue)(implicit cbf: CanBuildFrom[M[_], A, M[A]], reader: BSONDocumentReader[A]): Fu[M[A]] =
b.cursor[A]().collect[M](upTo, stopOnError = false) b.cursor[A]().collect[M](upTo, Cursor.ContOnError[M[A]]())
def list[A: BSONDocumentReader](limit: Option[Int]): Fu[List[A]] = gather[A, List](limit | Int.MaxValue) def list[A: BSONDocumentReader](limit: Option[Int]): Fu[List[A]] = gather[A, List](limit | Int.MaxValue)
@ -27,10 +27,9 @@ trait QueryBuilderExt { self: dsl =>
// like one, but with stopOnError defaulting to false // like one, but with stopOnError defaulting to false
def uno[A: BSONDocumentReader]: Fu[Option[A]] = uno[A](ReadPreference.primary) def uno[A: BSONDocumentReader]: Fu[Option[A]] = uno[A](ReadPreference.primary)
def uno[A: BSONDocumentReader](readPreference: ReadPreference): Fu[Option[A]] = def uno[A: BSONDocumentReader](readPreference: ReadPreference): Fu[Option[A]] = b.copy(options = b.options.batchSize(1))
b.copy(options = b.options.batchSize(1)) .cursor[A](readPreference = readPreference)
.cursor[A](readPreference = readPreference) .collect[Iterable](1, Cursor.ContOnError[Iterable[A]]())
.collect[Iterable](1, stopOnError = false) .map(_.headOption)
.map(_.headOption)
} }
} }

View File

@ -55,10 +55,11 @@ case class Assessible(analysed: Analysed) {
// SF1 SF2 BLR1 BLR2 MTs1 MTs2 Holds // SF1 SF2 BLR1 BLR2 MTs1 MTs2 Holds
case PlayerFlags(T, T, T, T, T, T, T) => Cheating // all T, obvious cheat case PlayerFlags(T, T, T, T, T, T, T) => Cheating // all T, obvious cheat
case PlayerFlags(T, _, T, _, _, T, _) => Cheating // high accuracy, high blurs, no fast moves case PlayerFlags(T, _, T, _, _, T, _) => Cheating // high accuracy, high blurs, no fast moves
case PlayerFlags(T, _, _, T, _, _, _) => Cheating // high accuracy, moderate blurs
case PlayerFlags(_, _, _, T, T, _, _) => LikelyCheating // high accuracy, moderate blurs => 93% chance cheating
case PlayerFlags(T, _, _, _, _, _, T) => LikelyCheating // Holds are bad, hmk? case PlayerFlags(T, _, _, _, _, _, T) => LikelyCheating // Holds are bad, hmk?
case PlayerFlags(_, T, _, _, _, _, T) => LikelyCheating // Holds are bad, hmk? case PlayerFlags(_, T, _, _, _, _, T) => LikelyCheating // Holds are bad, hmk?
case PlayerFlags(T, _, _, T, _, T, _) => LikelyCheating // high accuracy, moderate blurs, no fast moves
case PlayerFlags(_, T, _, T, T, _, _) => LikelyCheating // always has advantage, moderate blurs, highly consistent move times case PlayerFlags(_, T, _, T, T, _, _) => LikelyCheating // always has advantage, moderate blurs, highly consistent move times
case PlayerFlags(_, T, T, _, _, _, _) => LikelyCheating // always has advantage, high blurs case PlayerFlags(_, T, T, _, _, _, _) => LikelyCheating // always has advantage, high blurs

View File

@ -9,6 +9,7 @@ import lila.common.PimpedConfig._
final class Env( final class Env(
config: Config, config: Config,
uciMemo: lila.game.UciMemo, uciMemo: lila.game.UciMemo,
requesterApi: lila.analyse.RequesterApi,
hub: lila.hub.Env, hub: lila.hub.Env,
db: lila.db.Env, db: lila.db.Env,
system: ActorSystem, system: ActorSystem,
@ -48,11 +49,11 @@ final class Env(
monitor = monitor, monitor = monitor,
sink = sink, sink = sink,
socketExists = id => { socketExists = id => {
import lila.hub.actorApi.map.Exists import lila.hub.actorApi.map.Exists
import akka.pattern.ask import akka.pattern.ask
import makeTimeout.short import makeTimeout.short
hub.socket.round ? Exists(id) mapTo manifest[Boolean] hub.socket.round ? Exists(id) mapTo manifest[Boolean]
}, },
offlineMode = OfflineMode, offlineMode = OfflineMode,
analysisNodes = AnalysisNodes)(system) analysisNodes = AnalysisNodes)(system)
@ -61,11 +62,15 @@ final class Env(
uciMemo = uciMemo, uciMemo = uciMemo,
maxPlies = MovePlies) maxPlies = MovePlies)
private val limiter = new Limiter(
analysisColl = analysisColl,
requesterApi = requesterApi)
val analyser = new Analyser( val analyser = new Analyser(
repo = repo, repo = repo,
uciMemo = uciMemo, uciMemo = uciMemo,
sequencer = sequencer, sequencer = sequencer,
limiter = new Limiter(analysisColl)) limiter = limiter)
val aiPerfApi = new AiPerfApi val aiPerfApi = new AiPerfApi
@ -110,6 +115,7 @@ object Env {
lazy val current: Env = "fishnet" boot new Env( lazy val current: Env = "fishnet" boot new Env(
system = lila.common.PlayApp.system, system = lila.common.PlayApp.system,
uciMemo = lila.game.Env.current.uciMemo, uciMemo = lila.game.Env.current.uciMemo,
requesterApi = lila.analyse.Env.current.requesterApi,
hub = lila.hub.Env.current, hub = lila.hub.Env.current,
db = lila.db.Env.current, db = lila.db.Env.current,
config = lila.common.PlayApp loadConfig "fishnet", config = lila.common.PlayApp loadConfig "fishnet",

View File

@ -1,12 +1,27 @@
package lila.fishnet package lila.fishnet
import scala.concurrent.duration._
import reactivemongo.bson._ import reactivemongo.bson._
import lila.db.dsl.Coll import lila.db.dsl.Coll
private final class Limiter(analysisColl: Coll) { private final class Limiter(
analysisColl: Coll,
requesterApi: lila.analyse.RequesterApi) {
def apply(sender: Work.Sender): Fu[Boolean] = sender match { def apply(sender: Work.Sender): Fu[Boolean] =
concurrentCheck(sender) flatMap {
case false => fuccess(false)
case true => perDayCheck(sender)
}
private val RequestLimitPerIP = new lila.memo.RateLimit(
credits = 50,
duration = 20 hours,
name = "request analysis per IP",
key = "request_analysis.ip")
private def concurrentCheck(sender: Work.Sender) = sender match {
case Work.Sender(_, _, mod, system) if (mod || system) => fuccess(true) case Work.Sender(_, _, mod, system) if (mod || system) => fuccess(true)
case Work.Sender(Some(userId), _, _, _) => analysisColl.count(BSONDocument( case Work.Sender(Some(userId), _, _, _) => analysisColl.count(BSONDocument(
"sender.userId" -> userId "sender.userId" -> userId
@ -16,4 +31,13 @@ private final class Limiter(analysisColl: Coll) {
).some) map (0 ==) ).some) map (0 ==)
case _ => fuccess(false) case _ => fuccess(false)
} }
private def perDayCheck(sender: Work.Sender) = sender match {
case Work.Sender(_, _, mod, system) if (mod || system) => fuccess(true)
case Work.Sender(Some(userId), _, _, _) => requesterApi.countToday(userId) map (_ < 25)
case Work.Sender(_, Some(ip), _, _) => fuccess {
RequestLimitPerIP(ip, cost = 1)(true)
}
case _ => fuccess(false)
}
} }

View File

@ -14,7 +14,7 @@ private final class Monitor(
private case class AnalysisMeta(time: Int, nodes: Int, nps: Int, depth: Int, pvSize: Int) private case class AnalysisMeta(time: Int, nodes: Int, nps: Int, depth: Int, pvSize: Int)
private def sumOf[A](ints: List[A])(f: A => Option[Int]) = ints.foldLeft(0) { private def sumOf[A](items: List[A])(f: A => Option[Int]) = items.foldLeft(0) {
case (acc, a) => acc + f(a).getOrElse(0) case (acc, a) => acc + f(a).getOrElse(0)
} }

View File

@ -70,10 +70,10 @@ sealed abstract class PostRepo(troll: Boolean) {
def sortQuery = $sort.createdAsc def sortQuery = $sort.createdAsc
def userIdsByTopicId(topicId: String): Fu[List[String]] = def userIdsByTopicId(topicId: String): Fu[List[String]] =
coll.distinct("userId", $doc("topicId" -> topicId).some) map lila.db.BSON.asStrings coll.distinct[String, List]("userId", $doc("topicId" -> topicId).some)
def idsByTopicId(topicId: String): Fu[List[String]] = def idsByTopicId(topicId: String): Fu[List[String]] =
coll.distinct("_id", $doc("topicId" -> topicId).some) map lila.db.BSON.asStrings coll.distinct[String, List]("_id", $doc("topicId" -> topicId).some)
import reactivemongo.api.ReadPreference import reactivemongo.api.ReadPreference
def cursor( def cursor(

View File

@ -1,5 +1,7 @@
package lila.forumSearch package lila.forumSearch
import reactivemongo.api.Cursor
import lila.forum.actorApi._ import lila.forum.actorApi._
import lila.forum.{ Post, PostView, PostLiteView, PostApi, PostRepo } import lila.forum.{ Post, PostView, PostLiteView, PostApi, PostRepo }
import lila.search._ import lila.search._
@ -37,14 +39,15 @@ final class ForumSearchApi(
case c: ESClientHttp => c.putMapping >> { case c: ESClientHttp => c.putMapping >> {
lila.log("forumSearch").info(s"Index to ${c.index.name}") lila.log("forumSearch").info(s"Index to ${c.index.name}")
import lila.db.dsl._ import lila.db.dsl._
import play.api.libs.iteratee._
PostRepo.cursor($empty).enumerateBulks(Int.MaxValue) |>>> PostRepo.cursor($empty).foldBulksM({}) { (_, posts) =>
Iteratee.foldM[Iterator[Post], Unit](()) { for {
case (_, posts) => (postApi liteViews posts.toList) flatMap { views => views <- postApi liteViews posts.toList
c.storeBulk(views map (v => Id(v.post.id) -> toDoc(v))) _ <- c.storeBulk(views map (v => Id(v.post.id) -> toDoc(v)))
} } yield Cursor.Cont({})
} }
} }
case _ => funit case _ => funit
} }
} }

View File

@ -168,7 +168,7 @@ object BinaryFormat {
lastMove = for { lastMove = for {
from posAt((b1 & 15) >> 1, ((b1 & 1) << 2) + (b2 >> 6)) from posAt((b1 & 15) >> 1, ((b1 & 1) << 2) + (b2 >> 6))
to posAt((b2 & 63) >> 3, b2 & 7) to posAt((b2 & 63) >> 3, b2 & 7)
if from != to if from != Pos.A1 || to != Pos.A1
} yield from -> to, } yield from -> to,
lastMoveTime = readInt24(b3, b4, b5).some filter (0 !=), lastMoveTime = readInt24(b3, b4, b5).some filter (0 !=),
check = b6 flatMap { x => posAt(x >> 3, x & 7) }) check = b6 flatMap { x => posAt(x >> 3, x & 7) })

View File

@ -191,9 +191,9 @@ object GameRepo {
coll.exists($id(id) ++ Query.analysed(true)) coll.exists($id(id) ++ Query.analysed(true))
def filterAnalysed(ids: Seq[String]): Fu[Set[String]] = def filterAnalysed(ids: Seq[String]): Fu[Set[String]] =
coll.distinct("_id", ($inIds(ids) ++ $doc( coll.distinct[String, Set]("_id", ($inIds(ids) ++ $doc(
F.analysed -> true F.analysed -> true
)).some) map lila.db.BSON.asStringSet )).some)
def exists(id: String) = coll.exists($id(id)) def exists(id: String) = coll.exists($id(id))
@ -247,11 +247,19 @@ object GameRepo {
.uno[Game] .uno[Game]
def findRandomFinished(distribution: Int): Fu[Option[Game]] = coll.find( def findRandomFinished(distribution: Int): Fu[Option[Game]] = coll.find(
Query.finished ++ Query.variantStandard ++ Query.turnsMoreThan(10) ++ Query.rated Query.finished ++ Query.variantStandard ++ Query.turnsMoreThan(20) ++ Query.rated
).sort(Query.sortCreated) ).sort(Query.sortCreated)
.skip(Random nextInt distribution) .skip(Random nextInt distribution)
.uno[Game] .uno[Game]
def randomFinished(distribution: Int): Fu[Option[Game]] = coll.find(
Query.finished ++ Query.rated ++
Query.variantStandard ++ Query.bothRatingsGreaterThan(1600)
).sort(Query.sortCreated)
.skip(Random nextInt distribution)
.cursor[Game](ReadPreference.secondary)
.uno
def insertDenormalized(g: Game, ratedCheck: Boolean = true, initialFen: Option[chess.format.FEN] = None): Funit = { def insertDenormalized(g: Game, ratedCheck: Boolean = true, initialFen: Option[chess.format.FEN] = None): Funit = {
val g2 = if (ratedCheck && g.rated && g.userIds.distinct.size != 2) val g2 = if (ratedCheck && g.rated && g.userIds.distinct.size != 2)
g.copy(mode = chess.Mode.Casual) g.copy(mode = chess.Mode.Casual)
@ -352,7 +360,7 @@ object GameRepo {
Match($doc(F.playerUids -> $doc("$ne" -> userId))), Match($doc(F.playerUids -> $doc("$ne" -> userId))),
GroupField(F.playerUids)("gs" -> SumValue(1)), GroupField(F.playerUids)("gs" -> SumValue(1)),
Sort(Descending("gs")), Sort(Descending("gs")),
Limit(limit))).map(_.documents.flatMap { obj => Limit(limit))).map(_.firstBatch.flatMap { obj =>
obj.getAs[String]("_id") flatMap { id => obj.getAs[String]("_id") flatMap { id =>
obj.getAs[Int]("gs") map { id -> _ } obj.getAs[Int]("gs") map { id -> _ }
} }
@ -430,7 +438,7 @@ object GameRepo {
)), )),
GroupField(F.playerUids)("nb" -> SumValue(1)), GroupField(F.playerUids)("nb" -> SumValue(1)),
Sort(Descending("nb")), Sort(Descending("nb")),
Limit(max))).map(_.documents.flatMap { obj => Limit(max))).map(_.firstBatch.flatMap { obj =>
obj.getAs[Int]("nb") map { nb => obj.getAs[Int]("nb") map { nb =>
UidNb(~obj.getAs[String]("_id"), nb) UidNb(~obj.getAs[String]("_id"), nb)
} }

View File

@ -15,7 +15,7 @@ final class PlayTime(gameColl: Coll) {
def apply(user: User): Fu[User.PlayTime] = user.playTime match { def apply(user: User): Fu[User.PlayTime] = user.playTime match {
case Some(pt) => fuccess(pt) case Some(pt) => fuccess(pt)
case None => { case _ => {
gameColl gameColl
.find($doc( .find($doc(
Game.BSONFields.playerUids -> user.id, Game.BSONFields.playerUids -> user.id,
@ -25,15 +25,13 @@ final class PlayTime(gameColl: Coll) {
moveTimeField -> true, moveTimeField -> true,
tvField -> true tvField -> true
)) ))
.cursor[Bdoc]() .cursor[Bdoc]().fold(User.PlayTime(0, 0)) { (pt, doc) =>
.enumerate() |>>> (Iteratee.fold(User.PlayTime(0, 0)) { val t = doc.getAs[ByteArray](moveTimeField) ?? { times =>
case (pt, doc) => BinaryFormat.moveTime.read(times).sum
val t = doc.getAs[ByteArray](moveTimeField) ?? { times => } / 10
BinaryFormat.moveTime.read(times).sum val isTv = doc.get(tvField).isDefined
} / 10 User.PlayTime(pt.total + t, pt.tv + isTv.fold(t, 0))
val isTv = doc.get(tvField).isDefined }
User.PlayTime(pt.total + t, pt.tv + isTv.fold(t, 0))
})
}.addEffect { UserRepo.setPlayTime(user, _) } }.addEffect { UserRepo.setPlayTime(user, _) }
} }
} }

View File

@ -2,6 +2,7 @@ package lila.hub
package actorApi package actorApi
import lila.common.LightUser import lila.common.LightUser
import org.joda.time.DateTime
import play.api.libs.json._ import play.api.libs.json._
import play.twirl.api.Html import play.twirl.api.Html
@ -199,5 +200,5 @@ case class UnBlock(u1: String, u2: String)
} }
package plan { package plan {
case class ChargeEvent(username: String, amount: Int, percent: Int) case class ChargeEvent(username: String, amount: Int, percent: Int, date: DateTime)
} }

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s Checkmates
nbBookmarks=%s Bookmarks nbBookmarks=%s Bookmarks
nbPopularGames=%s Popular games nbPopularGames=%s Popular games
nbAnalysedGames=%s Analysed games nbAnalysedGames=%s Analysed games
bookmarkedByNbPlayers=Bookmarked by %s players
viewInFullSize=View in full size viewInFullSize=View in full size
logOut=Sign out logOut=Sign out
signIn=Sign in signIn=Sign in

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Sien %s skaakmat spelle
nbBookmarks=%s Bookmerke nbBookmarks=%s Bookmerke
nbPopularGames=%s Gewilde spelle nbPopularGames=%s Gewilde spelle
nbAnalysedGames=%s Spelle ontleed nbAnalysedGames=%s Spelle ontleed
bookmarkedByNbPlayers=Deur %s spelers geboekmerk
viewInFullSize=Sien vol-grootte viewInFullSize=Sien vol-grootte
logOut=Teken uit logOut=Teken uit
signIn=Teken in signIn=Teken in

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s لعبة منتهية بكش مات
nbBookmarks=%s اللعبات المفضلة nbBookmarks=%s اللعبات المفضلة
nbPopularGames=%s مباريات رائجة nbPopularGames=%s مباريات رائجة
nbAnalysedGames=%s مباريات محللة بالحاسب nbAnalysedGames=%s مباريات محللة بالحاسب
bookmarkedByNbPlayers=فضلها %s لاعب
viewInFullSize=عرض بالحجم الكامل viewInFullSize=عرض بالحجم الكامل
logOut=خروج logOut=خروج
signIn=دخول signIn=دخول

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s mat edilmiş oyunlar
nbBookmarks=%s nişan edilmiş oyun nbBookmarks=%s nişan edilmiş oyun
nbPopularGames=%s populyar oyunlar nbPopularGames=%s populyar oyunlar
nbAnalysedGames=%s təhlil olunmuş oyun nbAnalysedGames=%s təhlil olunmuş oyun
bookmarkedByNbPlayers=%s oyunçu tərəfindən nişanlanıb
viewInFullSize=Tam görünüşlə bax viewInFullSize=Tam görünüşlə bax
logOut=Xətdən çıx logOut=Xətdən çıx
signIn=Xəttə bağlan signIn=Xəttə bağlan

View File

@ -59,7 +59,6 @@ viewNbCheckmates=Глядзець %s маты
nbBookmarks=%s Закладкі nbBookmarks=%s Закладкі
nbPopularGames=%s Папулярныя гульні nbPopularGames=%s Папулярныя гульні
nbAnalysedGames=%s Прааналізаваных гульняў nbAnalysedGames=%s Прааналізаваных гульняў
bookmarkedByNbPlayers=Дададзена ў закладкі %s гульцамі
viewInFullSize=Глядзець у поўным памеры viewInFullSize=Глядзець у поўным памеры
logOut=Выйсьці logOut=Выйсьці
signIn=Увайсьці signIn=Увайсьці

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Виж %s шах мата
nbBookmarks=%s Отбелязани nbBookmarks=%s Отбелязани
nbPopularGames=%s Известни игри nbPopularGames=%s Известни игри
nbAnalysedGames=%s Проучени игри nbAnalysedGames=%s Проучени игри
bookmarkedByNbPlayers=Отбелязана от %s играчи
viewInFullSize=Гледай на пълен екран viewInFullSize=Гледай на пълен екран
logOut=Излез logOut=Излез
signIn=Влез signIn=Влез

View File

@ -59,7 +59,6 @@ viewNbCheckmates=%s টি কিস্তিমাত
nbBookmarks=%s টি বুকমার্ক nbBookmarks=%s টি বুকমার্ক
nbPopularGames=%s টি জনপ্রিয় খেলা nbPopularGames=%s টি জনপ্রিয় খেলা
nbAnalysedGames=%s টি বিশ্লেষিত খেলা nbAnalysedGames=%s টি বিশ্লেষিত খেলা
bookmarkedByNbPlayers=%s জন খেলোয়াড় খেলাটিকে Bookmark করেছেন
viewInFullSize=পূর্ণ আকারে দেখুন viewInFullSize=পূর্ণ আকারে দেখুন
logOut=প্রস্থান logOut=প্রস্থান
signIn=সাইন ইন signIn=সাইন ইন

View File

@ -1,17 +1,17 @@
playWithAFriend=Igrajte protiv prijatelja playWithAFriend=Igrajte protiv prijatelja
playWithTheMachine=Igrajte protiv računara playWithTheMachine=Igrajte protiv računara
toInviteSomeoneToPlayGiveThisUrl=Za poziv u igru pošaljite ovu adresu toInviteSomeoneToPlayGiveThisUrl=Za poziv u igru pošaljite ovaj link
gameOver=Partija je gotova gameOver=Partija je gotova
waitingForOpponent=Čekanje na protivnika waitingForOpponent=Čekanje na protivnika
waiting=Protivnik na potezu waiting=Čekanje
yourTurn=Vi ste na potezu yourTurn=Vi ste na potezu
aiNameLevelAiLevel=%s Razina %s aiNameLevelAiLevel=%s nivo %s
level=Razina level=Nivo
toggleTheChat=Uključite/isključite dopisivanje toggleTheChat=Uključite/isključite dopisivanje
toggleSound=Uključite/isključite zvuk toggleSound=Uključite/isključite zvuk
chat=Dopisivanje chat=Dopisivanje
resign=Predaja resign=Predaja
checkmate=Mat checkmate=Šah-mat
stalemate=Pat stalemate=Pat
white=Bijeli white=Bijeli
black=Crni black=Crni
@ -21,19 +21,19 @@ whiteIsVictorious=Bijeli je pobjednik
blackIsVictorious=Crni je pobjednik blackIsVictorious=Crni je pobjednik
kingInTheCenter=Kralj u centru kingInTheCenter=Kralj u centru
threeChecks=Tri šaha threeChecks=Tri šaha
raceFinished=Trka je zavrsena raceFinished=Trka je završena
variantEnding=Varianta završnice variantEnding=Varijanta završnice
newOpponent=Novi protivnik newOpponent=Novi protivnik
yourOpponentWantsToPlayANewGameWithYou=Vaš protivnik želi revanš yourOpponentWantsToPlayANewGameWithYou=Vaš protivnik želi revanš
joinTheGame=Pridružite se partiji joinTheGame=Pridružite se partiji
whitePlays=Bijeli na potezu whitePlays=Bijeli na potezu
blackPlays=Crni na potezu blackPlays=Crni na potezu
theOtherPlayerHasLeftTheGameYouCanForceResignationOrWaitForHim=Vaš protivnik možda je napustio partiju. Možete proglasiti pobjedu ili čekati. theOtherPlayerHasLeftTheGameYouCanForceResignationOrWaitForHim=Vaš protivnik je možda napustio partiju. Možete proglasiti pobjedu ili čekati.
makeYourOpponentResign=Tražite da protivnik preda makeYourOpponentResign=Tražite da protivnik preda
forceResignation=Proglasite pobjedu forceResignation=Proglasite pobjedu
forceDraw=Proglasite remi forceDraw=Proglasite remi
talkInChat=Dopisujte se talkInChat=Dopisujte se
theFirstPersonToComeOnThisUrlWillPlayWithYou=Prva osoba koja se pojavi na ovoj adresi igrat će protiv Vas. theFirstPersonToComeOnThisUrlWillPlayWithYou=Prva osoba koja se pojavi na ovom linku igrat će protiv Vas.
whiteResigned=Bijeli je predao whiteResigned=Bijeli je predao
blackResigned=Crni je predao blackResigned=Crni je predao
whiteLeftTheGame=Bijeli je napustio partiju whiteLeftTheGame=Bijeli je napustio partiju
@ -41,43 +41,42 @@ blackLeftTheGame=Crni je napustio partiju
shareThisUrlToLetSpectatorsSeeTheGame=Podijelite ovaj link kako bi drugi mogli vidjeti partiju shareThisUrlToLetSpectatorsSeeTheGame=Podijelite ovaj link kako bi drugi mogli vidjeti partiju
theComputerAnalysisHasFailed=Računarska analiza nije uspjela theComputerAnalysisHasFailed=Računarska analiza nije uspjela
viewTheComputerAnalysis=Pogledajte računarsku analizu viewTheComputerAnalysis=Pogledajte računarsku analizu
requestAComputerAnalysis=Zahtijevajte računarsku analizu requestAComputerAnalysis=Zatražite računarsku analizu
computerAnalysis=Računarska analiza computerAnalysis=Računarska analiza
analysis=Analiza analysis=Ploča za analizu
blunders=Grubi previdi blunders=Grubi previdi
mistakes=Greške mistakes=Greške
inaccuracies=Nepreciznosti inaccuracies=Nepreciznosti
moveTimes=Vrijeme za potez moveTimes=Vremena za potez
flipBoard=Okrenite tablu flipBoard=Okrenite tablu
threefoldRepetition=Trostruko ponavljanje threefoldRepetition=Trostruko ponavljanje
claimADraw=Proglasite remi claimADraw=Proglasite remi
offerDraw=Ponudite remi offerDraw=Ponudite remi
draw=Remi draw=Remi
nbConnectedPlayers=%s prisutnih igrača nbConnectedPlayers=%s igrača
gamesBeingPlayedRightNow=Trenutne partije gamesBeingPlayedRightNow=Trenutne partije
viewAllNbGames=%s partija viewAllNbGames=%s partija
viewNbCheckmates=%s matova viewNbCheckmates=%s matova
nbBookmarks=%s zabilježenih partija nbBookmarks=%s zabilježenih partija
nbPopularGames=%s popularnih partija nbPopularGames=%s popularnih partija
nbAnalysedGames=%s analiziranih partija nbAnalysedGames=%s analiziranih partija
bookmarkedByNbPlayers=Partiju je zabilježilo %s protivnika
viewInFullSize=Pogledajte u punoj veličini viewInFullSize=Pogledajte u punoj veličini
logOut=Odjava logOut=Odjava
signIn=Prijava signIn=Prijava
newToLichess=Novi na Lichessu? newToLichess=Novi na Lichessu?
youNeedAnAccountToDoThat=Treba Vam račun da biste to uradili youNeedAnAccountToDoThat=Treba Vam račun da biste to uradili
signUp=Registrirajte se signUp=Registrirajte se
computersAreNotAllowedToPlay=Računarima i igračima koji koriste pomoć računara nije dozvoljeno igrati. Molimo Vas da ne koristite pomoć šahovskih programa, baza podataka ili drugih igrača dok igrate.Takodje koristenje vise racuna vodi do toga da cete biti iskljuceni. computersAreNotAllowedToPlay=Računarima i igračima koji koriste pomoć računara nije dozvoljeno igrati. Molimo Vas da ne koristite pomoć šahovskih programa, baza podataka ili drugih igrača dok igrate.Također, korištenje više računa vodi blokadi računa.
games=Partije games=Partije
forum=Forum forum=Forum
xPostedInForumY=%s objavio u forumu %s xPostedInForumY=%s je pisao na forumskoj temi %s
latestForumPosts=Posljednja poruka na forumu latestForumPosts=Zadnje poruke na forumu
players=Igrači players=Igrači
minutesPerSide=Minuta po igraču minutesPerSide=Minuta po igraču
variant=Varijanta variant=Varijanta
variants=Varijante variants=Varijante
timeControl=Vremenska kontrola timeControl=Vremenska kontrola
realTime=Stvarno Vrijeme realTime=Stvarno vrijeme
correspondence=Dopisni šah correspondence=Dopisni šah
daysPerTurn=Dana po potezu daysPerTurn=Dana po potezu
oneDay=Jedan dan oneDay=Jedan dan
@ -85,17 +84,17 @@ nbDays=%s dana
nbHours=%s sati nbHours=%s sati
time=Vrijeme time=Vrijeme
rating=Rejting rating=Rejting
ratingStats=Rejting pozicija ratingStats=Statistike rejtinga
username=Korisničko ime username=Korisničko ime
usernameOrEmail=Korisničko ime usernameOrEmail=Korisničko ime
password=Lozinka password=Lozinka
haveAnAccount=Već imate račun? haveAnAccount=Već imate račun?
changePassword=Promijeni lozinku changePassword=Promjena lozinke
changeEmail=Promijeni e-Mail changeEmail=Promjena e-maila
email=e-Mail email=E-mail
emailIsOptional=e-Mail je neoavezan. Lichess ce je koristiti da resetuje vasu Lozinku ako je zaboravite. emailIsOptional=E-mail nije obavezan. Lichess će ga koristiti da povrati Vašu lozinku ako je zaboravite.
passwordReset=resetuj lozinku passwordReset=Resetovanje lozinke
forgotPassword=Zaboravio si lozinku ? forgotPassword=Zaboravljena lozinka?
rank=Poredak rank=Poredak
gamesPlayed=Broj odigranih partija gamesPlayed=Broj odigranih partija
nbGamesWithYou=%s odigranih partija protiv Vas nbGamesWithYou=%s odigranih partija protiv Vas
@ -106,9 +105,9 @@ drawOfferSent=Ponuda za remi poslana
drawOfferDeclined=Ponuda za remi odbijena drawOfferDeclined=Ponuda za remi odbijena
drawOfferAccepted=Ponuda za remi prihvaćena drawOfferAccepted=Ponuda za remi prihvaćena
drawOfferCanceled=Ponuda za remi povučena drawOfferCanceled=Ponuda za remi povučena
whiteOffersDraw=Beli nudi remi whiteOffersDraw=Bijeli nudi remi
blackOffersDraw=Crni nudi remi blackOffersDraw=Crni nudi remi
whiteDeclinesDraw=Beli odbija ponudu za remi whiteDeclinesDraw=Bijeli odbija ponudu za remi
blackDeclinesDraw=Crni odbija ponudu za remi blackDeclinesDraw=Crni odbija ponudu za remi
yourOpponentOffersADraw=Protivnik nudi remi yourOpponentOffersADraw=Protivnik nudi remi
accept=Prihvatite accept=Prihvatite
@ -140,8 +139,8 @@ subject=Predmet
recipient=Primalac recipient=Primalac
send=Pošaljite send=Pošaljite
incrementInSeconds=Dodatnih sekundi po potezu incrementInSeconds=Dodatnih sekundi po potezu
freeOnlineChess=Besplatni internet-šah freeOnlineChess=Besplatni internetski šah
spectators=Posmatrača spectators=Posmatrača:
nbWins=%s pobjeda nbWins=%s pobjeda
nbLosses=%s poraza nbLosses=%s poraza
nbDraws=%s remija nbDraws=%s remija
@ -149,17 +148,17 @@ exportGames=Izvezite odigrane partije
ratingRange=Raspon rejtinga ratingRange=Raspon rejtinga
giveNbSeconds=Dajte protivniku %s sekundi giveNbSeconds=Dajte protivniku %s sekundi
premoveEnabledClickAnywhereToCancel=Potez unaprijed uključen - Kliknite bilo gdje da otkažete premoveEnabledClickAnywhereToCancel=Potez unaprijed uključen - Kliknite bilo gdje da otkažete
thisPlayerUsesChessComputerAssistance=Ovaj igrač koristi šahovski računar za pomoć thisPlayerUsesChessComputerAssistance=Ovaj igrač koristi pomoć šahovskog programa
thisPlayerArtificiallyIncreasesTheirRating=Ovaj igrač umjetno diže/spušta svoj rejting thisPlayerArtificiallyIncreasesTheirRating=Ovaj igrač umjetno diže/spušta svoj rejting
opening=Otvaranje opening=Otvaranje
openingExplorer=Pretraživač otvaranja openingExplorer=Pretraživač otvaranja
takeback=Vratite potez takeback=Vratite potez
proposeATakeback=Predložite vraćanje poteza proposeATakeback=Predložite vraćanje poteza
takebackPropositionSent=Prijedlog za vračanje poteza poslan takebackPropositionSent=Prijedlog za vraćanje poteza poslat
takebackPropositionDeclined=Prijedlog za vraćanje poteza odbijen takebackPropositionDeclined=Prijedlog za vraćanje poteza odbijen
takebackPropositionAccepted=Prijedlog za vraćanje poteza prihvaćen takebackPropositionAccepted=Prijedlog za vraćanje poteza prihvaćen
takebackPropositionCanceled=Prijedlog za vraćanje poteza otkazan takebackPropositionCanceled=Prijedlog za vraćanje poteza otkazan
yourOpponentProposesATakeback=Vaš protivnik predlaže da vratite potez yourOpponentProposesATakeback=Vaš protivnik predlaže vraćanje poteza
bookmarkThisGame=Zabilježite partiju bookmarkThisGame=Zabilježite partiju
search=Traži search=Traži
advancedSearch=Napredna pretraga advancedSearch=Napredna pretraga
@ -169,7 +168,7 @@ tournamentPoints=Bodovi na turniru
viewTournament=Pogledajte turnir viewTournament=Pogledajte turnir
backToTournament=Vratite se na turnir backToTournament=Vratite se na turnir
backToGame=Vrati se igri backToGame=Vrati se igri
freeOnlineChessGamePlayChessNowInACleanInterfaceNoRegistrationNoAdsNoPluginRequiredPlayChessWithComputerFriendsOrRandomOpponents=Besplatni internet-šah. Igrajte šah sa čistim interfejsom. Registracija nije neophodna, nema reklama, ne zahtijevaju se priključci za preglednik. Igrajte protiv računara, prijatelja ili slučajnih protivnika. freeOnlineChessGamePlayChessNowInACleanInterfaceNoRegistrationNoAdsNoPluginRequiredPlayChessWithComputerFriendsOrRandomOpponents=Besplatni internetski šah. Igrajte šah s čistim interfejsom. Registracija nije obavezna, nema reklama, ne zahtijevaju se dodaci za preglednik. Igrajte protiv računara, prijatelja ili slučajnih protivnika.
teams=Ekipe teams=Ekipe
nbMembers=%s članova nbMembers=%s članova
allTeams=Sve ekipe allTeams=Sve ekipe
@ -184,13 +183,13 @@ joiningPolicy=Postavke pridruživanja
teamLeader=Vođa ekipe teamLeader=Vođa ekipe
teamBestPlayers=Najbolji igrači teamBestPlayers=Najbolji igrači
teamRecentMembers=Najnoviji članovi teamRecentMembers=Najnoviji članovi
xJoinedTeamY=%s pridružio se ekipi %s xJoinedTeamY=%s se pridružio ekipi %s
xCreatedTeamY=%s je sastavio ekipu %s xCreatedTeamY=%s je sastavio ekipu %s
averageElo=Prosječni rejting averageElo=Prosječni rejting
location=Lokacija location=Lokacija
settings=Postavke settings=Postavke
filterGames=Filtriraj partije filterGames=Filtriraj partije
reset=Resetirajte reset=Resetujte
apply=Primijenite apply=Primijenite
leaderboard=Ljestvica vodećih leaderboard=Ljestvica vodećih
pasteTheFenStringHere=Zalijepite FEN kod ovdje pasteTheFenStringHere=Zalijepite FEN kod ovdje
@ -214,23 +213,23 @@ following=Pratite igrača
unfollow=Prekinite praćenje unfollow=Prekinite praćenje
block=Blokirajte block=Blokirajte
blocked=Blokiran blocked=Blokiran
unblock=Odblokiraj unblock=Deblokiraj
followsYou=Prati vas followsYou=Prati vas
xStartedFollowingY=%s je počeo pratiti %s xStartedFollowingY=%s je počeo pratiti %s
nbFollowers=%s pratilaca nbFollowers=%s pratilaca
nbFollowing=%s prati nbFollowing=%s prati
more=Više more=Više
memberSince=Član od memberSince=Član od
lastSeenActive=Posljednje prijavljivanje %s lastSeenActive=Zadnja aktivnost %s
challengeToPlay=Izazovite challengeToPlay=Izazovite na partiju
player=Igrač player=Igrač
list=Spisak list=Spisak
graph=Grafikon graph=Grafikon
lessThanNbMinutes=manje od %s minuta lessThanNbMinutes=manje od %s minuta
xToYMinutes=%s do %s minuta xToYMinutes=%s do %s minuta
textIsTooShort=Tekst je prekratak textIsTooShort=Tekst je prekratak.
textIsTooLong=Tekst je predug textIsTooLong=Tekst je predug.
required=Potrebno required=Potrebno.
openTournaments=Otvoreni turniri openTournaments=Otvoreni turniri
duration=Trajanje duration=Trajanje
winner=Pobjednik winner=Pobjednik
@ -245,7 +244,7 @@ winStreak=Uzastopne pobjede
createdBy=Kreirao createdBy=Kreirao
tournamentIsStarting=Turnir počinje tournamentIsStarting=Turnir počinje
membersOnly=Samo članovi membersOnly=Samo članovi
boardEditor=Namjestite početnu poziciju boardEditor=Namjestite poziciju
startPosition=Početna pozicija startPosition=Početna pozicija
clearBoard=Očistite tablu clearBoard=Očistite tablu
savePosition=Sačuvajte poziciju savePosition=Sačuvajte poziciju
@ -258,21 +257,21 @@ firstName=Ime
lastName=Prezime lastName=Prezime
biography=Biografija biography=Biografija
country=Država country=Država
preferences=Vlastita podešavanja preferences=Postavke
watchLichessTV=Gledajte Lichess TV watchLichessTV=Gledajte Lichess TV
previouslyOnLichessTV=Prethodno na Lichess TV-u previouslyOnLichessTV=Prethodno na Lichess TV-u
onlinePlayers=Prisutni igrači onlinePlayers=Prisutni igrači
activeToday=Aktivni danas activeToday=Aktivni danas
activePlayers=Aktivni Igrači activePlayers=Aktivni igrači
bewareTheGameIsRatedButHasNoClock=Pažnja: partija je rangirana, ali bez sata! bewareTheGameIsRatedButHasNoClock=Pažnja: partija je rangirana, ali bez sata!
training=Vježba training=Trening
yourPuzzleRatingX=Vaš rejting u problemima: %s yourPuzzleRatingX=Vaš rejting u problemima: %s
findTheBestMoveForWhite=Pronadji najbolji potez za Bijelog findTheBestMoveForWhite=Pronađi najbolji potez za bijelog
findTheBestMoveForBlack=Pronadji najbolji potez za Crnog findTheBestMoveForBlack=Pronađi najbolji potez za crnog
toTrackYourProgress=Da pratite napredak: toTrackYourProgress=Da pratite napredak:
trainingSignupExplanation=Lichess će zadavati probleme koji odgovaraju Vašim mogućnostima da vježba bude bolja i uspješnija. trainingSignupExplanation=Lichess će zadavati probleme koji odgovaraju Vašim mogućnostima da vježba bude bolja i uspješnija.
recentlyPlayedPuzzles=Nedavno rješavani problemi recentlyPlayedPuzzles=Nedavno rješavani problemi
puzzleId=Vježba %s puzzleId=Problem %s
puzzleOfTheDay=Problem dana puzzleOfTheDay=Problem dana
clickToSolve=Kliknite za rješenje clickToSolve=Kliknite za rješenje
goodMove=Dobar potez goodMove=Dobar potez
@ -285,19 +284,19 @@ victory=Pobjeda!
giveUp=Predajte se giveUp=Predajte se
puzzleSolvedInXSeconds=Problem riješen za %s sekundi puzzleSolvedInXSeconds=Problem riješen za %s sekundi
wasThisPuzzleAnyGood=Da li je ovaj problem bio dobar? wasThisPuzzleAnyGood=Da li je ovaj problem bio dobar?
pleaseVotePuzzle=Pomozi da se Lichess poboljša, koristeći strelice gore/dolje pleaseVotePuzzle=Pomozi da se Lichess poboljša, koristeći strelice gore/dolje:
thankYou=Hvala! thankYou=Hvala!
ratingX=Rejting: %s ratingX=Rejting: %s
playedXTimes=Odigrano %s puta playedXTimes=Odigrano %s puta
fromGameLink=Iz partije %s fromGameLink=Iz partije %s
startTraining=Počnite vježbu startTraining=Počnite trening
continueTraining=Nastavite vježbu continueTraining=Nastavite trening
retryThisPuzzle=Pokušajte ponovo retryThisPuzzle=Pokušajte ponovo ovaj problem
thisPuzzleIsCorrect=Ovaj problem je ispravan i zanimljiv thisPuzzleIsCorrect=Ovaj problem je ispravan i zanimljiv
thisPuzzleIsWrong=Ovaj problem je neispravan ili dosadan thisPuzzleIsWrong=Ovaj problem je neispravan ili dosadan
youHaveNbSecondsToMakeYourFirstMove=Imate %s sekundi da načinite vaš prvi potez! youHaveNbSecondsToMakeYourFirstMove=Imate %s sekundi da načinite vaš prvi potez!
nbGamesInPlay=odigrano %s partija nbGamesInPlay=odigrano %s partija
automaticallyProceedToNextGameAfterMoving=Automatski prebaci na sljedecu partiju poslije odigranog poteza automaticallyProceedToNextGameAfterMoving=Automatski prebaci na sljedeću partiju poslije odigranog poteza
autoSwitch=Automatski prebaci autoSwitch=Automatski prebaci
openingId=Otvaranje %s openingId=Otvaranje %s
yourOpeningRatingX=Vaš rejting u otvaranju %s yourOpeningRatingX=Vaš rejting u otvaranju %s
@ -334,7 +333,7 @@ cheat=Varanje
insult=Uvreda insult=Uvreda
troll=Mamljenje troll=Mamljenje
other=Ostalo other=Ostalo
reportDescriptionHelp=Zalijepiti link za igru (e) i objasniti šta je pogrešno u ponašanju ovog korisnika. reportDescriptionHelp=Zalijepiti link za igru(e) i objasniti šta je pogrešno u ponašanju ovog korisnika. Nemojte pisati samo "ovaj vara", nego nam reci kako si došao do ovog zaključka. Vaš iskaz će biti brže riješen ako pišete na engleskom jeziku.
by=od %s by=od %s
thisTopicIsNowClosed=Ova tema je sada zatvorena. thisTopicIsNowClosed=Ova tema je sada zatvorena.
theming=Izgled theming=Izgled
@ -342,32 +341,32 @@ donate=Donacija
blog=Blog blog=Blog
questionsAndAnswers=Pitanja i odgovori questionsAndAnswers=Pitanja i odgovori
notes=Bilješke notes=Bilješke
typePrivateNotesHere=Ovdje upiši ličnu bilješku typePrivateNotesHere=Ovdje upiši privatnu bilješku
gameDisplay=Prikaz igre gameDisplay=Prikaz igre
pieceAnimation=Animacija figura pieceAnimation=Animacija figura
materialDifference=Razlika materijala materialDifference=Razlika materijala
closeAccount=Zatvorite račun closeAccount=Zatvorite račun
closeYourAccount=Zatvorite Vaš račun closeYourAccount=Zatvorite Vaš račun
changedMindDoNotCloseAccount=Predomislio sam se, nemoj zatvoriti moj račun changedMindDoNotCloseAccount=Predomislio sam se, nemojte zatvoriti moj račun
closeAccountExplanation=Jesi li siguran da želiš zatvoriti račun? Ova odluka je stalna. Poslje toga tvoj profil neče više biti dostupan. closeAccountExplanation=Jeste li sigurni da želite zatvoriti račun? Ova odluka je konačna. Poslije toga Vaš profil neće više biti dostupan.
thisAccountIsClosed=Ovaj račun je zatvoren. thisAccountIsClosed=Ovaj račun je zatvoren.
invalidUsernameOrPassword=Pogreško korisničko ime ili lozinka. invalidUsernameOrPassword=Pogreško korisničko ime ili lozinka.
emailMeALink=Šalji link emailMeALink=Pošalji link preko e-maila
currentPassword=Trenutna lozinka. currentPassword=Trenutna lozinka.
newPassword=Nova lozinka newPassword=Nova lozinka
newPasswordAgain=Nova lozinka (ponovo) newPasswordAgain=Nova lozinka (ponovo)
boardHighlights=Zanimljivosti na Ploci (zadnja poteza i šah) boardHighlights=Zanimljivosti na ploči (zadnji potez i šah)
pieceDestinations=Dostupna polja (moguče poteze) pieceDestinations=Dostupna polja (mogući potezi i predpotezi)
boardCoordinates=Koordinate na ploci (A-H, 1-8) boardCoordinates=Koordinate na ploči (A-H, 1-8)
moveListWhilePlaying=Lista poteza u igri moveListWhilePlaying=Lista poteza u igri
chessClock=Šahovski sat chessClock=Šahovski sat
tenthsOfSeconds=Desetinke sekunde tenthsOfSeconds=Desetinke sekunde
never=Nikada never=Nikada
whenTimeRemainingLessThanTenSeconds=Kada je vremena < 10 sekundi whenTimeRemainingLessThanTenSeconds=Kada je ostalo < 10 sekundi
horizontalGreenProgressBars=Horizontalna zelena linija horizontalGreenProgressBars=Horizontalna zelena linija napretka
soundWhenTimeGetsCritical=Audio opozorenje kada nema više vremena soundWhenTimeGetsCritical=Zvučno opozorenje pri kraju vremena
gameBehavior=Ponašanje igre gameBehavior=Ponašanje igre
premovesPlayingDuringOpponentTurn=Pred-potezi (igranje prilikom protivnikovog poteza) premovesPlayingDuringOpponentTurn=Predpotezi (igranje prilikom protivnikovog poteza)
takebacksWithOpponentApproval=Povrat poteza (uz odobrenje protivnika) takebacksWithOpponentApproval=Povrat poteza (uz odobrenje protivnika)
promoteToQueenAutomatically=Automatska zamjena za kraljicu promoteToQueenAutomatically=Automatska zamjena za kraljicu
claimDrawOnThreefoldRepetitionAutomatically=Prihvati remi %strostruko ponavljanje%s automatski claimDrawOnThreefoldRepetitionAutomatically=Prihvati remi %strostruko ponavljanje%s automatski
@ -376,19 +375,19 @@ letOtherPlayersFollowYou=Dopustite da vas drugi igrači prate
letOtherPlayersChallengeYou=Dopustite da vas drugi igrači izazovu letOtherPlayersChallengeYou=Dopustite da vas drugi igrači izazovu
sound=Zvuk sound=Zvuk
soundControlInTheTopBarOfEveryPage=Kontrola za zvuk je pri vrhu svake stranice, na desnoj strani soundControlInTheTopBarOfEveryPage=Kontrola za zvuk je pri vrhu svake stranice, na desnoj strani
yourPreferencesHaveBeenSaved=Tvoje postavke su memorisane. yourPreferencesHaveBeenSaved=Vaše postavke su sačuvane.
none=Nikakva none=Nikakva
fast=Brza fast=Brza
normal=Normalna normal=Normalna
slow=Spora slow=Spora
insideTheBoard=Unutar ploce insideTheBoard=Unutar ploče
outsideTheBoard=Izvan ploce outsideTheBoard=Van ploče
onSlowGames=Na sporim igrama onSlowGames=Na sporim igrama
always=Uvijek always=Uvijek
inCasualGamesOnly=Samo u običnim igrama inCasualGamesOnly=Samo u običnim igrama
whenPremoving=Prlikom pred-poteza whenPremoving=Prilikom predpoteza
whenTimeRemainingLessThanThirtySeconds=Kada je preostalo vrijeme <30 sekundi whenTimeRemainingLessThanThirtySeconds=Kada je preostalo < 30 sekundi
difficultyEasy=Lagano difficultyEasy=Lahko
difficultyNormal=Normalno difficultyNormal=Normalno
difficultyHard=Teško difficultyHard=Teško
xLeftANoteOnY=%s je ostavio bilješku na %s xLeftANoteOnY=%s je ostavio bilješku na %s
@ -396,65 +395,65 @@ xCompetesInY=%s se takmiči u %s
xAskedY=%s je pitao %s xAskedY=%s je pitao %s
xAnsweredY=%s je odgovorio %s xAnsweredY=%s je odgovorio %s
xCommentedY=%s je komentarisao %s xCommentedY=%s je komentarisao %s
timeline=Vremenska linija timeline=Hronologija
seeAllTournaments=Pogledaj sve turnire seeAllTournaments=Pogledaj sve turnire
starting=Počinje: starting=Počinje:
allInformationIsPublicAndOptional=Sve informacije su javne. allInformationIsPublicAndOptional=Sve informacije su javne i neobavezne.
yourCityRegionOrDepartment=Tvoj grad, regija ili pokrajina. yourCityRegionOrDepartment=Vaš grad, regija ili pokrajina.
biographyDescription=Nešto više o vama, što volite u šahu, omiljena otvaranja, igre, igrači... biographyDescription=Nešto više o Vama, šta volite u šahu, omiljena otvaranja, igre, igrači...
maximumNbCharacters=Maksimalno %s znakova. maximumNbCharacters=Najviše %s znakova.
blocks=%s blokiranih blocks=%s blokiranih
listBlockedPlayers=Lista blokiranih igrača listBlockedPlayers=Lista blokiranih igrača
human=Osoba human=Osoba
computer=Kompjuter computer=Računar
side=Strana side=Strana
clock=Sat clock=Sat
unauthorizedError=Pristup neodozvoljen. unauthorizedError=Pristup neodozvoljen.
noInternetConnection=Nedostupan internet. Možeš i dalje igrati preko menuja noInternetConnection=Nedostupan internet. Možete i dalje igrati vanmrežno preko menija.
connectedToLichess=Spojeni ste na lichess.org connectedToLichess=Spojeni ste na lichess.org
signedOut=Odjavljeni ste signedOut=Odjavljeni ste
loginSuccessful=Prijavljeni ste loginSuccessful=Prijavljeni ste
playOnTheBoardOffline=Igraj udvoje playOnTheBoardOffline=Igraj u dvoje
playOfflineComputer=Igraj protiv kompjutera playOfflineComputer=Igraj protiv računara
opponent=Protivnik opponent=Protivnik
learn=Vježba learn=Učenje
community=Zajednica community=Zajednica
tools=Alati tools=Alati
increment=Dodatak increment=Inkrement
board=Ploca board=Ploča
pieces=Figure pieces=Figure
sharePGN=Podjeli PGN sharePGN=Podijeli PGN
playOnline=Igraj na mreži playOnline=Igraj na mreži
playOffline=Igraj bez mreže playOffline=Igraj bez mreže
allowAnalytics=Dozvoli anonimnu statistiku allowAnalytics=Dozvoli anonimnu statistiku
shareGameURL=Podijeli URL partije shareGameURL=Podijeli link partije
error.required=Ovo polje je obavezno error.required=Ovo polje je obavezno
error.email=Ova e-mail adresa je neispravna error.email=Ova e-mail adresa je neispravna
error.email_acceptable=Ova e-mail adresa nije prihvatljiva error.email_acceptable=Ova e-mail adresa nije prihvatljiva
error.email_unique=Ova e-mail adresa je već korištena error.email_unique=Ova e-mail adresa je već zauzeta
blindfoldChess=Šah na slijepo (nevidljive figure) blindfoldChess=Šah na slijepo (nevidljive figure)
moveConfirmation=Potvrda poteza moveConfirmation=Potvrda poteza
inCorrespondenceGames=U dopisnim partijama inCorrespondenceGames=U dopisnim partijama
ifRatingIsPlusMinusX=Ukoliko je rejting ± %s ifRatingIsPlusMinusX=Ako je rejting ± %s
onlyFriends=Samo prijatelji onlyFriends=Samo prijatelji
menu=Izbor menu=Izbornik
castling=Rokada castling=Rokada
whiteCastlingKingside=Bijeli O-O whiteCastlingKingside=Bijeli O-O
whiteCastlingQueenside=Bijeli O-O-O whiteCastlingQueenside=Bijeli O-O-O
blackCastlingKingside=Crni O-O blackCastlingKingside=Crni O-O
blackCastlingQueenside=Crni O-O-O blackCastlingQueenside=Crni O-O-O
nbForumPosts=%s Forumskih poruka nbForumPosts=%s forumskih poruka
tpTimeSpentPlaying=Vrijeme provedeno igrajući: %s tpTimeSpentPlaying=Vrijeme provedeno igrajući: %s
watchGames=Gledaj partije watchGames=Gledaj partije
tpTimeSpentOnTV=Vrijeme na TV-u: %s tpTimeSpentOnTV=Vrijeme na TV-u: %s
watch=Gledaj watch=Gledaj
internationalEvents=Međunarodni događaji internationalEvents=Međunarodni događaji
videoLibrary=Video biblioteka videoLibrary=Video biblioteka
mobileApp=Mobilni App mobileApp=Mobilna aplikacija
webmasters=Webmasteri webmasters=Webmasteri
contribute=Doprinesi contribute=Doprinesi
contact=Kontaktiraj contact=Kontaktiraj
termsOfService=ToS termsOfService=Uvjeti korištenja
sourceCode=Izvorni kod sourceCode=Izvorni kod
simultaneousExhibitions=Simultanke simultaneousExhibitions=Simultanke
host=Domaćin host=Domaćin
@ -464,18 +463,18 @@ noSimulFound=Simultanka nije pronađena
noSimulExplanation=Ova simultanka ne postoji. noSimulExplanation=Ova simultanka ne postoji.
returnToSimulHomepage=Vrati se na početnu stranicu sa simultankama returnToSimulHomepage=Vrati se na početnu stranicu sa simultankama
aboutSimul=Simultanke uključuju jednog igrača koji igra protiv više protivnika odjednom. aboutSimul=Simultanke uključuju jednog igrača koji igra protiv više protivnika odjednom.
aboutSimulImage=Od 50 protivnika, Fischer je pobijedio 47 parija, remizirao 2 i izgubio 1. aboutSimulImage=Od 50 protivnika, Fischer je pobijedio 47 partija, remizirao 2 i izgubio 1.
aboutSimulRealLife=Koncept je preuzet iz stvarnog života. U stvarnom životu, ovo uključuje domaćina simultanke koji ide od table do table da odigra pojedinačni potez. aboutSimulRealLife=Koncept je preuzet iz stvarnog života. U stvarnom životu, ovo uključuje domaćina simultanke koji ide od ploče do ploče da odigra pojedinačni potez.
aboutSimulRules=Kada simultanka započne, svaki igrač započinje partiju protiv domaćina, koji dobija bijele figure. Simultanka završava kada su i sve partije završene. aboutSimulRules=Kada simultanka započne, svaki igrač započinje partiju protiv domaćina, koji dobija bijele figure. Simultanka završava kada su i sve partije završene.
aboutSimulSettings=Simultanke su uvijek prijateljske. Igraj ponovo, vrati potez i dodaj vrijeme je isključeno. aboutSimulSettings=Simultanke su uvijek prijateljske. Opcije "igraj ponovo", "vrati potez" i "dodaj vrijeme" su isključene.
create=Kreiraj create=Kreiraj
whenCreateSimul=Kada kreiraš simultanku, igraš protiv više igrača istovremeno. whenCreateSimul=Kada kreiraš simultanku, igraš protiv više igrača istovremeno.
simulVariantsHint=Ako izabereš nekoliko varijanti, svaki igrač je u mogućnosti da izabere koju će igrati. simulVariantsHint=Ako izabereš nekoliko varijanti, svaki igrač je u mogućnosti da izabere koju će igrati.
simulClockHint=Fischer podešavanje sata. Što više igrača primiš, više vremena bit će ti potrebno. simulClockHint=Fischerovo podešavanje sata. Što više igrača primiš, više vremena bit će ti potrebno.
simulAddExtraTime=Možeš dodati vrijeme na svoj sat da ti pomogne savladati simultanku. simulAddExtraTime=Možeš dodati vrijeme na svoj sat da ti pomogne savladati simultanku.
simulHostExtraTime=Dodatno vrijeme domaćina simulHostExtraTime=Dodatno vrijeme domaćina
lichessTournaments=Lichess turniri lichessTournaments=Lichess turniri
tournamentFAQ=Arena turniri, najčešće postavljena pitanja tournamentFAQ=Najčešće postavljena pitanja za Arena turnire
tournamentOfficial=Službeno tournamentOfficial=Službeno
timeBeforeTournamentStarts=Vrijeme do početka turnira timeBeforeTournamentStarts=Vrijeme do početka turnira
averageCentipawnLoss=Prosječni gubitak u stotim dijelovima pješaka averageCentipawnLoss=Prosječni gubitak u stotim dijelovima pješaka
@ -484,29 +483,38 @@ keyMoveBackwardOrForward=Potez nazad/naprijed
keyGoToStartOrEnd=idi na početak/kraj keyGoToStartOrEnd=idi na početak/kraj
keyShowOrHideComments=pokaži/sakrij komentare keyShowOrHideComments=pokaži/sakrij komentare
keyEnterOrExitVariation=otvori/zatvori varijantu keyEnterOrExitVariation=otvori/zatvori varijantu
keyYouCanDrawArrowsCirclesAndScrollToMove=Pritisnite shift i kliknite lijevom tipkom miša ili desnom tipkom kako biste crtali krugove i strelice na tabli. Možete također skrolati tabli kako biste se pomicali u igri. keyYouCanDrawArrowsCirclesAndScrollToMove=Pritisnite shift i kliknite lijevom tipkom miša ili desnom tipkom kako biste crtali krugove i strelice na tabli. Možete također skrolati po tabli kako biste se pomicali u igri.
newTournament=Novi turnir newTournament=Novi turnir
tournamentHomeTitle=Šahovski turniri sa različitim vremenskim kontrolama i varijantama tournamentHomeTitle=Šahovski turniri sa različitim vremenskim kontrolama i varijantama
tournamentHomeDescription=Igraj brze turnire! Pridruži se turniru ili stvori svoj turnir. Zuger, Blitz, Klasicni, Chess 960, King of the Hill, Tri Saha, i jos vise opcije je dostupno za beskrajnu sahovsku zanimaciju. tournamentHomeDescription=Igraj brze turnire! Pridruži se turniru ili stvori svoj turnir. Zuger, Blitz, Klasični, Chess 960, King of the Hill, Tri šaha, i jos više opcije je dostupno za beskrajnu šahovsku zanimaciju.
tournamentNotFound=Turnir nije pronađen tournamentNotFound=Turnir nije pronađen
tournamentDoesNotExist=Turnir ne postoji. tournamentDoesNotExist=Turnir ne postoji.
tournamentMayHaveBeenCanceled=Turnir je možda bio otkazan, ako su ga svi igrači napustili prije početka. tournamentMayHaveBeenCanceled=Turnir je možda bio otkazan, ako su ga svi igrači napustili prije početka.
returnToTournamentsHomepage=Povratak na početnu stranicu turnira returnToTournamentsHomepage=Povratak na početnu stranicu turnira
weeklyPerfTypeRatingDistribution=Mjesečna %s rejting raspodjela weeklyPerfTypeRatingDistribution=Mjesečna %s rejting raspodjela
nbPerfTypePlayersThisWeek=%s %s Igrača ovog mjeseca nbPerfTypePlayersThisWeek=%s %s igrača ovog mjeseca.
yourPerfTypeRatingisRating=Vas %s rejting je %s. yourPerfTypeRatingisRating=Vaš %s rejting je %s.
youAreBetterThanPercentOfPerfTypePlayers=Bolji ste nego %s od %s igrača youAreBetterThanPercentOfPerfTypePlayers=Bolji ste nego %s od %s igrača.
youDoNotHaveAnEstablishedPerfTypeRating=Nemate tačno odredjenu poziciju %s rejtinga youDoNotHaveAnEstablishedPerfTypeRating=Nemate tačno uspostavljen %s rejting.
checkYourEmail=Provjerite vaše email-ove checkYourEmail=Provjerite Vaš e-mail
weHaveSentYouAnEmailClickTheLink=Mi smo vam poslali e-mail. Kliknite na link u e-mailu da biste aktivirali svoj račun. weHaveSentYouAnEmailClickTheLink=Mi smo Vam poslali e-mail. Kliknite na link u e-mailu da biste aktivirali svoj račun.
ifYouDoNotSeeTheEmailCheckOtherPlaces=Ako ne vidite e-mail, provjerite na drugim mjestima, kao što su Junk, Spam, socijalne ili druge mape. ifYouDoNotSeeTheEmailCheckOtherPlaces=Ako ne vidite e-mail, provjerite na drugim mjestima, kao što su junk, spam, društvene ili druge mape.
areYouSureYouEvenRegisteredYourEmailOnLichess=Jeste li sigurni da ste registrirali svoj e-mail na Lichess? areYouSureYouEvenRegisteredYourEmailOnLichess=Jeste li sigurni da ste registrirali svoj e-mail na Lichess?
itWasNotRequiredForYourRegistration=To nije bilo potrebno za registraciju. itWasNotRequiredForYourRegistration=To nije bilo potrebno za registraciju.
weHaveSentYouAnEmailTo=Poslali smo e-mail na %s. Kliknite na link u e-mailu za resetiranje vaše lozinke. weHaveSentYouAnEmailTo=Poslali smo e-mail na %s. Kliknite na link u e-mailu za resetiranje vaše lozinke.
byRegisteringYouAgreeToBeBoundByOur=Registriranjem, slažete se da ćete se pridržavati naših %s.
networkLagBetweenYouAndLichess=Mrežno kašnjenje između Vas i lichessa
timeToProcessAMoveOnLichessServer=Vrijeme za procesiranje poteza na lichess serveru
downloadAnnotated=Skini sa anotacijom
downloadRaw=Skini sirovo
downloadImported=Preuzimanje uvezeno downloadImported=Preuzimanje uvezeno
printFriendlyPDF=PDF koji se može printati printFriendlyPDF=PDF koji se može printati
crosstable=Ukrštena tabela crosstable=Ukrštena tabela
youCanAlsoScrollOverTheBoardToMoveInTheGame=Možete također skrolati po ploči da se pomjerate u igri.
pressShiftPlusClickOrRightClickToDrawCirclesAndArrowsOnTheBoard=Pritisni shift+klik ili desni klik za crtanje krugova i strelica na ploči.
confirmResignation=Potvrdi predaju
letOtherPlayersMessageYou=Pusti druge igrače da te kontaktiraju letOtherPlayersMessageYou=Pusti druge igrače da te kontaktiraju
shareYourInsightsData=Prikaži svoje podatke uvida
youHaveAlreadyRegisteredTheEmail=Već ste registrirali email: %s youHaveAlreadyRegisteredTheEmail=Već ste registrirali email: %s
kidMode=Dječiji način rada kidMode=Dječiji način rada
playChessEverywhere=Igrajte šaha svugdje playChessEverywhere=Igrajte šaha svugdje
@ -514,6 +522,13 @@ asFreeAsLichess=Besplatno kao lichess
builtForTheLoveOfChessNotMoney=Izgrađeno zbog ljubavi prema šahu, ne novcu builtForTheLoveOfChessNotMoney=Izgrađeno zbog ljubavi prema šahu, ne novcu
everybodyGetsAllFeaturesForFree=Svako dobija sve mogućnosti besplatno everybodyGetsAllFeaturesForFree=Svako dobija sve mogućnosti besplatno
zeroAdvertisement=Bez reklama zeroAdvertisement=Bez reklama
fullFeatured=Sa svim mogućnostima
phoneAndTablet=Telefon i tablet phoneAndTablet=Telefon i tablet
bulletBlitzClassical=Bullet, blic, klasični
correspondenceChess=Prepisni šah
onlineAndOfflinePlay=Mrežna i vanmrežna igra onlineAndOfflinePlay=Mrežna i vanmrežna igra
viewTheSolution=Prika correspondenceAndUnlimited=Prepiska i neograničeno
viewTheSolution=Prikaži rješenje
followAndChallengeFriends=Prati i izazovi prijatelje
availableInNbLanguages=Dostupno na %s jezika!
gameAnalysis=Analiza igre

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s Escacs i mat
nbBookmarks=%s Marcadors nbBookmarks=%s Marcadors
nbPopularGames=%s Partides populars nbPopularGames=%s Partides populars
nbAnalysedGames=%s Partides analitzades nbAnalysedGames=%s Partides analitzades
bookmarkedByNbPlayers=Marcat per %s jugadors
viewInFullSize=Veure a mida completa viewInFullSize=Veure a mida completa
logOut=Tanca la sessió logOut=Tanca la sessió
signIn=Inicia la sessió signIn=Inicia la sessió

View File

@ -0,0 +1,19 @@
playWithAFriend=ghjucà cù un amicu
playWithTheMachine=Ghjucà contru l'urdinatore
toInviteSomeoneToPlayGiveThisUrl=Per fà vene à qualchisia à ghjucà, dà st'indirizzu
gameOver=hè finitu u ghjocu
waitingForOpponent=Aspittava di un avversu
waiting=Aspittava
yourTurn=Tocca a te
aiNameLevelAiLevel=%s livellu %s
level=Livellu
toggleTheChat=Attivà u Tchat/Disattivà u Tchat
toggleSound=Attivà u sonu/Disattivà u sonu
chat=Tchat
resign=Abandunnà
checkmate=Scaccu mattu
stalemate=Pattu
white=Biancu
black=Neru
randomColor=Culore casuale
createAGame=Creà un ghjocu

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Zobrazit všech %s matů
nbBookmarks=Záložky: %s nbBookmarks=Záložky: %s
nbPopularGames=Oblíbené partie: %s nbPopularGames=Oblíbené partie: %s
nbAnalysedGames=%s zanalyzovaných partií nbAnalysedGames=%s zanalyzovaných partií
bookmarkedByNbPlayers=Počet hráčů, kteří mají partii v záložkách: %s
viewInFullSize=Zobrazit v plné velikosti viewInFullSize=Zobrazit v plné velikosti
logOut=Odhlásit se logOut=Odhlásit se
signIn=Přihlásit se signIn=Přihlásit se

View File

@ -22,19 +22,26 @@ blackIsVictorious=Хурисем ҫӗнтерчӗҫ
kingInTheCenter=Ту патши kingInTheCenter=Ту патши
threeChecks=Виҫӗ шах пани threeChecks=Виҫӗ шах пани
raceFinished=Чупу вӗҫленчӗ raceFinished=Чупу вӗҫленчӗ
variantEnding=Уйрӑм вӗҫленни
newOpponent=Ҫӗнӗ ӑмӑртуҫӑ newOpponent=Ҫӗнӗ ӑмӑртуҫӑ
yourOpponentWantsToPlayANewGameWithYou=Ӑмӑртуҫу санпа тепӗр хут выљасшӑн yourOpponentWantsToPlayANewGameWithYou=Ӑмӑртуҫу санпа тепӗр хут выљасшӑн
joinTheGame=Вӑййине хутшӑн joinTheGame=Вӑййине хутшӑн
whitePlays=Шуррисен ҫӳремелле whitePlays=Шуррисен ҫӳремелле
blackPlays=Хурисен ҫӳремелле blackPlays=Хурисен ҫӳремелле
theOtherPlayerHasLeftTheGameYouCanForceResignationOrWaitForHim=Тепӗр вӑйӑҫ вӑййинчен тухнӑ пек турӗ. Ҫӗнтерӳ, парма-пар ҫинчен пӗлтер йе кӗтсе тӑр.
makeYourOpponentResign=Ӑмӑртуҫуна парӑнтаттар makeYourOpponentResign=Ӑмӑртуҫуна парӑнтаттар
forceResignation=Ҫӗнтерӳ пирки пӗлтер forceResignation=Ҫӗнтерӳ пирки пӗлтер
forceDraw=Парма-пар пирки пӗлтер forceDraw=Парма-пар пирки пӗлтер
talkInChat=Калаҫура сӑпайлӑ пул! talkInChat=Калаҫура сӑпайлӑ пул!
theFirstPersonToComeOnThisUrlWillPlayWithYou=Ҫак каҫҫипе пӗрремӗш килекен ҫын санпа вылӗ.
whiteResigned=Шуррисем парӑнчӗҫ whiteResigned=Шуррисем парӑнчӗҫ
blackResigned=Хурисем парӑнчӗҫ blackResigned=Хурисем парӑнчӗҫ
whiteLeftTheGame=Шуррисем вӑййинчен тухрӗҫ whiteLeftTheGame=Шуррисем вӑййинчен тухрӗҫ
blackLeftTheGame=Хурисем вӑййинчен тухрӗҫ blackLeftTheGame=Хурисем вӑййинчен тухрӗҫ
shareThisUrlToLetSpectatorsSeeTheGame=Вӑййине сӑнма ирӗк парас тесе каҫҫине пайлаш
theComputerAnalysisHasFailed=Компуйтӑр тишкерӗвӗ ӑнӑҫланман
viewTheComputerAnalysis=Компуйтӑр тишкереве патне
requestAComputerAnalysis=Компйутӑр тишкервне ыйт
computerAnalysis=Компйутӑр тишкерӗвӗ computerAnalysis=Компйутӑр тишкерӗвӗ
analysis=Тишкерӳ хӑми analysis=Тишкерӳ хӑми
blunders=Тӳрккес йӑнӑшсем blunders=Тӳрккес йӑнӑшсем
@ -53,7 +60,7 @@ viewNbCheckmates=%s Мат туни
nbBookmarks=%s Картса хуни nbBookmarks=%s Картса хуни
nbPopularGames=%s Йуратнӑ вӑйӑ nbPopularGames=%s Йуратнӑ вӑйӑ
nbAnalysedGames=%s Тишкернӗ вӑйӑ nbAnalysedGames=%s Тишкернӗ вӑйӑ
bookmarkedByNbPlayers=%s Вӑйӑҫӑ картса хунӑ viewInFullSize=Тулли калӑпӑшла пӑх
logOut=Тух logOut=Тух
signIn=Кӗр signIn=Кӗр
newToLichess=Lichess пӗрремӗш хут? newToLichess=Lichess пӗрремӗш хут?
@ -84,6 +91,8 @@ haveAnAccount=Аккаунт пур-и?
changePassword=Кӗме сӑмах улӑштарни changePassword=Кӗме сӑмах улӑштарни
changeEmail=Ел. пуштӑ улӑштарни changeEmail=Ел. пуштӑ улӑштарни
email=Ел. пуштӑ email=Ел. пуштӑ
emailIsOptional=Ел. пуштӑ тивӗҫлӗ мар. Кӗме сӑмахна манса кайсан, ҫӗнӗ кӗме сӑмах лартас тесе Lichess сан пуштӑпа усӑ курӗ.
passwordReset=Кӗме сӑмах улӑштарасси
forgotPassword=Кӗме сӑмаха мансан forgotPassword=Кӗме сӑмаха мансан
rank=Хаклав rank=Хаклав
gamesPlayed=вӑйӑ выљанӑ gamesPlayed=вӑйӑ выљанӑ
@ -118,6 +127,7 @@ rematchOfferAccepted=Реванш ыйтнине йышӑннӑ
rematchOfferCanceled=Реванш ыйтнине пӑрахӑҫланӑ rematchOfferCanceled=Реванш ыйтнине пӑрахӑҫланӑ
rematchOfferDeclined=Реванш ыйтнине сирнӗ rematchOfferDeclined=Реванш ыйтнине сирнӗ
cancelRematchOffer=Реванш ыйтнине пӑрахӑҫла cancelRematchOffer=Реванш ыйтнине пӑрахӑҫла
viewRematch=Рематчне тишкер
play=Выљасси play=Выљасси
inbox=Ҫырусем inbox=Ҫырусем
chatRoom=Калаҫу ани chatRoom=Калаҫу ани
@ -172,6 +182,7 @@ teamBestPlayers=Чи вӑйлӑ вӑйӑҫӑ
teamRecentMembers=Тин хутшӑннӑ пайташсем teamRecentMembers=Тин хутшӑннӑ пайташсем
xJoinedTeamY=%s -> %s ушкӑна хутшӑннӑ xJoinedTeamY=%s -> %s ушкӑна хутшӑннӑ
xCreatedTeamY=%s усӑҫ %s ушкӑн йӗркеленӗ xCreatedTeamY=%s усӑҫ %s ушкӑн йӗркеленӗ
averageElo=Вӑтам рейтинг
location=Вырӑн location=Вырӑн
filterGames=Вӑйӑ али filterGames=Вӑйӑ али
reset=Силле reset=Силле
@ -217,6 +228,7 @@ required=Тивӗҫлӗ.
openTournaments=Уҫӑ турнирсем openTournaments=Уҫӑ турнирсем
duration=Вӑрӑмӑш duration=Вӑрӑмӑш
winner=Ҫӗнтерӳҫӗ winner=Ҫӗнтерӳҫӗ
standing=Лару-тӑру
createANewTournament=Ҫӗнӗ турнир йӗркеле createANewTournament=Ҫӗнӗ турнир йӗркеле
join=Хутшӑнас join=Хутшӑнас
withdraw=Тухасси withdraw=Тухасси
@ -345,7 +357,6 @@ gameBehavior=Вӑййа йертсе пыни
premovesPlayingDuringOpponentTurn=Умӗн ҫӳресси (ӑмӑртуҫӗн ҫӳремелли вӑхӑтра утни) premovesPlayingDuringOpponentTurn=Умӗн ҫӳресси (ӑмӑртуҫӗн ҫӳремелли вӑхӑтра утни)
takebacksWithOpponentApproval=Тавӑрасси (ӑмӑртуҫу килӗшнипе) takebacksWithOpponentApproval=Тавӑрасси (ӑмӑртуҫу килӗшнипе)
promoteToQueenAutomatically=Фӑрӑҫа хӑй халлӗн тухасси promoteToQueenAutomatically=Фӑрӑҫа хӑй халлӗн тухасси
claimDrawOnThreefoldRepetitionAutomatically=%Лартӑма 3 хут лексен%s п-паршӑн х-халӗн пӗлтересси
privacy=Вӑрттӑнлӑх privacy=Вӑрттӑнлӑх
letOtherPlayersFollowYou=Ытти вӑйӑҫ ман ҫине ҫырӑнасси letOtherPlayersFollowYou=Ытти вӑйӑҫ ман ҫине ҫырӑнасси
letOtherPlayersChallengeYou=Ытти вӑйӑҫ мана выљатасси letOtherPlayersChallengeYou=Ытти вӑйӑҫ мана выљатасси
@ -360,6 +371,7 @@ outsideTheBoard=Хӑма тулӗнче
onSlowGames=Вӑрах вӑйӑра onSlowGames=Вӑрах вӑйӑра
always=Йалан always=Йалан
inCasualGamesOnly=Ахаль выльанӑ чухне кана inCasualGamesOnly=Ахаль выльанӑ чухне кана
whenPremoving=Умӗн куҫнӑ чух
whenTimeRemainingLessThanThirtySeconds=Вӑхӑт < 30 ҫеккунтран сахал йулсан whenTimeRemainingLessThanThirtySeconds=Вӑхӑт < 30 ҫеккунтран сахал йулсан
difficultyEasy=Ансат difficultyEasy=Ансат
difficultyNormal=Виҫеллӗ difficultyNormal=Виҫеллӗ
@ -396,8 +408,11 @@ pieces=Кӗлеткесем
sharePGN=PGN пайлаш sharePGN=PGN пайлаш
playOnline=Онлайн вӑйӑ playOnline=Онлайн вӑйӑ
playOffline=Офлайн вӑйӑ playOffline=Офлайн вӑйӑ
allowAnalytics=Йатсӑр статистике пултар
shareGameURL=Вӑйӑ каҫҫине пайлаш shareGameURL=Вӑйӑ каҫҫине пайлаш
error.required=Тивӗҫлӗ ани error.required=Тивӗҫлӗ ани
error.email=Ку ел. пуштӑ йурӑхсӑр
error.email_acceptable=Ку ел. пуштӑна йышӑнма ҫук
error.email_unique=Ҫак ел. пуштӑпа усӑ кураҫҫӗ ӗнтӗ error.email_unique=Ҫак ел. пуштӑпа усӑ кураҫҫӗ ӗнтӗ
blindfoldChess=Суккӑр шахмат (курӑнман кӗлетке) blindfoldChess=Суккӑр шахмат (курӑнман кӗлетке)
moveConfirmation=Куҫӑма ҫирӗплетесси moveConfirmation=Куҫӑма ҫирӗплетесси
@ -428,12 +443,16 @@ createdSimuls=Тин йӗркеленӗ пӗр вӑхӑтри вӑйӑсем
hostANewSimul=Ҫӗнӗ пӗр вӑхӑтри вӑййа вырӑнӑҫтар hostANewSimul=Ҫӗнӗ пӗр вӑхӑтри вӑййа вырӑнӑҫтар
noSimulFound=Пӗр вӑхӑтри вӑйӑ тупӑнман noSimulFound=Пӗр вӑхӑтри вӑйӑ тупӑнман
returnToSimulHomepage=Пӗр вӑхӑтри вӑйӑ патнелле returnToSimulHomepage=Пӗр вӑхӑтри вӑйӑ патнелле
aboutSimul=Пӗр вӑхӑтри вӑйӑсенче пӗр вӑйӑҫ темиҫе вӑйӑҫа пӗр вӑхӑтра выльатать.
aboutSimulImage=50 ӑмӑртуҫран, Фишӗр 47 ҫӗнтернӗ, 2 парма-пар выльанӑ, 1 выльаса йанӑ.
aboutSimulSettings=Пӗр вӑхӑтри вӑйӑ йаланах ахаль вӑйӑ. Рематч выльама, тавӑрма тата "ытлаши вӑхӑт" илме ҫук. aboutSimulSettings=Пӗр вӑхӑтри вӑйӑ йаланах ахаль вӑйӑ. Рематч выльама, тавӑрма тата "ытлаши вӑхӑт" илме ҫук.
create=Йӗркелес create=Йӗркелес
whenCreateSimul=Пӗр вӑхӑтри вӑйӑ йӗрекелесен, санӑн темиҫе ӑмӑртуҫпа пӗр вӑхӑтра выльамалла. whenCreateSimul=Пӗр вӑхӑтри вӑйӑ йӗрекелесен, санӑн темиҫе ӑмӑртуҫпа пӗр вӑхӑтра выльамалла.
lichessTournaments=Lichess турнирӗсем lichessTournaments=Lichess турнирӗсем
tournamentFAQ=Аренӑ турнирӗн ТЛЫӗ tournamentFAQ=Аренӑ турнирӗн ТЛЫӗ
tournamentOfficial=Офиссаллӑ tournamentOfficial=Офиссаллӑ
averageCentipawnLoss=Вӑтам сантисалтак ҫухатӑвӗ
keyboardShortcuts=Хӑвӑрт пускӑчсем
keyMoveBackwardOrForward=кайалла/малалла куҫ keyMoveBackwardOrForward=кайалла/малалла куҫ
keyGoToStartOrEnd=пуҫӗ/вӗҫӗ патне куҫ keyGoToStartOrEnd=пуҫӗ/вӗҫӗ патне куҫ
keyShowOrHideComments=шухӑшсене кӑтарт / пытар keyShowOrHideComments=шухӑшсене кӑтарт / пытар
@ -449,6 +468,9 @@ youDoNotHaveAnEstablishedPerfTypeRating=Саншӑн шутланӑ %s рейт
checkYourEmail=Ел. пуштуна тӗрӗсле checkYourEmail=Ел. пуштуна тӗрӗсле
weHaveSentYouAnEmailClickTheLink=Епир сан патна ел. ҫыру йатӑмӑр. Аккаунтна тапратас тесе ҫырури каҫӑ ҫине пус. weHaveSentYouAnEmailClickTheLink=Епир сан патна ел. ҫыру йатӑмӑр. Аккаунтна тапратас тесе ҫырури каҫӑ ҫине пус.
weHaveSentYouAnEmailTo=Епир %s ҫине ҫыру йатӑмӑр. Вӑрттӑн сӑмахна улӑштарас тесе ҫырури каҫӑ ҫине пус. weHaveSentYouAnEmailTo=Епир %s ҫине ҫыру йатӑмӑр. Вӑрттӑн сӑмахна улӑштарас тесе ҫырури каҫӑ ҫине пус.
networkLagBetweenYouAndLichess=Санпа Lichess хушшинче тетел чӑрмантарса тӑни пур
timeToProcessAMoveOnLichessServer=Lichess сервӗрӗ пӗр куҫӑм ӗҫлесе илмелли вӑхӑт
crosstable=Пӑнчӑ тапӑлӗ
confirmResignation=Парӑнасса ҫирӗплетесси confirmResignation=Парӑнасса ҫирӗплетесси
letOtherPlayersMessageYou=Ытти вӑйӑҫ ман пата ҫырасси letOtherPlayersMessageYou=Ытти вӑйӑҫ ман пата ҫырасси
youHaveAlreadyRegisteredTheEmail=Есӗ ҫак пуштӑпа регистратсиленнӗ-ха: %s youHaveAlreadyRegisteredTheEmail=Есӗ ҫак пуштӑпа регистратсиленнӗ-ха: %s

View File

@ -59,7 +59,6 @@ viewNbCheckmates=Edrych ar y %s o gêmau sydd wedi cael eu henill
nbBookmarks=%s o gêmau wedi'u nodi nbBookmarks=%s o gêmau wedi'u nodi
nbPopularGames=%s o gêmau wedi'u nodi mwy nag unwaith nbPopularGames=%s o gêmau wedi'u nodi mwy nag unwaith
nbAnalysedGames=%s o gêmau wedi'u dadansoddi nbAnalysedGames=%s o gêmau wedi'u dadansoddi
bookmarkedByNbPlayers=wedi nodi gan %s o chwaraewyr
viewInFullSize=Edrych yn maint llawn viewInFullSize=Edrych yn maint llawn
logOut=Allgofnodi logOut=Allgofnodi
signIn=Mewngofnodi signIn=Mewngofnodi

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Se %s skakmatter
nbBookmarks=%s bogmærker nbBookmarks=%s bogmærker
nbPopularGames=%s populære partier nbPopularGames=%s populære partier
nbAnalysedGames=%s analyserede partier nbAnalysedGames=%s analyserede partier
bookmarkedByNbPlayers=Bogmærke til %s spillere
viewInFullSize=Se i fuldskærm viewInFullSize=Se i fuldskærm
logOut=Log ud logOut=Log ud
signIn=Log ind signIn=Log ind

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s Schachmatts
nbBookmarks=%s Lesezeichen nbBookmarks=%s Lesezeichen
nbPopularGames=%s Beliebte Partien nbPopularGames=%s Beliebte Partien
nbAnalysedGames=%s Analysierte Partien nbAnalysedGames=%s Analysierte Partien
bookmarkedByNbPlayers=Von %s Spielern mit einem Lesezeichen versehen
viewInFullSize=In voller Größe anzeigen viewInFullSize=In voller Größe anzeigen
logOut=Abmelden logOut=Abmelden
signIn=Anmelden signIn=Anmelden
@ -515,7 +514,7 @@ youCanAlsoScrollOverTheBoardToMoveInTheGame=Du kannst auch auf dem Brett scrolle
pressShiftPlusClickOrRightClickToDrawCirclesAndArrowsOnTheBoard=Drücke Shift+Mausklick oder Rechtsklick, um Kreise und Pfeile auf dem Brett zu zeichnen. pressShiftPlusClickOrRightClickToDrawCirclesAndArrowsOnTheBoard=Drücke Shift+Mausklick oder Rechtsklick, um Kreise und Pfeile auf dem Brett zu zeichnen.
confirmResignation=Aufgabe bestätigen confirmResignation=Aufgabe bestätigen
letOtherPlayersMessageYou=Erlaube anderen Spielern dich zu kontaktieren. letOtherPlayersMessageYou=Erlaube anderen Spielern dich zu kontaktieren.
shareYourInsightsData=Teile deine persönliche Spierstatistiken shareYourInsightsData=Teile deine persönliche Spielerstatistiken
youHaveAlreadyRegisteredTheEmail=Du hast die folgende Emailadresse schon registriert: %s youHaveAlreadyRegisteredTheEmail=Du hast die folgende Emailadresse schon registriert: %s
kidMode=Kinder Modus kidMode=Kinder Modus
playChessEverywhere=Spiele Schach überall playChessEverywhere=Spiele Schach überall

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s Ματ
nbBookmarks=%s Σελιδοδείκτες nbBookmarks=%s Σελιδοδείκτες
nbPopularGames=%s Δημοφιλή παιχνίδια nbPopularGames=%s Δημοφιλή παιχνίδια
nbAnalysedGames=%s Αναλυμένα παιχνίδια nbAnalysedGames=%s Αναλυμένα παιχνίδια
bookmarkedByNbPlayers=Προστέθηκε ως σελιδοδείκτης από %s παίκτες
viewInFullSize=Προβολή σε πλήρες μέγεθος viewInFullSize=Προβολή σε πλήρες μέγεθος
logOut=Έξοδος logOut=Έξοδος
signIn=Είσοδος signIn=Είσοδος

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s Ŝakmatoj
nbBookmarks=%s Paĝmarkoj nbBookmarks=%s Paĝmarkoj
nbPopularGames=%s Popularaj ludoj nbPopularGames=%s Popularaj ludoj
nbAnalysedGames=%s Analizitaj ludoj nbAnalysedGames=%s Analizitaj ludoj
bookmarkedByNbPlayers=Paĝmarkita de %s ludantoj
viewInFullSize=Vidi plengrande viewInFullSize=Vidi plengrande
logOut=Elsaluti logOut=Elsaluti
signIn=Ensaluti signIn=Ensaluti

View File

@ -1,8 +1,8 @@
playWithAFriend=Jugar con un amigo playWithAFriend=Jugar con un amigo
playWithTheMachine=Jugar con el ordenador playWithTheMachine=Jugar contra el ordenador
toInviteSomeoneToPlayGiveThisUrl=Para invitar a alguien a jugar, comparte este URL toInviteSomeoneToPlayGiveThisUrl=Para invitar a alguien a jugar, comparte este enlace
gameOver=Fin del juego gameOver=Fin de la partida
waitingForOpponent=Esperando oponente waitingForOpponent=Esperando al oponente
waiting=Esperando waiting=Esperando
yourTurn=Tu turno yourTurn=Tu turno
aiNameLevelAiLevel=%s nivel %s aiNameLevelAiLevel=%s nivel %s
@ -21,7 +21,7 @@ whiteIsVictorious=Las blancas ganan
blackIsVictorious=Las negras ganan blackIsVictorious=Las negras ganan
kingInTheCenter=Rey en el centro kingInTheCenter=Rey en el centro
threeChecks=Tres jaques threeChecks=Tres jaques
raceFinished=Carrera acabada raceFinished=Carrera terminada
variantEnding=Final alternativo variantEnding=Final alternativo
newOpponent=Nuevo oponente newOpponent=Nuevo oponente
yourOpponentWantsToPlayANewGameWithYou=Tu oponente quiere la revancha yourOpponentWantsToPlayANewGameWithYou=Tu oponente quiere la revancha
@ -38,13 +38,13 @@ whiteResigned=Las blancas se han rendido
blackResigned=Las negras se han rendido blackResigned=Las negras se han rendido
whiteLeftTheGame=Las blancas han abandonado la partida whiteLeftTheGame=Las blancas han abandonado la partida
blackLeftTheGame=Las negras han abandonado la partida blackLeftTheGame=Las negras han abandonado la partida
shareThisUrlToLetSpectatorsSeeTheGame=Comparte este URL para que los espectadores puedan ver la partida shareThisUrlToLetSpectatorsSeeTheGame=Comparte este enlace para que los espectadores puedan ver la partida
theComputerAnalysisHasFailed=El análisis del ordenador ha fallado theComputerAnalysisHasFailed=El análisis del ordenador ha fallado
viewTheComputerAnalysis=Ver el análisis del ordenador viewTheComputerAnalysis=Ver el análisis del ordenador
requestAComputerAnalysis=Solicitar un análisis del ordenador requestAComputerAnalysis=Solicitar un análisis del ordenador
computerAnalysis=Análisis del ordenador computerAnalysis=Análisis del ordenador
analysis=Tablero de análisis analysis=Tablero de análisis
blunders=Errores serios blunders=Errores graves
mistakes=Errores mistakes=Errores
inaccuracies=Imprecisiones inaccuracies=Imprecisiones
moveTimes=Tiempo por movimiento moveTimes=Tiempo por movimiento
@ -55,22 +55,21 @@ offerDraw=Ofrecer tablas
draw=Tablas draw=Tablas
nbConnectedPlayers=%s jugadores nbConnectedPlayers=%s jugadores
gamesBeingPlayedRightNow=Partidas actuales gamesBeingPlayedRightNow=Partidas actuales
viewAllNbGames=%s partidas viewAllNbGames=%s Partidas
viewNbCheckmates=%s jaque mates viewNbCheckmates=%s Jaques mate
nbBookmarks=%s partidas marcadas nbBookmarks=%s Partidas favoritas
nbPopularGames=%s partidas populares nbPopularGames=%s Partidas populares
nbAnalysedGames=%s partidas analizadas nbAnalysedGames=%s Partidas analizadas
bookmarkedByNbPlayers=Marcado por %s jugadores
viewInFullSize=Ver en tamaño completo viewInFullSize=Ver en tamaño completo
logOut=Cerrar sesión logOut=Cerrar sesión
signIn=Iniciar sesión signIn=Iniciar sesión
newToLichess=¿Nuevo en Lichess? newToLichess=¿Nuevo en Lichess?
youNeedAnAccountToDoThat=Necesitas crear una cuenta para hacer eso youNeedAnAccountToDoThat=Necesitas crear una cuenta para hacer eso
signUp=Regístrate signUp=Registrarse
computersAreNotAllowedToPlay=No les está permitido jugar a las computadoras ni a jugadores asistidos por ellas. Por favor, no te ayudes de motores de ajedrez, bases de datos o de otros jugadores durante el juego. También ten en cuenta que se desalienta tener más de una cuenta y el uso excesivo de varias cuentas resultará en la cancelación de las mismas. computersAreNotAllowedToPlay=No les está permitido jugar a las computadoras ni a jugadores asistidos por ellas. Por favor, no te ayudes de motores de ajedrez, bases de datos o de otros jugadores durante la partida. Además, ten en cuenta que se desaconseja la utilización de varias cuentas de usuario y que el uso de un excesivo número de cuentas resultará en la cancelación de las mismas.
games=Partidas games=Partidas
forum=Foro forum=Foro
xPostedInForumY=%s ha escrito en el foro %s xPostedInForumY=%s ha escrito en el tema %s
latestForumPosts=Últimos mensajes del foro latestForumPosts=Últimos mensajes del foro
players=Jugadores players=Jugadores
minutesPerSide=Minutos por jugador minutesPerSide=Minutos por jugador
@ -84,28 +83,28 @@ oneDay=Un día
nbDays=%s días nbDays=%s días
nbHours=%s horas nbHours=%s horas
time=Tiempo time=Tiempo
rating=Puntos rating=Puntuación
ratingStats=Estadísticas de puntuación ratingStats=Estadísticas de puntuación
username=Nombre de usuario username=Nombre de usuario
usernameOrEmail=Nombre de usuario o email usernameOrEmail=Nombre de usuario o email
password=Contraseña password=Contraseña
haveAnAccount=¿Tienes una cuenta? haveAnAccount=¿Tienes una cuenta?
changePassword=Cambiar contraseña changePassword=Cambiar contraseña
changeEmail=Cambiar email changeEmail=Cambiar correo
email=Email email=Correo
emailIsOptional=El email es opcional. Lichess usará tu email para resetear tu contraseña si la olvidas. emailIsOptional=El correo es opcional. Lichess usará tu correo para restaurar tu contraseña si la olvidas.
passwordReset=Cambiar contraseña passwordReset=Cambiar contraseña
forgotPassword=¿Olvidaste tu contraseña? forgotPassword=¿Olvidaste tu contraseña?
rank=Posición rank=Posición
gamesPlayed=Partidas jugadas gamesPlayed=Partidas jugadas
nbGamesWithYou=%s de juegos contigo nbGamesWithYou=%s partidas contigo
declineInvitation=Rechazar invitación declineInvitation=Rechazar invitación
cancel=Cancelar cancel=Cancelar
timeOut=Tiempo agotado timeOut=Tiempo agotado
drawOfferSent=Propuesta de tablas enviada drawOfferSent=Oferta de tablas enviada
drawOfferDeclined=Propuesta de tablas rechazada drawOfferDeclined=Oferta de tablas rechazada
drawOfferAccepted=Propuesta de tablas aceptada drawOfferAccepted=Oferta de tablas aceptada
drawOfferCanceled=Propuesta de tablas cancelada drawOfferCanceled=Oferta de tablas cancelada
whiteOffersDraw=Las blancas ofrecen tablas whiteOffersDraw=Las blancas ofrecen tablas
blackOffersDraw=Las negras ofrecen tablas blackOffersDraw=Las negras ofrecen tablas
whiteDeclinesDraw=Las blancas rechazan tablas whiteDeclinesDraw=Las blancas rechazan tablas
@ -118,22 +117,22 @@ finished=Terminado
abortGame=Cancelar partida abortGame=Cancelar partida
gameAborted=Partida cancelada gameAborted=Partida cancelada
standard=Estándar standard=Estándar
unlimited=Sin límite unlimited=Ilimitado
mode=Modo mode=Modo
casual=Amistosa casual=Amistosa
rated=Por puntos rated=Por puntos
thisGameIsRated=Esta partida es por puntos thisGameIsRated=Esta partida es por puntos
rematch=Revancha rematch=Revancha
rematchOfferSent=Petición de revancha enviada rematchOfferSent=Oferta de revancha enviada
rematchOfferAccepted=Revancha aceptada rematchOfferAccepted=Oferta de revancha aceptada
rematchOfferCanceled=Propuesta de revancha cancelada rematchOfferCanceled=Oferta de revancha cancelada
rematchOfferDeclined=Propuesta de revancha rechazada rematchOfferDeclined=Oferta de revancha rechazada
cancelRematchOffer=Cancelar propuesta de revancha cancelRematchOffer=Cancelar oferta de revancha
viewRematch=Ver revancha viewRematch=Ver revancha
play=Jugar play=Jugar
inbox=Buzón de entrada inbox=Recibidos
chatRoom=Sala de chat chatRoom=Sala de chat
spectatorRoom=Chat del espectador spectatorRoom=Chat de espectador
composeMessage=Escribir mensaje composeMessage=Escribir mensaje
noNewMessages=No hay mensajes nuevos noNewMessages=No hay mensajes nuevos
subject=Asunto subject=Asunto
@ -142,17 +141,17 @@ send=Enviar
incrementInSeconds=Segundos de incremento incrementInSeconds=Segundos de incremento
freeOnlineChess=Ajedrez en línea gratis freeOnlineChess=Ajedrez en línea gratis
spectators=Espectadores: spectators=Espectadores:
nbWins=%s de victorias nbWins=%s victorias
nbLosses=%s de derrotas nbLosses=%s derrotas
nbDraws=%s de tablas nbDraws=%s tablas
exportGames=Exportar partidas exportGames=Exportar partidas
ratingRange=Rango de puntuación ratingRange=Rango de puntuación
giveNbSeconds=Dar %s segundos giveNbSeconds=Dar %s segundos
premoveEnabledClickAnywhereToCancel=Premovimiento activado; hacer clic en cualquier lugar para cancelarlo premoveEnabledClickAnywhereToCancel=Pre-jugada activada - Hacer clic en cualquier lugar para cancelar
thisPlayerUsesChessComputerAssistance=Este jugador usa un motor de ajedrez thisPlayerUsesChessComputerAssistance=Este jugador usa un motor de ajedrez
thisPlayerArtificiallyIncreasesTheirRating=Este jugador incrementa/disminuye artificialmente su puntaje thisPlayerArtificiallyIncreasesTheirRating=Este jugador incrementa/disminuye artificialmente su puntuación
opening=Apertura opening=Apertura
openingExplorer=Explorador de aperturas openingExplorer=Explorador de aperturas y base de datos de finales
takeback=Deshacer jugada takeback=Deshacer jugada
proposeATakeback=Proponer deshacer jugada proposeATakeback=Proponer deshacer jugada
takebackPropositionSent=Propuesta de deshacer jugada enviada takebackPropositionSent=Propuesta de deshacer jugada enviada
@ -160,7 +159,7 @@ takebackPropositionDeclined=Propuesta de deshacer jugada rechazada
takebackPropositionAccepted=Propuesta de deshacer jugada aceptada takebackPropositionAccepted=Propuesta de deshacer jugada aceptada
takebackPropositionCanceled=Propuesta de deshacer jugada cancelada takebackPropositionCanceled=Propuesta de deshacer jugada cancelada
yourOpponentProposesATakeback=Tu oponente propone deshacer la jugada yourOpponentProposesATakeback=Tu oponente propone deshacer la jugada
bookmarkThisGame=Marcar este juego bookmarkThisGame=Marcar este juego como favorito
search=Buscar search=Buscar
advancedSearch=Búsqueda avanzada advancedSearch=Búsqueda avanzada
tournament=Torneo tournament=Torneo
@ -169,7 +168,7 @@ tournamentPoints=Puntos de torneo
viewTournament=Ver torneo viewTournament=Ver torneo
backToTournament=Regresar al torneo backToTournament=Regresar al torneo
backToGame=Volver a la partida backToGame=Volver a la partida
freeOnlineChessGamePlayChessNowInACleanInterfaceNoRegistrationNoAdsNoPluginRequiredPlayChessWithComputerFriendsOrRandomOpponents=Ajedrez en línea gratis. Juega ajedrez en una interfaz limpia. Sin registrarse, sin publicidad, sin plugins. Juega ajedrez contra el ordenador, amigos u oponentes aleatorios. freeOnlineChessGamePlayChessNowInACleanInterfaceNoRegistrationNoAdsNoPluginRequiredPlayChessWithComputerFriendsOrRandomOpponents=Servidor de ajedrez en línea gratuito. Juega al ajedrez en una interfaz simple. Sin registro, sin publicidad, sin necesidad de complementos. Juega contra el ordenador, amigos u oponentes desconocidos.
teams=Equipos teams=Equipos
nbMembers=%s miembros nbMembers=%s miembros
allTeams=Todos los equipos allTeams=Todos los equipos
@ -182,25 +181,25 @@ anyoneCanJoin=Cualquiera puede unirse
aConfirmationIsRequiredToJoin=Se requiere una confirmación para unirse aConfirmationIsRequiredToJoin=Se requiere una confirmación para unirse
joiningPolicy=Política para unirse joiningPolicy=Política para unirse
teamLeader=Capitán del equipo teamLeader=Capitán del equipo
teamBestPlayers=Mejores jugadores del equipo teamBestPlayers=Mejores jugadores
teamRecentMembers=Miembros recientes del equipo teamRecentMembers=Miembros recientes
xJoinedTeamY=%s se unió al equipo %s xJoinedTeamY=%s se unió al equipo %s
xCreatedTeamY=%s creó el equipo %s xCreatedTeamY=%s creó el equipo %s
averageElo=Clasificación promedio averageElo=Puntuación promedio
location=Ubicación location=Ubicación
settings=Configuración settings=Configuración
filterGames=Filtrar partidas filterGames=Filtrar partidas
reset=Resetear reset=Resetear
apply=Aplicar apply=Enviar
leaderboard=Clasificación leaderboard=Clasificación
pasteTheFenStringHere=Pega el texto FEN aquí pasteTheFenStringHere=Pega el texto FEN aquí
pasteThePgnStringHere=Pega el texto PGN aquí pasteThePgnStringHere=Pega el texto PGN aquí
fromPosition=Desde posición fromPosition=Desde posición
continueFromHere=Continuar desde aquí continueFromHere=Continuar desde aquí
importGame=Importar partida importGame=Importar partida
nbImportedGames=%s de partidas importadas nbImportedGames=%s Partidas importadas
thisIsAChessCaptcha=Esto es un CAPTCHA de ajedrez thisIsAChessCaptcha=Esto es un CAPTCHA de ajedrez.
clickOnTheBoardToMakeYourMove=Haz clic en el tablero para hacer tu movimiento y demostrar que eres humano. clickOnTheBoardToMakeYourMove=Haz clic en el tablero para hacer tu jugada y demostrar que eres humano.
notACheckmate=No es jaque mate notACheckmate=No es jaque mate
colorPlaysCheckmateInOne=%s juegan; mate en una colorPlaysCheckmateInOne=%s juegan; mate en una
retry=Reintentar retry=Reintentar

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Vaata %s matti
nbBookmarks=%s järjehoidjad nbBookmarks=%s järjehoidjad
nbPopularGames=Vaata %s populaarset nbPopularGames=Vaata %s populaarset
nbAnalysedGames=Vaata %s analüüsituid nbAnalysedGames=Vaata %s analüüsituid
bookmarkedByNbPlayers=Märgitud mängija %s poolt
viewInFullSize=Vaata täisekraanil viewInFullSize=Vaata täisekraanil
logOut=Logi välja logOut=Logi välja
signIn=Logi sisse signIn=Logi sisse

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s Xake-mate
nbBookmarks=%s partida nabarmenduak nbBookmarks=%s partida nabarmenduak
nbPopularGames=%s jendearen gustuko partida nbPopularGames=%s jendearen gustuko partida
nbAnalysedGames=%s Analizatutako partida kopurua nbAnalysedGames=%s Analizatutako partida kopurua
bookmarkedByNbPlayers=%s jokalarik nabarmendu dute
viewInFullSize=Pantaila osoa viewInFullSize=Pantaila osoa
logOut=Irten logOut=Irten
signIn=Sartu signIn=Sartu

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s کیش و مات
nbBookmarks=%s بازی مورد علاقه nbBookmarks=%s بازی مورد علاقه
nbPopularGames=%s بازی پرطرفدار nbPopularGames=%s بازی پرطرفدار
nbAnalysedGames=%s بازی آنالیز شده nbAnalysedGames=%s بازی آنالیز شده
bookmarkedByNbPlayers=نشانه گذاری شده توسط %s بازیکن
viewInFullSize=تماشا کردن در اندازه کامل viewInFullSize=تماشا کردن در اندازه کامل
logOut=خروج logOut=خروج
signIn=ورود signIn=ورود

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Katso %s shakkimatit
nbBookmarks=%s omaa kirjanmerkkiä nbBookmarks=%s omaa kirjanmerkkiä
nbPopularGames=%s suosittua peliä nbPopularGames=%s suosittua peliä
nbAnalysedGames=%s analysoitua peliä nbAnalysedGames=%s analysoitua peliä
bookmarkedByNbPlayers=%s kirjanmerkkiä
viewInFullSize=Näytä täyskokoisena viewInFullSize=Näytä täyskokoisena
logOut=Kirjaudu ulos logOut=Kirjaudu ulos
signIn=Kirjaudu sisään signIn=Kirjaudu sisään

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Voir les %s mats
nbBookmarks=%s favoris nbBookmarks=%s favoris
nbPopularGames=%s parties populaires nbPopularGames=%s parties populaires
nbAnalysedGames=%s parties analysées nbAnalysedGames=%s parties analysées
bookmarkedByNbPlayers=Mis en favoris par %s joueurs
viewInFullSize=Agrandir viewInFullSize=Agrandir
logOut=Déconnexion logOut=Déconnexion
signIn=Connexion signIn=Connexion

View File

@ -59,7 +59,6 @@ viewAllNbGames=%s Cluiche
viewNbCheckmates=%s Marbhsháinn viewNbCheckmates=%s Marbhsháinn
nbBookmarks=%s Leabharmharc nbBookmarks=%s Leabharmharc
nbAnalysedGames=%s Cluichí ainilísithe nbAnalysedGames=%s Cluichí ainilísithe
bookmarkedByNbPlayers=Leabharmharc déanta ag %s imreoir
viewInFullSize=Amharc lánmhéide viewInFullSize=Amharc lánmhéide
logOut=Logáil amach logOut=Logáil amach
signIn=Logáil isteach signIn=Logáil isteach

View File

@ -58,7 +58,6 @@ viewNbCheckmates=%s tul-chaisg
nbBookmarks=%s comharran-lìn nbBookmarks=%s comharran-lìn
nbPopularGames=%s geamannan mòr-chòrdte nbPopularGames=%s geamannan mòr-chòrdte
nbAnalysedGames=%s geamannan sgrùdaichte nbAnalysedGames=%s geamannan sgrùdaichte
bookmarkedByNbPlayers=Comharra-leabhair le %s cluicheadairean
viewInFullSize=Seall sa mheud iomlan viewInFullSize=Seall sa mheud iomlan
logOut=Log a-mach logOut=Log a-mach
signIn=Log a-steach signIn=Log a-steach

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s Xaques mates
nbBookmarks=%s Marcadores nbBookmarks=%s Marcadores
nbPopularGames=%s Xogos máis populares nbPopularGames=%s Xogos máis populares
nbAnalysedGames=%s Partidas analizadas nbAnalysedGames=%s Partidas analizadas
bookmarkedByNbPlayers=Marcado por %s xogadores
viewInFullSize=Ver a tamaño completo viewInFullSize=Ver a tamaño completo
logOut=Pechar sesión logOut=Pechar sesión
signIn=Iniciar sesión signIn=Iniciar sesión

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s מטים
nbBookmarks=%s מועדפים nbBookmarks=%s מועדפים
nbPopularGames=%s משחקים פופולריים nbPopularGames=%s משחקים פופולריים
nbAnalysedGames=משחקים מנותחים %s nbAnalysedGames=משחקים מנותחים %s
bookmarkedByNbPlayers=הועדף על ידי %s שחקנים
viewInFullSize=צפה בגודל מלא viewInFullSize=צפה בגודל מלא
logOut=התנתק logOut=התנתק
signIn=התחבר signIn=התחבר

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s सह मात
nbBookmarks=%s पृष्ठ स्मृतियाँ nbBookmarks=%s पृष्ठ स्मृतियाँ
nbPopularGames=%s प्रसिद्ध खेल nbPopularGames=%s प्रसिद्ध खेल
nbAnalysedGames=%s विश्लेषित खेल nbAnalysedGames=%s विश्लेषित खेल
bookmarkedByNbPlayers=%s खिलाड़ियों द्वारा इसकी पृष्ठ स्मृति बनायीं गयी
viewInFullSize=पूर्ण आकर में देखें viewInFullSize=पूर्ण आकर में देखें
logOut=खाते से बाहर प्रवेश करें logOut=खाते से बाहर प्रवेश करें
signIn=खाते में प्रवेश करें signIn=खाते में प्रवेश करें

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Pogledaj %s šah-mata
nbBookmarks=Označeno %s partija nbBookmarks=Označeno %s partija
nbPopularGames=%s popularnih partija nbPopularGames=%s popularnih partija
nbAnalysedGames=%s analiziranih partija nbAnalysedGames=%s analiziranih partija
bookmarkedByNbPlayers=Označilo %s igrača
viewInFullSize=Pogledaj u punoj veličini viewInFullSize=Pogledaj u punoj veličini
logOut=Odjavi se logOut=Odjavi se
signIn=Prijavi se signIn=Prijavi se

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s Matt
nbBookmarks=%s Megjelölés nbBookmarks=%s Megjelölés
nbPopularGames=%s Népszerű Játék nbPopularGames=%s Népszerű Játék
nbAnalysedGames=%s Elemzett játék nbAnalysedGames=%s Elemzett játék
bookmarkedByNbPlayers=%s játékos könyvjelzőzte
viewInFullSize=Teljes méret viewInFullSize=Teljes méret
logOut=Kijelentkezés logOut=Kijelentkezés
signIn=Bejelentkezés signIn=Bejelentkezés

View File

@ -58,7 +58,6 @@ viewNbCheckmates=Տեսնել %s մատերը
nbBookmarks=%s Էջանիշեր nbBookmarks=%s Էջանիշեր
nbPopularGames=%s Հանրաճանաչ խաղերը nbPopularGames=%s Հանրաճանաչ խաղերը
nbAnalysedGames=%s Վերլուծված խաղեր nbAnalysedGames=%s Վերլուծված խաղեր
bookmarkedByNbPlayers=էջանշվել է %s խաղացողների կողնից
viewInFullSize=Մեծացնել չափը viewInFullSize=Մեծացնել չափը
logOut=Ելք logOut=Ելք
signIn=Մուտք signIn=Մուտք

View File

@ -1,15 +1,15 @@
playWithAFriend=Bermain melawan teman playWithAFriend=Bermain melawan teman
playWithTheMachine=Bermain melawan komputer playWithTheMachine=Bermain melawan komputer
toInviteSomeoneToPlayGiveThisUrl=Untuk mengundang seseorang untuk bermain, berikan URL berikut toInviteSomeoneToPlayGiveThisUrl=Undang yang lain dengan memberikan URL berikut
gameOver=Permainan berakhir gameOver=Permainan berakhir
waitingForOpponent=Menunggu lawan waitingForOpponent=Menunggu lawan
waiting=Menunggu waiting=Menunggu
yourTurn=Giliran anda yourTurn=Giliran Anda
aiNameLevelAiLevel=%s level %s aiNameLevelAiLevel=%s level %s
level=Level level=Level
toggleTheChat=Ganti tampilan chat toggleTheChat=Ganti tampilan chat
toggleSound=Aktifkan/nonaktifkan suara toggleSound=Aktifkan/nonaktifkan suara
chat=mengobrol chat=Mengobrol
resign=Menyerah resign=Menyerah
checkmate=Skakmat checkmate=Skakmat
stalemate=Pat stalemate=Pat
@ -19,27 +19,27 @@ randomColor=Warna acak
createAGame=Mulai permainan baru createAGame=Mulai permainan baru
whiteIsVictorious=Putih menang whiteIsVictorious=Putih menang
blackIsVictorious=Hitam menang blackIsVictorious=Hitam menang
kingInTheCenter=Raja di tengah kingInTheCenter=Raja telah di centrum
threeChecks=Tiga skak threeChecks=Tiga kali skak
raceFinished=Balapan berakhir raceFinished=Balapan telah berakhir
variantEnding=Variasi Babak Akhir variantEnding=Variasi Babak Akhir
newOpponent=Penantang baru newOpponent=Penantang baru
yourOpponentWantsToPlayANewGameWithYou=Lawan anda ingin bermain lagi dengan anda yourOpponentWantsToPlayANewGameWithYou=Lawan Anda ingin bermain lagi dengan Anda
joinTheGame=Ikuti permainan joinTheGame=Ikuti permainan
whitePlays=Giliran putih whitePlays=Putih melangkah
blackPlays=Giliran hitam blackPlays=Hitam melangkah
theOtherPlayerHasLeftTheGameYouCanForceResignationOrWaitForHim=Pemain lainnya telah meninggalkan permainan. Anda bisa klaim kemenangan, menyatakan remis, atau menunggunya. theOtherPlayerHasLeftTheGameYouCanForceResignationOrWaitForHim=Pemain lainnya telah meninggalkan permainan. Anda bisa klaim kemenangan, menyatakan remis, atau menunggunya.
makeYourOpponentResign=Buat lawan anda menyerah. makeYourOpponentResign=Klaim menang
forceResignation=Klaim menang forceResignation=Klaim menang
forceDraw=Paksa remis forceDraw=Nyatakan remis
talkInChat=Bicara dalam chat talkInChat=Silahkan mengobrol dengan sopan
theFirstPersonToComeOnThisUrlWillPlayWithYou=Orang pertama yang datang ke URL ini akan bermain dengan anda theFirstPersonToComeOnThisUrlWillPlayWithYou=Orang pertama yang datang ke URL ini akan bermain dengan Anda
whiteResigned=Putih menyerah whiteResigned=Putih menyerah
blackResigned=Hitam menyerah blackResigned=Hitam menyerah
whiteLeftTheGame=Putih telah meninggalkan permainan whiteLeftTheGame=Putih telah meninggalkan permainan
blackLeftTheGame=Hitam telah meninggalkan permainan blackLeftTheGame=Hitam telah meninggalkan permainan
shareThisUrlToLetSpectatorsSeeTheGame=Berbagi URL ini untuk mengundang orang menonton permainan shareThisUrlToLetSpectatorsSeeTheGame=Berbagi URL ini untuk mengundang orang menonton permainan
theComputerAnalysisHasFailed=Analisis komputer gagal theComputerAnalysisHasFailed=Analisis komputer gagal dilakukan
viewTheComputerAnalysis=Lihat analisis komputer viewTheComputerAnalysis=Lihat analisis komputer
requestAComputerAnalysis=Minta analisis komputer requestAComputerAnalysis=Minta analisis komputer
computerAnalysis=Analisis komputer computerAnalysis=Analisis komputer
@ -49,23 +49,22 @@ mistakes=Kesalahan
inaccuracies=Ketidaktepatan inaccuracies=Ketidaktepatan
moveTimes=Waktu gerak moveTimes=Waktu gerak
flipBoard=Putar papan catur flipBoard=Putar papan catur
threefoldRepetition=Pengulangan 3x posisi sama threefoldRepetition=Pengulangan 3x posisi yang sama
claimADraw=Klaim remis claimADraw=Klaim remis
offerDraw=Tawar remis offerDraw=Tawarkan remis
draw=Remis draw=Remis
nbConnectedPlayers=%s pemain tersambung nbConnectedPlayers=%s pemain tersambung
gamesBeingPlayedRightNow=Permainan saat ini gamesBeingPlayedRightNow=Permainan saat ini
viewAllNbGames=Lihat semua %s Permainan viewAllNbGames=Lihat semua %s Permainan
viewNbCheckmates=Lihat semua %s Skakmat viewNbCheckmates=Lihat semua %s Skakmat
nbBookmarks=%s Simpan halaman nbBookmarks=%s Halaman Ditandai
nbPopularGames=%s Permainan populer nbPopularGames=%s Permainan Terpopuler
nbAnalysedGames=%s Analisa permainan nbAnalysedGames=%s Analisa permainan
bookmarkedByNbPlayers=Halaman telah ditandai oleh %s pemain
viewInFullSize=Lihat dalam ukuran penuh viewInFullSize=Lihat dalam ukuran penuh
logOut=Keluar logOut=Keluar
signIn=Masuk signIn=Masuk
newToLichess=Baru di Lichess? newToLichess=Baru di Lichess?
youNeedAnAccountToDoThat=Anda membutuhkan nama pengguna untuk melakukannya youNeedAnAccountToDoThat=Anda perlu mendaftar untuk melakukannya
signUp=Daftar signUp=Daftar
computersAreNotAllowedToPlay=Komputer maupun pemain yang menggunakan bantuan komputer dilarang bermain. Mohon untuk tidak menggunakan bantuan dari program komputer, database, maupun pemain lain ketika bermain. Juga menggunakan beberapa akun bersamaan sangat dilarang dan akan mengakibatkan akun anda di-BANNED! computersAreNotAllowedToPlay=Komputer maupun pemain yang menggunakan bantuan komputer dilarang bermain. Mohon untuk tidak menggunakan bantuan dari program komputer, database, maupun pemain lain ketika bermain. Juga menggunakan beberapa akun bersamaan sangat dilarang dan akan mengakibatkan akun anda di-BANNED!
games=Permainan games=Permainan
@ -73,9 +72,9 @@ forum=Forum
xPostedInForumY=%s postingan dalam topik %s xPostedInForumY=%s postingan dalam topik %s
latestForumPosts=Pesan forum terbaru latestForumPosts=Pesan forum terbaru
players=Pemain players=Pemain
minutesPerSide=Menit untuk tiap sisi minutesPerSide=Menit untuk tiap pihak
variant=Variasi variant=Variasi permainan
variants=Varian variants=Varian permainan
timeControl=Kontrol waktu timeControl=Kontrol waktu
realTime=Langsung realTime=Langsung
correspondence=Korespondensi correspondence=Korespondensi
@ -87,7 +86,7 @@ time=Waktu
rating=Rating rating=Rating
ratingStats=Statistik rating ratingStats=Statistik rating
username=Nama pengguna username=Nama pengguna
usernameOrEmail=Nama pengguna usernameOrEmail=Nama pengguna atau email
password=Kata kunci password=Kata kunci
haveAnAccount=Punya akun? haveAnAccount=Punya akun?
changePassword=Ganti kata kunci changePassword=Ganti kata kunci

View File

@ -45,7 +45,6 @@ viewNbCheckmates=%s Mortoshaki
nbBookmarks=%s Paginomarki nbBookmarks=%s Paginomarki
nbPopularGames=%s Populara Ludi nbPopularGames=%s Populara Ludi
nbAnalysedGames=%s Analizita Ludi nbAnalysedGames=%s Analizita Ludi
bookmarkedByNbPlayers=Paginomarkizita da %s luderi
viewInFullSize=Vidar plengrande viewInFullSize=Vidar plengrande
logOut=Eksalutar logOut=Eksalutar
signIn=Ensalutar signIn=Ensalutar

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s Mát
nbBookmarks=%s Geymt nbBookmarks=%s Geymt
nbPopularGames=%s Vinsælir leikir nbPopularGames=%s Vinsælir leikir
nbAnalysedGames=%s Yfirfarnir Leikir nbAnalysedGames=%s Yfirfarnir Leikir
bookmarkedByNbPlayers=Geymt af %s leikmönnun
viewInFullSize=Skoða í fullri mynd viewInFullSize=Skoða í fullri mynd
logOut=Skrá út logOut=Skrá út
signIn=Skrá inn signIn=Skrá inn

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s Scacchi matti
nbBookmarks=%s Preferiti nbBookmarks=%s Preferiti
nbPopularGames=%s Partite più viste nbPopularGames=%s Partite più viste
nbAnalysedGames=%s Partite analizzate nbAnalysedGames=%s Partite analizzate
bookmarkedByNbPlayers=Preferito da %s giocatori
viewInFullSize=Visualizza a schermo intero viewInFullSize=Visualizza a schermo intero
logOut=Esci logOut=Esci
signIn=Entra signIn=Entra

View File

@ -60,7 +60,6 @@ viewNbCheckmates=チェックメイト(全%s回を見る
nbBookmarks=%s個の ブックマーク nbBookmarks=%s個の ブックマーク
nbPopularGames=%s 局の人気の対局 nbPopularGames=%s 局の人気の対局
nbAnalysedGames=%s 局の解析済み対局 nbAnalysedGames=%s 局の解析済み対局
bookmarkedByNbPlayers=%s 人がブックマークしています
viewInFullSize=フルサイズで見る viewInFullSize=フルサイズで見る
logOut=ログアウト logOut=ログアウト
signIn=ログイン signIn=ログイン

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s caxmati
nbBookmarks=%s da se tcita nbBookmarks=%s da se tcita
nbPopularGames=%s sopselnei nunjvi nbPopularGames=%s sopselnei nunjvi
nbAnalysedGames=%s da se lanli selkei nbAnalysedGames=%s da se lanli selkei
bookmarkedByNbPlayers=gau %s da tcita
viewInFullSize=viska fau lo nu nilbra fa lo cnano viewInFullSize=viska fau lo nu nilbra fa lo cnano
logOut=co'u pilno lo jaspu logOut=co'u pilno lo jaspu
signIn=co'a pilno lo jaspu signIn=co'a pilno lo jaspu

View File

@ -59,7 +59,6 @@ viewNbCheckmates=%s შამათი
nbBookmarks=%s ჩანიშნული თამაში nbBookmarks=%s ჩანიშნული თამაში
nbPopularGames=%s პოპულარული თამაში nbPopularGames=%s პოპულარული თამაში
nbAnalysedGames=%s გაანალიზებული თამაში nbAnalysedGames=%s გაანალიზებული თამაში
bookmarkedByNbPlayers=ჩანიშნულია %s მოთამაშის მიერ
viewInFullSize=სრული ზომით ნახვა viewInFullSize=სრული ზომით ნახვა
logOut=გამოსვლა logOut=გამოსვლა
signIn=შესვლა signIn=შესვლა

View File

@ -55,7 +55,6 @@ viewNbCheckmates=Walli %s mat
nbBookmarks=%s Inurifen nbBookmarks=%s Inurifen
nbPopularGames=%s Timlilit yimeẓwiyen nbPopularGames=%s Timlilit yimeẓwiyen
nbAnalysedGames=%s Timlilit iselḍen nbAnalysedGames=%s Timlilit iselḍen
bookmarkedByNbPlayers=Erren s umenyaf ɣer %s imariren
viewInFullSize=Ssemɣweṛ viewInFullSize=Ssemɣweṛ
logOut=Asenser logOut=Asenser
signIn=Tuqqna signIn=Tuqqna

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s건의 체크메이트
nbBookmarks=%s개의 즐겨찾기 nbBookmarks=%s개의 즐겨찾기
nbPopularGames=%s개의 인기 게임 nbPopularGames=%s개의 인기 게임
nbAnalysedGames=%s개의 분석된 게임 nbAnalysedGames=%s개의 분석된 게임
bookmarkedByNbPlayers=%s명의 플레이어가 즐겨찾기 함
viewInFullSize=크게 보기 viewInFullSize=크게 보기
logOut=로그아웃 logOut=로그아웃
signIn=로그인 signIn=로그인

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s matti
nbBookmarks=%s bookmarks nbBookmarks=%s bookmarks
nbPopularGames=%s populares lusiones nbPopularGames=%s populares lusiones
nbAnalysedGames=%s studiti lusiones nbAnalysedGames=%s studiti lusiones
bookmarkedByNbPlayers=A %s lusoribus signatis
viewInFullSize=Integro modo vide viewInFullSize=Integro modo vide
logOut=Conventum claudere logOut=Conventum claudere
signIn=Conventum aperire signIn=Conventum aperire

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s cH3cKm@73$
nbBookmarks=%s 800kM@rk$ nbBookmarks=%s 800kM@rk$
nbPopularGames=%s P0pUl@r gam3$ nbPopularGames=%s P0pUl@r gam3$
nbAnalysedGames=%s @nalY$ed GaM35 nbAnalysedGames=%s @nalY$ed GaM35
bookmarkedByNbPlayers=8o0kM@rk3d 8y %s pl@Y3r5
viewInFullSize=Vi3w iN FulL 5iZ3 viewInFullSize=Vi3w iN FulL 5iZ3
logOut=sIgn 0u7 logOut=sIgn 0u7
signIn=5IgN IN signIn=5IgN IN

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Matų: %s
nbBookmarks=Pasižymėtų partijų: %s nbBookmarks=Pasižymėtų partijų: %s
nbPopularGames=Populiarių partijų: %s nbPopularGames=Populiarių partijų: %s
nbAnalysedGames=Išanalizuotų partijų: %s nbAnalysedGames=Išanalizuotų partijų: %s
bookmarkedByNbPlayers=Pasižymėjusių žaidėjų: %s
viewInFullSize=Žiūrėti visu dydžiu viewInFullSize=Žiūrėti visu dydžiu
logOut=Atsijungti logOut=Atsijungti
signIn=Prisijungti signIn=Prisijungti

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Apskatīt %s matus
nbBookmarks=%s Grāmatzīmes nbBookmarks=%s Grāmatzīmes
nbPopularGames=%s Populārās spēles nbPopularGames=%s Populārās spēles
nbAnalysedGames=%s Analizētās spēles nbAnalysedGames=%s Analizētās spēles
bookmarkedByNbPlayers=Atzīmējuši %s spēlētāji
viewInFullSize=Skatīt pilnā izmērā viewInFullSize=Skatīt pilnā izmērā
logOut=Atslēgties logOut=Atslēgties
signIn=Pieslēgties signIn=Pieslēgties

View File

@ -55,7 +55,6 @@ viewNbCheckmates=%s Echéc et mat
nbBookmarks=%s Bookmarks nbBookmarks=%s Bookmarks
nbPopularGames=%s ny lalao malaza nbPopularGames=%s ny lalao malaza
nbAnalysedGames=%s ny lalao voahadihady nbAnalysedGames=%s ny lalao voahadihady
bookmarkedByNbPlayers=Nankafizin'ny mpilalao %s
viewInFullSize=Alehibiazo viewInFullSize=Alehibiazo
logOut=Mivoaha logOut=Mivoaha
signIn=Midira signIn=Midira

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Види %s шах-матови
nbBookmarks=%s обележувачи nbBookmarks=%s обележувачи
nbPopularGames=%s омилени игри nbPopularGames=%s омилени игри
nbAnalysedGames=%s анализирани игри nbAnalysedGames=%s анализирани игри
bookmarkedByNbPlayers=Обележано од %s играчи
viewInFullSize=Гледај во полна големина viewInFullSize=Гледај во полна големина
logOut=Одјави се logOut=Одјави се
signIn=Најави се signIn=Најави се

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Бүх %s мадаар төгссөн өргүүд
nbBookmarks=%s хадгалсан өргүүд nbBookmarks=%s хадгалсан өргүүд
nbPopularGames=%s хамгийн их хадгалагдсан өргүүд nbPopularGames=%s хамгийн их хадгалагдсан өргүүд
nbAnalysedGames=%s шинжилгээ хийгдсэн өргүүд nbAnalysedGames=%s шинжилгээ хийгдсэн өргүүд
bookmarkedByNbPlayers=%s гишүүд энэхүү өргийг хадгалсан байна
viewInFullSize=Бүрэн хэмжээсээр харах viewInFullSize=Бүрэн хэмжээсээр харах
logOut=Гарах logOut=Гарах
signIn=Нэвтрэх signIn=Нэвтрэх

View File

@ -56,7 +56,6 @@ viewNbCheckmates=सर्व %s शह देउन मात पाहा
nbBookmarks=%s आवडते nbBookmarks=%s आवडते
nbPopularGames=%s प्रसिद्ध डाव nbPopularGames=%s प्रसिद्ध डाव
nbAnalysedGames=%s विश्लेषीत खेळ nbAnalysedGames=%s विश्लेषीत खेळ
bookmarkedByNbPlayers=%s यांचे आवडते डाव
viewInFullSize=अधिकतम आकारात पाहा viewInFullSize=अधिकतम आकारात पाहा
logOut=बाहेर पडा logOut=बाहेर पडा
signIn=प्रवेश करा signIn=प्रवेश करा

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Se %s sjakkmatter
nbBookmarks=%s bokmerker nbBookmarks=%s bokmerker
nbPopularGames=%s populære partier nbPopularGames=%s populære partier
nbAnalysedGames=%s analyserte partier nbAnalysedGames=%s analyserte partier
bookmarkedByNbPlayers=Bokmerket av %s spillere
viewInFullSize=Se i full størrelse viewInFullSize=Se i full størrelse
logOut=Logg ut logOut=Logg ut
signIn=Logg inn signIn=Logg inn

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Alle %s partijen met schaakmat
nbBookmarks=%s Favorieten nbBookmarks=%s Favorieten
nbPopularGames=%s Populaire partijen nbPopularGames=%s Populaire partijen
nbAnalysedGames=%s Geanalyseerde partijen nbAnalysedGames=%s Geanalyseerde partijen
bookmarkedByNbPlayers=Aan favorieten toegevoegd door %s spelers
viewInFullSize=Bekijk op volledige grootte viewInFullSize=Bekijk op volledige grootte
logOut=Afmelden logOut=Afmelden
signIn=Aanmelden signIn=Aanmelden

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Sjå %s sjakkmatt
nbBookmarks=%s Bokmerke nbBookmarks=%s Bokmerke
nbPopularGames=%s Populære Parti nbPopularGames=%s Populære Parti
nbAnalysedGames=%s Analyserte Parti nbAnalysedGames=%s Analyserte Parti
bookmarkedByNbPlayers=Bokmerka av %s spelarar
viewInFullSize=Sjå i full storleik viewInFullSize=Sjå i full storleik
logOut=Logg ut logOut=Logg ut
signIn=Logg inn signIn=Logg inn

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s matów
nbBookmarks=%s zakładek nbBookmarks=%s zakładek
nbPopularGames=%s popularnych gier nbPopularGames=%s popularnych gier
nbAnalysedGames=%s przeanalizowanych gier nbAnalysedGames=%s przeanalizowanych gier
bookmarkedByNbPlayers=Dodane do zakładek przez %s graczy
viewInFullSize=Zobacz w pełnym rozmiarze viewInFullSize=Zobacz w pełnym rozmiarze
logOut=Wyloguj się logOut=Wyloguj się
signIn=Zaloguj się signIn=Zaloguj się

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s Xeques-mates
nbBookmarks=%s Favoritos nbBookmarks=%s Favoritos
nbPopularGames=%s Partidas populares nbPopularGames=%s Partidas populares
nbAnalysedGames=%s Partidas analisadas nbAnalysedGames=%s Partidas analisadas
bookmarkedByNbPlayers=Favorita de %s jogadores
viewInFullSize=Ver em tela cheia viewInFullSize=Ver em tela cheia
logOut=Sair logOut=Sair
signIn=Entrar signIn=Entrar

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s maturi
nbBookmarks=%s marcate nbBookmarks=%s marcate
nbPopularGames=%s partide populare nbPopularGames=%s partide populare
nbAnalysedGames=%s partide analizate nbAnalysedGames=%s partide analizate
bookmarkedByNbPlayers=Marcat de %s jucatori
viewInFullSize=Vezi la dimensiune completă viewInFullSize=Vezi la dimensiune completă
logOut=Deconectare logOut=Deconectare
signIn=Autentificare signIn=Autentificare

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Посмотреть все партии %s, закончивш
nbBookmarks=%s закладки nbBookmarks=%s закладки
nbPopularGames=%s популярные игры nbPopularGames=%s популярные игры
nbAnalysedGames=%s проанализированных игр nbAnalysedGames=%s проанализированных игр
bookmarkedByNbPlayers=Добавило в закладки %s игроков
viewInFullSize=Посмотреть в полном размере viewInFullSize=Посмотреть в полном размере
logOut=Выйти logOut=Выйти
signIn=Войти signIn=Войти

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s Šach-maty
nbBookmarks=%s Záložky nbBookmarks=%s Záložky
nbPopularGames=%s Populárne hry nbPopularGames=%s Populárne hry
nbAnalysedGames=%s Analyzovaných hier nbAnalysedGames=%s Analyzovaných hier
bookmarkedByNbPlayers=Záložku uložilo %s hráčov
viewInFullSize=Zobraziť v plnej veľkosti viewInFullSize=Zobraziť v plnej veľkosti
logOut=Odhlásiť sa logOut=Odhlásiť sa
signIn=Prihlásiť sa signIn=Prihlásiť sa

View File

@ -60,7 +60,6 @@ viewNbCheckmates=%s mat pozicij
nbBookmarks=%s zaznamkov nbBookmarks=%s zaznamkov
nbPopularGames=%s priljubljenih partij nbPopularGames=%s priljubljenih partij
nbAnalysedGames=%s analiziranih Iger nbAnalysedGames=%s analiziranih Iger
bookmarkedByNbPlayers=%s krat označeno
viewInFullSize=Pogled v polni velikosti viewInFullSize=Pogled v polni velikosti
logOut=Odjava logOut=Odjava
signIn=Prijava signIn=Prijava

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Shihni shah-matet %s
nbBookmarks=%s Faqeruajtës nbBookmarks=%s Faqeruajtës
nbPopularGames=%s Lojra Popullore nbPopularGames=%s Lojra Popullore
nbAnalysedGames=%s Lojra të shqyrtuara nbAnalysedGames=%s Lojra të shqyrtuara
bookmarkedByNbPlayers=Faqeruajtur prej %s lojtarësh
viewInFullSize=Shihe në madhësi të plotë viewInFullSize=Shihe në madhësi të plotë
logOut=Dilni logOut=Dilni
signIn=Hyni signIn=Hyni

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Види %s шахматове
nbBookmarks=%s Обележивачи nbBookmarks=%s Обележивачи
nbPopularGames=%s Популарне партије nbPopularGames=%s Популарне партије
nbAnalysedGames=%s Анализирана партија nbAnalysedGames=%s Анализирана партија
bookmarkedByNbPlayers=Обележено од %s играча
viewInFullSize=Погледај у пуној величини viewInFullSize=Погледај у пуној величини
logOut=Одјави се logOut=Одјави се
signIn=Пријави се signIn=Пријави се

View File

@ -60,7 +60,6 @@ viewNbCheckmates=Visa %s schackmatt
nbBookmarks=%s Bokmärken nbBookmarks=%s Bokmärken
nbPopularGames=%s Populära partier nbPopularGames=%s Populära partier
nbAnalysedGames=%s Analyserade partier nbAnalysedGames=%s Analyserade partier
bookmarkedByNbPlayers=Bokmärkt av %s spelare
viewInFullSize=Visa i full storlek viewInFullSize=Visa i full storlek
logOut=Logga ut logOut=Logga ut
signIn=Logga in signIn=Logga in

Some files were not shown because too many files have changed in this diff Show More