# 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: 2018-07-20 00:56+0100\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 "This stream contains no data."
msgstr "Šī straume nesatur datus."

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

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