# translation of popt-1.14.ru.po to Russian
# This file is put in the public domain.
# This file is distributed under the same license as the popt package.
# Eugene Kanter <eugene@blackcatlinux.com>, 2001.
# Yuri Kozlov <yuray@komyakino.ru>, 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-02-01 13:30+0300\n"
"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
"Language-Team: Russian <gnu@mx.ru>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\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"

#: popt.c:47
msgid "unknown errno"
msgstr "неизвестный errno"

#: popt.c:1290
#, c-format
msgid "option type (%u) not implemented in popt\n"
msgstr "обработка параметра (%u) в popt не предусмотрена\n"

#: popt.c:1711
msgid "missing argument"
msgstr "пропущен аргумент"

#: popt.c:1713
msgid "unknown option"
msgstr "неизвестный параметр"

#: popt.c:1715
msgid "mutually exclusive logical operations requested"
msgstr "запрошены взаимно исключающие логические операции"

#: popt.c:1717
msgid "opt->arg should not be NULL"
msgstr "opt->arg не может быть NULL"

#: popt.c:1719
msgid "aliases nested too deeply"
msgstr "превышен уровень допустимой рекурсии подстановок"

#: popt.c:1721
msgid "error in parameter quoting"
msgstr "ошибка помещения параметров в кавычки"

#: popt.c:1723
msgid "invalid numeric value"
msgstr "неправильное числовое значение"

#: popt.c:1725
msgid "number too large or too small"
msgstr "числовое значение за пределами предусмотренного"

#: popt.c:1727
msgid "memory allocation failed"
msgstr "не удалось выделить память"

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

#: popt.c:1733
msgid "unknown error"
msgstr "неизвестная ошибка"

#: popthelp.c:75 popthelp.c:86
msgid "Show this help message"
msgstr "Показать эту справку"

#: popthelp.c:76 popthelp.c:87
msgid "Display brief usage message"
msgstr "Показать краткую инструкцию по использованию"

#: popthelp.c:90
msgid "Display option defaults in message"
msgstr "Показать параметры по умолчанию"

#: popthelp.c:92
msgid "Terminate options"
msgstr "Завершает параметры"

#: popthelp.c:191
msgid "Help options:"
msgstr "Параметры вывода справки:"

#: popthelp.c:192
msgid "Options implemented via popt alias/exec:"
msgstr "Параметры, реализованные через popt alias/exec:"

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

#: popthelp.c:202
msgid "VAL"
msgstr "VAL"

#: 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 "STRING"

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

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

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

#: popthelp.c:649
msgid "Usage:"
msgstr "Использование:"

#: popthelp.c:672
msgid "[OPTION...]"
msgstr "[ПАРАМЕТР...]"
