# Russian message translation file for pltcl
# Copyright (C) 2012-2016 PostgreSQL Global Development Group
# This file is distributed under the same license as the PostgreSQL package.
# Alexander Lakhin <exclusion@gmail.com>, 2012-2017, 2019, 2022.
msgid ""
msgstr ""
"Project-Id-Version: pltcl (PostgreSQL current)\n"
"Report-Msgid-Bugs-To: pgsql-bugs@lists.postgresql.org\n"
"POT-Creation-Date: 2022-08-10 11:57+0300\n"
"PO-Revision-Date: 2019-08-29 15:43+0300\n"
"Last-Translator: Alexander Lakhin <exclusion@gmail.com>\n"
"Language-Team: Russian <pgsql-ru-general@postgresql.org>\n"
"Language: ru\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"

#: pltcl.c:465
msgid "PL/Tcl function to call once when pltcl is first used."
msgstr "Функция на PL/Tcl, вызываемая при первом использовании pltcl."

#: pltcl.c:472
msgid "PL/TclU function to call once when pltclu is first used."
msgstr "Функция на PL/TclU, вызываемая при первом использовании pltclu."

#: pltcl.c:636
#, c-format
msgid "function \"%s\" is in the wrong language"
msgstr "Функция \"%s\" объявлена на другом языке"

#: pltcl.c:647
#, c-format
msgid "function \"%s\" must not be SECURITY DEFINER"
msgstr "функция \"%s\" не должна иметь характеристику SECURITY DEFINER"

#. translator: %s is "pltcl.start_proc" or "pltclu.start_proc"
#: pltcl.c:681
#, c-format
msgid "processing %s parameter"
msgstr "обработка параметра %s"

#: pltcl.c:835
#, c-format
msgid "set-valued function called in context that cannot accept a set"
msgstr ""
"функция, возвращающая множество, вызвана в контексте, где ему нет места"

#: pltcl.c:1008
#, c-format
msgid ""
"function returning record called in context that cannot accept type record"
msgstr ""
"функция, возвращающая запись, вызвана в контексте, не допускающем этот тип"

#: pltcl.c:1292
#, c-format
msgid "could not split return value from trigger: %s"
msgstr "разложить возвращаемое из триггера значение не удалось: %s"

#: pltcl.c:1373 pltcl.c:1803
#, c-format
msgid "%s"
msgstr "%s"

#: pltcl.c:1374
#, c-format
msgid ""
"%s\n"
"in PL/Tcl function \"%s\""
msgstr ""
"%s\n"
"в функции PL/Tcl \"%s\""

#: pltcl.c:1538
#, c-format
msgid "trigger functions can only be called as triggers"
msgstr "триггерные функции могут вызываться только в триггерах"

#: pltcl.c:1542
#, c-format
msgid "PL/Tcl functions cannot return type %s"
msgstr "функции PL/Tcl не могут возвращать тип %s"

#: pltcl.c:1581
#, c-format
msgid "PL/Tcl functions cannot accept type %s"
msgstr "функции PL/Tcl не могут принимать тип %s"

#: pltcl.c:1695
#, c-format
msgid "could not create internal procedure \"%s\": %s"
msgstr "не удалось создать внутреннюю процедуру \"%s\": %s"

#: pltcl.c:3197
#, c-format
msgid "column name/value list must have even number of elements"
msgstr "в списке имён/значений столбцов должно быть чётное число элементов"

#: pltcl.c:3215
#, c-format
msgid "column name/value list contains nonexistent column name \"%s\""
msgstr ""
"список имён/значений столбцов содержит имя несуществующего столбца \"%s\""

#: pltcl.c:3222
#, c-format
msgid "cannot set system attribute \"%s\""
msgstr "присвоить значение системному атрибуту \"%s\" нельзя"

#: pltcl.c:3228
#, c-format
msgid "cannot set generated column \"%s\""
msgstr "присвоить значение генерируемому столбцу \"%s\" нельзя"

#~ msgid "module \"unknown\" not found in pltcl_modules"
#~ msgstr "модуль \"unknown\" не найден в pltcl_modules"

#~ msgid "could not load module \"unknown\": %s"
#~ msgstr "загрузить модуль \"unknown\" не удалось: %s"

#~ msgid "unrecognized attribute \"%s\""
#~ msgstr "нераспознанный атрибут \"%s\""

#~ msgid "out of memory"
#~ msgstr "нехватка памяти"

#~ msgid "PL/Tcl functions cannot return composite types"
#~ msgstr "функции PL/Tcl не могут возвращать составные типы"
