Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b379b4e

Browse files
committed
Merge branch '3.7' of https://github.com/PyCampES/python-docs-es into claudia_dev_py37
2 parents d19e206 + 5b04cda commit b379b4e

File tree

9 files changed

+451
-270
lines changed

9 files changed

+451
-270
lines changed

.overrides/CONTRIBUTING.rst

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ Actualmente se puede colaborar utilizando una de las dos siguientes formas que:
99
#. Utilizando el repositorio de GitHub y el editor poedit_
1010
#. Realizando traducciones directamente en Transifex
1111

12-
1312
.. note::
1413

1514
Si tienes cualquier duda, puedes enviarnos un email a [email protected].
@@ -20,14 +19,10 @@ Desde GitHub
2019

2120
#. Crea un fork del repositorio_.
2221

23-
.. _repositorio: https://github.com/PyCampES/python-docs-es
24-
2522
.. note::
2623

2724
Puedes consular la `ayuda oficial de GitHub`_, si lo deseas.
2825

29-
.. _ayuda oficial de GitHub: https://help.github.com/es/github/getting-started-with-github/fork-a-repo
30-
3126
#. Clona el repositorio::
3227

3328
git clone [email protected]:<TU-USUARIO>/python-docs-es.git
@@ -41,7 +36,7 @@ Desde GitHub
4136
git remote add upstream https://github.com/pycampes/python-docs-es.git
4237

4338
#. Crea una branch nueva en base al artículo en el que vayas a trabajar.
44-
39+
4540
git checkout -b traduccion_glosario
4641

4742
#. Mira que archivo necesita ser traducido. El siguiente comando te mostrará una lista de archivos y los porcentajes traducidos.
@@ -56,18 +51,15 @@ Desde GitHub
5651
git commit -am 'Traducido archivo {nombre de archivo}'
5752
git push origin traduccion_glosario
5853

54+
#. No olvides añadir tu nombre al archivo TRANSLATORS si no lo has hecho todavía.
55+
Los nombres se encuentran ordenados alfabéticamente por apellido.
56+
5957
#. Luego ve a tu página de GitHub y propone hacer un Pull Request
6058

6159
.. note::
6260

6361
Puedes consultar la `ayuda oficial de GitHub para crear un Pull Request`_ si lo deseas.
6462

65-
.. _ayuda oficial de GitHub para crear un Pull Request: https://help.github.com/es/github/collaborating-with-issues-and-pull-requests/about-pull-requests
66-
67-
68-
.. _poedit: https://poedit.net/
69-
70-
7163

7264
Previsualizar los cambios
7365
~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -100,3 +92,9 @@ Utilizando Transifex
10092
--------------------
10193

10294
ToDo.
95+
96+
97+
.. _repositorio: https://github.com/PyCampES/python-docs-es
98+
.. _ayuda oficial de GitHub: https://help.github.com/es/github/getting-started-with-github/fork-a-repo
99+
.. _ayuda oficial de GitHub para crear un Pull Request: https://help.github.com/es/github/collaborating-with-issues-and-pull-requests/about-pull-requests
100+
.. _poedit: https://poedit.net/

.overrides/translation-memory.rst

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
=======================
2+
Memoria de traducción
3+
=======================
4+
5+
6+
Esta página contiene la Memoria de Traducción, con todos los términos que hemos ido teniendo dudas,
7+
y coordinamos cuál era la mejor traducción dado el contexto.
8+
9+
Si quieres ver cómo se ha utilizado un término anteriormente, puedes utilizar la herramienta
10+
``find_in_po.py`` que muestra dónde se usó ese término: original y traducción lado a lado:
11+
12+
.. code-block:: text
13+
14+
$ python scripts/find_in_po.py docstring
15+
╒════════════════════════════════════════════════════════════════════════════════════════════════╤═══════════════════════════════════════════════════════════════════════════════════════════════╕
16+
│ The first statement of the function body can optionally be a string literal; this string │ La primera sentencia del cuerpo de la función puede ser opcionalmente una cadena de texto │
17+
│ literal is the function's documentation string, or :dfn:`docstring`. (More about docstrings │ literal; esta es la cadena de texto de documentación de la función, o :dfn:`docstring`. │
18+
│ can be found in the section :ref:`tut-docstrings`.) There are tools which use docstrings to │ (Puedes encontrar más acerca de docstrings en la sección :ref:`tut-docstrings`.). Existen │
19+
│ automatically produce online or printed documentation, or to let the user interactively browse │ herramientas que usan las ``docstrings`` para producir documentación imprimible o disponible │
20+
│ through code; it's good practice to include docstrings in code that you write, so make a habit │ en línea, o para dejar que los usuarios busquen interactivamente a través del código; es una │
21+
│ of it. │ buena práctica incluir ``docstrings`` en el código que escribes, y hacerlo un buen hábito. │
22+
├────────────────────────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────┤
23+
│ Here is an example of a multi-line docstring:: │ Este es un ejemplo de un ``docstring`` multi-línea:: │
24+
├────────────────────────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────┤
25+
│ Use docstrings. │ Usar ``docstrings``. │
26+
├────────────────────────────────────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────┤
27+
28+
29+
Éstos son las palabras que hemos coordinado hasta el momento:
30+
31+
32+
loop
33+
Bucle. ``tutorial/controlflow.po``
34+
35+
handle exception
36+
Gestionar excepción. ``tutorial/inputoutput.po``
37+
38+
docstring
39+
docstring. ``library/idle.po``

TRANSLATORS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1+
Raúl Cumplido (@raulcd)
12
Nicolás Demarchi (@gilgamezh)
23
Manuel Kaufmann (@humitos)
4+
Marco Richetta (@marcorichetta)

conf.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@
2121
sys.path.append(os.path.abspath('cpython/Doc'))
2222
from conf import *
2323

24-
version = '3.7'
25-
release = '3.7.7'
24+
# Call patchlevel with the proper path to get the version from
25+
# instead of hardcoding it
26+
import patchlevel
27+
version, release = patchlevel.get_header_version_info(os.path.abspath('cpython/Doc'))
2628

2729
project = 'Python en Español'
2830
copyright = '2001-%s, Python Software Foundation' % time.strftime('%Y')

scripts/find_in_po.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/usr/bin/env python3
2+
3+
import argparse
4+
from glob import glob
5+
import os
6+
from textwrap import fill
7+
8+
import regex
9+
import polib
10+
from tabulate import tabulate
11+
12+
13+
def find_in_po(pattern):
14+
table = []
15+
try:
16+
_, columns = os.popen("stty size", "r").read().split()
17+
available_width = int(columns) // 2 - 3
18+
except:
19+
available_width = 80 // 2 - 3
20+
21+
for file in glob("**/*.po"):
22+
pofile = polib.pofile(file)
23+
for entry in pofile:
24+
if entry.msgstr and regex.search(pattern, entry.msgid):
25+
table.append(
26+
[
27+
fill(entry.msgid, width=available_width),
28+
fill(entry.msgstr, width=available_width),
29+
]
30+
)
31+
print(tabulate(table, tablefmt="fancy_grid"))
32+
33+
34+
def parse_args():
35+
parser = argparse.ArgumentParser(description="Find translated words.")
36+
parser.add_argument("pattern")
37+
return parser.parse_args()
38+
39+
40+
def main():
41+
args = parse_args()
42+
find_in_po(args.pattern)
43+
44+
45+
if __name__ == "__main__":
46+
main()

tutorial/classes.po

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,21 @@
44
# [email protected] / https://mail.python.org/mailman3/lists/docs-es.python.org/
55
# Check https://github.com/PyCampES/python-docs-es/blob/3.7/TRANSLATORS to get the list of volunteers
66
#
7-
#, fuzzy
87
msgid ""
98
msgstr ""
109
"Project-Id-Version: Python 3.7\n"
1110
"Report-Msgid-Bugs-To: \n"
1211
"POT-Creation-Date: 2019-05-06 11:59-0400\n"
13-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14-
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
15-
"Language-Team: python-doc-es (https://mail.python.org/mailman3/lists/docs-es.python.org)\n"
12+
"PO-Revision-Date: 2020-05-04 13:28-0300\n"
13+
"Language-Team: python-doc-es (https://mail.python.org/mailman3/lists/docs-es."
14+
"python.org)\n"
1615
"MIME-Version: 1.0\n"
1716
"Content-Type: text/plain; charset=UTF-8\n"
1817
"Content-Transfer-Encoding: 8bit\n"
18+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
19+
"Last-Translator: Marco Richetta <[email protected]>\n"
20+
"Language: es\n"
21+
"X-Generator: Poedit 2.3\n"
1922

2023
#: ../Doc/tutorial/classes.rst:5
2124
msgid "Classes"
@@ -97,7 +100,7 @@ msgstr ""
97100
"(Sin haber una terminología universalmente aceptada sobre clases, haré uso "
98101
"ocasional de términos de Smalltalk y C++. Usaría términos de Modula-3, ya "
99102
"que su semántica orientada a objetos es más cercana a Python que C++, pero "
100-
"no espero que muchos lectores hayan escuchado hablar de él)."
103+
"no espero que muchos lectores hayan escuchado hablar de él.)"
101104

102105
#: ../Doc/tutorial/classes.rst:43
103106
msgid "A Word About Names and Objects"
@@ -276,22 +279,29 @@ msgstr ""
276279
#: ../Doc/tutorial/classes.rst:120
277280
msgid "the innermost scope, which is searched first, contains the local names"
278281
msgstr ""
282+
"el alcance más interno, que es inspeccionado primero, contiene los nombres "
283+
"locales"
279284

280285
#: ../Doc/tutorial/classes.rst:121
281286
msgid ""
282287
"the scopes of any enclosing functions, which are searched starting with the "
283288
"nearest enclosing scope, contains non-local, but also non-global names"
284289
msgstr ""
290+
"los alcances de las funciones que encierran a la función actual, que son "
291+
"inspeccionados a partir del alcance más cercano, contienen nombres no "
292+
"locales, pero también no globales"
285293

286294
#: ../Doc/tutorial/classes.rst:123
287295
msgid "the next-to-last scope contains the current module's global names"
288-
msgstr ""
296+
msgstr "el penúltimo alcance contiene nombres globales del módulo actual"
289297

290298
#: ../Doc/tutorial/classes.rst:124
291299
msgid ""
292300
"the outermost scope (searched last) is the namespace containing built-in "
293301
"names"
294302
msgstr ""
303+
"el alcance más externo (el último inspeccionado) es el espacio de nombres "
304+
"que contiene los nombres integrados"
295305

296306
#: ../Doc/tutorial/classes.rst:126
297307
msgid ""
@@ -719,6 +729,15 @@ msgid ""
719729
"from the instance object and the argument list, and the function object is "
720730
"called with this new argument list."
721731
msgstr ""
732+
"Si todavía no entiendes como funcionan los métodos, una mirada a su "
733+
"implementación quizás pueda aclarar dudas. Cuando un atributo sin datos de "
734+
"una instancia es referenciado, la clase de la instancia es accedida. Si el "
735+
"nombre indica un atributo de clase válido que sea un objeto función, se crea "
736+
"un objeto método empaquetando (apunta a) la instancia y al objeto función, "
737+
"juntados en un objeto abstracto: este es el objeto método. Cuando el objeto "
738+
"método es llamado con una lista de argumentos, se crea una nueva lista de "
739+
"argumentos a partir del objeto instancia y la lista de argumentos. "
740+
"Finalmente el objeto función es llamado con esta nueva lista de argumentos."
722741

723742
#: ../Doc/tutorial/classes.rst:403
724743
msgid "Class and Instance Variables"
@@ -1000,6 +1019,9 @@ msgid ""
10001019
"will be ``True`` only if ``obj.__class__`` is :class:`int` or some class "
10011020
"derived from :class:`int`."
10021021
msgstr ""
1022+
"Usar :func:`isinstance` para verificar el tipo de una instancia: "
1023+
"``isinstance(obj, int)`` será ``True`` sólo si ``obj.__class__`` es :class:"
1024+
"`int` o alguna clase derivada de :class:`int`."
10031025

10041026
#: ../Doc/tutorial/classes.rst:614
10051027
msgid ""
@@ -1008,6 +1030,10 @@ msgid ""
10081030
"``issubclass(float, int)`` is ``False`` since :class:`float` is not a "
10091031
"subclass of :class:`int`."
10101032
msgstr ""
1033+
"Usar :func:`issubclass` para verificar la herencia de clases: "
1034+
"``issubclass(bool, int)`` es ``True`` ya que :class:`bool` es una subclase "
1035+
"de :class:`int`. Sin embargo, ``issubclass(float, int)`` es ``False`` ya "
1036+
"que :class:`float` no es una subclase de :class:`int`."
10111037

10121038
#: ../Doc/tutorial/classes.rst:624
10131039
msgid "Multiple Inheritance"
@@ -1141,6 +1167,10 @@ msgid ""
11411167
"the ``Mapping`` class and ``_MappingSubclass__update`` in the "
11421168
"``MappingSubclass`` class respectively."
11431169
msgstr ""
1170+
"El ejemplo de arriba funcionaría incluso si ``MappingSubclass`` introdujera "
1171+
"un identificador ``__update`` ya que se reemplaza con ``_Mapping__update`` "
1172+
"en la clase ``Mapping`` y ``_MappingSubclass__update`` en la clase "
1173+
"``MappingSubclass`` respectivamente."
11441174

11451175
#: ../Doc/tutorial/classes.rst:714
11461176
msgid ""
@@ -1326,14 +1356,21 @@ msgid ""
13261356
"compact but less versatile than full generator definitions and tend to be "
13271357
"more memory friendly than equivalent list comprehensions."
13281358
msgstr ""
1359+
"Algunos generadores simples pueden ser escritos de manera concisa como "
1360+
"expresiones usando una sintaxis similar a las comprensiones de listas pero "
1361+
"con paréntesis en lugar de corchetes. Estas expresiones están hechas para "
1362+
"situaciones donde el generador es utilizado de inmediato por la función que "
1363+
"lo encierra. Las expresiones generadoras son más compactas pero menos "
1364+
"versátiles que las definiciones completas de generadores y tienden a ser más "
1365+
"amigables con la memoria que sus comprensiones de listas equivalentes."
13291366

13301367
#: ../Doc/tutorial/classes.rst:893
13311368
msgid "Examples::"
13321369
msgstr "Ejemplos::"
13331370

13341371
#: ../Doc/tutorial/classes.rst:917
13351372
msgid "Footnotes"
1336-
msgstr ""
1373+
msgstr "Notas al pie"
13371374

13381375
#: ../Doc/tutorial/classes.rst:918
13391376
msgid ""
@@ -1344,3 +1381,9 @@ msgid ""
13441381
"abstraction of namespace implementation, and should be restricted to things "
13451382
"like post-mortem debuggers."
13461383
msgstr ""
1384+
"Excepto por una cosa. Los objetos módulo tienen un atributo de sólo lectura "
1385+
"secreto llamado :attr:`~object.__dict__` que devuelve el diccionario usado "
1386+
"para implementar el espacio de nombres del módulo; el nombre :attr:~object."
1387+
"__dict__` es un atributo pero no un nombre global. Obviamente, usar esto "
1388+
"viola la abstracción de la implementación del espacio de nombres, y debería "
1389+
"ser restringido a cosas como depuradores post-mortem."

tutorial/controlflow.po

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Copyright (C) 2001-2020, Python Software Foundation
22
# This file is distributed under the same license as the Python package.
3-
# Maintained by the python-doc-es workteam.
3+
# Maintained by the python-doc-es workteam.
44
# [email protected] / https://mail.python.org/mailman3/lists/docs-es.python.org/
55
# Check https://github.com/PyCampES/python-docs-es/blob/3.7/TRANSLATORS to get the list of volunteers
66
#
@@ -9,15 +9,16 @@ msgstr ""
99
"Project-Id-Version: Python 3.7\n"
1010
"Report-Msgid-Bugs-To: \n"
1111
"POT-Creation-Date: 2019-05-06 11:59-0400\n"
12-
"PO-Revision-Date: 2019-12-22 12:00+0100\n"
12+
"PO-Revision-Date: 2020-05-05 11:40+0200\n"
1313
"MIME-Version: 1.0\n"
1414
"Content-Type: text/plain; charset=UTF-8\n"
1515
"Content-Transfer-Encoding: 8bit\n"
1616
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
17-
"Last-Translator: \n"
18-
"Language-Team: python-doc-es (https://mail.python.org/mailman3/lists/docs-es.python.org)\n"
17+
"Last-Translator: Raúl Cumplido <[email protected]>\n"
18+
"Language-Team: python-doc-es (https://mail.python.org/mailman3/lists/docs-es."
19+
"python.org)\n"
1920
"Language: es\n"
20-
"X-Generator: Poedit 2.2.4\n"
21+
"X-Generator: Poedit 2.3\n"
2122

2223
#: ../Doc/tutorial/controlflow.rst:5
2324
msgid "More Control Flow Tools"
@@ -185,14 +186,14 @@ msgid ""
185186
"Clauses on Loops"
186187
msgstr ""
187188
"Las sentencias :keyword:`break`, :keyword:`continue`, y :keyword:`else` en "
188-
"lazos"
189+
"bucles"
189190

190191
#: ../Doc/tutorial/controlflow.rst:160
191192
msgid ""
192193
"The :keyword:`break` statement, like in C, breaks out of the innermost "
193194
"enclosing :keyword:`for` or :keyword:`while` loop."
194195
msgstr ""
195-
"La sentencia :keyword:`break`, como en C, termina el lazo :keyword:`for` o :"
196+
"La sentencia :keyword:`break`, como en C, termina el bucle :keyword:`for` o :"
196197
"keyword:`while` más anidado."
197198

198199
#: ../Doc/tutorial/controlflow.rst:163
@@ -203,11 +204,11 @@ msgid ""
203204
"is terminated by a :keyword:`break` statement. This is exemplified by the "
204205
"following loop, which searches for prime numbers::"
205206
msgstr ""
206-
"Las sentencias de lazo pueden tener una cláusula`!else` que es ejecutada "
207+
"Las sentencias de bucle pueden tener una cláusula`!else` que es ejecutada "
207208
"cuando el lazo termina, luego de agotar la lista (con :keyword:`for`) o "
208209
"cuando la condición se hace falsa (con :keyword:`while`), pero no cuando el "
209-
"lazo es terminado con la sentencia :keyword:`break`. Se ejemplifica en el "
210-
"siguiente lazo, que busca números primos::"
210+
"bucle se termina con la sentencia :keyword:`break`. Se puede ver el ejemplo "
211+
"en el siguiente bucle, que busca números primos::"
211212

212213
#: ../Doc/tutorial/controlflow.rst:187
213214
msgid ""

0 commit comments

Comments
 (0)