more translation keys + sv "svenska" translation

also changed the training type buttons into blocks to allow longer translations
This commit is contained in:
RocketBabe 2015-01-11 01:01:29 +01:00
parent 5f30c19414
commit e9df858108
26 changed files with 246 additions and 70 deletions

View file

@ -5,6 +5,7 @@ import chess.{ Mode, Speed }
import lila.setup.TimeMode
import lila.api.Context
import lila.tournament.System
import lila.report.Reason
trait SetupHelper { self: I18nHelper =>
@ -14,6 +15,13 @@ trait SetupHelper { self: I18nHelper =>
(TimeMode.Unlimited.id.toString, trans.unlimited.str(), none)
)
def translatedReasonChoices(implicit ctx: Context) = List(
(Reason.Cheat.name, trans.cheat.str()),
(Reason.Insult.name, trans.insult.str()),
(Reason.Troll.name, trans.troll.str()),
(Reason.Other.name, trans.other.str())
)
def translatedModeChoices(implicit ctx: Context) = List(
(Mode.Casual.id.toString, trans.casual.str(), none),
(Mode.Rated.id.toString, trans.rated.str(), none)

View file

@ -10,23 +10,23 @@
<h1 class="lichess_title" data-icon="%"> @trans.preferences()</h1>
<form class="autosubmit" action="@routes.Pref.formApply" method="POST">
<fieldset>
<legend>Game display</legend>
<legend>@trans.gameDisplay()</legend>
<ul>
<li>
<h2>Piece animation</h2>
<h2>@trans.pieceAnimation()</h2>
@base.radios(form("animation"), Pref.Animation.choices)
</li>
<li>
<h2>Material difference</h2>
@base.radios(form("captured"), Seq(0 -> "No", 1 -> "Yes"))
<h2>@trans.materialDifference()</h2>
@base.radios(form("captured"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</li>
<li>
<h2>Board highlights (last move and check)</h2>
@base.radios(form("highlight"), Seq(0 -> "No", 1 -> "Yes"))
@base.radios(form("highlight"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</li>
<li>
<h2>Piece destinations (valid moves and premoves)</h2>
@base.radios(form("destination"), Seq(0 -> "No", 1 -> "Yes"))
@base.radios(form("destination"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</li>
<li>
<h2>Board coordinates (A-H, 1-8)</h2>
@ -47,11 +47,11 @@
</li>
<li>
<h2>Horizontal green progress bars</h2>
@base.radios(form("clockBar"), Seq(0 -> "No", 1 -> "Yes"))
@base.radios(form("clockBar"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</li>
<li>
<h2>Sound when time gets critical</h2>
@base.radios(form("clockSound"), Seq(0 -> "No", 1 -> "Yes"))
@base.radios(form("clockSound"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</li>
</ul>
</fieldset>
@ -60,7 +60,7 @@
<ul>
<li>
<h2>Premoves (playing during opponent turn)</h2>
@base.radios(form("premove"), Seq(0 -> "No", 1 -> "Yes"))
@base.radios(form("premove"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</li>
<li>
<h2>Takebacks (with opponent approval)</h2>
@ -81,7 +81,7 @@
<ul>
<li>
<h2>Let other players follow you</h2>
@base.radios(form("follow"), Seq(0 -> "No", 1 -> "Yes"))
@base.radios(form("follow"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</li>
<li>
<h2>Let other players challenge you</h2>

View file

@ -23,7 +23,7 @@
@trans.clickOnTheBoardToMakeYourMove()
<br /><br />
@defining(netBaseUrl + routes.Round.watcher(captcha.gameId, captcha.white.fold("white", "black"))) { url =>
Help: <a class="hint--bottom" data-hint="View the solution" target="_blank" href="@url">@url</a>
@trans.help(): <a class="hint--bottom" data-hint="View the solution" target="_blank" href="@url">@url</a>
}
<div class="result success" data-icon="E"> @trans.checkmate()</div>
<div class="result failure" data-icon="k"> @trans.notACheckmate()</div>

View file

@ -3,7 +3,7 @@
@if(withNotes) {
<div class="chat_menu">
<a data-panel="messages_container" class="active">@title <input title="@trans.toggleTheChat()" class="toggle_chat" type="checkbox" /></a>
<a data-panel="notes">Notes</a>
<a data-panel="notes">@trans.notes()</a>
</div>
<div id="chat" class="side_box">
} else {
@ -23,7 +23,7 @@
</div>
@if(withNotes) {
<div class="notes">
<textarea placeholder="Type private notes here"></textarea>
<textarea placeholder="@trans.typePrivateNotesHere()"></textarea>
</div>
}
</div>

View file

@ -102,7 +102,7 @@ chessground: Boolean = true)(body: Html)(implicit ctx: Context)
</div>
<a id="reconnecting" onclick="location.reload();" data-icon="B">&nbsp;@trans.reconnecting()</a>
<div id="themepicker">
<a id="themepicker_toggle" class="toggle icon hint--bottom-left" data-hint="Theming" data-url="@routes.Main.themepicker">
<a id="themepicker_toggle" class="toggle icon hint--bottom-left" data-hint="@trans.theming()" data-url="@routes.Main.themepicker">
&nbsp;<span data-icon="v"></span>&nbsp;
</a>
</div>
@ -111,7 +111,7 @@ chessground: Boolean = true)(body: Html)(implicit ctx: Context)
<span data-icon="u">&nbsp;@langName(lang)</span>
</a>
<form action="@routes.I18n.select" method="POST" class="language_links dropdown" data-url="@staticUrl("trans/refs.json")?v=@assetVersion">
<li><a href="@routes.I18n.contribute">Help translate Lichess!</a></li>
<li><a href="@routes.I18n.contribute">@trans.helpTranslateLichess()</a></li>
</form>
</div>
@ctx.me.map { me =>
@ -195,21 +195,21 @@ chessground: Boolean = true)(body: Html)(implicit ctx: Context)
<div id="footer_wrap">
<div class="footer">
<div class="right">
<a href="http://github.com/ornicar/lila" target="_blank">Source Code</a> |
<a href="@routes.Main.developers">Developers</a><br />
<a href="@routes.Page.contact">Contact</a> |
<a href="@routes.Page.thanks">Thanks</a> |
<a href="@routes.Page.tos">ToS</a>
<a href="http://github.com/ornicar/lila" target="_blank">@trans.sourceCode()</a> |
<a href="@routes.Main.developers">@trans.developers()</a><br />
<a href="@routes.Page.contact">@trans.contact()</a> |
<a href="@routes.Page.thanks">@trans.thanks()</a> |
<a href="@routes.Page.tos">@trans.termsOfService()</a>
</div>
<div class="center">
<a href="@routes.Donation.index" class="button">Donate</a>
<a href="@routes.Donation.index" class="button">@trans.donate()</a>
</div>
<a href="@routes.Blog.index()">Blog</a> |
<a href="@routes.QaQuestion.index()" title="Questions &amp; Answers">Q&amp;A</a> |
<a href="@routes.Blog.index()">@trans.blog()</a> |
<a href="@routes.QaQuestion.index()" title="@trans.questionsAndAnswers()">Q&amp;A</a> |
<a href="@routes.Wiki.home" title="@trans.learnMoreAboutLichess()">Wiki</a><br />
<a href="@routes.WorldMap.index" title="Real time world map of chess moves">Map</a> |
<a href="@routes.WorldMap.index" title="@trans.realTimeWorldMapOfChessMoves()">@trans.map()</a> |
<a href="@routes.Monitor.index">Monitor</a> |
<a href="@routes.Page.helpLichess">Help lichess.org</a>
<a href="@routes.Page.helpLichess">@trans.contribute() lichess.org</a>
</div>
</div>
}

View file

@ -29,9 +29,9 @@ active = siteMenu.puzzle.some) {
<div class="box">
<h1>@trans.training()</h1>
<div class="tabs buttonset">
<a href="@routes.Puzzle.home()" class="button">Puzzle</a>
<a href="@routes.Coordinate.home()" class="button active">Coord</a>
<a href="@routes.Opening.home()" class="button">Opening</a>
<a href="@routes.Puzzle.home()" class="button">@trans.puzzles()</a>
<a href="@routes.Coordinate.home()" class="button active">@trans.coordinates()</a>
<a href="@routes.Opening.home()" class="button">@trans.openings()</a>
</div>
@if(ctx.isAuth) {
@scoreOption.map { score =>

View file

@ -2,7 +2,7 @@
@newTopicButton = {
@if(isGrantedWrite(categ.slug)) {
<a href="@routes.ForumTopic.form(categ.slug)" class="action button" data-icon="m"> Create a new topic</a>
<a href="@routes.ForumTopic.form(categ.slug)" class="action button" data-icon="m"> @trans.createANewTopic()</a>
}
}
@ -36,9 +36,9 @@ title = categ.name) {
<thead>
<tr class="thead">
<th></th>
<th class="right">Views</th>
<th class="right">Replies</th>
<th>Last Post</th>
<th class="right">@trans.views()</th>
<th class="right">@trans.replies()</th>
<th>@trans.lastPost()</th>
</tr>
</thead>
<tbody>
@ -49,7 +49,7 @@ title = categ.name) {
<td class="right">@topic.nbReplies.localize</td>
<td class="last_post">
@topic.lastPost.map { post =>
<a href="@routes.ForumTopic.show(categ.slug, topic.slug, topic.lastPage)#@post.number">@momentFromNow(post.createdAt)</a><br />by @Html(authorName(post))
<a href="@routes.ForumTopic.show(categ.slug, topic.slug, topic.lastPage)#@post.number">@momentFromNow(post.createdAt)</a><br />@trans.by() @Html(authorName(post))
}
</td>
</tr>

View file

@ -4,9 +4,9 @@
<thead>
<tr class="thead">
<th></th>
<th class="right">Topics</th>
<th class="right">Posts</th>
<th>Last Post</th>
<th class="right">@trans.topics()</th>
<th class="right">@trans.posts()</th>
<th>@trans.lastPost()</th>
</tr>
</thead>
<tbody>

View file

@ -1,6 +1,6 @@
@(text: Field, author: Field)(implicit ctx: Context)
<label>
<span class="required">Message</span>
<span class="required">@trans.message()</span>
<textarea name="@text.name" id="@text.id">@text.value</textarea>
@errMsg(text)
</label>

View file

@ -26,7 +26,7 @@
@forum.post.formFields(form("post")("text"), form("post")("author"))
@base.captcha(form("post")("move"), form("post")("gameId"), captcha)
@errMsg(form("post"))
<button class="submit button" type="submit" data-icon="E"> Create the topic</button>
<button class="submit button" type="submit" data-icon="E"> @trans.createTheTopic()</button>
<a href="@routes.ForumCateg.show(categ.slug)" style="margin-left:20px">@trans.cancel()</a>
</form>
}

View file

@ -32,7 +32,7 @@ title = topic.name) {
<span class="mod postip">@post.ip</span>
}
@if(isGrantedMod(categ.slug)) {
<a class="mod thin delete button" href="@routes.ForumPost.delete(categ.slug, post.id)" data-icon="q"> Delete</a>
<a class="mod thin delete button" href="@routes.ForumPost.delete(categ.slug, post.id)" data-icon="q"> @trans.delete()</a>
}
</div>
<p class="message">@autoLink(post.text)</p>
@ -47,25 +47,25 @@ title = topic.name) {
}
@if(isGrantedMod(categ.slug)) {
<form class="mod" method="post" action="@routes.ForumTopic.close(categ.slug, topic.slug)">
<button class="button">@topic.closed.fold("Reopen the topic", "Close the topic")</button>
<button class="button">@topic.closed.fold(trans.reopenTheTopic(), trans.closeTheTopic())</button>
</form>
}
<div class="topicReply">
@formWithCaptcha.map {
case (form, captcha) => {
<h2 class="postNewTitle" id="reply">Reply to this topic</h2>
<h2 class="postNewTitle" id="reply">@trans.replyToThisTopic()</h2>
<form class="wide" action="@routes.ForumPost.create(categ.slug, topic.slug, posts.currentPage)#reply" method="POST" novalidate>
@forum.post.formFields(form("text"), form("author"))
@base.captcha(form("move"), form("gameId"), captcha)
@errMsg(form)
<button type="submit" class="submit button" data-icon="E"> Reply</button>
<button type="submit" class="submit button" data-icon="E"> @trans.reply()</button>
<a href="@routes.ForumCateg.show(categ.slug)" style="margin-left:20px">@trans.cancel()</a>
</form>
}
}.getOrElse {
@if(topic.closed) {
<p>This topic is now closed.</p>
<p>@trans.thisTopicIsNowClosed()</p>
} else {
@categ.team.map { teamId =>
@if(!myTeam(teamId)) {

View file

@ -2,7 +2,7 @@
@i18n.layout(
title = "Contribute to translations") {
<h1 class="lichess_title">Help translate Lichess!</h1>
<h1 class="lichess_title">@trans.helpTranslateLichess()</h1>
Lichess is OpenSource and needs contributors to get better.
<br />
@if(ctx.req.flash.get("success").isDefined) {

View file

@ -113,7 +113,7 @@ openGraph = Map(
<div class="user_top">
<div class="undertable_top">
<a class="more hint--bottom" data-hint="@trans.players()" href="@routes.Tournament.home()">@trans.more() »</a>
<span class="title" data-icon="g"> Tournament winners</span>
<span class="title" data-icon="g"> @trans.tournamentWinners()</span>
</div>
<div class="undertable_inner scroll-shadow-hard">
<table>
@ -145,7 +145,7 @@ openGraph = Map(
<div class="blog undertable">
<div class="undertable_top">
<a class="more hint--bottom" data-hint="Blog" href="@routes.Blog.index()">@trans.more() »</a>
<span class="title" data-icon="6"> Latest updates</span>
<span class="title" data-icon="6"> @trans.latestUpdates()</span>
</div>
<div class="undertable_inner">
@lastPost.map { post =>

View file

@ -30,7 +30,10 @@ trans.bestMove,
trans.keepGoing,
trans.victory,
trans.thisMoveGivesYourOpponentTheAdvantage,
trans.analysis
trans.analysis,
trans.puzzles,
trans.coordinates,
trans.openings
)))
);
}

View file

@ -53,7 +53,10 @@ trans.toTrackYourProgress,
trans.signUp,
trans.trainingSignupExplanation,
trans.thisPuzzleIsCorrect,
trans.thisPuzzleIsWrong)))
trans.thisPuzzleIsWrong,
trans.puzzles,
trans.coordinates,
trans.openings)))
);
}
}

View file

@ -2,14 +2,14 @@
@import lila.report.Reason
@title = @{ "Report a user" }
@title = @{ trans.reportAUser.str() }
@site.layout(title = title, moreCss = cssTag("report.css")) {
<div class="content_box" id="report">
<h1>@title</h1>
<form class="create" action="@routes.Report.create()@reqUser.map(u => "?username=" + u.username)" method="post">
<div class="field_to">
<label for="@form("username").id">User</label>
<label for="@form("username").id">@trans.user()</label>
@reqUser.map { user =>
@userLink(user)
<input
@ -29,18 +29,18 @@
}
</div>
<div class="field_reason">
<label for="@form("reason").id">Reason</label>
@base.select(form("reason"), Reason.all.map(r => r.name -> r.name.capitalize), "What's the matter?".some)
<label for="@form("reason").id">@trans.reason()</label>
@base.select(form("reason"), translatedReasonChoices, trans.whatIsIheMatter.str().some)
@errMsg(form("reason"))
</div>
<div class="field_body">
<label for="@form("text").id">Description</label>
<label for="@form("text").id">@trans.description()</label>
<textarea
name="@form("text").name"
required="required"
id="@form("text").id">@form("text").value</textarea>
<p class="help">
Paste the link to the game(s) and explain what is wrong about this user behavior.
@trans.reportDescriptionHelp()
</p>
@errMsg(form("text"))
</div>

View file

@ -16,8 +16,8 @@
@base.select(form("open"), Seq(0 -> trans.aConfirmationIsRequiredToJoin.str(), 1 -> trans.anyoneCanJoin.str()))
</label>
<label>
<span>IRC channel</span>
@base.select(form("irc"), Seq(0 -> "No", 1 -> "Yes"))
<span>@trans.ircChannel()</span>
@base.select(form("irc"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</label>
<label>
<span>@trans.location()</span>
@ -25,7 +25,7 @@
@errMsg(form("location"))
</label>
<label>
<span class="required">Description</span>
<span class="required">@trans.description()</span>
@defining(form("description")) { desc =>
<textarea name="@desc.name" id="@desc.id">@desc.value</textarea>
@errMsg(desc)

View file

@ -9,7 +9,7 @@ currentTab = "form".some) {
<form class="new-team wide" action="@routes.Team.create()" method="POST">
<section class="team-data">
<label>
<span class="required">Name</span>
<span class="required">@trans.name()</span>
@base.input(form("name"))
@errMsg(form("name"))
</label>
@ -18,8 +18,8 @@ currentTab = "form".some) {
@base.select(form("open"), Seq(0 -> trans.aConfirmationIsRequiredToJoin.str(), 1 -> trans.anyoneCanJoin.str()))
</label>
<label>
<span>IRC channel</span>
@base.select(form("irc"), Seq(0 -> "No", 1 -> "Yes"))
<span>@trans.ircChannel()</span>
@base.select(form("irc"), Seq(0 -> trans.no.str(), 1 -> trans.yes.str()))
</label>
<label>
<span>@trans.location()</span>
@ -27,7 +27,7 @@ currentTab = "form".some) {
@errMsg(form("location"))
</label>
<label>
<span class="required">Description</span>
<span class="required">@trans.description()</span>
@defining(form("description")) { desc =>
<textarea name="@desc.name" id="@desc.id">@desc.value</textarea>
@errMsg(desc)

View file

@ -64,7 +64,7 @@
@userTopPerf(bullet, PerfType.Bullet)
@userTopPerf(chess960, PerfType.Chess960)
<div class="user_top">
<h2 class="text" data-icon="g">Tournament winners</h2>
<h2 class="text" data-icon="g">@trans.tournamentWinners()</h2>
<table><tbody>
@tourneyWinners.map { w =>
<tr>

View file

@ -316,3 +316,56 @@ thisMoveGivesYourOpponentTheAdvantage=This move gives your opponent the advantag
openingFailed=Opening failed
openingSolved=Opening solved
recentlyPlayedOpenings=Recently played openings
puzzles=Puzzles
coordinates=Coordinates
openings=Openings
latestUpdates=Latest updates
tournamentWinners=Tournament winners
name=-Name
description=Description
ircChannel=IRC channel
no=No
yes=Yes
help=Help
createANewTopic=Create a new topic
topics=Topics
posts=Posts
lastPost=Last post
views=Views
replies=Replies
replyToThisTopic=Reply to this topic
delete=Delete
reply=Reply
message=Message
createTheTopic=Create the topic
reopenTheTopic=Reopen the topic
closeTheTopic=Close the topic
reportAUser=Report a user
user=User
reason=Reason
whatIsIheMatter=What's the matter?
cheat=Cheat
insult=Insult
troll=Troll
other=Other
reportDescriptionHelp=Paste the link to the game(s) and explain what is wrong about this user behavior.
by=by
thisTopicIsNowClosed=This topic is now closed.
theming=Theming
helpTranslateLichess=Help translate Lichess!
sourceCode=Source Code
developers=Developers
contact=Contact
thanks=Thanks
termsOfService=ToS
donate=Donate
blog=Blog
map=Map
realTimeWorldMapOfChessMoves=Real time world map of chess moves
questionsAndAnswers=Questions & Answers
contribute=Help
notes=Notes
typePrivateNotesHere=Type private notes here
gameDisplay=Game display
pieceAnimation=Piece animation
materialDifference=Material difference

View file

@ -316,3 +316,56 @@ thisMoveGivesYourOpponentTheAdvantage=Detta drag ger din motståndare övertaget
openingFailed=Misslyckad öppning
openingSolved=Öppning löst
recentlyPlayedOpenings=Nyligen spelade öppningar
puzzles=Problemlösningar
coordinates=Koordinater
openings=Öppningar
latestUpdates=Senaste uppdateringarna
tournamentWinners=Turneringsvinnare
name=Namn
description=Beskrivning
ircChannel=IRC-kanal
no=Nej
yes=Ja
help=Hjälp
createANewTopic=Skapa ett nytt ämne
topics=Ämnen
posts=Inlägg
lastPost=Senaste inlägget
views=Visningar
replies=Svar
replyToThisTopic=Svara ämnet
delete=Radera
reply=Svara
message=Meddelande
createTheTopic=Skapa ämnet
reopenTheTopic=Öppna ämnet igen
closeTheTopic=Stäng ämnet
reportAUser=Rapportera en användare
user=Användare
reason=Anledning
whatIsIheMatter=Vad är problemet?
cheat=Fusk
insult=Förolämpning
troll=Troll
other=Överigt
reportDescriptionHelp=Klistra in länken till spelet och förklara vad som är fel med den här användarens beteende.
by=av
thisTopicIsNowClosed=Det här ämnet är nu stängt.
theming=Teman
helpTranslateLichess=Hjälp till att översätta Lichess!
sourceCode=Källkod
developers=Utvecklare
contact=Kontakt
thanks=Tack
termsOfService=Användarvillkor
donate=Donera
blog=Blogg
map=Karta
realTimeWorldMapOfChessMoves=Världskarta över schackdrag i realtid
questionsAndAnswers=Frågor & Svar
contribute=Hjälp
notes=Anteckningar
typePrivateNotesHere=Skriv privata anteckningar här
gameDisplay=Spelutseende
pieceAnimation=Pjäsanimation
materialDifference=Materialskillnad

View file

@ -20,7 +20,7 @@ private[i18n] object Contributors {
"pl" -> List("M3n747", "Kurt Keller (DE)"),
"nl" -> List("Kintaro"),
"vi" -> List("Xiblack"),
"sv" -> List("nizleib", "Kurt Keller (DE)"),
"sv" -> List("nizleib", "Kurt Keller (DE)", "RocketBabe"),
"cs" -> List("Martin", "Claymes"),
"sk" -> List("taiga", "Kurt Keller (DE)"),
"hu" -> List("LTBakemono"),

File diff suppressed because one or more lines are too long

View file

@ -58,6 +58,9 @@ div.training > .side .buttonset {
text-align: center;
margin-top: 2em;
}
div.training > .side .tabs.buttonset a.button {
display: block;
}
div.training > .side .chart_container {
margin-top: 30px;
}

View file

@ -115,13 +115,13 @@ function renderTrainingBox(ctrl) {
m('div.tabs.buttonset', [
m('a.button', {
href: '/training'
}, 'Puzzle'),
}, ctrl.trans('puzzles')),
m('a.button', {
href: '/training/coordinate'
}, 'Coord'),
}, ctrl.trans('coordinates')),
m('a.button.active', {
href: '/training/opening'
}, 'Opening'),
}, ctrl.trans('openings')),
]),
ctrl.data.user ? renderUserInfos(ctrl) : m('div.register', [
m('p', ctrl.trans('toTrackYourProgress')),

View file

@ -37,13 +37,13 @@ function renderTrainingBox(ctrl) {
m('div.tabs.buttonset', [
m('a.button.active', {
href: '/training'
}, 'Puzzle'),
}, ctrl.trans('puzzles')),
m('a.button', {
href: '/training/coordinate'
}, 'Coord'),
}, ctrl.trans('coordinates')),
m('a.button', {
href: '/training/opening'
}, 'Opening')
}, ctrl.trans('openings'))
]),
ctrl.data.user ? renderUserInfos(ctrl) : m('div.register', [
m('p', ctrl.trans('toTrackYourProgress')),