# Serbian translation of gst-plugins
# This file is put in the public domain.
# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011, 2013.
msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-ugly-1.1.4\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
"POT-Creation-Date: 2017-01-12 14:45+0200\n"
"PO-Revision-Date: 2013-10-03 22:30+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
"Language: sr\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%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Project-Style: gnome\n"

msgid "Could not read from CD."
msgstr "Не могу да читам ЦД."

msgid "Could not open CD device for reading."
msgstr "Не могу да отворим ЦД уређај ради читања."

msgid "Disc is not an Audio CD."
msgstr "Диск није Звучни ЦД."

msgid "Could not open DVD"
msgstr "Не могу да отворим ДВД"

#, c-format
msgid "Could not open DVD title %d"
msgstr "Не могу да отворим ДВД наслов „%d“"

#, c-format
msgid "Failed to go to chapter %d of DVD title %d"
msgstr "Нисам успео да стигнем до поглавља „%d“ ДВД наслова „%d“"

#, c-format
msgid ""
"Could not open DVD title %d. Interactive titles are not supported by this "
"element"
msgstr ""
"Не могу да отворим ДВД наслов „%d“. Овај елемент не подржава међудејствене "
"наслове"

msgid ""
"Could not read DVD. This may be because the DVD is encrypted and a DVD "
"decryption library is not installed."
msgstr ""
"Не могу да читам ДВД. Можда зато што је ДВД шифрован а библиотека за "
"дешифровање ДВД-а није инсталирана."

msgid "Could not read DVD."
msgstr "Не могу да читам ДВД."

msgid ""
"Failed to configure LAME mp3 audio encoder. Check your encoding parameters."
msgstr ""
"Нисам успео да подесим енкодер звука ЛАМЕ мп3. Проверите ваше параметре "
"кодирања."

#, c-format
msgid ""
"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
"bitrate was changed to %d kbit/s."
msgstr ""
"Тражени проток података од %d kbit/s за „%s“ није допуштен. Проток података "
"је постављен на %d kbit/s."

msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
msgstr ""
"Нисам успео да подесим ДваЛАМЕ енкодер. Проверите ваше параметре кодирања."

msgid "This stream contains no data."
msgstr "Овај ток не садржи податке."

#~ msgid "Internal data stream error."
#~ msgstr "Унутрашња грешка тока података."
