From 9c7d2959efc6625c07789f1483e0da0bdd7de84c Mon Sep 17 00:00:00 2001 From: Cristian Maureira-Fredes Date: Wed, 24 Jun 2020 23:15:05 +0200 Subject: [PATCH] Traducido extending/embedding --- extending/embedding.po | 178 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 160 insertions(+), 18 deletions(-) diff --git a/extending/embedding.po b/extending/embedding.po index b8774cd9b8..9b00e22b6e 100644 --- a/extending/embedding.po +++ b/extending/embedding.po @@ -6,23 +6,25 @@ # Check https://github.com/PyCampES/python-docs-es/blob/3.8/TRANSLATORS to # get the list of volunteers # -#, fuzzy msgid "" 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: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2020-06-24 23:14+0200\n" "Language-Team: python-doc-es\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.8.0\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Last-Translator: Cristián Maureira-Fredes \n" +"Language: es\n" +"X-Generator: Poedit 2.3\n" #: ../Doc/extending/embedding.rst:8 msgid "Embedding Python in Another Application" -msgstr "" +msgstr "Incrustando Python en Otra Aplicación" #: ../Doc/extending/embedding.rst:10 msgid "" @@ -36,6 +38,16 @@ msgid "" "writing some scripts in Python. You can also use it yourself if some of the " "functionality can be written in Python more easily." msgstr "" +"Los capítulos anteriores discutieron cómo extender Python, es decir, cómo " +"extender la funcionalidad de Python al adjuntarle una biblioteca de " +"funciones C. También es posible hacerlo al revés: enriquezca su aplicación C/" +"C++ incrustando Python en ella. La incrustación proporciona a su aplicación " +"la capacidad de implementar parte de la funcionalidad de su aplicación en " +"Python en lugar de C o C++. Esto se puede usar para muchos propósitos; Un " +"ejemplo sería permitir a los usuarios adaptar la aplicación a sus " +"necesidades escribiendo algunos scripts en Python. También puede usarlo " +"usted mismo si parte de la funcionalidad se puede escribir en Python más " +"fácilmente." #: ../Doc/extending/embedding.rst:20 msgid "" @@ -45,6 +57,12 @@ msgid "" "nothing to do with Python --- instead, some parts of the application " "occasionally call the Python interpreter to run some Python code." msgstr "" +"Incrustar Python es similar a extenderlo, pero no del todo. La diferencia es " +"que cuando extiende Python, el programa principal de la aplicación sigue " +"siendo el intérprete de Python, mientras que si incrusta Python, el programa " +"principal puede no tener nada que ver con Python --- en cambio, algunas " +"partes de la aplicación ocasionalmente llaman al Intérprete de Python para " +"ejecutar algún código de Python." #: ../Doc/extending/embedding.rst:26 msgid "" @@ -55,6 +73,12 @@ msgid "" "Python. Then later you can call the interpreter from any part of the " "application." msgstr "" +"Entonces, si está incrustando Python, está proporcionando su propio programa " +"principal. Una de las cosas que tiene que hacer este programa principal es " +"inicializar el intérprete de Python. Como mínimo, debe llamar a la función :" +"c:func:`Py_Initialize`. Hay llamadas opcionales para pasar argumentos de " +"línea de comandos a Python. Luego, puede llamar al intérprete desde " +"cualquier parte de la aplicación." #: ../Doc/extending/embedding.rst:32 msgid "" @@ -65,20 +89,28 @@ msgid "" "level operations described in the previous chapters to construct and use " "Python objects." msgstr "" +"Hay varias formas diferentes de llamar al intérprete: puede pasar una cadena " +"que contiene declaraciones de Python a :c:func:`PyRun_SimpleString`, o puede " +"pasar un puntero de archivo estándar y un nombre de archivo (solo para " +"identificación en mensajes de error) a :c:func:`PyRun_SimpleFile`. También " +"puede llamar a las operaciones de nivel inferior descritas en los capítulos " +"anteriores para construir y usar objetos de Python." #: ../Doc/extending/embedding.rst:42 msgid ":ref:`c-api-index`" -msgstr "" +msgstr ":ref:`c-api-index`" #: ../Doc/extending/embedding.rst:42 msgid "" "The details of Python's C interface are given in this manual. A great deal " "of necessary information can be found here." msgstr "" +"Los detalles de la interfaz C de Python se dan en este manual. Una gran " +"cantidad de información necesaria se puede encontrar aquí." #: ../Doc/extending/embedding.rst:49 msgid "Very High Level Embedding" -msgstr "" +msgstr "Incrustación de muy alto nivel" #: ../Doc/extending/embedding.rst:51 msgid "" @@ -87,6 +119,10 @@ msgid "" "needing to interact with the application directly. This can for example be " "used to perform some operation on a file. ::" msgstr "" +"La forma más simple de incrustar Python es el uso de la interfaz de muy alto " +"nivel. Esta interfaz está diseñada para ejecutar un script de Python sin " +"necesidad de interactuar directamente con la aplicación. Esto puede usarse, " +"por ejemplo, para realizar alguna operación en un archivo. ::" #: ../Doc/extending/embedding.rst:78 msgid "" @@ -102,10 +138,21 @@ msgid "" "which saves you the trouble of allocating memory space and loading the file " "contents." msgstr "" +"La función :c:func:`Py_SetProgramName` debe llamarse antes de :c:func:" +"`Py_Initialize` para informar al intérprete sobre las rutas a las " +"bibliotecas de tiempo de ejecución de Python. A continuación, el intérprete " +"de Python se inicializa con :c:func:`Py_Initialize`, seguido de la ejecución " +"de un script Python codificado que imprime la fecha y la hora. Luego, la " +"llamada :c:func:`Py_FinalizeEx` cierra el intérprete, seguido por el final " +"del programa. En un programa real, es posible que desee obtener el script de " +"Python de otra fuente, tal vez una rutina de editor de texto, un archivo o " +"una base de datos. Obtener el código Python de un archivo se puede hacer " +"mejor usando la función :c:func:`PyRun_SimpleFile`, que le ahorra la " +"molestia de asignar espacio de memoria y cargar el contenido del archivo." #: ../Doc/extending/embedding.rst:93 msgid "Beyond Very High Level Embedding: An overview" -msgstr "" +msgstr "Más allá de la incrustación de muy alto nivel: una visión general" #: ../Doc/extending/embedding.rst:95 msgid "" @@ -115,6 +162,11 @@ msgid "" "calls. At the cost of having to write more C code, you can achieve almost " "anything." msgstr "" +"La interfaz de alto nivel le permite ejecutar piezas arbitrarias de código " +"Python desde su aplicación, pero el intercambio de valores de datos es " +"bastante engorroso, por decir lo menos. Si lo desea, debe usar llamadas de " +"nivel inferior. A costa de tener que escribir más código C, puede lograr " +"casi cualquier cosa." #: ../Doc/extending/embedding.rst:100 msgid "" @@ -123,36 +175,44 @@ msgid "" "previous chapters are still valid. To show this, consider what the extension " "code from Python to C really does:" msgstr "" +"Cabe señalar que extender Python e incrustar Python es la misma actividad, a " +"pesar de la intención diferente. La mayoría de los temas tratados en los " +"capítulos anteriores siguen siendo válidos. Para mostrar esto, considere lo " +"que realmente hace el código de extensión de Python a C:" #: ../Doc/extending/embedding.rst:105 msgid "Convert data values from Python to C," -msgstr "" +msgstr "Convierte valores de datos de Python a C," #: ../Doc/extending/embedding.rst:107 msgid "Perform a function call to a C routine using the converted values, and" msgstr "" +"Realice una llamada de función a una rutina C usando los valores " +"convertidos, y" #: ../Doc/extending/embedding.rst:109 msgid "Convert the data values from the call from C to Python." -msgstr "" +msgstr "Convierte los valores de datos de la llamada de C a Python." #: ../Doc/extending/embedding.rst:111 msgid "When embedding Python, the interface code does:" -msgstr "" +msgstr "Al incrustar Python, el código de interfaz hace:" #: ../Doc/extending/embedding.rst:113 msgid "Convert data values from C to Python," -msgstr "" +msgstr "Convierte valores de datos de C a Python," #: ../Doc/extending/embedding.rst:115 msgid "" "Perform a function call to a Python interface routine using the converted " "values, and" msgstr "" +"Realice una llamada de función a una rutina de interfaz de Python utilizando " +"los valores convertidos, y" #: ../Doc/extending/embedding.rst:118 msgid "Convert the data values from the call from Python to C." -msgstr "" +msgstr "Convierte los valores de datos de la llamada de Python a C." #: ../Doc/extending/embedding.rst:120 msgid "" @@ -161,6 +221,11 @@ msgid "" "is the routine that you call between both data conversions. When extending, " "you call a C routine, when embedding, you call a Python routine." msgstr "" +"Como puede ver, los pasos de conversión de datos simplemente se intercambian " +"para acomodar la dirección diferente de la transferencia de idiomas " +"cruzados. La única diferencia es la rutina que llama entre ambas " +"conversiones de datos. Al extender, llama a una rutina C, al incrustar, " +"llama a una rutina Python." #: ../Doc/extending/embedding.rst:125 msgid "" @@ -169,10 +234,15 @@ msgid "" "be understood. Since these aspects do not differ from extending the " "interpreter, you can refer to earlier chapters for the required information." msgstr "" +"Este capítulo no discutirá cómo convertir datos de Python a C y viceversa. " +"Además, se supone que se entiende el uso adecuado de las referencias y el " +"tratamiento de errores. Dado que estos aspectos no difieren de extender el " +"intérprete, puede consultar los capítulos anteriores para obtener la " +"información requerida." #: ../Doc/extending/embedding.rst:134 msgid "Pure Embedding" -msgstr "" +msgstr "Incrustación pura" #: ../Doc/extending/embedding.rst:136 msgid "" @@ -181,10 +251,15 @@ msgid "" "directly interact with the application (but that will change in the next " "section)." msgstr "" +"El primer programa tiene como objetivo ejecutar una función en un script " +"Python. Al igual que en la sección sobre la interfaz de muy alto nivel, el " +"intérprete de Python no interactúa directamente con la aplicación (pero eso " +"cambiará en la siguiente sección)." #: ../Doc/extending/embedding.rst:141 msgid "The code to run a function defined in a Python script is:" msgstr "" +"El código para ejecutar una función definida en un script de Python es:" #: ../Doc/extending/embedding.rst:146 msgid "" @@ -194,10 +269,15 @@ msgid "" "(let's call the finished executable :program:`call`), and use it to execute " "a Python script, such as:" msgstr "" +"Este código carga un script de Python usando ``argv[1]`` y llama a la " +"función nombrada en ``argv[2]``. Sus argumentos enteros son los otros " +"valores del arreglo ``argv``. Si usted :ref:`compila y enlaza ` " +"este programa (llamemos al ejecutable terminado :program:`call`), y úselo " +"para ejecutar un script Python, como:" #: ../Doc/extending/embedding.rst:161 msgid "then the result should be:" -msgstr "" +msgstr "entonces el resultado debería ser:" #: ../Doc/extending/embedding.rst:169 msgid "" @@ -205,6 +285,10 @@ msgid "" "is for data conversion between Python and C, and for error reporting. The " "interesting part with respect to embedding Python starts with ::" msgstr "" +"Aunque el programa es bastante grande por su funcionalidad, la mayor parte " +"del código es para la conversión de datos entre Python y C, y para informes " +"de errores. La parte interesante con respecto a incrustar Python comienza " +"con::" #: ../Doc/extending/embedding.rst:178 msgid "" @@ -213,6 +297,10 @@ msgid "" "which is constructed using the :c:func:`PyUnicode_FromString` data " "conversion routine. ::" msgstr "" +"Después de inicializar el intérprete, el script se carga usando :c:func:" +"`PyImport_Import`. Esta rutina necesita una cadena Python como argumento, " +"que se construye utilizando la rutina de conversión de datos :c:func:" +"`PyUnicode_FromString`. ::" #: ../Doc/extending/embedding.rst:191 msgid "" @@ -222,6 +310,11 @@ msgid "" "proceeds by constructing a tuple of arguments as normal. The call to the " "Python function is then made with::" msgstr "" +"Una vez que se carga el script, el nombre que estamos buscando se recupera " +"usando :c:func:`PyObject_GetAttrString`. Si el nombre existe y el objeto " +"devuelto es invocable, puede asumir con seguridad que es una función. Luego, " +"el programa continúa construyendo una tupla de argumentos como de costumbre. " +"La llamada a la función Python se realiza con::" #: ../Doc/extending/embedding.rst:199 msgid "" @@ -229,10 +322,13 @@ msgid "" "reference to the return value of the function. Be sure to release the " "reference after examining the value." msgstr "" +"Al regresar la función, ``pValue`` es ``NULL`` o contiene una referencia al " +"valor de retorno de la función. Asegúrese de liberar la referencia después " +"de examinar el valor." #: ../Doc/extending/embedding.rst:207 msgid "Extending Embedded Python" -msgstr "" +msgstr "Extendiendo Python Incrustado" #: ../Doc/extending/embedding.rst:209 msgid "" @@ -245,12 +341,24 @@ msgid "" "and write some glue code that gives Python access to those routines, just " "like you would write a normal Python extension. For example::" msgstr "" +"Hasta ahora, el intérprete de Python incorporado no tenía acceso a la " +"funcionalidad de la aplicación misma. La API de Python lo permite al " +"extender el intérprete incorporado. Es decir, el intérprete incorporado se " +"amplía con las rutinas proporcionadas por la aplicación. Si bien suena " +"complejo, no es tan malo. Simplemente olvide por un momento que la " +"aplicación inicia el intérprete de Python. En cambio, considere que la " +"aplicación es un conjunto de subrutinas y escriba un código de pegamento que " +"le otorgue a Python acceso a esas rutinas, al igual que escribiría una " +"extensión normal de Python. Por ejemplo::" #: ../Doc/extending/embedding.rst:246 msgid "" "Insert the above code just above the :c:func:`main` function. Also, insert " "the following two statements before the call to :c:func:`Py_Initialize`::" msgstr "" +"Inserte el código anterior justo encima de la función :c:func:`main`. " +"Además, inserte las siguientes dos declaraciones antes de la llamada a :c:" +"func:`Py_Initialize`::" #: ../Doc/extending/embedding.rst:252 msgid "" @@ -258,16 +366,21 @@ msgid "" "numargs` function accessible to the embedded Python interpreter. With these " "extensions, the Python script can do things like" msgstr "" +"Estas dos líneas inicializan la variable ``numargs`` y hacen que la función :" +"func:`emb.numargs` sea accesible para el intérprete de Python incorporado. " +"Con estas extensiones, el script de Python puede hacer cosas como" #: ../Doc/extending/embedding.rst:261 msgid "" "In a real application, the methods will expose an API of the application to " "Python." msgstr "" +"En una aplicación real, los métodos expondrán una API de la aplicación a " +"Python." #: ../Doc/extending/embedding.rst:271 msgid "Embedding Python in C++" -msgstr "" +msgstr "Incrustando Python en C++" #: ../Doc/extending/embedding.rst:273 msgid "" @@ -277,10 +390,15 @@ msgid "" "and link your program. There is no need to recompile Python itself using C+" "+." msgstr "" +"También es posible incrustar Python en un programa C++; precisamente cómo se " +"hace esto dependerá de los detalles del sistema C++ utilizado; en general, " +"necesitará escribir el programa principal en C++ y usar el compilador de C++ " +"para compilar y vincular su programa. No es necesario volver a compilar " +"Python usando C++." #: ../Doc/extending/embedding.rst:282 msgid "Compiling and Linking under Unix-like systems" -msgstr "" +msgstr "Compilar y enlazar bajo sistemas tipo Unix" #: ../Doc/extending/embedding.rst:284 msgid "" @@ -289,6 +407,11 @@ msgid "" "application, particularly because Python needs to load library modules " "implemented as C dynamic extensions (:file:`.so` files) linked against it." msgstr "" +"No es necesariamente trivial encontrar los indicadores correctos para pasar " +"a su compilador (y enlazador) para incrustar el intérprete de Python en su " +"aplicación, particularmente porque Python necesita cargar módulos de " +"biblioteca implementados como extensiones dinámicas en C (archivos :file:`." +"so`) enlazados en su contra." #: ../Doc/extending/embedding.rst:290 msgid "" @@ -298,18 +421,25 @@ msgid "" "available). This script has several options, of which the following will be " "directly useful to you:" msgstr "" +"Para conocer los indicadores necesarios del compilador y el enlazador, puede " +"ejecutar el script :file:`python{X.Y}-config` que se genera como parte del " +"proceso de instalación (también puede estar disponible un script :file:" +"`python3-config` ) Este script tiene varias opciones, de las cuales las " +"siguientes serán directamente útiles para usted:" #: ../Doc/extending/embedding.rst:296 msgid "" "``pythonX.Y-config --cflags`` will give you the recommended flags when " "compiling:" msgstr "" +"``pythonX.Y-config --cflags`` le dará las banderas recomendadas al compilar:" #: ../Doc/extending/embedding.rst:304 msgid "" "``pythonX.Y-config --ldflags`` will give you the recommended flags when " "linking:" msgstr "" +"``pythonX.Y-config --ldflags`` le dará las banderas recomendadas al vincular:" #: ../Doc/extending/embedding.rst:313 msgid "" @@ -318,6 +448,10 @@ msgid "" "that you use the absolute path to :file:`python{X.Y}-config`, as in the " "above example." msgstr "" +"Para evitar confusiones entre varias instalaciones de Python (y " +"especialmente entre el sistema Python y su propio Python compilado), se " +"recomienda que use la ruta absoluta a :file:`python{X.Y}-config`, como en el " +"ejemplo anterior." #: ../Doc/extending/embedding.rst:318 msgid "" @@ -330,3 +464,11 @@ msgid "" "extract the configuration values that you will want to combine together. " "For example:" msgstr "" +"Si este procedimiento no funciona para usted (no se garantiza que funcione " +"para todas las plataformas tipo Unix; sin embargo, le damos la bienvenida :" +"ref:`informes de errores `) deberá leer la documentación de " +"su sistema sobre dinámica vincular o examinar Python :file:`Makefile` (use :" +"func:`sysconfig.get_makefile_filename` para encontrar su ubicación) y las " +"opciones de compilación. En este caso, el módulo :mod:`sysconfig` es una " +"herramienta útil para extraer mediante programación los valores de " +"configuración que querrá combinar. Por ejemplo:"