# Finnish translation for gst-plugins-bad.
# This file is distributed under the same license as the gst-plugins-bad package.
# Copyright (C) 2007 Ilkka Tuohela.
# Copyright (C) 2009 Tommi Vainikainen.
# Suomennos: http://gnome.fi/
#
# Ilkka Tuohela <hile@iki.fi>, 2007.
# Tommi Vainikainen <thv@iki.fi>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad 0.10.13.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
"POT-Creation-Date: 2014-02-08 12:44+0100\n"
"PO-Revision-Date: 2009-08-12 22:13+0300\n"
"Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@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"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: KBabel 1.11.2\n"

msgid "Could not read title information for DVD."
msgstr "DVD:n otsikkotietoja ei voitu lukea."

#, c-format
msgid "Failed to open DVD device '%s'."
msgstr "DVD-laitetta \"%s\" ei voitu avata."

msgid "Failed to set PGC based seeking."
msgstr "PGC-pohjaisen kelauksen asetus epäonnistui."

msgid ""
"Could not read DVD. This may be because the DVD is encrypted and a DVD "
"decryption library is not installed."
msgstr ""

#, fuzzy
msgid "Could not read DVD."
msgstr "DVD:n otsikkotietoja ei voitu lukea."

msgid "This file contains no playable streams."
msgstr ""

msgid "Couldn't get the Manifest's URI"
msgstr ""

msgid "Failed to get fragment URL."
msgstr ""

msgid "Couldn't download fragments"
msgstr ""

msgid "No file name specified for writing."
msgstr "Kirjoitettavaa tiedostonimeä ei annettu."

#, c-format
msgid "Could not open file \"%s\" for writing."
msgstr "Tiedostoa \"%s\" ei voi avata kirjoitettavaksi."

msgid "Internal data stream error."
msgstr "Sisäisen tietovirran virhe."

#, c-format
msgid "Could not write to file \"%s\"."
msgstr "Tiedostoon \"%s\" ei voitu kirjoittaa."

msgid "Could not establish connection to sndio"
msgstr ""

msgid "Failed to query sndio capabilities"
msgstr ""

#, fuzzy
msgid "Could not configure sndio"
msgstr "Tiedostoa \"%s\" ei voi avata luettavaksi."

#, fuzzy
msgid "Could not start sndio"
msgstr "DVD:n otsikkotietoja ei voitu lukea."

msgid "Internal data flow error."
msgstr "Sisäinen tietovirtavirhe."

msgid "Generated file has a larger preroll time than its streams duration"
msgstr ""

#, c-format
msgid "Missing element '%s' - check your GStreamer installation."
msgstr ""

msgid "File location is set to NULL, please set it to a valid filename"
msgstr ""

msgid "Subpicture format was not configured before data flow"
msgstr ""

#, c-format
msgid "Given file name \"%s\" can't be converted to local file name encoding."
msgstr ""

#, c-format
msgid "Device \"%s\" does not exist."
msgstr "Laitetta \"%s\" ei ole olemassa."

#, c-format
msgid "Could not open frontend device \"%s\"."
msgstr "Edustalaitetta \"%s\" ei voitu avata."

#, c-format
msgid "Could not get settings from frontend device \"%s\"."
msgstr "Edustalaitteen \"%s\" asetuksia ei saatu."

#, c-format
msgid "Could not open file \"%s\" for reading."
msgstr "Tiedostoa \"%s\" ei voi avata luettavaksi."

#, fuzzy
msgid "Couldn't find DVB channel configuration file"
msgstr "Näennäinen mikserikanava-asetus"

#, fuzzy, c-format
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Näennäinen mikserikanava-asetus"

msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""

#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr ""

#~ msgid "%s %d"
#~ msgstr "%s %d"

#~ msgid "Internal clock error."
#~ msgstr "Sisäinen kellovirhe."

#~ msgid "PCM 1"
#~ msgstr "PCM 1"

#~ msgid "PCM 2"
#~ msgstr "PCM 2"

#~ msgid "PCM 3"
#~ msgstr "PCM 3"

#~ msgid "PCM 4"
#~ msgstr "PCM 4"

#~ msgid "Green connector function"
#~ msgstr "Vihreän liittimen toiminto"

#~ msgid "Green front panel connector function"
#~ msgstr "Vihreän etupaneelin liittimen toiminto"

#~ msgid "Pink connector function"
#~ msgstr "Violetin liittimen toiminto"

#~ msgid "Pink front panel connector function"
#~ msgstr "Violetin etupaneelin liittimen toiminto"

#~ msgid "Blue connector function"
#~ msgstr "Sinisen liittimen toiminto"

#~ msgid "Blue front panel connector function"
#~ msgstr "Sinisen etupaneelin liittimen toiminto"

#~ msgid "Orange connector function"
#~ msgstr "Oranssin liittimen toiminto"

#~ msgid "Orange front panel connector function"
#~ msgstr "Oranssin etupaneelin liittimen toiminto"

#~ msgid "Black connector function"
#~ msgstr "Mustan liittimen toiminto"

#~ msgid "Black front panel connector function"
#~ msgstr "Mustan etupaneelin liittimen toiminto"

#~ msgid "Gray connector function"
#~ msgstr "Harmaan liittimen toiminto"

#~ msgid "Gray front panel connector function"
#~ msgstr "Harmaan etupaneelin liittimen toiminto"

#~ msgid "White connector function"
#~ msgstr "Valkoisen liittimen toiminto"

#~ msgid "White front panel connector function"
#~ msgstr "Valkoisen etupaneelin liittimen toiminto"

#~ msgid "Red connector function"
#~ msgstr "Punaisen liittimen toiminto"

#~ msgid "Red front panel connector function"
#~ msgstr "Punaisen etupaneelin liittimen toiminto"

#~ msgid "Yellow connector function"
#~ msgstr "Keltaisen liittimen toiminto"

#~ msgid "Yellow front panel connector function"
#~ msgstr "Keltaisen etupaneelin liittimen toiminto"
