# 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-03-01 16:53+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 "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 "Internal data flow error."
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 "Internal data stream error."
msgstr "Унутрашња грешка тока података."

msgid "Couldn't download fragments"
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“ за читање."

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

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

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

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

#~ 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“."
