# translation of gst-plugins-ugly-0.10.17.2.po to Español
# spanish translation for gst-plugins-ugly
# This file is put in the public domain.
# Jorge González <jorgegonz@svn.gnome.org>, 2007, 2009, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-ugly 0.10.17.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
"POT-Creation-Date: 2018-03-19 20:19+0000\n"
"PO-Revision-Date: 2011-10-02 15:45+0200\n"
"Last-Translator: Jorge González González <aloriel@gmail.com>\n"
"Language-Team: Spanish <es@li.org>\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"

msgid "Could not read from CD."
msgstr "No se pudo leer del CD."

msgid "Could not open CD device for reading."
msgstr "No se pudo abrir el dispositivo de CD para su lectura."

msgid "Disc is not an Audio CD."
msgstr "El disco no es un CD de sonido."

msgid "Could not open DVD"
msgstr "No se pudo abrir el DVD"

#, c-format
msgid "Could not open DVD title %d"
msgstr "No se pudo abrir el título %d del DVD"

#, c-format
msgid "Failed to go to chapter %d of DVD title %d"
msgstr "Falló al ir al capítulo %d del título %d del DVD"

#, c-format
msgid ""
"Could not open DVD title %d. Interactive titles are not supported by this "
"element"
msgstr ""
"No se pudo abrir el título %d del DVD. Los títulos interactivos no están "
"soportados por este elemento."

msgid ""
"Could not read DVD. This may be because the DVD is encrypted and a DVD "
"decryption library is not installed."
msgstr ""
"No se pudo leer el DVD. Puede ser debido a que el DVD está cifrado y la "
"biblioteca de descifrado del DVD no está instalada."

msgid "Could not read DVD."
msgstr "No se pudo leer el DVD."

msgid "This stream contains no data."
msgstr "Este medio no contiene datos."

#, fuzzy
#~ msgid ""
#~ "Failed to configure LAME mp3 audio encoder. Check your encoding "
#~ "parameters."
#~ msgstr ""
#~ "Falló al configurar el codificador LAME. Compruebe sus parámetros de "
#~ "codificación."

#~ msgid ""
#~ "The requested bitrate %d kbit/s for property '%s' is not allowed. The "
#~ "bitrate was changed to %d kbit/s."
#~ msgstr ""
#~ "La tasa de bits %d kbps solicitada para la propiedad «%s» no está "
#~ "permitida. La tasa de bits se cambió a %d kbps."

#~ msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
#~ msgstr ""
#~ "Falló al configurar el codificador TwoLAME. Compruebe sus parámetros de "
#~ "codificación."

#~ msgid "Internal data stream error."
#~ msgstr "Error del flujo de datos interno."

#~ msgid "Invalid title information on DVD."
#~ msgstr "Información del título del DVD no válida."

#~ msgid "Could not read title information for DVD."
#~ msgstr "No se pudo leer la información del título para el DVD."

#~ msgid "Failed to open DVD device '%s'."
#~ msgstr "Falló abrir el dispositivo DVD «%s»."

#~ msgid "Failed to set PGC based seeking."
#~ msgstr "Falló al establecer la búsqueda basada en PGC."

#~ msgid "This file is encrypted and cannot be played."
#~ msgstr "Este archivo está cifrado y no se puede reproducir."
