Andrey Antukh 4b978767ea
🌐 Clean up en translations (#11853)
Drop 277 keys nothing references from en.po (verified against
frontend/src and common/src) and let sync propagate the
deletions to every locale. Clear all 10 fuzzy entries: fill
the 5 empty translations, keep the 4 valid ones, and drop the
duplicated max-quote-reached in favor of max-quota-reached
(the backend code stays, the UI maps it to the quota text).

Recover 22 used-but-missing keys with translations: the 19
shortcuts section/subsection labels plus connected-to,
pixel-grid-color and tokens.add-set. Make the rest
statically visible to rehash instead: :label fns on shortcut
commands, sections and subsections (one debug-only and one
colorpicker-local id exempt); case branches in place of
dm/str-built keys (export modal, text decoration and
transform, undo history with raw-key fallback); hoist
conditionals out of tr calls; pre-translate modal props and
role labels; replace the lone (i18n/tr ...) site with tr.
Turn static :error/code data into eager :error/fn calls in
the common schemas and the auth/password forms. Rename the
two keys containing spaces and point team leave at
max-quota-reached. Backend-driven keys stay dynamic by
design, declared with (tr ...) comments: the five
weak-password details, team and organization notifications.

Tooling: rehash also scans common/src and no longer treats
a missing -l as no locale; new clj-kondo tr-dynamic warning
flags non-literal tr args (lint scripts use --fail-level
error so it never fails CI); tr docstring states the
literal-only rule. Tests cover the shortcut label wiring,
the undo-history fallback and the :error/fn schemas.
Translations memory rewritten to match; es check word list
gains three entries.

Rebased onto develop: adopt the register field-error UX
(the weak-password declarations move onto the :options
code), keep develop's newer keys (connection-error,
account-locked, save-retrying, tokens-source strings) with
fresh references, and reword the shortcuts.cljs prose
comment so rehash does not invent a "literal" key.

AI-assisted-by: muse-spark-1.3-contributor
2026-09-25 11:11:44 +02:00

221 lines
7.0 KiB
Plaintext

msgid ""
msgstr ""
"PO-Revision-Date: 2026-05-27 16:03+0000\n"
"Last-Translator: Anonymous <noreply@weblate.org>\n"
"Language-Team: Finnish "
"<https://hosted.weblate.org/projects/penpot/frontend/fi/>\n"
"Language: fin_FI\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 2026.6.dev0\n"
#: src/app/main/ui/auth/register.cljs:227, src/app/main/ui/static.cljs:191, src/app/main/ui/viewer/login.cljs:119
msgid "auth.already-have-account"
msgstr "Onko sinulla jo käyttäjä?"
#: src/app/main/ui/auth/recovery.cljs:83
msgid "auth.confirm-password"
msgstr "Vahvista salasana"
#: src/app/main/ui/auth/register.cljs:239
msgid "auth.create-demo-account"
msgstr "Luo testikäyttäjä"
#: src/app/main/ui/auth/login.cljs:41
msgid "auth.demo-warning"
msgstr ""
"Tämä on DEMO versio, ÄLÄ KÄYTÄ oikeaan työhön, projektit tullaan määräajoin "
"poistamaan."
#: src/app/main/ui/auth/login.cljs:203, src/app/main/ui/viewer/login.cljs:105
msgid "auth.forgot-password"
msgstr "Unohditko salasanasi?"
#: src/app/main/ui/auth/register.cljs:175, src/app/main/ui/auth/register.cljs:335
msgid "auth.fullname"
msgstr "Koko nimi"
#: src/app/main/ui/auth/register.cljs:231, src/app/main/ui/static.cljs:194, src/app/main/ui/viewer/login.cljs:122
msgid "auth.login-here"
msgstr "Kirjaudu sisään"
#: src/app/main/ui/auth/login.cljs:254
msgid "auth.login-with-github-submit"
msgstr "GitHub"
#: src/app/main/ui/auth/login.cljs:260
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
#: src/app/main/ui/auth/login.cljs:248
msgid "auth.login-with-google-submit"
msgstr "Google"
#: src/app/main/ui/auth/login.cljs:213
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
#: src/app/main/ui/auth/login.cljs:266
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
#: src/app/main/ui/auth/recovery.cljs:76
msgid "auth.new-password"
msgstr "Syötä uusi salasana"
#: src/app/main/ui/auth/recovery.cljs:52
msgid "auth.notifications.password-changed-successfully"
msgstr "Salasanan vaihto onnistui"
#: src/app/main/ui/auth/recovery_request.cljs:50
msgid "auth.notifications.profile-not-verified"
msgstr "Käyttäjäsi ei ole vahvistettu, vahvista se jatkaaksesi."
#: src/app/main/ui/auth/recovery_request.cljs:33
msgid "auth.notifications.recovery-token-sent"
msgstr "Salasanan vaihtoon tarvittava linkki lähetetty sähköpostiisi."
#: src/app/main/ui/auth/verify_token.cljs:85
msgid "auth.notifications.team-invitation-accepted"
msgstr "Ryhmään liittyminen onnistui"
#: src/app/main/ui/auth/login.cljs:193, src/app/main/ui/auth/register.cljs:189
msgid "auth.password"
msgstr "Salasana"
#: src/app/main/ui/auth/register.cljs:188
msgid "auth.password-length-hint"
msgstr "Vähintään 8 merkkiä"
#: src/app/main/ui/auth/register.cljs:272
msgid "auth.privacy-policy"
msgstr "Tietosuojaseloste"
#: src/app/main/ui/auth/recovery_request.cljs:81
msgid "auth.recovery-request-submit"
msgstr "Palauta salasana"
#: src/app/main/ui/auth/recovery.cljs:95, src/app/main/ui/auth/recovery_request.cljs:94
msgid "auth.recovery-request-subtitle"
msgstr "Lähetämme sinulle sähköpostin, jossa lukee ohjeet"
#: src/app/main/ui/auth/recovery.cljs:94, src/app/main/ui/auth/recovery_request.cljs:93
msgid "auth.recovery-request-title"
msgstr "Unohtuiko salasana?"
#: src/app/main/ui/auth/recovery.cljs:86
msgid "auth.recovery-submit"
msgstr "Vaihda salasanasi"
#: src/app/main/ui/auth/login.cljs:310, src/app/main/ui/static.cljs:177, src/app/main/ui/viewer/login.cljs:109
msgid "auth.register"
msgstr "Ei käyttäjää?"
#: src/app/main/ui/auth/login.cljs:314, src/app/main/ui/auth/register.cljs:199, src/app/main/ui/auth/register.cljs:345, src/app/main/ui/static.cljs:181, src/app/main/ui/viewer/login.cljs:112
msgid "auth.register-submit"
msgstr "Luo uusi käyttäjä"
#: src/app/main/ui/auth/register.cljs:218
msgid "auth.register-title"
msgstr "Luo uusi käyttäjä"
#: src/app/main/ui/auth/register.cljs:264, src/app/main/ui/dashboard/sidebar.cljs:542, src/app/main/ui/workspace/main_menu.cljs:210
msgid "auth.terms-of-service"
msgstr "Käyttöehdot"
#: src/app/main/ui/workspace/libraries.cljs:437, src/app/main/ui/workspace/libraries.cljs:838
msgid "common.publish"
msgstr "Julkaise"
#: src/app/main/ui/viewer/share_link.cljs:304, src/app/main/ui/viewer/share_link.cljs:314
msgid "common.share-link.all-users"
msgstr "Kaikki Penpotin käyttäjät"
#: src/app/main/ui/viewer/share_link.cljs:198
msgid "common.share-link.confirm-deletion-link-description"
msgstr ""
"Oletko varma, että haluat poistaa tämän linkin? Sen jälkeen kukaan ei voi "
"käyttää sitä"
#: src/app/main/ui/viewer/share_link.cljs:259, src/app/main/ui/viewer/share_link.cljs:289
msgid "common.share-link.current-tag"
msgstr "(nykyinen)"
#: src/app/main/ui/viewer/share_link.cljs:207, src/app/main/ui/viewer/share_link.cljs:214
msgid "common.share-link.destroy-link"
msgstr "Poista linkki"
#: src/app/main/ui/viewer/share_link.cljs:221
msgid "common.share-link.get-link"
msgstr "Hanki linkki"
#: src/app/main/ui/viewer/share_link.cljs:137
msgid "common.share-link.link-copied-success"
msgstr "Linkin kopiointi onnistui"
#: src/app/main/ui/viewer/share_link.cljs:231
msgid "common.share-link.manage-ops"
msgstr "Muokkaa käyttöoikeuksia"
#: src/app/main/ui/viewer/share_link.cljs:277
msgid "common.share-link.page-shared"
msgid_plural "common.share-link.page-shared"
msgstr[0] "Yksi sivu jaettu"
msgstr[1] "%s sivua jaettu"
#: src/app/main/ui/viewer/share_link.cljs:298
msgid "common.share-link.permissions-can-comment"
msgstr "Voi kommentoida"
#: src/app/main/ui/viewer/share_link.cljs:308
msgid "common.share-link.permissions-can-inspect"
msgstr "Voi tarkastella koodia"
#: src/app/main/ui/viewer/share_link.cljs:193
msgid "common.share-link.permissions-hint"
msgstr "Kaikilla linkin saaneilla on käyttöoikeus"
#: src/app/main/ui/viewer/share_link.cljs:241
msgid "common.share-link.permissions-pages"
msgstr "Sivut jaettu"
#: src/app/main/ui/viewer/share_link.cljs:183
msgid "common.share-link.placeholder"
msgstr "Jaettava linkki ilmestyy tähän"
#: src/app/main/ui/viewer/share_link.cljs:303, src/app/main/ui/viewer/share_link.cljs:313
msgid "common.share-link.team-members"
msgstr "Vain ryhmän jäsenet"
#: src/app/main/ui/viewer/share_link.cljs:171
msgid "common.share-link.title"
msgstr "Jaa prototyypit"
#: src/app/main/ui/viewer/share_link.cljs:269
msgid "common.share-link.view-all"
msgstr "Valitse kaikki"
#: src/app/main/ui/workspace/libraries.cljs:432, src/app/main/ui/workspace/libraries.cljs:833
msgid "common.unpublish"
msgstr "Peruuta julkaisu"
#: src/app/main/ui/dashboard/projects.cljs:90
msgid "dasboard.team-hero.management"
msgstr "Ryhmän hallinta"
#: src/app/main/ui/dashboard/projects.cljs:89
msgid "dasboard.team-hero.text"
msgstr ""
"Penpot on tarkoitettu ryhmille. Kutsu jäseniä työstääksenne projekteja "
"yhdessä"
#: src/app/main/ui/dashboard/projects.cljs:87
msgid "dasboard.team-hero.title"
msgstr "Ryhmäydy!"
#: src/app/main/ui/auth/recovery.cljs:47
msgid "errors.invalid-recovery-token"
msgstr "Palautustunnus on virheellinen."