Say it once, and say whose scores are hidden

A copy pass over the Finnish UI. The em-dash aside was doing the work of a
second sentence in ten places, so it is a second sentence now, or gone.

The sealed-score wording was wrong twice over: it promised "pisteet" when
only other people's are hidden, and said "kirjoitat" when the reveal
actually happens on save. Both fixed on the queue, the song page and the
card badge.
This commit is contained in:
Esa Kataja
2026-09-05 12:51:13 +03:00
parent 10ec9d1d6e
commit 00ea7624ca
10 changed files with 17 additions and 22 deletions
+2 -2
View File
@@ -295,7 +295,7 @@ func (a *app) editSong(w http.ResponseWriter, r *http.Request) {
return return
} }
if affected(res) == 0 { if affected(res) == 0 {
a.flash(w, "Kappaletta ei voi enää muokata — sitä on jo arvosteltu.") a.flash(w, "Kappaletta on jo arvosteltu, joten sitä ei voi muokata.")
} else { } else {
a.flash(w, "Tiedot tallennettu.") a.flash(w, "Tiedot tallennettu.")
} }
@@ -319,7 +319,7 @@ func (a *app) deleteSong(w http.ResponseWriter, r *http.Request) {
return return
} }
if affected(res) == 0 { if affected(res) == 0 {
a.flash(w, "Kappaletta ei voi enää poistaa — sitä on jo arvosteltu.") a.flash(w, "Kappaletta on jo arvosteltu, joten sitä ei voi poistaa.")
http.Redirect(w, r, fmt.Sprintf("/songs/%d", id), http.StatusSeeOther) http.Redirect(w, r, fmt.Sprintf("/songs/%d", id), http.StatusSeeOther)
return return
} }
+2 -2
View File
@@ -27,8 +27,8 @@
{{end}} {{end}}
</tbody> </tbody>
</table> </table>
<p class="muted small">Lähetä linkki kaverille — se avaa liittymislomakkeen koodi valmiiksi <p class="muted small">Lähetä linkki kaverille. Koodi on valmiiksi täytettynä.
täytettynä. Lista näyttää käyttämättömät kutsut{{if .Data.SpentCount}}; käytettyjä on Lista näyttää käyttämättömät kutsut{{if .Data.SpentCount}}; käytettyjä on
{{.Data.SpentCount}}{{end}}.</p> {{.Data.SpentCount}}{{end}}.</p>
</div> </div>
</section> </section>
+1 -1
View File
@@ -62,7 +62,7 @@
<footer class="sitefooter"> <footer class="sitefooter">
{{if .Member}} {{if .Member}}
<!-- The server already knows where they were, so the path travels in the link — no JS. --> <!-- The server already knows where they were, so the path travels in the link — no JS. -->
<a href="/report?from={{.Path}}">Ongelmia? Ideoita? Palautetta?</a> · <a href="/report?from={{.Path}}">Anna palautetta</a> ·
{{end}} {{end}}
<span class="slogan">We know good music, baby!</span> <span class="slogan">We know good music, baby!</span>
<span class="copyright">© Kessinen</span> <span class="copyright">© Kessinen</span>
+2 -2
View File
@@ -11,7 +11,7 @@
</div> </div>
<label class="follow"> <label class="follow">
<input type="checkbox" checked> Seuraa kappaletta <input type="checkbox" checked> Seuraa kappaletta
<span class="muted small">— korostus jatkuu, sivu ei vieri</span> <span class="muted small">(sivu ei vieri)</span>
</label> </label>
{{else}} {{else}}
<div class="lyricsbox plain" data-duration="{{.Duration}}" data-song="{{.ID}}"> <div class="lyricsbox plain" data-duration="{{.Duration}}" data-song="{{.ID}}">
@@ -36,7 +36,7 @@
{{define "songcard"}} {{define "songcard"}}
<a class="songcard{{if and (not .Own) (not .Reviewed)}} unreviewed{{end}}" href="/songs/{{.ID}}"> <a class="songcard{{if and (not .Own) (not .Reviewed)}} unreviewed{{end}}" href="/songs/{{.ID}}">
{{if .Average}}<span class="scorebadge">{{score .Average}}</span> {{if .Average}}<span class="scorebadge">{{score .Average}}</span>
{{else if .ReviewCount}}<span class="scorebadge sealed" title="Pisteet paljastuvat kun arvostelet"></span>{{end}} {{else if .ReviewCount}}<span class="scorebadge sealed" title="Muiden pisteet paljastuvat kun tallennat omasi"></span>{{end}}
<span class="title">{{.Title}}</span> <span class="title">{{.Title}}</span>
<span class="artist">{{.Artist}}</span> <span class="artist">{{.Artist}}</span>
<span class="meta"> <span class="meta">
+2 -2
View File
@@ -2,8 +2,8 @@
<h1>Jono</h1> <h1>Jono</h1>
{{if .Data.Items}} {{if .Data.Items}}
<p class="muted">Arvostelemattomat kappaleet, vanhimmasta uusimpaan. Pisteet paljastuvat kun <p class="muted">Arvostelemattomat kappaleet, vanhimmasta uusimpaan. Muiden pisteet paljastuvat
olet kirjoittanut oman arvostelusi.</p> kun tallennat omasi.</p>
<div class="songgrid"> <div class="songgrid">
{{range .Data.Items}}{{template "songcard" .}}{{end}} {{range .Data.Items}}{{template "songcard" .}}{{end}}
</div> </div>
+1 -2
View File
@@ -1,7 +1,6 @@
{{define "content"}} {{define "content"}}
<h1>Palaute</h1> <h1>Palaute</h1>
<p class="muted">Ongelmat, ideat ja kaikki muu palaute samaan paikkaan. Ei kategorioita eikä <p class="muted">Ongelmat, ideat ja kaikki muu palaute samaan paikkaan. Yksi virke riittää.</p>
prioriteetteja — yksi virke riittää.</p>
<form method="post" action="/report" class="stack"> <form method="post" action="/report" class="stack">
<input type="hidden" name="from" value="{{.Data.From}}"> <input type="hidden" name="from" value="{{.Data.From}}">
+2 -2
View File
@@ -81,7 +81,7 @@
<!-- Only when the review strip is not already showing them: while reviewing, the lyrics live in <!-- Only when the review strip is not already showing them: while reviewing, the lyrics live in
the left pane. This panel is for reading afterwards and for the submitter's edits. --> the left pane. This panel is for reading afterwards and for the submitter's edits. -->
<details class="lyrics"> <details class="lyrics">
<summary>Sanoitukset{{if not $s.Lyrics}} <span class="muted small">ei vielä lisätty</span>{{end}}</summary> <summary>Sanoitukset{{if not $s.Lyrics}} <span class="muted small">(ei vielä lisätty)</span>{{end}}</summary>
{{if $s.Lyrics}}<pre class="lyricstext">{{lyricstext $s.Lyrics}}</pre>{{end}} {{if $s.Lyrics}}<pre class="lyricstext">{{lyricstext $s.Lyrics}}</pre>{{end}}
{{if $s.Own}} {{if $s.Own}}
<form method="post" action="/songs/{{$s.ID}}/lyrics" class="stack"> <form method="post" action="/songs/{{$s.ID}}/lyrics" class="stack">
@@ -168,7 +168,7 @@
{{else}} {{else}}
<p class="sealed-note"> <p class="sealed-note">
<span class="sealed" aria-hidden="true"></span> <span class="sealed" aria-hidden="true"></span>
Muiden pisteet ja arvostelut paljastuvat kun kirjoitat omasi. Muiden pisteet paljastuvat kun tallennat omasi.
{{if $s.ReviewCount}}Arvosteluja on {{$s.ReviewCount}}.{{end}} {{if $s.ReviewCount}}Arvosteluja on {{$s.ReviewCount}}.{{end}}
</p> </p>
{{end}} {{end}}
+1 -1
View File
@@ -49,7 +49,7 @@
{{define "content"}} {{define "content"}}
<h1>Tilastot</h1> <h1>Tilastot</h1>
<p class="muted">Kappale pääsee listoille kun sillä on vähintään {{.Data.MinReviews}} arvostelua. <p class="muted">Kappale pääsee listoille kun sillä on vähintään {{.Data.MinReviews}} arvostelua.
Tilastot näkyvät kaikille — täällä pisteitä ei piiloteta.</p> Tilastot näkyvät kaikille.</p>
<div class="boards"> <div class="boards">
{{template "songboard" dict "Title" "Parhaat" "Items" .Data.TopSongs}} {{template "songboard" dict "Title" "Parhaat" "Items" .Data.TopSongs}}
+3 -4
View File
@@ -24,7 +24,7 @@
<!-- Outside the form and attached to it with form=, so one button both submits the metadata <!-- Outside the form and attached to it with form=, so one button both submits the metadata
and publishes. Disabled until the audio has finished converting. --> and publishes. Disabled until the audio has finished converting. -->
<button type="submit" form="meta" {{if not .Ready}}disabled{{end}}>Julkaise</button> <button type="submit" form="meta" {{if not .Ready}}disabled{{end}}>Julkaise</button>
{{if not .Ready}}<p class="muted small">Julkaise aukeaa kun muunnos on valmis.</p>{{end}} {{if not .Ready}}<p class="muted small">Julkaise aukeaa kun lähetys on valmis.</p>{{end}}
{{end}} {{end}}
</div> </div>
{{end}} {{end}}
@@ -45,7 +45,7 @@
hx-post="/submit/{{.ID}}/lyrics" hx-post="/submit/{{.ID}}/lyrics"
hx-include="[name='title'], [name='artist']" hx-include="[name='title'], [name='artist']"
hx-target="#lyricsfield" hx-swap="outerHTML">Hae sanoitukset</button> hx-target="#lyricsfield" hx-swap="outerHTML">Hae sanoitukset</button>
{{if .Found}}<span class="muted small">Löytyi — tarkista ja muokkaa tarvittaessa.</span>{{end}} {{if .Found}}<span class="muted small">Löytyi. Tarkista teksti.</span>{{end}}
{{if .Searched}}{{if not .Found}} {{if .Searched}}{{if not .Found}}
<span class="muted small">Ei löytynyt. Tarkista nimi ja esittäjä tai liitä sanoitukset itse.</span> <span class="muted small">Ei löytynyt. Tarkista nimi ja esittäjä tai liitä sanoitukset itse.</span>
{{end}}{{end}} {{end}}{{end}}
@@ -84,8 +84,7 @@
{{template "saved" ""}} {{template "saved" ""}}
</form> </form>
<p class="muted">Tiedot tallentuvat itsestään kirjoittaessasi. Nimi, esittäjä ja genre tarvitaan <p class="muted">Nimi, esittäjä ja genre tarvitaan ennen julkaisua.</p>
ennen julkaisua.</p>
{{template "submission-status" .Data}} {{template "submission-status" .Data}}
{{end}} {{end}}
+1 -4
View File
@@ -32,13 +32,10 @@
{{end}} {{end}}
</tbody> </tbody>
</table> </table>
<p class="muted small">Valmis lähetys odottaa Julkaise-painallusta — vasta se tuo kappaleen
muiden nähtäville.</p>
</section> </section>
{{end}} {{end}}
<p class="muted">Enintään 50 MB ja 15 minuuttia. Tiedosto muunnetaan Opus-muotoon, ja pääset <p class="muted">Enintään 50 MB ja 15 minuuttia.</p>
kirjoittamaan esittelyn odotellessa. Kappale julkaistaan vasta kun painat Julkaise.</p>
<script> <script>
// The native control can't be relabelled or styled, so it is hidden behind this one — which // The native control can't be relabelled or styled, so it is hidden behind this one — which