# Bulgarian translation of gst-plugins-ugly.
# Copyright (C) 2007, 2008, 2009, 2010, 2011, 2016 Free Software Foundation, Inc.
# This file is distributed under the same license as the gst-plugins-ugly package.
# Alexander Shopov <ash@kambanaria.org>, 2007, 2008, 2009, 2010, 2011, 2016.
#
#
msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-ugly 1.7.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
"POT-Creation-Date: 2018-10-02 23:04+0100\n"
"PO-Revision-Date: 2016-02-21 21:03+0200\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@ludost.net>\n"
"Language: bg\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"

msgid "Could not read from CD."
msgstr "CD-то не може да бъде прочетено."

msgid "Could not open CD device for reading."
msgstr "Не може да се чете от устройството за CD-та."

msgid "Disc is not an Audio CD."
msgstr "Дискът не е аудио CD."

msgid "Could not open DVD"
msgstr "DVD-то не може да бъде отворено"

#, c-format
msgid "Could not open DVD title %d"
msgstr "Заглавната част %d от DVD-то не може да бъде отворена"

#, c-format
msgid "Failed to go to chapter %d of DVD title %d"
msgstr "Не може да се премине към раздел %d от заглавната част %d на DVD-то"

#, c-format
msgid ""
"Could not open DVD title %d. Interactive titles are not supported by this "
"element"
msgstr ""
"Заглавната част %d от DVD-то не може да бъде отворена. Интерактивни части не "
"се поддържат от този елемент"

msgid ""
"Could not read DVD. This may be because the DVD is encrypted and a DVD "
"decryption library is not installed."
msgstr ""
"DVD-то не може да бъде прочетено. Причината може да е, че DVD-то е шифрирано "
"и не е инсталирана библиотека за дешифриране."

msgid "Could not read DVD."
msgstr "DVD-то не може да бъде прочетено."

msgid "This stream contains no data."
msgstr "Потокът не съдържа данни."

#~ msgid ""
#~ "Failed to configure LAME mp3 audio encoder. Check your encoding "
#~ "parameters."
#~ msgstr ""
#~ "Кодерът за mp3 — LAME не може да бъде настроен. Проверете настройките за "
#~ "кодиране."

#~ 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 ""
#~ "Кодерът TwoLAME не може да бъде настроен. Проверете настройките за "
#~ "кодиране."

#~ msgid "Internal data stream error."
#~ msgstr "Вътрешна грешка в потока от данни."
