# 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: 2018-10-02 23:04+0100\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 "This stream contains no data."
msgstr "Овај ток не садржи податке."

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

#~ 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 "Internal data stream error."
#~ msgstr "Унутрашња грешка тока података."
