# translation of popt-1.14.pot to Latvian
# Copyright © 2009 Free Software Foundation, Inc.
# This file is distributed under the same license as the popt package.
# This file is put in the public domain.
#
# Rihards Prieditis <RPrieditis@inbox.lv>, 2009.
msgid ""
msgstr ""
"Project-Id-Version: popt-1.14\n"
"Report-Msgid-Bugs-To: <popt-devel@rpm5.org>\n"
"POT-Creation-Date: 2010-02-17 13:35-0500\n"
"PO-Revision-Date: 2009-04-12 16:34+0300\n"
"Last-Translator: Rihards Prieditis <RPrieditis@inbox.lv>\n"
"Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 0.3\n"
"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
"2);\n"

#: popt.c:47
msgid "unknown errno"
msgstr "nezināms kļūdas numurs"

#: popt.c:1290
#, c-format
msgid "option type (%u) not implemented in popt\n"
msgstr "iespējas tips (%u) nav ieviests popt\n"

#: popt.c:1711
msgid "missing argument"
msgstr "trūkst arguments"

#: popt.c:1713
msgid "unknown option"
msgstr "nezināma iespēja"

#: popt.c:1715
msgid "mutually exclusive logical operations requested"
msgstr "pieprasītas savstarpējie izslēdzošas loģiskās operācijas"

#: popt.c:1717
msgid "opt->arg should not be NULL"
msgstr "opcija->arguments nevar būt NULL"

#: popt.c:1719
msgid "aliases nested too deeply"
msgstr "aizstājvārdi iegulti pārāk dziļi"

#: popt.c:1721
msgid "error in parameter quoting"
msgstr "kļuda parametru citēšanā"

#: popt.c:1723
msgid "invalid numeric value"
msgstr "nederīga skaitļa vērtība"

#: popt.c:1725
msgid "number too large or too small"
msgstr "skaitlis pārāk liels, vai pārāk mazs"

#: popt.c:1727
msgid "memory allocation failed"
msgstr "atmiņas iedalīšana neizdevās"

#: popt.c:1729
msgid "config file failed sanity test"
msgstr ""

#: popt.c:1733
msgid "unknown error"
msgstr "nezināma kļūda"

#: popthelp.c:75 popthelp.c:86
msgid "Show this help message"
msgstr "Rādīt šo palīdzības ziņu"

#: popthelp.c:76 popthelp.c:87
msgid "Display brief usage message"
msgstr "Attēlot īsu izmantošanas ziņu"

#: popthelp.c:90
msgid "Display option defaults in message"
msgstr "Attēlot noklusētās iespējas ziņā"

#: popthelp.c:92
msgid "Terminate options"
msgstr "Pārtraukt iespējas"

#: popthelp.c:191
msgid "Help options:"
msgstr "Palīdzības iespējas:"

#: popthelp.c:192
msgid "Options implemented via popt alias/exec:"
msgstr "Iespējas ieviestas caur popt aizstājvārda/izpildāmais:"

#: popthelp.c:200
msgid "NONE"
msgstr "NEKAS"

#: popthelp.c:202
msgid "VAL"
msgstr "VĒRTĪBA"

#: popthelp.c:206
msgid "INT"
msgstr "INT"

#: popthelp.c:207
msgid "SHORT"
msgstr ""

#: popthelp.c:208
msgid "LONG"
msgstr "LONG"

#: popthelp.c:209
msgid "LONGLONG"
msgstr "LONGLONG"

#: popthelp.c:210
msgid "STRING"
msgstr "VIRKNE"

#: popthelp.c:211
msgid "FLOAT"
msgstr "FLOAT"

#: popthelp.c:212
msgid "DOUBLE"
msgstr "DOUBLE"

#: popthelp.c:215
msgid "ARG"
msgstr "ARGUMENTS"

#: popthelp.c:649
msgid "Usage:"
msgstr "Lietošana:"

#: popthelp.c:672
msgid "[OPTION...]"
msgstr "[IESPĒJAS..]"
