diff --git a/dictionaries/library_cgi.txt b/dictionaries/library_cgi.txt new file mode 100644 index 0000000000..7d02d02319 --- /dev/null +++ b/dictionaries/library_cgi.txt @@ -0,0 +1,36 @@ +script +scripts +Python +host +shell +etc +manejador +bytes +recursiva +recursivamente +megabytes +usable +hackers +comandos +Unix +octal +cgi +bin +Desafortunadamente +críptico +addr +At +name +Joe +Blow +depurarlo +traceback +tracebacks +deshabilita +búfer +logs +userid +explícitamente +uid +query +string \ No newline at end of file diff --git a/library/cgi.po b/library/cgi.po index 72251c9edd..90fb2828ab 100644 --- a/library/cgi.po +++ b/library/cgi.po @@ -11,35 +11,34 @@ msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-05-05 12:54+0200\n" -"PO-Revision-Date: 2020-08-29 11:19+0200\n" +"PO-Revision-Date: 2020-10-22 15:27-0500\n" "Language-Team: python-doc-es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.8.0\n" "Last-Translator: \n" -"X-Generator: Poedit 2.3.1\n" +"X-Generator: Poedit 2.4.1\n" "Language: es\n" #: ../Doc/library/cgi.rst:2 msgid ":mod:`cgi` --- Common Gateway Interface support" -msgstr ":mod:`cgi` --- Soporte de Interfaz de Entrada Común (*CGI*)" +msgstr ":mod:`cgi` --- Soporte de Interfaz de Entrada Común (CGI)" #: ../Doc/library/cgi.rst:7 msgid "**Source code:** :source:`Lib/cgi.py`" -msgstr "**Source code:** :source:`Lib/cgi.py`" +msgstr "**Código fuente:** :source:`Lib/cgi.py`" #: ../Doc/library/cgi.rst:19 msgid "Support module for Common Gateway Interface (CGI) scripts." -msgstr "" -"Módulo de soporte para *scripts* de la Interfaz de Entrada Común (*CGI*)" +msgstr "Módulo de soporte para scripts de la Interfaz de Entrada Común (CGI)" #: ../Doc/library/cgi.rst:21 msgid "" "This module defines a number of utilities for use by CGI scripts written in " "Python." msgstr "" -"Este módulo define una serie de utilidades para el uso de *scripts* CGI " +"Este módulo define una serie de utilidades para el uso de scripts CGI " "escritos en Python." #: ../Doc/library/cgi.rst:26 @@ -51,7 +50,7 @@ msgid "" "A CGI script is invoked by an HTTP server, usually to process user input " "submitted through an HTML ``
`` or ```` element." msgstr "" -"Un *script* de CGI es invocado por un servidor HTTP, generalmente para " +"Un script de CGI es invocado por un servidor HTTP, generalmente para " "procesar entradas de usuario entregadas mediante un elemento HTML ```` " "o ````." @@ -63,6 +62,12 @@ msgid "" "lots of other goodies) in the script's shell environment, executes the " "script, and sends the script's output back to the client." msgstr "" +"Muy a menudo, los scripts CGI viven en el directorio especial :file:`cgi-" +"bin` del servidor. El servidor HTTP coloca todo tipo de información sobre la " +"solicitud (como el nombre de host del cliente, la dirección URL solicitada, " +"la cadena de búsqueda (query string) y muchas otras consultas) en el entorno " +"de shell del script, ejecuta el script y envía la salida del script al " +"cliente." #: ../Doc/library/cgi.rst:39 msgid "" @@ -74,6 +79,14 @@ msgid "" "the latest addition is support for file uploads from a form (if your browser " "supports it)." msgstr "" +"La entrada del script también está conectada al cliente, y a veces los datos " +"del formulario se leen de esta manera; en otras ocasiones los datos del " +"formulario se pasan a través de la parte \"cadena de caracteres de búsqueda " +"(query string)\" de la dirección URL. Este módulo está diseñado para " +"ocuparse de los diferentes casos y proporcionar una interfaz más simple al " +"script de Python. También proporciona una serie de utilidades que ayudan en " +"la depuración de scripts, y la última adición es la compatibilidad con " +"cargas de archivos desde un formulario (si el navegador lo admite)." #: ../Doc/library/cgi.rst:46 msgid "" @@ -82,6 +95,10 @@ msgid "" "client what kind of data is following. Python code to generate a minimal " "header section looks like this::" msgstr "" +"La salida de un script CGI debe constar de dos secciones, separadas por una " +"línea en blanco. La primera sección contiene una serie de encabezados, " +"indicando al cliente qué tipo de datos sigue. El código de Python para " +"generar una sección de encabezado mínima tiene este aspecto::" #: ../Doc/library/cgi.rst:54 msgid "" @@ -89,6 +106,9 @@ msgid "" "display nicely formatted text with header, in-line images, etc. Here's " "Python code that prints a simple piece of HTML::" msgstr "" +"La segunda sección suele ser HTML, lo que permite al software cliente " +"mostrar texto bien formateado con encabezado, imágenes en línea, etc. Aquí " +"está el código Python que imprime una simple pieza de HTML::" #: ../Doc/library/cgi.rst:66 msgid "Using the cgi module" @@ -100,7 +120,7 @@ msgstr "Empieza escribiendo ``import cgi``." #: ../Doc/library/cgi.rst:70 msgid "When you write a new script, consider adding these lines::" -msgstr "Cuando escribas un nuevo *script*, considera añadir estas líneas::" +msgstr "Cuando escribas un nuevo script, considera añadir estas líneas::" #: ../Doc/library/cgi.rst:75 msgid "" @@ -109,6 +129,10 @@ msgid "" "the guts of your program to users of your script, you can have the reports " "saved to files instead, with code like this::" msgstr "" +"Esto activa un manejador de excepciones especial que mostrará informes " +"detallados en el explorador Web si se produce algún error. Si prefiere no " +"mostrar en detalle su programa a los usuarios de su script, puede tener los " +"informes guardados en archivos en su lugar, con código como este::" #: ../Doc/library/cgi.rst:83 msgid "" @@ -117,6 +141,11 @@ msgid "" "in tracking down bugs. You can always remove the ``cgitb`` line later when " "you have tested your script and are confident that it works correctly." msgstr "" +"Es muy útil usar esta característica durante el desarrollo de scripts. Los " +"informes producidos por :mod:`cgitb` proporcionan información que puede " +"ahorrarle mucho tiempo en el seguimiento de errores. Siempre puede eliminar " +"la línea ``cgitb`` más adelante cuando haya probado su script y esté seguro " +"de que funciona correctamente." #: ../Doc/library/cgi.rst:88 msgid "" @@ -129,6 +158,15 @@ msgid "" "environment variables set according to the CGI standard). Since it may " "consume standard input, it should be instantiated only once." msgstr "" +"Para obtener los datos del formulario enviado, utilice la clase :class:" +"`FieldStorage`. Si el formulario contiene caracteres no ASCII, utilice el " +"parámetro de palabra clave *encoding* establecido en el valor de la " +"codificación definida para el documento. Normalmente se encuentra en la " +"etiqueta META en la sección HEAD del documento HTML o en el encabezado :" +"mailheader:`Content-Type`). Esto lee el contenido del formulario de la " +"entrada estándar o del entorno (dependiendo del valor de varias variables de " +"entorno establecidas de acuerdo con el estándar CGI). Dado que puede " +"consumir entrada estándar, se debe crear la instancia solo una vez." #: ../Doc/library/cgi.rst:97 msgid "" @@ -140,6 +178,14 @@ msgid "" "for the optional *keep_blank_values* keyword parameter when creating the :" "class:`FieldStorage` instance." msgstr "" +"La instancia :class:`FieldStorage` puede ser indexada como un diccionario " +"Python. Permite las pruebas de afiliación con el operador :keyword:`in`, y " +"también es compatible con el método de diccionario estándar :meth:`~dict." +"keys` y la función incorporada :func:`len`. Los campos de formulario que " +"contienen cadenas de caracteres vacías son ignoradas y no aparecen en el " +"diccionario; para mantener estos valores, proporciona un valor verdadero " +"para el parámetro de palabra clave opcional *keep_blank_values* al crear la " +"instancia :class:`FieldStorage`." #: ../Doc/library/cgi.rst:105 msgid "" @@ -147,6 +193,10 @@ msgid "" "`Content-Type` header and blank line have already been printed) checks that " "the fields ``name`` and ``addr`` are both set to a non-empty string::" msgstr "" +"Por ejemplo, el código siguiente (que supone que el encabezado :mailheader:" +"`Content-Type` y la línea en blanco ya se han impreso) comprueba que los " +"campos ``name`` y ``addr`` son ambos establecidos a una cadena de caracteres " +"no vacía::" #: ../Doc/library/cgi.rst:119 msgid "" @@ -157,6 +207,14 @@ msgid "" "method returns this string value directly; it also accepts an optional " "second argument as a default to return if the requested key is not present." msgstr "" +"Aquí los campos, a los que se accede a través de ``form[key]``, son por sí " +"mismos las instancias de :class:`FieldStorage` (o :class:`MiniFieldStorage`, " +"dependiendo de la codificación del formulario). El atributo :attr:" +"`~FieldStorage.value` de la instancia produce el valor de cadena de " +"caracteres del campo. El método :meth:`~FieldStorage.getvalue` retorna este " +"valor de cadena de caracteres directamente; también acepta un segundo " +"argumento opcional como valor predeterminado para retornar si la clave " +"solicitada no está presente." #: ../Doc/library/cgi.rst:126 msgid "" @@ -170,6 +228,16 @@ msgid "" "single item case). For example, this code concatenates any number of " "username fields, separated by commas::" msgstr "" +"Si los datos del formulario enviados contienen más de un campo con el mismo " +"nombre, el objeto recuperado por ``form[key]`` no es una instancia :class:" +"`FieldStorage` o :class:`MiniFieldStorage`, sino una lista de dichas " +"instancias. De forma similar, en esta situación, ``form.getvalue(key)`` " +"retornaría una lista de cadenas de caracteres. Si espera esta posibilidad " +"(cuando su formulario HTML contiene múltiples campos con el mismo nombre), " +"utilice el método :meth:`~FieldStorage.getlist`, que siempre retorna una " +"lista de valores (para que no sea necesario poner en mayúsculas y minúsculas " +"en el caso de un solo elemento). Por ejemplo, este código concatena " +"cualquier número de campos de nombre de usuario, separados por comas::" #: ../Doc/library/cgi.rst:139 msgid "" @@ -183,6 +251,15 @@ msgid "" "`FieldStorage` instance (the :func:`~io.RawIOBase.read` and :func:`~io." "IOBase.readline` methods will return bytes)::" msgstr "" +"Si un campo representa un archivo cargado, el acceso al valor a través del " +"atributo :attr:`~FieldStorage.value` o el método :meth:`~FieldStorage." +"getvalue` lee todo el archivo en memoria como bytes. Puede que esto no sea " +"lo que quiera que ocurra. Puede probar un archivo cargado probando el " +"atributo :attr:`~FieldStorage.filename` o el atributo :attr:`~FieldStorage." +"file`. Después, puede leer los datos del atributo :attr:`!file` antes de " +"que se cierre automáticamente como parte de la recolección de elementos no " +"utilizados de la instancia :class:`FieldStorage` (los métodos :func:`~io." +"RawIOBase.read` y :func:`~io.IOBase.readline` retornarán bytes)::" #: ../Doc/library/cgi.rst:159 msgid "" @@ -200,6 +277,10 @@ msgid "" "Back or Cancel button) the :attr:`~FieldStorage.done` attribute of the " "object for the field will be set to the value -1." msgstr "" +"Si un error es encontrado al obtener el contenido de un archivo cargado (por " +"ejemplo, cuando el usuario interrumpe el envío del formulario haciendo clic " +"en un botón Atrás o Cancelar), el atributo :attr:`~FieldStorage.done` del " +"objeto para el campo se establecerá en el valor -1." #: ../Doc/library/cgi.rst:167 msgid "" @@ -211,6 +292,14 @@ msgid "" "another MIME type matching :mimetype:`multipart/\\*`). In this case, it can " "be iterated over recursively just like the top-level form object." msgstr "" +"El borrador de archivo de carga estándar presenta la posibilidad de cargar " +"varios archivos desde un campo (utilizando una codificación recursiva :" +"mimetype:`multipart/\\*`). Cuando esto ocurre, el elemento será un elemento " +"similar a un diccionario :class:`FieldStorage`. Esto se puede determinar " +"probando su atributo :attr:`!type`, que debe ser :mimetype:`multipart/form-" +"data` (o tal vez otro tipo MIME que coincida :mimetype:`multipart/\\*`). En " +"este caso, se puede iterar recursivamente al igual que el objeto de " +"formulario de nivel superior." #: ../Doc/library/cgi.rst:175 msgid "" @@ -220,12 +309,21 @@ msgid "" "this case, the :attr:`!list`, :attr:`!file`, and :attr:`filename` attributes " "are always ``None``." msgstr "" +"Cuando se envía un formulario en el formato \"antiguo\" (como la cadena de " +"caracteres de consulta (query string) o como una sola parte de datos de " +"tipo :mimetype:`application/x-www-form-urlencoded`), los elementos serán " +"realmente instancias de la clase :class:`MiniFieldStorage`. En este caso, " +"los atributos :attr:`!list`, :attr:`!file` y :attr:`filename` siempre son " +"``None``." #: ../Doc/library/cgi.rst:180 msgid "" "A form submitted via POST that also has a query string will contain both :" "class:`FieldStorage` and :class:`MiniFieldStorage` items." msgstr "" +"Un formulario enviado a través de POST que también tiene una cadena de " +"caracteres de consulta (query string) contendrá los elementos :class:" +"`FieldStorage` y :class:`MiniFieldStorage`." #: ../Doc/library/cgi.rst:183 msgid "" @@ -240,6 +338,8 @@ msgid "" "Added support for the context management protocol to the :class:" "`FieldStorage` class." msgstr "" +"Agregado soporte para el protocolo de administrador de contexto a la clase :" +"class:`FieldStorage` ." #: ../Doc/library/cgi.rst:193 msgid "Higher Level Interface" @@ -285,7 +385,7 @@ msgid "" "multiple checkboxes with the same name::" msgstr "" "Esta situación es común, por ejemplo, cuando un formulario contiene un grupo " -"de múltiples casillas de verificación (*checkbox*) con el mismo nombre::" +"de múltiples casillas de verificación (checkboxes) con el mismo nombre::" #: ../Doc/library/cgi.rst:223 msgid "" @@ -293,6 +393,10 @@ msgid "" "name in a form and then you expect and need only one value associated with " "this name. So you write a script containing for example this code::" msgstr "" +"En la mayoría de las situaciones, sin embargo, solo hay un control de " +"formulario con un nombre determinado en un formulario y así, espera y solo " +"necesita un valor asociado con este nombre. Así que escribe un script que " +"contiene, por ejemplo, este código::" #: ../Doc/library/cgi.rst:229 msgid "" @@ -304,6 +408,14 @@ msgid "" "is not valid (since lists do not have a method of this name) and results in " "an :exc:`AttributeError` exception." msgstr "" +"El problema con el código es que nunca debe esperar que un cliente " +"proporcione una entrada válida a los scripts. Por ejemplo, si un usuario " +"curioso anexa otro par ``user=foo`` a la cadena de caracteres de consulta " +"(query string), el script se bloquearía, porque en esta situación la llamada " +"al método ``getvalue(\"user\")`` retorna una lista en lugar de una cadena de " +"caracteres. Llamar al método :meth:`~str.upper` en una lista no es válido " +"(ya que las listas no tienen un método con este nombre) y se produce una " +"excepción :exc:`AttributeError`." #: ../Doc/library/cgi.rst:237 msgid "" @@ -311,6 +423,10 @@ msgid "" "the code which checks whether the obtained value is a single value or a list " "of values. That's annoying and leads to less readable scripts." msgstr "" +"Por lo tanto, la forma adecuada de leer los valores de datos de formulario " +"era usar siempre el código que comprueba si el valor obtenido es un valor " +"único o una lista de valores. Eso es molesto y conduce a scripts menos " +"legibles." #: ../Doc/library/cgi.rst:241 msgid "" @@ -318,6 +434,9 @@ msgid "" "getfirst` and :meth:`~FieldStorage.getlist` provided by this higher level " "interface." msgstr "" +"Un enfoque más conveniente es utilizar los métodos :meth:`~FieldStorage." +"getfirst` y :meth:`~FieldStorage.getlist` proporcionados por esta interfaz " +"de nivel superior." #: ../Doc/library/cgi.rst:247 msgid "" @@ -329,6 +448,13 @@ msgid "" "value specified by the optional parameter *default*. This parameter " "defaults to ``None`` if not specified." msgstr "" +"Este método siempre retorna solo un valor asociado con el campo de " +"formulario *name*. El método retorna solo el primer valor en caso de que se " +"registraran más valores con dicho nombre. Tenga en cuenta que el orden en " +"que se reciben los valores puede variar de un navegador a otro y no debe " +"darse por sentado. [#]_ Si no existe ningún campo o valor de formulario, el " +"método retorna el valor especificado por el parámetro opcional *default*. " +"Este parámetro tiene como valor predeterminado ``None`` si no se especifica." #: ../Doc/library/cgi.rst:258 msgid "" @@ -337,10 +463,14 @@ msgid "" "exists for *name*. It returns a list consisting of one item if only one " "such value exists." msgstr "" +"Este método siempre retorna una lista de valores asociados con el campo de " +"formulario *name*. El método retorna una lista vacía si no existe tal campo " +"o valor de formulario para *name*. Retorna una lista que consta de un " +"elemento si solo existe un valor de este tipo." #: ../Doc/library/cgi.rst:262 msgid "Using these methods you can write nice compact code::" -msgstr "" +msgstr "Usando estos métodos puede escribir código compacto agradable::" #: ../Doc/library/cgi.rst:274 msgid "Functions" @@ -351,6 +481,8 @@ msgid "" "These are useful if you want more control, or if you want to employ some of " "the algorithms implemented in this module in other circumstances." msgstr "" +"Estas son útiles si desea más control, o si desea emplear algunos de los " +"algoritmos implementados en este módulo en otras circunstancias." #: ../Doc/library/cgi.rst:282 msgid "" @@ -358,6 +490,9 @@ msgid "" "stdin``). The *keep_blank_values* and *strict_parsing* parameters are " "passed to :func:`urllib.parse.parse_qs` unchanged." msgstr "" +"Analiza una consulta en el entorno o desde un archivo (el archivo tiene como " +"valor predeterminado ``sys.stdin``). Los parámetros *keep_blank_values* y " +"*strict_parsing* se pasan a :func:`urllib.parse.parse_qs` sin cambios." #: ../Doc/library/cgi.rst:289 msgid "" @@ -366,6 +501,10 @@ msgid "" "other parameters in the :mailheader:`Content-Type` header, and *encoding*, " "the request encoding." msgstr "" +"Analiza la entrada de tipo :mimetype:`multipart/form-data` (para cargas de " +"archivos). Los argumentos son *fp* para el archivo de entrada, *pdict* para " +"un diccionario que contiene otros parámetros en el encabezado :mailheader:" +"`Content-Type` y *encoding*, la codificación de la solicitud." #: ../Doc/library/cgi.rst:294 msgid "" @@ -373,6 +512,10 @@ msgid "" "field names, each value is a list of values for that field. For non-file " "fields, the value is a list of strings." msgstr "" +"Retorna un diccionario al igual que :func:`urllib.parse.parse_qs`: las " +"claves son los nombres de campo, cada valor es una lista de valores para ese " +"campo. Para los campos que no son de archivo, el valor es una lista de " +"cadenas de caracteres." #: ../Doc/library/cgi.rst:298 msgid "" @@ -380,29 +523,39 @@ msgid "" "uploaded --- in that case, use the :class:`FieldStorage` class instead which " "is much more flexible." msgstr "" +"Esto es fácil de usar pero no muy bueno si espera que se carguen megabytes " +"--- en ese caso, utilice la clase :class:`FieldStorage` en su lugar, que es " +"mucho más flexible." #: ../Doc/library/cgi.rst:302 msgid "" "Added the *encoding* and *errors* parameters. For non-file fields, the " "value is now a list of strings, not bytes." msgstr "" +"Se agregaron los parámetros *encoding* y *errors*. Para los campos que no " +"son de archivo, el valor es ahora una lista de cadenas de caracteres, no " +"bytes." #: ../Doc/library/cgi.rst:309 msgid "" "Parse a MIME header (such as :mailheader:`Content-Type`) into a main value " "and a dictionary of parameters." msgstr "" +"Analiza un encabezado MIME (como :mailheader:`Content-Type`) en un valor " +"principal y un diccionario de parámetros." #: ../Doc/library/cgi.rst:315 msgid "" "Robust test CGI script, usable as main program. Writes minimal HTTP headers " "and formats all information provided to the script in HTML form." msgstr "" +"Script CGI de prueba robusto, usable como programa principal. Escribe " +"encabezados HTTP mínimos y formatea toda la información proporcionada al " +"script en formato HTML." #: ../Doc/library/cgi.rst:321 -#, fuzzy msgid "Format the shell environment in HTML." -msgstr "Da formato al entorno *shell* en HTML." +msgstr "Da formato al entorno del shell en HTML." #: ../Doc/library/cgi.rst:326 msgid "Format a form in HTML." @@ -432,6 +585,14 @@ msgid "" "invoke arbitrary shell commands. Even parts of the URL or field names " "cannot be trusted, since the request doesn't have to come from your form!" msgstr "" +"Hay una regla importante: si invoca un programa externo (a través de las " +"funciones :func:`os.system` o :func:`os.popen` u otras con una funcionalidad " +"similar), asegúrese de no pasar cadenas de caracteres arbitrarias recibidas " +"del cliente al shell. Este es una brecha de seguridad muy conocida por la " +"que los hackers inteligentes en cualquier lugar de la Web pueden explotar un " +"inocente script CGI para invocar comandos de shell arbitrarios. Incluso " +"partes de la URL o nombres de campo pueden no ser confiables, ya que la " +"solicitud no tiene que venir de su formulario!" #: ../Doc/library/cgi.rst:354 msgid "" @@ -439,10 +600,14 @@ msgid "" "shell command, you should make sure the string contains only alphanumeric " "characters, dashes, underscores, and periods." msgstr "" +"Para estar en el lado seguro, si debe pasar una cadena de caracteres de un " +"formulario a un comando de shell, debe asegurarse de que la cadena de " +"caracteres contiene solo caracteres alfanuméricos, guiones, guiones bajos y " +"puntos." #: ../Doc/library/cgi.rst:360 msgid "Installing your CGI script on a Unix system" -msgstr "Instalando su *script* de CGI en un sistema Unix" +msgstr "Instalando su script de CGI en un sistema Unix" #: ../Doc/library/cgi.rst:362 msgid "" @@ -450,6 +615,10 @@ msgid "" "administrator to find the directory where CGI scripts should be installed; " "usually this is in a directory :file:`cgi-bin` in the server tree." msgstr "" +"Lea la documentación del servidor HTTP y consulte con el administrador del " +"sistema local para encontrar el directorio donde se deben instalar los " +"scripts CGI; por lo general, esto se encuentra en un directorio :file:`cgi-" +"bin` en el árbol del servidor." #: ../Doc/library/cgi.rst:366 msgid "" @@ -458,11 +627,16 @@ msgid "" "Make sure that the first line of the script contains ``#!`` starting in " "column 1 followed by the pathname of the Python interpreter, for instance::" msgstr "" +"Asegúrese de que el script es legible y ejecutable por \"otros\"; el modo de " +"archivo Unix debe ser octal ``0o755`` (utilice ``chmod 0755 filename``). " +"Asegúrese de que la primera línea del script contiene ``#!`` a partir de la " +"columna 1 seguida del nombre de ruta del intérprete de Python, por ejemplo::" #: ../Doc/library/cgi.rst:373 msgid "" "Make sure the Python interpreter exists and is executable by \"others\"." msgstr "" +"Asegúrese que el intérprete de Python exista y sea ejecutable por \"otros\"." #: ../Doc/library/cgi.rst:375 msgid "" @@ -478,6 +652,18 @@ msgid "" "`PATH`) or the Python module search path (:envvar:`PYTHONPATH`) to be set to " "anything interesting." msgstr "" +"Asegúrese de que cualquier archivo que su script necesite leer o escribir " +"sea legible o tenga permiso de escritura, respectivamente, por \"otros\" --- " +"su modo debe ser ``0o644`` para legible y ``0o666`` para escribir. Esto se " +"debe a que, por razones de seguridad, el servidor HTTP ejecuta el script " +"como usuario \"nadie\", sin ningún privilegio especial. Sólo puede leer " +"(escribir, ejecutar) archivos que todo el mundo puede leer (escribir, " +"ejecutar). El directorio actual en tiempo de ejecución también es diferente " +"(normalmente es el directorio cgi-bin del servidor) y el conjunto de " +"variables de entorno también es diferente de lo que se obtiene al iniciar " +"sesión. En particular, no cuente con la ruta de búsqueda del shell para " +"ejecutables (:envvar:`PATH`) o la ruta de búsqueda del módulo Python (:" +"envvar:`PYTHONPATH`) que se establecerá en cualquier cosa interesante." #: ../Doc/library/cgi.rst:386 msgid "" @@ -485,6 +671,9 @@ msgid "" "default module search path, you can change the path in your script, before " "importing other modules. For example::" msgstr "" +"Si necesita cargar módulos desde un directorio el cual no está en la ruta de " +"búsqueda de módulos predeterminada de Python, puede cambiar la ruta en su " +"script, antes de importar otros módulos. Por ejemplo::" #: ../Doc/library/cgi.rst:394 msgid "(This way, the directory inserted last will be searched first!)" @@ -496,10 +685,13 @@ msgid "" "Instructions for non-Unix systems will vary; check your HTTP server's " "documentation (it will usually have a section on CGI scripts)." msgstr "" +"Las instrucciones para sistemas que no son Unix pueden variar; consulte la " +"documentación de su servidor HTTP (usualmente tendrá una sección sobre " +"scripts CGI)." #: ../Doc/library/cgi.rst:401 msgid "Testing your CGI script" -msgstr "Probando su *script* de CGI" +msgstr "Probando su script de CGI" #: ../Doc/library/cgi.rst:403 msgid "" @@ -510,16 +702,25 @@ msgid "" "error, the Python interpreter won't execute it at all, and the HTTP server " "will most likely send a cryptic error to the client." msgstr "" +"Desafortunadamente, un script CGI generalmente no se ejecutará cuando lo " +"pruebe desde la línea de comandos, y un script que funcione perfectamente " +"desde la línea de comandos puede fallar misteriosamente cuando se ejecuta " +"desde el servidor. Hay una razón por la que debe probar el script desde la " +"línea de comandos: si contiene un error de sintaxis, el intérprete de Python " +"no lo ejecutará en absoluto y lo más probable es que el servidor HTTP envíe " +"un error críptico al cliente." #: ../Doc/library/cgi.rst:410 msgid "" "Assuming your script has no syntax errors, yet it does not work, you have no " "choice but to read the next section." msgstr "" +"Asumiendo que su script no tiene errores de sintaxis, pero este no funciona, " +"no tiene más opción que leer la siguiente sección." #: ../Doc/library/cgi.rst:415 msgid "Debugging CGI scripts" -msgstr "Depurando *scripts* de CGI" +msgstr "Depurando scripts de CGI" #: ../Doc/library/cgi.rst:419 msgid "" @@ -533,6 +734,15 @@ msgid "" "directory, it should be possible to send it a request by entering a URL into " "your browser of the form:" msgstr "" +"En primer lugar, compruebe si hay errores de instalación triviales --- leer " +"la sección anterior sobre la instalación cuidadosa de su script CGI puede " +"ahorrarle mucho tiempo. Si se pregunta si ha entendido correctamente el " +"procedimiento de instalación, intente instalar una copia de este archivo de " +"módulo (:file:`cgi.py`) como un script CGI. Cuando se invoca como un " +"script, el archivo volcará su entorno y el contenido del formulario en " +"formato HTML. Dele el modo correcto, etc., y envíe una solicitud. Si está " +"instalado en el directorio estándar :file:`cgi-bin`, debería ser posible " +"enviarle una solicitud introduciendo una URL en su navegador de la forma:" #: ../Doc/library/cgi.rst:432 msgid "" @@ -545,14 +755,14 @@ msgid "" "the :file:`cgi.py` script has been installed correctly. If you follow the " "same procedure for your own script, you should now be able to debug it." msgstr "" -"Si esto da un error de tipo 404, el servidor no puede encontrar el *script* " -"-- quizás necesite instalarlo en un directorio diferente. Si este da otro " +"Si esto da un error de tipo 404, el servidor no puede encontrar el script -- " +"quizás necesite instalarlo en un directorio diferente. Si este da otro " "error, hay un problema con la instalación que debería intentar solucionar " "antes de continuar. Si obtiene una lista bien formateada del entorno y el " "contenido del formulario (en este ejemplo, los campos deberían estar " "listados como \"addr\" con el valor \"At Home\" y \"name\" con el valor " -"\"Joe Blow\"), el *script* :file:`cgi.py` ha sido instalado correctamente. " -"Si sigue el mismo procedimiento para su propio *scipt*, ya debería poder " +"\"Joe Blow\"), el script :file:`cgi.py` ha sido instalado correctamente. Si " +"sigue el mismo procedimiento para su propio script, ya debería poder " "depurarlo." #: ../Doc/library/cgi.rst:441 @@ -560,6 +770,9 @@ msgid "" "The next step could be to call the :mod:`cgi` module's :func:`test` function " "from your script: replace its main code with the single statement ::" msgstr "" +"El siguiente paso podría ser llamar a la función :func:`test` del módulo :" +"mod:`cgi` de su script: reemplace su código principal con la declaración " +"única ::" #: ../Doc/library/cgi.rst:446 msgid "" @@ -578,6 +791,13 @@ msgid "" "most likely the traceback will end up in one of the HTTP server's log files, " "or be discarded altogether." msgstr "" +"Cuando un script de Python normal lanza una excepción no controlada (por " +"cualquier razón: de un error tipográfico en un nombre de módulo, un archivo " +"que no se puede abrir, etc.), el intérprete de Python imprime un traceback " +"sutil y sale. Aunque el intérprete de Python seguirá haciendo esto cuando " +"el script CGI lance una excepción, lo más probable es que el traceback " +"termine en uno de los archivos de registro del servidor HTTP o se descarte " +"por completo." #: ../Doc/library/cgi.rst:456 msgid "" @@ -585,6 +805,9 @@ msgid "" "code, you can easily send tracebacks to the Web browser using the :mod:" "`cgitb` module. If you haven't done so already, just add the lines::" msgstr "" +"Afortunadamente, una vez que haya logrado que su script ejecute *algún* " +"código, puede enviar fácilmente tracebacks al navegador web utilizando el " +"módulo :mod:`cgitb`. Si aún no lo ha hecho, solo añada las líneas::" #: ../Doc/library/cgi.rst:463 msgid "" @@ -592,7 +815,7 @@ msgid "" "occurs, you should see a detailed report that will likely make apparent the " "cause of the crash." msgstr "" -"al principio de su *script*. Luego intente ejecutarlo de nuevo; cuando un " +"al principio de su script. Luego intente ejecutarlo de nuevo; cuando un " "problema ocurra, debería ver un informe detallado que probablemente muestre " "la causa del error." @@ -602,6 +825,8 @@ msgid "" "module, you can use an even more robust approach (which only uses built-in " "modules)::" msgstr "" +"Si sospecha que puede haber un problema al importar el módulo :mod:`cgitb`, " +"puede usar un enfoque aún más robusto (que solo usa módulos integrados)::" #: ../Doc/library/cgi.rst:476 msgid "" @@ -612,6 +837,13 @@ msgid "" "have been printed, a traceback will be displayed. Because no HTML " "interpretation is going on, the traceback will be readable." msgstr "" +"Esto se basa en el intérprete de Python para imprimir el traceback. El tipo " +"de contenido de la salida se establece en texto plano, lo que deshabilita " +"todo el procesamiento HTML. Si el script funciona, el cliente mostrará el " +"código HTML sin formato. Si lanza una excepción, lo más probable es que " +"después que se hayan impreso las dos primeras líneas, se mostrará un " +"traceback. Dado que no se está realizando ninguna interpretación HTML, el " +"traceback será legible." #: ../Doc/library/cgi.rst:485 msgid "Common problems and solutions" @@ -623,10 +855,10 @@ msgid "" "completed. This means that it is not possible to display a progress report " "on the client's display while the script is running." msgstr "" -"La mayoría de servidores HTTP almacenan en búfer la salida de los *scripts* " -"CGI hasta que el *script* esté completado. Esto significa que no es posible " +"La mayoría de servidores HTTP almacenan en búfer la salida de los scripts " +"CGI hasta que el script esté completado. Esto significa que no es posible " "mostrar un reporte del progreso en la parte del cliente mientras que el " -"*script* se esté ejecutando." +"script se esté ejecutando." #: ../Doc/library/cgi.rst:491 msgid "Check the installation instructions above." @@ -637,15 +869,15 @@ msgid "" "Check the HTTP server's log files. (``tail -f logfile`` in a separate " "window may be useful!)" msgstr "" -"Verifique los archivos de registro (*logs*) del servidor HTTP. (¡Usar ``tail " -"-f logfile`` en una ventana separada puede ser útil!)" +"Verifique los archivos de registro (logs) del servidor HTTP. (¡Usar ``tail -" +"f logfile`` en una ventana separada puede ser útil!)" #: ../Doc/library/cgi.rst:496 msgid "" "Always check a script for syntax errors first, by doing something like " "``python script.py``." msgstr "" -"Siempre verifique un *script* para encontrar errores de sintaxis primero, " +"Siempre verifique un script para encontrar errores de sintaxis primero, " "haciendo algo como ``python script.py``." #: ../Doc/library/cgi.rst:499 @@ -664,8 +896,7 @@ msgid "" msgstr "" "Cuando se invoquen programas externos, asegúrese de que pueden ser " "encontrados. Generalmente esto significa usar nombres de ruta absolutos --- :" -"envvar:`PATH` generalmente no se establece en un valor útil en un *script* " -"CGI." +"envvar:`PATH` generalmente no se establece en un valor útil en un script CGI." #: ../Doc/library/cgi.rst:506 msgid "" @@ -675,17 +906,17 @@ msgid "" "explicitly specified userid for a web server's ``suexec`` feature." msgstr "" "Al leer o escribir archivos externos, asegúrese de que puedan ser leídas o " -"escritas por el *userid* por el que su *script* CGI se va a ejecutar: es " -"típico que esto sea el *userid* bajo el que el servidor web se está " -"ejecutando, o algún *userid* especificado explícitamente por la función " -"``suexec`` del servidor web." +"escritas por el userid por el que su script CGI se va a ejecutar: es típico " +"que esto sea el userid bajo el que el servidor web se está ejecutando, o " +"algún userid especificado explícitamente por la función ``suexec`` del " +"servidor web." #: ../Doc/library/cgi.rst:511 msgid "" "Don't try to give a CGI script a set-uid mode. This doesn't work on most " "systems, and is a security liability as well." msgstr "" -"No intente darle un modo *set-uid* a un *script* CGI. Esto no funciona en la " +"No intente darle un modo set-uid a un script CGI. Esto no funciona en la " "mayoría de sistemas, además de ser un riesgo de seguridad." #: ../Doc/library/cgi.rst:515