Add full set of locale translations

Generated using Claude Code / Codex so there may be errors
This commit is contained in:
2026-03-17 05:05:32 +00:00
parent 6d5de33f55
commit 84f4aabdff
20 changed files with 8748 additions and 47 deletions

457
locales/fi.yml Normal file
View File

@@ -0,0 +1,457 @@
# Main menu
menu:
subtitle: 'Terminaalin kirjoitusharjoittelija'
adaptive_drill: 'Mukautuva harjoitus'
adaptive_drill_desc: 'Foneettiset sanat mukautuvalla kirjainten avauksella'
code_drill: 'Koodiharjoitus'
code_drill_desc: 'Harjoittele koodisyntaksin kirjoittamista'
passage_drill: 'Tekstiharjoitus'
passage_drill_desc: 'Kirjoita katkelmia kirjoista'
skill_tree: 'Taitopuu'
skill_tree_desc: 'Tarkastele etenemispolkuja ja aloita harjoituksia'
keyboard: 'Näppäimistö'
keyboard_desc: 'Tutustu näppäinasetteluun ja tilastoihin'
statistics: 'Tilastot'
statistics_desc: 'Tarkastele kirjoitustilastojasi'
settings: 'Asetukset'
settings_desc: 'Määritä keydr-asetukset'
day_streak: ' | %{days} päivän putki'
key_progress: ' Näppäinedistyminen %{unlocked}/%{total} (%{mastered} hallittu) | Tavoite %{target} WPM%{streak}'
hint_start: '[1-3] Aloita'
hint_skill_tree: '[t] Taitopuu'
hint_keyboard: '[b] Näppäimistö'
hint_stats: '[s] Tilastot'
hint_settings: '[c] Asetukset'
hint_quit: '[q] Lopeta'
# Drill screen
drill:
title: ' Harjoitus '
mode_adaptive: 'Mukautuva'
mode_code: 'Koodi (ei sijoitettu)'
mode_passage: 'Teksti (ei sijoitettu)'
focus_char: 'Fokus: ''%{ch}'''
focus_bigram: 'Fokus: "%{bigram}"'
focus_both: 'Fokus: ''%{ch}'' + "%{bigram}"'
header_wpm: 'WPM'
header_acc: 'Tark'
header_err: 'Virh'
code_source: ' Koodilähde '
passage_source: ' Tekstilähde '
footer: '[ESC] Lopeta harjoitus [Backspace] Poista'
keys_reenabled: 'Näppäimet palautettu %{ms}ms:ssa'
hint_end: '[ESC] Lopeta harjoitus'
hint_backspace: '[Backspace] Poista'
# Dashboard / drill result
dashboard:
title: ' Harjoitus valmis '
results: 'Tulokset'
unranked_note_prefix: ' (Ei sijoitettu'
unranked_note_suffix: ' ei lasketa taitopuuhun)'
speed: ' Nopeus: '
accuracy_label: ' Tarkkuus: '
time_label: ' Aika: '
errors_label: ' Virheet: '
correct_detail: ' (%{correct}/%{total} oikein)'
input_blocked: ' Syöte estetty väliaikaisesti '
input_blocked_ms: '(%{ms}ms jäljellä)'
hint_continue: '[c/Enter/Space] Jatka'
hint_retry: '[r] Uudelleen'
hint_menu: '[q] Valikko'
hint_stats: '[s] Tilastot'
hint_delete: '[x] Poista'
# Stats sidebar (during drill)
sidebar:
title: ' Tilastot '
wpm: 'WPM: '
target: 'Tavoite: '
target_wpm: '%{wpm} WPM'
accuracy: 'Tarkkuus: '
progress: 'Edistyminen: '
correct: 'Oikein: '
errors: 'Virheet: '
time: 'Aika: '
last_drill: ' Edellinen harjoitus '
vs_avg: ' vs ka: '
# Statistics dashboard
stats:
title: ' Tilastot '
empty: 'Ei harjoituksia vielä. Aloita kirjoittaminen!'
tab_dashboard: '[1] Yhteenveto'
tab_history: '[2] Historia'
tab_activity: '[3] Aktiivisuus'
tab_accuracy: '[4] Tarkkuus'
tab_timing: '[5] Ajoitus'
tab_ngrams: '[6] N-grammit'
hint_back: '[ESC] Takaisin'
hint_next_tab: '[Tab] Seuraava välilehti'
hint_switch_tab: '[1-6] Vaihda välilehteä'
hint_navigate: '[j/k] Navigoi'
hint_page: '[PgUp/PgDn] Sivu'
hint_delete: '[x] Poista'
summary_title: ' Yhteenveto '
drills: ' Harjoitukset: '
avg_wpm: ' Ka WPM: '
best_wpm: ' Paras WPM: '
accuracy_label: ' Tarkkuus: '
total_time: ' Kokonaisaika: '
wpm_chart_title: ' WPM per harjoitus (viimeiset 20, tavoite: %{target}) '
accuracy_chart_title: ' Tarkkuus %% (viimeiset 50 harjoitusta) '
chart_drill: 'Harj #'
chart_accuracy_pct: 'Tarkkuus %%'
sessions_title: ' Viimeisimmät istunnot '
session_header: ' # WPM Raw Tark%% Aika Pvm/Aika Tila Sijoitettu Ositt.'
session_separator: ' ─────────────────────────────────────────────────────────────────────'
delete_confirm: 'Poista istunto #%{idx}? (k/e)'
confirm_title: ' Vahvista '
yes: 'kyllä'
no: 'ei'
keyboard_accuracy_title: ' Näppäimistön tarkkuus %% '
keyboard_timing_title: ' Näppäimistön ajoitus (ms) '
slowest_keys_title: ' Hitaimmat näppäimet (ms) '
fastest_keys_title: ' Nopeimmat näppäimet (ms) '
worst_accuracy_title: ' Heikoin tarkkuus (%%) '
best_accuracy_title: ' Paras tarkkuus (%%) '
not_enough_data: ' Ei tarpeeksi dataa'
streaks_title: ' Putket '
current_streak: ' Nykyinen: '
best_streak: ' Paras: '
active_days: ' Aktiiviset päivät: '
top_days_none: ' Parhaat päivät: ei yhtään'
top_days: ' Parhaat päivät: %{days}'
wpm_label: ' WPM: %{avg}/%{target} (%{pct}%%)'
acc_label: ' Tark: %{pct}%%'
keys_label: ' Näppäimet: %{unlocked}/%{total} (%{mastered} hallittu)'
ngram_empty: 'Suorita mukautuvia harjoituksia nähdäksesi n-grammidataa'
ngram_header_speed_narrow: ' Bgrm Nop Odot Poikk%'
ngram_header_error_narrow: ' Bgrm Virh Näyt Tih Odot Poikk%'
ngram_header_speed: ' Bigrammi Nopeus Odotettu Näytteet Poikk%'
ngram_header_error: ' Bigrammi Virheet Näytteet Tiheys Odotettu Poikk%'
focus_title: ' Aktiivinen fokus '
focus_char_label: ' Fokus: '
focus_bigram_value: 'Bigrammi %{label}'
focus_plus: ' + '
anomaly_error: 'virhe'
anomaly_speed: 'nopeus'
focus_detail_both: ' Merkki ''%{ch}'': heikoin näppäin | Bigrammi %{label}: %{type}-poikkeama %{pct}%%'
focus_detail_char_only: ' Merkki ''%{ch}'': heikoin näppäin, ei vahvistettuja bigrammipoikkeamia'
focus_detail_bigram_only: ' (%{type}-poikkeama: %{pct}%%)'
focus_empty: ' Suorita mukautuvia harjoituksia nähdäksesi fokusdataa'
error_anomalies_title: ' Virhepoikkeamat (%{count}) '
no_error_anomalies: ' Virhepoikkeamia ei havaittu'
speed_anomalies_title: ' Nopeuspoikkeamat (%{count}) '
no_speed_anomalies: ' Nopeuspoikkeamia ei havaittu'
scope_label_prefix: ' '
bi_label: ' | Bi: %{count}'
tri_label: ' | Tri: %{count}'
hes_label: ' | Epär: >%{ms}ms'
gain_label: ' | Kasvu: %{value}'
gain_interval: ' (joka 50.)'
focus_char_value: 'Merkki ''%{ch}'''
# Activity heatmap
heatmap:
title: ' Päivittäinen aktiivisuus (istunnot per päivä) '
jan: 'Tam'
feb: 'Hel'
mar: 'Maa'
apr: 'Huh'
may: 'Tou'
jun: 'Kes'
jul: 'Hei'
aug: 'Elo'
sep: 'Syy'
oct: 'Lok'
nov: 'Mar'
dec: 'Jou'
# Chart
chart:
wpm_over_time: ' WPM ajan kuluessa '
drill_number: 'Harj #'
# Settings
settings:
title: ' Asetukset '
subtitle: 'Käytä nuolia navigointiin, Enter/oikea muuttaa, ESC tallentaa ja poistuu'
target_wpm: 'Tavoite WPM'
theme: 'Teema'
word_count: 'Sanamäärä'
ui_language: 'Käyttöliittymän kieli'
dictionary_language: 'Sanakirjan kieli'
keyboard_layout: 'Näppäinasettelu'
code_language: 'Ohjelmointikieli'
code_downloads: 'Koodilataukset'
on: 'Päällä'
off: 'Pois'
code_download_dir: 'Koodilatauskansio'
snippets_per_repo: 'Katkelmat per repo'
unlimited: 'Rajaton'
download_code_now: 'Lataa koodi nyt'
run_downloader: 'Käynnistä lataaja'
passage_downloads: 'Tekstilataukset'
passage_download_dir: 'Tekstilatauskansio'
paragraphs_per_book: 'Kappaleet per kirja'
whole_book: 'Koko kirja'
download_passages_now: 'Lataa tekstit nyt'
export_path: 'Vientipolku'
export_data: 'Vie data'
export_now: 'Vie nyt'
import_path: 'Tuontipolku'
import_data: 'Tuo data'
import_now: 'Tuo nyt'
hint_save_back: '[ESC] Tallenna ja takaisin'
hint_change_value: '[Enter/nuolet] Muuta arvoa'
hint_edit_path: '[Enter polulla] Muokkaa'
hint_move: '[←→] Siirrä'
hint_tab_complete: '[Tab] Täydennä (lopussa)'
hint_confirm: '[Enter] Vahvista'
hint_cancel: '[Esc] Peruuta'
success_title: ' Onnistui '
error_title: ' Virhe '
press_any_key: 'Paina mitä tahansa näppäintä'
file_exists_title: ' Tiedosto on olemassa '
file_exists: 'Tiedosto on jo olemassa tässä polussa.'
overwrite_rename: '[d] Korvaa [r] Nimeä uudelleen [Esc] Peruuta'
erase_warning: 'Tämä poistaa nykyisen datasi.'
export_first: 'Vie data ensin, jos haluat säilyttää sen.'
proceed_yn: 'Jatketaanko? (k/e)'
confirm_import_title: ' Vahvista tuonti '
# Selection screens
select:
dictionary_language_title: ' Valitse sanakirjan kieli '
keyboard_layout_title: ' Valitse näppäinasettelu '
code_language_title: ' Valitse ohjelmointikieli '
passage_source_title: ' Valitse tekstilähde '
ui_language_title: ' Valitse käyttöliittymän kieli '
more_above: '... %{count} lisää ylhäällä ...'
more_below: '... %{count} lisää alhaalla ...'
current: ' (nykyinen)'
disabled: ' (pois käytöstä)'
enabled_default: ' (käytössä, oletus: %{layout})'
enabled: ' (käytössä)'
disabled_blocked: ' (pois käytöstä: estetty)'
built_in: ' (sisäänrakennettu)'
cached: ' (välimuistissa)'
disabled_download: ' (pois käytöstä: lataus vaaditaan)'
download_required: ' (lataus vaaditaan)'
hint_navigate: '[Ylös/Alas/PgUp/PgDn] Navigoi'
hint_confirm: '[Enter] Vahvista'
hint_back: '[ESC] Takaisin'
language_resets_layout: 'Kielen valinta palauttaa näppäinasettelun kielen oletukseen.'
layout_no_language_change: 'Asettelun muutos ei vaihda sanakirjan kieltä.'
disabled_network_notice: 'Jotkin kielet ovat pois käytöstä: ota verkkolataukset käyttöön asetuksissa.'
disabled_sources_notice: 'Jotkin lähteet ovat pois käytöstä: ota verkkolataukset käyttöön asetuksissa.'
passage_all: 'Kaikki (sisäänrakennetut + kaikki kirjat)'
passage_builtin: 'Vain sisäänrakennetut tekstit'
passage_book_prefix: 'Kirja: %{title}'
# Progress
progress:
overall_key_progress: 'Yleinen näppäinedistyminen'
unlocked_mastered: '%{unlocked}/%{total} avattu (%{mastered} hallittu)'
# Skill tree
skill_tree:
title: ' Taitopuu '
locked: 'Lukittu'
unlocked: 'avattu'
mastered: 'hallittu'
in_progress: 'käynnissä'
complete: 'valmis'
locked_status: 'lukittu'
locked_notice: 'Suorita %{count} peruskirjainta avataksesi haarat'
branches_separator: 'Haarat (käytettävissä %{count} peruskirjaimen jälkeen)'
unlocked_letters: 'Avattu %{unlocked}/%{total} kirjainta'
level: 'Taso %{current}/%{total}'
level_zero: 'Taso 0/%{total}'
in_focus: ' fokuksessa'
hint_navigate: '[↑↓/jk] Navigoi'
hint_scroll: '[PgUp/PgDn tai Ctrl+U/Ctrl+D] Vieritä'
hint_back: '[q] Takaisin'
hint_unlock: '[Enter] Avaa'
hint_start_drill: '[Enter] Aloita harjoitus'
unlock_msg_1: 'Avaamisen jälkeen mukautuva oletusharjoitus sisällyttää tämän haaran avattuja näppäimiä.'
unlock_msg_2: 'Jos haluat keskittyä vain tähän haaraan, aloita harjoitus suoraan taitopuusta.'
confirm_unlock: 'Avaa %{branch}?'
confirm_yn: '[y] Avaa [n/ESC] Peruuta'
lvl_prefix: 'Taso'
branch_primary_letters: 'Peruskirjaimet'
branch_capital_letters: 'Isot kirjaimet'
branch_numbers: 'Numerot 0-9'
branch_prose_punctuation: 'Välimerkit'
branch_whitespace: 'Tyhjämerkit'
branch_code_symbols: 'Koodisymbolit'
level_frequency_order: 'Yleisyysjärjestys'
level_common_sentence_capitals: 'Yleiset lauseen isot kirjaimet'
level_name_capitals: 'Nimien isot kirjaimet'
level_remaining_capitals: 'Loput isot kirjaimet'
level_common_digits: 'Yleiset numerot'
level_all_digits: 'Kaikki numerot'
level_essential: 'Välttämättömät'
level_common: 'Yleiset'
level_expressive: 'Ilmaisevat'
level_enter_return: 'Enter/Return'
level_tab_indent: 'Tab/sisennys'
level_arithmetic_assignment: 'Laskutoimitukset ja sijoitus'
level_grouping: 'Ryhmittely'
level_logic_reference: 'Logiikka ja viittaus'
level_special: 'Erikoismerkit'
# Milestones
milestones:
unlock_title: ' Näppäin avattu! '
mastery_title: ' Näppäin hallittu! '
branches_title: ' Uusia taitohaarat käytettävissä! '
branch_complete_title: ' Haara valmis! '
all_unlocked_title: ' Kaikki näppäimet avattu! '
all_mastered_title: ' Täysi näppäimistöhallinta! '
unlocked: 'avattu'
mastered: 'hallittu'
use_finger: 'Käytä %{finger}asi'
hold_right_shift: 'Pidä oikeaa Shiftiä (oikea pikkusormi)'
hold_left_shift: 'Pidä vasenta Shiftiä (vasen pikkusormi)'
congratulations_all_letters: 'Onnittelut! Olet hallinnut kaikki %{count} peruskirjainta'
new_branches_available: 'Uusia taitohaaroja on nyt käytettävissä:'
visit_skill_tree: 'Käy taitopuussa avataksesi uuden haaran'
and_start_training: 'ja aloita harjoittelu!'
open_skill_tree: 'Paina [t] avataksesi taitopuun nyt'
branch_complete_msg: 'Olet suorittanut haaran %{branch}!'
all_levels_mastered: 'Kaikki %{count} tasoa hallittu.'
all_keys_confident: 'Jokainen näppäin tässä haarassa on täydellä varmuudella.'
all_unlocked_msg: 'Olet avannut jokaisen näppäimen näppäimistöllä!'
all_unlocked_desc: 'Jokainen merkki, symboli ja muokkain on nyt käytettävissä harjoituksissasi.'
keep_practicing_mastery: 'Jatka harjoittelua hallinnan rakentamiseksi — kun jokainen näppäin saavuttaa täyden'
confidence_complete: 'varmuuden, olet saavuttanut täydellisen näppäimistöhallinnan!'
all_mastered_msg: 'Onnittelut — olet saavuttanut täyden näppäimistöhallinnan!'
all_mastered_desc: 'Jokainen näppäin näppäimistöllä on maksimivarmuudella.'
mastery_takes_practice: 'Hallinta ei ole päämäärä — se vaatii jatkuvaa harjoittelua.'
keep_drilling: 'Jatka harjoittelua säilyttääksesi taitosi.'
hint_skill_tree_continue: '[t] Avaa taitopuu [Muu näppäin] Jatka'
hint_any_key: 'Paina mitä tahansa näppäintä jatkaaksesi'
input_blocked: 'Syöte estetty väliaikaisesti (%{ms}ms jäljellä)'
unlock_msg_1: 'Hienoa! Jatka kirjoitustaitojesi kehittämistä.'
unlock_msg_2: 'Taas yksi näppäin arsenaalissasi!'
unlock_msg_3: 'Näppäimistösi kasvaa! Jatka samaan malliin.'
unlock_msg_4: 'Askel lähempänä täyttä näppäimistöhallintaa!'
mastery_msg_1: 'Tämä näppäin on nyt täydellä varmuudella!'
mastery_msg_2: 'Tämä näppäin on hallussa!'
mastery_msg_3: 'Lihasmuisti lukittuna!'
mastery_msg_4: 'Taas yksi näppäin valloitettu!'
# Keyboard explorer
keyboard:
title: ' Näppäimistö '
subtitle: 'Paina mitä tahansa näppäintä tai klikkaa näppäintä'
hint_navigate: '[←→↑↓/hjkl/Tab] Navigoi'
hint_back: '[q/ESC] Takaisin'
key_label: 'Näppäin: '
finger_label: 'Sormi: '
hand_left: 'Vasen'
hand_right: 'Oikea'
finger_index: 'Etusormi'
finger_middle: 'Keskisormi'
finger_ring: 'Nimetön'
finger_pinky: 'Pikkusormi'
finger_thumb: 'Peukalo'
overall_accuracy: ' Kokonaistarkkuus: %{correct}/%{total} (%{pct}%%)'
ranked_accuracy: ' Sijoitettu tarkkuus: %{correct}/%{total} (%{pct}%%)'
confidence: 'Varmuus: '
no_data: 'Ei dataa vielä'
no_data_short: 'Ei dataa'
key_details: ' Näppäintiedot '
key_details_char: ' Näppäintiedot: ''%{ch}'' '
key_details_name: ' Näppäintiedot: %{name} '
press_key_hint: 'Paina näppäintä nähdäksesi sen tiedot'
shift_label: 'Shift: '
shift_no: 'Ei'
overall_avg_time: 'Keskimääräinen aika: '
overall_best_time: 'Paras aika: '
overall_samples: 'Näytteet: '
overall_accuracy_label: 'Kokonaistarkkuus: '
branch_label: 'Haara: '
level_label: 'Taso: '
built_in_key: 'Sisäänrakennettu näppäin'
unlocked_label: 'Avattu: '
yes: 'Kyllä'
no: 'Ei'
in_focus_label: 'Fokuksessa?: '
mastery_label: 'Hallinta: '
mastery_locked: 'Lukittu'
ranked_avg_time: 'Sijoitettu ka aika: '
ranked_best_time: 'Sijoitettu paras aika: '
ranked_samples: 'Sijoitetut näytteet: '
ranked_accuracy_label: 'Sijoitettu tarkkuus: '
# Intro dialogs
intro:
passage_title: ' Tekstilatausten asetukset '
code_title: ' Koodilatausten asetukset '
enable_downloads: 'Ota verkkolataukset käyttöön'
download_dir: 'Latauskansio'
paragraphs_per_book: 'Kappaleet per kirja (0 = koko)'
whole_book: 'koko kirja'
snippets_per_repo: 'Katkelmat per repo (0 = rajaton)'
unlimited: 'rajaton'
start_passage_drill: 'Aloita tekstiharjoitus'
start_code_drill: 'Aloita koodiharjoitus'
confirm: 'Vahvista'
hint_navigate: '[Ylös/Alas] Navigoi'
hint_adjust: '[Vasen/Oikea] Säädä'
hint_edit: '[Kirjoita/Backspace] Muokkaa'
hint_confirm: '[Enter] Vahvista'
hint_cancel: '[ESC] Peruuta'
preparing_download: 'Valmistellaan latausta...'
download_passage_title: ' Ladataan tekstilähdettä '
download_code_title: ' Ladataan koodilähdettä '
book_label: ' Kirja: %{name}'
repo_label: ' Repo: %{name}'
progress_bytes: '[%{name}] %{downloaded}/%{total} tavua'
downloaded_bytes: 'Ladattu: %{bytes} tavua'
downloading_book_progress: 'Ladataan kirjaa: [%{bar}] %{downloaded}/%{total} tavua'
downloading_book_bytes: 'Ladataan kirjaa: %{bytes} tavua'
downloading_code_progress: 'Ladataan: [%{bar}] %{downloaded}/%{total} tavua'
downloading_code_bytes: 'Ladataan: %{bytes} tavua'
current_book: 'Nykyinen: %{name} (kirja %{done}/%{total})'
current_repo: 'Nykyinen: %{name} (repo %{done}/%{total})'
passage_instructions_1: 'keydr voi ladata tekstejä Project Gutenbergistä kirjoitusharjoitteluun.'
passage_instructions_2: 'Kirjat ladataan kerran ja tallennetaan paikallisesti.'
passage_instructions_3: 'Määritä latausasetukset alla ja aloita tekstiharjoitus.'
code_instructions_1: 'keydr voi ladata avoimen lähdekoodin koodia GitHubista kirjoitusharjoitteluun.'
code_instructions_2: 'Koodi ladataan kerran ja tallennetaan paikallisesti.'
code_instructions_3: 'Määritä latausasetukset alla ja aloita koodiharjoitus.'
# Status messages (from app.rs)
status:
recovery_files: 'Palautustiedostoja löydetty keskeytyneestä tuonnista. Data voi olla epäjohdonmukaista — harkitse uudelleentuontia.'
dir_not_exist: 'Kansiota ei ole olemassa: %{path}'
no_data_store: 'Datavarasto ei käytettävissä'
serialization_error: 'Sarjallistamisvirhe: %{error}'
exported_to: 'Viety kohteeseen %{path}'
export_failed: 'Vienti epäonnistui: %{error}'
could_not_read: 'Tiedostoa ei voitu lukea: %{error}'
invalid_export: 'Virheellinen vientitiedosto: %{error}'
unsupported_version: 'Ei-tuettu vientiversion: %{got} (odotettu %{expected})'
import_failed: 'Tuonti epäonnistui: %{error}'
imported_theme_fallback: 'Tuotu onnistuneesti (teemaa ''%{theme}'' ei löytynyt, käytetään oletusta)'
imported_success: 'Tuotu onnistuneesti'
adaptive_unavailable: 'Mukautuva sijoitettu tila ei käytettävissä: %{error}'
switched_to: 'Vaihdettu: %{name}'
layout_changed: 'Asettelu vaihdettu: %{name}'
# Errors (for UI boundary translation)
errors:
unknown_language: 'Tuntematon kieli: %{key}'
unknown_layout: 'Tuntematon näppäinasettelu: %{key}'
unsupported_pair: 'Ei-tuettu kieli/asettelu-pari: %{language} + %{layout}'
language_blocked: 'Kieli estetty tukitason vuoksi: %{key}'
# Common
common:
wpm: 'WPM'
cpm: 'CPM'
back: 'Takaisin'