# Friulian messages for gst-plugins-ugly-1.10.0.
# This file is put in the public domain.
# Fabio Tomat <f.t.public@gmail.com>, 2016.
#
msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-ugly 1.10.0\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
"POT-Creation-Date: 2018-10-02 23:04+0100\n"
"PO-Revision-Date: 2016-11-30 16:23+0100\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian <f.t.public@gmail.com>\n"
"Language: fur\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 1.8.11\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

msgid "Could not read from CD."
msgstr "Impussibil lei dal CD."

msgid "Could not open CD device for reading."
msgstr "Impussibil vierzi il dispositîf CD par lei."

msgid "Disc is not an Audio CD."
msgstr "Il disc nol è un CD Audio."

msgid "Could not open DVD"
msgstr "Impussibil vierzi il DVD"

#, c-format
msgid "Could not open DVD title %d"
msgstr "Impussibil vierzi il titul DVD %d"

#, c-format
msgid "Failed to go to chapter %d of DVD title %d"
msgstr "No si è rivâts a lâ al cjapitul %d dal titul DVD %d"

#, c-format
msgid ""
"Could not open DVD title %d. Interactive titles are not supported by this "
"element"
msgstr ""
"Impussibil vierzi il titul DVD %d. I titui interatîfs no son supuartâts di "
"chest element"

msgid ""
"Could not read DVD. This may be because the DVD is encrypted and a DVD "
"decryption library is not installed."
msgstr ""
"Impussibil lei il DVD. Al podarès jessi par vie che il DVD al è cifrât e une "
"librarie di decifradure no je instalade."

msgid "Could not read DVD."
msgstr "Impussibil lei il DVD."

msgid "This stream contains no data."
msgstr "Il flus nol conten dâts."

#~ msgid ""
#~ "Failed to configure LAME mp3 audio encoder. Check your encoding "
#~ "parameters."
#~ msgstr ""
#~ "No si è rivâts a configurâ il codificadôr audio mp3 LAME. Controle i "
#~ "parametris di codifiche."

#~ msgid ""
#~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The "
#~ "bitrate was changed to %d kbit/s."
#~ msgstr ""
#~ "Il bitrate domandât (%d kbit/s) pe proprietât '%s' nol è permetût. Il "
#~ "bitrate al è stât cambiât a %d kbit/s."

#~ msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
#~ msgstr ""
#~ "No si è rivâts a configurâ il codificadôr TwoLAME. Controle i parametris "
#~ "di codifiche."
