diff --git a/dictionaries/whatsnew_2.0.txt b/dictionaries/whatsnew_2.0.txt index ccd36d3f9f..2e26cd629c 100644 --- a/dictionaries/whatsnew_2.0.txt +++ b/dictionaries/whatsnew_2.0.txt @@ -51,22 +51,51 @@ Waldman Ward Yakov Zadka +andrew +appendChild +childNodes codificándola crucialmente discrepantes +documentElement dyld +endElement +exprN +filter front hacks +hamlet +hlinuxtname +iadd ifdefs infórmelo +insertBefore +kw +lookup manejadora +moshe +myself +nombredelhost patches +pers pipelining recompiladas +removeChild rpm sdist +secuenciaN +startElement +streamreader +streamwriter subelemento +sublist +substring suffix +toxml trashcan +unistr wininst +xmlparse xmlproc +xmlrole +xmltok diff --git a/whatsnew/2.0.po b/whatsnew/2.0.po index 8433016763..9257d4305b 100644 --- a/whatsnew/2.0.po +++ b/whatsnew/2.0.po @@ -13,12 +13,12 @@ msgstr "" "POT-Creation-Date: 2024-11-21 16:38-0300\n" "PO-Revision-Date: 2021-12-08 21:38+0100\n" "Last-Translator: Cristián Maureira-Fredes \n" -"Language: es\n" "Language-Team: python-doc-es\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: Babel 2.16.0\n" #: ../Doc/whatsnew/2.0.rst:3 @@ -286,7 +286,6 @@ msgstr "" "de documentar las opiniones discrepantes." #: ../Doc/whatsnew/2.0.rst:130 -#, fuzzy msgid "" "Read the rest of :pep:`1` for the details of the PEP editorial process, " "style, and format. PEPs are kept in the Python CVS tree on SourceForge, " @@ -296,11 +295,11 @@ msgid "" "225, \"Elementwise/Objectwise Operators\"." msgstr "" "Lea el resto de :pep:`1` para conocer los detalles del proceso editorial, el " -"estilo y el formato de PEP. Los PEP se mantienen en el árbol CVS de Python " -"en SourceForge, aunque no forman parte de la distribución de Python 2.0 y " -"también están disponibles en formato HTML en https://peps.python.org/. A " -"partir de septiembre de 2000, hay 25 PEPS, que van desde :pep:`201`, " -"\"Iteración Lockstep\", hasta PEP 225, \"Operadores de elementos/objetos\"." +"estilo y el formato de PEP. Los PEP se guardan en el árbol CVS de Python en " +"SourceForge, aunque no son parte de la distribución de Python 2.0, y también " +"están disponibles en formato HTML en https://peps.python.org/. A partir de " +"septiembre de 2000, existen 25 PEP, que van desde :pep:`201`, \"Iteración en " +"sincronía\", hasta PEP 225, \"Operadores por elementos y por objetos\"." #: ../Doc/whatsnew/2.0.rst:141 msgid "Unicode" @@ -336,7 +335,6 @@ msgstr "" "puntos más significativos de las interfaces Unicode." #: ../Doc/whatsnew/2.0.rst:155 -#, fuzzy msgid "" "In Python source code, Unicode strings are written as ``u\"string\"``. " "Arbitrary Unicode characters can be written using a new escape sequence, :" @@ -345,12 +343,13 @@ msgid "" "and octal escapes can be used for characters up to U+01FF, which is " "represented by ``\\777``." msgstr "" -"En el código fuente de Python, las cadenas Unicode se escriben como ``u " -"\"cadena\"``. Los caracteres Unicode arbitrarios pueden escribirse " -"utilizando una nueva secuencia de escape, ``uHHHH``, donde *HHHH* es un " -"número hexadecimal de 4 dígitos desde 0000 hasta FFFF. También se puede " -"utilizar la secuencia de escape existente ``xHHHH``, y se pueden utilizar " -"escapes octales para caracteres hasta U+01FF, que se representa con ``777``." +"En el código fuente de Python, las cadenas Unicode se escriben como " +"``u\"string\"``. Se pueden escribir caracteres Unicode arbitrarios " +"utilizando una nueva secuencia de escape, :samp:`\\\\u{HHHH}`, donde *HHHH* " +"es un número hexadecimal de 4 dígitos de 0000 a FFFF. También se puede " +"utilizar la secuencia de escape existente :samp:`\\\\x{HH}`, y se pueden " +"utilizar escapes octales para caracteres hasta U+01FF, que se representa " +"mediante ``\\777``." #: ../Doc/whatsnew/2.0.rst:161 msgid "" @@ -498,30 +497,29 @@ msgstr "" "cadena de 8 bits se consumió." #: ../Doc/whatsnew/2.0.rst:219 -#, fuzzy msgid "" "*stream_reader* is a class that supports decoding input from a stream. " "*stream_reader(file_obj)* returns an object that supports the :meth:`!" "read`, :meth:`!readline`, and :meth:`!readlines` methods. These methods " "will all translate from the given encoding and return Unicode strings." msgstr "" -"*stream_reader* es una clase que soporta la decodificación de la entrada de " -"un flujo. *stream_reader(file_obj)* retorna un objeto que soporta los " -"métodos :meth:`read`, :meth:`readline` y :meth:`readlines`. Todos estos " -"métodos traducirán desde la codificación dada y retornarán cadenas Unicode." +"*stream_reader* es una clase que admite la decodificación de la entrada de " +"un flujo. *stream_reader(file_obj)* devuelve un objeto que admite los " +"métodos :meth:`!read`, :meth:`!readline` y :meth:`!readlines`. Todos estos " +"métodos traducirán a partir de la codificación dada y devolverán cadenas " +"Unicode." #: ../Doc/whatsnew/2.0.rst:224 -#, fuzzy msgid "" "*stream_writer*, similarly, is a class that supports encoding output to a " "stream. *stream_writer(file_obj)* returns an object that supports the :meth:" "`!write` and :meth:`!writelines` methods. These methods expect Unicode " "strings, translating them to the given encoding on output." msgstr "" -"*stream_writer*, de forma similar, es una clase que soporta la codificación " -"de la salida a un flujo. *stream_writer(file_obj)* retorna un objeto que " -"soporta los métodos :meth:`write` y :meth:`writelines`. Estos métodos " -"esperan cadenas Unicode, traduciéndolas a la codificación dada en la salida." +"De manera similar, *stream_writer* es una clase que admite la codificación " +"de la salida en una secuencia. *stream_writer(file_obj)* devuelve un objeto " +"que admite los métodos :meth:`!write` y :meth:`!writelines`. Estos métodos " +"esperan cadenas Unicode y las traducen a la codificación dada en la salida." #: ../Doc/whatsnew/2.0.rst:229 msgid "" @@ -544,6 +542,16 @@ msgid "" "output.write( unistr )\n" "output.close()" msgstr "" +"import codecs\n" +"\n" +"unistr = u'\\u0660\\u2000ab ...'\n" +"\n" +"(UTF8_encode, UTF8_decode,\n" +" UTF8_streamreader, UTF8_streamwriter) = codecs.lookup('UTF-8')\n" +"\n" +"output = UTF8_streamwriter( open( '/tmp/output', 'wb') )\n" +"output.write( unistr )\n" +"output.close()" #: ../Doc/whatsnew/2.0.rst:243 msgid "The following code would then read UTF-8 input from the file::" @@ -555,6 +563,9 @@ msgid "" "print repr(input.read())\n" "input.close()" msgstr "" +"input = UTF8_streamreader( open( '/tmp/output', 'rb') )\n" +"print repr(input.read())\n" +"input.close()" #: ../Doc/whatsnew/2.0.rst:249 msgid "" @@ -629,6 +640,11 @@ msgid "" " string.find(s, substring) != -1,\n" " L)" msgstr "" +"# Given the list L, make a list of all strings\n" +"# containing the substring S.\n" +"sublist = filter( lambda s, substring=S:\n" +" string.find(s, substring) != -1,\n" +" L)" #: ../Doc/whatsnew/2.0.rst:286 msgid "" @@ -643,7 +659,7 @@ msgstr "" #: ../Doc/whatsnew/2.0.rst:290 msgid "sublist = [ s for s in L if string.find(s, S) != -1 ]" -msgstr "" +msgstr "sublista = [ s para s en L si cadena.find(s, S) != -1 ]" #: ../Doc/whatsnew/2.0.rst:292 msgid "List comprehensions have the form::" @@ -656,6 +672,10 @@ msgid "" " for exprN in sequenceN\n" " if condition ]" msgstr "" +"[ expression for expr in sequence1\n" +" for expr2 in sequence2 ...\n" +" for exprN in sequenceN\n" +" if condition ]" #: ../Doc/whatsnew/2.0.rst:299 msgid "" @@ -694,6 +714,14 @@ msgid "" " # the expression to the\n" " # resulting list." msgstr "" +"for expr1 in sequence1:\n" +" for expr2 in sequence2:\n" +" ...\n" +" for exprN in sequenceN:\n" +" if (condition):\n" +" # Append the value of\n" +" # the expression to the\n" +" # resulting list." #: ../Doc/whatsnew/2.0.rst:319 msgid "" @@ -715,6 +743,11 @@ msgid "" "[('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3), ('c', 1),\n" "('c', 2), ('c', 3)]" msgstr "" +"seq1 = 'abc'\n" +"seq2 = (1,2,3)\n" +">>> [ (x,y) for x in seq1 for y in seq2]\n" +"[('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3), ('c', 1),\n" +"('c', 2), ('c', 3)]" #: ../Doc/whatsnew/2.0.rst:330 msgid "" @@ -734,6 +767,10 @@ msgid "" "# Correct\n" "[ (x,y) for x in seq1 for y in seq2]" msgstr "" +"# Syntax error\n" +"[ x,y for x in seq1 for y in seq2]\n" +"# Correct\n" +"[ (x,y) for x in seq1 for y in seq2]" #: ../Doc/whatsnew/2.0.rst:339 msgid "" @@ -769,7 +806,6 @@ msgstr "" "la sentencia algo más larga ``a = a + 2``." #: ../Doc/whatsnew/2.0.rst:356 -#, fuzzy msgid "" "The full list of supported assignment operators is ``+=``, ``-=``, ``*=``, " "``/=``, ``%=``, ``**=``, ``&=``, ``|=``, ``^=``, ``>>=``, and ``<<=``. " @@ -778,12 +814,12 @@ msgid "" "following :class:`!Number` class stores a number and supports using += to " "create a new instance with an incremented value." msgstr "" -"La lista completa de operadores de asignación soportados es ``+=``, ``-=``, " -"``*=``, ``/=``, ``%=``, ``**=``, ``&=``, ``|=``, ``^=``, ``>>=``, y ``<=``. " +"La lista completa de operadores de asignación admitidos es ``+=``, ``-=``, " +"``*=``, ``/=``, ``%=``, ``**=``, ``&=``, ``|=``, ``^=``, ``>>=`` y ``<<=``. " "Las clases de Python pueden anular los operadores de asignación aumentados " -"definiendo métodos llamados :meth:`__iadd__`, :meth:`__isub__`, etc. Por " -"ejemplo, la siguiente clase :class:`Number` almacena un número y soporta el " -"uso de += para crear una nueva instancia con un valor incrementado." +"definiendo métodos denominados :meth:`!__iadd__`, :meth:`!__isub__`, etc. " +"Por ejemplo, la siguiente clase :class:`!Number` almacena un número y admite " +"el uso de += para crear una nueva instancia con un valor incrementado." #: ../Doc/whatsnew/2.0.rst:367 msgid "" @@ -797,19 +833,27 @@ msgid "" "n += 3\n" "print n.value" msgstr "" +"class Number:\n" +" def __init__(self, value):\n" +" self.value = value\n" +" def __iadd__(self, increment):\n" +" return Number( self.value + increment)\n" +"\n" +"n = Number(5)\n" +"n += 3\n" +"print n.value" #: ../Doc/whatsnew/2.0.rst:377 -#, fuzzy msgid "" "The :meth:`!__iadd__` special method is called with the value of the " "increment, and should return a new instance with an appropriately modified " "value; this return value is bound as the new value of the variable on the " "left-hand side." msgstr "" -"El método especial :meth:`__iadd__` es llamado con el valor del incremento, " -"y debe retornar una nueva instancia con un valor adecuadamente modificado; " -"este valor de retorno se vincula como el nuevo valor de la variable del lado " -"izquierdo." +"El método especial :meth:`!__iadd__` se llama con el valor del incremento y " +"debe devolver una nueva instancia con un valor modificado apropiadamente; " +"este valor de retorno está vinculado como el nuevo valor de la variable en " +"el lado izquierdo." #: ../Doc/whatsnew/2.0.rst:381 msgid "" @@ -828,7 +872,6 @@ msgid "String Methods" msgstr "Métodos de cadena de caracteres" #: ../Doc/whatsnew/2.0.rst:392 -#, fuzzy msgid "" "Until now string-manipulation functionality was in the :mod:`string` module, " "which was usually a front-end for the :mod:`!strop` module written in C. " @@ -838,13 +881,13 @@ msgid "" "replace`, which takes 3 string arguments, that means eight possible " "permutations, and correspondingly complicated code." msgstr "" -"Hasta ahora, la funcionalidad de manipulación de cadenas de caracteres " -"estaba en el módulo :mod:`string`, que normalmente era un front-end para el " -"módulo :mod:`strop` escrito en C. La adición de Unicode supuso una " -"dificultad para el módulo :mod:`strop`, porque todas las funciones tendrían " -"que ser reescritas para aceptar cadenas de 8 bits o Unicode. Para funciones " -"como :func:`string.replace`, que toma 3 argumentos de cadena, eso significa " -"ocho posibles permutaciones, y el correspondiente código complicado." +"Hasta ahora, la funcionalidad de manipulación de cadenas estaba en el " +"módulo :mod:`string`, que normalmente era una interfaz para el módulo :mod:`!" +"strop` escrito en C. La incorporación de Unicode planteó una dificultad para " +"el módulo :mod:`!strop`, porque todas las funciones debían reescribirse para " +"aceptar cadenas de 8 bits o Unicode. Para funciones como :func:`!string." +"replace`, que acepta 3 cadenas como argumentos, eso significa ocho " +"permutaciones posibles y, en consecuencia, un código complicado." #: ../Doc/whatsnew/2.0.rst:400 msgid "" @@ -865,6 +908,12 @@ msgid "" ">>> 'moshe'.find('sh')\n" "2" msgstr "" +">>> 'andrew'.capitalize()\n" +"'Andrew'\n" +">>> 'hostname'.replace('os', 'linux')\n" +"'hlinuxtname'\n" +">>> 'moshe'.find('sh')\n" +"2" #: ../Doc/whatsnew/2.0.rst:411 msgid "" @@ -887,20 +936,18 @@ msgstr "" "de cadena de caracteres." #: ../Doc/whatsnew/2.0.rst:418 -#, fuzzy msgid "" "Two methods which have no parallel in pre-2.0 versions, although they did " "exist in JPython for quite some time, are :meth:`!startswith` and :meth:`!" "endswith`. ``s.startswith(t)`` is equivalent to ``s[:len(t)] == t``, while " "``s.endswith(t)`` is equivalent to ``s[-len(t):] == t``." msgstr "" -"Dos métodos que no tienen paralelo en las versiones anteriores a la 2.0, " -"aunque existieron en JPython durante bastante tiempo, son :meth:`startswith` " -"y :meth:`endswith`. ``s.startswith(t)`` es equivalente a ``s[:len(t)] == " -"t``, mientras que ``s.endswith(t)`` es equivalente a ``s[-len(t):] == t``." +"Dos métodos que no tienen paralelo en versiones anteriores a la 2.0, aunque " +"existieron en JPython durante bastante tiempo, son :meth:`!startswith` y :" +"meth:`!endswith`. ``s.startswith(t)`` es equivalente a ``s[:len(t)] == t``, " +"mientras que ``s.endswith(t)`` es equivalente a ``s[-len(t):] == t``." #: ../Doc/whatsnew/2.0.rst:423 -#, fuzzy msgid "" "One other method which deserves special mention is :meth:`!join`. The :meth:" "`!join` method of a string receives one parameter, a sequence of strings, " @@ -908,11 +955,11 @@ msgid "" "`string` module, with the arguments reversed. In other words, ``s." "join(seq)`` is equivalent to the old ``string.join(seq, s)``." msgstr "" -"Otro método que merece una mención especial es :meth:`join`. El método :meth:" -"`join` de una cadena recibe un parámetro, una secuencia de cadenas, y es " -"equivalente a la función :func:`string.join` del antiguo módulo :mod:" -"`string`, con los argumentos invertidos. En otras palabras, ``s.join(seq)`` " -"es equivalente a la antigua ``string.join(seq, s)``." +"Otro método que merece una mención especial es el :meth:`!join`. El método :" +"meth:`!join` de una cadena recibe un parámetro, una secuencia de cadenas, y " +"es equivalente a la función :func:`!string.join` del antiguo módulo :mod:" +"`string`, con los argumentos invertidos. En otras palabras, el ``s." +"join(seq)`` es equivalente al antiguo ``string.join(seq, s)``." #: ../Doc/whatsnew/2.0.rst:433 msgid "Garbage Collection of Cycles" @@ -965,6 +1012,8 @@ msgid "" "instance = SomeClass()\n" "instance.myself = instance" msgstr "" +"instancia = SomeClass()\n" +"instancia.myself = instancia" #: ../Doc/whatsnew/2.0.rst:455 msgid "" @@ -1074,7 +1123,6 @@ msgid "Minor Language Changes" msgstr "Cambios menores del lenguaje" #: ../Doc/whatsnew/2.0.rst:504 -#, fuzzy msgid "" "A new syntax makes it more convenient to call a given function with a tuple " "of arguments and/or a dictionary of keyword arguments. In Python 1.5 and " @@ -1085,15 +1133,14 @@ msgid "" "and clearer way to achieve the same effect. This syntax is symmetrical with " "the syntax for defining functions::" msgstr "" -"Una nueva sintaxis hace más conveniente llamar a una función dada con una " -"tupla de argumentos y/o un diccionario de argumentos de palabras clave. En " -"Python 1.5 y anteriores, se utilizaba la función incorporada :func:`apply`: " -"``apply(f, args, kw)`` llama a la función :func:`f` con la tupla de " +"Una nueva sintaxis hace que sea más conveniente llamar a una función dada " +"con una tupla de argumentos y/o un diccionario de argumentos de palabras " +"clave. En Python 1.5 y anteriores, se usaba la función incorporada :func:`!" +"apply`: ``apply(f, args, kw)`` llama a la función :func:`!f` con la tupla de " "argumentos *args* y los argumentos de palabras clave en el diccionario " -"*kw*. :func:`apply` es lo mismo en 2.0, pero gracias a un parche de Greg " -"Ewing, ``f(*args, **kw)`` es una forma más corta y clara de conseguir el " -"mismo efecto. Esta sintaxis es simétrica con la sintaxis para definir " -"funciones::" +"*kw*. :func:`!apply` es lo mismo en 2.0, pero gracias a un parche de Greg " +"Ewing, ``f(*args, **kw)`` es una forma más corta y clara de lograr el mismo " +"efecto. Esta sintaxis es simétrica con la sintaxis para definir funciones:" #: ../Doc/whatsnew/2.0.rst:513 msgid "" @@ -1102,9 +1149,12 @@ msgid "" " # kw is a dictionary of keyword args\n" " ..." msgstr "" +"def f(*args, **kw):\n" +" # args is a tuple of positional args,\n" +" # kw is a dictionary of keyword args\n" +" ..." #: ../Doc/whatsnew/2.0.rst:518 -#, fuzzy msgid "" "The ``print`` statement can now have its output directed to a file-like " "object by following the ``print`` with ``>> file``, similar to the " @@ -1114,17 +1164,17 @@ msgid "" "``sys.stdout`` and then restore the old value. For sending output to " "standard error, it's much easier to write this::" msgstr "" -"La sentencia ``print`` puede ahora tener su salida dirigida a un objeto tipo " -"archivo siguiendo a ``print`` con ``>> archivo``, similar al operador de " -"redirección en los shells de Unix. Antes había que utilizar el método :meth:" -"`write` del objeto tipo archivo, que carece de la comodidad y simplicidad de " -"``print``, o bien asignar un nuevo valor a ``sys.stdout`` y luego restaurar " -"el valor anterior. Para enviar la salida al error estándar, es mucho más " -"fácil escribir esto::" +"Ahora, la salida de la sentencia ``print`` puede dirigirse a un objeto " +"similar a un archivo si se sigue ``print`` con ``>> file``, de forma similar " +"al operador de redirección de los shells de Unix. Antes, se tenía que " +"utilizar el método :meth:`!write` del objeto similar a un archivo, que " +"carece de la comodidad y la simplicidad de ``print``, o se podía asignar un " +"nuevo valor a ``sys.stdout`` y luego restaurar el valor anterior. Para " +"enviar la salida al error estándar, es mucho más fácil escribir esto:" #: ../Doc/whatsnew/2.0.rst:526 msgid "print >> sys.stderr, \"Warning: action field not supplied\"" -msgstr "" +msgstr "print >> sys.stderr, \"Warning: action field not supplied\"" #: ../Doc/whatsnew/2.0.rst:528 msgid "" @@ -1153,7 +1203,6 @@ msgstr "" "``'abc' abc``." #: ../Doc/whatsnew/2.0.rst:538 -#, fuzzy msgid "" "Previously there was no way to implement a class that overrode Python's " "built-in :keyword:`in` operator and implemented a custom version. ``obj in " @@ -1165,16 +1214,16 @@ msgid "" "built-in objects written in C can define what :keyword:`!in` means for them " "via a new slot in the sequence protocol." msgstr "" -"Anteriormente no había forma de implementar una clase que sobrepasara el " -"operador incorporado de Python :keyword:`in` e implementara una versión " -"personalizada.``obj in seq`` retorna verdadero si *obj* está presente en la " -"secuencia *seq*; Python lo calcula simplemente probando cada índice de la " -"secuencia hasta que se encuentra *obj* o se encuentra un :exc:`IndexError`. " -"Moshe Zadka ha contribuido con un parche que añade un método mágico :meth:" -"`__contains__` para proporcionar una implementación personalizada para :" -"keyword:`!in`. Además, los nuevos objetos incorporados escritos en C pueden " -"definir lo que :keyword:`!in` significa para ellos a través de una nueva " -"ranura en el protocolo de secuencia." +"Anteriormente no había forma de implementar una clase que anulara el " +"operador :keyword:`in` incorporado de Python e implementara una versión " +"personalizada. ``obj in seq`` devuelve verdadero si *obj* está presente en " +"la secuencia *seq*; Python calcula esto simplemente probando cada índice de " +"la secuencia hasta que se encuentre *obj* o :exc:`IndexError`. Moshe Zadka " +"contribuyó con un parche que agrega un método mágico :meth:`!__contains__` " +"para proporcionar una implementación personalizada para :keyword:`!in`. " +"Además, los nuevos objetos incorporados escritos en C pueden definir lo que :" +"keyword:`!in` significa para ellos a través de una nueva ranura en el " +"protocolo de secuencia." #: ../Doc/whatsnew/2.0.rst:547 msgid "" @@ -1200,9 +1249,12 @@ msgid "" "a.append(a)\n" "b.append(b)" msgstr "" +"a = []\n" +"b = []\n" +"a.append(a)\n" +"b.append(b)" #: ../Doc/whatsnew/2.0.rst:559 -#, fuzzy msgid "" "The comparison ``a==b`` returns true, because the two recursive data " "structures are isomorphic. See the thread \"trashcan and PR#7\" in the April " @@ -1213,15 +1265,15 @@ msgid "" "even if a user-defined :meth:`!__cmp__` method encountered an error, since " "the resulting exception would simply be silently swallowed." msgstr "" -"La comparación ``a==b`` retorna verdadero, porque las dos estructuras de " -"datos recursivas son isomorfas. Véase el hilo \"trashcan and PR#7\" en los " -"archivos de abril de 2000 de la lista de correo de python-dev para la " -"discusión que condujo a esta implementación, y algunos enlaces relevantes " +"La comparación ``a==b`` devuelve verdadero, porque las dos estructuras de " +"datos recursivas son isomorfas. Consulte el hilo \"trashcan y PR#7\" en los " +"archivos de abril de 2000 de la lista de correo python-dev para ver la " +"discusión que condujo a esta implementación y algunos enlaces relevantes " "útiles. Tenga en cuenta que las comparaciones ahora también pueden generar " "excepciones. En versiones anteriores de Python, una operación de comparación " -"como ``cmp(a,b)`` siempre producía una respuesta, incluso si un método :meth:" -"`__cmp__` definido por el usuario encontraba un error, ya que la excepción " -"resultante simplemente se tragaba en silencio." +"como ``cmp(a,b)`` siempre produciría una respuesta, incluso si un método :" +"meth:`!__cmp__` definido por el usuario encontrara un error, ya que la " +"excepción resultante simplemente se tragaría silenciosamente." #: ../Doc/whatsnew/2.0.rst:571 msgid "" @@ -1280,6 +1332,10 @@ msgid "" " i = i + 1\n" "f()" msgstr "" +"def f():\n" +" print \"i=\",i\n" +" i = i + 1\n" +"f()" #: ../Doc/whatsnew/2.0.rst:595 msgid "" @@ -1313,7 +1369,6 @@ msgstr "" "corta." #: ../Doc/whatsnew/2.0.rst:610 -#, fuzzy msgid "" "The :func:`int` and :func:`!long` functions now accept an optional \"base\" " "parameter when the first argument is a string. ``int('123', 10)`` returns " @@ -1321,11 +1376,11 @@ msgid "" "`TypeError` exception with the message \"can't convert non-string with " "explicit base\"." msgstr "" -"Las funciones :func:`int` y :func:`long` aceptan ahora un parámetro \"base\" " -"opcional cuando el primer argumento es una cadena. ``int('123', 10)`` " -"retorna 123, mientras que ``int('123', 16)`` retorna 291. ``int(123, 16)`` " -"lanza una excepción :exc:`TypeError` con el mensaje \"no se puede convertir " -"una cadena con base explícita\"." +"Las funciones :func:`int` y :func:`!long` ahora aceptan un parámetro " +"\"base\" opcional cuando el primer argumento es una cadena. ``int('123', " +"10)`` devuelve 123, mientras que ``int('123', 16)`` devuelve 291. ``int(123, " +"16)`` genera una excepción :exc:`TypeError` con el mensaje \"no se puede " +"convertir una cadena con una base explícita\"." #: ../Doc/whatsnew/2.0.rst:616 msgid "" @@ -1343,7 +1398,6 @@ msgstr "" "una versión final." #: ../Doc/whatsnew/2.0.rst:622 -#, fuzzy msgid "" "Dictionaries have an odd new method, ``setdefault(key, default)``, which " "behaves similarly to the existing :meth:`!get` method. However, if the key " @@ -1351,11 +1405,12 @@ msgid "" "`!get` would do, and also inserts it into the dictionary as the value for " "*key*. Thus, the following lines of code::" msgstr "" -"Los diccionarios tienen un nuevo y extraño método, ``setdefault(key, " -"default)``, que se comporta de forma similar al método :meth:`get` " -"existente. Sin embargo, si falta la clave, :meth:`setdefault` retorna el " -"valor de *default* como haría :meth:`get`, y también lo inserta en el " -"diccionario como valor de *key*. Así, las siguientes líneas de código::" +"Los diccionarios tienen un nuevo método extraño, ``setdefault(key, " +"default)``, que se comporta de manera similar al método :meth:`!get` " +"existente. Sin embargo, si falta la clave, :meth:`!setdefault` devuelve el " +"valor de *default* como lo haría :meth:`!get` y también lo inserta en el " +"diccionario como el valor de *key*. Por lo tanto, las siguientes líneas de " +"código:" #: ../Doc/whatsnew/2.0.rst:628 msgid "" @@ -1364,6 +1419,10 @@ msgid "" " dict[key] = []\n" " return dict[key]" msgstr "" +"if dict.has_key( key ): return dict[key]\n" +"else:\n" +" dict[key] = []\n" +" return dict[key]" #: ../Doc/whatsnew/2.0.rst:633 msgid "" @@ -1412,7 +1471,6 @@ msgstr "" "Python antiguo se rompa." #: ../Doc/whatsnew/2.0.rst:656 -#, fuzzy msgid "" "The change which will probably break the most code is tightening up the " "arguments accepted by some methods. Some methods would take multiple " @@ -1424,19 +1482,18 @@ msgid "" "to simply add an extra set of parentheses to pass both values as a tuple: " "``L.append( (1,2) )``." msgstr "" -"El cambio que probablemente romperá la mayor parte del código es el " -"endurecimiento de los argumentos aceptados por algunos métodos. Algunos " -"métodos tomaban múltiples argumentos y los trataban como una tupla, " -"particularmente varios métodos de lista como :meth:`append` y :meth:" -"`insert`. En versiones anteriores de Python, si ``L`` es una lista, ``L." -"append( 1,2 )`` añade la tupla ``(1,2)`` a la lista. En Python 2.0 esto " -"provoca una excepción :exc:`TypeError` con el mensaje 'append requiere " -"exactamente 1 argumento; se han dado 2'. La solución es simplemente añadir " -"un conjunto extra de paréntesis para pasar ambos valores como una tupla: " +"El cambio que probablemente romperá la mayor parte del código es el ajuste " +"de los argumentos aceptados por algunos métodos. Algunos métodos tomarían " +"múltiples argumentos y los tratarían como una tupla, particularmente varios " +"métodos de lista como :meth:`!append` y :meth:`!insert`. En versiones " +"anteriores de Python, si ``L`` es una lista, ``L.append( 1,2 )`` agrega la " +"tupla ``(1,2)`` a la lista. En Python 2.0 esto hace que se genere una " +"excepción :exc:`TypeError`, con el mensaje: 'append requiere exactamente 1 " +"argumento; se proporcionaron 2'. La solución es simplemente agregar un " +"conjunto adicional de paréntesis para pasar ambos valores como una tupla: " "``L.append( (1,2) )``." #: ../Doc/whatsnew/2.0.rst:665 -#, fuzzy msgid "" "The earlier versions of these methods were more forgiving because they used " "an old function in Python's C interface to parse their arguments; 2.0 " @@ -1448,17 +1505,16 @@ msgid "" "this isn't recommended." msgstr "" "Las versiones anteriores de estos métodos eran más indulgentes porque " -"utilizaban una antigua función de la interfaz C de Python para analizar sus " -"argumentos; la versión 2.0 los moderniza para utilizar :func:" -"`PyArg_ParseTuple`, la función actual de análisis de argumentos, que " -"proporciona mensajes de error más útiles y trata las llamadas con múltiples " -"argumentos como errores. Si es absolutamente necesario usar la versión 2.0 " -"pero no puedes arreglar tu código, puedes editar :file:`Objects/listobject." -"c` y definir el símbolo del preprocesador ``NO_STRICT_LIST_APPEND`` para " -"preservar el antiguo comportamiento; esto no es recomendable." +"utilizaban una función antigua en la interfaz C de Python para analizar sus " +"argumentos; la versión 2.0 los moderniza para utilizar :c:func:" +"`PyArg_ParseTuple`, la función de análisis de argumentos actual, que " +"proporciona mensajes de error más útiles y trata las llamadas de múltiples " +"argumentos como errores. Si es absolutamente necesario utilizar la versión " +"2.0 pero no puede corregir su código, puede editar :file:`Objects/listobject." +"c` y definir el símbolo de preprocesador ``NO_STRICT_LIST_APPEND`` para " +"preservar el comportamiento anterior; esto no se recomienda." #: ../Doc/whatsnew/2.0.rst:673 -#, fuzzy msgid "" "Some of the functions in the :mod:`socket` module are still forgiving in " "this way. For example, ``socket.connect( ('hostname', 25) )`` is the " @@ -1474,16 +1530,17 @@ msgid "" "version." msgstr "" "Algunas de las funciones del módulo :mod:`socket` siguen siendo indulgentes " -"en este sentido. Por ejemplo, :func:`socket.connect( ('hostname', 25) )` es " -"la forma correcta, pasando una tupla que representa una dirección IP, pero :" -"func:`socket.connect( 'hostname', 25 )` también funciona. :func:`socket." -"connect_ex` y :func:`socket.bind` son igualmente fáciles de usar. 2.0alpha1 " -"endureció estas funciones, pero como la documentación utilizaba la forma " -"errónea de argumentos múltiples, mucha gente escribió código que se rompería " -"con la comprobación más estricta. GvR se echó atrás en los cambios ante la " -"reacción del público, así que para el módulo :mod:`socket`, la documentación " -"se arregló y la forma de argumento múltiple simplemente se marcó como " -"obsoleta; se *reforzará* de nuevo en una futura versión de Python." +"en este sentido. Por ejemplo, ``socket.connect( ('hostname', 25) )`` es la " +"forma correcta, ya que pasa una tupla que representa una dirección IP, pero " +"``socket.connect('hostname', 25)`` también funciona. :meth:`socket." +"connect_ex ` y :meth:`socket.bind ` son igualmente fáciles de usar. 2.0alpha1 restringió estas funciones, " +"pero debido a que la documentación en realidad usaba la forma de argumentos " +"múltiples errónea, muchas personas escribieron código que rompería con la " +"verificación más estricta. GvR retiró los cambios ante la reacción del " +"público, por lo que para el módulo :mod:`socket`, la documentación se " +"corrigió y la forma de argumentos múltiples simplemente se marcó como " +"obsoleta; *will* se ajustará nuevamente en una futura versión de Python." #: ../Doc/whatsnew/2.0.rst:684 msgid "" @@ -1512,7 +1569,7 @@ msgstr "" "y el código escrito para aprovechar este hecho se romperá en la versión 2.0." #: ../Doc/whatsnew/2.0.rst:694 -#, fuzzy, python-format +#, python-format msgid "" "Some work has been done to make integers and long integers a bit more " "interchangeable. In 1.5.2, large-file support was added for Solaris, to " @@ -1528,20 +1585,20 @@ msgid "" "the ``%`` operator (``%d``, ``%i``, ``%x``, etc.). For example, ``\"%d\" % " "2L**64`` will produce the string ``18446744073709551616``." msgstr "" -"Se ha trabajado para que los enteros y los enteros largos sean un poco más " -"intercambiables. En la versión 1.5.2, se añadió soporte para archivos " -"grandes en Solaris, para permitir la lectura de archivos de más de 2 GiB; " -"esto hizo que el método :meth:`tell` de los objetos de archivo retornara un " -"entero largo en lugar de un entero normal. Algunos códigos restaban dos " -"desplazamientos de archivos e intentaban utilizar el resultado para " -"multiplicar una secuencia o cortar una cadena, pero esto generaba un :exc:" -"`TypeError`. En la versión 2.0, los enteros largos pueden utilizarse para " -"multiplicar o cortar una secuencia, y se comportarán como se espera " -"intuitivamente; ``3L * 'abc'`` produce 'abcabcabc', y ``(0,1,2,3)[2L:4L]`` " -"produce (2,3). Los enteros largos también pueden utilizarse en varios " -"contextos en los que antes sólo se aceptaban enteros, como en el método :" -"meth:`seek` de los objetos de archivo, y en los formatos soportados por el " -"operador ``%`` (``%d``, ``%i``, ``%x``, etc.). Por ejemplo, ``\"%d\" % " +"Se ha trabajado un poco para que los números enteros y los números enteros " +"largos sean un poco más intercambiables. En 1.5.2, se agregó soporte para " +"archivos grandes para Solaris, para permitir la lectura de archivos mayores " +"a 2 GiB; esto hizo que el método :meth:`!tell` de objetos de archivo " +"devolviera un número entero largo en lugar de un número entero regular. " +"Algunos códigos restaban dos desplazamientos de archivo e intentaban usar el " +"resultado para multiplicar una secuencia o cortar una cadena, pero esto " +"generaba un :exc:`TypeError`. En 2.0, los números enteros largos se pueden " +"usar para multiplicar o cortar una secuencia, y se comportará como esperaría " +"intuitivamente; ``3L * 'abc'`` produce 'abcabcabc' y ``(0,1,2,3)[2L:4L]`` " +"produce (2,3). Los números enteros largos también se pueden usar en varios " +"contextos donde anteriormente solo se aceptaban números enteros, como en el " +"método :meth:`!seek` de objetos de archivo y en los formatos admitidos por " +"el operador ``%`` (``%d``, ``%i``, ``%x``, etc.). Por ejemplo, ``\"%d\" % " "2L**64`` producirá la cadena ``18446744073709551616``." #: ../Doc/whatsnew/2.0.rst:708 @@ -1563,7 +1620,7 @@ msgstr "" "perderá el dígito final." #: ../Doc/whatsnew/2.0.rst:716 -#, fuzzy, python-format +#, python-format msgid "" "Taking the :func:`repr` of a float now uses a different formatting precision " "than :func:`str`. :func:`repr` uses ``%.17g`` format string for C's :func:`!" @@ -1573,17 +1630,16 @@ msgid "" "in binary, so ``repr(8.1)`` is ``'8.0999999999999996'``, while str(8.1) is " "``'8.1'``." msgstr "" -"Tomar el :func:`repr` de un flotador utiliza ahora una precisión de formato " -"diferente a la de :func:`str`. :func:`repr` utiliza la cadena de formato " -"``%.17g`` para el :func:`sprintf` de C, mientras que :func:`str` utiliza " -"``%.12g`` como antes. El efecto es que :func:`repr` puede mostrar " -"ocasionalmente más decimales que :func:`str`, para ciertos números. Por " -"ejemplo, el número 8,1 no puede representarse exactamente en binario, por lo " -"que ``repr(8,1)`` es ``'8,09999999999996'``, mientras que str(8,1) es " -"``'8,1'``." +"Ahora, al tomar el :func:`repr` de un float, se utiliza una precisión de " +"formato diferente a la de :func:`str`. :func:`repr` utiliza la cadena de " +"formato ``%.17g`` para :func:`!sprintf` de C, mientras que :func:`str` " +"utiliza ``%.12g`` como antes. El efecto es que :func:`repr` puede mostrar " +"ocasionalmente más decimales que :func:`str` para ciertos números. Por " +"ejemplo, el número 8.1 no se puede representar exactamente en binario, por " +"lo que ``repr(8.1)`` es ``'8.0999999999999996'``, mientras que str(8.1) es " +"``'8.1'``." #: ../Doc/whatsnew/2.0.rst:724 -#, fuzzy msgid "" "The ``-X`` command-line option, which turned all standard exceptions into " "strings instead of classes, has been removed; the standard exceptions will " @@ -1591,10 +1647,10 @@ msgid "" "standard exceptions was translated from Python to a built-in C module, " "written by Barry Warsaw and Fredrik Lundh." msgstr "" -"La opción de línea de comandos ``-X``, que convertía todas las excepciones " -"estándar en cadenas en lugar de clases, ha sido eliminada; las excepciones " -"estándar serán ahora siempre clases. El módulo :mod:`exceptions` que " -"contiene las excepciones estándar ha sido traducido de Python a un módulo C " +"Se ha eliminado la opción de línea de comandos ``-X``, que convertía todas " +"las excepciones estándar en cadenas en lugar de clases; ahora las " +"excepciones estándar siempre serán clases. El módulo :mod:`!exceptions` que " +"contiene las excepciones estándar se tradujo de Python a un módulo C " "integrado, escrito por Barry Warsaw y Fredrik Lundh." #: ../Doc/whatsnew/2.0.rst:740 @@ -1663,7 +1719,6 @@ msgstr "" "pyport.h`." #: ../Doc/whatsnew/2.0.rst:767 -#, fuzzy msgid "" "Vladimir Marangozov's long-awaited malloc restructuring was completed, to " "make it easy to have the Python interpreter use a custom allocator instead " @@ -1672,13 +1727,13 @@ msgid "" "discussions during which the interface was hammered out, see the web " "archives of the 'patches' and 'python-dev' lists at python.org." msgstr "" -"Se ha completado la tan esperada reestructuración de malloc de Vladimir " -"Marangozov, para facilitar que el intérprete de Python utilice un asignador " -"personalizado en lugar del estándar de C :func:`malloc`. Para la " -"documentación, lea los comentarios en :file:`Include/pymem.h` y :file:" -"`Include/objimpl.h`. Para ver las largas discusiones durante las cuales se " -"elaboró la interfaz, consulte los archivos web de las listas 'patches' y " -"'python-dev' en python.org." +"La esperada reestructuración de malloc de Vladimir Marangozov se completó " +"para facilitar que el intérprete de Python use un asignador personalizado en " +"lugar del :c:func:`malloc` estándar de C. Para consultar la documentación, " +"lea los comentarios en :file:`Include/pymem.h` y :file:`Include/objimpl.h`. " +"Para consultar las extensas discusiones durante las cuales se elaboró ​​la " +"interfaz, consulte los archivos web de las listas 'patches' y 'python-dev' " +"en python.org." #: ../Doc/whatsnew/2.0.rst:774 msgid "" @@ -1735,7 +1790,6 @@ msgstr "" "G. Waldman eleva el límite de ``2^16`` a ``2^{32}``." #: ../Doc/whatsnew/2.0.rst:796 -#, fuzzy msgid "" "Three new convenience functions intended for adding constants to a module's " "dictionary at module initialization time were added: :c:func:" @@ -1745,24 +1799,24 @@ msgid "" "third argument for the value to be assigned to the name. This third " "argument is, respectively, a Python object, a C long, or a C string." msgstr "" -"Se han añadido tres nuevas funciones para añadir constantes al diccionario " -"de un módulo en el momento de la inicialización: :func:" -"`PyModule_AddObject`, :func:`PyModule_AddIntConstant`, y :func:" -"`PyModule_AddStringConstant`. Cada una de estas funciones toma un objeto de " -"módulo, una cadena C terminada en cero que contiene el nombre a añadir, y un " -"tercer argumento para el valor a asignar al nombre. Este tercer argumento " -"es, respectivamente, un objeto Python, un C long o una cadena C." +"Se agregaron tres nuevas funciones de conveniencia destinadas a agregar " +"constantes al diccionario de un módulo en el momento de inicialización del " +"módulo: :c:func:`PyModule_AddObject`, :c:func:`PyModule_AddIntConstant` y :c:" +"func:`PyModule_AddStringConstant`. Cada una de estas funciones toma un " +"objeto de módulo, una cadena C terminada en cero que contiene el nombre que " +"se agregará y un tercer argumento para el valor que se asignará al nombre. " +"Este tercer argumento es, respectivamente, un objeto Python, un long C o una " +"cadena C." #: ../Doc/whatsnew/2.0.rst:804 -#, fuzzy msgid "" "A wrapper API was added for Unix-style signal handlers. :c:func:" "`PyOS_getsig` gets a signal handler and :c:func:`PyOS_setsig` will set a new " "handler." msgstr "" -"Se ha añadido una API envolvente para los manejadores de señales de estilo " -"Unix. :func:`PyOS_getsig` obtiene un manejador de señales y :func:" -"`PyOS_setsig` establecerá un nuevo manejador." +"Se agregó una API contenedora para los controladores de señales de estilo " +"Unix. :c:func:`PyOS_getsig` obtiene un controlador de señales y :c:func:" +"`PyOS_setsig` establecerá un nuevo controlador." #: ../Doc/whatsnew/2.0.rst:811 msgid "Distutils: Making Modules Easy to Install" @@ -1790,7 +1844,6 @@ msgstr "" "una instalación de Python fuera una tarea ardua." #: ../Doc/whatsnew/2.0.rst:821 -#, fuzzy msgid "" "The SIG for distribution utilities, shepherded by Greg Ward, has created the " "Distutils, a system to make package installation much easier. They form the " @@ -1805,19 +1858,19 @@ msgid "" "separating the build from the install, building or installing in non-default " "directories, and more." msgstr "" -"El SIG de utilidades de distribución, liderado por Greg Ward, ha creado las " -"Distutils, un sistema para facilitar la instalación de paquetes. Forman el " -"paquete :mod:`distutils`, una nueva parte de la biblioteca estándar de " -"Python. En el mejor de los casos, la instalación de un módulo de Python " -"desde el código fuente requerirá los mismos pasos: primero simplemente hay " -"que desempaquetar el archivo tar o zip, y ejecutar \"``python setup.py " -"install``. La plataforma será detectada automáticamente, el compilador será " -"reconocido, los módulos de extensión C serán compilados, y la distribución " -"será instalada en el directorio apropiado. Los argumentos opcionales de la " -"línea de comandos proporcionan más control sobre el proceso de instalación, " +"El SIG para utilidades de distribución, dirigido por Greg Ward, ha creado " +"Distutils, un sistema para facilitar enormemente la instalación de paquetes. " +"Forman el paquete ``distutils``, una nueva parte de la biblioteca estándar " +"de Python. En el mejor de los casos, instalar un módulo Python desde el " +"código fuente requerirá los mismos pasos: primero, simplemente hay que " +"descomprimir el archivo tarball o zip y ejecutar \"``python setup.py " +"install``\". La plataforma se detectará automáticamente, se reconocerá el " +"compilador, se compilarán los módulos de extensión de C y se instalará la " +"distribución en el directorio adecuado. Los argumentos opcionales de la " +"línea de comandos proporcionan más control sobre el proceso de instalación; " "el paquete distutils ofrece muchos lugares para anular los valores " -"predeterminados - separando la construcción de la instalación, construyendo " -"o instalando en directorios no predeterminados, y más." +"predeterminados, separando la compilación de la instalación, compilando o " +"instalando en directorios que no sean los predeterminados, y más." #: ../Doc/whatsnew/2.0.rst:833 msgid "" @@ -1835,6 +1888,9 @@ msgid "" "setup (name = \"foo\", version = \"1.0\",\n" " py_modules = [\"module1\", \"module2\"])" msgstr "" +"from distutils.core import setup\n" +"setup (name = \"foo\", version = \"1.0\",\n" +" py_modules = [\"module1\", \"module2\"])" #: ../Doc/whatsnew/2.0.rst:841 msgid "" @@ -1850,6 +1906,9 @@ msgid "" "setup (name = \"foo\", version = \"1.0\",\n" " packages = [\"package\", \"package.subpackage\"])" msgstr "" +"from distutils.core import setup\n" +"setup (name = \"foo\", version = \"1.0\",\n" +" packages = [\"package\", \"package.subpackage\"])" #: ../Doc/whatsnew/2.0.rst:848 msgid "" @@ -1874,6 +1933,18 @@ msgid "" "setup (name = \"PyXML\", version = \"0.5.4\",\n" " ext_modules =[ expat_extension ] )" msgstr "" +"from distutils.core import setup, Extension\n" +"\n" +"expat_extension = Extension('xml.parsers.pyexpat',\n" +" define_macros = [('XML_NS', None)],\n" +" include_dirs = [ 'extensions/expat/xmltok',\n" +" 'extensions/expat/xmlparse' ],\n" +" sources = [ 'extensions/pyexpat.c',\n" +" 'extensions/expat/xmltok/xmltok.c',\n" +" 'extensions/expat/xmltok/xmlrole.c', ]\n" +" )\n" +"setup (name = \"PyXML\", version = \"0.5.4\",\n" +" ext_modules =[ expat_extension ] )" #: ../Doc/whatsnew/2.0.rst:864 msgid "" @@ -1908,7 +1979,6 @@ msgid "XML Modules" msgstr "Módulos XML" #: ../Doc/whatsnew/2.0.rst:882 -#, fuzzy msgid "" "Python 1.5.2 included a simple XML parser in the form of the :mod:`!xmllib` " "module, contributed by Sjoerd Mullender. Since 1.5.2's release, two " @@ -1922,25 +1992,24 @@ msgid "" "documentation or the source code for complete details. The Python XML SIG is " "also working on improved documentation." msgstr "" -"La versión 1.5.2 de Python incluía un sencillo analizador XML en forma de " -"módulo :mod:`xmllib`, aportado por Sjoerd Mullender. Desde el lanzamiento de " -"la versión 1.5.2, se han generalizado dos interfaces diferentes para el " -"procesamiento de XML: SAX2 (versión 2 de la API Simple para XML) proporciona " -"una interfaz basada en eventos con algunas similitudes con :mod:`xmllib`, y " -"el DOM (Modelo de Objetos de Documento) proporciona una interfaz basada en " -"un árbol, transformando un documento XML en un árbol de nodos que puede ser " -"atravesado y modificado. Python 2.0 incluye una interfaz SAX2 y una interfaz " -"DOM reducida como parte del paquete :mod:`xml`. Aquí daremos una breve " -"descripción de estas nuevas interfaces; consulte la documentación de Python " -"o el código fuente para obtener detalles completos. El SIG XML de Python " -"también está trabajando en la mejora de la documentación." +"Python 1.5.2 incluía un analizador XML simple en forma del módulo :mod:`!" +"xmllib`, aportado por Sjoerd Mullender. Desde el lanzamiento de la versión " +"1.5.2, se han vuelto comunes dos interfaces diferentes para procesar XML: " +"SAX2 (versión 2 de la API simple para XML) proporciona una interfaz basada " +"en eventos con algunas similitudes con :mod:`!xmllib`, y DOM (Document " +"Object Model) proporciona una interfaz basada en árboles, transformando un " +"documento XML en un árbol de nodos que se puede recorrer y modificar. Python " +"2.0 incluye una interfaz SAX2 y una interfaz DOM simplificada como parte del " +"paquete :mod:`xml`. Aquí daremos una breve descripción general de estas " +"nuevas interfaces; consulte la documentación de Python o el código fuente " +"para obtener detalles completos. El SIG de XML de Python también está " +"trabajando en una documentación mejorada." #: ../Doc/whatsnew/2.0.rst:896 msgid "SAX2 Support" msgstr "Soporte de SAX2" #: ../Doc/whatsnew/2.0.rst:898 -#, fuzzy msgid "" "SAX defines an event-driven interface for parsing XML. To use SAX, you must " "write a SAX handler class. Handler classes inherit from various classes " @@ -1951,13 +2020,15 @@ msgid "" "meth:`~xml.sax.handler.ContentHandler.characters` method is called for every " "chunk of character data, and so forth." msgstr "" -"SAX define una interfaz basada en eventos para analizar XML. Para usar SAX, " -"debes escribir una clase manejadora de SAX. Las clases manejadoras heredan " -"de varias clases proporcionadas por SAX, y sobrescriben varios métodos que " -"luego serán llamados por el analizador XML. Por ejemplo, los métodos :meth:" -"`startElement` y :meth:`endElement` son llamados para cada etiqueta inicial " -"y final encontrada por el analizador, el método :meth:`characters` es " -"llamado para cada trozo de datos de caracteres, etc." +"SAX define una interfaz controlada por eventos para analizar XML. Para " +"utilizar SAX, debe escribir una clase controladora de SAX. Las clases " +"controladoras heredan de varias clases proporcionadas por SAX y reemplazan " +"varios métodos que luego llamará el analizador XML. Por ejemplo, los " +"métodos :meth:`~xml.sax.handler.ContentHandler.startElement` y :meth:`~xml." +"sax.handler.ContentHandler.endElement` se llaman para cada etiqueta de " +"inicio y fin que encuentre el analizador, el método :meth:`~xml.sax.handler." +"ContentHandler.characters` se llama para cada fragmento de datos de " +"caracteres, y así sucesivamente." #: ../Doc/whatsnew/2.0.rst:906 msgid "" @@ -2004,22 +2075,38 @@ msgid "" "# Parse a file!\n" "parser.parse( 'hamlet.xml' )" msgstr "" +"from xml import sax\n" +"\n" +"class SimpleHandler(sax.ContentHandler):\n" +" def startElement(self, name, attrs):\n" +" print 'Start of element:', name, attrs.keys()\n" +"\n" +" def endElement(self, name):\n" +" print 'End of element:', name\n" +"\n" +"# Create a parser object\n" +"parser = sax.make_parser()\n" +"\n" +"# Tell it what handler to use\n" +"handler = SimpleHandler()\n" +"parser.setContentHandler( handler )\n" +"\n" +"# Parse a file!\n" +"parser.parse( 'hamlet.xml' )" #: ../Doc/whatsnew/2.0.rst:935 -#, fuzzy msgid "" "For more information, consult the Python documentation, or the XML HOWTO at " "https://pyxml.sourceforge.net/topics/howto/xml-howto.html." msgstr "" "Para más información, consulte la documentación de Python o el XML HOWTO en " -"http://pyxml.sourceforge.net/topics/howto/xml-howto.html." +"https://pyxml.sourceforge.net/topics/howto/xml-howto.html." #: ../Doc/whatsnew/2.0.rst:940 msgid "DOM Support" msgstr "Soporte DOM" #: ../Doc/whatsnew/2.0.rst:942 -#, fuzzy msgid "" "The Document Object Model is a tree-based representation for an XML " "document. A top-level :class:`!Document` instance is the root of the tree, " @@ -2030,15 +2117,15 @@ msgid "" "access element and attribute values, insert and delete nodes, and convert " "the tree back into XML." msgstr "" -"El Modelo de Objetos del Documento es una representación basada en un árbol " -"para un documento XML. Una instancia de :class:`Document` de nivel superior " -"es la raíz del árbol, y tiene un único hijo que es la instancia de :class:" -"`Element` de nivel superior. Este :class:`Element` tiene nodos hijos que " -"representan los datos de los caracteres y cualquier subelemento, que puede " -"tener otros hijos propios, y así sucesivamente. Utilizando el DOM puedes " -"recorrer el árbol resultante como quieras, acceder a los valores de los " -"elementos y atributos, insertar y eliminar nodos y volver a convertir el " -"árbol en XML." +"El modelo de objetos de documento es una representación basada en árboles " +"para un documento XML. Una instancia :class:`!Document` de nivel superior es " +"la raíz del árbol y tiene un único elemento secundario que es la instancia :" +"class:`!Element` de nivel superior. Este :class:`!Element` tiene nodos " +"secundarios que representan datos de caracteres y cualquier subelemento, que " +"puede tener otros elementos secundarios propios, y así sucesivamente. Con el " +"DOM, puede recorrer el árbol resultante de la forma que desee, acceder a los " +"valores de los elementos y atributos, insertar y eliminar nodos y convertir " +"el árbol nuevamente en XML." #: ../Doc/whatsnew/2.0.rst:950 msgid "" @@ -2057,26 +2144,26 @@ msgstr "" "```` un archivo." #: ../Doc/whatsnew/2.0.rst:956 -#, fuzzy msgid "" "The DOM implementation included with Python lives in the :mod:`xml.dom." "minidom` module. It's a lightweight implementation of the Level 1 DOM with " "support for XML namespaces. The :func:`!parse` and :func:`!parseString` " "convenience functions are provided for generating a DOM tree::" msgstr "" -"La implementación del DOM incluida en Python se encuentra en el módulo :mod:" -"`xml.dom.minidom`. Es una implementación ligera del DOM de nivel 1 con " -"soporte para espacios de nombres XML. Las funciones :func:`parse` y :func:" -"`parseString` se proporcionan para generar un árbol DOM::" +"La implementación del DOM incluida con Python se encuentra en el módulo :mod:" +"`xml.dom.minidom`. Es una implementación liviana del DOM de nivel 1 con " +"soporte para espacios de nombres XML. Las funciones de conveniencia :func:`!" +"parse` y :func:`!parseString` se proporcionan para generar un árbol DOM:" #: ../Doc/whatsnew/2.0.rst:961 msgid "" "from xml.dom import minidom\n" "doc = minidom.parse('hamlet.xml')" msgstr "" +"from xml.dom import minidom\n" +"doc = minidom.parse('hamlet.xml')" #: ../Doc/whatsnew/2.0.rst:964 -#, fuzzy msgid "" "``doc`` is a :class:`!Document` instance. :class:`!Document`, like all the " "other DOM classes such as :class:`!Element` and :class:`Text`, is a subclass " @@ -2087,15 +2174,15 @@ msgid "" "and :class:`!Document` instances have a method to find all child elements " "with a given tag name. Continuing from the previous 2-line example::" msgstr "" -"``doc`` es una instancia de :class:`Document`. El :class:`Document`, al " -"igual que el resto de clases del DOM como el :class:`Element` y el :class:" -"`Text`, es una subclase de la clase base :class:`Node`. Por lo tanto, todos " -"los nodos de un árbol DOM soportan ciertos métodos comunes, como :meth:" -"`toxml` que retorna una cadena que contiene la representación XML del nodo y " -"sus hijos. Cada clase también tiene métodos especiales propios; por ejemplo, " -"las instancias :class:`Element` y :class:`Document` tienen un método para " -"encontrar todos los elementos hijos con un nombre de etiqueta dado. " -"Continuando con el ejemplo anterior de 2 líneas::" +"``doc`` es una instancia de :class:`!Document`. :class:`!Document`, al igual " +"que todas las demás clases DOM como :class:`!Element` y :class:`Text`, es " +"una subclase de la clase base :class:`!Node`. Por lo tanto, todos los nodos " +"de un árbol DOM admiten ciertos métodos comunes, como :meth:`!toxml`, que " +"devuelve una cadena que contiene la representación XML del nodo y sus hijos. " +"Cada clase también tiene sus propios métodos especiales; por ejemplo, las " +"instancias :class:`!Element` y :class:`!Document` tienen un método para " +"encontrar todos los elementos secundarios con un nombre de etiqueta " +"determinado. Continuando con el ejemplo anterior de 2 líneas:" #: ../Doc/whatsnew/2.0.rst:973 msgid "" @@ -2103,6 +2190,9 @@ msgid "" "print perslist[0].toxml()\n" "print perslist[1].toxml()" msgstr "" +"perslist = doc.getElementsByTagName( 'PERSONA' )\n" +"print perslist[0].toxml()\n" +"print perslist[1].toxml()" #: ../Doc/whatsnew/2.0.rst:977 msgid "For the *Hamlet* XML file, the above few lines output::" @@ -2114,6 +2204,8 @@ msgid "" "CLAUDIUS, king of Denmark. \n" "HAMLET, son to the late, and nephew to the present king." msgstr "" +"CLAUDIO, rey de Dinamarca. \n" +"HAMLET, hijo del difunto rey y sobrino del actual." #: ../Doc/whatsnew/2.0.rst:982 msgid "" @@ -2139,15 +2231,25 @@ msgid "" "# the third child) before the 20th child.\n" "root.insertBefore( root.childNodes[0], root.childNodes[20] )" msgstr "" +"root = doc.documentElement\n" +"\n" +"# Eliminar el primer hijo\n" +"root.removeChild( root.childNodes[0] )\n" +"\n" +"# Mover el nuevo primer hijo al final\n" +"root.appendChild( root.childNodes[0] )\n" +"\n" +"# Insertar el nuevo primer hijo (originalmente,\n" +"# el tercer hijo) antes del hijo número 20.\n" +"root.insertBefore( root.childNodes[0], root.childNodes[20] )" #: ../Doc/whatsnew/2.0.rst:997 -#, fuzzy msgid "" "Again, I will refer you to the Python documentation for a complete listing " "of the different :class:`!Node` classes and their various methods." msgstr "" "Una vez más, te remito a la documentación de Python para obtener una lista " -"completa de las diferentes clases :class:`Node` y sus diversos métodos." +"completa de las diferentes clases :class:`!Node` y sus diversos métodos." #: ../Doc/whatsnew/2.0.rst:1002 msgid "Relationship to PyXML" @@ -2199,17 +2301,15 @@ msgid "The xmlproc validating parser, written by Lars Marius Garshol." msgstr "El parser de validación xmlproc, escrito por Lars Marius Garshol." #: ../Doc/whatsnew/2.0.rst:1023 -#, fuzzy msgid "The :mod:`!sgmlop` parser accelerator module, written by Fredrik Lundh." msgstr "" -"El módulo acelerador del parser :mod:`sgmlop`, escrito por Fredrik Lundh." +"El módulo acelerador del parser :mod:`!sgmlop`, escrito por Fredrik Lundh." #: ../Doc/whatsnew/2.0.rst:1029 msgid "Module changes" msgstr "Cambios en los módulos" #: ../Doc/whatsnew/2.0.rst:1031 -#, fuzzy msgid "" "Lots of improvements and bugfixes were made to Python's extensive standard " "library; some of the affected modules include :mod:`readline`, :mod:" @@ -2218,15 +2318,14 @@ msgid "" "mod:`random`, :mod:`shelve`, and :mod:`!nntplib`. Consult the CVS logs for " "the exact patch-by-patch details." msgstr "" -"Se han realizado muchas mejoras y correcciones de errores en la extensa " -"biblioteca estándar de Python; algunos de los módulos afectados son :mod:" -"`readline`, :mod:`ConfigParser`, :mod:`cgi`, :mod:`calendar`, :mod:`posix`, :" -"mod:`readline`, :mod:`xmllib`, :mod:`aifc`, :mod:`chunk, wave`, :mod:" -"`random`, :mod:`shelve`, y :mod:`nntplib`. Consulte los registros de CVS " -"para conocer los detalles exactos parche por parche." +"Se realizaron muchas mejoras y correcciones de errores en la extensa " +"biblioteca estándar de Python; algunos de los módulos afectados incluyen :" +"mod:`readline`, :mod:`ConfigParser `, :mod:`!cgi`, :mod:" +"`calendar`, :mod:`posix`, :mod:`readline`, :mod:`!xmllib`, :mod:`!aifc`, :" +"mod:`!chunk`, :mod:`wave`, :mod:`random`, :mod:`shelve` y :mod:`!nntplib`. " +"Consulte los registros CVS para obtener detalles exactos de cada parche." #: ../Doc/whatsnew/2.0.rst:1037 -#, fuzzy msgid "" "Brian Gallew contributed OpenSSL support for the :mod:`socket` module. " "OpenSSL is an implementation of the Secure Socket Layer, which encrypts the " @@ -2237,36 +2336,35 @@ msgid "" "and :mod:`urllib` modules were also changed to support ``https://`` URLs, " "though no one has implemented FTP or SMTP over SSL." msgstr "" -"Brian Gallew ha contribuido al soporte de OpenSSL para el módulo :mod:" -"`socket`. OpenSSL es una implementación de Secure Socket Layer, que encripta " -"los datos que se envían a través de un socket. Al compilar Python, puedes " -"editar :file:`Modules/Setup` para incluir el soporte de SSL, que añade una " -"función adicional al módulo :mod:`socket`: ``socket.ssl(socket, keyfile, " -"certfile)``, que toma un objeto socket y retorna un socket SSL. Los módulos :" -"mod:`httplib` y :mod:`urllib` también han sido modificados para soportar " -"URLs ``https://``, aunque nadie ha implementado FTP o SMTP sobre SSL." +"Brian Gallew contribuyó con la compatibilidad con OpenSSL para el módulo :" +"mod:`socket`. OpenSSL es una implementación de la capa de sockets seguros, " +"que cifra los datos que se envían a través de un socket. Al compilar Python, " +"puede editar :file:`Modules/Setup` para incluir compatibilidad con SSL, lo " +"que agrega una función adicional al módulo :mod:`socket`: ``socket." +"ssl(socket, keyfile, certfile)``, que toma un objeto de socket y devuelve un " +"socket SSL. Los módulos :mod:`httplib ` y :mod:`urllib` también se " +"modificaron para admitir las URL de ``https://``, aunque nadie ha " +"implementado FTP o SMTP sobre SSL." #: ../Doc/whatsnew/2.0.rst:1046 msgid "" "The :mod:`httplib ` module has been rewritten by Greg Stein to support " "HTTP/1.1." msgstr "" +"Greg Stein ha reescrito el módulo :mod:`httplib ` para admitir " +"HTTP/1.1." #: ../Doc/whatsnew/2.0.rst:1048 -#, fuzzy msgid "" "Backward compatibility with the 1.5 version of :mod:`!httplib` is provided, " "though using HTTP/1.1 features such as pipelining will require rewriting " "code to use a different set of interfaces." msgstr "" -"El módulo :mod:`httplib` ha sido reescrito por Greg Stein para soportar " -"HTTP/1.1. Se proporciona compatibilidad con la versión 1.5 de :mod:" -"`httplib`, aunque el uso de las características de HTTP/1.1, como el " -"pipelining, requerirá reescribir el código para utilizar un conjunto " -"diferente de interfaces." +"Se proporciona compatibilidad con versiones anteriores de la versión 1.5 de :" +"mod:`!httplib`, aunque el uso de funciones HTTP/1.1 como la canalización " +"requerirá reescribir el código para usar un conjunto diferente de interfaces." #: ../Doc/whatsnew/2.0.rst:1052 -#, fuzzy msgid "" "The :mod:`!Tkinter` module now supports Tcl/Tk version 8.1, 8.2, or 8.3, and " "support for the older 7.x versions has been dropped. The Tkinter module now " @@ -2274,12 +2372,13 @@ msgid "" "contributed an optimization which makes operations like ``create_line`` and " "``create_polygon`` much faster, especially when using lots of coordinates." msgstr "" -"El módulo :mod:`Tkinter` soporta ahora la versión 8.1, 8.2 o 8.3 de Tcl/Tk, " -"y se ha eliminado el soporte para las versiones 7.x más antiguas. El módulo " -"Tkinter ahora soporta la visualización de cadenas Unicode en los widgets Tk. " -"Además, Fredrik Lundh ha contribuido con una optimización que hace que " -"operaciones como ``create_line`` y ``create_polygon`` sean mucho más " -"rápidas, especialmente cuando se utilizan muchas coordenadas." +"El módulo :mod:`!Tkinter` ahora es compatible con las versiones 8.1, 8.2 u " +"8.3 de Tcl/Tk y se ha eliminado la compatibilidad con las versiones 7.x " +"anteriores. El módulo Tkinter ahora es compatible con la visualización de " +"cadenas Unicode en widgets Tk. Además, Fredrik Lundh contribuyó con una " +"optimización que hace que operaciones como ``create_line`` y " +"``create_polygon`` sean mucho más rápidas, especialmente cuando se utilizan " +"muchas coordenadas." #: ../Doc/whatsnew/2.0.rst:1058 msgid "" @@ -2342,24 +2441,22 @@ msgstr "" "la función a llamar al salir. (Contribución de Skip Montanaro)" #: ../Doc/whatsnew/2.0.rst:1087 -#, fuzzy msgid "" ":mod:`codecs`, :mod:`!encodings`, :mod:`unicodedata`: Added as part of the " "new Unicode support." msgstr "" -":mod:`codecs`, :mod:`encodings`, :mod:`unicodedata`: Añadidos como parte " +":mod:`codecs`, :mod:`!encodings`, :mod:`unicodedata`: Añadidos como parte " "del nuevo soporte de Unicode." #: ../Doc/whatsnew/2.0.rst:1090 -#, fuzzy msgid "" ":mod:`filecmp`: Supersedes the old :mod:`!cmp`, :mod:`!cmpcache` and :mod:`!" "dircmp` modules, which have now become deprecated. (Contributed by Gordon " "MacMillan and Moshe Zadka.)" msgstr "" -":mod:`filecmp`: Sustituye a los antiguos módulos :mod:`cmp`, :mod:`cmpcache` " -"y :mod:`dircmp`, que han quedado obsoletos. (Contribución de Gordon " -"MacMillan y Moshe Zadka)" +":mod:`filecmp`: Sustituye a los antiguos módulos :mod:`!cmp`, :mod:`!" +"cmpcache` y :mod:`!dircmp`, que han quedado obsoletos. (Contribución de " +"Gordon MacMillan y Moshe Zadka)" #: ../Doc/whatsnew/2.0.rst:1094 msgid "" @@ -2376,14 +2473,13 @@ msgstr "" "Peter Funk y James Henstridge)" #: ../Doc/whatsnew/2.0.rst:1099 -#, fuzzy msgid "" ":mod:`!linuxaudiodev`: Support for the :file:`/dev/audio` device on Linux, a " "twin to the existing :mod:`!sunaudiodev` module. (Contributed by Peter " "Bosch, with fixes by Jeremy Hylton.)" msgstr "" -":mod:`linuxaudiodev`: Soporte para el dispositivo :file:`/dev/audio` en " -"Linux, un gemelo del módulo existente :mod:`sunaudiodev`. (Contribuido por " +":mod:`!linuxaudiodev`: Soporte para el dispositivo :file:`/dev/audio` en " +"Linux, un gemelo del módulo existente :mod:`!sunaudiodev`. (Contribuido por " "Peter Bosch, con correcciones de Jeremy Hylton)" #: ../Doc/whatsnew/2.0.rst:1103 @@ -2403,16 +2499,14 @@ msgstr "" "Sam Rushing, con algunas extensiones de A.M. Kuchling)" #: ../Doc/whatsnew/2.0.rst:1109 -#, fuzzy msgid "" ":mod:`!pyexpat`: An interface to the Expat XML parser. (Contributed by Paul " "Prescod.)" msgstr "" -":mod:`pyexpat`: Una interfaz para el analizador XML de Expat. (Contribuido " +":mod:`!pyexpat`: Una interfaz para el analizador XML de Expat. (Contribuido " "por Paul Prescod.)" #: ../Doc/whatsnew/2.0.rst:1112 -#, fuzzy msgid "" ":mod:`robotparser `: Parse a :file:`robots.txt` file, " "which is used for writing web spiders that politely avoid certain areas of a " @@ -2420,12 +2514,12 @@ msgid "" "builds a set of rules from it, and can then answer questions about the " "fetchability of a given URL. (Contributed by Skip Montanaro.)" msgstr "" -":mod:`robotparser`: Analiza un archivo :file:`robots.txt`, que se utiliza " -"para escribir arañas web que evitan amablemente ciertas áreas de un sitio " -"web. El analizador acepta el contenido de un archivo :file:`robots.txt`, " -"construye un conjunto de reglas a partir de él y puede responder a preguntas " -"sobre la capacidad de búsqueda de una URL determinada. (Contribución de Skip " -"Montanaro)" +":mod:`robotparser `: Analiza un archivo :file:`robots." +"txt`, que se utiliza para escribir arañas web que evitan amablemente ciertas " +"áreas de un sitio web. El analizador acepta el contenido de un archivo :file:" +"`robots.txt`, construye un conjunto de reglas a partir de él y puede " +"responder a preguntas sobre la capacidad de búsqueda de una URL determinada. " +"(Contribución de Skip Montanaro)" #: ../Doc/whatsnew/2.0.rst:1118 msgid "" @@ -2436,13 +2530,12 @@ msgstr "" "en busca de sangrías ambiguas. (Contribuido por Tim Peters.)" #: ../Doc/whatsnew/2.0.rst:1121 -#, fuzzy msgid "" ":mod:`!UserString`: A base class useful for deriving objects that behave " "like strings." msgstr "" -":mod:`UserString`: Una clase base útil para derivar objetos que se comportan " -"como cadenas." +":mod:`!UserString`: Una clase base útil para derivar objetos que se " +"comportan como cadenas." #: ../Doc/whatsnew/2.0.rst:1124 msgid "" @@ -2466,7 +2559,6 @@ msgstr "" "Fred)" #: ../Doc/whatsnew/2.0.rst:1133 -#, fuzzy msgid "" ":mod:`_winreg `: An interface to the Windows registry. :mod:`!" "_winreg` is an adaptation of functions that have been part of PythonWin " @@ -2474,11 +2566,11 @@ msgid "" "to support Unicode. :mod:`!_winreg` was written by Bill Tutt and Mark " "Hammond." msgstr "" -":mod:`_winreg`: Una interfaz para el registro de Windows. :mod:`_winreg` es " -"una adaptación de las funciones que han formado parte de PythonWin desde " -"1995, pero ahora se ha añadido a la distribución principal, y se ha mejorado " -"para soportar Unicode. :mod:`_winreg` fue escrito por Bill Tutt y Mark " -"Hammond." +":mod:`_winreg `: Una interfaz para el registro de Windows. :mod:`!" +"_winreg` es una adaptación de las funciones que han formado parte de " +"PythonWin desde 1995, pero ahora se ha añadido a la distribución principal, " +"y se ha mejorado para soportar Unicode. :mod:`!_winreg` fue escrito por Bill " +"Tutt y Mark Hammond." #: ../Doc/whatsnew/2.0.rst:1138 msgid "" @@ -2494,17 +2586,16 @@ msgstr "" "de James C. Ahlstrom.)" #: ../Doc/whatsnew/2.0.rst:1143 -#, fuzzy msgid "" ":mod:`!imputil`: A module that provides a simpler way for writing customized " "import hooks, in comparison to the existing :mod:`!ihooks` module. " "(Implemented by Greg Stein, with much discussion on python-dev along the " "way.)" msgstr "" -":mod:`imputil`: Un módulo que proporciona una forma más sencilla de escribir " -"ganchos de importación personalizados, en comparación con el módulo :mod:" -"`ihooks` existente. (Implementado por Greg Stein, con mucha discusión en " -"python-dev a lo largo del camino)" +":mod:`!imputil`: Un módulo que proporciona una forma más sencilla de " +"escribir ganchos de importación personalizados, en comparación con el " +"módulo :mod:`!ihooks` existente. (Implementado por Greg Stein, con mucha " +"discusión en python-dev a lo largo del camino)" #: ../Doc/whatsnew/2.0.rst:1151 msgid "IDLE Improvements" @@ -2588,7 +2679,6 @@ msgid "Deleted and Deprecated Modules" msgstr "Módulos eliminados y obsoletos" #: ../Doc/whatsnew/2.0.rst:1187 -#, fuzzy msgid "" "A few modules have been dropped because they're obsolete, or because there " "are now better ways to do the same thing. The :mod:`!stdwin` module is " @@ -2596,12 +2686,11 @@ msgid "" "developed." msgstr "" "Se han eliminado algunos módulos porque son obsoletos, o porque ahora hay " -"mejores formas de hacer lo mismo. El módulo :mod:`stdwin` ha desaparecido; " +"mejores formas de hacer lo mismo. El módulo :mod:`!stdwin` ha desaparecido; " "era para un conjunto de herramientas de ventanas independientes de la " "plataforma que ya no se desarrolla." #: ../Doc/whatsnew/2.0.rst:1191 -#, fuzzy msgid "" "A number of modules have been moved to the :file:`lib-old` subdirectory: :" "mod:`!cmp`, :mod:`!cmpcache`, :mod:`!dircmp`, :mod:`!dump`, :mod:`!find`, :" @@ -2611,12 +2700,12 @@ msgid "" "path`` to get them back, but you're encouraged to update any code that " "uses these modules." msgstr "" -"Varios módulos han sido trasladados al subdirectorio :file:`lib-old`: :mod:" -"`cmp`, :mod:`cmpcache`, :mod:`dircmp`, :mod:`dump`, :mod:`find`, :mod:" -"`grep`, :mod:`packmail`, :mod:`poly`, :mod:`util`, :mod:`whatsound`, :mod:" -"`zmod`. Si tiene código que depende de un módulo que ha sido movido a :file:" -"`lib-old`, puede simplemente añadir ese directorio a ``sys.path`` para " -"recuperarlo, pero se recomienda actualizar cualquier código que utilice " +"Se han movido varios módulos al subdirectorio :file:`lib-old`: :mod:`!cmp`, :" +"mod:`!cmpcache`, :mod:`!dircmp`, :mod:`!dump`, :mod:`!find`, :mod:`!grep`, :" +"mod:`!packmail`, :mod:`!poly`, :mod:`!util`, :mod:`!whatsound`, :mod:`!" +"zmod`. Si tiene código que depende de un módulo que se ha movido a :file:" +"`lib-old`, puede simplemente agregar ese directorio a ``sys.path`` para " +"recuperarlo, pero se le recomienda que actualice cualquier código que use " "estos módulos." #: ../Doc/whatsnew/2.0.rst:1200