# Romanian translation for gst-plugins-ugly
# This file is distributed under the same license as the gst-plugins-ugly package.
# Lucian Adrian Grijincu <lucian.grijincu@gmail.com>, 2010.
msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-ugly 0.10.14.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
"POT-Creation-Date: 2018-10-02 23:04+0100\n"
"PO-Revision-Date: 2010-08-16 03:32+0300\n"
"Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
"20)) ? 1 : 2);;\n"
"X-Generator: Virtaal 0.6.1\n"

msgid "Could not read from CD."
msgstr "Nu s-a putut citi de pe CD."

msgid "Could not open CD device for reading."
msgstr "Nu s-a putut deschide dispozitivul CD pentru citire."

msgid "Disc is not an Audio CD."
msgstr "Discul nu este un CD audio."

msgid "Could not open DVD"
msgstr "Nu s-a putut deschide DVD"

#, c-format
msgid "Could not open DVD title %d"
msgstr "Nu s-a putut deschide titlul DVD %d"

#, c-format
msgid "Failed to go to chapter %d of DVD title %d"
msgstr "Nu s-a putut sări la capitolul %d al titlului DVD %d"

#, c-format
msgid ""
"Could not open DVD title %d. Interactive titles are not supported by this "
"element"
msgstr ""
"Nu s-a putut deschide titlul DVD %d. Titlurile interactive nu sunt suportate "
"de acest element"

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 "Nu s-a putut deschide DVD"

msgid "This stream contains no data."
msgstr "Fluxul acesta nu conține date."

#, fuzzy
#~ msgid ""
#~ "Failed to configure LAME mp3 audio encoder. Check your encoding "
#~ "parameters."
#~ msgstr ""
#~ "Nu s-a putut configura codorul TwoLAME. Verificați parametrii de codare."

#~ msgid ""
#~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The "
#~ "bitrate was changed to %d kbit/s."
#~ msgstr ""
#~ "Rata de biți solicitată de %d kbiți/s pentru proprietatea „%s” nu este "
#~ "permisă. Rata de biți a fost modificată la %d kbiți/s."

#~ msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
#~ msgstr ""
#~ "Nu s-a putut configura codorul TwoLAME. Verificați parametrii de codare."

#~ msgid "Internal data stream error."
#~ msgstr "Eroare internă a fluxului de date."

#, fuzzy
#~ msgid ""
#~ "Failed to configure LAMEMP3ENC encoder. Check your encoding parameters."
#~ msgstr ""
#~ "Nu s-a putut configura codorul LAME. Verificați parametrii de codare."
