translate chess captcha

This commit is contained in:
Thibault Duplessis 2013-05-16 01:10:16 -03:00
parent 6bfe9dd505
commit 2547e6a092
9 changed files with 60 additions and 48 deletions

View file

@ -1,11 +1,9 @@
@(form: Form[_])(implicit ctx: Context)
@auth.layout(title = trans.signIn.str()) {
<div class="content_box small_box">
<div class="content_box">
<div class="signup_box">
<h1 class="lichess_title">@trans.signIn()</h1>
<br />
<br />
<form action="@routes.Auth.authenticate" method="POST">
@form.globalError.map { error =>
<p class="error">@error.message</p>
@ -13,12 +11,15 @@
<ul>
@auth.formFields(form("username"), form("password"))
<li>
<input type="submit" value="@trans.signIn()" class="submit">
<span class="alternative"><a href="@routes.Auth.signup()">@trans.signUp()</a></span>
<input type="submit" value="@trans.signIn()" class="submit button">
</li>
</ul>
<input type="hidden" class="referrer" name="_referrer" value="@currentUrl" />
</form>
</div>
<div class="alternative">
@trans.newToLichess()
<a href="@routes.Auth.signup()" class="button">@trans.signUp()</a>
</div>
</div>
}

View file

@ -5,17 +5,9 @@ title = trans.signUp.str()) {
<div class="content_box small_box">
<div class="signup_box">
<h1 class="lichess_title">@trans.signUp()</h1>
<br />
<br />
<p class="explanation">
@trans.allYouNeedIsAUsernameAndAPassword()
</p>
<p class="explanation">
<em>
It is <strong>not</strong> required to signup. You can play as <strong>anonymous</strong>.<br />
Signup if you want to save your played games and have an Elo ranking.
</em>
</p>
<form action="@routes.Auth.signupPost" method="POST">
<ul>
@auth.formFields(form("username"), form("password"))
@ -24,8 +16,7 @@ title = trans.signUp.str()) {
</li>
@errMsg(form)
<li>
<input type="submit" value="@trans.signUp()" class="submit">
<span class="alternative">@trans.haveAnAccount() <a href="@routes.Auth.login">@trans.signIn()</a></span>
<input type="submit" value="@trans.signUp()" class="submit button">
</li>
</ul>
<input type="hidden" class="referrer" name="_referrer" value="@currentUrl" />

View file

@ -1,23 +1,22 @@
@(move: Field, gameId: Field, captcha: lila.common.Captcha)(implicit ctx: Context)
<input type="hidden" name="@gameId.name" id="@gameId.id" value="@captcha.gameId" />
@defining(captcha.white.fold("white", "black")) { color =>
<div class="checkmateCaptcha clearfix" data-check-url="@routes.Main.captchaCheck(captcha.gameId)">
<div class="checkmateFen">
<div
class="mini_board parse_fen with_keys"
data-color="@color"
data-color="@captcha.white.fold("white", "black")"
data-fen="@captcha.fen"></div>
</div>
<div class="checkmateSection">
<label>
<strong>@color.capitalize plays; checkmate in one!</strong><br />
This is a chess CAPTCHA.<br />
Click on the board to make your move,<br />
and prove you are human.<br /><br />
<div class="result success">@trans.checkmate()!!</div>
<div class="result failure">Not a checkmate <button class="button retry">Retry</button></div>
<strong>@trans.colorPlaysCheckmateInOne(captcha.white.fold(trans.white, trans.black)())</strong><br />
<br />
@trans.thisIsAChessCaptcha()<br />
@trans.clickOnTheBoardToMakeYourMove()
<br /><br />
<div class="result success">@trans.checkmate()</div>
<div class="result failure">@trans.notACheckmate() <button class="button retry">@trans.retry()</button></div>
</label>
<input type="hidden" name="@move.name" id="@move.id" value="" />
</div>
</div>
}

View file

@ -71,6 +71,7 @@ bookmarkedByNbPlayers=Bookmarked by %s players
viewInFullSize=View in full size
logOut=Log out
signIn=Sign in
newToLichess=New to Lichess?
signUp=Sign up
people=People
games=Games
@ -178,3 +179,8 @@ fromPosition=From position
continueFromHere=Continue from here
importGame=Import game
nbImportedGames=%s Imported games
thisIsAChessCaptcha=This is a chess CAPTCHA.
clickOnTheBoardToMakeYourMove=Click on the board to make your move, and prove you are human.
notACheckmate=Not a checkmate
colorPlaysCheckmateInOne=%s plays; checkmate in one
retry=Retry

View file

@ -178,3 +178,8 @@ fromPosition=Depuis une position
continueFromHere=Continuer depuis cette position
importGame=Importer une partie
nbImportedGames=%s Parties importées
thisIsAChessCaptcha=Ceci est un CAPTCHA d'échecs.
clickOnTheBoardToMakeYourMove=Cliquez sur le plateau pour jouer un coup, et prouvez que vous êtes humain.
notACheckmate=Ce n'est pas un échec et mat
colorPlaysCheckmateInOne=%s joue, mat en un coup.
retry=Réessayer

View file

@ -95,6 +95,7 @@ final class I18nKeys(translator: Translator) {
val viewInFullSize = new Key("viewInFullSize")
val logOut = new Key("logOut")
val signIn = new Key("signIn")
val newToLichess = new Key("newToLichess")
val signUp = new Key("signUp")
val people = new Key("people")
val games = new Key("games")
@ -202,6 +203,11 @@ final class I18nKeys(translator: Translator) {
val continueFromHere = new Key("continueFromHere")
val importGame = new Key("importGame")
val nbImportedGames = new Key("nbImportedGames")
val thisIsAChessCaptcha = new Key("thisIsAChessCaptcha")
val clickOnTheBoardToMakeYourMove = new Key("clickOnTheBoardToMakeYourMove")
val notACheckmate = new Key("notACheckmate")
val colorPlaysCheckmateInOne = new Key("colorPlaysCheckmateInOne")
val retry = new Key("retry")
def keys = List(playWithAFriend, inviteAFriendToPlayWithYou, playWithTheMachine, challengeTheArtificialIntelligence, toInviteSomeoneToPlayGiveThisUrl, gameOver, waitingForOpponent, waiting, yourTurn, aiNameLevelAiLevel, level, toggleTheChat, toggleSound, chat, resign, checkmate, stalemate, white, black, createAGame, noGameAvailableRightNowCreateOne, whiteIsVictorious, blackIsVictorious, playWithTheSameOpponentAgain, newOpponent, playWithAnotherOpponent, yourOpponentWantsToPlayANewGameWithYou, joinTheGame, whitePlays, blackPlays, theOtherPlayerHasLeftTheGameYouCanForceResignationOrWaitForHim, makeYourOpponentResign, forceResignation, talkInChat, theFirstPersonToComeOnThisUrlWillPlayWithYou, whiteCreatesTheGame, blackCreatesTheGame, whiteJoinsTheGame, blackJoinsTheGame, whiteResigned, blackResigned, whiteLeftTheGame, blackLeftTheGame, shareThisUrlToLetSpectatorsSeeTheGame, youAreViewingThisGameAsASpectator, replayAndAnalyse, computerAnalysisInProgress, theComputerAnalysisYouRequestedIsNowAvailable, theComputerAnalysisHasFailed, viewTheComputerAnalysis, requestAComputerAnalysis, blunders, mistakes, inaccuracies, viewGameStats, flipBoard, threefoldRepetition, claimADraw, offerDraw, draw, nbConnectedPlayers, talkAboutChessAndDiscussLichessFeaturesInTheForum, seeTheGamesBeingPlayedInRealTime, gamesBeingPlayedRightNow, viewAllNbGames, viewNbCheckmates, nbBookmarks, nbPopularGames, nbAnalysedGames, bookmarkedByNbPlayers, viewInFullSize, logOut, signIn, signUp, people, games, forum, searchInForum, chessPlayers, minutesPerSide, variant, timeControl, start, username, password, haveAnAccount, allYouNeedIsAUsernameAndAPassword, learnMoreAboutLichess, rank, gamesPlayed, declineInvitation, cancel, timeOut, drawOfferSent, drawOfferDeclined, drawOfferAccepted, drawOfferCanceled, yourOpponentOffersADraw, accept, decline, playingRightNow, abortGame, gameAborted, standard, unlimited, mode, casual, rated, thisGameIsRated, rematch, rematchOfferSent, rematchOfferAccepted, rematchOfferCanceled, rematchOfferDeclined, cancelRematchOffer, viewRematch, play, inbox, chatRoom, spectatorRoom, composeMessage, sentMessages, incrementInSeconds, freeOnlineChess, spectators, nbWins, nbLosses, nbDraws, exportGames, color, eloRange, giveNbSeconds, searchAPlayer, whoIsOnline, allPlayers, premoveEnabledClickAnywhereToCancel, thisPlayerUsesChessComputerAssistance, opening, takeback, proposeATakeback, takebackPropositionSent, takebackPropositionDeclined, takebackPropositionAccepted, takebackPropositionCanceled, yourOpponentProposesATakeback, bookmarkThisGame, toggleBackground, advancedSearch, tournament, tournamentPoints, viewTournament, freeOnlineChessGamePlayChessNowInACleanInterfaceNoRegistrationNoAdsNoPluginRequiredPlayChessWithComputerFriendsOrRandomOpponents, teams, nbMembers, allTeams, newTeam, myTeams, noTeamFound, joinTeam, quitTeam, anyoneCanJoin, aConfirmationIsRequiredToJoin, joiningPolicy, teamLeader, teamBestPlayers, teamRecentMembers, searchATeam, averageElo, location, settings, filterGames, reset, apply, leaderboard, pasteTheFenStringHere, pasteThePgnStringHere, fromPosition, continueFromHere, importGame, nbImportedGames)
def keys = List(playWithAFriend, inviteAFriendToPlayWithYou, playWithTheMachine, challengeTheArtificialIntelligence, toInviteSomeoneToPlayGiveThisUrl, gameOver, waitingForOpponent, waiting, yourTurn, aiNameLevelAiLevel, level, toggleTheChat, toggleSound, chat, resign, checkmate, stalemate, white, black, createAGame, noGameAvailableRightNowCreateOne, whiteIsVictorious, blackIsVictorious, playWithTheSameOpponentAgain, newOpponent, playWithAnotherOpponent, yourOpponentWantsToPlayANewGameWithYou, joinTheGame, whitePlays, blackPlays, theOtherPlayerHasLeftTheGameYouCanForceResignationOrWaitForHim, makeYourOpponentResign, forceResignation, talkInChat, theFirstPersonToComeOnThisUrlWillPlayWithYou, whiteCreatesTheGame, blackCreatesTheGame, whiteJoinsTheGame, blackJoinsTheGame, whiteResigned, blackResigned, whiteLeftTheGame, blackLeftTheGame, shareThisUrlToLetSpectatorsSeeTheGame, youAreViewingThisGameAsASpectator, replayAndAnalyse, computerAnalysisInProgress, theComputerAnalysisYouRequestedIsNowAvailable, theComputerAnalysisHasFailed, viewTheComputerAnalysis, requestAComputerAnalysis, blunders, mistakes, inaccuracies, viewGameStats, flipBoard, threefoldRepetition, claimADraw, offerDraw, draw, nbConnectedPlayers, talkAboutChessAndDiscussLichessFeaturesInTheForum, seeTheGamesBeingPlayedInRealTime, gamesBeingPlayedRightNow, viewAllNbGames, viewNbCheckmates, nbBookmarks, nbPopularGames, nbAnalysedGames, bookmarkedByNbPlayers, viewInFullSize, logOut, signIn, newToLichess, signUp, people, games, forum, searchInForum, chessPlayers, minutesPerSide, variant, timeControl, start, username, password, haveAnAccount, allYouNeedIsAUsernameAndAPassword, learnMoreAboutLichess, rank, gamesPlayed, declineInvitation, cancel, timeOut, drawOfferSent, drawOfferDeclined, drawOfferAccepted, drawOfferCanceled, yourOpponentOffersADraw, accept, decline, playingRightNow, abortGame, gameAborted, standard, unlimited, mode, casual, rated, thisGameIsRated, rematch, rematchOfferSent, rematchOfferAccepted, rematchOfferCanceled, rematchOfferDeclined, cancelRematchOffer, viewRematch, play, inbox, chatRoom, spectatorRoom, composeMessage, sentMessages, incrementInSeconds, freeOnlineChess, spectators, nbWins, nbLosses, nbDraws, exportGames, color, eloRange, giveNbSeconds, searchAPlayer, whoIsOnline, allPlayers, premoveEnabledClickAnywhereToCancel, thisPlayerUsesChessComputerAssistance, opening, takeback, proposeATakeback, takebackPropositionSent, takebackPropositionDeclined, takebackPropositionAccepted, takebackPropositionCanceled, yourOpponentProposesATakeback, bookmarkThisGame, toggleBackground, advancedSearch, tournament, tournamentPoints, viewTournament, freeOnlineChessGamePlayChessNowInACleanInterfaceNoRegistrationNoAdsNoPluginRequiredPlayChessWithComputerFriendsOrRandomOpponents, teams, nbMembers, allTeams, newTeam, myTeams, noTeamFound, joinTeam, quitTeam, anyoneCanJoin, aConfirmationIsRequiredToJoin, joiningPolicy, teamLeader, teamBestPlayers, teamRecentMembers, searchATeam, averageElo, location, settings, filterGames, reset, apply, leaderboard, pasteTheFenStringHere, pasteThePgnStringHere, fromPosition, continueFromHere, importGame, nbImportedGames, thisIsAChessCaptcha, clickOnTheBoardToMakeYourMove, notACheckmate, colorPlaysCheckmateInOne, retry)
}

View file

@ -744,6 +744,7 @@ div.checkmateFen div.lmcs.selected {
}
div.checkmateSection {
float: left;
font-size: 0.9em;
}
div.checkmateSection div.result {
display: none;

View file

@ -79,6 +79,7 @@ body.dark #lichess_message tr,
body.dark #lichess_message div.thread_message,
body.dark #lichess_message textarea,
body.dark #lichess_message input,
body.dark .content_box form input,
body.dark div.progressbar,
body.dark form.translation_form div.messages,
body.dark form.translation_form input,

View file

@ -1,17 +1,24 @@
div.signup_box p.explanation {
font-size: 1.2em;
margin-bottom: 1em;
}
div.signup_box p.explanation em {
font-style: italic;
div.content_box {
width: 232px;
padding-bottom: 10px;
position: relative;
}
div.signup_box h1 {
div.signup_box p.explanation {
font-size: 1.2em;
margin-bottom: 2em;
}
div.signup_box .alternative {
font-size: 0.8em;
div.signup_box .lichess_title {
margin-bottom: 1em;
}
div.alternative {
display: block;
position: absolute;
top: 2em;
left: 312px;
width: 300px;
}
.content_box form {
@ -22,34 +29,29 @@ div.signup_box .alternative {
list-style: none;
display: block;
margin: 1em 0 1em 0;
position: relative;
}
.content_box form label {
float: left;
display: block;
width: 150px;
text-align: right;
margin-right: 10px;
margin-top: 2px;
margin-bottom: 2px;
}
.content_box form .username input, .content_box form .password input {
width: 200px;
padding: 0 3px;
border: 1px solid #D4D4D4;
.content_box form input {
font-size: 1.1em;
width: 212px;
padding: 3px 5px;
border: 1px solid #D4D4D4;
}
.content_box form input.button {
width: auto;
}
.content_box form input.submit {
margin-left: 160px;
margin-right: 20px;
padding: 3px 1em;
padding: 7px 1em;
}
/* Errors */
form .error {
margin-left: 160px;
color: red;
}