Skip to content

Commit eb3ce90

Browse files
Update translations
1 parent 0082262 commit eb3ce90

File tree

4 files changed

+161
-8
lines changed

4 files changed

+161
-8
lines changed

library/email.examples.po

Lines changed: 87 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ msgid ""
1111
msgstr ""
1212
"Project-Id-Version: Python 3.13\n"
1313
"Report-Msgid-Bugs-To: \n"
14-
"POT-Creation-Date: 2025-04-11 14:19+0000\n"
14+
"POT-Creation-Date: 2025-05-23 14:55+0000\n"
1515
"PO-Revision-Date: 2025-05-08 05:09+0000\n"
1616
"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>, 2025\n"
1717
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/python-doc/"
@@ -751,6 +751,92 @@ msgid ""
751751
"# Of course, there are lots of email messages that could break this simple\n"
752752
"# minded program, but it will handle the most common ones.\n"
753753
msgstr ""
754+
"import os\n"
755+
"import sys\n"
756+
"import tempfile\n"
757+
"import mimetypes\n"
758+
"import webbrowser\n"
759+
"\n"
760+
"# Importa os módulos de e-mail que precisaremos\n"
761+
"from email import policy\n"
762+
"from email.parser import BytesParser\n"
763+
"\n"
764+
"\n"
765+
"def magic_html_parser(html_text, partfiles):\n"
766+
" \"\"\"Retorna HTML com segurança e link para partfiles.\n"
767+
"\n"
768+
" Reescreve os atributos href=\"cid:....\" para apontar aos arquivos em "
769+
"partfiles.\n"
770+
" Embora não seja trivial, isso deve ser possível usando html.parser.\n"
771+
" \"\"\"\n"
772+
" raise NotImplementedError(\"Add the magic needed\")\n"
773+
"\n"
774+
"\n"
775+
"# Em um programa real, você pegaria o nome de arquivo a partir dos "
776+
"argumentos.\n"
777+
"with open('outgoing.msg', 'rb') as fp:\n"
778+
" msg = BytesParser(policy=policy.default).parse(fp)\n"
779+
"\n"
780+
"# Agora os itens de cabeçalho podem ser acessados como um dicionário e\n"
781+
"# qualquer caractere não-ASCII será convertido para unicode:\n"
782+
"print('To:', msg['to'])\n"
783+
"print('From:', msg['from'])\n"
784+
"print('Subject:', msg['subject'])\n"
785+
"\n"
786+
"# Se quisermos imprimir uma prévia do conteúdo da mensagem, podemos\n"
787+
"# extrair o conteúdo menos formatado e imprimir as três primeiras linhas.\n"
788+
"# É claro que, se a mensagem não tiver uma parte de texto simples,\n"
789+
"# imprimir as três primeiras linhas de HTML provavelmente será inútil,\n"
790+
"# mas este é apenas um exemplo conceitual.\n"
791+
"simplest = msg.get_body(preferencelist=('plain', 'html'))\n"
792+
"print()\n"
793+
"print(''.join(simplest.get_content().splitlines(keepends=True)[:3]))\n"
794+
"\n"
795+
"ans = input(\"View full message?\")\n"
796+
"if ans.lower()[0] == 'n':\n"
797+
" sys.exit()\n"
798+
"\n"
799+
"# Podemos extrair a alternativa richest para exibi-la:\n"
800+
"richest = msg.get_body()\n"
801+
"partfiles = {}\n"
802+
"if richest['content-type'].maintype == 'text':\n"
803+
" if richest['content-type'].subtype == 'plain':\n"
804+
" for line in richest.get_content().splitlines():\n"
805+
" print(line)\n"
806+
" sys.exit()\n"
807+
" elif richest['content-type'].subtype == 'html':\n"
808+
" body = richest\n"
809+
" else:\n"
810+
" print(\"Don't know how to display {}\".format(richest."
811+
"get_content_type()))\n"
812+
" sys.exit()\n"
813+
"elif richest['content-type'].content_type == 'multipart/related':\n"
814+
" body = richest.get_body(preferencelist=('html'))\n"
815+
" for part in richest.iter_attachments():\n"
816+
" fn = part.get_filename()\n"
817+
" if fn:\n"
818+
" extension = os.path.splitext(part.get_filename())[1]\n"
819+
" else:\n"
820+
" extension = mimetypes.guess_extension(part.get_content_type())\n"
821+
" with tempfile.NamedTemporaryFile(suffix=extension, delete=False) as "
822+
"f:\n"
823+
" f.write(part.get_content())\n"
824+
" # remove novamente o <> para ir da forma email de cid para "
825+
"html.\n"
826+
" partfiles[part['content-id'][1:-1]] = f.name\n"
827+
"else:\n"
828+
" print(\"Don't know how to display {}\".format(richest."
829+
"get_content_type()))\n"
830+
" sys.exit()\n"
831+
"with tempfile.NamedTemporaryFile(mode='w', delete=False) as f:\n"
832+
" f.write(magic_html_parser(body.get_content(), partfiles))\n"
833+
"webbrowser.open(f.name)\n"
834+
"os.remove(f.name)\n"
835+
"for fn in partfiles.values():\n"
836+
" os.remove(fn)\n"
837+
"\n"
838+
"# É claro que há muitas mensagens de e-mail que podem quebrar\n"
839+
"# esse simples programa, mas ele lidará com as mais comuns.\n"
754840

755841
#: ../../library/email.examples.rst:52
756842
msgid "Up to the prompt, the output from the above is:"

potodo.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868

6969

7070

71-
# library (64.50% done)
71+
# library (64.51% done)
7272

7373
- array.po 84 / 86 ( 97.0% translated).
7474
- asyncio-dev.po 16 / 54 ( 29.0% translated).
@@ -96,7 +96,6 @@
9696
- email.compat32-message.po 6 / 115 ( 5.0% translated).
9797
- email.contentmanager.po 9 / 42 ( 21.0% translated).
9898
- email.errors.po 6 / 26 ( 23.0% translated).
99-
- email.examples.po 19 / 20 ( 95.0% translated).
10099
- email.header.po 4 / 40 ( 10.0% translated).
101100
- email.headerregistry.po 12 / 111 ( 10.0% translated).
102101
- email.message.po 7 / 110 ( 6.0% translated).
@@ -194,7 +193,7 @@
194193
- cmdline.po 248 / 249 ( 99.0% translated).
195194

196195

197-
# whatsnew (46.27% done)
196+
# whatsnew (46.38% done)
198197

199198
- 2.3.po 327 / 387 ( 84.0% translated).
200199
- 2.4.po 266 / 319 ( 83.0% translated).
@@ -208,8 +207,8 @@
208207
- 3.5.po 126 / 578 ( 21.0% translated).
209208
- 3.6.po 237 / 544 ( 43.0% translated).
210209
- 3.7.po 252 / 568 ( 44.0% translated).
211-
- changelog.po 2451 / 12361 ( 19.0% translated).
210+
- changelog.po 2476 / 12361 ( 20.0% translated).
212211

213212

214-
# TOTAL (61.50% done)
213+
# TOTAL (61.54% done)
215214

stats.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"completion": "61.5%", "translated": 46756, "entries": 76022, "updated_at": "2025-06-03T23:30:40+00:00Z"}
1+
{"completion": "61.54%", "translated": 46782, "entries": 76022, "updated_at": "2025-06-04T23:30:33+00:00Z"}

whatsnew/changelog.po

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,14 +110,18 @@ msgid ""
110110
"synchronize the parent process with the child process: wait until the child "
111111
"process starts sleeping. Patch by Victor Stinner."
112112
msgstr ""
113+
":gh:`133744`: Corrigido o teste de interrupção de multiprocessamento. "
114+
"Adicionado um evento para sincronizar o processo pai com o processo filho: "
115+
"aguardar até que o processo filho comece a hibernar. Patch por Victor "
116+
"Stinner."
113117

114118
#: ../NEWS:29
115119
msgid ""
116120
":gh:`133639`: Fix ``TestPyReplAutoindent.test_auto_indent_default()`` "
117121
"doesn't run ``input_code``."
118122
msgstr ""
119123
":gh:`133639`: Corrige ``TestPyReplAutoindent.test_auto_indent_default()`` "
120-
"não executa ``input_code``."
124+
"não executar ``input_code``."
121125

122126
#: ../NEWS:32
123127
msgid ""
@@ -157,13 +161,18 @@ msgid ""
157161
":gh:`133767`: Fix use-after-free in the \"unicode-escape\" decoder with a "
158162
"non-\"strict\" error handler."
159163
msgstr ""
164+
":gh:`133767`: Corrige uso após liberação no decodificador \"unicode-escape\" "
165+
"com um tratador de erros não \"estrito\"."
160166

161167
#: ../NEWS:45
162168
msgid ""
163169
":gh:`128840`: Short-circuit the processing of long IPv6 addresses early in :"
164170
"mod:`ipaddress` to prevent excessive memory consumption and a minor denial-"
165171
"of-service."
166172
msgstr ""
173+
":gh:`128840`: Faz um curto-circuito no processamento de endereços IPv6 "
174+
"longos no início de :mod:`ipaddress` para evitar consumo excessivo de "
175+
"memória e uma pequena negação de serviço."
167176

168177
#: ../NEWS:50 ../NEWS:411 ../NEWS:790 ../NEWS:1155 ../NEWS:1832 ../NEWS:2014
169178
#: ../NEWS:2273 ../NEWS:2386 ../NEWS:2626 ../NEWS:2871 ../NEWS:3299
@@ -208,65 +217,93 @@ msgid ""
208217
":gh:`80334`: :func:`multiprocessing.freeze_support` now checks for work on "
209218
"any \"spawn\" start method platform rather than only on Windows."
210219
msgstr ""
220+
":gh:`80334`: :func:`multiprocessing.freeze_support` agora verifica o "
221+
"trabalho em qualquer plataforma de método de inicialização \"spawn\", em vez "
222+
"de apenas no Windows."
211223

212224
#: ../NEWS:60
213225
msgid ""
214226
":gh:`114177`: Fix :mod:`asyncio` to not close subprocess pipes which would "
215227
"otherwise error out when the event loop is already closed."
216228
msgstr ""
229+
":gh:`114177`: Corrige :mod:`asyncio` para não fechar encadeamentos de "
230+
"subprocesso, o que de outra forma geraria erro quando o laço de eventos já "
231+
"estivesse fechado."
217232

218233
#: ../NEWS:63
219234
msgid ""
220235
":gh:`134152`: Fixed :exc:`UnboundLocalError` that could occur during :mod:"
221236
"`email` header parsing if an expected trailing delimiter is missing in some "
222237
"contexts."
223238
msgstr ""
239+
":gh:`134152`: Corrigida :exc:`UnboundLocalError` que poderia ocorrer durante "
240+
"a análise do cabeçalho :mod:`email` se um delimitador final esperado "
241+
"estivesse faltando em alguns contextos."
224242

225243
#: ../NEWS:67
226244
msgid ""
227245
":gh:`62184`: Remove import of C implementation of :class:`io.FileIO` from "
228246
"Python implementation which has its own implementation"
229247
msgstr ""
248+
":gh:`62184`: Remove a importação da implementação C de :class:`io.FileIO` da "
249+
"implementação Python que tem sua própria implementação"
230250

231251
#: ../NEWS:70
232252
msgid ""
233253
":gh:`133982`: Emit :exc:`RuntimeWarning` in the Python implementation of :"
234254
"mod:`io` when the :term:`file-like object <file object>` is not closed "
235255
"explicitly in the presence of multiple I/O layers."
236256
msgstr ""
257+
":gh:`133982`: Emite :exc:`RuntimeWarning` na implementação Python de :mod:"
258+
"`io` quando o :term:`objeto arquivo ou similar <file object>` não for "
259+
"fechado explicitamente na presença de múltiplas camadas de E/S."
237260

238261
#: ../NEWS:74
239262
msgid ""
240263
":gh:`133890`: The :mod:`tarfile` module now handles :exc:"
241264
"`UnicodeEncodeError` in the same way as :exc:`OSError` when cannot extract a "
242265
"member."
243266
msgstr ""
267+
":gh:`133890`: O módulo :mod:`tarfile` agora manipula :exc:"
268+
"`UnicodeEncodeError` da mesma forma que :exc:`OSError` quando não é possível "
269+
"extrair um membro."
244270

245271
#: ../NEWS:77
246272
msgid ""
247273
":gh:`134097`: Fix interaction of the new :term:`REPL` and :option:`-X "
248274
"showrefcount <-X>` command line option."
249275
msgstr ""
276+
":gh:`134097`: Corrige interação da :term:`REPL` e a nova opção de linha de "
277+
"comando :option:`-X showrefcount <-X>`."
250278

251279
#: ../NEWS:80
252280
msgid ""
253281
":gh:`133889`: The generated directory listing page in :class:`http.server."
254282
"SimpleHTTPRequestHandler` now only shows the decoded path component of the "
255283
"requested URL, and not the query and fragment."
256284
msgstr ""
285+
":gh:`133889`: A página de listagem de diretório gerada em :class:`http."
286+
"server.SimpleHTTPRequestHandler` agora mostra apenas o componente do caminho "
287+
"decodificado da URL solicitada, e não a consulta e o fragmento."
257288

258289
#: ../NEWS:84
259290
msgid ""
260291
":gh:`134098`: Fix handling paths that end with a percent-encoded slash "
261292
"(``%2f`` or ``%2F``) in :class:`http.server.SimpleHTTPRequestHandler`."
262293
msgstr ""
294+
":gh:`134098`: Corrige caminhos de manipulação que terminam com uma barra "
295+
"codificada em porcentagem (``%2f`` ou ``%2F``) em :class:`http.server."
296+
"SimpleHTTPRequestHandler`."
263297

264298
#: ../NEWS:87
265299
msgid ""
266300
":gh:`134062`: :mod:`ipaddress`: fix collisions in :meth:`~object.__hash__` "
267301
"for :class:`~ipaddress.IPv4Network` and :class:`~ipaddress.IPv6Network` "
268302
"objects."
269303
msgstr ""
304+
":gh:`134062`: :mod:`ipaddress`: corrige colisões em :meth:`~object.__hash__` "
305+
"para objetos :class:`~ipaddress.IPv4Network` e :class:`~ipaddress."
306+
"IPv6Network`."
270307

271308
#: ../NEWS:91
272309
msgid ""
@@ -287,12 +324,17 @@ msgid ""
287324
"negative file-descriptor in the Python implementation of :mod:`io` to match "
288325
"the C implementation."
289326
msgstr ""
327+
":gh:`71253`: Levanta :exc:`ValueError` em :func:`open` se *opener* retornar "
328+
"um descritor de arquivo negativo na implementação Python de :mod:`io` para "
329+
"corresponder à implementação C."
290330

291331
#: ../NEWS:105
292332
msgid ""
293333
":gh:`77057`: Fix handling of invalid markup declarations in :class:`html."
294334
"parser.HTMLParser`."
295335
msgstr ""
336+
":gh:`77057`: Corrige o tratamento de declarações de marcação inválidas em :"
337+
"class:`html.parser.HTMLParser`."
296338

297339
#: ../NEWS:108
298340
msgid ""
@@ -312,6 +354,11 @@ msgid ""
312354
"them, so results may change slightly, in rare cases of very small results, "
313355
"on Windows versions before 11."
314356
msgstr ""
357+
":gh:`132876`: ``ldexp()`` no Windows não arredonda resultados abaixo do "
358+
"normal antes do Windows 11, mas deveria. O invólucro de :func:`math.ldexp` "
359+
"do Python agora os arredonda, então os resultados podem mudar um pouco, em "
360+
"casos raros de resultados muito pequenos, em versões do Windows anteriores à "
361+
"11."
315362

316363
#: ../NEWS:118
317364
msgid ""
@@ -331,6 +378,9 @@ msgid ""
331378
"__deepcopy__ <object.__deepcopy__>` when the element is concurrently "
332379
"mutated. Patch by Bénédikt Tran."
333380
msgstr ""
381+
":gh:`133009`: :mod:`xml.etree.ElementTree`: Corrige uma falha em :meth:"
382+
"`Element.__deepcopy__ <object.__deepcopy__>` quando o elemento sofre mutação "
383+
"simultânea. Patch por Bénédikt Tran."
334384

335385
#: ../NEWS:127
336386
msgid ""
@@ -454,6 +504,8 @@ msgid ""
454504
":gh:`91555`: Ignore log messages generated during handling of log messages, "
455505
"to avoid deadlock or infinite recursion."
456506
msgstr ""
507+
":gh:`91555`: Ignora mensagens de log geradas durante o tratamento de "
508+
"mensagens de log para evitar impasse ou recursão infinita."
457509

458510
#: ../NEWS:175
459511
msgid ""
@@ -541,6 +593,8 @@ msgid ""
541593
":gh:`86155`: :meth:`html.parser.HTMLParser.close` no longer loses data when "
542594
"the ``<script>`` tag is not closed. Patch by Waylan Limberg."
543595
msgstr ""
596+
":gh:`86155`: :meth:`html.parser.HTMLParser.close` não perde mais dados "
597+
"quando a tag ``<script>`` não está fechada. Patch por Waylan Limberg."
544598

545599
#: ../NEWS:211
546600
msgid ""
@@ -648,25 +702,35 @@ msgid ""
648702
":gh:`134381`: Fix :exc:`RuntimeError` when using a not-started :class:"
649703
"`threading.Thread` after calling :func:`os.fork`"
650704
msgstr ""
705+
":gh:`134381`: Corrige :exc:`RuntimeError` ao usar um :class:`threading."
706+
"Thread` não iniciado após chamar :func:`os.fork`"
651707

652708
#: ../NEWS:240
653709
msgid ""
654710
":gh:`128066`: Fixes an edge case where PyREPL improperly threw an error when "
655711
"Python is invoked on a read only filesystem while trying to write history "
656712
"file entries."
657713
msgstr ""
714+
":gh:`128066`: Corrige um caso extremo em que o PyREPL levantava um erro "
715+
"incorretamente quando o Python era invocado em um sistema de arquivos "
716+
"somente leitura ao tentar gravar entradas no arquivo de histórico."
658717

659718
#: ../NEWS:244
660719
msgid ""
661720
":gh:`134100`: Fix a use-after-free bug that occurs when an imported module "
662721
"isn't in :data:`sys.modules` after its initial import. Patch by Nico-Posada."
663722
msgstr ""
723+
":gh:`134100`: Corrige um bug de uso após liberação que ocorre quando um "
724+
"módulo importado não está em :data:`sys.modules` após sua importação "
725+
"inicial. Patch por Nico-Posada."
664726

665727
#: ../NEWS:248
666728
msgid ""
667729
":gh:`133703`: Fix hashtable in dict can be bigger than intended in some "
668730
"situations."
669731
msgstr ""
732+
":gh:`133703`: Corrige que a tabela de hash no dicionário pode ser maior do "
733+
"que o pretendido em algumas situações."
670734

671735
#: ../NEWS:251
672736
msgid ""
@@ -736,6 +800,8 @@ msgid ""
736800
":gh:`132542`: Update :attr:`Thread.native_id <threading.Thread.native_id>` "
737801
"after :manpage:`fork(2)` to ensure accuracy. Patch by Noam Cohen."
738802
msgstr ""
803+
":gh:`132542`: Atualiza :attr:`Thread.native_id <threading.Thread.native_id>` "
804+
"após :manpage:`fork(2)` para garantir a precisão. Patch por Noam Cohen."
739805

740806
#: ../NEWS:280
741807
msgid ""
@@ -882,6 +948,8 @@ msgid ""
882948
":gh:`117088`: AIX linker don't support -h option, so avoid it through "
883949
"platform check"
884950
msgstr ""
951+
":gh:`117088`: O ligador AIX não oferece suporte à opção -h, portanto, evita-"
952+
"a por meio da verificação da plataforma"
885953

886954
#: ../NEWS:328
887955
msgid ""

0 commit comments

Comments
 (0)