Skip to content

Commit 12ec008

Browse files
[po] auto sync
1 parent 2209cbf commit 12ec008

3 files changed

Lines changed: 68 additions & 4 deletions

File tree

‎.stat.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"translation": "1.51%", "updated_at": "2025-12-09T13:38:10Z"}
1+
{"translation": "1.52%", "updated_at": "2025-12-09T15:28:10Z"}

‎tutorial/stdlib2.mo‎

6.74 KB
Binary file not shown.

‎tutorial/stdlib2.po‎

Lines changed: 67 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ msgid ""
1212
msgstr ""
1313
"Project-Id-Version: Python 3.14\n"
1414
"Report-Msgid-Bugs-To: \n"
15-
"POT-Creation-Date: 2025-12-07 14:13+0000\n"
15+
"POT-Creation-Date: 2025-12-09 14:17+0000\n"
1616
"PO-Revision-Date: 2025-09-16 00:02+0000\n"
1717
"Last-Translator: Dmitry Luschan, 2025\n"
1818
"Language-Team: Russian (https://app.transifex.com/python-doc/teams/5390/ru/)\n"
@@ -210,6 +210,12 @@ msgid ""
210210
":meth:`~string.Template.safe_substitute` method may be more appropriate --- "
211211
"it will leave placeholders unchanged if data is missing::"
212212
msgstr ""
213+
"Метод :meth:`~string.Template.substitute` выбрасывает исключение "
214+
":exc:`KeyError`, когда заполнитель не предоставлен в словаре или именованном"
215+
" аргументе. Для приложений вроде массовой рассылки, где предоставленные "
216+
"пользователем данные могут быть неполными, метод "
217+
":meth:`~string.Template.safe_substitute` может быть более подходящим — он "
218+
"оставит заполнители без изменений, если данные отсутствуют::"
213219

214220
#: ../../tutorial/stdlib2.rst:94
215221
msgid ""
@@ -222,6 +228,14 @@ msgid ""
222228
">>> t.safe_substitute(d)\n"
223229
"'Return the unladen swallow to $owner.'"
224230
msgstr ""
231+
">>> t = Template('$item возвращается $owner.')\n"
232+
">>> d = dict(item='Незагруженная ласточка')\n"
233+
">>> t.substitute(d)\n"
234+
"Traceback (most recent call last):\n"
235+
" ...\n"
236+
"KeyError: 'owner'\n"
237+
">>> t.safe_substitute(d)\n"
238+
"'Незагруженная ласточка возвращается $owner.'"
225239

226240
#: ../../tutorial/stdlib2.rst:103
227241
msgid ""
@@ -230,6 +244,10 @@ msgid ""
230244
"placeholders such as the current date, image sequence number, or file "
231245
"format::"
232246
msgstr ""
247+
"Подклассы Template могут задавать собственный разделитель. Например, утилита"
248+
" пакетного переименования для браузера фотографий может использовать знак "
249+
"процента для заполнителей, таких как текущая дата, номер изображения в "
250+
"последовательности или формат файла::"
233251

234252
#: ../../tutorial/stdlib2.rst:107
235253
msgid ""
@@ -252,17 +270,38 @@ msgid ""
252270
"img_1076.jpg --> Ashley_1.jpg\n"
253271
"img_1077.jpg --> Ashley_2.jpg"
254272
msgstr ""
273+
">>> import time, os.path\n"
274+
">>> photofiles = ['img_1074.jpg', 'img_1076.jpg', 'img_1077.jpg']\n"
275+
">>> class BatchRename(Template):\n"
276+
"... delimiter = '%'\n"
277+
"...\n"
278+
">>> fmt = input('Введите стиль переименования (%d-дата %n-номер %f-формат): ')\n"
279+
"Введите стиль переименования (%d-дата %n-номер %f-формат): Эшли_%n%f\n"
280+
"\n"
281+
">>> t = BatchRename(fmt)\n"
282+
">>> date = time.strftime('%d%b%y')\n"
283+
">>> for i, filename in enumerate(photofiles):\n"
284+
"... base, ext = os.path.splitext(filename)\n"
285+
"... newname = t.substitute(d=date, n=i, f=ext)\n"
286+
"... print('{0} --> {1}'.format(filename, newname))\n"
287+
"\n"
288+
"img_1074.jpg --> Эшли_0.jpg\n"
289+
"img_1076.jpg --> Эшли_1.jpg\n"
290+
"img_1077.jpg --> Эшли_2.jpg"
255291

256292
#: ../../tutorial/stdlib2.rst:126
257293
msgid ""
258294
"Another application for templating is separating program logic from the "
259295
"details of multiple output formats. This makes it possible to substitute "
260296
"custom templates for XML files, plain text reports, and HTML web reports."
261297
msgstr ""
298+
"Ещё одно применение для шаблонов — отделение логики программы от деталей "
299+
"множества выходных форматов. Это позволяет подставлять собственные шаблоны "
300+
"для XML-файлов, текстовых отчётов и HTML-страниц."
262301

263302
#: ../../tutorial/stdlib2.rst:134
264303
msgid "Working with Binary Data Record Layouts"
265-
msgstr ""
304+
msgstr "Работа с записями бинарных данных"
266305

267306
#: ../../tutorial/stdlib2.rst:136
268307
msgid ""
@@ -274,6 +313,13 @@ msgid ""
274313
"respectively. The ``\"<\"`` indicates that they are standard size and in "
275314
"little-endian byte order::"
276315
msgstr ""
316+
"Модуль :mod:`struct` предоставляет функции :func:`~struct.pack` и "
317+
":func:`~struct.unpack` для работы с записями переменной длины в бинарном "
318+
"формате. Следующий пример показывает, как пройтись по заголовкам файлов в "
319+
"ZIP-архиве без использования модуля :mod:`zipfile`. Коды упаковки ``\"H\"`` "
320+
"и ``\"I\"`` обозначают двухбайтовые и четырехбайтовые беззнаковые числа "
321+
"соответственно. Символ ``\"<\"`` указывает, что они имеют стандартный "
322+
"размер, а порядок байтов — little-endian::"
277323

278324
#: ../../tutorial/stdlib2.rst:144
279325
msgid ""
@@ -296,10 +342,28 @@ msgid ""
296342
"\n"
297343
" start += extra_size + comp_size # skip to the next header"
298344
msgstr ""
345+
"import struct\n"
346+
"\n"
347+
"with open('myfile.zip', 'rb') as f:\n"
348+
" data = f.read()\n"
349+
"\n"
350+
"start = 0\n"
351+
"for i in range(3): # показать заголовки первых трёх файлов\n"
352+
" start += 14\n"
353+
" fields = struct.unpack('<IIIHH', data[start:start+16])\n"
354+
" crc32, comp_size, uncomp_size, filenamesize, extra_size = fields\n"
355+
"\n"
356+
" start += 16\n"
357+
" filename = data[start:start+filenamesize]\n"
358+
" start += filenamesize\n"
359+
" extra = data[start:start+extra_size]\n"
360+
" print(filename, hex(crc32), comp_size, uncomp_size)\n"
361+
"\n"
362+
" start += extra_size + comp_size # перейти к следующему заголовку"
299363

300364
#: ../../tutorial/stdlib2.rst:167
301365
msgid "Multi-threading"
302-
msgstr ""
366+
msgstr "Многопоточность"
303367

304368
#: ../../tutorial/stdlib2.rst:169
305369
msgid ""

0 commit comments

Comments
 (0)