mirror of
https://github.com/postgres/postgres.git
synced 2025-07-14 08:21:07 +03:00
Translation updates
Source-Git-URL: git://git.postgresql.org/git/pgtranslation/messages.git Source-Git-Hash: c5a8de3653bb1af6b0eb41cc6bf090c5522df52b
This commit is contained in:
@ -10,8 +10,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: plpython (PostgreSQL 9.6)\n"
|
||||
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
|
||||
"POT-Creation-Date: 2016-05-02 20:07+0000\n"
|
||||
"PO-Revision-Date: 2016-05-25 12:29-0500\n"
|
||||
"POT-Creation-Date: 2017-07-05 15:07+0000\n"
|
||||
"PO-Revision-Date: 2017-07-07 20:13-0500\n"
|
||||
"Last-Translator: Carlos Chapi <carlos.chapi@2ndquadrant.com>\n"
|
||||
"Language-Team: PgSQL-es-Ayuda <pgsql-es-ayuda@postgresql.org>\n"
|
||||
"Language: es\n"
|
||||
@ -19,56 +19,56 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Poedit 1.8.7\n"
|
||||
"X-Generator: Poedit 2.0.2\n"
|
||||
|
||||
#: plpy_cursorobject.c:101
|
||||
#: plpy_cursorobject.c:100
|
||||
#, c-format
|
||||
msgid "plpy.cursor expected a query or a plan"
|
||||
msgstr "plpy.cursor espera una consulta o un plan"
|
||||
|
||||
#: plpy_cursorobject.c:179
|
||||
#: plpy_cursorobject.c:176
|
||||
#, c-format
|
||||
msgid "plpy.cursor takes a sequence as its second argument"
|
||||
msgstr "plpy.cursor lleva una secuencia como segundo argumento"
|
||||
|
||||
#: plpy_cursorobject.c:195 plpy_spi.c:229
|
||||
#: plpy_cursorobject.c:192 plpy_spi.c:226
|
||||
#, c-format
|
||||
msgid "could not execute plan"
|
||||
msgstr "no se pudo ejecutar el plan"
|
||||
|
||||
#: plpy_cursorobject.c:198 plpy_spi.c:232
|
||||
#: plpy_cursorobject.c:195 plpy_spi.c:229
|
||||
#, c-format
|
||||
msgid "Expected sequence of %d argument, got %d: %s"
|
||||
msgid_plural "Expected sequence of %d arguments, got %d: %s"
|
||||
msgstr[0] "Se esperaba una secuencia de %d argumento, se obtuvo %d: %s"
|
||||
msgstr[1] "Se esperaba una secuencia de %d argumentos, se obtuvo %d: %s"
|
||||
|
||||
#: plpy_cursorobject.c:354
|
||||
#: plpy_cursorobject.c:350
|
||||
#, c-format
|
||||
msgid "iterating a closed cursor"
|
||||
msgstr "iterando un cursor cerrado"
|
||||
|
||||
#: plpy_cursorobject.c:362 plpy_cursorobject.c:427
|
||||
#: plpy_cursorobject.c:358 plpy_cursorobject.c:423
|
||||
#, c-format
|
||||
msgid "iterating a cursor in an aborted subtransaction"
|
||||
msgstr "iterando un cursor en una subtransacción abortada"
|
||||
|
||||
#: plpy_cursorobject.c:419
|
||||
#: plpy_cursorobject.c:415
|
||||
#, c-format
|
||||
msgid "fetch from a closed cursor"
|
||||
msgstr "haciendo «fetch» en un cursor cerrado"
|
||||
|
||||
#: plpy_cursorobject.c:467 plpy_spi.c:438
|
||||
#: plpy_cursorobject.c:463 plpy_spi.c:434
|
||||
#, c-format
|
||||
msgid "query result has too many rows to fit in a Python list"
|
||||
msgstr "el resultado de la consulta tiene demasiados registros y no entran en una lista de Python"
|
||||
|
||||
#: plpy_cursorobject.c:508
|
||||
#: plpy_cursorobject.c:504
|
||||
#, c-format
|
||||
msgid "closing a cursor in an aborted subtransaction"
|
||||
msgstr "cerrando un cursor en una subtransacción abortada"
|
||||
|
||||
#: plpy_elog.c:127 plpy_elog.c:128 plpy_plpymodule.c:513
|
||||
#: plpy_elog.c:127 plpy_elog.c:128 plpy_plpymodule.c:548
|
||||
#, c-format
|
||||
msgid "%s"
|
||||
msgstr "%s"
|
||||
@ -103,78 +103,83 @@ msgstr "error extrayendo el próximo elemento del iterador"
|
||||
msgid "PL/Python function with return type \"void\" did not return None"
|
||||
msgstr "función PL/Python con tipo de retorno «void» no retorna None"
|
||||
|
||||
#: plpy_exec.c:374 plpy_exec.c:400
|
||||
#: plpy_exec.c:379 plpy_exec.c:405
|
||||
#, c-format
|
||||
msgid "unexpected return value from trigger procedure"
|
||||
msgstr "valor de retorno no esperado desde el procedimiento disparador"
|
||||
|
||||
#: plpy_exec.c:375
|
||||
#: plpy_exec.c:380
|
||||
#, c-format
|
||||
msgid "Expected None or a string."
|
||||
msgstr "Se esperaba None o una cadena."
|
||||
|
||||
#: plpy_exec.c:390
|
||||
#: plpy_exec.c:395
|
||||
#, c-format
|
||||
msgid "PL/Python trigger function returned \"MODIFY\" in a DELETE trigger -- ignored"
|
||||
msgstr "función de disparador de PL/Python retorno «MODIFY» en un disparador de tipo DELETE -- ignorado"
|
||||
|
||||
#: plpy_exec.c:401
|
||||
#: plpy_exec.c:406
|
||||
#, c-format
|
||||
msgid "Expected None, \"OK\", \"SKIP\", or \"MODIFY\"."
|
||||
msgstr "Se esperaba None, «OK», «SKIP» o «MODIFY»."
|
||||
|
||||
#: plpy_exec.c:482
|
||||
#: plpy_exec.c:487
|
||||
#, c-format
|
||||
msgid "PyList_SetItem() failed, while setting up arguments"
|
||||
msgstr "PyList_SetItem() falló, mientras se inicializaban los argumentos"
|
||||
|
||||
#: plpy_exec.c:486
|
||||
#: plpy_exec.c:491
|
||||
#, c-format
|
||||
msgid "PyDict_SetItemString() failed, while setting up arguments"
|
||||
msgstr "PyDict_SetItemString() falló, mientras se inicializaban los argumentos"
|
||||
|
||||
#: plpy_exec.c:498
|
||||
#: plpy_exec.c:503
|
||||
#, c-format
|
||||
msgid "function returning record called in context that cannot accept type record"
|
||||
msgstr "se llamó una función que retorna un registro en un contexto que no puede aceptarlo"
|
||||
|
||||
#: plpy_exec.c:714
|
||||
#: plpy_exec.c:719
|
||||
#, c-format
|
||||
msgid "while creating return value"
|
||||
msgstr "mientras se creaba el valor de retorno"
|
||||
|
||||
#: plpy_exec.c:738
|
||||
#: plpy_exec.c:743
|
||||
#, c-format
|
||||
msgid "could not create new dictionary while building trigger arguments"
|
||||
msgstr "no se pudo crear un nuevo diccionario mientras se construían los argumentos de disparador"
|
||||
|
||||
#: plpy_exec.c:927
|
||||
#: plpy_exec.c:931
|
||||
#, c-format
|
||||
msgid "TD[\"new\"] deleted, cannot modify row"
|
||||
msgstr "TD[\"new\"] borrado, no se puede modicar el registro"
|
||||
|
||||
#: plpy_exec.c:932
|
||||
#: plpy_exec.c:936
|
||||
#, c-format
|
||||
msgid "TD[\"new\"] is not a dictionary"
|
||||
msgstr "TD[\"new\"] no es un diccionario"
|
||||
|
||||
#: plpy_exec.c:957
|
||||
#: plpy_exec.c:963
|
||||
#, c-format
|
||||
msgid "TD[\"new\"] dictionary key at ordinal position %d is not a string"
|
||||
msgstr "el nombre del atributo de TD[\"new\"] en la posición %d no es una cadena"
|
||||
|
||||
#: plpy_exec.c:964
|
||||
#: plpy_exec.c:970
|
||||
#, c-format
|
||||
msgid "key \"%s\" found in TD[\"new\"] does not exist as a column in the triggering row"
|
||||
msgstr "la llave «%s» en TD[\"new\"] no existe como columna en la fila disparadora"
|
||||
|
||||
#: plpy_exec.c:1044
|
||||
#: plpy_exec.c:975
|
||||
#, c-format
|
||||
msgid "cannot set system attribute \"%s\""
|
||||
msgstr "no se puede definir el atributo de sistema «%s»"
|
||||
|
||||
#: plpy_exec.c:1046
|
||||
#, c-format
|
||||
msgid "while modifying trigger row"
|
||||
msgstr "mientras se modificaba la fila de disparador"
|
||||
|
||||
# FIXME not very happy with this
|
||||
#: plpy_exec.c:1105
|
||||
#: plpy_exec.c:1107
|
||||
#, c-format
|
||||
msgid "forcibly aborting a subtransaction that has not been exited"
|
||||
msgstr "abortando una subtransacción que no se ha cerrado"
|
||||
@ -209,86 +214,86 @@ msgstr "no se pudo crear las globales"
|
||||
msgid "could not initialize globals"
|
||||
msgstr "no se pudo inicializar las globales"
|
||||
|
||||
#: plpy_main.c:389
|
||||
#: plpy_main.c:387
|
||||
#, c-format
|
||||
msgid "PL/Python function \"%s\""
|
||||
msgstr "función PL/Python «%s»"
|
||||
|
||||
#: plpy_main.c:396
|
||||
#: plpy_main.c:394
|
||||
#, c-format
|
||||
msgid "PL/Python anonymous code block"
|
||||
msgstr "bloque de código anónimo de PL/Python"
|
||||
|
||||
#: plpy_planobject.c:123
|
||||
#, c-format
|
||||
msgid "plan.status takes no arguments"
|
||||
msgstr "plan.status no lleva argumentos"
|
||||
|
||||
#: plpy_plpymodule.c:178 plpy_plpymodule.c:181
|
||||
#: plpy_plpymodule.c:181 plpy_plpymodule.c:184
|
||||
#, c-format
|
||||
msgid "could not import \"plpy\" module"
|
||||
msgstr "no se pudo importar el módulo «plpy»"
|
||||
|
||||
#: plpy_plpymodule.c:196
|
||||
#: plpy_plpymodule.c:199
|
||||
#, c-format
|
||||
msgid "could not create the spiexceptions module"
|
||||
msgstr "no se pudo crear el módulo spiexceptions"
|
||||
|
||||
#: plpy_plpymodule.c:207
|
||||
#, c-format
|
||||
msgid "could not add the spiexceptions module"
|
||||
msgstr "no se pudo importar el módulo spiexceptions"
|
||||
|
||||
#: plpy_plpymodule.c:217
|
||||
#: plpy_plpymodule.c:236
|
||||
#, c-format
|
||||
msgid "could not create the base SPI exceptions"
|
||||
msgstr "no se pudo crear las excepciones SPI basales"
|
||||
msgid "could not create exception \"%s\""
|
||||
msgstr "no se pudo crear la excepción «%s»"
|
||||
|
||||
#: plpy_plpymodule.c:252 plpy_plpymodule.c:256
|
||||
#: plpy_plpymodule.c:271 plpy_plpymodule.c:275
|
||||
#, c-format
|
||||
msgid "could not generate SPI exceptions"
|
||||
msgstr "no se pudo generar excepciones SPI"
|
||||
|
||||
#: plpy_plpymodule.c:421
|
||||
#: plpy_plpymodule.c:443
|
||||
#, c-format
|
||||
msgid "could not unpack arguments in plpy.elog"
|
||||
msgstr "no se pudo desempaquetar los argumentos de plpy.elog"
|
||||
|
||||
#: plpy_plpymodule.c:430
|
||||
#: plpy_plpymodule.c:452
|
||||
msgid "could not parse error message in plpy.elog"
|
||||
msgstr "no se pudo analizar el mensaje de error de plpy.elog"
|
||||
|
||||
#: plpy_plpymodule.c:446
|
||||
#, c-format
|
||||
msgid "the message is already specified"
|
||||
msgstr "el mensaje ya está definido"
|
||||
|
||||
#: plpy_plpymodule.c:469
|
||||
#, c-format
|
||||
msgid "argument 'message' given by name and position"
|
||||
msgstr "el argumento 'message' fue pasado por nombre y posición"
|
||||
|
||||
#: plpy_plpymodule.c:496
|
||||
#, c-format
|
||||
msgid "'%s' is an invalid keyword argument for this function"
|
||||
msgstr "«%s» no es un argumento válido para esta función"
|
||||
|
||||
#: plpy_plpymodule.c:477 plpy_plpymodule.c:480
|
||||
#: plpy_plpymodule.c:507 plpy_plpymodule.c:513
|
||||
#, c-format
|
||||
msgid "invalid SQLSTATE code"
|
||||
msgstr "código SQLSTATE no válido"
|
||||
|
||||
#: plpy_procedure.c:232
|
||||
#: plpy_procedure.c:230
|
||||
#, c-format
|
||||
msgid "trigger functions can only be called as triggers"
|
||||
msgstr "las funciones disparadoras sólo pueden ser llamadas como disparadores"
|
||||
|
||||
#: plpy_procedure.c:237
|
||||
#: plpy_procedure.c:235
|
||||
#, c-format
|
||||
msgid "PL/Python functions cannot return type %s"
|
||||
msgstr "las funciones PL/Python no pueden retornar el tipo %s"
|
||||
|
||||
#: plpy_procedure.c:318
|
||||
#: plpy_procedure.c:316
|
||||
#, c-format
|
||||
msgid "PL/Python functions cannot accept type %s"
|
||||
msgstr "la funciones PL/Python no pueden aceptar el tipo %s"
|
||||
|
||||
#: plpy_procedure.c:414
|
||||
#: plpy_procedure.c:412
|
||||
#, c-format
|
||||
msgid "could not compile PL/Python function \"%s\""
|
||||
msgstr "no se pudo compilar la función PL/Python «%s»"
|
||||
|
||||
#: plpy_procedure.c:417
|
||||
#: plpy_procedure.c:415
|
||||
#, c-format
|
||||
msgid "could not compile anonymous PL/Python code block"
|
||||
msgstr "no se pudo compilar el bloque anónimo PL/Python"
|
||||
@ -298,57 +303,57 @@ msgstr "no se pudo compilar el bloque anónimo PL/Python"
|
||||
msgid "command did not produce a result set"
|
||||
msgstr "la orden no produjo un conjunto de resultados"
|
||||
|
||||
#: plpy_spi.c:60
|
||||
#: plpy_spi.c:59
|
||||
#, c-format
|
||||
msgid "second argument of plpy.prepare must be a sequence"
|
||||
msgstr "el segundo argumento de plpy.prepare debe ser una secuencia"
|
||||
|
||||
#: plpy_spi.c:118
|
||||
#: plpy_spi.c:115
|
||||
#, c-format
|
||||
msgid "plpy.prepare: type name at ordinal position %d is not a string"
|
||||
msgstr "plpy.prepare: el nombre de tipo en la posición %d no es una cadena"
|
||||
|
||||
#: plpy_spi.c:194
|
||||
#: plpy_spi.c:191
|
||||
#, c-format
|
||||
msgid "plpy.execute expected a query or a plan"
|
||||
msgstr "plpy.execute espera una consulta o un plan"
|
||||
|
||||
#: plpy_spi.c:213
|
||||
#: plpy_spi.c:210
|
||||
#, c-format
|
||||
msgid "plpy.execute takes a sequence as its second argument"
|
||||
msgstr "plpy.execute lleva una secuencia como segundo argumento"
|
||||
|
||||
#: plpy_spi.c:337
|
||||
#: plpy_spi.c:335
|
||||
#, c-format
|
||||
msgid "SPI_execute_plan failed: %s"
|
||||
msgstr "falló SPI_execute_plan: %s"
|
||||
|
||||
#: plpy_spi.c:379
|
||||
#: plpy_spi.c:377
|
||||
#, c-format
|
||||
msgid "SPI_execute failed: %s"
|
||||
msgstr "falló SPI_execute: %s"
|
||||
|
||||
#: plpy_subxactobject.c:123
|
||||
#: plpy_subxactobject.c:122
|
||||
#, c-format
|
||||
msgid "this subtransaction has already been entered"
|
||||
msgstr "ya se ha entrado en esta subtransacción"
|
||||
|
||||
#: plpy_subxactobject.c:129 plpy_subxactobject.c:187
|
||||
#: plpy_subxactobject.c:128 plpy_subxactobject.c:186
|
||||
#, c-format
|
||||
msgid "this subtransaction has already been exited"
|
||||
msgstr "ya se ha salido de esta subtransacción"
|
||||
|
||||
#: plpy_subxactobject.c:181
|
||||
#: plpy_subxactobject.c:180
|
||||
#, c-format
|
||||
msgid "this subtransaction has not been entered"
|
||||
msgstr "no se ha entrado en esta subtransacción"
|
||||
|
||||
#: plpy_subxactobject.c:193
|
||||
#: plpy_subxactobject.c:192
|
||||
#, c-format
|
||||
msgid "there is no subtransaction to exit from"
|
||||
msgstr "no hay una subtransacción de la cual salir"
|
||||
|
||||
#: plpy_typeio.c:286
|
||||
#: plpy_typeio.c:292
|
||||
#, c-format
|
||||
msgid "could not create new dictionary"
|
||||
msgstr "no se pudo crear un nuevo diccionario"
|
||||
@ -368,62 +373,82 @@ msgstr "no se encontró atributo Decimal en el módulo"
|
||||
msgid "conversion from numeric to Decimal failed"
|
||||
msgstr "falló la conversión de numeric a Decimal"
|
||||
|
||||
#: plpy_typeio.c:645
|
||||
#, c-format
|
||||
msgid "cannot convert multidimensional array to Python list"
|
||||
msgstr "no se puede convertir array multidimensional a una lista Python"
|
||||
|
||||
#: plpy_typeio.c:646
|
||||
#, c-format
|
||||
msgid "PL/Python only supports one-dimensional arrays."
|
||||
msgstr "PL/Python sólo soporta arrays unidimensionales."
|
||||
|
||||
#: plpy_typeio.c:652
|
||||
#, c-format
|
||||
msgid "could not create new Python list"
|
||||
msgstr "no se pudo crear una nueva lista Python"
|
||||
|
||||
#: plpy_typeio.c:711
|
||||
#: plpy_typeio.c:773
|
||||
#, c-format
|
||||
msgid "could not create bytes representation of Python object"
|
||||
msgstr "no se pudo crear la representación de cadena de bytes de Python"
|
||||
|
||||
#: plpy_typeio.c:822
|
||||
#: plpy_typeio.c:882
|
||||
#, c-format
|
||||
msgid "could not create string representation of Python object"
|
||||
msgstr "no se pudo crear la representación de cadena de texto del objeto de Python"
|
||||
|
||||
#: plpy_typeio.c:833
|
||||
#: plpy_typeio.c:893
|
||||
#, c-format
|
||||
msgid "could not convert Python object into cstring: Python string representation appears to contain null bytes"
|
||||
msgstr "no se pudo convertir el objeto Python a un cstring: la representación de cadena Python parece tener bytes nulos (\\0)"
|
||||
|
||||
#: plpy_typeio.c:879
|
||||
#: plpy_typeio.c:950
|
||||
#, c-format
|
||||
msgid "malformed record literal: \"%s\""
|
||||
msgstr "literal de record no es válido: «%s»"
|
||||
|
||||
#: plpy_typeio.c:951
|
||||
#, c-format
|
||||
msgid "Missing left parenthesis."
|
||||
msgstr "Falta paréntesis izquierdo."
|
||||
|
||||
#: plpy_typeio.c:952 plpy_typeio.c:1390
|
||||
#, c-format
|
||||
msgid "To return a composite type in an array, return the composite type as a Python tuple, e.g., \"[('foo',)]\"."
|
||||
msgstr "Para retornar un tipo compuesto en un array, retorne el tipo compuesto como una tupla de Python, e.g., «[('foo',)]»."
|
||||
|
||||
#: plpy_typeio.c:1001
|
||||
#, c-format
|
||||
msgid "number of array dimensions exceeds the maximum allowed (%d)"
|
||||
msgstr "el número de dimensiones del array excede el máximo permitido (%d)"
|
||||
|
||||
#: plpy_typeio.c:1005
|
||||
#, c-format
|
||||
msgid "cannot determine sequence length for function return value"
|
||||
msgstr "no se puede determinar el tamaño de la secuencia para el valor de retorno de la función"
|
||||
|
||||
#: plpy_typeio.c:1008 plpy_typeio.c:1012
|
||||
#, c-format
|
||||
msgid "array size exceeds the maximum allowed"
|
||||
msgstr "el tamaño del array excede el máximo permitido"
|
||||
|
||||
#: plpy_typeio.c:1038
|
||||
#, c-format
|
||||
msgid "return value of function with array return type is not a Python sequence"
|
||||
msgstr "el valor de retorno de la función con tipo de retorno array no es una secuencia Python"
|
||||
|
||||
#: plpy_typeio.c:1000
|
||||
#: plpy_typeio.c:1091
|
||||
#, c-format
|
||||
msgid "multidimensional arrays must have array expressions with matching dimensions. PL/Python function return value has sequence length %d while expected %d"
|
||||
msgstr "los arrays multidimensionales deben contener expresiones de array con igual número de dimensiones. El valor de retorno de la función PL/Python tiene un tamaño de secuencia %d pero se esperaba %d"
|
||||
|
||||
#: plpy_typeio.c:1213
|
||||
#, c-format
|
||||
msgid "key \"%s\" not found in mapping"
|
||||
msgstr "la llave «%s» no fue encontrada en el mapa"
|
||||
|
||||
#: plpy_typeio.c:1001
|
||||
#: plpy_typeio.c:1214
|
||||
#, c-format
|
||||
msgid "To return null in a column, add the value None to the mapping with the key named after the column."
|
||||
msgstr "Para retornar null en una columna, agregue el valor None al mapa, con llave llamada igual que la columna."
|
||||
|
||||
#: plpy_typeio.c:1052
|
||||
#: plpy_typeio.c:1265
|
||||
#, c-format
|
||||
msgid "length of returned sequence did not match number of columns in row"
|
||||
msgstr "el tamaño de la secuencia retornada no concuerda con el número de columnas de la fila"
|
||||
|
||||
#: plpy_typeio.c:1163
|
||||
#: plpy_typeio.c:1388
|
||||
#, c-format
|
||||
msgid "attribute \"%s\" does not exist in Python object"
|
||||
msgstr "el atributo «%s» no existe en el objeto Python"
|
||||
|
||||
#: plpy_typeio.c:1164
|
||||
#: plpy_typeio.c:1391
|
||||
#, c-format
|
||||
msgid "To return null in a column, let the returned object have an attribute named after column with value None."
|
||||
msgstr "Para retornar null en una columna, haga que el objeto retornado tenga un atributo llamado igual que la columna, con valor None."
|
||||
@ -438,6 +463,24 @@ msgstr "no se pudo convertir el objeto Unicode de Python a bytes"
|
||||
msgid "could not extract bytes from encoded string"
|
||||
msgstr "no se pudo extraer bytes desde la cadena codificada"
|
||||
|
||||
#~ msgid "plan.status takes no arguments"
|
||||
#~ msgstr "plan.status no lleva argumentos"
|
||||
|
||||
#~ msgid "could not create the base SPI exceptions"
|
||||
#~ msgstr "no se pudo crear las excepciones SPI basales"
|
||||
|
||||
#~ msgid "the message is already specified"
|
||||
#~ msgstr "el mensaje ya está definido"
|
||||
|
||||
#~ msgid "cannot convert multidimensional array to Python list"
|
||||
#~ msgstr "no se puede convertir array multidimensional a una lista Python"
|
||||
|
||||
#~ msgid "PL/Python only supports one-dimensional arrays."
|
||||
#~ msgstr "PL/Python sólo soporta arrays unidimensionales."
|
||||
|
||||
#~ msgid "could not create new Python list"
|
||||
#~ msgstr "no se pudo crear una nueva lista Python"
|
||||
|
||||
#~ msgid "PL/Python does not support conversion to arrays of row types."
|
||||
#~ msgstr "PL/Python no soporta la conversión de arrays a tipos de registro."
|
||||
|
||||
|
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PostgreSQL 9.6\n"
|
||||
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
|
||||
"POT-Creation-Date: 2017-02-06 16:07+0000\n"
|
||||
"PO-Revision-Date: 2017-02-06 19:02+0100\n"
|
||||
"POT-Creation-Date: 2017-07-06 14:37+0000\n"
|
||||
"PO-Revision-Date: 2017-07-06 18:07+0200\n"
|
||||
"Last-Translator: Guillaume Lelarge <guillaume@lelarge.info>\n"
|
||||
"Language-Team: French <guillaume@lelarge.info>\n"
|
||||
"Language: fr\n"
|
||||
@ -17,24 +17,24 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Poedit 1.8.11\n"
|
||||
"X-Generator: Poedit 1.8.12\n"
|
||||
|
||||
#: plpy_cursorobject.c:101
|
||||
#: plpy_cursorobject.c:100
|
||||
#, c-format
|
||||
msgid "plpy.cursor expected a query or a plan"
|
||||
msgstr "plpy.cursor attendait une requête ou un plan"
|
||||
|
||||
#: plpy_cursorobject.c:177
|
||||
#: plpy_cursorobject.c:176
|
||||
#, c-format
|
||||
msgid "plpy.cursor takes a sequence as its second argument"
|
||||
msgstr "plpy.cursor prends une séquence dans son second argument"
|
||||
|
||||
#: plpy_cursorobject.c:193 plpy_spi.c:227
|
||||
#: plpy_cursorobject.c:192 plpy_spi.c:226
|
||||
#, c-format
|
||||
msgid "could not execute plan"
|
||||
msgstr "n'a pas pu exécuter le plan"
|
||||
|
||||
#: plpy_cursorobject.c:196 plpy_spi.c:230
|
||||
#: plpy_cursorobject.c:195 plpy_spi.c:229
|
||||
#, c-format
|
||||
msgid "Expected sequence of %d argument, got %d: %s"
|
||||
msgid_plural "Expected sequence of %d arguments, got %d: %s"
|
||||
@ -105,85 +105,90 @@ msgstr "erreur lors de la récupération du prochain élément de l'itérateur"
|
||||
msgid "PL/Python function with return type \"void\" did not return None"
|
||||
msgstr "la fonction PL/python avec un code de retour « void » ne renvoyait pas None"
|
||||
|
||||
#: plpy_exec.c:374 plpy_exec.c:400
|
||||
#: plpy_exec.c:379 plpy_exec.c:405
|
||||
#, c-format
|
||||
msgid "unexpected return value from trigger procedure"
|
||||
msgstr "valeur de retour inattendue de la procédure trigger"
|
||||
|
||||
#: plpy_exec.c:375
|
||||
#: plpy_exec.c:380
|
||||
#, c-format
|
||||
msgid "Expected None or a string."
|
||||
msgstr "Attendait None ou une chaîne de caractères."
|
||||
|
||||
#: plpy_exec.c:390
|
||||
#: plpy_exec.c:395
|
||||
#, c-format
|
||||
msgid "PL/Python trigger function returned \"MODIFY\" in a DELETE trigger -- ignored"
|
||||
msgstr ""
|
||||
"la fonction trigger PL/python a renvoyé « MODIFY » dans un trigger DELETE\n"
|
||||
"-- ignoré"
|
||||
|
||||
#: plpy_exec.c:401
|
||||
#: plpy_exec.c:406
|
||||
#, c-format
|
||||
msgid "Expected None, \"OK\", \"SKIP\", or \"MODIFY\"."
|
||||
msgstr "Attendait None, « OK », « SKIP » ou « MODIFY »."
|
||||
|
||||
#: plpy_exec.c:482
|
||||
#: plpy_exec.c:487
|
||||
#, c-format
|
||||
msgid "PyList_SetItem() failed, while setting up arguments"
|
||||
msgstr "échec de PyList_SetItem() lors de l'initialisation des arguments"
|
||||
|
||||
#: plpy_exec.c:486
|
||||
#: plpy_exec.c:491
|
||||
#, c-format
|
||||
msgid "PyDict_SetItemString() failed, while setting up arguments"
|
||||
msgstr "échec de PyDict_SetItemString() lors de l'initialisation des arguments"
|
||||
|
||||
#: plpy_exec.c:498
|
||||
#: plpy_exec.c:503
|
||||
#, c-format
|
||||
msgid "function returning record called in context that cannot accept type record"
|
||||
msgstr ""
|
||||
"fonction renvoyant le type record appelée dans un contexte qui ne peut pas\n"
|
||||
"accepter le type record"
|
||||
|
||||
#: plpy_exec.c:714
|
||||
#: plpy_exec.c:719
|
||||
#, c-format
|
||||
msgid "while creating return value"
|
||||
msgstr "lors de la création de la valeur de retour"
|
||||
|
||||
#: plpy_exec.c:738
|
||||
#: plpy_exec.c:743
|
||||
#, c-format
|
||||
msgid "could not create new dictionary while building trigger arguments"
|
||||
msgstr ""
|
||||
"n'a pas pu créer un nouveau dictionnaire lors de la construction des\n"
|
||||
"arguments du trigger"
|
||||
|
||||
#: plpy_exec.c:927
|
||||
#: plpy_exec.c:931
|
||||
#, c-format
|
||||
msgid "TD[\"new\"] deleted, cannot modify row"
|
||||
msgstr "TD[\"new\"] supprimé, ne peut pas modifier la ligne"
|
||||
|
||||
#: plpy_exec.c:932
|
||||
#: plpy_exec.c:936
|
||||
#, c-format
|
||||
msgid "TD[\"new\"] is not a dictionary"
|
||||
msgstr "TD[\"new\"] n'est pas un dictionnaire"
|
||||
|
||||
#: plpy_exec.c:957
|
||||
#: plpy_exec.c:963
|
||||
#, c-format
|
||||
msgid "TD[\"new\"] dictionary key at ordinal position %d is not a string"
|
||||
msgstr "la clé TD[\"new\"] à la position ordinale %d n'est pas une chaîne"
|
||||
|
||||
#: plpy_exec.c:964
|
||||
#: plpy_exec.c:970
|
||||
#, c-format
|
||||
msgid "key \"%s\" found in TD[\"new\"] does not exist as a column in the triggering row"
|
||||
msgstr ""
|
||||
"la clé « %s » trouvée dans TD[\"new\"] n'existe pas comme colonne\n"
|
||||
"de la ligne impactée par le trigger"
|
||||
|
||||
#: plpy_exec.c:1044
|
||||
#: plpy_exec.c:975
|
||||
#, c-format
|
||||
msgid "cannot set system attribute \"%s\""
|
||||
msgstr "ne peut pas initialiser l'attribut système « %s »"
|
||||
|
||||
#: plpy_exec.c:1046
|
||||
#, c-format
|
||||
msgid "while modifying trigger row"
|
||||
msgstr "lors de la modification de la ligne du trigger"
|
||||
|
||||
#: plpy_exec.c:1105
|
||||
#: plpy_exec.c:1107
|
||||
#, c-format
|
||||
msgid "forcibly aborting a subtransaction that has not been exited"
|
||||
msgstr "annulation forcée d'une sous-transaction qui n'a jamais été quittée"
|
||||
@ -228,11 +233,6 @@ msgstr "fonction PL/python « %s »"
|
||||
msgid "PL/Python anonymous code block"
|
||||
msgstr "bloc de code PL/Python anonyme"
|
||||
|
||||
#: plpy_planobject.c:123
|
||||
#, c-format
|
||||
msgid "plan.status takes no arguments"
|
||||
msgstr "plan.status ne prends pas d'arguments"
|
||||
|
||||
#: plpy_plpymodule.c:181 plpy_plpymodule.c:184
|
||||
#, c-format
|
||||
msgid "could not import \"plpy\" module"
|
||||
@ -269,8 +269,8 @@ msgstr "n'a pas pu analyser le message d'erreur dans plpy.elog"
|
||||
|
||||
#: plpy_plpymodule.c:469
|
||||
#, c-format
|
||||
msgid "Argument 'message' given by name and position"
|
||||
msgstr "Argument 'message' donn\" par nom et position"
|
||||
msgid "argument 'message' given by name and position"
|
||||
msgstr "argument 'message' donné par nom et position"
|
||||
|
||||
#: plpy_plpymodule.c:496
|
||||
#, c-format
|
||||
@ -312,22 +312,22 @@ msgstr "n'a pas pu compiler le bloc de code anonyme PL/python"
|
||||
msgid "command did not produce a result set"
|
||||
msgstr "la commande n'a pas fourni d'ensemble de résultats"
|
||||
|
||||
#: plpy_spi.c:60
|
||||
#: plpy_spi.c:59
|
||||
#, c-format
|
||||
msgid "second argument of plpy.prepare must be a sequence"
|
||||
msgstr "le second argument de plpy.prepare doit être une séquence"
|
||||
|
||||
#: plpy_spi.c:116
|
||||
#: plpy_spi.c:115
|
||||
#, c-format
|
||||
msgid "plpy.prepare: type name at ordinal position %d is not a string"
|
||||
msgstr "plpy.prepare : le nom du type sur la position ordinale %d n'est pas une chaîne"
|
||||
|
||||
#: plpy_spi.c:192
|
||||
#: plpy_spi.c:191
|
||||
#, c-format
|
||||
msgid "plpy.execute expected a query or a plan"
|
||||
msgstr "plpy.prepare attendait une requête ou un plan"
|
||||
|
||||
#: plpy_spi.c:211
|
||||
#: plpy_spi.c:210
|
||||
#, c-format
|
||||
msgid "plpy.execute takes a sequence as its second argument"
|
||||
msgstr "plpy.execute prends une séquence dans son second argument"
|
||||
@ -342,27 +342,27 @@ msgstr "échec de SPI_execute_plan : %s"
|
||||
msgid "SPI_execute failed: %s"
|
||||
msgstr "échec de SPI_execute : %s"
|
||||
|
||||
#: plpy_subxactobject.c:123
|
||||
#: plpy_subxactobject.c:122
|
||||
#, c-format
|
||||
msgid "this subtransaction has already been entered"
|
||||
msgstr "cette sous-transaction est en cours d'utilisation"
|
||||
|
||||
#: plpy_subxactobject.c:129 plpy_subxactobject.c:187
|
||||
#: plpy_subxactobject.c:128 plpy_subxactobject.c:186
|
||||
#, c-format
|
||||
msgid "this subtransaction has already been exited"
|
||||
msgstr "déjà sorti de cette sous-transaction"
|
||||
|
||||
#: plpy_subxactobject.c:181
|
||||
#: plpy_subxactobject.c:180
|
||||
#, c-format
|
||||
msgid "this subtransaction has not been entered"
|
||||
msgstr "cette sous-transaction n'a jamais été utilisée"
|
||||
|
||||
#: plpy_subxactobject.c:193
|
||||
#: plpy_subxactobject.c:192
|
||||
#, c-format
|
||||
msgid "there is no subtransaction to exit from"
|
||||
msgstr "il n'y a pas de transaction à quitter"
|
||||
|
||||
#: plpy_typeio.c:286
|
||||
#: plpy_typeio.c:292
|
||||
#, c-format
|
||||
msgid "could not create new dictionary"
|
||||
msgstr "n'a pas pu créer le nouveau dictionnaire"
|
||||
@ -382,66 +382,89 @@ msgstr "pas d'attribut Decimal dans le module"
|
||||
msgid "conversion from numeric to Decimal failed"
|
||||
msgstr "échec de la conversion numeric vers Decimal"
|
||||
|
||||
#: plpy_typeio.c:645
|
||||
#, c-format
|
||||
msgid "cannot convert multidimensional array to Python list"
|
||||
msgstr "ne peut pas convertir un tableau multidimensionnel en liste Python"
|
||||
|
||||
#: plpy_typeio.c:646
|
||||
#, c-format
|
||||
msgid "PL/Python only supports one-dimensional arrays."
|
||||
msgstr "PL/Python supporte seulement les tableaux uni-dimensionnels."
|
||||
|
||||
#: plpy_typeio.c:652
|
||||
#, c-format
|
||||
msgid "could not create new Python list"
|
||||
msgstr "n'a pas pu créer la nouvelle liste Python"
|
||||
|
||||
#: plpy_typeio.c:711
|
||||
#: plpy_typeio.c:773
|
||||
#, c-format
|
||||
msgid "could not create bytes representation of Python object"
|
||||
msgstr "n'a pas pu créer une représentation octets de l'objet Python"
|
||||
|
||||
#: plpy_typeio.c:820
|
||||
#: plpy_typeio.c:882
|
||||
#, c-format
|
||||
msgid "could not create string representation of Python object"
|
||||
msgstr "n'a pas pu créer une représentation chaîne de caractères de l'objet Python"
|
||||
|
||||
#: plpy_typeio.c:831
|
||||
#: plpy_typeio.c:893
|
||||
#, c-format
|
||||
msgid "could not convert Python object into cstring: Python string representation appears to contain null bytes"
|
||||
msgstr "n'a pas pu convertir l'objet Python en csting : la représentation de la chaîne Python contient des octets nuls"
|
||||
|
||||
#: plpy_typeio.c:877
|
||||
#: plpy_typeio.c:950
|
||||
#, c-format
|
||||
msgid "malformed record literal: \"%s\""
|
||||
msgstr "enregistrement litéral invalide : « %s »"
|
||||
|
||||
#: plpy_typeio.c:951
|
||||
#, c-format
|
||||
msgid "Missing left parenthesis."
|
||||
msgstr "Parenthèse gauche manquante"
|
||||
|
||||
#: plpy_typeio.c:952 plpy_typeio.c:1390
|
||||
#, c-format
|
||||
msgid "To return a composite type in an array, return the composite type as a Python tuple, e.g., \"[('foo',)]\"."
|
||||
msgstr "Pour renvoyer un type composite dans un tableau, renvoyez le type composite sous la forme d'un tuple Python, c'est-à-dire \"[('foo',)]\"."
|
||||
|
||||
#: plpy_typeio.c:1001
|
||||
#, c-format
|
||||
msgid "number of array dimensions exceeds the maximum allowed (%d)"
|
||||
msgstr "le nombre de dimensions du tableau dépasse le maximum autorisé (%d)"
|
||||
|
||||
#: plpy_typeio.c:1005
|
||||
#, c-format
|
||||
msgid "cannot determine sequence length for function return value"
|
||||
msgstr "ne peut pas déterminer la longueur de la séquence pour la valeur de retour de la fonction"
|
||||
|
||||
#: plpy_typeio.c:1008 plpy_typeio.c:1012
|
||||
#, c-format
|
||||
msgid "array size exceeds the maximum allowed"
|
||||
msgstr "la taille du tableau dépasse le maximum permis"
|
||||
|
||||
#: plpy_typeio.c:1038
|
||||
#, c-format
|
||||
msgid "return value of function with array return type is not a Python sequence"
|
||||
msgstr "la valeur de retour de la fonction de type tableau n'est pas une séquence Python"
|
||||
|
||||
#: plpy_typeio.c:996
|
||||
#: plpy_typeio.c:1091
|
||||
#, c-format
|
||||
msgid "multidimensional arrays must have array expressions with matching dimensions. PL/Python function return value has sequence length %d while expected %d"
|
||||
msgstr ""
|
||||
"les tableaux multidimensionnels doivent avoir des expressions de tableaux\n"
|
||||
"avec des dimensions correspondantes. La valeur de retour de la fonction\n"
|
||||
"PL/Python a une longueur de séquence %d alors que %d est attendue"
|
||||
|
||||
#: plpy_typeio.c:1213
|
||||
#, c-format
|
||||
msgid "key \"%s\" not found in mapping"
|
||||
msgstr "la clé « %s » introuvable dans la correspondance"
|
||||
|
||||
#: plpy_typeio.c:997
|
||||
#: plpy_typeio.c:1214
|
||||
#, c-format
|
||||
msgid "To return null in a column, add the value None to the mapping with the key named after the column."
|
||||
msgstr ""
|
||||
"Pour renvoyer NULL dans une colonne, ajoutez la valeur None à la\n"
|
||||
"correspondance de la clé nommée d'après la colonne."
|
||||
|
||||
#: plpy_typeio.c:1048
|
||||
#: plpy_typeio.c:1265
|
||||
#, c-format
|
||||
msgid "length of returned sequence did not match number of columns in row"
|
||||
msgstr ""
|
||||
"la longueur de la séquence renvoyée ne correspondait pas au nombre de\n"
|
||||
"colonnes dans la ligne"
|
||||
|
||||
#: plpy_typeio.c:1159
|
||||
#: plpy_typeio.c:1388
|
||||
#, c-format
|
||||
msgid "attribute \"%s\" does not exist in Python object"
|
||||
msgstr "l'attribut « %s » n'existe pas dans l'objet Python"
|
||||
|
||||
#: plpy_typeio.c:1160
|
||||
#: plpy_typeio.c:1391
|
||||
#, c-format
|
||||
msgid "To return null in a column, let the returned object have an attribute named after column with value None."
|
||||
msgstr ""
|
||||
@ -458,55 +481,24 @@ msgstr "n'a pas pu convertir l'objet Unicode Python en octets"
|
||||
msgid "could not extract bytes from encoded string"
|
||||
msgstr "n'a pas pu extraire les octets de la chaîne encodée"
|
||||
|
||||
#~ msgid "the message is already specified"
|
||||
#~ msgstr "le message est déjà spécifié"
|
||||
#~ msgid "could not create the base SPI exceptions"
|
||||
#~ msgstr "n'a pas pu créer les exceptions SPI de base"
|
||||
|
||||
#~ msgid "plpy.prepare does not support composite types"
|
||||
#~ msgstr "plpy.prepare ne supporte pas les types composites"
|
||||
#~ msgid "Python major version mismatch in session"
|
||||
#~ msgstr "Différence de version majeure de Python dans la session"
|
||||
|
||||
#~ msgid "PL/Python does not support conversion to arrays of row types."
|
||||
#~ msgstr "PL/Python ne supporte pas les conversions vers des tableaux de types row."
|
||||
|
||||
#~ msgid "unrecognized error in PLy_spi_execute_fetch_result"
|
||||
#~ msgstr "erreur inconnue dans PLy_spi_execute_fetch_result"
|
||||
|
||||
#~ msgid "PyCObject_AsVoidPtr() failed"
|
||||
#~ msgstr "échec de PyCObject_AsVoidPtr()"
|
||||
|
||||
#~ msgid "PyCObject_FromVoidPtr() failed"
|
||||
#~ msgstr "échec de PyCObject_FromVoidPtr()"
|
||||
|
||||
#~ msgid "transaction aborted"
|
||||
#~ msgstr "transaction annulée"
|
||||
|
||||
#~ msgid "invalid arguments for plpy.prepare"
|
||||
#~ msgstr "arguments invalides pour plpy.prepare"
|
||||
|
||||
#~ msgid "unrecognized error in PLy_spi_prepare"
|
||||
#~ msgstr "erreur inconnue dans PLy_spi_prepare"
|
||||
|
||||
#~ msgid "unrecognized error in PLy_spi_execute_plan"
|
||||
#~ msgstr "erreur inconnue dans PLy_spi_execute_plan"
|
||||
|
||||
#~ msgid "unrecognized error in PLy_spi_execute_query"
|
||||
#~ msgstr "erreur inconnue dans PLy_spi_execute_query"
|
||||
|
||||
#~ msgid "could not create procedure cache"
|
||||
#~ msgstr "n'a pas pu créer le cache de procédure"
|
||||
|
||||
#~ msgid "PL/Python: %s"
|
||||
#~ msgstr "PL/python : %s"
|
||||
|
||||
#~ msgid "out of memory"
|
||||
#~ msgstr "mémoire épuisée"
|
||||
|
||||
#~ msgid "PL/Python function \"%s\" failed"
|
||||
#~ msgstr "échec de la fonction PL/python « %s »"
|
||||
|
||||
#~ msgid "could not compute string representation of Python object in PL/Python function \"%s\" while modifying trigger row"
|
||||
#~ msgid "This session has previously used Python major version %d, and it is now attempting to use Python major version %d."
|
||||
#~ msgstr ""
|
||||
#~ "n'a pas pu traiter la représentation de la chaîne d'un objet Python dans\n"
|
||||
#~ "la fonction PL/Python « %s » lors de la modification de la ligne du trigger"
|
||||
#~ "Cette session a auparavant utilisé la version majeure %d de Python et elle\n"
|
||||
#~ "essaie maintenant d'utiliser la version majeure %d."
|
||||
|
||||
#~ msgid "Start a new session to use a different Python major version."
|
||||
#~ msgstr ""
|
||||
#~ "Lancez une nouvelle session pour utiliser une version majeure différente de\n"
|
||||
#~ "Python."
|
||||
|
||||
#~ msgid "PL/Python function \"%s\" could not execute plan"
|
||||
#~ msgstr "la fonction PL/python « %s » n'a pas pu exécuter un plan"
|
||||
|
||||
#~ msgid "could not create string representation of Python object in PL/Python function \"%s\" while creating return value"
|
||||
#~ msgstr ""
|
||||
@ -514,21 +506,64 @@ msgstr "n'a pas pu extraire les octets de la chaîne encodée"
|
||||
#~ "Python dans la fonction PL/python « %s » lors de la création de la valeur\n"
|
||||
#~ "de retour"
|
||||
|
||||
#~ msgid "PL/Python function \"%s\" could not execute plan"
|
||||
#~ msgstr "la fonction PL/python « %s » n'a pas pu exécuter un plan"
|
||||
|
||||
#~ msgid "Start a new session to use a different Python major version."
|
||||
#~ msgid "could not compute string representation of Python object in PL/Python function \"%s\" while modifying trigger row"
|
||||
#~ msgstr ""
|
||||
#~ "Lancez une nouvelle session pour utiliser une version majeure différente de\n"
|
||||
#~ "Python."
|
||||
#~ "n'a pas pu traiter la représentation de la chaîne d'un objet Python dans\n"
|
||||
#~ "la fonction PL/Python « %s » lors de la modification de la ligne du trigger"
|
||||
|
||||
#~ msgid "This session has previously used Python major version %d, and it is now attempting to use Python major version %d."
|
||||
#~ msgstr ""
|
||||
#~ "Cette session a auparavant utilisé la version majeure %d de Python et elle\n"
|
||||
#~ "essaie maintenant d'utiliser la version majeure %d."
|
||||
#~ msgid "PL/Python function \"%s\" failed"
|
||||
#~ msgstr "échec de la fonction PL/python « %s »"
|
||||
|
||||
#~ msgid "Python major version mismatch in session"
|
||||
#~ msgstr "Différence de version majeure de Python dans la session"
|
||||
#~ msgid "out of memory"
|
||||
#~ msgstr "mémoire épuisée"
|
||||
|
||||
#~ msgid "could not create the base SPI exceptions"
|
||||
#~ msgstr "n'a pas pu créer les exceptions SPI de base"
|
||||
#~ msgid "PL/Python: %s"
|
||||
#~ msgstr "PL/python : %s"
|
||||
|
||||
#~ msgid "could not create procedure cache"
|
||||
#~ msgstr "n'a pas pu créer le cache de procédure"
|
||||
|
||||
#~ msgid "unrecognized error in PLy_spi_execute_query"
|
||||
#~ msgstr "erreur inconnue dans PLy_spi_execute_query"
|
||||
|
||||
#~ msgid "unrecognized error in PLy_spi_execute_plan"
|
||||
#~ msgstr "erreur inconnue dans PLy_spi_execute_plan"
|
||||
|
||||
#~ msgid "unrecognized error in PLy_spi_prepare"
|
||||
#~ msgstr "erreur inconnue dans PLy_spi_prepare"
|
||||
|
||||
#~ msgid "invalid arguments for plpy.prepare"
|
||||
#~ msgstr "arguments invalides pour plpy.prepare"
|
||||
|
||||
#~ msgid "transaction aborted"
|
||||
#~ msgstr "transaction annulée"
|
||||
|
||||
#~ msgid "PyCObject_FromVoidPtr() failed"
|
||||
#~ msgstr "échec de PyCObject_FromVoidPtr()"
|
||||
|
||||
#~ msgid "PyCObject_AsVoidPtr() failed"
|
||||
#~ msgstr "échec de PyCObject_AsVoidPtr()"
|
||||
|
||||
#~ msgid "unrecognized error in PLy_spi_execute_fetch_result"
|
||||
#~ msgstr "erreur inconnue dans PLy_spi_execute_fetch_result"
|
||||
|
||||
#~ msgid "PL/Python does not support conversion to arrays of row types."
|
||||
#~ msgstr "PL/Python ne supporte pas les conversions vers des tableaux de types row."
|
||||
|
||||
#~ msgid "plpy.prepare does not support composite types"
|
||||
#~ msgstr "plpy.prepare ne supporte pas les types composites"
|
||||
|
||||
#~ msgid "the message is already specified"
|
||||
#~ msgstr "le message est déjà spécifié"
|
||||
|
||||
#~ msgid "could not create new Python list"
|
||||
#~ msgstr "n'a pas pu créer la nouvelle liste Python"
|
||||
|
||||
#~ msgid "PL/Python only supports one-dimensional arrays."
|
||||
#~ msgstr "PL/Python supporte seulement les tableaux uni-dimensionnels."
|
||||
|
||||
#~ msgid "cannot convert multidimensional array to Python list"
|
||||
#~ msgstr "ne peut pas convertir un tableau multidimensionnel en liste Python"
|
||||
|
||||
#~ msgid "plan.status takes no arguments"
|
||||
#~ msgstr "plan.status ne prends pas d'arguments"
|
||||
|
@ -17,10 +17,10 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: plpython (PostgreSQL) 9.6\n"
|
||||
"Project-Id-Version: plpython (PostgreSQL) 10\n"
|
||||
"Report-Msgid-Bugs-To: pgsql-bugs@postgresql.org\n"
|
||||
"POT-Creation-Date: 2016-04-17 00:07+0000\n"
|
||||
"PO-Revision-Date: 2016-04-17 20:40+0100\n"
|
||||
"POT-Creation-Date: 2017-04-22 22:37+0000\n"
|
||||
"PO-Revision-Date: 2017-05-29 17:46+0100\n"
|
||||
"Last-Translator: Daniele Varrazzo <daniele.varrazzo@gmail.com>\n"
|
||||
"Language-Team: Gruppo traduzioni ITPUG <traduzioni@itpug.org>\n"
|
||||
"Language: it\n"
|
||||
@ -28,56 +28,56 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
"X-Generator: Poedit 1.8.7.1\n"
|
||||
|
||||
#: plpy_cursorobject.c:101
|
||||
#: plpy_cursorobject.c:100
|
||||
#, c-format
|
||||
msgid "plpy.cursor expected a query or a plan"
|
||||
msgstr "plpy.cursor richiede una query o un piano"
|
||||
|
||||
#: plpy_cursorobject.c:179
|
||||
#: plpy_cursorobject.c:176
|
||||
#, c-format
|
||||
msgid "plpy.cursor takes a sequence as its second argument"
|
||||
msgstr "plpy.cursor richiede una sequenza come secondo argomento"
|
||||
|
||||
#: plpy_cursorobject.c:195 plpy_spi.c:229
|
||||
#: plpy_cursorobject.c:192 plpy_spi.c:226
|
||||
#, c-format
|
||||
msgid "could not execute plan"
|
||||
msgstr "esecuzione del piano fallita"
|
||||
|
||||
#: plpy_cursorobject.c:198 plpy_spi.c:232
|
||||
#: plpy_cursorobject.c:195 plpy_spi.c:229
|
||||
#, c-format
|
||||
msgid "Expected sequence of %d argument, got %d: %s"
|
||||
msgid_plural "Expected sequence of %d arguments, got %d: %s"
|
||||
msgstr[0] "Attesa sequenza di %d argomento, ricevuti %d: %s"
|
||||
msgstr[1] "Attesa sequenza di %d argomenti, ricevuti %d: %s"
|
||||
|
||||
#: plpy_cursorobject.c:354
|
||||
#: plpy_cursorobject.c:350
|
||||
#, c-format
|
||||
msgid "iterating a closed cursor"
|
||||
msgstr "iterazione di un cursore chiuso"
|
||||
|
||||
#: plpy_cursorobject.c:362 plpy_cursorobject.c:427
|
||||
#: plpy_cursorobject.c:358 plpy_cursorobject.c:423
|
||||
#, c-format
|
||||
msgid "iterating a cursor in an aborted subtransaction"
|
||||
msgstr "iterazione di un cursore in una sotto-transazione interrotta"
|
||||
|
||||
#: plpy_cursorobject.c:419
|
||||
#: plpy_cursorobject.c:415
|
||||
#, c-format
|
||||
msgid "fetch from a closed cursor"
|
||||
msgstr "lettura da un cursore chiuso"
|
||||
|
||||
#: plpy_cursorobject.c:467 plpy_spi.c:438
|
||||
#: plpy_cursorobject.c:463 plpy_spi.c:434
|
||||
#, c-format
|
||||
msgid "query result has too many rows to fit in a Python list"
|
||||
msgstr "il risultato della query ha troppe righe per una lista Python"
|
||||
|
||||
#: plpy_cursorobject.c:508
|
||||
#: plpy_cursorobject.c:504
|
||||
#, c-format
|
||||
msgid "closing a cursor in an aborted subtransaction"
|
||||
msgstr "chiusura di un cursore in una sotto-transazione interrotta"
|
||||
|
||||
#: plpy_elog.c:127 plpy_elog.c:128 plpy_plpymodule.c:513
|
||||
#: plpy_elog.c:127 plpy_elog.c:128 plpy_plpymodule.c:548
|
||||
#, c-format
|
||||
msgid "%s"
|
||||
msgstr "%s"
|
||||
@ -112,77 +112,82 @@ msgstr "errore nell'ottenere l'elemento successivo dall'iteratore"
|
||||
msgid "PL/Python function with return type \"void\" did not return None"
|
||||
msgstr "la funzione PL/Python che restituisce \"void\" non ha restituito None"
|
||||
|
||||
#: plpy_exec.c:374 plpy_exec.c:400
|
||||
#: plpy_exec.c:379 plpy_exec.c:405
|
||||
#, c-format
|
||||
msgid "unexpected return value from trigger procedure"
|
||||
msgstr "la prodedura trigger ha restituito un valore inatteso"
|
||||
|
||||
#: plpy_exec.c:375
|
||||
#: plpy_exec.c:380
|
||||
#, c-format
|
||||
msgid "Expected None or a string."
|
||||
msgstr "Atteso None o una stringa."
|
||||
|
||||
#: plpy_exec.c:390
|
||||
#: plpy_exec.c:395
|
||||
#, c-format
|
||||
msgid "PL/Python trigger function returned \"MODIFY\" in a DELETE trigger -- ignored"
|
||||
msgstr "la funzione trigger PL/Python ha restituito \"MODIFY\" in un trigger DELETE -- ignorato"
|
||||
|
||||
#: plpy_exec.c:401
|
||||
#: plpy_exec.c:406
|
||||
#, c-format
|
||||
msgid "Expected None, \"OK\", \"SKIP\", or \"MODIFY\"."
|
||||
msgstr "Atteso None, \"OK\", \"SKIP\", o \"MODIFY\"."
|
||||
|
||||
#: plpy_exec.c:482
|
||||
#: plpy_exec.c:487
|
||||
#, c-format
|
||||
msgid "PyList_SetItem() failed, while setting up arguments"
|
||||
msgstr "PyList_SetItem() è fallita durante l'impostazione degli argomenti"
|
||||
|
||||
#: plpy_exec.c:486
|
||||
#: plpy_exec.c:491
|
||||
#, c-format
|
||||
msgid "PyDict_SetItemString() failed, while setting up arguments"
|
||||
msgstr "PyDict_SetItemString() è fallita durante l'impostazione degli argomenti"
|
||||
|
||||
#: plpy_exec.c:498
|
||||
#: plpy_exec.c:503
|
||||
#, c-format
|
||||
msgid "function returning record called in context that cannot accept type record"
|
||||
msgstr "la funzione che restituisce un record è chiamata in un contesto che non può accettare il tipo record"
|
||||
|
||||
#: plpy_exec.c:714
|
||||
#: plpy_exec.c:719
|
||||
#, c-format
|
||||
msgid "while creating return value"
|
||||
msgstr "durante la creazione del valore da restituire"
|
||||
|
||||
#: plpy_exec.c:738
|
||||
#: plpy_exec.c:743
|
||||
#, c-format
|
||||
msgid "could not create new dictionary while building trigger arguments"
|
||||
msgstr "creazione del nuovo dizionario nella costruzione degli argomenti del trigger fallita"
|
||||
|
||||
#: plpy_exec.c:927
|
||||
#: plpy_exec.c:931
|
||||
#, c-format
|
||||
msgid "TD[\"new\"] deleted, cannot modify row"
|
||||
msgstr "TD[\"new\"] cancellato, non è possibile modificare la riga"
|
||||
|
||||
#: plpy_exec.c:932
|
||||
#: plpy_exec.c:936
|
||||
#, c-format
|
||||
msgid "TD[\"new\"] is not a dictionary"
|
||||
msgstr "TD[\"new\"] non è un dizionario"
|
||||
|
||||
#: plpy_exec.c:957
|
||||
#: plpy_exec.c:963
|
||||
#, c-format
|
||||
msgid "TD[\"new\"] dictionary key at ordinal position %d is not a string"
|
||||
msgstr "la chiave di dizionario TD[\"new\"] alla posizione %d non è una stringa"
|
||||
|
||||
#: plpy_exec.c:964
|
||||
#: plpy_exec.c:970
|
||||
#, c-format
|
||||
msgid "key \"%s\" found in TD[\"new\"] does not exist as a column in the triggering row"
|
||||
msgstr "la chiave \"%s\" trovata in TD[\"new\"] non esiste come colonna nella riga del trigger"
|
||||
|
||||
#: plpy_exec.c:1044
|
||||
#: plpy_exec.c:975
|
||||
#, c-format
|
||||
msgid "cannot set system attribute \"%s\""
|
||||
msgstr "non è possibile impostare l'attributo di sistema \"%s\""
|
||||
|
||||
#: plpy_exec.c:1046
|
||||
#, c-format
|
||||
msgid "while modifying trigger row"
|
||||
msgstr "durante la modifica della riga trigger"
|
||||
|
||||
#: plpy_exec.c:1105
|
||||
#: plpy_exec.c:1107
|
||||
#, c-format
|
||||
msgid "forcibly aborting a subtransaction that has not been exited"
|
||||
msgstr "interruzione forzata di una sotto-transazione che non è terminata"
|
||||
@ -217,86 +222,86 @@ msgstr "creazione delle variabili globali fallita"
|
||||
msgid "could not initialize globals"
|
||||
msgstr "inizializzazione delle variabili globali fallita"
|
||||
|
||||
#: plpy_main.c:389
|
||||
#: plpy_main.c:387
|
||||
#, c-format
|
||||
msgid "PL/Python function \"%s\""
|
||||
msgstr "funzione PL/Python \"%s\""
|
||||
|
||||
#: plpy_main.c:396
|
||||
#: plpy_main.c:394
|
||||
#, c-format
|
||||
msgid "PL/Python anonymous code block"
|
||||
msgstr "blocco di codice anonimo in PL/Python"
|
||||
|
||||
#: plpy_planobject.c:123
|
||||
#, c-format
|
||||
msgid "plan.status takes no arguments"
|
||||
msgstr "plan.status non accetta argomenti"
|
||||
|
||||
#: plpy_plpymodule.c:178 plpy_plpymodule.c:181
|
||||
#: plpy_plpymodule.c:181 plpy_plpymodule.c:184
|
||||
#, c-format
|
||||
msgid "could not import \"plpy\" module"
|
||||
msgstr "importazione del modulo \"plpy\" fallita"
|
||||
|
||||
#: plpy_plpymodule.c:196
|
||||
#: plpy_plpymodule.c:199
|
||||
#, c-format
|
||||
msgid "could not create the spiexceptions module"
|
||||
msgstr "creazione del modulo spiexceptions fallita"
|
||||
|
||||
#: plpy_plpymodule.c:207
|
||||
#, c-format
|
||||
msgid "could not add the spiexceptions module"
|
||||
msgstr "aggiunta del modulo spiexceptions fallita"
|
||||
|
||||
#: plpy_plpymodule.c:217
|
||||
#: plpy_plpymodule.c:236
|
||||
#, c-format
|
||||
msgid "could not create the base SPI exceptions"
|
||||
msgstr "creazione delle eccezioni SPI di base fallita"
|
||||
msgid "could not create exception \"%s\""
|
||||
msgstr "creazione dell'eccezione \"%s\" fallita"
|
||||
|
||||
#: plpy_plpymodule.c:252 plpy_plpymodule.c:256
|
||||
#: plpy_plpymodule.c:271 plpy_plpymodule.c:275
|
||||
#, c-format
|
||||
msgid "could not generate SPI exceptions"
|
||||
msgstr "generazione delle eccezioni SPI fallita"
|
||||
|
||||
#: plpy_plpymodule.c:421
|
||||
#: plpy_plpymodule.c:443
|
||||
#, c-format
|
||||
msgid "could not unpack arguments in plpy.elog"
|
||||
msgstr "non è stato possibile espandere gli argomenti in plpy.elog"
|
||||
|
||||
#: plpy_plpymodule.c:430
|
||||
#: plpy_plpymodule.c:452
|
||||
msgid "could not parse error message in plpy.elog"
|
||||
msgstr "non è stato possibile interpretare il messaggio di errore in plpy.elog"
|
||||
|
||||
#: plpy_plpymodule.c:446
|
||||
#, c-format
|
||||
msgid "the message is already specified"
|
||||
msgstr "il messaggio è già specificato"
|
||||
|
||||
#: plpy_plpymodule.c:469
|
||||
#, c-format
|
||||
msgid "Argument 'message' given by name and position"
|
||||
msgstr "Parametro 'message' dato con nome e posizione"
|
||||
|
||||
#: plpy_plpymodule.c:496
|
||||
#, c-format
|
||||
msgid "'%s' is an invalid keyword argument for this function"
|
||||
msgstr "'%s' è un nome di argomento non valido per questa funzione"
|
||||
|
||||
#: plpy_plpymodule.c:477 plpy_plpymodule.c:480
|
||||
#: plpy_plpymodule.c:507 plpy_plpymodule.c:513
|
||||
#, c-format
|
||||
msgid "invalid SQLSTATE code"
|
||||
msgstr "codice SQLSTATE non valido"
|
||||
|
||||
#: plpy_procedure.c:232
|
||||
#: plpy_procedure.c:230
|
||||
#, c-format
|
||||
msgid "trigger functions can only be called as triggers"
|
||||
msgstr "le funzioni trigger possono essere chiamate esclusivamente da trigger"
|
||||
|
||||
#: plpy_procedure.c:237
|
||||
#: plpy_procedure.c:235
|
||||
#, c-format
|
||||
msgid "PL/Python functions cannot return type %s"
|
||||
msgstr "le funzioni PL/Python non possono restituire il tipo %s"
|
||||
|
||||
#: plpy_procedure.c:318
|
||||
#: plpy_procedure.c:316
|
||||
#, c-format
|
||||
msgid "PL/Python functions cannot accept type %s"
|
||||
msgstr "le funzioni PL/Python non possono accettare il tipo %s"
|
||||
|
||||
#: plpy_procedure.c:414
|
||||
#: plpy_procedure.c:412
|
||||
#, c-format
|
||||
msgid "could not compile PL/Python function \"%s\""
|
||||
msgstr "compilazione della funzione PL/Python \"%s\" fallita"
|
||||
|
||||
#: plpy_procedure.c:417
|
||||
#: plpy_procedure.c:415
|
||||
#, c-format
|
||||
msgid "could not compile anonymous PL/Python code block"
|
||||
msgstr "compilazione del blocco di codice anonimo PL/Python fallita"
|
||||
@ -306,57 +311,57 @@ msgstr "compilazione del blocco di codice anonimo PL/Python fallita"
|
||||
msgid "command did not produce a result set"
|
||||
msgstr "il comando non ha prodotto risultati"
|
||||
|
||||
#: plpy_spi.c:60
|
||||
#: plpy_spi.c:59
|
||||
#, c-format
|
||||
msgid "second argument of plpy.prepare must be a sequence"
|
||||
msgstr "il secondo argomento di plpy.prepare deve essere una sequenza"
|
||||
|
||||
#: plpy_spi.c:118
|
||||
#: plpy_spi.c:115
|
||||
#, c-format
|
||||
msgid "plpy.prepare: type name at ordinal position %d is not a string"
|
||||
msgstr "plpy.prepare: il nome del tipo nella posizione %d non è una stringa"
|
||||
|
||||
#: plpy_spi.c:194
|
||||
#: plpy_spi.c:191
|
||||
#, c-format
|
||||
msgid "plpy.execute expected a query or a plan"
|
||||
msgstr "plpy.execute si aspetta una query o un plan"
|
||||
|
||||
#: plpy_spi.c:213
|
||||
#: plpy_spi.c:210
|
||||
#, c-format
|
||||
msgid "plpy.execute takes a sequence as its second argument"
|
||||
msgstr "plpy.execute richiede una sequenza come secondo argomento"
|
||||
|
||||
#: plpy_spi.c:337
|
||||
#: plpy_spi.c:335
|
||||
#, c-format
|
||||
msgid "SPI_execute_plan failed: %s"
|
||||
msgstr "SPI_execute_plan ha fallito: %s"
|
||||
|
||||
#: plpy_spi.c:379
|
||||
#: plpy_spi.c:377
|
||||
#, c-format
|
||||
msgid "SPI_execute failed: %s"
|
||||
msgstr "SPI_execute ha fallito: %s"
|
||||
|
||||
#: plpy_subxactobject.c:123
|
||||
#: plpy_subxactobject.c:122
|
||||
#, c-format
|
||||
msgid "this subtransaction has already been entered"
|
||||
msgstr "si è già entrati in questa sotto-transazione"
|
||||
|
||||
#: plpy_subxactobject.c:129 plpy_subxactobject.c:187
|
||||
#: plpy_subxactobject.c:128 plpy_subxactobject.c:186
|
||||
#, c-format
|
||||
msgid "this subtransaction has already been exited"
|
||||
msgstr "si è già usciti da questa sotto-transazione"
|
||||
|
||||
#: plpy_subxactobject.c:181
|
||||
#: plpy_subxactobject.c:180
|
||||
#, c-format
|
||||
msgid "this subtransaction has not been entered"
|
||||
msgstr "non si è entrati in questa sotto-transazione"
|
||||
|
||||
#: plpy_subxactobject.c:193
|
||||
#: plpy_subxactobject.c:192
|
||||
#, c-format
|
||||
msgid "there is no subtransaction to exit from"
|
||||
msgstr "non c'è nessuna transazione da cui uscire"
|
||||
|
||||
#: plpy_typeio.c:286
|
||||
#: plpy_typeio.c:292
|
||||
#, c-format
|
||||
msgid "could not create new dictionary"
|
||||
msgstr "creazione del nuovo dizionario fallita"
|
||||
@ -376,62 +381,82 @@ msgstr "attributo Decimal non trovato nel modulo"
|
||||
msgid "conversion from numeric to Decimal failed"
|
||||
msgstr "conversione da numeric a Decimal fallita"
|
||||
|
||||
#: plpy_typeio.c:645
|
||||
#, c-format
|
||||
msgid "cannot convert multidimensional array to Python list"
|
||||
msgstr "non è possibile convertire array multidimensionali a liste Python"
|
||||
|
||||
#: plpy_typeio.c:646
|
||||
#, c-format
|
||||
msgid "PL/Python only supports one-dimensional arrays."
|
||||
msgstr "PL/Python supporta solo array monodimensionali."
|
||||
|
||||
#: plpy_typeio.c:652
|
||||
#, c-format
|
||||
msgid "could not create new Python list"
|
||||
msgstr "creazione della nuova lista Python fallita"
|
||||
|
||||
#: plpy_typeio.c:711
|
||||
#: plpy_typeio.c:772
|
||||
#, c-format
|
||||
msgid "could not create bytes representation of Python object"
|
||||
msgstr "creazione della rappresentazione in byte dell'oggetto Python fallita"
|
||||
|
||||
#: plpy_typeio.c:822
|
||||
#: plpy_typeio.c:881
|
||||
#, c-format
|
||||
msgid "could not create string representation of Python object"
|
||||
msgstr "creazione della rappresentazione stringa dell'oggetto Python fallita"
|
||||
|
||||
#: plpy_typeio.c:833
|
||||
#: plpy_typeio.c:892
|
||||
#, c-format
|
||||
msgid "could not convert Python object into cstring: Python string representation appears to contain null bytes"
|
||||
msgstr "conversione dell'oggetto Python in cstring fallita: la rappresentazione stringa Python sembra contenere byte null"
|
||||
|
||||
#: plpy_typeio.c:879
|
||||
#: plpy_typeio.c:949
|
||||
#, c-format
|
||||
msgid "malformed record literal: \"%s\""
|
||||
msgstr "letterale di record non corretto: \"%s\""
|
||||
|
||||
#: plpy_typeio.c:950
|
||||
#, c-format
|
||||
msgid "Missing left parenthesis."
|
||||
msgstr "Parentesi aperta mancante."
|
||||
|
||||
#: plpy_typeio.c:951 plpy_typeio.c:1389
|
||||
#, c-format
|
||||
msgid "To return a composite type in an array, return the composite type as a Python tuple, e.g. \"[('foo')]\""
|
||||
msgstr "Per restutuire un tipo composito in un array, restituisci il tipo composito come tupla Python, per esempio \"[('foo')]\""
|
||||
|
||||
#: plpy_typeio.c:1000
|
||||
#, c-format
|
||||
msgid "number of array dimensions exceeds the maximum allowed (%d)"
|
||||
msgstr "il numero di dimensioni dell'array supera il massimo consentito (%d)"
|
||||
|
||||
#: plpy_typeio.c:1004
|
||||
#, c-format
|
||||
msgid "cannot determine sequence length for function return value"
|
||||
msgstr "errore nel determinare la lunghezza della sequenza per il valore di ritorno della funzione"
|
||||
|
||||
#: plpy_typeio.c:1007 plpy_typeio.c:1011
|
||||
#, c-format
|
||||
msgid "array size exceeds the maximum allowed"
|
||||
msgstr "la dimensione dell'array supera il massimo consentito"
|
||||
|
||||
#: plpy_typeio.c:1037
|
||||
#, c-format
|
||||
msgid "return value of function with array return type is not a Python sequence"
|
||||
msgstr "il valore restituito dalla funzione con tipo restituito array non è una sequenza Python"
|
||||
|
||||
#: plpy_typeio.c:1000
|
||||
#: plpy_typeio.c:1090
|
||||
#, c-format
|
||||
msgid "multidimensional arrays must have array expressions with matching dimensions. PL/Python function return value has sequence length %d while expected %d"
|
||||
msgstr "gli array multidimensionali devono avere espressioni array di dimensioni corrispondenti. il valore di ritorno della funzione PL/Python ha una sequenza di lungezza %d, mentre era atteso %d"
|
||||
|
||||
#: plpy_typeio.c:1212
|
||||
#, c-format
|
||||
msgid "key \"%s\" not found in mapping"
|
||||
msgstr "la chiave \"%s\" non è stata trovata nel dizionario"
|
||||
|
||||
#: plpy_typeio.c:1001
|
||||
#: plpy_typeio.c:1213
|
||||
#, c-format
|
||||
msgid "To return null in a column, add the value None to the mapping with the key named after the column."
|
||||
msgstr "Per restituire null in una colonna, inserire nella mappa il valore None con una chiave chiamata come la colonna."
|
||||
|
||||
#: plpy_typeio.c:1052
|
||||
#: plpy_typeio.c:1264
|
||||
#, c-format
|
||||
msgid "length of returned sequence did not match number of columns in row"
|
||||
msgstr "la lunghezza della sequenza ritornata non rispetta il numero di colonne presenti nella riga"
|
||||
|
||||
#: plpy_typeio.c:1163
|
||||
#: plpy_typeio.c:1387
|
||||
#, c-format
|
||||
msgid "attribute \"%s\" does not exist in Python object"
|
||||
msgstr "l'attributo \"%s\" non esiste nell'oggetto Python"
|
||||
|
||||
#: plpy_typeio.c:1164
|
||||
#: plpy_typeio.c:1390
|
||||
#, c-format
|
||||
msgid "To return null in a column, let the returned object have an attribute named after column with value None."
|
||||
msgstr "Per restituire null in una colonna, l'oggetto restituito deve avere un attributo chiamato come la colonna con valore None."
|
||||
|
Reference in New Issue
Block a user