# Serbian translation of gst-plugins
# Copyright (C) 2004 Free Software Foundation, Inc.
# This file is distributed under the same license as the gst-plugins-bad package.
# Danilo Segan <dsegan@gmx.net>, 2004.
# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad-0.10.21.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
"POT-Creation-Date: 2012-06-07 16:21+0200\n"
"PO-Revision-Date: 2011-12-04 09:59+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnu@prevod.org>\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-Generator: Virtaal 0.7.0\n"
"X-Project-Style: gnome\n"

msgid "Could not read title information for DVD."
msgstr "Не могу да прочитам информације о наслову ДВД-а."

#, c-format
msgid "Failed to open DVD device '%s'."
msgstr "Нисам успео да отворим ДВД уређај „%s“."

msgid "Failed to set PGC based seeking."
msgstr "Нисам успео да подесим позиционирање засновано на ланцу програма."

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 "No file name specified for writing."
msgstr "Није наведен назив датотеке за упис."

#, c-format
msgid "Could not open file \"%s\" for writing."
msgstr "Не могу да отворим датотеку „%s“ за упис."

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

#, c-format
msgid "Could not write to file \"%s\"."
msgstr "Не могу да пишем у датотеку „%s“."

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

#, c-format
msgid "Device \"%s\" does not exist."
msgstr "Уређај „%s“ не постоји."

#, c-format
msgid "Could not open frontend device \"%s\"."
msgstr "Не могу да отворим управљачки уређај „%s“."

#, c-format
msgid "Could not get settings from frontend device \"%s\"."
msgstr "Не могу да добавим подешавања са управљачког уређаја „%s“."

#, c-format
msgid "Could not open file \"%s\" for reading."
msgstr "Не могу да отворим датотеку „%s“ за читање."

#~ msgid "Could not open device \"%s\" for reading and writing."
#~ msgstr "Не могу да отворим уређај „%s“ ради читања и уписа."

#~ msgid "Device \"%s\" is not a capture device."
#~ msgstr "Уређај „%s“ не представља уређај за снимање."

#~ msgid "Could not write to device \"%s\"."
#~ msgstr "Не могу да пишем на видео уређај „%s“."

#~ msgid "Could not get buffers from device \"%s\"."
#~ msgstr "Не могу да примим бафере са уређаја „%s“."

#~ msgid "Could not open audio device \"%s\" for writing."
#~ msgstr "Не могу да отворим звучни уређај „%s“ ради уписа."

#~ msgid "Could not open control device \"%s\" for writing."
#~ msgstr "Не могу да отворим управљачки уређај „%s“ ради уписа."

#~ msgid "Could not configure audio device \"%s\"."
#~ msgstr "Не могу да подесим звучни уређај „%s“."

#~ msgid "Could not set audio device \"%s\" to %d Hz."
#~ msgstr "Не могу да поставим звучни уређај „%s“ на %d Hz."

#~ msgid "Could not close audio device \"%s\"."
#~ msgstr "Не могу да отворим радио уређај '%s'"

#~ msgid "Could not open video device \"%s\" for writing."
#~ msgstr "Не могу да отворим видео уређај „%s“ ради уписа."

#~ msgid "Could not close video device \"%s\"."
#~ msgstr "Не могу да затворим видео уређај „%s“."

#~ msgid "Error closing file \"%s\"."
#~ msgstr "Грешка при затварању датотеке „%s“."

#~ msgid "No or invalid input audio, AVI stream will be corrupt."
#~ msgstr "Улазног звука нема или је неисправан, АВИ ток ће бити искварен."

#~ msgid "OSS device \"%s\" is already in use by another program."
#~ msgstr "OSS уређај „%s“ већ користи неки програм."

#~ msgid "Could not access device \"%s\", check its permissions."
#~ msgstr "Не могу да приступим уређају „%s“, проверите његова овлашћења."

#~ msgid "Could not open device \"%s\" for writing."
#~ msgstr "Не могу да отворим уређај „%s“ ради уписа."

#~ msgid "Could not open device \"%s\" for reading."
#~ msgstr "Не могу да отворим уређај „%s“ ради читања."

#~ msgid "Volume"
#~ msgstr "Јачина звука"

#~ msgid "Bass"
#~ msgstr "Бас"

#~ msgid "Treble"
#~ msgstr "Шум"

#~ msgid "Synth"
#~ msgstr "Синт."

#~ msgid "PCM"
#~ msgstr "ПЦМ"

#~ msgid "Speaker"
#~ msgstr "Звучник"

#~ msgid "Line-in"
#~ msgstr "Ул.лин."

#~ msgid "Microphone"
#~ msgstr "Микрофон"

#~ msgid "CD"
#~ msgstr "ЦД"

#~ msgid "Mixer"
#~ msgstr "Миксер"

#~ msgid "PCM-2"
#~ msgstr "ПЦМ-2"

#~ msgid "Record"
#~ msgstr "Снимање"

#~ msgid "In-gain"
#~ msgstr "Ул. пој."

#~ msgid "Out-gain"
#~ msgstr "Из. пој."

#~ msgid "Line-1"
#~ msgstr "Лин. 1"

#~ msgid "Line-2"
#~ msgstr "Лин. 2"

#~ msgid "Line-3"
#~ msgstr "Лин. 3"

#~ msgid "Digital-1"
#~ msgstr "Диг. 1"

#~ msgid "Digital-2"
#~ msgstr "Диг. 2"

#~ msgid "Digital-3"
#~ msgstr "Диг. 3"

#~ msgid "Phone-in"
#~ msgstr "Тел. ул."

#~ msgid "Phone-out"
#~ msgstr "Тел. из."

#~ msgid "Video"
#~ msgstr "Видео"

#~ msgid "Radio"
#~ msgstr "Радио"

#~ msgid "Monitor"
#~ msgstr "Праћење"

#, fuzzy
#~ msgid "PC Speaker"
#~ msgstr "Звучник"

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

# Виртуелни Систем Датотека
#~ msgid "Could not open vfs file \"%s\" for reading."
#~ msgstr "Не могу да отворим ВСД датотеку „%s“ ради читања."

#, fuzzy
#~ msgid "No filename given."
#~ msgstr "Име датотеке није задато."

#, fuzzy
#~ msgid "Could not open vfs file \"%s\" for writing: %s."
#~ msgstr "Не могу да отворим ВСД датотеку „%s“ ради уписа."

#, fuzzy
#~ msgid "No filename given"
#~ msgstr "Име датотеке није задато."

#~ msgid "Could not close vfs file \"%s\"."
#~ msgstr "Не могу да затворим ВСД датотеку „%s“."

#~ msgid "No device specified."
#~ msgstr "Уређај није наведен."

#~ msgid "Device is not open."
#~ msgstr "Уређај није отворен."

#~ msgid "Device is open."
#~ msgstr "Уређај је отворен."
