# Latvain translation of gst-plugins
# This file is put in the public domain.
# Arvis Lācis <arvis.lacis@inbox.lv>, 2009.
# Rihards Prieditis <rprieditis@gmail.com>, 2011.
# Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>, 2014.
msgid ""
msgstr ""
"Project-Id-Version: gst-plugins-ugly 1.2.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
"POT-Creation-Date: 2016-11-01 17:53+0200\n"
"PO-Revision-Date: 2014-04-20 16:24+0300\n"
"Last-Translator: Rihards Prieditis <rprieditis@gmail.com>\n"
"Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n"
"Language: lv\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 != 0 ? 1 : "
"2);\n"
"X-Generator: Lokalize 1.5\n"

msgid "Could not read from CD."
msgstr "Nevarēja nolasīt no CD."

msgid "Could not open CD device for reading."
msgstr "Nevarēja atvērt CD ierīci lasīšanai."

msgid "Disc is not an Audio CD."
msgstr "Disks nav Audio CD."

msgid "Could not open DVD"
msgstr "Nevarēja atvērt DVD"

#, c-format
msgid "Could not open DVD title %d"
msgstr "Nevarēja atvērt DVD nosaukumu %d"

#, c-format
msgid "Failed to go to chapter %d of DVD title %d"
msgstr "Neizdevās pāriet uz %d nodaļu DVD nosaukumā %d"

#, c-format
msgid ""
"Could not open DVD title %d. Interactive titles are not supported by this "
"element"
msgstr ""
"Nevarēja atvērt DVD nosaukumu %d. Šis elements nenodrošina interaktīvos "
"nosaukumus."

msgid ""
"Could not read DVD. This may be because the DVD is encrypted and a DVD "
"decryption library is not installed."
msgstr ""
"Nevarēja nolasīt DVD. Iespējams, ka DVD ir šifrēts un DVD atšifrēšanas "
"bibliotēka nav instalēta."

msgid "Could not read DVD."
msgstr "Nevarēja nolasīt DVD."

msgid ""
"Failed to configure LAME mp3 audio encoder. Check your encoding parameters."
msgstr ""
"Neizdevās konfigurēt LAME mp3 audio kodētāju. Pārbaudiet savus kodēšanas "
"parametrus."

#, c-format
msgid ""
"The requested bitrate %d kbit/s for property '%s' is not allowed. The "
"bitrate was changed to %d kbit/s."
msgstr ""
"Pieprasītais straumēšanas ātrums %d kbiti/s nepieciešamajai īpašībai “%s” "
"nav atļauts. Straumēšanas ātrums tika mainīts uz %d kbitiem/s."

msgid "Failed to configure TwoLAME encoder. Check your encoding parameters."
msgstr ""
"Neizdevās konfigurēt TwoLAME kodētāju. Pārbaudiet savus kodēšanas parametrus."

msgid "This stream contains no data."
msgstr "Šī straume nesatur datus."

#~ msgid "Internal data stream error."
#~ msgstr "Iekšēja datu plūsmas kļūda."

#~ msgid "Invalid title information on DVD."
#~ msgstr "Nederīga DVD virsraksta informācija."

#~ msgid "Could not read title information for DVD."
#~ msgstr "Nevarēja nolasīt virsrakstu informāciju no DVD."

#~ msgid "Failed to open DVD device '%s'."
#~ msgstr "Neizdevās atvērt DVD ierīci \"%s\"."

#~ msgid "Failed to set PGC based seeking."
#~ msgstr "Neizdevās uzstādīt PCG balstīto meklēšanu."
