# Finnish translations for GNU Gettext package.
# This file is distributed under the same license as the gettext package.
# Copyright © 2002, 2007, 2019 Free Software Foundation, Inc.
# Sami J. Laine <sami.laine@iki.fi>, 2002.
# Lauri Nurmi <lanurmi@iki.fi>, 2007, 2019.
#
msgid ""
msgstr ""
"Project-Id-Version: gettext-runtime 0.20.2\n"
"Report-Msgid-Bugs-To: bug-gettext@gnu.org\n"
"POT-Creation-Date: 2020-07-26 21:56+0200\n"
"PO-Revision-Date: 2020-04-16 10:58+0300\n"
"Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"X-Generator: Poedit 2.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: gnulib-lib/closeout.c:66
msgid "write error"
msgstr "kirjoitusvirhe"

#: gnulib-lib/error.c:195
msgid "Unknown system error"
msgstr "Tuntematon järjestelmävirhe"

#: gnulib-lib/getopt.c:278
#, c-format
msgid "%s: option '%s%s' is ambiguous\n"
msgstr "%s: valitsin ”%s%s” on moniselitteinen\n"

#: gnulib-lib/getopt.c:284
#, c-format
msgid "%s: option '%s%s' is ambiguous; possibilities:"
msgstr "%s: valitsin ”%s%s” on moniselitteinen; vaihtoehdot:"

#: gnulib-lib/getopt.c:319
#, c-format
msgid "%s: unrecognized option '%s%s'\n"
msgstr "%s: tunnistamaton valitsin ”%s%s”\n"

#: gnulib-lib/getopt.c:345
#, c-format
msgid "%s: option '%s%s' doesn't allow an argument\n"
msgstr "%s: valitsin ”%s%s” ei salli argumenttia\n"

#: gnulib-lib/getopt.c:360
#, c-format
msgid "%s: option '%s%s' requires an argument\n"
msgstr "%s: valitsin ”%s%s” vaatii argumentin\n"

#: gnulib-lib/getopt.c:621
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr "%s: virheellinen valitsin -- ”%c”\n"

#: gnulib-lib/getopt.c:636 gnulib-lib/getopt.c:682
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr "%s: valitsin vaatii argumentin -- ”%c”\n"

#: gnulib-lib/xmalloc.c:38
#, c-format
msgid "memory exhausted"
msgstr "muisti lopussa"

# Käännetty M. Välimäen GPLv3-käännöksestä vihjeitä katsoen.
#: src/envsubst.c:110 src/gettext.c:135 src/ngettext.c:124
#, c-format, no-wrap
msgid ""
"Copyright (C) %s Free Software Foundation, Inc.\n"
"License GPLv3+: GNU GPL version 3 or later <%s>\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
"Tekijänoikeus © %s Free Software Foundation, Inc.\n"
"Lisenssi GPLv3+: GNU GPL versio 3 tai myöhempi <%s>\n"
"Tämä on vapaa ohjelmisto ja sen muuttaminen ja levittäminen edelleen on sallittua.\n"
"TAKUUTA EI OLE lain sallimissa rajoissa.\n"

#: src/envsubst.c:116 src/gettext.c:141 src/ngettext.c:130
#, c-format
msgid "Written by %s.\n"
msgstr "Kirjoittanut %s.\n"

#. This is a proper name. See the gettext manual, section Names.
#: src/envsubst.c:116
msgid "Bruno Haible"
msgstr "Bruno Haible"

#: src/envsubst.c:125 src/gettext.c:159 src/ngettext.c:142
#, c-format
msgid "too many arguments"
msgstr "liian monta argumenttia"

#: src/envsubst.c:136 src/gettext.c:169 src/ngettext.c:154
#, c-format
msgid "missing arguments"
msgstr "argumentteja puuttuu"

#: src/envsubst.c:174 src/gettext.c:246 src/ngettext.c:211
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr "Komento ”%s --help” antaa lisää tietoa.\n"

#: src/envsubst.c:179
#, c-format, no-wrap
msgid "Usage: %s [OPTION] [SHELL-FORMAT]\n"
msgstr "Käyttö: %s [VALITSIN] [SHELL-MUOTO]\n"

#: src/envsubst.c:184
#, c-format, no-wrap
msgid "Substitutes the values of environment variables.\n"
msgstr "Korvaa ympäristömuuttujien arvot.\n"

#: src/envsubst.c:188
#, c-format, no-wrap
msgid "Operation mode:\n"
msgstr "Toimintatila:\n"

#: src/envsubst.c:191
#, c-format, no-wrap
msgid "  -v, --variables             output the variables occurring in SHELL-FORMAT\n"
msgstr "  -v, --variables             tulostaa SHELL-MUODOSSA ilmenevät muuttujat\n"

#: src/envsubst.c:195 src/gettext.c:275 src/ngettext.c:241
#, c-format, no-wrap
msgid "Informative output:\n"
msgstr "Selittävä tuloste:\n"

#: src/envsubst.c:198
#, c-format, no-wrap
msgid "  -h, --help                  display this help and exit\n"
msgstr "  -h, --help                  tulosta tämä ohje ja poistu\n"

#: src/envsubst.c:201
#, c-format, no-wrap
msgid "  -V, --version               output version information and exit\n"
msgstr "  -V, --version                tulosta ohjelman versiotiedot ja poistu\n"

#: src/envsubst.c:205
#, c-format, no-wrap
msgid ""
"In normal operation mode, standard input is copied to standard output,\n"
"with references to environment variables of the form $VARIABLE or ${VARIABLE}\n"
"being replaced with the corresponding values.  If a SHELL-FORMAT is given,\n"
"only those environment variables that are referenced in SHELL-FORMAT are\n"
"substituted; otherwise all environment variables references occurring in\n"
"standard input are substituted.\n"
msgstr ""
"Tavallisessa toimintatilassa vakiosyöte kopioidaan vakiotulosteeseen\n"
"siten, että viittaukset ympäristömuuttujiin, muodossa $MUUTTUJA tai\n"
"${MUUTTUJA}, korvataan vastaavilla arvoilla. Mikäli SHELL-MUOTO\n"
"annetaan, vain ne ympäristömuuttujat korvataan, joihin viitataan\n"
"SHELL-MUODOssa. Muussa tapauksessa kaikki vakiosyötteessä esiintyvät\n"
"ympäristömuuttujat korvataan.\n"

#: src/envsubst.c:214
#, c-format, no-wrap
msgid ""
"When --variables is used, standard input is ignored, and the output consists\n"
"of the environment variables that are referenced in SHELL-FORMAT, one per line.\n"
msgstr ""
"Valitsinta --variables käytettäessä vakiosyöte jätetään huomiotta ja\n"
"tuloste muodostuu ympäristömuuttujista, yksi kutakin riviä kohti,\n"
"joihin viitataan SHELL-MUODOssa.\n"

#. TRANSLATORS: The first placeholder is the web address of the Savannah
#. project of this package.  The second placeholder is the bug-reporting
#. email address for this package.  Please add _another line_ saying
#. "Report translation bugs to <...>\n" with the address for translation
#. bugs (typically your translation team's web or email address).
#: src/envsubst.c:223 src/gettext.c:299 src/ngettext.c:262
#, c-format
msgid ""
"Report bugs in the bug tracker at <%s>\n"
"or by email to <%s>.\n"
msgstr ""
"Ilmoita vioista osoitteessa <%s>\n"
"tai sähköpostitse osoitteeseen <%s>.\n"

# ainoa mahdollinen %s tällä hetkellä on alla oleva "standard input"
#: src/envsubst.c:451
#, c-format
msgid "error while reading \"%s\""
msgstr "virhe luettaessa ”%s”"

# [sic]
#: src/envsubst.c:451
msgid "standard input"
msgstr "vakiosyötettä"

#. This is a proper name. See the gettext manual, section Names.
#: src/gettext.c:141 src/ngettext.c:130
msgid "Ulrich Drepper"
msgstr "Ulrich Drepper"

#: src/gettext.c:251
#, c-format, no-wrap
msgid ""
"Usage: %s [OPTION] [[TEXTDOMAIN] MSGID]\n"
"or:    %s [OPTION] -s [MSGID]...\n"
msgstr ""
"Käyttö: %s [VALITSIN] [[KÄÄNNÖSJOUKKO] VIESTI-ID]\n"
"tai:    %s [VALITSIN] -s [VIESTI-ID]...\n"

#: src/gettext.c:257
#, c-format, no-wrap
msgid "Display native language translation of a textual message.\n"
msgstr "Näyttää kotoistetun käännöksen tekstimuotoiselle viestille.\n"

#: src/gettext.c:261
#, c-format, no-wrap
msgid "  -d, --domain=TEXTDOMAIN   retrieve translated messages from TEXTDOMAIN\n"
msgstr "  -d, --domain=KÄÄNNÖSJOUKKO nouda käännetyt viestit KÄÄNNÖSJOUKOsta\n"

#: src/gettext.c:263 src/ngettext.c:228
#, c-format
msgid "  -c, --context=CONTEXT     specify context for MSGID\n"
msgstr "  -c, --context=ASIAYHTEYS  määrää VIESTI-ID:n asiayhteys\n"

#: src/gettext.c:265 src/ngettext.c:230
#, c-format
msgid "  -e                        enable expansion of some escape sequences\n"
msgstr "  -e                        laajenna tietyt ohjaussarjat\n"

#: src/gettext.c:267
#, c-format
msgid "  -n                        suppress trailing newline\n"
msgstr "  -n                        estä päättävä rivinvaihto\n"

#: src/gettext.c:269 src/ngettext.c:232
#, c-format
msgid "  -E                        (ignored for compatibility)\n"
msgstr "  -E                        (ohitetaan yhteensopivuuden vuoksi)\n"

#: src/gettext.c:271
#, c-format
msgid ""
"  [TEXTDOMAIN] MSGID        retrieve translated message corresponding\n"
"                            to MSGID from TEXTDOMAIN\n"
msgstr ""
"  [KÄÄNN.JOUKKO] VIESTI-ID  nouda VIESTI-ID:tä vastaava käännetty\n"
"                            viesti KÄÄNNÖSJOUKOsta\n"

#: src/gettext.c:277 src/ngettext.c:243
#, c-format
msgid "  -h, --help                display this help and exit\n"
msgstr "  -h, --help                  näytä tämä ohje ja poistu\n"

#: src/gettext.c:279 src/ngettext.c:245
#, c-format
msgid "  -V, --version             display version information and exit\n"
msgstr "  -V, --version                näytä ohjelman versiotiedot ja poistu\n"

#: src/gettext.c:283
#, c-format, no-wrap
msgid ""
"If the TEXTDOMAIN parameter is not given, the domain is determined from the\n"
"environment variable TEXTDOMAIN.  If the message catalog is not found in the\n"
"regular directory, another location can be specified with the environment\n"
"variable TEXTDOMAINDIR.\n"
"When used with the -s option the program behaves like the 'echo' command.\n"
"But it does not simply copy its arguments to stdout.  Instead those messages\n"
"found in the selected catalog are translated.\n"
"Standard search directory: %s\n"
msgstr ""
"Jos KÄÄNNÖSJOUKKO-parametria ei anneta, joukko päätellään TEXTDOMAIN-\n"
"ympäristömuuttujan perusteella. Jos viestiluettelo ei ole tavanomaisessa\n"
"hakemistossaan, vaihtoehtoinen sijainti voidaan määritellä ympäristömuuttu-\n"
"jalla TEXTDOMAINDIR.\n"
"Valitsimen -s kanssa ohjelma toimii kuten ”echo”-komento.\n"
"Ohjelma ei kuitenkaan vain kopioi argumenttejaan vakiotulosteeseen, vaan\n"
"valitusta viestiluettelosta löydetyt viestit näytetään käännettyinä.\n"
"Vakiohakemisto, josta haku suoritetaan: %s\n"

#: src/ngettext.c:216
#, c-format, no-wrap
msgid "Usage: %s [OPTION] [TEXTDOMAIN] MSGID MSGID-PLURAL COUNT\n"
msgstr "Käyttö: %s [VALITSIN] [KÄÄNNÖSJOUKKO] VIESTI-ID VIESTI-ID-MONIKKO MÄÄRÄ\n"

#: src/ngettext.c:221
#, c-format, no-wrap
msgid ""
"Display native language translation of a textual message whose grammatical\n"
"form depends on a number.\n"
msgstr ""
"Näyttää kotoistetun käännöksen tekstimuotoiselle viestille, jonka muoto\n"
"riippuu lukuarvosta.\n"

#: src/ngettext.c:226
#, c-format, no-wrap
msgid "  -d, --domain=TEXTDOMAIN   retrieve translated message from TEXTDOMAIN\n"
msgstr "  -d, --domain=KÄÄNNÖSJOUKKO nouda käännetty viesti KÄÄNNÖSJOUKOsta\n"

#: src/ngettext.c:234
#, c-format
msgid ""
"  [TEXTDOMAIN]              retrieve translated message from TEXTDOMAIN\n"
msgstr "  [KÄÄNN.JOUKKO]            nouda käännetty viesti KÄÄNNÖSJOUKOsta\n"

#: src/ngettext.c:236
#, c-format
msgid ""
"  MSGID MSGID-PLURAL        translate MSGID (singular) / MSGID-PLURAL "
"(plural)\n"
msgstr ""
"  VIESTI-ID VIESTI-ID-MON   käännä VIESTI-ID (yksikkö) / VIESTI-ID-MON "
"(monikko)\n"

#: src/ngettext.c:238
#, c-format
msgid ""
"  COUNT                     choose singular/plural form based on this value\n"
msgstr ""
"  MÄÄRÄ                     valitse yksikkö/monikko tämän arvon perusteella\n"

#: src/ngettext.c:249
#, c-format, no-wrap
msgid ""
"If the TEXTDOMAIN parameter is not given, the domain is determined from the\n"
"environment variable TEXTDOMAIN.  If the message catalog is not found in the\n"
"regular directory, another location can be specified with the environment\n"
"variable TEXTDOMAINDIR.\n"
"Standard search directory: %s\n"
msgstr ""
"Jos KÄÄNNÖSJOUKKO-parametria ei anneta, joukko päätellään TEXTDOMAIN-\n"
"ympäristömuuttujan perusteella. Jos viestiluettelo ei ole tavanomaisessa\n"
"hakemistossa, vaihtoehtoinen sijainti voidaan määritellä ympäristömuuttu-\n"
"jalla TEXTDOMAINDIR.\n"
"Perushakemisto, josta haku suoritetaan: %s\n"

#~ msgid "Report bugs to <bug-gnu-gettext@gnu.org>.\n"
#~ msgstr ""
#~ "Ilmoita ohjelmiston vioista osoitteeseen <bug-gnu-gettext@gnu.org>.\n"
#~ "Ilmoita suomennoksen vioista listalle <translation-team-fi@lists."
#~ "sourceforge.net>.\n"

#~ msgid "%s: option `--%s' doesn't allow an argument\n"
#~ msgstr "%s: valitsin ”--%s” ei salli argumenttia\n"

#~ msgid "%s: unrecognized option `--%s'\n"
#~ msgstr "%s: tuntematon valitsin ”--%s”\n"

#~ msgid "%s: illegal option -- %c\n"
#~ msgstr "%s: virheellinen valitsin -- %c\n"

#~ msgid "%s: option `-W %s' is ambiguous\n"
#~ msgstr "%s: valitsin ”-W %s” on moniselitteinen\n"

#~ msgid "%s: option `-W %s' doesn't allow an argument\n"
#~ msgstr "%s: valitsin ”-W %s” ei salli argumenttia\n"

#~ msgid ""
#~ "  -d, --domain=TEXTDOMAIN   retrieve translated messages from TEXTDOMAIN\n"
#~ "  -e                        enable expansion of some escape sequences\n"
#~ "  -E                        (ignored for compatibility)\n"
#~ "  -h, --help                display this help and exit\n"
#~ "  -n                        suppress trailing newline\n"
#~ "  -V, --version             display version information and exit\n"
#~ "  [TEXTDOMAIN] MSGID        retrieve translated message corresponding\n"
#~ "                            to MSGID from TEXTDOMAIN\n"
#~ msgstr ""
#~ "  -d, --domain=KÄÄNNÖSJOUKKO hae käännetyt viestit KÄÄNNÖSJOUKOSTA\n"
#~ "  -e                        salli joidenkin lainauskoodien laajentaminen\n"
#~ "  -E                        (jätetään huomiotta yhteensopivuuden vuoksi)\n"
#~ "  -h, --help                näytä tämä ohje ja poistu\n"
#~ "  -n                        jättää pois rivinvaihdon rivin lopusta\n"
#~ "  -V, --version             näyttää ohjelmiston versiotiedot ja lopettaa\n"
#~ "                            suorituksen\n"
#~ "  [KÄÄNNÖSJOUKKO] VIESTI-ID  etsii käännetyn viestin, joka vastaa VIESTI-"
#~ "ID:tä\n"
#~ "                            KÄÄNNÖSJOUKOSSA\n"

#~ msgid ""
#~ "  -d, --domain=TEXTDOMAIN   retrieve translated message from TEXTDOMAIN\n"
#~ "  -e                        enable expansion of some escape sequences\n"
#~ "  -E                        (ignored for compatibility)\n"
#~ "  -h, --help                display this help and exit\n"
#~ "  -V, --version             display version information and exit\n"
#~ "  [TEXTDOMAIN]              retrieve translated message from TEXTDOMAIN\n"
#~ "  MSGID MSGID-PLURAL        translate MSGID (singular) / MSGID-PLURAL "
#~ "(plural)\n"
#~ "  COUNT                     choose singular/plural form based on this "
#~ "value\n"
#~ msgstr ""
#~ "  -d, --domain=KÄÄNNÖSJOUKKO hae käännetyt viestit KÄÄNNÖSJOUKOSTA\n"
#~ "  -e                        salli joidenkin lainauskoodien laajentaminen\n"
#~ "  -h, --help                näytä tämä ohje ja poistu\n"
#~ "  -V, --version             näytä versiotiedot ja poistu\n"
#~ "  [KÄÄNNÖSJOUKKO]           hae käännetty sanoma KÄÄNNÖSJOUKOSTA\n"
#~ "  VIESTI-ID VIESTI-ID-MON   käännä VIESTI-ID (yksikkö) / VIESTI-ID-MON "
#~ "(monikko)\n"
#~ "  MÄÄRÄ                     valitse yksikkö-/monikkomuoto tämän arvon\n"
#~ "                              perusteella\n"
