# Support for the Finnish language.
# This file is part of REMIND.
# REMIND is Copyright (C) 1992-2026 by Dianne Skoll
# This file is derived from a translation by Mikko Silvonen

TRANSLATE "LANGID" "fi"

SET $Sunday "sunnuntai"
SET $Monday "maanantai"
SET $Tuesday "tiistai"
SET $Wednesday "keskiviikko"
SET $Thursday "torstai"
SET $Friday "perjantai"
SET $Saturday "lauantai"

SET $January "tammikuu"
SET $February "helmikuu"
SET $March "maaliskuu"
SET $April "huhtikuu"
SET $May "toukokuu"
SET $June "kesäkuu"
SET $July "heinäkuu"
SET $August "elokuu"
SET $September "syyskuu"
SET $October "lokakuu"
SET $November "marraskuu"
SET $December "joulukuu"

SET $Today "tänään"
SET $Tomorrow "huomenna"

TRANSLATE "yesterday" "eilen"
TRANSLATE "are" "ovat"
TRANSLATE "were" "olivat"
TRANSLATE "done" "suoritettu"

BANNER Viestit %wna %d. %mta %y%o:

SET $Am " ap."
SET $Pm " ip."

SET $ago "sitten"
SET $Fromnow "kuluttua"

SET $On "na"

SET $Now "nyt"
SET $At "klo"
SET $Minute "minuutti"
SET $Hour "tunti"
SET $Is "on"
SET $Was "oli"
SET $And "ja"
SET $Hplu "a"
SET $Mplu "a"

FSET - zeropad(s, len) pad(s, "0", len)

FSET - subst_ordinal(d) iif(d==1, ":senä", d==2, ":sena", (d%10)==2||(d%10)==3||(d%10)==6||(d%10)==8, ":ntena", ":ntenä")
FSET - ordx(d) d + subst_ordinal(d)

FSET - subst_a_alt(d, o, p) wkday(d) + o + " " + day(d) + ". " + mon(d) + p + " " + year(d)
FSET - subst_ax(a, d, t) iif(a, subst_a_alt(d, "", ""), subst_a_alt(d, $On, "ta"))

FSET - subst_bx(a, d, t) iif(d >= $U, (d-$U) + " päivän kuluttua", ($U-d) + " päivää sitten")
FSET - subst_cx(a, d, t) iif(a, wkday(d), wkday(d) + $On)

FSET - subst_ex(a, d, t) zeropad(day(d), 2) + $DateSep + zeropad(monnum(d), 2) + $DateSep + zeropad(year(d), 4)
FSET - subst_fx(a, d, t) zeropad(monnum(d), 2) + $DateSep + zeropad(day(d), 2) + $DateSep + zeropad(year(d), 4)

FSET - subst_g_alt(d, o, p) wkday(d) + o + " " + day(d) + ". " + mon(d) + p
FSET - subst_gx(a, d, t) iif(a, subst_g_alt(d, "", ""), subst_g_alt(d, $On, "ta"))

FSET - subst_hx(a, d, t) zeropad(day(d), 2) + $DateSep + zeropad(monnum(d), 2)
FSET - subst_ix(a, d, t) zeropad(monnum(d), 2) + $DateSep + zeropad(day(d), 2)

FSET - subst_j_alt(d, o) wkday(d) + o + " " + mon(d) + "n " + day(d) + subst_ordinal(day(d)) + " " + year(d)
FSET - subst_jx(a, d, t) iif(a, subst_j_alt(d, ""), subst_j_alt(d, $On))

FSET - subst_k_alt(d, o) wkday(d) + o + " " + mon(d) + "n " + day(d) + subst_ordinal(day(d))
FSET - subst_kx(a, d, t) iif(a, subst_k_alt(d, ""), subst_k_alt(d, $On))

FSET - subst_lx(a, d, t) zeropad(year(d), 4) + $DateSep + zeropad(monnum(d), 2) + $DateSep + zeropad(day(d), 2)
FSET - subst_p(a, d, t) iif(d==$U+1, "", "ä")
FSET - subst_qx(a, d, t) "n"

FSET - subst_u_alt(d, o, p) wkday(d) + o + " " + day(d) + subst_ordinal(day(d)) + " " + mon(d) + p + " " + year(d)
FSET - subst_ux(a, d, t) iif(a, subst_u_alt(d, "", ""), subst_u_alt(d, $On, "ta"))

FSET - subst_v_alt(d, o, p) wkday(d) + o + " " + day(d) + subst_ordinal(day(d)) + " " + mon(d) + p
FSET - subst_vx(a, d, t) iif(a, subst_v_alt(d, "", ""), subst_v_alt(d, $On, "ta"))


FSET - subst_1(a, d, t) iif(t==now(), $Now, t<now(), subst1_past(now()-t), subst1_future(t-now()))

FSET - subst1_past(mins) subst_hour_past(mins/60) + subst_min_past(mins%60) + $Ago
FSET - subst1_future(mins) subst_hour_future(mins/60) + subst_min_future(mins%60) + $Fromnow

FSET - subst_hour_past(h) iif(h==0, "", h + " " + $Hour + iif(h==1, " ", $Hplu + " "))
FSET - subst_min_past(m) iif(m==0, "", m + " " + $Minute + iif(m==1, " ", $Mplu + " "))
FSET - subst_hour_future(h) iif(h==0, "", h + " tunnin ")
FSET - subst_min_future(m) iif(m==0, "", m + " minuutin ")

TRANSLATE "Missing ']'" "Puuttuva ']'"
TRANSLATE "Missing quote" "Puuttuva lainausmerkki"
TRANSLATE "Expression too complex" "Liian monimutkainen lauseke"
TRANSLATE "Missing ')'" "Puuttuva ')'"
TRANSLATE "Undefined function" "Määrittelemätön funktio"
TRANSLATE "Illegal character" "Virheellinen merkki"
TRANSLATE "Expecting binary operator" "Kaksipaikkainen operaattori puuttuu"
TRANSLATE "Out of memory" "Muisti loppui"
TRANSLATE "Ill-formed number" "Virheellinen luku"
TRANSLATE "Can't coerce" "Tyyppimuunnos ei onnistu"
TRANSLATE "Type mismatch" "Virheellinen tyyppi"
TRANSLATE "Date overflow" "Liian suuri päiväys"
TRANSLATE "Division by zero" "Jako nollalla"
TRANSLATE "Undefined variable" "Määrittelemätön funktio"
TRANSLATE "Unexpected end of line" "Odottamaton rivin loppu"
TRANSLATE "Unexpected end of file" "Odottamaton tiedoston loppu"
TRANSLATE "I/O error" "Syöttö- tai tulostusvirhe"
TRANSLATE "Internal error" "Sisäinen virhe"
TRANSLATE "Bad date specification" "Virheellinen päiväys"
TRANSLATE "Not enough arguments" "Liian vähän argumentteja"
TRANSLATE "Too many arguments" "Liian paljon argumentteja"
TRANSLATE "Ill-formed time" "Virheellinen aika"
TRANSLATE "Number too high" "Liian suuri luku"
TRANSLATE "Number too low" "Liian pieni luku"
TRANSLATE "Can't open file" "Tiedoston avaus ei onnistu"
TRANSLATE "INCLUDE nested too deeply (max. 9)" "Liian monta sisäkkäistä INCLUDEa"
TRANSLATE "Parse error" "Jäsennysvirhe"
TRANSLATE "Can't compute trigger" "Laukaisuhetken laskenta ei onnistu"
TRANSLATE "Too many nested IFs" "Liian monta sisäkkäistä IF-lausetta"
TRANSLATE "ELSE with no matching IF" "ELSE ilman IF-lausetta"
TRANSLATE "ENDIF with no matching IF" "ENDIF ilman IF-lausetta"
TRANSLATE "Can't OMIT every weekday" "Kaikkia viikonpäiviä ei voi jättää pois"
TRANSLATE "Extraneous token(s) on line" "Ylimääräisiä merkkejä rivillä"
TRANSLATE "POP-OMIT-CONTEXT without matching PUSH-OMIT-CONTEXT" "POP-OMIT-CONTEXT ilman PUSH-OMIT-CONTEXTia"
TRANSLATE "RUN disabled" "RUN-lauseen käyttö estetty"
TRANSLATE "Domain error" "Arvoaluevirhe"
TRANSLATE "Invalid identifier" "Virheellinen tunniste"
TRANSLATE "Too many recursive function calls" "Liian monta rekursiivista toimintopuhelua"
TRANSLATE "Cannot modify system variable" "Järjestelmämuuttujan muuttaminen ei onnistu"
TRANSLATE "C library function can't represent date/time" "C-kirjastofunktio ei pysty esittämään päiväystä tai aikaa"
TRANSLATE "Attempt to redefine built-in function" "Sisäisen funktion määritelmää yritettiin muuttaa"
TRANSLATE "Can't nest function definition in expression" "Lausekkeessa ei voi olla sisäkkäisiä funktiomääritelmiä"
TRANSLATE "Must fully specify date to use repeat factor" "Päiväyksen täytyy olla täydellinen toistokertoimessa"
TRANSLATE "Year specified twice" "Vuosi annettu kahdesti"
TRANSLATE "Month specified twice" "Kuukausi annettu kahdesti"
TRANSLATE "Day specified twice" "Päivä annettu kahdesti"
TRANSLATE "Unknown token" "Tuntematon sana tai merkki"
TRANSLATE "Must specify month in OMIT command" "OMIT-komennossa on annettava kuukausi"
TRANSLATE "Too many full OMITs (max. 1000)" "Liian monta täydellistä OMIT-komentoa"
TRANSLATE "Warning: PUSH-OMIT-CONTEXT without matching POP-OMIT-CONTEXT" "Varoitus: PUSH-OMIT-CONTEXT ilman POP-OMIT-CONTEXTia"
TRANSLATE "Error reading" "Virhe tiedoston luvussa"
TRANSLATE "Expecting end-of-line" "Pilkku puuttuu"
TRANSLATE "Invalid Hebrew date" "Virheellinen juutalainen päiväys"
TRANSLATE "iif(): odd number of arguments required" "IIF vaatii parittoman määrän argumentteja"
TRANSLATE "Warning: Missing ENDIF" "Varoitus: puuttuva ENDIF"
TRANSLATE "Expecting comma" "Pilkku puuttuu"
TRANSLATE "Weekday specified twice" "Viikonpäivä annettu kahdesti"
TRANSLATE "Only use one of BEFORE, AFTER or SKIP" "Käytä vain yhtä komennoista BEFORE, AFTER ja SKIP"
TRANSLATE "Can't nest MSG, MSF, RUN, etc. in expression" "Sisäkkäisiä MSG-, MSF- ja RUN-lauseita ei voi käyttää lausekkeessa"
TRANSLATE "Repeat value specified twice" "Toistokerroin annettu kahdesti"
TRANSLATE "Delta value specified twice" "Delta-arvo annettu kahdesti"
TRANSLATE "Back value specified twice" "Peruutusarvo annettu kahdesti"
TRANSLATE "ONCE keyword used twice. (Hah.)" "ONCE-avainsanaa käytetty kahdesti. (Hah.)"
TRANSLATE "Expecting time after AT" "AT-sanan perästä puuttuu aika"
TRANSLATE "THROUGH/UNTIL keyword used twice" "THROUGH/UNTIL-sanaa käytetty kahdesti"
TRANSLATE "Incomplete date specification" "Epätäydellinen päiväys"
TRANSLATE "FROM/SCANFROM keyword used twice" "FROM/SCANFROM-sanaa käytetty kahdesti"
TRANSLATE "Variable" "Muuttuja"
TRANSLATE "Value" "Arvo"
TRANSLATE "*UNDEFINED*" "*MÄÄRITTELEMÄTÖN*"
TRANSLATE "Entering UserFN" "Siirrytään funktioon"
TRANSLATE "Leaving UserFN" "Poistutaan funktiosta"
TRANSLATE "Expired" "Vanhentunut"
TRANSLATE "fork() failed - can't do queued reminders" "fork() epäonnistui - jonomuistutukset eivät toimi"
TRANSLATE "Can't access file" "Tiedoston avaus ei onnistu"
TRANSLATE "Illegal system date: Year is less than %d" "Virheellinen järjestelmäpäiväys: vuosi on vähemmän kuin %d"
TRANSLATE "Unknown debug flag '%c'" "Tuntematon virheenetsintätarkenne '%c'"
TRANSLATE "Unknown option '%c'" "Tuntematon tarkenne '%c'"
TRANSLATE "Unknown user '%s'" "Tuntematon käyttäjä '%s'"
TRANSLATE "Could not change gid to %d" "Ryhmänumeron vaihto %d:ksi ei onnistunut"
TRANSLATE "Could not change uid to %d" "Käyttäjänumeron vaihto %d:ksi ei onnistunut"
TRANSLATE "Out of memory for environment" "Muisti ei riitä ympäristölle"
TRANSLATE "Missing '=' sign" "Puuttuva '='-merkki"
TRANSLATE "Missing variable name" "Puuttuva muuttujanimi"
TRANSLATE "Missing expression" "Puuttuva lauseke"
TRANSLATE "Remind: '-i' option: %s" "Remind: tarkenne '-i': %s"
TRANSLATE "No reminders." "Ei viestejä."
TRANSLATE "%d reminder(s) queued for later today." "%d viesti(ä) tämän päivän jonossa."
TRANSLATE "Expecting number" "Numero puuttuu"
TRANSLATE "Undefined WARN function" "Virheellinen funktio WARN-lausekkeessa"
TRANSLATE "Can't convert between time zones" "Aikavyöhykkeiden välillä ei voi muuntaa"
TRANSLATE "No files matching *.rem" "Ei tiedostoja, jotka vastaavat *.rem"
TRANSLATE "String too long" "Merkkijono liian kauan"
TRANSLATE "Time specified twice" "Aika määritetty kahdesti"
TRANSLATE "Cannot specify DURATION without specifying AT" "Ei voi määrittää DURATION määrittelemättä AT"
TRANSLATE "Expecting weekday name" "Odotettu viikonpäivän nimi"
TRANSLATE "Duplicate argument name" "Päällekkäinen argumentin nimi"
TRANSLATE "Expression evaluation is disabled" "Lausekkeiden arviointi on poistettu käytöstä"
TRANSLATE "Time limit for expression evaluation exceeded" "Ilmaisun arvioinnin aikaraja ylitti"
