deepcrayon.fish version of lila

deepcrayonfish
server 2021-11-15 11:37:23 -07:00
parent fd640cd123
commit d0fb110e21
32 changed files with 715 additions and 396 deletions

View File

@ -10,7 +10,7 @@ case class OpenGraph(
`type`: String = "website",
image: Option[String] = None,
twitterImage: Option[String] = None,
siteName: String = "lichess.org",
siteName: String = "DeepCrayonFish",
more: List[(String, String)] = Nil
) {

View File

@ -26,7 +26,7 @@ object bits {
)
lazy val stage = a(
href := "https://lichess.org",
href := "https://deepcrayon.fish",
style := """
background: #7f1010;
color: #fff;
@ -38,15 +38,12 @@ border-top-right-radius: 3px;
z-index: 99;
"""
)(
"This is an empty Lichess preview website, go to lichess.org instead"
"This is an empty preview website, go to deepcrayon.fish instead"
)
val connectLinks =
div(cls := "connect-links")(
a(href := "https://twitter.com/lichess", targetBlank, noFollow)("Twitter"),
a(href := "https://discord.gg/lichess", targetBlank, noFollow)("Discord"),
a(href := "https://www.youtube.com/channel/UCr6RfQga70yMM9-nuzAYTsA", targetBlank, noFollow)("YouTube"),
a(href := "https://www.twitch.tv/lichessdotorg", targetBlank, noFollow)("Twitch")
a(href := "https://spacecruft.org/deepcrayon/lila", targetBlank, noFollow)("Forked Code")
)
def fenAnalysisLink(fen: FEN)(implicit lang: Lang) =

View File

@ -15,7 +15,7 @@ object layout {
object bits {
val doctype = raw("<!DOCTYPE html>")
def htmlTag(implicit lang: Lang) = html(st.lang := lang.code)
val topComment = raw("""<!-- Lichess is open source! See https://lichess.org/source -->""")
val topComment = raw("""<!-- DeepCrayonFish fork of lichess.org https://spacecruft.org/deepcrayon/lila -->""")
val charset = raw("""<meta charset="utf-8">""")
val viewport = raw(
"""<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">"""
@ -52,7 +52,7 @@ object layout {
)}" as="font" type="font/woff2" crossorigin>"""
}
private val manifests = raw(
"""<link rel="manifest" href="/manifest.json"><meta name="twitter:site" content="@lichess">"""
"""<link rel="manifest" href="/manifest.json"><meta name="qitter:site" content="@foo">"""
)
private val jsLicense = raw("""<link rel="jslicense" href="/source">""")
@ -214,9 +214,9 @@ object layout {
metaCsp(csp),
metaThemeColor,
st.headTitle {
if (ctx.blind) "lichess"
else if (netConfig.isProd) fullTitle | s"$titlelichess.org"
else s"[dev] ${fullTitle | s"$titlelichess.dev"}"
if (ctx.blind) "DeepCrayonFish"
else if (netConfig.isProd) fullTitle | s"$titleDeepCrayonFish"
else s"[dev] ${fullTitle | s"$titleDeepCrayonFish"}"
},
cssTag("site"),
ctx.pref.is3d option cssTag("board-3d"),
@ -367,8 +367,8 @@ object layout {
if (ctx.kid) span(title := trans.kidMode.txt(), cls := "kiddo")(":)")
else ctx.isBot option botImage,
a(href := "/")(
"lichess",
span(if (netConfig.isProd) ".org" else ".dev")
"DeepCrayon",
span(if (netConfig.isProd) ".Fish" else ".Fish")
)
),
ctx.blind option h2("Navigation"),

View File

@ -17,75 +17,9 @@ object topnav {
def apply()(implicit ctx: Context) =
st.nav(id := "topnav", cls := "hover")(
st.section(
linkTitle(
"/",
frag(
span(cls := "play")(trans.play()),
span(cls := "home")("lichess.org")
)
),
linkTitle(("/player/bots"), ("Bots")),
div(role := "group")(
if (ctx.noBot) a(href := "/?any#hook")(trans.createAGame())
else a(href := "/?any#friend")(trans.playWithAFriend()),
ctx.noBot option frag(
a(href := routes.Tournament.home)(trans.arena.arenaTournaments()),
a(href := routes.Swiss.home)(trans.swiss.swissTournaments()),
a(href := routes.Simul.home)(trans.simultaneousExhibitions()),
ctx.pref.hasDgt option a(href := routes.DgtCtrl.index)("DGT board")
)
)
),
ctx.noBot option st.section(
linkTitle(routes.Puzzle.home.path, trans.puzzles()),
div(role := "group")(
a(href := routes.Puzzle.home)(trans.puzzles()),
a(href := routes.Puzzle.dashboard(30, "home"))(trans.puzzle.puzzleDashboard()),
a(href := routes.Puzzle.streak)("Puzzle Streak"),
a(href := routes.Storm.home)("Puzzle Storm"),
a(href := routes.Racer.home)("Puzzle Racer")
)
),
st.section(
linkTitle(routes.Practice.index.path, trans.learnMenu()),
div(role := "group")(
ctx.noBot option frag(
a(href := routes.Learn.index)(trans.chessBasics()),
a(href := routes.Practice.index)(trans.practice()),
a(href := routes.Coordinate.home)(trans.coordinates.coordinates())
),
a(href := routes.Study.allDefault(1))(trans.studyMenu()),
ctx.noKid option a(href := routes.Coach.all(1))(trans.coaches()),
canSeeClasMenu option a(href := routes.Clas.index)(trans.clas.lichessClasses())
)
),
st.section(
linkTitle(routes.Tv.index.path, trans.watch()),
div(role := "group")(
a(href := routes.Tv.index)("Lichess TV"),
a(href := routes.Tv.games)(trans.currentGames()),
(ctx.noKid && ctx.noBot) option a(href := routes.Streamer.index())(trans.streamersMenu()),
a(href := routes.RelayTour.index())(trans.broadcast.broadcasts()),
ctx.noBot option a(href := routes.Video.index)(trans.videoLibrary())
)
),
st.section(
linkTitle(routes.User.list.path, trans.community()),
div(role := "group")(
a(href := routes.User.list)(trans.players()),
a(href := routes.Team.home())(trans.team.teams()),
ctx.noKid option a(href := routes.ForumCateg.index)(trans.forum()),
ctx.noKid option a(href := routes.Ublog.community("all"))(trans.blog()),
ctx.me.exists(!_.kid) option a(href := routes.Plan.index)(trans.patron.donate())
)
),
st.section(
linkTitle(routes.UserAnalysis.index.path, trans.tools()),
div(role := "group")(
a(href := routes.UserAnalysis.index)(trans.analysis()),
a(href := s"${routes.UserAnalysis.index}#explorer")(trans.openingExplorer()),
a(href := routes.Editor.index)(trans.boardEditor()),
a(href := routes.Importer.importGame)(trans.importGame()),
a(href := routes.Search.index())(trans.search.advancedSearch())
a(href := "/games/bot")(trans.currentGames())
)
)
)

View File

@ -17,7 +17,7 @@ object home {
views.html.base.layout(
title = "",
fullTitle = Some {
s"lichess.${if (netConfig.isProd) "org" else "dev"}${trans.freeOnlineChess.txt()}"
s"DeepCrayon dot Fish • Development Chess / Blockchain Server"
},
moreJs = frag(
jsModule("lobby"),
@ -43,7 +43,7 @@ object home {
.OpenGraph(
image = assetUrl("logo/lichess-tile-wide.png").some,
twitterImage = assetUrl("logo/lichess-tile.png").some,
title = "The best free, adless Chess server",
title = "Development/Test Blockchain/Chess Server",
url = netBaseUrl,
description = trans.siteDescription.txt()
)
@ -113,25 +113,6 @@ object home {
if (ctx.blind) blindLobby(blindGames)
else bits.lobbyApp
},
div(cls := "lobby__side")(
ctx.blind option h2("Highlights"),
ctx.noKid option st.section(cls := "lobby__streams")(
views.html.streamer.bits liveStreams streams,
streams.live.streams.nonEmpty option a(href := routes.Streamer.index(), cls := "more")(
trans.streamersMenu(),
" »"
)
),
div(cls := "lobby__spotlights")(
events.map(bits.spotlight),
!ctx.isBot option frag(
lila.tournament.Spotlight.select(tours, ctx.me, 3 - events.size) map {
views.html.tournament.homepageSpotlight(_)
},
swiss map views.html.swiss.bits.homepageSpotlight,
simuls.filter(isFeaturable) map views.html.simul.bits.homepageSpotlight
)
),
if (ctx.isAuth)
div(cls := "timeline")(
ctx.blind option h2("Timeline"),
@ -141,64 +122,6 @@ object home {
" »"
)
)
else
div(cls := "about-side")(
ctx.blind option h2("About"),
trans.xIsAFreeYLibreOpenSourceChessServer(
"Lichess",
a(cls := "blue", href := routes.Plan.features)(trans.really.txt())
),
" ",
a(href := "/about")(trans.aboutX("Lichess"), "...")
)
),
featured map { g =>
div(cls := "lobby__tv")(
views.html.game.mini(Pov naturalOrientation g, tv = true)
)
},
puzzle map { p =>
views.html.puzzle.embed.dailyLink(p)(ctx.lang)(cls := "lobby__puzzle")
},
ctx.noBot option bits.underboards(tours, simuls, leaderboard, tournamentWinners),
ctx.noKid option div(cls := "lobby__forum lobby__box")(
a(cls := "lobby__box__top", href := routes.ForumCateg.index)(
h2(cls := "title text", dataIcon := "")(trans.latestForumPosts()),
span(cls := "more")(trans.more(), " »")
),
div(cls := "lobby__box__content")(
views.html.forum.post recent forumRecent
)
),
bits.lastPosts(lastPost, ublogPosts),
div(cls := "lobby__support")(
a(href := routes.Plan.index)(
iconTag(patronIconChar),
span(cls := "lobby__support__text")(
strong(trans.patron.donate()),
span(trans.patron.becomePatron())
)
),
a(href := "https://shop.spreadshirt.com/lichess-org")(
iconTag(""),
span(cls := "lobby__support__text")(
strong("Swag Store"),
span(trans.playChessInStyle())
)
)
),
div(cls := "lobby__about")(
ctx.blind option h2("About"),
a(href := "/about")(trans.aboutX("Lichess")),
a(href := "/faq")(trans.faq.faqAbbreviation()),
a(href := "/contact")(trans.contact.contact()),
a(href := "/mobile")(trans.mobileApp()),
a(href := routes.Page.tos)(trans.termsOfService()),
a(href := "/privacy")(trans.privacy()),
a(href := "/source")(trans.sourceCode()),
a(href := "/ads")("Ads"),
views.html.base.bits.connectLinks
)
)
}
}

View File

@ -43,8 +43,7 @@ object watcher {
embedJsUnsafeLoadThen(s"""LichessRound.boot(${safeJsonValue(
Json.obj(
"data" -> data,
"i18n" -> jsI18n(pov.game),
"chat" -> chatJson
"i18n" -> jsI18n(pov.game)
)
)})""")
),
@ -53,12 +52,10 @@ object watcher {
)(
main(cls := "round")(
st.aside(cls := "round__side")(
bits.side(pov, data, tour, simul, userTv, bookmarked),
chatOption.map(_ => chat.frag)
bits.side(pov, data, tour, simul, userTv, bookmarked)
),
bits.roundAppPreload(pov, controls = false),
div(cls := "round__underboard")(bits.crosstable(cross, pov.game)),
div(cls := "round__underchat")(bits underchat pov.game)
div(cls := "round__underboard")(bits.crosstable(cross, pov.game))
)
)
}

View File

@ -20,9 +20,6 @@ object games {
cls := "page-menu tv-games",
dataRel := s"$netBaseUrl${routes.Tv.gameChannelReplacement(channel.key, "gameId", Nil)}"
)(
st.aside(cls := "page-menu__menu")(
side.channels(channel, champions, "/games")
),
div(cls := "page-menu__content now-playing")(
povs map { views.html.game.mini(_) }
)

View File

@ -49,17 +49,10 @@ object index {
main(cls := "round tv-single")(
st.aside(cls := "round__side")(
side.meta(pov),
side.channels(channel, champions, "/tv")
),
views.html.round.bits.roundAppPreload(pov, controls = false),
div(cls := "round__underboard")(
views.html.round.bits.crosstable(cross, pov.game),
div(cls := "tv-history")(
h2(trans.previouslyOnLichessTV()),
div(cls := "now-playing")(
history map { views.html.game.mini(_) }
)
)
views.html.round.bits.crosstable(cross, pov.game)
)
)
)

View File

@ -13,18 +13,6 @@ object bits {
def communityMenu(active: String)(implicit ctx: Context) =
st.nav(cls := "page-menu__menu subnav")(
a(cls := active.active("leaderboard"), href := routes.User.list)(trans.leaderboard()),
a(
cls := active.active("ratings"),
href := routes.User.ratingDistribution("blitz")
)(
trans.ratingStats()
),
a(cls := active.active("tournament"), href := routes.Tournament.leaderboard)(
trans.tournamentWinners()
),
a(cls := active.active("shield"), href := routes.Tournament.shields)("Shields"),
a(cls := active.active("bots"), href := routes.PlayApi.botOnline)("Online bots")
)
def miniClosed(u: User)(implicit ctx: Context) =

View File

@ -24,22 +24,9 @@ object bots {
main(cls := "page-menu bots")(
user.bits.communityMenu("bots"),
sorted.partition(_.isVerified) match {
case (featured, all) =>
case (featured@_, all) =>
div(cls := "bots page-menu__content")(
div(cls := "box bots__featured")(
div(cls := "box__top")(h1("Featured bots")),
botTable(featured)
),
div(cls := "box")(
div(cls := "box__top")(
h1("Community bots"),
a(
cls := "bots__about",
href := "https://lichess.org/blog/WvDNticAAMu_mHKP/welcome-lichess-bots"
)(
"About Lichess Bots"
)
),
botTable(all)
)
)
@ -80,17 +67,6 @@ object bots {
)(showPeriod(tvPeriod))
}
)
},
if (ctx is u) td
else {
td(
a(
dataIcon := "",
cls := List("button button-empty text" -> true),
st.title := trans.challenge.challengeToPlay.txt(),
href := s"${routes.Lobby.home}?user=${u.username}#friend"
)(trans.play())
)
}
)
}

View File

@ -10,7 +10,7 @@ object newPlayer {
def apply(u: User) =
div(cls := "new-player")(
h2("Welcome to lichess.org!"),
h2("Bienvenido a DeepCrayonFish!"),
p(
"This is your profile page.",
u.profile.isEmpty option frag(
@ -30,23 +30,7 @@ object newPlayer {
)
),
p(
"What now? Here are a few suggestions:"
"Note: This is a development / test server that will be restarted, wiped, deleted, and permanently disabled at any time. Not for production."
),
ul(
li(a(href := routes.Learn.index)("Learn chess rules")),
li(a(href := routes.Puzzle.home)("Improve with chess tactics puzzles")),
li(a(href := s"${routes.Lobby.home}#ai")("Play the artificial intelligence")),
li(a(href := s"${routes.Lobby.home}#hook")("Play opponents from around the world")),
li(a(href := routes.User.list)("Follow your friends on Lichess")),
li(a(href := routes.Tournament.home)("Play in tournaments")),
li(
"Learn from ",
a(href := routes.Study.allDefault(1))("studies"),
" and ",
a(href := routes.Video.index)("videos")
),
li(a(href := routes.Pref.form("game-display"))("Configure Lichess to your liking")),
li("Explore the site and have fun :)")
)
)
}

View File

@ -13,16 +13,16 @@ mongodb {
}
}
net {
domain = "localhost:9663"
socket.domains = [ "localhost:9664" ]
domain = "deepcrayon.fish"
socket.domains = [ "deepcrayon.fish" ]
asset.domain = ${net.domain}
asset.base_url = "http://"${net.asset.domain}
asset.base_url = "https://"${net.asset.domain}
asset.minified = false
base_url = "http://"${net.domain}
email = ""
base_url = "https://"${net.domain}
email = "y@deepcrayon.fish"
crawlable = false
ratelimit = true
prodDomain = "lichess.org"
prodDomain = "deepcrayon.fish"
http.log = true
stage.banner = false
}
@ -40,7 +40,7 @@ play {
secret.key = "CiebwjgIM9cHQ;I?Xk:sfqDJ;BhIe:jsL?r=?IPF[saf>s^r0]?0grUq4>q?5mP^" # public (lila does not rely on cookie signing)
}
ws {
useragent = "lichess.org"
useragent = "deepcrayon.fish"
compressionEnabled = true
timeout {
connection = 5 seconds
@ -92,7 +92,7 @@ app {
api {
token = secret
influx_event = {
endpoint = "http://monitor.lichess.ovh:8086/write?db=events"
endpoint = "http://127.0.0.1:8086/write?db=events"
env = "dev"
}
}
@ -138,7 +138,7 @@ puzzle {
path = puzzle2_path
}
}
storm.secret = "somethingElseInProd"
storm.secret = "ph7odAw3odJalni7ewI24pNa"
coordinate {
collection {
score = coordinate_score
@ -155,11 +155,11 @@ video {
view = video_view
}
sheet {
url = "https://docs.google.com/spreadsheets/d/e/2PACX-1vSSaZYC5lUe0o5CVydmi6imP7QIrIHB1lKGL7xlke68IjlfslOdwRr3Xs_69cwmZxn9Tkuea3MGOHXx/pub?gid=0&single=true&output=csv"
url = "https://127.0.0.1/spreadsheets/d/e/2PACX-1vSSaZYC5lUe0o5CVydmi6imP7QIrIHB1lKGL7xlke68IjlfslOdwRr3Xs_69cwmZxn9Tkuea3MGOHXx/pub?gid=0&single=true&output=csv"
delay = 6 hours
}
youtube {
url = "https://www.googleapis.com/youtube/v3/videos"
url = "https://127.0.0.1/youtube/v3/videos"
api_key = ""
max = 50
delay = 20 minutes
@ -202,31 +202,31 @@ security {
}
email_confirm {
enabled = false
secret = "???"
secret = "vimm5Eab1ud9Ho3d6ouh29owAp"
cookie = "email_confirm"
}
email_change {
secret = "???"
secret = "K2ri74bogyeipEatsh6Ir1"
}
login_token {
secret = "???"
secret = "Slese3fevOadTy6nvac3G"
}
tor {
enabled = true
provider_url = "https://check.torproject.org/torbulkexitlist"
enabled = false
provider_url = "https://127.0.0.1/torbulkexitlist"
refresh_delay = 1 hour
}
disposable_email {
enabled = false
provider_url = "https://raw.githubusercontent.com/ornicar/disposable/publish/domains.txt"
provider_url = "https://127.0.0.1/ornicar/disposable/publish/domains.txt"
refresh_delay = 10 minutes
}
dns_api {
url = "https://cloudflare-dns.com/dns-query"
timeout = 5 seconds
url = "https://127.0.0.1/dns-query"
timeout = 1 seconds
}
check_mail_api {
url = "https://mailcheck.p.rapidapi.com/"
url = "https://127.0.0.1/"
key = ""
}
ip2proxy {
@ -254,7 +254,7 @@ oauth {
}
}
hcaptcha {
endpoint = "https://hcaptcha.com/siteverify"
endpoint = "https://127.0.0.1/siteverify"
public_key = "f91a151d-73e5-4a95-9d4e-74bfa19bec9d"
private_key = ""
enabled = false
@ -273,10 +273,10 @@ push {
}
web {
vapid_public_key = "BGr5CL0QlEYa7qW7HLqe7DFkCeTsYMLsi1Db+5Vwt1QBIs6+WxN8066AjtP8S9u+w+CbleE8xWY+qQaNEMs7sAs="
url = "http://push.lichess.ovh:9054"
url = "http://127.0.0.1:9054"
}
firebase {
url = "https://fcm.googleapis.com/v1/projects/lichess-1366/messages:send"
url = "https://127.0.0.1/v1/projects/lichess-1366/messages:send"
json = ""
}
}
@ -450,7 +450,7 @@ zulip {
}
plan {
stripe {
endpoint="https://api.stripe.com/v1"
endpoint="https://127.0.0.1/v1"
keys {
public=""
secret=""

530
conf/base.conf.orig 100644
View File

@ -0,0 +1,530 @@
# The "secret" keys in here are for development purposes.
# None of them have ever been used in production.
# This also applies to former versions of this file, and to all other config files.
http.port = 9663
https.port = disabled
mongodb {
uri = "mongodb://127.0.0.1:27017?appName=lila"
mongo-async-driver = ${akka}
yolo {
uri = ${mongodb.uri}
# uri = "mongodb://127.0.0.1:27010?appName=lila&connectTimeoutMS=800&rm.maxNonQueryableHeartbeats=9999"
}
}
net {
domain = "localhost:9663"
socket.domains = [ "localhost:9664" ]
asset.domain = ${net.domain}
asset.base_url = "http://"${net.asset.domain}
asset.minified = false
base_url = "http://"${net.domain}
email = ""
crawlable = false
ratelimit = true
prodDomain = "lichess.org"
http.log = true
stage.banner = false
}
play {
application.loader = "lila.app.AppLoader"
http {
requestHandler = "play.api.http.DefaultHttpRequestHandler"
errorHandler = provided
filters = provided
parser.maxMemoryBuffer=512KiB
session {
cookieName = "lila2"
maxAge = 3650 days
}
secret.key = "CiebwjgIM9cHQ;I?Xk:sfqDJ;BhIe:jsL?r=?IPF[saf>s^r0]?0grUq4>q?5mP^" # public (lila does not rely on cookie signing)
}
ws {
useragent = "lichess.org"
compressionEnabled = true
timeout {
connection = 5 seconds
idle = 5 minutes
request = 5 minutes
}
}
server {
# The maximum length of the HTTP headers. The most common effect of this is a restriction in cookie length, including
# number of cookies and size of cookie values.
max-header-size = 4096 # 8192
netty {
transport = "native"
# The maximum length of the initial line. This effectively restricts the maximum length of a URL that the server will
# accept, the initial line consists of the method (3-7 characters), the URL, and the HTTP version (8 characters),
# including typical whitespace, the maximum URL length will be this number - 18.
maxInitialLineLength = 2048 # 4096
}
}
akka {
actor-system = lila
}
}
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = INFO
# stdout-loglevel = INFO
log-dead-letters-during-shutdown = off
akka.log-dead-letters = off
coordinated-shutdown {
phases {
actor-system-terminate {
timeout = 5s
}
}
}
blocking-smtp-dispatcher {
executor = "thread-pool-executor"
thread-pool-executor {
core-pool-size-min = 8
core-pool-size-max = 64
}
}
}
app {
renderer.name = "renderer"
stage = false
}
api {
token = secret
influx_event = {
endpoint = "http://monitor.lichess.ovh:8086/write?db=events"
env = "dev"
}
}
accessibility {
blind {
cookie {
name = "mBzamRgfXgRBSnXB"
salt = "WWcTbz5xxaHU4d96"
}
}
}
pagerDuty {
serviceId = ""
apiKey = ""
}
prismic {
api_url = "https://lichess.cdn.prismic.io/api"
}
blog {
prismic = ${prismic}
collection = blog
last_post_cache.ttl = 5 minutes
}
chat {
collection {
chat = chat
timeout = chat_timeout
}
actor.name = chat
timeout {
duration = 15 minutes
check_every = 15 seconds
}
}
study.mongodb.uri = ${mongodb.uri}
puzzle {
mongodb {
uri = ${mongodb.uri}
}
collection {
puzzle = puzzle2_puzzle
round = puzzle2_round
path = puzzle2_path
}
}
storm.secret = "somethingElseInProd"
coordinate {
collection {
score = coordinate_score
}
}
event {
collection {
event = event
}
}
video {
collection {
video = video
view = video_view
}
sheet {
url = "https://docs.google.com/spreadsheets/d/e/2PACX-1vSSaZYC5lUe0o5CVydmi6imP7QIrIHB1lKGL7xlke68IjlfslOdwRr3Xs_69cwmZxn9Tkuea3MGOHXx/pub?gid=0&single=true&output=csv"
delay = 6 hours
}
youtube {
url = "https://www.googleapis.com/youtube/v3/videos"
api_key = ""
max = 50
delay = 20 minutes
}
}
search {
enabled = false
writeable = true
endpoint = "http://localhost:9673"
}
teamSearch {
index = team
actor.name = team-search
}
relation {
collection {
relation = relation
}
limit {
follow = 400
block = 500
}
}
bookmark {
collection.bookmark = bookmark
actor.name = bookmark
}
geoip {
file = ""
cache_ttl = 20 minutes
}
security {
collection.security = security
collection.print_ban = print_ban
collection.firewall = firewall
flood.duration = 60 seconds
geoip = ${geoip}
password_reset {
secret = "???"
}
email_confirm {
enabled = false
secret = "???"
cookie = "email_confirm"
}
email_change {
secret = "???"
}
login_token {
secret = "???"
}
tor {
enabled = true
provider_url = "https://check.torproject.org/torbulkexitlist"
refresh_delay = 1 hour
}
disposable_email {
enabled = false
provider_url = "https://raw.githubusercontent.com/ornicar/disposable/publish/domains.txt"
refresh_delay = 10 minutes
}
dns_api {
url = "https://cloudflare-dns.com/dns-query"
timeout = 5 seconds
}
check_mail_api {
url = "https://mailcheck.p.rapidapi.com/"
key = ""
}
ip2proxy {
enabled = false
url = "http://ip2proxy.lichess.ovh:1929"
}
hcaptcha = ${hcaptcha}
lame_name_check = true
}
mailer {
primary {
mock = true
host = "localhost"
port = 587
tls = true
user = "login@"${net.domain}
password = "???"
sender = ${net.domain}" <login@"${net.domain}">"
}
secondary = ${mailer.primary}
}
oauth {
mongodb {
uri = ${mongodb.uri}
}
}
hcaptcha {
endpoint = "https://hcaptcha.com/siteverify"
public_key = "f91a151d-73e5-4a95-9d4e-74bfa19bec9d"
private_key = ""
enabled = false
}
shutup {
collection.shutup = shutup
actor.name = shutup
}
playban {
collection.playban = playban
}
push {
collection {
device = push_device
subscription = push_subscription
}
web {
vapid_public_key = "BGr5CL0QlEYa7qW7HLqe7DFkCeTsYMLsi1Db+5Vwt1QBIs6+WxN8066AjtP8S9u+w+CbleE8xWY+qQaNEMs7sAs="
url = "http://push.lichess.ovh:9054"
}
firebase {
url = "https://fcm.googleapis.com/v1/projects/lichess-1366/messages:send"
json = ""
}
}
report {
collection.report = report2
actor.name = report
score.threshold = 50
}
i18n {
web_path.relative = public/trans
}
detectlanguage.api {
url = "https://ws.detectlanguage.com/0.2/detect"
key = ""
}
timeline {
collection {
unsub = timeline_unsub
entry = timeline_entry
}
user {
display_max = 10
actor.name = user-timeline
}
}
game {
collection {
game = game5
crosstable = crosstable2
matchup = matchup
}
captcher {
name = captcher
duration = 15 seconds
}
gifUrl = "http://gif.lichess.ovh:6175"
}
streamer {
collection.streamer = "streamer"
paginator.max_per_page = 12
streaming {
twitch {
client_id = ""
secret = ""
}
google.api_key = ""
keyword = "lichess.org"
}
}
explorer {
endpoint = "https://explorer.lichess.ovh"
internal_endpoint = "http://explorer.lichess.ovh"
tablebase = {
endpoint = "https://tablebase.lichess.ovh"
}
}
gameSearch {
index = game
paginator.max_per_page = 12
actor.name = game-search
}
round {
collection {
note = game_note
forecast = forecast
alarm = round_alarm
}
}
tournament {
collection {
tournament = tournament2
player = tournament_player
pairing = tournament_pairing
leaderboard = tournament_leaderboard
}
history.message.ttl = 20 seconds
sri.timeout = 7 seconds # small to avoid missed events
api_actor.name = tournament-api
pairing.delay = 3.1 seconds
}
swiss {
bbpairing = "/path/to/bbpPairings.exe"
}
simul {
collection.simul = simul
feature.views = 10000 # max frontpage views of simul per host per day
}
forum {
topic.max_per_page = 10
post.max_per_page = 10
}
forumSearch {
index = forum
paginator.max_per_page = 10
actor.name = forum-search
}
message {
thread.max_per_page = 30
collection.thread = m_thread
}
coach {
collection.coach = coach
collection.review = coach_review
}
memo {
collection {
cache = cache
config = flag
}
picfit {
collection = picfit_image
secretKey = "qix8rozsRE6Rsw5uvBjwJUCFfQhyaKbR" # request signature
endpointGet = "http://127.0.0.1:3001"
endpointPost = "http://127.0.0.1:3001"
}
}
redis {
uri = "redis://127.0.0.1"
# uri = "redis-socket:///var/run/redis/redis-server.sock"
}
socket {
redis = ${redis}
}
setup.max_playing = 200
evalCache {
collection.evalCache = eval_cache
}
user {
online.ttl = 7 seconds
collection {
user = user4
note = note
trophy = trophy
trophyKind = trophyKind
ranking = ranking
}
}
fishnet {
redis = ${redis}
collection {
analysis = fishnet_analysis
client = fishnet_client
}
offline_mode = true # any client can provide moves and analysis
actor.name = fishnet
analysis.nodes = 1500000 # sf 15 dev
move.plies = 300
client_min_version = "2.1.3"
}
insight {
mongodb {
uri = "mongodb://127.0.0.1:27017/lichess-insight?appName=lila"
}
}
notify {
collection.notify = notify
actor.name = notify
}
learn {
collection.progress = learn_progress
}
simulation {
enabled = false
players = 300
watchers = 200
}
zulip {
domain = ""
user = ""
pass = ""
}
plan {
stripe {
endpoint="https://api.stripe.com/v1"
keys {
public=""
secret=""
}
products {
monthly = "prod_JZswNwe0eLPJIU"
onetime = "prod_JZuNrVAZSUieAd"
gift = "prod_JboaVzGqSWzVGI"
}
}
paypal {
ipn_key=""
}
collection {
patron = plan_patron
charge = plan_charge
}
# https://openexchangerates.org
oer.appId = ""
}
hub {
actor {
game {
search = ${gameSearch.actor.name}
}
renderer = ${app.renderer.name}
captcher = ${game.captcher.name}
forum {
search = ${forumSearch.actor.name}
}
team.search = ${teamSearch.actor.name}
fishnet = ${fishnet.actor.name}
tournament.api = ${tournament.api_actor.name}
timeline {
user = ${timeline.user.actor.name}
}
bookmark = ${bookmark.actor.name}
report = ${report.actor.name}
shutup = ${shutup.actor.name}
chat = ${chat.actor.name}
notify = ${notify.actor.name}
}
}
kamon {
enabled = false
environment.service = "lila"
metric.tick-interval = 60 seconds
influxdb {
hostname = ""
port = 8086
database = "kamon"
percentiles = [50.0, 75.0, 90.0, 95.0, 99.0, 99.9]
protocol = "http"
post-empty-distributions = false
precision = "s"
environment-tags {
include-service = no
include-host = no
include-instance = yes
}
}
prometheus {
buckets {
default-buckets = [ 10, 100, 1000, 10000, 100000 ]
time-buckets = [ 0.01, 0.05, 0.1, 0.5, 1, 5, 10 ]
information-buckets = [ 512, 2048, 16384, 524288, ]
}
}
modules {
jvm-metrics.enabled = yes
process-metrics.enabled = yes
host-metrics.enabled = no
prometheus-reporter.enabled = yes
}
}
# Don't let play manage its own PID file
pidfile.path = "/dev/null"

View File

@ -24,12 +24,12 @@ sealed trait PieceSetObject {
object PieceSet extends PieceSetObject {
val default = new PieceSet("cburnett")
val default = new PieceSet("alpha")
val all = List(
default.name,
"merida",
"alpha",
"cburnett",
"pirouetti",
"chessnut",
"chess7",

View File

@ -417,7 +417,7 @@ object Pref {
lazy val default = Pref(
_id = "",
bg = Bg.LIGHT,
bg = Bg.DARKBOARD,
bgImg = none,
is3d = false,
theme = Theme.default.name,
@ -432,7 +432,7 @@ object Pref {
moretime = Moretime.ALWAYS,
clockBar = true,
clockSound = true,
premove = true,
premove = false,
animation = Animation.NORMAL,
captured = true,
follow = true,

View File

@ -3,8 +3,8 @@
<string name="activity">Activity</string>
<string name="hostedALiveStream">Hosted a live stream</string>
<plurals name="supportedNbMonths">
<item quantity="one">Supported lichess.org for %1$s month as a %2$s</item>
<item quantity="other">Supported lichess.org for %1$s months as a %2$s</item>
<item quantity="one">Supported deepcrayon.fish for %1$s month as a %2$s</item>
<item quantity="other">Supported deepcrayon.fish for %1$s months as a %2$s</item>
</plurals>
<plurals name="practicedNbPositions">
<item quantity="one">Practiced %1$s position on %2$s</item>
@ -67,7 +67,7 @@
<item quantity="other">Competed in %s swiss tournaments</item>
</plurals>
<string name="rankedInSwissTournament">Ranked #%1$s in %2$s</string>
<string name="signedUp">Signed up to lichess.org</string>
<string name="signedUp">Signed up to deepcrayon.fish</string>
<plurals name="joinedNbTeams">
<item quantity="one">Joined %s team</item>
<item quantity="other">Joined %s teams</item>

View File

@ -3,8 +3,8 @@
<string name="activity">Activity</string>
<string name="hostedALiveStream">Hosted a live stream</string>
<plurals name="supportedNbMonths">
<item quantity="one">Supported lichess.org for %1$s month as a %2$s</item>
<item quantity="other">Supported lichess.org for %1$s months as a %2$s</item>
<item quantity="one">Supported deepcrayon.fish for %1$s month as a %2$s</item>
<item quantity="other">Supported deepcrayon.fish for %1$s months as a %2$s</item>
</plurals>
<plurals name="practicedNbPositions">
<item quantity="one">Practised %1$s position on %2$s</item>
@ -67,7 +67,7 @@
<item quantity="other">Competed in %s swiss tournaments</item>
</plurals>
<string name="rankedInSwissTournament">Ranked #%1$s in %2$s</string>
<string name="signedUp">Signed up to lichess.org</string>
<string name="signedUp">Signed up to deepcrayon.fish</string>
<plurals name="joinedNbTeams">
<item quantity="one">Joined %s team</item>
<item quantity="other">Joined %s teams</item>

View File

@ -14,8 +14,8 @@
<string name="fullDescription">Full tournament description</string>
<string name="fullDescriptionHelp">Optional long description of the tournament. %1$s is available. Length must be less than %2$s characters.</string>
<string name="sourceUrlOrGameIds">Source URL, or game IDs</string>
<string name="sourceUrlHelp">URL that Lichess will check to get PGN updates. It must be publicly accessible from the Internet.</string>
<string name="gameIdsHelp">Alternatively, you can enter up to 64 Lichess game IDs, separated by spaces.</string>
<string name="sourceUrlHelp">URL that DeepcrayonFish will check to get PGN updates. It must be publicly accessible from the Internet.</string>
<string name="gameIdsHelp">Alternatively, you can enter up to 64 DeepcrayonFish game IDs, separated by spaces.</string>
<string name="startDate">Start date in your own timezone</string>
<string name="startDateHelp">Optional, if you know when the event starts</string>
<string name="credits">Credit the source</string>

View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="lichessClasses">Classes</string>
<string name="teachClassesOfChessStudents">Teach classes of chess students with the Lichess Classes tool suite.</string>
<string name="teachClassesOfChessStudents">Teach classes of chess students with the DeepcrayonFish Classes tool suite.</string>
<string name="features">Features</string>
<string name="quicklyGenerateSafeUsernames">Quickly generate safe usernames and passwords for students</string>
<string name="trackStudentProgress">Track student progress in games and puzzles</string>
<string name="messageAllStudents">Message all students about new class material</string>
<string name="freeForAllForever">100% free for all, forever, with no ads or trackers</string>
<string name="applyToBeLichessTeacher">Apply to be a Lichess Teacher</string>
<string name="applyToBeDeepcrayonFishTeacher">Apply to be a DeepcrayonFish Teacher</string>
<string name="noClassesYet">No classes yet.</string>
<string name="teachersX">Teachers: %s</string>
<string name="newClass">New class</string>
@ -23,7 +23,7 @@
<string name="classDescription">Class description</string>
<string name="visibleByBothStudentsAndTeachers">Visible by both teachers and students of the class</string>
<string name="teachersOfTheClass">Teachers of the class</string>
<string name="addLichessUsernames">Add Lichess usernames to invite them as teachers. One per line.</string>
<string name="addDeepcrayonFishUsernames">Add DeepcrayonFish usernames to invite them as teachers. One per line.</string>
<string name="resetPassword">Reset password</string>
<string name="makeSureToCopy">Make sure to copy or write down the password now. You wont be able to see it again!</string>
<string name="passwordX">Password: %s</string>
@ -32,22 +32,22 @@
<string name="realName">Real name</string>
<string name="privateWillNeverBeShown">Private. Will never be shown outside the class. Helps remember who the student is.</string>
<string name="addStudent">Add student</string>
<string name="lichessProfileXCreatedForY">Lichess profile %1$s created for %2$s.</string>
<string name="lichessProfileXCreatedForY">DeepcrayonFish profile %1$s created for %2$s.</string>
<string name="studentCredentials">Student: %1$s
Username: %2$s
Password: %3$s</string>
<string name="inviteALichessAccount">Invite a Lichess account</string>
<string name="inviteDesc1">If the student already has a Lichess account, you can invite them to the class.</string>
<string name="inviteDesc2">They will receive a message on Lichess with a link to join the class.</string>
<string name="inviteADeepcrayonFishAccount">Invite a DeepcrayonFish account</string>
<string name="inviteDesc1">If the student already has a DeepcrayonFish account, you can invite them to the class.</string>
<string name="inviteDesc2">They will receive a message on DeepcrayonFish with a link to join the class.</string>
<string name="inviteDesc3">Important: only invite students you know, and who actively want to join the class.</string>
<string name="inviteDesc4">Never send unsolicited invites to arbitrary players.</string>
<string name="createANewLichessAccount">Create a new Lichess account</string>
<string name="createDesc1">If the student doesn't have a Lichess account yet, you can create one for them here.</string>
<string name="createANewDeepcrayonFishAccount">Create a new DeepcrayonFish account</string>
<string name="createDesc1">If the student doesn't have a DeepcrayonFish account yet, you can create one for them here.</string>
<string name="createDesc2">No email address is required. A password will be generated, and you will have to transmit it to the student, so they can log in.</string>
<string name="createDesc3">Important: a student must not have multiple accounts.</string>
<string name="createDesc4">If they already have one, use the invite form instead.</string>
<string name="createStudentWarning">Only create accounts for real students. Do not use this to make multiple accounts for yourself. You would get banned.</string>
<string name="lichessUsername">Lichess username</string>
<string name="lichessUsername">DeepcrayonFish username</string>
<string name="generateANewUsername">Generate a new username</string>
<string name="welcomeToClass">Welcome to your class: %s.
Here is the link to access the class.</string>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="lichessCoaches">Lichess coaches</string>
<string name="lichessCoach">Lichess coach</string>
<string name="lichessCoaches">DeepcrayonFish coaches</string>
<string name="lichessCoach">DeepcrayonFish coach</string>
<string name="areYouCoach">Are you a great chess coach with a %s?</string>
<string name="nmOrFideTitle" comment="nmOrFideTitle&#10;&#10;Part of sentence &quot;Are you a great chess coach with a NM or FIDE title?&quot;&#10;&#10;The text links to our title verification page: https://lichess.org/help/master">NM or FIDE title</string>
<string name="nmOrFideTitle" comment="nmOrFideTitle&#10;&#10;Part of sentence &quot;Are you a great chess coach with a NM or FIDE title?&quot;&#10;&#10;The text links to our title verification page: https://deepcrayon.fish/help/master">NM or FIDE title</string>
<string name="confirmTitle">Confirm your title here and we will review your application.</string>
<string name="sendApplication" comment="sendApplication&#10;&#10;%s is the lichess email adress">Send us an email at %s and we will review your application.</string>
<string name="location">Location</string>
@ -14,7 +14,7 @@
<string name="accepting">Accepting students</string>
<string name="notAccepting">Not accepting students at the moment</string>
<string name="xCoachesStudents">%s coaches chess students</string>
<string name="viewXProfile">View %s Lichess profile</string>
<string name="viewXProfile">View %s DeepcrayonFish profile</string>
<string name="sendPM">Send a private message</string>
<string name="aboutMe">About me</string>
<string name="playingExperience">Playing experience</string>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="contact">Contact</string>
<string name="contactLichess">Contact Lichess</string>
<string name="contactDeepcrayonFish">Contact DeepcrayonFish</string>
<string name="whatCanWeHelpYouWith">What can we help you with?</string>
<string name="visitThisPage">Visit this page to solve the issue</string>
<string name="iCantLogIn">I can't log in</string>
@ -12,8 +12,8 @@
<string name="lost2FA">I lost access to my two-factor authentication codes</string>
<string name="doPasswordReset">Complete a password reset to remove your second factor</string>
<string name="accountSupport">I need account support</string>
<string name="wantTitle">I want my title displayed on Lichess</string>
<string name="visitTitleConfirmation">To show your title on your Lichess profile, and participate in Titled Arenas, visit the title confirmation page</string>
<string name="wantTitle">I want my title displayed on DeepcrayonFish</string>
<string name="visitTitleConfirmation">To show your title on your DeepcrayonFish profile, and participate in Titled Arenas, visit the title confirmation page</string>
<string name="wantCloseAccount">I want to close my account</string>
<string name="closeYourAccount">You can close your account on this page</string>
<string name="doNotAskByEmail">Do not ask us by email to close an account, we won't do it.</string>
@ -34,10 +34,10 @@
<string name="doNotMessageModerators">Please do not send direct messages to moderators.</string>
<string name="onlyReports">Only reporting players through the report form is effective.</string>
<string name="wantReportBug">I want to report a bug</string>
<string name="reportBugInForum">In the Lichess Feedback section of the forum</string>
<string name="reportWebsiteIssue">As a Lichess website issue on GitHub</string>
<string name="reportMobileIssue">As a Lichess mobile app issue on GitHub</string>
<string name="reportBugInDiscord">In the Lichess Discord server</string>
<string name="reportBugInForum">In the DeepcrayonFish Feedback section of the forum</string>
<string name="reportWebsiteIssue">As a DeepcrayonFish website issue on GitHub</string>
<string name="reportMobileIssue">As a DeepcrayonFish mobile app issue on GitHub</string>
<string name="reportBugInDiscord">In the DeepcrayonFish Discord server</string>
<string name="howToReportBug">Please describe what the bug looks like, what you expected to happen instead, and the steps to reproduce the bug.</string>
<string name="illegalPawnCapture">Illegal pawn capture</string>
<string name="calledEnPassant">It is called "en passant" and is one of the rules of chess.</string>
@ -64,13 +64,13 @@
<string name="doNotDeny">Do not deny having cheated. If you want to be allowed to create a new account, just admit to what you did, and show that you understood that it was a mistake.</string>
<string name="otherRestriction">Other restriction</string>
<string name="collaboration">Collaboration, legal, commercial</string>
<string name="monetizing">Monetising Lichess</string>
<string name="buyingLichess">Buying Lichess</string>
<string name="authorizationToUse">Authorisation to use Lichess</string>
<string name="welcomeToUse">You are welcome to use Lichess for your activity, even commercial.</string>
<string name="videosAndBooks">You can show it in your videos, and you can print screenshots of Lichess in your books.</string>
<string name="monetizing">Monetising DeepcrayonFish</string>
<string name="buyingDeepcrayonFish">Buying DeepcrayonFish</string>
<string name="authorizationToUse">Authorisation to use DeepcrayonFish</string>
<string name="welcomeToUse">You are welcome to use DeepcrayonFish for your activity, even commercial.</string>
<string name="videosAndBooks">You can show it in your videos, and you can print screenshots of DeepcrayonFish in your books.</string>
<string name="creditAppreciated">Credit is appreciated but not required.</string>
<string name="noneOfTheAbove">None of the above</string>
<string name="sendEmailAt">Send us an email at %s.</string>
<string name="explainYourRequest">Please explain your request clearly and thoroughly. State your Lichess username, and any information that could help us help you.</string>
<string name="explainYourRequest">Please explain your request clearly and thoroughly. State your DeepcrayonFish username, and any information that could help us help you.</string>
</resources>

View File

@ -1,21 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="emailConfirm_subject">Confirm your lichess.org account, %s</string>
<string name="emailConfirm_click" comment="emailConfirm_click&#10;&#10;Part of the confirmation email upon registering for a Lichess account.&#10;&#10;The unique reset link is presented just after this string.">Click the link to enable your Lichess account:</string>
<string name="emailConfirm_ignore">If you did not register with Lichess you can safely ignore this message.</string>
<string name="passwordReset_subject">Reset your lichess.org password, %s</string>
<string name="emailConfirm_subject">Confirm your deepcrayon.fish account, %s</string>
<string name="emailConfirm_click" comment="emailConfirm_click&#10;&#10;Part of the confirmation email upon registering for a DeepcrayonFish account.&#10;&#10;The unique reset link is presented just after this string.">Click the link to enable your DeepcrayonFish account:</string>
<string name="emailConfirm_ignore">If you did not register with DeepcrayonFish you can safely ignore this message.</string>
<string name="passwordReset_subject">Reset your deepcrayon.fish password, %s</string>
<string name="passwordReset_intro">We received a request to reset the password for your account.</string>
<string name="passwordReset_clickOrIgnore">If you made this request, click the link below. If not, you can ignore this email.</string>
<string name="emailChange_subject">Confirm new email address, %s</string>
<string name="emailChange_intro">You have requested to change your email address.</string>
<string name="emailChange_click">To confirm you have access to this email, please click the link below:</string>
<string name="welcome_subject">Welcome to lichess.org, %s</string>
<string name="welcome_text">You have successfully created your account on https://lichess.org.
<string name="welcome_subject">Welcome to deepcrayon.fish, %s</string>
<string name="welcome_text">You have successfully created your account on https://deepcrayon.fish.
Here is your profile page: %1$s. You can personalise it on %2$s.
Have fun, and may your pieces always find their way to your opponent's king!</string>
<string name="logInToLichess">Log in to lichess.org, %s</string>
<string name="logInToDeepcrayonFish">Log in to deepcrayon.fish, %s</string>
<string name="common_orPaste">(Clicking not working? Try pasting it into your browser!)</string>
<string name="common_note">This is a service email related to your use of %s.</string>
<string name="common_contact">To contact us, please use %s.</string>

View File

@ -2,20 +2,20 @@
<resources>
<string name="faqAbbreviation">FAQ</string>
<string name="frequentlyAskedQuestions">Frequently Asked Questions</string>
<string name="whyIsLichessCalledLichess">Why is Lichess called Lichess?</string>
<string name="lichessCombinationLiveLightLibrePronounced">Lichess is a combination of live/light/libre and chess. It is pronounced %1$s.</string>
<string name="whyIsDeepcrayonFishCalledDeepcrayonFish">Why is DeepcrayonFish called DeepcrayonFish?</string>
<string name="lichessCombinationLiveLightLibrePronounced">DeepcrayonFish is a combination of live/light/libre and chess. It is pronounced %1$s.</string>
<string name="leechess">lee-chess</string>
<string name="hearItPronouncedBySpecialist">Hear it pronounced by a specialist.</string>
<string name="whyLiveLightLibre">Live, because games are played and watched in real-time 24/7; light and libre for the fact that Lichess is open-source and unencumbered by proprietary junk that plagues other websites.</string>
<string name="whyIsLilaCalledLila">Similarly, the source code for Lichess, %1$s, stands for li[chess in sca]la, seeing as the bulk of Lichess is written in %2$s, an intuitive programming language.</string>
<string name="howCanIContributeToLichess">How can I contribute to Lichess?</string>
<string name="lichessPoweredByDonationsAndVolunteers">Lichess is powered by donations from patrons and the efforts of a team of volunteers.</string>
<string name="findMoreAndSeeHowHelp">You can find out more about %1$s (including a %2$s). If you want to help Lichess by volunteering your time and skills, there are many %3$s.</string>
<string name="whyLiveLightLibre">Live, because games are played and watched in real-time 24/7; light and libre for the fact that DeepcrayonFish is open-source and unencumbered by proprietary junk that plagues other websites.</string>
<string name="whyIsLilaCalledLila">Similarly, the source code for DeepcrayonFish, %1$s, stands for li[chess in sca]la, seeing as the bulk of DeepcrayonFish is written in %2$s, an intuitive programming language.</string>
<string name="howCanIContributeToDeepcrayonFish">How can I contribute to DeepcrayonFish?</string>
<string name="lichessPoweredByDonationsAndVolunteers">DeepcrayonFish is powered by donations from patrons and the efforts of a team of volunteers.</string>
<string name="findMoreAndSeeHowHelp">You can find out more about %1$s (including a %2$s). If you want to help DeepcrayonFish by volunteering your time and skills, there are many %3$s.</string>
<string name="beingAPatron">being a patron</string>
<string name="breakdownOfOurCosts">breakdown of our costs</string>
<string name="otherWaysToHelp">other ways to help</string>
<string name="areThereWebsitesBasedOnLichess">Are there websites based on Lichess?</string>
<string name="yesLichessInspiredOtherOpenSourceWebsites">Yes. Lichess has indeed inspired other open-source sites that use our %1$s, %2$s, or %3$s.</string>
<string name="areThereWebsitesBasedOnDeepcrayonFish">Are there websites based on DeepcrayonFish?</string>
<string name="yesDeepcrayonFishInspiredOtherOpenSourceWebsites">Yes. DeepcrayonFish has indeed inspired other open-source sites that use our %1$s, %2$s, or %3$s.</string>
<string name="fairPlay">Fair Play</string>
<string name="whenAmIEligibleRatinRefund">When am I eligible for the automatic rating refund from cheaters?</string>
<string name="ratingRefundExplanation">One minute after a player is marked, their 40 latest rated games in the last 3 days are taken. If you are their opponent in those games, you lost rating (because of a loss or a draw), and your rating was not provisional, you get a rating refund. The refund is capped based on your peak rating and your rating progress after the game.
@ -25,16 +25,16 @@
<string name="howCanIBecomeModerator">How can I become a moderator?</string>
<string name="youCannotApply">Its not possible to apply to become a moderator. If we see someone who we think would be good as a moderator, we will contact them directly.</string>
<string name="isCorrespondenceDifferent">Is correspondence different from normal chess?</string>
<string name="youCanUseOpeningBookNoEngine">On Lichess, the main difference in rules for correspondence chess is that an opening book is allowed. The use of engines is still prohibited and will result in being flagged for engine assistance. Although ICCF allows engine use in correspondence, Lichess does not.</string>
<string name="youCanUseOpeningBookNoEngine">On DeepcrayonFish, the main difference in rules for correspondence chess is that an opening book is allowed. The use of engines is still prohibited and will result in being flagged for engine assistance. Although ICCF allows engine use in correspondence, DeepcrayonFish does not.</string>
<string name="gameplay">Gameplay</string>
<string name="howBulletBlitzEtcDecided">How are Bullet, Blitz and other time controls decided?</string>
<string name="basedOnGameDuration">Lichess time controls are based on estimated game duration = %1$s.
<string name="basedOnGameDuration">DeepcrayonFish time controls are based on estimated game duration = %1$s.
For instance, the estimated duration of a 5+3 game is 5 × 60 + 40 × 3 = 420 seconds.</string>
<string name="durationFormula">(clock initial time in seconds) + 40 × (clock increment)</string>
<string name="inferiorThanXsEqualYtimeControl">≤ %1$ss = %2$s</string>
<string name="superiorThanXsEqualYtimeControl">≥ %1$ss = %2$s</string>
<string name="whatVariantsCanIplay">What variants can I play on Lichess?</string>
<string name="lichessSupportChessAnd">Lichess supports standard chess and %1$s.</string>
<string name="whatVariantsCanIplay">What variants can I play on DeepcrayonFish?</string>
<string name="lichessSupportChessAnd">DeepcrayonFish supports standard chess and %1$s.</string>
<string name="eightVariants">8 chess variants</string>
<string name="whatIsACPL">What is the average centipawn loss (ACPL)?</string>
<string name="acplExplanation">The centipawn is the unit of measure used in chess as representation of the advantage. A centipawn is equal to 1/100th of a pawn. Therefore 100 centipawns = 1 pawn. These values play no formal role in the game but are useful to players, and essential in computer chess, for evaluating positions.
@ -43,7 +43,7 @@ The top computer move will lose zero centipawns, but lesser moves will result in
This value can be used as an indicator of the quality of play. The fewer centipawns one loses per move, the stronger the play.
The computer analysis on Lichess is powered by Stockfish.</string>
The computer analysis on DeepcrayonFish is powered by Stockfish.</string>
<string name="insufficientMaterial">Losing on time, drawing and insufficient material</string>
<string name="lichessFollowFIDErules">In the event of one player running out of time, that player will usually lose the game. However, the game is drawn if the position is such that the opponent cannot checkmate the player's king by any possible series of legal moves (%1$s).
@ -60,31 +60,31 @@ It is described in section 3.7 (d) of the %2$s:
See the %3$s on this move for some practice with it.</string>
<string name="goodIntroduction">good introduction</string>
<string name="lichessTraining">Lichess training</string>
<string name="lichessTraining">DeepcrayonFish training</string>
<string name="threefoldRepetition">Threefold repetition</string>
<string name="threefoldRepetitionExplanation">If a position occurs three times, players can claim a draw by %1$s. Lichess implements the official FIDE rules, as described in Article 9.2 (d) of the %2$s.</string>
<string name="threefoldRepetitionExplanation">If a position occurs three times, players can claim a draw by %1$s. DeepcrayonFish implements the official FIDE rules, as described in Article 9.2 (d) of the %2$s.</string>
<string name="threefoldRepetitionLowerCase">threefold repetition</string>
<string name="notRepeatedMoves">We did not repeat moves. Why was the game still drawn by repetition?</string>
<string name="repeatedPositionsThatMatters">Threefold repetition is about repeated %1$s, not moves. Repetition does not have to occur consecutively.</string>
<string name="positions">positions</string>
<string name="weRepeatedthreeTimesPosButNoDraw">We repeated a position three times. Why was the game not drawn?</string>
<string name="threeFoldHasToBeClaimed">Repetition needs to be claimed by one of the players. You can do so by pressing the button that is shown, or by offering a draw before your final repeating move, it won't matter if your opponent rejects the draw offer, the threefold repetition draw will be claimed anyway. You can also %1$s Lichess to automatically claim repetitions for you. Additionally, fivefold repetition always immediately ends the game.</string>
<string name="threeFoldHasToBeClaimed">Repetition needs to be claimed by one of the players. You can do so by pressing the button that is shown, or by offering a draw before your final repeating move, it won't matter if your opponent rejects the draw offer, the threefold repetition draw will be claimed anyway. You can also %1$s DeepcrayonFish to automatically claim repetitions for you. Additionally, fivefold repetition always immediately ends the game.</string>
<string name="configure">configure</string>
<string name="accounts">Accounts</string>
<string name="titlesAvailableOnLichess">What titles are there on Lichess?</string>
<string name="lichessRecognizeAllOTBtitles">Lichess recognises all FIDE titles gained from OTB (over the board) play, as well as %1$s. Here is a list of FIDE titles:</string>
<string name="titlesAvailableOnDeepcrayonFish">What titles are there on DeepcrayonFish?</string>
<string name="lichessRecognizeAllOTBtitles">DeepcrayonFish recognises all FIDE titles gained from OTB (over the board) play, as well as %1$s. Here is a list of FIDE titles:</string>
<string name="showYourTitle">If you have an OTB title, you can apply to have this displayed on your account by completing the %1$s, including a clear image of an identifying document/card and a selfie of you holding the document/card.
Verifying as a titled player on Lichess gives access to play in the Titled Arena events.
Verifying as a titled player on DeepcrayonFish gives access to play in the Titled Arena events.
Finally there is an honorary %2$s title.</string>
<string name="asWellAsManyNMtitles">many national master titles</string>
<string name="verificationForm">verification form</string>
<string name="canIbecomeLM">Can I get the Lichess Master (LM) title?</string>
<string name="canIbecomeLM">Can I get the DeepcrayonFish Master (LM) title?</string>
<string name="noUpperCaseDot">No.</string>
<string name="lMtitleComesToYouDoNotRequestIt">This honorific title is unofficial and only exists on Lichess.
<string name="lMtitleComesToYouDoNotRequestIt">This honorific title is unofficial and only exists on DeepcrayonFish.
We rarely award it to highly notable players who are good citizens of Lichess, at our discretion. You don't get the LM title, the LM title gets to you. If you qualify, you will get a message from us regarding it and the choice to accept or decline.
We rarely award it to highly notable players who are good citizens of DeepcrayonFish, at our discretion. You don't get the LM title, the LM title gets to you. If you qualify, you will get a message from us regarding it and the choice to accept or decline.
Do not ask for the LM title.</string>
<string name="whatUsernameCanIchoose">What can my username be?</string>
@ -93,13 +93,13 @@ Do not ask for the LM title.</string>
<string name="canIChangeMyUsername">Can I change my username?</string>
<string name="usernamesCannotBeChanged">No, usernames cannot be changed for technical and practical reasons. Usernames are materialized in too many places: databases, exports, logs, and people's minds. You can adjust the capitalization once.</string>
<string name="uniqueTrophies">Unique trophies</string>
<string name="ownerUniqueTrophies">That trophy is unique in the history of Lichess, nobody other than %1$s will ever have it.</string>
<string name="ownerUniqueTrophies">That trophy is unique in the history of DeepcrayonFish, nobody other than %1$s will ever have it.</string>
<string name="wayOfBerserkExplanation">To get it, hiimgosu challenged himself to berserk and win all games of %s.</string>
<string name="aHourlyBulletTournament">an hourly Bullet tournament</string>
<string name="goldenZeeExplanation">ZugAddict was streaming and for the last 2 hours he had been trying to defeat A.I. level 8 in a 1+0 game, without success. Thibault told him that if he successfully did it on stream, he'd get a unique trophy. One hour later, he smashed Stockfish, and the promise was honoured.</string>
<string name="lichessRatings">Lichess ratings</string>
<string name="whichRatingSystemUsedByLichess">What rating system does Lichess use?</string>
<string name="ratingSystemUsedByLichess">Ratings are calculated using the Glicko-2 rating method developed by Mark Glickman. This is a very popular rating method, and is used by a significant number of chess organisations (FIDE being a notable counter-example, as they still use the dated Elo rating system).
<string name="lichessRatings">DeepcrayonFish ratings</string>
<string name="whichRatingSystemUsedByDeepcrayonFish">What rating system does DeepcrayonFish use?</string>
<string name="ratingSystemUsedByDeepcrayonFish">Ratings are calculated using the Glicko-2 rating method developed by Mark Glickman. This is a very popular rating method, and is used by a significant number of chess organisations (FIDE being a notable counter-example, as they still use the dated Elo rating system).
Fundamentally, Glicko ratings use "confidence intervals" when calculating and representing your rating. When you first start using the site, your rating starts at 1500 ± 1000. The 1500 represents your rating, and the 1000 represents the confidence interval.
@ -128,13 +128,13 @@ It's best to think of ratings as "relative" figures (as opposed to "absolute" fi
<string name="enableZenMode">Enable Zen-mode in the %1$s, or by pressing %2$s during a game.</string>
<string name="displayPreferences">display preferences</string>
<string name="connexionLostCanIGetMyRatingBack">I lost a game due to lag/disconnection. Can I get my rating points back?</string>
<string name="weCannotDoThatEvenIfItIsServerSideButThatsRare">Unfortunately, we cannot give back rating points for games lost due to lag or disconnection, regardless of whether the problem was at your end or our end. The latter is very rare though. Also note that when Lichess restarts and you lose on time because of that, we abort the game to prevent an unfair loss.</string>
<string name="weCannotDoThatEvenIfItIsServerSideButThatsRare">Unfortunately, we cannot give back rating points for games lost due to lag or disconnection, regardless of whether the problem was at your end or our end. The latter is very rare though. Also note that when DeepcrayonFish restarts and you lose on time because of that, we abort the game to prevent an unfair loss.</string>
<string name="howToThreeDots">How to...</string>
<string name="enableDisableNotificationPopUps">Enable or disable notification popups?</string>
<string name="viewSiteInformationPopUp">View site information popup</string>
<string name="lichessCanOptionnalySendPopUps">Lichess can optionally send popup notifications, for example when it is your turn or you received a private message.
<string name="lichessCanOptionnalySendPopUps">DeepcrayonFish can optionally send popup notifications, for example when it is your turn or you received a private message.
Click the lock icon next to the lichess.org address in the URL bar of your browser.
Click the lock icon next to the deepcrayon.fish address in the URL bar of your browser.
Then select whether to allow or block notifications from Lichess.</string>
Then select whether to allow or block notifications from DeepcrayonFish.</string>
</resources>

View File

@ -1,16 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="isLichessLagging">Is Lichess lagging?</string>
<string name="isDeepcrayonFishLagging">Is DeepcrayonFish lagging?</string>
<string name="measurementInProgressThreeDot">Measurements in progress...</string>
<string name="noAndYourNetworkIsGood">No. And your network is good.</string>
<string name="noAndYourNetworkIsBad" comment="noAndYourNetworkIsBad&#10;&#10;The system checks the network lag and replies in response to the question &quot;Is Lichess lagging?&quot;&#10;In this case, it's the user's network connection that is making the game lag.">No. And your network is bad.</string>
<string name="noAndYourNetworkIsBad" comment="noAndYourNetworkIsBad&#10;&#10;The system checks the network lag and replies in response to the question &quot;Is DeepcrayonFish lagging?&quot;&#10;In this case, it's the user's network connection that is making the game lag.">No. And your network is bad.</string>
<string name="yesItWillBeFixedSoon">Yes. It will be fixed soon!</string>
<string name="andNowTheLongAnswerLagComposedOfTwoValues">And now, the long answer! Game lag is composed of two unrelated values (lower is better):</string>
<string name="lichessServerLatency">Lichess server latency</string>
<string name="lichessServerLatencyExplanation">The time it takes to process a move on the server. It's the same for everybody, and only depends on the servers load. The more players and the higher it gets, but Lichess developers do their best to keep it low. It rarely exceeds 10ms.</string>
<string name="networkBetweenLichessAndYou">Network between Lichess and you</string>
<string name="networkBetweenLichessAndYouExplanation">The time it takes to send a move from your computer to Lichess server, and get the response back. It's specific to your distance to Lichess (France), and to the quality of your Internet connection. Lichess developers cannot fix your wifi or make light go faster.</string>
<string name="lichessServerLatency">DeepcrayonFish server latency</string>
<string name="lichessServerLatencyExplanation">The time it takes to process a move on the server. It's the same for everybody, and only depends on the servers load. The more players and the higher it gets, but DeepcrayonFish developers do their best to keep it low. It rarely exceeds 10ms.</string>
<string name="networkBetweenDeepcrayonFishAndYou">Network between DeepcrayonFish and you</string>
<string name="networkBetweenDeepcrayonFishAndYouExplanation">The time it takes to send a move from your computer to DeepcrayonFish server, and get the response back. It's specific to your distance to DeepcrayonFish (France), and to the quality of your Internet connection. DeepcrayonFish developers cannot fix your wifi or make light go faster.</string>
<string name="youCanFindTheseValuesAtAnyTimeByClickingOnYourUsername">You can find both these values at any time, by clicking your username in the top bar.</string>
<string name="lagCompensation">Lag compensation</string>
<string name="lagCompensationExplanation">Lichess compensates network lag. This includes sustained lag and occasional lag spikes. There are limits and heuristics based on time control and the compensated lag so far, so that the result should feel reasonable for both players. As a result, having a higher network lag than your opponent is not a handicap!</string>
<string name="lagCompensationExplanation">DeepcrayonFish compensates network lag. This includes sustained lag and occasional lag spikes. There are limits and heuristics based on time control and the compensated lag so far, so that the result should feel reasonable for both players. As a result, having a higher network lag than your opponent is not a handicap!</string>
</resources>

View File

@ -211,7 +211,7 @@ in two moves!</string>
<string name="whatNext">What next?</string>
<string name="youKnowHowToPlayChess">You know how to play chess, congratulations! Do you want to become a stronger player?</string>
<string name="register">Register</string>
<string name="getAFreeLichessAccount">Get a free Lichess account</string>
<string name="getAFreeDeepcrayonFishAccount">Get a free DeepcrayonFish account</string>
<string name="practice">Practise</string>
<string name="learnCommonChessPositions">Learn common chess positions</string>
<string name="puzzles">Puzzles</string>

View File

@ -2,13 +2,13 @@
<resources>
<string name="donate">Donate</string>
<string name="donateAsX">Donate as %s</string>
<string name="lichessPatron">Lichess Patron</string>
<string name="lichessPatron">DeepcrayonFish Patron</string>
<string name="freeAccount">Free account</string>
<string name="becomePatron">Become a Lichess Patron</string>
<string name="xBecamePatron">%s became a Lichess Patron</string>
<string name="becomePatron">Become a DeepcrayonFish Patron</string>
<string name="xBecamePatron">%s became a DeepcrayonFish Patron</string>
<plurals name="xIsPatronForNbMonths">
<item quantity="one">%1$s is a Lichess Patron for %2$s month</item>
<item quantity="other">%1$s is a Lichess Patron for %2$s months</item>
<item quantity="one">%1$s is a DeepcrayonFish Patron for %2$s month</item>
<item quantity="other">%1$s is a DeepcrayonFish Patron for %2$s months</item>
</plurals>
<string name="newPatrons">New Patrons</string>
<string name="freeChess">Free chess for everyone, forever!</string>
@ -18,10 +18,10 @@
<string name="patronUntil">You have a Patron account until %s.</string>
<string name="ifNotRenewed">If not renewed, you will then be downgraded to free.</string>
<string name="weAreNonProfit">We are a nonprofit association because we believe everyone should have access to a free, world-class chess platform.</string>
<string name="weRelyOnSupport">We rely on support from people like you to make it possible. If you enjoy using Lichess, please consider supporting us by donating and becoming a Patron!</string>
<string name="weRelyOnSupport">We rely on support from people like you to make it possible. If you enjoy using DeepcrayonFish, please consider supporting us by donating and becoming a Patron!</string>
<string name="lifetime">Lifetime</string>
<string name="payLifetimeOnce">Pay %s once. Be a Lichess Patron forever!</string>
<string name="lifetimePatron">Lifetime Lichess Patron</string>
<string name="payLifetimeOnce">Pay %s once. Be a DeepcrayonFish Patron forever!</string>
<string name="lifetimePatron">Lifetime DeepcrayonFish Patron</string>
<string name="monthly">Monthly</string>
<string name="recurringBilling">Recurring billing, renewing your Patron wings every month.</string>
<string name="onetime">One-time</string>
@ -31,30 +31,30 @@
<string name="withCreditCard">Credit Card</string>
<string name="withPaypal">PayPal</string>
<string name="weAreSmallTeam">We are a small team, so your support makes a huge difference!</string>
<string name="celebratedPatrons">The celebrated Patrons who make Lichess possible</string>
<string name="celebratedPatrons">The celebrated Patrons who make DeepcrayonFish possible</string>
<string name="whereMoneyGoes">Where does the money go?</string>
<string name="serversAndDeveloper">First of all, powerful servers.
Then we pay a full-time developer: %s, the founder of Lichess.
Then we pay a full-time developer: %s, the founder of DeepcrayonFish.
</string>
<string name="costBreakdown">See the detailed cost breakdown</string>
<string name="officialNonProfit">Is Lichess an official non-profit?</string>
<string name="officialNonProfit">Is DeepcrayonFish an official non-profit?</string>
<string name="actOfCreation">Yes, here's the act of creation (in French)</string>
<string name="changeMonthlySupport">Can I change/cancel my monthly support?</string>
<string name="changeOrContact">Yes, at any time, from this page.
Or you can %s.</string>
<string name="contactSupport">contact Lichess support</string>
<string name="contactSupport">contact DeepcrayonFish support</string>
<string name="otherMethods">Other methods of donation?</string>
<string name="bankTransfers">We also accept bank transfers</string>
<string name="bitcoin">And here's our bitcoin address: %s</string>
<string name="patronFeatures">Are some features reserved to Patrons?</string>
<string name="noPatronFeatures">No, because Lichess is entirely free, forever, and for everyone. That's a promise.
<string name="noPatronFeatures">No, because DeepcrayonFish is entirely free, forever, and for everyone. That's a promise.
However, Patrons get bragging rights with a cool new profile icon.</string>
<string name="featuresComparison">See the detailed feature comparison</string>
<plurals name="patronForMonths">
<item quantity="one">Lichess Patron for one month</item>
<item quantity="other">Lichess Patron for %s months</item>
<item quantity="one">DeepcrayonFish Patron for one month</item>
<item quantity="other">DeepcrayonFish Patron for %s months</item>
</plurals>
<string name="youSupportWith">You support lichess.org with %s per month.</string>
<string name="youSupportWith">You support deepcrayon.fish with %s per month.</string>
<string name="tyvm">Thank you very much for your help. You rock!</string>
<string name="currentStatus">Current status</string>
<string name="nextPayment">Next payment</string>
@ -65,17 +65,17 @@ However, Patrons get bragging rights with a cool new profile icon.</string>
<string name="changeMonthlyAmount">Change the monthly amount (%s)</string>
<string name="cancelSupport">cancel your support</string>
<string name="xOrY">%1$s or %2$s</string>
<string name="decideHowMuch">Decide what Lichess is worth to you:</string>
<string name="decideHowMuch">Decide what DeepcrayonFish is worth to you:</string>
<string name="stopPayments">Withdraw your credit card and stop payments:</string>
<string name="noLongerSupport">No longer support Lichess</string>
<string name="viewOthers">View other Lichess Patrons</string>
<string name="noLongerSupport">No longer support DeepcrayonFish</string>
<string name="viewOthers">View other DeepcrayonFish Patrons</string>
<string name="date">Date</string>
<string name="amount">Amount</string>
<string name="transactionCompleted">Your transaction has been completed, and a receipt for your donation has been emailed to you.</string>
<string name="permanentPatron">You now have a permanent Patron account.</string>
<string name="checkOutProfile">Check out your profile page!</string>
<string name="nowLifetime">You are now a lifetime Lichess Patron!</string>
<string name="nowOneMonth">You are now a Lichess Patron for one month!</string>
<string name="downgradeNextMonth">In one month, you will NOT be charged again, and your Lichess account will revert to a regular account.</string>
<string name="nowLifetime">You are now a lifetime DeepcrayonFish Patron!</string>
<string name="nowOneMonth">You are now a DeepcrayonFish Patron for one month!</string>
<string name="downgradeNextMonth">In one month, you will NOT be charged again, and your DeepcrayonFish account will revert to a regular account.</string>
<string name="changeCurrency">Change currency</string>
</resources>

View File

@ -6,7 +6,7 @@
<string name="notEnoughRatedGames">Not enough rated games have been played to establish a reliable rating.</string>
<string name="progressOverLastXGames">Progression over the last %s games:</string>
<string name="ratingDeviation">Rating deviation: %s.</string>
<string name="ratingDeviationTooltip" comment="ratingDeviationTooltip&#10;&#10;This is a tooltip (appears on mouseover) for the rating deviation. Appears on performance statistics pages such as https://lichess.org/@/thibault/perf/ultraBullet&#10;&#10;As of 2021-05-19, $1%s is set to 110.">Lower value means the rating is more stable. Above %1$s, the rating is considered provisional. To be included in the rankings, this value should be below %2$s (standard chess) or %3$s (variants).</string>
<string name="ratingDeviationTooltip" comment="ratingDeviationTooltip&#10;&#10;This is a tooltip (appears on mouseover) for the rating deviation. Appears on performance statistics pages such as https://deepcrayon.fish/@/thibault/perf/ultraBullet&#10;&#10;As of 2021-05-19, $1%s is set to 110.">Lower value means the rating is more stable. Above %1$s, the rating is considered provisional. To be included in the rankings, this value should be below %2$s (standard chess) or %3$s (variants).</string>
<string name="totalGames">Total games</string>
<string name="ratedGames">Rated games</string>
<string name="tournamentGames">Tournament games</string>

View File

@ -68,7 +68,7 @@
<string name="lookupOfPlayer">Lookup puzzles from a player's games</string>
<string name="fromXGames">Puzzles from %s' games</string>
<string name="searchPuzzles">Search puzzles</string>
<string name="fromMyGamesNone">You have no puzzles in the database, but Lichess still loves you very much.
<string name="fromMyGamesNone">You have no puzzles in the database, but DeepcrayonFish still loves you very much.
Play rapid and classical games to increase your chances of having a puzzle of yours added!</string>
<string name="fromXGamesFound">%1$s puzzles found in %2$s games</string>

View File

@ -282,7 +282,7 @@
<item quantity="one">Give %s second</item>
<item quantity="other">Give %s seconds</item>
</plurals>
<string name="thisAccountViolatedTos">This account violated the Lichess Terms of Service</string>
<string name="thisAccountViolatedTos">This account violated the DeepcrayonFish Terms of Service</string>
<string name="openingExplorerAndTablebase">Opening explorer &amp; tablebase</string>
<string name="takeback">Takeback</string>
<string name="proposeATakeback">Propose a takeback</string>
@ -454,7 +454,7 @@ computer analysis, game chat and shareable URL.</string>
<string name="thankYou">Thank you!</string>
<string name="socialMediaLinks">Social media links</string>
<string name="inlineNotation">Inline notation</string>
<string name="previouslyOnLichessTV">Previously on Lichess TV</string>
<string name="previouslyOnDeepcrayonFishTV">Previously on DeepcrayonFish TV</string>
<string name="onlinePlayers">Online players</string>
<string name="activePlayers">Active players</string>
<string name="bewareTheGameIsRatedButHasNoClock">Beware, the game is rated but has no clock!</string>
@ -610,7 +610,7 @@ computer analysis, game chat and shareable URL.</string>
<string name="simulClockHint">Fischer Clock setup. The more players you take on, the more time you may need.</string>
<string name="simulAddExtraTime">You may add extra time to your clock to help you cope with the simul.</string>
<string name="simulHostExtraTime">Host extra clock time</string>
<string name="lichessTournaments">Lichess tournaments</string>
<string name="lichessTournaments">DeepcrayonFish tournaments</string>
<string name="tournamentFAQ">Arena tournament FAQ</string>
<string name="timeBeforeTournamentStarts">Time before tournament starts</string>
<string name="averageCentipawnLoss">Average centipawn loss</string>
@ -644,8 +644,8 @@ computer analysis, game chat and shareable URL.</string>
<string name="weHaveSentYouAnEmailTo">We've sent an email to %s. Click the link in the email to reset your password.</string>
<string name="byRegisteringYouAgreeToBeBoundByOur">By registering, you agree to the %s.</string>
<string name="readAboutOur">Read about our %s.</string>
<string name="networkLagBetweenYouAndLichess">Network lag between you and Lichess</string>
<string name="timeToProcessAMoveOnLichessServer">Time to process a move on Lichess's server</string>
<string name="networkLagBetweenYouAndDeepcrayonFish">Network lag between you and DeepcrayonFish</string>
<string name="timeToProcessAMoveOnDeepcrayonFishServer">Time to process a move on DeepcrayonFish's server</string>
<string name="downloadAnnotated">Download annotated</string>
<string name="downloadRaw">Download raw</string>
<string name="downloadImported">Download imported</string>
@ -661,14 +661,14 @@ computer analysis, game chat and shareable URL.</string>
<string name="withEverybody">With everybody</string>
<string name="kidMode">Kid mode</string>
<string name="kidModeExplanation">This is about safety. In kid mode, all site communications are disabled. Enable this for your children and school students, to protect them from other internet users.</string>
<string name="inKidModeTheLichessLogoGetsIconX">In kid mode, the Lichess logo gets a %s icon, so you know your kids are safe.</string>
<string name="inKidModeTheDeepcrayonFishLogoGetsIconX">In kid mode, the DeepcrayonFish logo gets a %s icon, so you know your kids are safe.</string>
<string name="enableKidMode">Enable Kid mode</string>
<string name="disableKidMode">Disable Kid mode</string>
<string name="security">Security</string>
<string name="sessions">Sessions</string>
<string name="revokeAllSessions">revoke all sessions</string>
<string name="playChessEverywhere">Play chess everywhere</string>
<string name="asFreeAsLichess">As free as Lichess</string>
<string name="asFreeAsDeepcrayonFish">As free as DeepcrayonFish</string>
<string name="builtForTheLoveOfChessNotMoney">Built for the love of chess, not money</string>
<string name="everybodyGetsAllFeaturesForFree">Everybody gets all features for free</string>
<string name="zeroAdvertisement">Zero advertisement</string>
@ -781,14 +781,14 @@ computer analysis, game chat and shareable URL.</string>
<string name="tryToWin">Try to win (or at least draw) every game you play.</string>
<string name="resignLostGames">Resign lost games (don't let the clock run down).</string>
<string name="temporaryInconvenience">We apologise for the temporary inconvenience,</string>
<string name="wishYouGreatGames">and wish you great games on lichess.org.</string>
<string name="wishYouGreatGames">and wish you great games on deepcrayon.fish.</string>
<string name="thankYouForReading">Thank you for reading!</string>
<string name="lifetimeScore">Lifetime score</string>
<string name="currentMatchScore">Current match score</string>
<string name="agreementAssistance">I agree that I will at no time receive assistance during my games (from a chess computer, book, database or another person).</string>
<string name="agreementNice">I agree that I will always be respectful to other players.</string>
<string name="agreementAccount">I agree that I will not create multiple accounts.</string>
<string name="agreementPolicy">I agree that I will follow all Lichess policies.</string>
<string name="agreementPolicy">I agree that I will follow all DeepcrayonFish policies.</string>
<string name="searchOrStartNewDiscussion">Search or start new conversation</string>
<string name="edit">Edit</string>
<string name="rapid">Rapid</string>
@ -825,13 +825,13 @@ computer analysis, game chat and shareable URL.</string>
<string name="resVsX">%1$s vs %2$s</string>
<string name="someoneReviewedYourCoachProfile">Someone reviewed your coach profile.</string>
<string name="newPendingReview">New pending review</string>
<string name="lostAgainstTOSViolator">You lost to someone who violated the Lichess TOS</string>
<string name="lostAgainstTOSViolator">You lost to someone who violated the DeepcrayonFish TOS</string>
<string name="refundXpointsTimeControlY">Refund: %1$s %2$s rating points.</string>
<string name="timeAlmostUp">Time is almost up!</string>
<string name="clickToRevealEmailAddress">[Click to reveal email address]</string>
<string name="download">Download</string>
<string name="welcome">Welcome!</string>
<string name="lichessPatronInfo">Lichess is a charity and entirely free/libre open source software.
<string name="lichessPatronInfo">DeepcrayonFish is a charity and entirely free/libre open source software.
All operating costs, development, and content are funded solely by user donations.</string>
<string name="coachManager">Coach manager</string>
<string name="streamerManager">Streamer manager</string>

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="lichessStreamers">Lichess streamers</string>
<string name="lichessStreamer">Lichess streamer</string>
<string name="lichessStreamers">DeepcrayonFish streamers</string>
<string name="lichessStreamer">DeepcrayonFish streamer</string>
<string name="live">LIVE!</string>
<string name="offline">OFFLINE</string>
<string name="currentlyStreaming">Currently streaming: %s</string>
<string name="lastStream">Last stream %s</string>
<string name="becomeStreamer">Become a Lichess streamer</string>
<string name="becomeStreamer">Become a DeepcrayonFish streamer</string>
<string name="doYouHaveStream">Do you have a Twitch or YouTube channel?</string>
<string name="hereWeGo">Here we go!</string>
<string name="allStreamers">All streamers</string>
@ -15,29 +15,29 @@
<string name="downloadKit">Download streamer kit</string>
<string name="xIsStreaming">%s is streaming</string>
<string name="rules">Streaming rules</string>
<string name="rule1">Include the keyword \"lichess.org\" in your stream title and use the category \"Chess\" when you stream on Lichess.</string>
<string name="rule2">Remove the keyword when you stream non-Lichess stuff.</string>
<string name="rule3">Lichess will detect your stream automatically and enable the following perks:</string>
<string name="rule1">Include the keyword \"deepcrayon.fish\" in your stream title and use the category \"Chess\" when you stream on DeepcrayonFish.</string>
<string name="rule2">Remove the keyword when you stream non-DeepcrayonFish stuff.</string>
<string name="rule3">DeepcrayonFish will detect your stream automatically and enable the following perks:</string>
<string name="rule4" comment="the resulting message is: Read our streaming Fairplay FAQ to ensure a fair play for everyone in your stream">Read our %s to ensure fair play for everyone during your stream.</string>
<string name="streamingFairplayFAQ">streaming Fairplay FAQ</string>
<string name="perks">Benefits of streaming with the keyword</string>
<string name="perk1">Get a flaming streamer icon on your Lichess profile.</string>
<string name="perk1">Get a flaming streamer icon on your DeepcrayonFish profile.</string>
<string name="perk2">Get bumped up to the top of the streamers list.</string>
<string name="perk3">Notify your Lichess followers.</string>
<string name="perk3">Notify your DeepcrayonFish followers.</string>
<string name="perk4">Show your stream in your games, tournaments and studies.</string>
<string name="approved">Your stream is approved.</string>
<string name="pendingReview">Your stream is being reviewed by moderators.</string>
<string name="pleaseFillIn">Please fill in your streamer information, and upload a picture.</string>
<string name="whenReady" comment="whenReady&#10;&#10;%s is &quot;request a moderator review&quot;">When you are ready to be listed as a Lichess streamer, %s</string>
<string name="requestReview" comment="requestReview&#10;&#10;Used in the sense of: &quot;When you are ready to be listed as a Lichess streamer, request a moderator review&quot;">request a moderator review</string>
<string name="whenReady" comment="whenReady&#10;&#10;%s is &quot;request a moderator review&quot;">When you are ready to be listed as a DeepcrayonFish streamer, %s</string>
<string name="requestReview" comment="requestReview&#10;&#10;Used in the sense of: &quot;When you are ready to be listed as a DeepcrayonFish streamer, request a moderator review&quot;">request a moderator review</string>
<string name="anotherLanguage">If your stream is in a language other than English, include the correct language tag (%s), enclosed in square brackets, at the start of your stream title.
As examples, you can include "[RU]" for Russian, "[TR]" for Turkish, "[FR]" for French, etc.
Put this in the stream title in the Twitch or YouTube page, not in the Lichess stream settings.
Put this in the stream title in the Twitch or YouTube page, not in the DeepcrayonFish stream settings.
If your stream is in English, there is no need to include a language tag.</string>
<string name="twitchUsername">Your Twitch username or URL</string>
<string name="optionalOrEmpty">Optional. Leave empty if none</string>
<string name="youtubeChannel">Your YouTube channel ID or URL</string>
<string name="streamerName">Your streamer name on Lichess</string>
<string name="streamerName">Your streamer name on DeepcrayonFish</string>
<plurals name="keepItShort">
<item quantity="one">Keep it short: %s character max</item>
<item quantity="other">Keep it short: %s characters max</item>

View File

@ -65,7 +65,7 @@
<string name="downloadGame">Download game</string>
<string name="studyUrl">Study URL</string>
<string name="currentChapterUrl">Current chapter URL</string>
<string name="youCanPasteThisInTheForumToEmbed">You can paste this in the forum or your Lichess blog to embed</string>
<string name="youCanPasteThisInTheForumToEmbed">You can paste this in the forum or your DeepcrayonFish blog to embed</string>
<string name="startAtInitialPosition">Start at initial position</string>
<string name="startAtX">Start at %s</string>
<string name="embedInYourWebsite">Embed in your website</string>
@ -136,7 +136,7 @@
<string name="interestingMove">Interesting move</string>
<string name="dubiousMove" comment="dubiousMove&#10;A questionable move.">Dubious move</string>
<string name="onlyMove" comment="onlyMove&#10;The only possible move. This is a label that can be placed in a study of a past game. It may not technically be the only move, but the only feasible one.">Only move</string>
<string name="zugzwang" comment="zugzwang&#10;What zugzwang is: https://lichess.org/practice/intermediate-tactics/zugzwang/9cKgYrHb/ybYJ9gNa&#10;&#10;This specific string is a label that can be applied to a position in a study, to indicate one side is in zugzwang.">Zugzwang</string>
<string name="zugzwang" comment="zugzwang&#10;What zugzwang is: https://deepcrayon.fish/practice/intermediate-tactics/zugzwang/9cKgYrHb/ybYJ9gNa&#10;&#10;This specific string is a label that can be applied to a position in a study, to indicate one side is in zugzwang.">Zugzwang</string>
<string name="equalPosition">Equal position</string>
<string name="unclearPosition" comment="unclearPosition&#10;It is unclear who is winning or losing.">Unclear position</string>
<string name="whiteIsSlightlyBetter">White is slightly better</string>
@ -148,11 +148,11 @@
<string name="novelty" comment="novelty&#10;&#10;A move in the opening that has not been played before.&#10;https://en.wikipedia.org/wiki/Glossary_of_chess#theoretical_novelty">Novelty</string>
<string name="development" comment="development&#10;Used in studies - shows that the player made a developing move (e.g. pushing pawns to open their bishops in the opening).">Development</string>
<string name="initiative">Initiative</string>
<string name="attack" comment="attack&#10;A label that can be applied to a position in a Lichess study. Noun.">Attack</string>
<string name="counterplay" comment="counterplay&#10;A label that can be applied to a position in a Lichess study. Noun.&#10;&#10;Generally describes a defending player who is under attack, and makes an attacking move elsewhere.">Counterplay</string>
<string name="timeTrouble" comment="timeTrouble&#10;A label that can be applied to a position in a Lichess study. Noun. Indicates that a player had little time to think and make this move (clock was running low).">Time trouble</string>
<string name="attack" comment="attack&#10;A label that can be applied to a position in a DeepcrayonFish study. Noun.">Attack</string>
<string name="counterplay" comment="counterplay&#10;A label that can be applied to a position in a DeepcrayonFish study. Noun.&#10;&#10;Generally describes a defending player who is under attack, and makes an attacking move elsewhere.">Counterplay</string>
<string name="timeTrouble" comment="timeTrouble&#10;A label that can be applied to a position in a DeepcrayonFish study. Noun. Indicates that a player had little time to think and make this move (clock was running low).">Time trouble</string>
<string name="withCompensation" comment="withCompensation&#10;&#10;Compensation is the short-term positional advantage a player has in exchange for typically material disadvantage. Short term advantages involve initiative and attack.&#10;https://en.wikipedia.org/wiki/Compensation_(chess)">With compensation</string>
<string name="withTheIdea" comment="withTheIdea&#10;A label that can be applied to a position in a Lichess study. Noun.&#10;&#10;Shows that the player was following the theory around an opening, even after the initial opening moves.">With the idea</string>
<string name="withTheIdea" comment="withTheIdea&#10;A label that can be applied to a position in a DeepcrayonFish study. Noun.&#10;&#10;Shows that the player was following the theory around an opening, even after the initial opening moves.">With the idea</string>
<string name="nextChapter">Next chapter</string>
<string name="prevChapter">Previous chapter</string>
<string name="studyActions">Study actions</string>

View File

@ -70,7 +70,7 @@ Late joiners get a single bye, even if they missed several rounds.</string>
The reason is that it has no fair way of dealing with people leaving the tournament early. We cannot expect that all players will play all their games in an online event. It just won't happen, and as a result most Round Robin tournaments would be flawed and unfair, which defeats their very reason to exist.
The closest you can get to Round Robin online is to play a Swiss tournament with a very high number of rounds. Then all possible pairings will be played before the tournament ends.</string>
<string name="otherSystemsQ">What about other tournament systems?</string>
<string name="otherSystemsA">We don't plan to add more tournament systems to Lichess at the moment.</string>
<string name="otherSystemsA">We don't plan to add more tournament systems to DeepcrayonFish at the moment.</string>
<string name="swissDescription">In a Swiss tournament %1$s, each competitor does not necessarily play all other entrants. Competitors meet one-on-one in each round and are paired using a set of rules designed to ensure that each competitor plays opponents with a similar running score, but not the same opponent more than once. The winner is the competitor with the highest aggregate points earned in all rounds. All competitors play in each round unless there is an odd number of players."</string>
<string name="teamOnly">Swiss tournaments can only be created by team leaders, and can only be played by team members.
%1$s to start playing in swiss tournaments.</string>