# Serbian translation of gst-plugins
# Copyright (C) 2014 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—2015.
msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-bad-1.6.0\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
"POT-Creation-Date: 2016-11-01 17:49+0200\n"
"PO-Revision-Date: 2015-12-24 11:34+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"

msgid "failed to draw pattern"
msgstr ""

msgid "A GL error occured"
msgstr ""

msgid "format wasn't negotiated before get function"
msgstr "запис није договорен пре функције добављања (get)"

msgid "OpenCV failed to load template image"
msgstr "ОтворениЦВ није успео да учита слику шаблона"

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 "This file contains no playable streams."
msgstr "Ова датотека не садржи токове за пуштање."

msgid "Could not open sndfile stream for reading."
msgstr "Не могу да отворим ток датотеке звука за читање."

msgid "Could not establish connection to sndio"
msgstr "Не могу да успоставим везу са улазом/излазом звука"

msgid "Failed to query sndio capabilities"
msgstr "Нисам успео да испитам могућности улаза/излаза звука"

msgid "Could not configure sndio"
msgstr "Не могу да подесим улаз/излаз звука"

msgid "Could not start sndio"
msgstr "Не могу да покренем улаз/излаз звука"

msgid "Generated file has a larger preroll time than its streams duration"
msgstr "Створена датотека има дуже време припреме од трајања њеног тока"

#, c-format
msgid "Missing element '%s' - check your GStreamer installation."
msgstr "Недостаје елемент „%s“ — проверите вашу инсталацију Гстримера."

msgid "File location is set to NULL, please set it to a valid filename"
msgstr ""
"Место датотеке је подешено на НИШТА, подесите га на исправан назив датотеке"

msgid "Digitalzoom element couldn't be created"
msgstr "Елемент дигиталног зума не може бити направљен"

msgid "Subpicture format was not configured before data flow"
msgstr "Запис подслике није подешен пре протока података"

msgid "Failed to get fragment URL."
msgstr "Нисам успео да добијем адресу одломка."

msgid "Couldn't download fragments"
msgstr "Не могу да преузмем одломке"

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

msgid "No file name specified for writing."
msgstr "Није наведен назив датотеке за упис."

#, c-format
msgid "Given file name \"%s\" can't be converted to local file name encoding."
msgstr ""
"Дати назив датотеке „%s“ не може бити претворен у кодирање назива месне "
"датотеке."

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

#, 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 "Cannot enumerate delivery systems from frontend device \"%s\"."
msgstr "Не могу да нумеришем системе доставе са управљачког уређаја „%s“."

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

#, fuzzy
msgid "Couldn't find channel configuration file"
msgstr "Не могу да пронађем датотеку подешавања ДВБ канала"

#, fuzzy, c-format
msgid "Couldn't load channel configuration file: '%s'"
msgstr "Не могу да учитам датотеку подешавања ДВБ канала: %s"

#, fuzzy, c-format
msgid "Couldn't find details for channel '%s'"
msgstr "Не могу да пронађем податке за ДВБ канал „%s“"

#, fuzzy, c-format
msgid "No properties for channel '%s'"
msgstr "Не могу да пронађем податке за ДВБ канал „%s“"

#, fuzzy, c-format
msgid "Failed to set properties for channel '%s'"
msgstr "Не могу да пронађем податке за ДВБ канал „%s“"

#, fuzzy, c-format
msgid "Couldn't find channel configuration file: '%s'"
msgstr "Не могу да пронађем датотеку подешавања ДВБ канала"

#, fuzzy
msgid "Channel configuration file doesn't contain any channels"
msgstr "Датотека подешавања ДВБ канала не садржи ниједан канал"

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

#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "основни аудио усклађивач звучних догађаја Гстримера"

#~ msgid ""
#~ "GStreamer can play audio using any number of output elements. Some "
#~ "possible choices are osssink, pulsesink and alsasink. The audiosink can "
#~ "be a partial pipeline instead of just one element."
#~ msgstr ""
#~ "Гстример може да пушта аудио користећи било који број излазних елемената. "
#~ "Неки могући избори су „osssink“, „pulsesink“ и „alsasink“. Аудио "
#~ "усклађивач може бити делимична спојка уместо само једног елемента."

#~ msgid "description for default GStreamer sound events audiosink"
#~ msgstr "опис основног аудио усклађивача звучних догађаја Гстримера"

#~ msgid "Describes the selected audiosink element."
#~ msgstr "Описује изабрани елемент аудио усклађивача."

#~ msgid "default GStreamer audiosink for Audio/Video Conferencing"
#~ msgstr "основни аудио усклађивач Гстримера за аудио/видео састанчење"

#~ msgid ""
#~ "description for default GStreamer audiosink for Audio/Video Conferencing"
#~ msgstr "опис основног аудио усклађивач Гстримера за аудио/видео састанчење"

#~ msgid "default GStreamer audiosink for Music and Movies"
#~ msgstr "основни аудио усклађивач Гстримера за музику и филмове"

#~ msgid "description for default GStreamer audiosink for Music and Movies"
#~ msgstr "опис основног аудио усклађивача Гстримера за музику и филмове"

#~ msgid "default GStreamer videosink"
#~ msgstr "основни видео усклађивач Гстримера"

#~ msgid ""
#~ "GStreamer can play video using any number of output elements. Some "
#~ "possible choices are xvimagesink, ximagesink, sdlvideosink and aasink. "
#~ "The videosink can be a partial pipeline instead of just one element."
#~ msgstr ""
#~ "Гстример може да пушта видео користећи било који број излазних елемената. "
#~ "Неки могући избори су „xvimagesink“, „ximagesink“, „sdlvideosink“ и "
#~ "„aasink“. Видео усклађивач може бити делимична спојка уместо само једног "
#~ "елемента."

#~ msgid "description for default GStreamer videosink"
#~ msgstr "опис основног видео усклађивача Гстримера"

#~ msgid "Describes the selected videosink element."
#~ msgstr "Описује изабрани елемент видео усклађивача."

#~ msgid "default GStreamer audiosrc"
#~ msgstr "основни аудио извор Гстримера"

#~ msgid ""
#~ "GStreamer can record audio using any number of input elements. Some "
#~ "possible choices are osssrc, pulsesrc and alsasrc. The audio source can "
#~ "be a partial pipeline instead of just one element."
#~ msgstr ""
#~ "Гстример може да снима аудио користећи било који број излазних елемената. "
#~ "Неки могући избори су „osssrc“, „pulsesrc“ и „alsasrc“. Извор звука може "
#~ "бити делимична спојка уместо само једног елемента."

#~ msgid "description for default GStreamer audiosrc"
#~ msgstr "опис основног аудио извора Гстримера"

#~ msgid "Describes the selected audiosrc element."
#~ msgstr "Описује изабрани елемент аудио извора."

#~ msgid "default GStreamer videosrc"
#~ msgstr "основни видео извор Гстримера"

#~ msgid ""
#~ "GStreamer can record video from any number of input elements. Some "
#~ "possible choices are v4lsrc, v4l2src and videotestsrc. The video source "
#~ "can be a partial pipeline instead of just one element."
#~ msgstr ""
#~ "Гстример може да снима видео користећи било који број излазних елемената. "
#~ "Неки могући избори су „v4lsrc“, „v4l2src“ и “videotestsrc“. Извор видеа "
#~ "може бити делимична спојка уместо само једног елемента."

#~ msgid "description for default GStreamer videosrc"
#~ msgstr "опис основног видео извора Гстримера"

#~ msgid "Describes the selected videosrc element."
#~ msgstr "Описује изабрани елемент видео извора."

#~ msgid "default GStreamer visualization"
#~ msgstr "основно приказивање Гстримера"

#~ msgid ""
#~ "GStreamer can put visualization plugins in a pipeline to transform audio "
#~ "streams in video frames. Some possible choices are goom, goom2k1 and "
#~ "synaesthesia. The visualization plugin can be a partial pipeline instead "
#~ "of just one element."
#~ msgstr ""
#~ "Гстример може да стави прикључке приказивања у спојку да претвори аудио "
#~ "токове у видео кадрове. Неки могући избори су „goom“, „goom2k1“ и "
#~ "„synaesthesia“. Прикључак приказивања може бити делимична спојка уместо "
#~ "само једног елемента."

#~ msgid "description for default GStreamer visualization"
#~ msgstr "опис основног приказивања Гстримера"

#~ msgid "Describes the selected visualization element."
#~ msgstr "Описује изабрани елемент приказивања."

#~ msgid "Couldn't get the Manifest's URI"
#~ msgstr "Не могу да добавим путању Манифеста"

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