# Copyright (C) 2001-2020, Python Software Foundation # This file is distributed under the same license as the Python package. # Maintained by the python-doc-es workteam. # docs-es@python.org / # https://mail.python.org/mailman3/lists/docs-es.python.org/ # Check https://github.com/python/python-docs-es/blob/3.8/TRANSLATORS to # get the list of volunteers # msgid "" msgstr "" "Project-Id-Version: Python 3.8\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-02-26 18:44-0300\n" "PO-Revision-Date: 2023-12-24 11:45+0100\n" "Last-Translator: Rodrigo Tobar \n" "Language: es\n" "Language-Team: python-doc-es\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.18.0\n" #: ../Doc/library/cgi.rst:2 #, fuzzy msgid ":mod:`!cgi` --- Common Gateway Interface support" msgstr ":mod:`cgi` --- Soporte de Interfaz de Entrada Común (CGI)" #: ../Doc/library/cgi.rst:10 msgid "" "This module is no longer part of the Python standard library. It was :ref:" "`removed in Python 3.13 ` after being deprecated in " "Python 3.11. The removal was decided in :pep:`594`." msgstr "" #: ../Doc/library/cgi.rst:14 msgid "" "A fork of the module on PyPI can be used instead: :pypi:`legacy-cgi`. This " "is a copy of the cgi module, no longer maintained or supported by the core " "Python team." msgstr "" #: ../Doc/library/cgi.rst:18 msgid "" "The last version of Python that provided the :mod:`!cgi` module was `Python " "3.12 `_." msgstr "" #~ msgid "**Source code:** :source:`Lib/cgi.py`" #~ msgstr "**Código fuente:** :source:`Lib/cgi.py`" #~ msgid "" #~ "The :mod:`cgi` module is deprecated (see :pep:`PEP 594 <594#cgi>` for " #~ "details and alternatives)." #~ msgstr "" #~ "El módulo :mod:`cgi` está obsoleto (vea :pep:`PEP 594 <594#cgi>` para más " #~ "detalles y alternativas)." #~ msgid "" #~ "The :class:`FieldStorage` class can typically be replaced with :func:" #~ "`urllib.parse.parse_qsl` for ``GET`` and ``HEAD`` requests, and the :mod:" #~ "`email.message` module or `multipart `_ for ``POST`` and ``PUT``. Most :ref:`utility functions ` have replacements." #~ msgstr "" #~ "La clase :class:`FieldStorage` puede ser típicamente reemplazada con :" #~ "func:`urllib.parse.parse_qsl` para solicitudes ``GET`` y ``HEAD``, y el " #~ "módulo :mod:`email.message` o `multipart `_ para ``POST`` y ``PUT``. La mayoría de las :ref:`funciones " #~ "de utilidad ` tienen reemplazo." #~ msgid "Support module for Common Gateway Interface (CGI) scripts." #~ msgstr "" #~ "Módulo de soporte para scripts de la Interfaz de Entrada Común (CGI)" #~ 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 " #~ "escritos en Python." #~ msgid "" #~ "The global variable ``maxlen`` can be set to an integer indicating the " #~ "maximum size of a POST request. POST requests larger than this size will " #~ "result in a :exc:`ValueError` being raised during parsing. The default " #~ "value of this variable is ``0``, meaning the request size is unlimited." #~ msgstr "" #~ "La variable global ``maxlen`` puede ser establecida en un entero " #~ "indicando el tamaño máximo de una solicitud POST. Solicitudes POST más " #~ "grandes que este tamaño resultarán en en lanzamiento de un :exc:" #~ "`ValueError` durante el análisis. El valor por defecto de esta variable " #~ "es ``0``, lo que significa que el tamaño de las solicitudes es ilimitado." #~ msgid ":ref:`Availability `: not Emscripten, not WASI." #~ msgstr ":ref:`Disponibilidad `: no Emscripten, no WASI." #~ msgid "" #~ "This module does not work or is not available on WebAssembly platforms " #~ "``wasm32-emscripten`` and ``wasm32-wasi``. See :ref:`wasm-availability` " #~ "for more information." #~ msgstr "" #~ "Este módulo no funciona o no está disponible en plataformas WebAssembly " #~ "``wasm32-emscripten`` y ``wasm32-wasi``. Vea :ref:`wasm-availability` " #~ "para más información." #~ msgid "Introduction" #~ msgstr "Introducción" #~ 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 " #~ "procesar entradas de usuario entregadas mediante un elemento HTML " #~ "```` o ````." #~ msgid "" #~ "Most often, CGI scripts live in the server's special :file:`cgi-bin` " #~ "directory. The HTTP server places all sorts of information about the " #~ "request (such as the client's hostname, the requested URL, the query " #~ "string, and 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." #~ msgid "" #~ "The script's input is connected to the client too, and sometimes the form " #~ "data is read this way; at other times the form data is passed via the " #~ "\"query string\" part of the URL. This module is intended to take care " #~ "of the different cases and provide a simpler interface to the Python " #~ "script. It also provides a number of utilities that help in debugging " #~ "scripts, and 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)." #~ msgid "" #~ "The output of a CGI script should consist of two sections, separated by a " #~ "blank line. The first section contains a number of headers, telling the " #~ "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::" #~ msgid "" #~ "The second section is usually HTML, which allows the client software to " #~ "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::" #~ msgid "Using the cgi module" #~ msgstr "Usando el módulo CGI" #~ msgid "Begin by writing ``import cgi``." #~ msgstr "Empieza escribiendo ``import cgi``." #~ msgid "When you write a new script, consider adding these lines::" #~ msgstr "Cuando escribas un nuevo script, considera añadir estas líneas::" #~ msgid "" #~ "This activates a special exception handler that will display detailed " #~ "reports in the web browser if any errors occur. If you'd rather not show " #~ "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 gestor de excepciones especial que mostrará informes " #~ "detallados en el explorador web si se produce algún error. Si prefiere " #~ "no mostrar los detalles de su programa a los usuarios de su script, puede " #~ "tener los informes guardados en archivos en su lugar, como se muestra en " #~ "el siguiente código::" #~ msgid "" #~ "It's very helpful to use this feature during script development. The " #~ "reports produced by :mod:`cgitb` provide information that can save you a " #~ "lot of time 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." #~ msgid "" #~ "To get at submitted form data, use the :class:`FieldStorage` class. If " #~ "the form contains non-ASCII characters, use the *encoding* keyword " #~ "parameter set to the value of the encoding defined for the document. It " #~ "is usually contained in the META tag in the HEAD section of the HTML " #~ "document or by the :mailheader:`Content-Type` header. This reads the " #~ "form contents from the standard input or the environment (depending on " #~ "the value of various environment variables set according to the CGI " #~ "standard). Since it may consume standard input, it should be " #~ "instantiated only once." #~ msgstr "" #~ "Para llegar a los datos de formulario enviados usa la clase :class:" #~ "`FieldStorage`. Si el formulario contiene caracteres que no sean ASCII, " #~ "usa el parámetro de palabra clave *encoding* establecido en el valor del " #~ "codificado definido para el documento. Éste está usualmente contenido en " #~ "la etiqueta META en la sección HEAD del documento HTML, o en el " #~ "encabezado :mailheader:`Content-Type`. Esto lee los contenidos del " #~ "formulario desde la entrada estándar o el ambiente (dependiendo de los " #~ "valores de varias variables de entorno establecidas de acuerdo del " #~ "estándar CGI). Dado que podría consumir entrada estándar, sólo se debería " #~ "instanciar una sola vez." #~ msgid "" #~ "The :class:`FieldStorage` instance can be indexed like a Python " #~ "dictionary. It allows membership testing with the :keyword:`in` operator, " #~ "and also supports the standard dictionary method :meth:`~dict.keys` and " #~ "the built-in function :func:`len`. Form fields containing empty strings " #~ "are ignored and do not appear in the dictionary; to keep such values, " #~ "provide a true value 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`." #~ msgid "" #~ "For instance, the following code (which assumes that the :mailheader:" #~ "`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::" #~ msgid "" #~ "Here the fields, accessed through ``form[key]``, are themselves instances " #~ "of :class:`FieldStorage` (or :class:`MiniFieldStorage`, depending on the " #~ "form encoding). The :attr:`~FieldStorage.value` attribute of the instance " #~ "yields the string value of the field. The :meth:`~FieldStorage.getvalue` " #~ "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." #~ msgid "" #~ "If the submitted form data contains more than one field with the same " #~ "name, the object retrieved by ``form[key]`` is not a :class:" #~ "`FieldStorage` or :class:`MiniFieldStorage` instance but a list of such " #~ "instances. Similarly, in this situation, ``form.getvalue(key)`` would " #~ "return a list of strings. If you expect this possibility (when your HTML " #~ "form contains multiple fields with the same name), use the :meth:" #~ "`~FieldStorage.getlist` method, which always returns a list of values (so " #~ "that you do not need to special-case the 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::" #~ msgid "" #~ "If a field represents an uploaded file, accessing the value via the :attr:" #~ "`~FieldStorage.value` attribute or the :meth:`~FieldStorage.getvalue` " #~ "method reads the entire file in memory as bytes. This may not be what " #~ "you want. You can test for an uploaded file by testing either the :attr:" #~ "`~FieldStorage.filename` attribute or the :attr:`~FieldStorage.file` " #~ "attribute. You can then read the data from the :attr:`!file` attribute " #~ "before it is automatically closed as part of the garbage collection of " #~ "the :class:`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)::" #~ msgid "" #~ ":class:`FieldStorage` objects also support being used in a :keyword:" #~ "`with` statement, which will automatically close them when done." #~ msgstr "" #~ "Los objetos :class:`FieldStorage` también permiten ser usados en una " #~ "sentencia :keyword:`with` , lo que automáticamente los cerrará cuando " #~ "termine la sentencia." #~ msgid "" #~ "If an error is encountered when obtaining the contents of an uploaded " #~ "file (for example, when the user interrupts the form submission by " #~ "clicking on a 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." #~ msgid "" #~ "The file upload draft standard entertains the possibility of uploading " #~ "multiple files from one field (using a recursive :mimetype:`multipart/" #~ "\\*` encoding). When this occurs, the item will be a dictionary-like :" #~ "class:`FieldStorage` item. This can be determined by testing its :attr:`!" #~ "type` attribute, which should be :mimetype:`multipart/form-data` (or " #~ "perhaps 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." #~ msgid "" #~ "When a form is submitted in the \"old\" format (as the query string or as " #~ "a single data part of type :mimetype:`application/x-www-form-" #~ "urlencoded`), the items will actually be instances of the class :class:" #~ "`MiniFieldStorage`. In 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``." #~ 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`." #~ msgid "" #~ "The :attr:`~FieldStorage.file` attribute is automatically closed upon the " #~ "garbage collection of the creating :class:`FieldStorage` instance." #~ msgstr "" #~ "El atributo :attr:`~FieldStorage.file` se cierra automáticamente con el " #~ "recolector de basura de la instancia creada :class:`FieldStorage`." #~ 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` ." #~ msgid "Higher Level Interface" #~ msgstr "Interfaz de nivel superior" #~ msgid "" #~ "The previous section explains how to read CGI form data using the :class:" #~ "`FieldStorage` class. This section describes a higher level interface " #~ "which was added to this class to allow one to do it in a more readable " #~ "and intuitive way. The interface doesn't make the techniques described " #~ "in previous sections obsolete --- they are still useful to process file " #~ "uploads efficiently, for example." #~ msgstr "" #~ "La sección anterior explica cómo leer datos de un formulario CGI usando " #~ "la clase :class:`FieldStorage`. Esta sección describe un nivel de " #~ "interfaz superior que se añadió a esta clase para permitir que uno lo " #~ "haga de una manera más legible e intuitiva. La interfaz no hace que las " #~ "técnicas descritas en las secciones anteriores estén obsoletas -- por " #~ "ejemplo, siguen siendo útiles para procesar la carga de archivos de " #~ "manera eficiente." #~ msgid "" #~ "The interface consists of two simple methods. Using the methods you can " #~ "process form data in a generic way, without the need to worry whether " #~ "only one or more values were posted under one name." #~ msgstr "" #~ "La interfaz consiste en dos métodos simples. Usando los métodos puedes " #~ "procesar datos de formulario de una manera genérica, sin la necesidad de " #~ "preocuparte si solo se publicaron uno o más valores con un solo nombre." #~ msgid "" #~ "In the previous section, you learned to write following code anytime you " #~ "expected a user to post more than one value under one name::" #~ msgstr "" #~ "En la sección anterior, aprendiste a escribir el siguiente código cada " #~ "vez que esperabas que un usuario publicara más de un valor con un nombre::" #~ msgid "" #~ "This situation is common for example when a form contains a group of " #~ "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 (checkboxes) con el mismo " #~ "nombre::" #~ msgid "" #~ "In most situations, however, there's only one form control with a " #~ "particular 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::" #~ msgid "" #~ "The problem with the code is that you should never expect that a client " #~ "will provide valid input to your scripts. For example, if a curious user " #~ "appends another ``user=foo`` pair to the query string, then the script " #~ "would crash, because in this situation the ``getvalue(\"user\")`` method " #~ "call returns a list instead of a string. Calling the :meth:`~str.upper` " #~ "method on a list 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`." #~ msgid "" #~ "Therefore, the appropriate way to read form data values was to always use " #~ "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." #~ msgid "" #~ "A more convenient approach is to use the methods :meth:`~FieldStorage." #~ "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." #~ msgid "" #~ "This method always returns only one value associated with form field " #~ "*name*. The method returns only the first value in case that more values " #~ "were posted under such name. Please note that the order in which the " #~ "values are received may vary from browser to browser and should not be " #~ "counted on. [#]_ If no such form field or value exists then the method " #~ "returns the 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." #~ msgid "" #~ "This method always returns a list of values associated with form field " #~ "*name*. The method returns an empty list if no such form field or value " #~ "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." #~ msgid "Using these methods you can write nice compact code::" #~ msgstr "Usando estos métodos puede escribir código compacto agradable::" #~ msgid "Functions" #~ msgstr "Funciones" #~ 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." #~ msgid "" #~ "Parse a query in the environment or from a file (the file defaults to " #~ "``sys.stdin``). The *keep_blank_values*, *strict_parsing* and " #~ "*separator* parameters are passed to :func:`urllib.parse.parse_qs` " #~ "unchanged." #~ msgstr "" #~ "Analiza una consulta en el entorno o desde un archivo (el archivo " #~ "predeterminado es ``sys.stdin``). Los parámetros *keep_blank_values*, " #~ "*strict_parsing* y *separator* se pasan a :func:`urllib.parse.parse_qs` " #~ "sin cambios." #~ msgid "" #~ "This function, like the rest of the :mod:`cgi` module, is deprecated. It " #~ "can be replaced by calling :func:`urllib.parse.parse_qs` directly on the " #~ "desired query string (except for ``multipart/form-data`` input, which can " #~ "be handled as described for :func:`parse_multipart`)." #~ msgstr "" #~ "Esta función, como el resto del módulo :mod:`cgi`, está obsoleta. Puede " #~ "ser reemplazada llamando directamente a :func:`urllib.parse.parse_qs` con " #~ "la cadena de caracteres de la consulta (excepto para entradas ``multipart/" #~ "form-data``, las cuales puede ser manejadas como se describe para :func:" #~ "`parse_multipart`)." #~ msgid "" #~ "Parse input of type :mimetype:`multipart/form-data` (for file uploads). " #~ "Arguments are *fp* for the input file, *pdict* for a dictionary " #~ "containing 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." #~ msgid "" #~ "Returns a dictionary just like :func:`urllib.parse.parse_qs`: keys are " #~ "the 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." #~ msgid "" #~ "This is easy to use but not much good if you are expecting megabytes to " #~ "be 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." #~ 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." #~ msgid "Added the *separator* parameter." #~ msgstr "Agregado el parámetro *separator*." #~ msgid "" #~ "This function, like the rest of the :mod:`cgi` module, is deprecated. It " #~ "can be replaced with the functionality in the :mod:`email` package (e.g. :" #~ "class:`email.message.EmailMessage`/:class:`email.message.Message`) which " #~ "implements the same MIME RFCs, or with the `multipart `__ PyPI project." #~ msgstr "" #~ "Esta función, como el resto del módulo :mod:`cgi`, está obsoleta. Puede " #~ "ser reemplazada con la funcionalidad del paquete :mod:`email` (por " #~ "ejemplo, :class:`email.message.EmailMessage`/:class:`email.message." #~ "Message`) el cual implementa los mismos RFCs de MIME, o con el proyecto " #~ "de PyPI `multipart `__." #~ 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." #~ msgid "" #~ "This function, like the rest of the :mod:`cgi` module, is deprecated. It " #~ "can be replaced with the functionality in the :mod:`email` package, which " #~ "implements the same MIME RFCs." #~ msgstr "" #~ "Esta función, como el resto del módulo :mod:`cgi`, está obsoleta. Puede " #~ "ser reemplazada con la funcionalidad del paquete :mod:`email`, el cual " #~ "implementa los mismos RFCs de MIME." #~ msgid "For example, with :class:`email.message.EmailMessage`::" #~ msgstr "Por ejemplo, con :class:`email.message.EmailMessage`::" #~ msgid "" #~ "Robust test CGI script, usable as main program. Writes minimal HTTP " #~ "headers and formats all information provided to the script in HTML format." #~ msgstr "" #~ "Script CGI de prueba robusto, usable como programa principal. Escribe " #~ "encabezados HTTP mínimos y formatea toda la información proporcionada " #~ "hacia el script en formato HTML." #~ msgid "Format the shell environment in HTML." #~ msgstr "Da formato al entorno del shell en HTML." #~ msgid "Format a form in HTML." #~ msgstr "Da formato a un formulario en HTML." #~ msgid "Format the current directory in HTML." #~ msgstr "Da formato al directorio actual en HTML." #~ msgid "Print a list of useful (used by CGI) environment variables in HTML." #~ msgstr "" #~ "Imprime una lista de variables de entorno útiles (utilizadas por CGI) en " #~ "HTML." #~ msgid "Caring about security" #~ msgstr "Preocuparse por la seguridad" #~ msgid "" #~ "There's one important rule: if you invoke an external program (via :func:" #~ "`os.system`, :func:`os.popen` or other functions with similar " #~ "functionality), make very sure you don't pass arbitrary strings received " #~ "from the client to the shell. This is a well-known security hole whereby " #~ "clever hackers anywhere on the web can exploit a gullible CGI script to " #~ "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 :" #~ "func:`os.system`, :func:`os.popen` u otras funciones con una " #~ "funcionalidad similar), asegúrese bien de no pasar strings arbitrarios " #~ "recibidos desde el cliente hacia la 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!" #~ msgid "" #~ "To be on the safe side, if you must pass a string gotten from a form to a " #~ "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." #~ msgid "Installing your CGI script on a Unix system" #~ msgstr "Instalando su script de CGI en un sistema Unix" #~ msgid "" #~ "Read the documentation for your HTTP server and check with your local " #~ "system 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." #~ msgid "" #~ "Make sure that your script is readable and executable by \"others\"; the " #~ "Unix file mode should be ``0o755`` octal (use ``chmod 0755 filename``). " #~ "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::" #~ 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\"." #~ msgid "" #~ "Make sure that any files your script needs to read or write are readable " #~ "or writable, respectively, by \"others\" --- their mode should be " #~ "``0o644`` for readable and ``0o666`` for writable. This is because, for " #~ "security reasons, the HTTP server executes your script as user " #~ "\"nobody\", without any special privileges. It can only read (write, " #~ "execute) files that everybody can read (write, execute). The current " #~ "directory at execution time is also different (it is usually the server's " #~ "cgi-bin directory) and the set of environment variables is also different " #~ "from what you get when you log in. In particular, don't count on the " #~ "shell's search path for executables (:envvar:`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." #~ msgid "" #~ "If you need to load modules from a directory which is not on Python's " #~ "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::" #~ msgid "(This way, the directory inserted last will be searched first!)" #~ msgstr "" #~ "(¡De esta manera, el directorio insertado de último será buscado primero!)" #~ 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)." #~ msgid "Testing your CGI script" #~ msgstr "Probando su script de CGI" #~ msgid "" #~ "Unfortunately, a CGI script will generally not run when you try it from " #~ "the command line, and a script that works perfectly from the command line " #~ "may fail mysteriously when run from the server. There's one reason why " #~ "you should still test your script from the command line: if it contains a " #~ "syntax 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." #~ 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." #~ msgid "Debugging CGI scripts" #~ msgstr "Depurando scripts de CGI" #~ msgid "" #~ "First of all, check for trivial installation errors --- reading the " #~ "section above on installing your CGI script carefully can save you a lot " #~ "of time. If you wonder whether you have understood the installation " #~ "procedure correctly, try installing a copy of this module file (:file:" #~ "`cgi.py`) as a CGI script. When invoked as a script, the file will dump " #~ "its environment and the contents of the form in HTML format. Give it the " #~ "right mode etc., and send it a request. If it's installed in the " #~ "standard :file:`cgi-bin` 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 instalando una " #~ "copia de este archivo de módulo (:file:`cgi.py`) como un script CGI. " #~ "Cuando se invoca como un script, el archivo cambiará 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:" #~ msgid "" #~ "If this gives an error of type 404, the server cannot find the script -- " #~ "perhaps you need to install it in a different directory. If it gives " #~ "another error, there's an installation problem that you should fix before " #~ "trying to go any further. If you get a nicely formatted listing of the " #~ "environment and form content (in this example, the fields should be " #~ "listed as \"addr\" with value \"At Home\" and \"name\" with value \"Joe " #~ "Blow\"), 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 " #~ "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 script, ya debería poder " #~ "depurarlo." #~ 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 ::" #~ msgid "" #~ "This should produce the same results as those gotten from installing the :" #~ "file:`cgi.py` file itself." #~ msgstr "" #~ "Esto debería producir los mismos resultados que los obtenidos al instalar " #~ "el archivo :file:`cgi.py` en sí." #~ msgid "" #~ "When an ordinary Python script raises an unhandled exception (for " #~ "whatever reason: of a typo in a module name, a file that can't be opened, " #~ "etc.), the Python interpreter prints a nice traceback and exits. While " #~ "the Python interpreter will still do this when your CGI script raises an " #~ "exception, 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." #~ msgid "" #~ "Fortunately, once you have managed to get your script to execute *some* " #~ "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::" #~ msgid "" #~ "to the top of your script. Then try running it again; when a problem " #~ "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 " #~ "problema ocurra, debería ver un informe detallado que probablemente " #~ "muestre la causa del error." #~ msgid "" #~ "If you suspect that there may be a problem in importing the :mod:`cgitb` " #~ "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)::" #~ msgid "" #~ "This relies on the Python interpreter to print the traceback. The " #~ "content type of the output is set to plain text, which disables all HTML " #~ "processing. If your script works, the raw HTML will be displayed by your " #~ "client. If it raises an exception, most likely after the first two lines " #~ "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." #~ msgid "Common problems and solutions" #~ msgstr "Problemas comunes y soluciones" #~ msgid "" #~ "Most HTTP servers buffer the output from CGI scripts until the script is " #~ "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 " #~ "mostrar un reporte del progreso en la parte del cliente mientras que el " #~ "script se esté ejecutando." #~ msgid "Check the installation instructions above." #~ msgstr "Compruebe las instrucciones de instalación anteriores." #~ 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!)" #~ 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, " #~ "haciendo algo como ``python script.py``." #~ msgid "" #~ "If your script does not have any syntax errors, try adding ``import " #~ "cgitb; cgitb.enable()`` to the top of the script." #~ msgstr "" #~ "Si su script no tiene ningún error sintáctico, pruebe añadiendo ``import " #~ "cgitb; cgitb.enable()`` en la parte superior del script." #~ msgid "" #~ "When invoking external programs, make sure they can be found. Usually, " #~ "this means using absolute path names --- :envvar:`PATH` is usually not " #~ "set to a very useful value in a CGI script." #~ 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." #~ msgid "" #~ "When reading or writing external files, make sure they can be read or " #~ "written by the userid under which your CGI script will be running: this " #~ "is typically the userid under which the web server is running, or some " #~ "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." #~ 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 " #~ "mayoría de sistemas, además de ser un riesgo de seguridad." #~ msgid "Footnotes" #~ msgstr "Notas al pie" #~ msgid "" #~ "Note that some recent versions of the HTML specification do state what " #~ "order the field values should be supplied in, but knowing whether a " #~ "request was received from a conforming browser, or even from a browser at " #~ "all, is tedious and error-prone." #~ msgstr "" #~ "Tenga en cuenta que algunas versiones recientes de las especificaciones " #~ "de HTML establecen en qué orden se deben suministrar los valores de " #~ "campo, pero saber si se recibió una solicitud de un navegador adaptado, o " #~ "incluso desde un navegador siquiera, es tedioso y propenso a errores." #~ msgid "WWW" #~ msgstr "WWW" #~ msgid "server" #~ msgstr "server" #~ msgid "CGI" #~ msgstr "CGI" #~ msgid "protocol" #~ msgstr "protocol" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "MIME" #~ msgstr "MIME" #~ msgid "headers" #~ msgstr "headers" #~ msgid "URL" #~ msgstr "URL" #~ msgid "Common Gateway Interface" #~ msgstr ":mod:`cgi` --- Soporte de Interfaz de Entrada Común (CGI)" #~ msgid "security" #~ msgstr "security" #~ msgid "debugging" #~ msgstr "debugging"