@(withCeval: Boolean = true, withExplorer: Boolean = true, withForecast: Boolean = false)(implicit ctx: Context) @import play.api.libs.json.Json @safeJson(i18nJsObject( trans.analysis, trans.flipBoard, trans.backToGame, trans.gameAborted, trans.checkmate, trans.whiteResigned, trans.blackResigned, trans.stalemate, trans.whiteLeftTheGame, trans.blackLeftTheGame, trans.draw, trans.timeOut, trans.playingRightNow, trans.whiteIsVictorious, trans.blackIsVictorious, trans.kingInTheCenter, trans.threeChecks, trans.variantEnding, trans.whitePlays, trans.blackPlays, trans.gameOver, trans.importPgn, trans.requestAComputerAnalysis, trans.computerAnalysis, trans.learnFromYourMistakes, trans.averageCentipawnLoss, trans.inaccuracies, trans.mistakes, trans.blunders, trans.goodMove, trans.viewTheSolution, // action menu trans.menu, trans.boardEditor, trans.continueFromHere, trans.playWithTheMachine, trans.playWithAFriend, trans.openStudy, trans.preferences, trans.inlineNotation, trans.replayMode, trans.slow, trans.fast, trans.realtimeReplay, // context menu trans.promoteVariation, trans.makeMainLine, trans.deleteFromHere, // practice (also uses checkmate, draw) trans.practiceWithComputer, trans.goodMove, trans.inaccuracy, trans.mistake, trans.blunder, trans.threefoldRepetition, trans.anotherWasX, trans.bestWasX, trans.youBrowsedAway, trans.resumePractice, trans.whiteWinsGame, trans.blackWinsGame, trans.theGameIsADraw, trans.yourTurn, trans.computerThinking, trans.seeBestMove, trans.hideBestMove, trans.getAHint, trans.evaluatingYourMove ) ++ withCeval.fold(i18nJsObject( // ceval (also uses gameOver) trans.depthX, trans.usingServerAnalysis, trans.loadingEngine, trans.cloudAnalysis, trans.goDeeper, trans.showThreat, trans.inLocalBrowser, trans.toggleLocalEvaluation, // ceval menu trans.computerAnalysis, trans.enable, trans.bestMoveArrow, trans.evaluationGauge, trans.infiniteAnalysis, trans.removesTheDepthLimit, trans.multipleLines, trans.cpus, trans.memory ), Json.obj()) ++ withExplorer.fold(i18nJsObject( // explorer (also uses gameOver, checkmate, stalemate, draw, variantEnding) trans.openingExplorerAndTablebase, trans.openingExplorer, trans.xOpeningExplorer, trans.move, trans.games, trans.variantLoss, trans.variantWin, trans.insufficientMaterial, trans.capture, trans.pawnMove, trans.close, trans.winning, trans.unknown, trans.losing, trans.drawn, trans.timeControl, trans.averageElo, trans.database, trans.recentGames, trans.topGames, trans.whiteDrawBlack, trans.averageRatingX, trans.masterDbExplanation, trans.mateInXHalfMoves, trans.nextCaptureOrPawnMoveInXHalfMoves, trans.noGameFound, trans.maybeIncludeMoreGamesFromThePreferencesMenu, trans.winPreventedBy50MoveRule, trans.lossSavedBy50MoveRule, trans.allSet ), Json.obj()) ++ withForecast.fold(i18nJsObject( // forecast trans.conditionalPremoves, trans.addCurrentVariation, trans.playVariationToCreateConditionalPremoves, trans.noConditionalPremoves, trans.playX, trans.andSaveNbPremoveLines ), Json.obj()))