Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 May 2026 18:17:26 +0000
From:      Vladlen Popolitov <vladlen@FreeBSD.org>
To:        doc-committers@FreeBSD.org, dev-commits-doc-all@FreeBSD.org
Subject:   git: c8bb62a28f - main - update translation of books/arch-handbook to Russian
Message-ID:  <6a0a0636.24849.b46a85e@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by vladlen:

URL: https://cgit.FreeBSD.org/doc/commit/?id=c8bb62a28f9e664e42ef704ad3b5a6ad1eb897de

commit c8bb62a28f9e664e42ef704ad3b5a6ad1eb897de
Author:     Vladlen Popolitov <vladlen@FreeBSD.org>
AuthorDate: 2026-05-17 18:17:18 +0000
Commit:     Vladlen Popolitov <vladlen@FreeBSD.org>
CommitDate: 2026-05-17 18:17:18 +0000

    update translation of books/arch-handbook to Russian
    
    Reviewed by: andy
    Differential Revision: https://reviews.freebsd.org/В56935
---
 .../content/ru/books/arch-handbook/_index.po       |  4 +--
 .../content/ru/books/arch-handbook/book.po         |  4 +--
 .../ru/books/arch-handbook/boot/_index.adoc        | 14 ++++-----
 .../content/ru/books/arch-handbook/boot/_index.po  | 35 +++++++++++-----------
 .../ru/books/arch-handbook/driverbasics/_index.po  |  4 +--
 .../content/ru/books/arch-handbook/isa/_index.adoc |  6 ++--
 .../content/ru/books/arch-handbook/isa/_index.po   |  8 ++---
 .../ru/books/arch-handbook/jail/_index.adoc        | 10 +++----
 .../content/ru/books/arch-handbook/jail/_index.po  | 22 +++++++-------
 .../ru/books/arch-handbook/kobj/_index.adoc        |  2 +-
 .../content/ru/books/arch-handbook/kobj/_index.po  |  6 ++--
 .../content/ru/books/arch-handbook/mac/_index.adoc |  8 ++---
 .../content/ru/books/arch-handbook/mac/_index.po   | 10 +++----
 .../ru/books/arch-handbook/newbus/_index.adoc      |  2 +-
 .../ru/books/arch-handbook/newbus/_index.po        |  6 ++--
 .../ru/books/arch-handbook/scsi/_index.adoc        |  4 +--
 .../content/ru/books/arch-handbook/scsi/_index.po  |  6 ++--
 .../content/ru/books/arch-handbook/smp/_index.po   |  4 +--
 .../ru/books/arch-handbook/sound/_index.adoc       |  2 +-
 .../content/ru/books/arch-handbook/sound/_index.po |  6 ++--
 .../ru/books/arch-handbook/sysinit/_index.adoc     |  2 +-
 .../ru/books/arch-handbook/sysinit/_index.po       |  4 +--
 .../content/ru/books/arch-handbook/usb/_index.po   |  2 +-
 23 files changed, 85 insertions(+), 86 deletions(-)

diff --git a/documentation/content/ru/books/arch-handbook/_index.po b/documentation/content/ru/books/arch-handbook/_index.po
index 4e60b24fe0..7a70ffea59 100644
--- a/documentation/content/ru/books/arch-handbook/_index.po
+++ b/documentation/content/ru/books/arch-handbook/_index.po
@@ -1,12 +1,12 @@
 # SOME DESCRIPTIVE TITLE
 # Copyright (C) YEAR The FreeBSD Project
 # This file is distributed under the same license as the FreeBSD Documentation package.
-# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025.
+# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025, 2026.
 msgid ""
 msgstr ""
 "Project-Id-Version: FreeBSD Documentation VERSION\n"
 "POT-Creation-Date: 2025-11-08 16:17+0000\n"
-"PO-Revision-Date: 2025-11-11 04:45+0000\n"
+"PO-Revision-Date: 2026-03-23 04:45+0000\n"
 "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
 "Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
 "documentation/booksarch-handbook_index/ru/>\n"
diff --git a/documentation/content/ru/books/arch-handbook/book.po b/documentation/content/ru/books/arch-handbook/book.po
index 605ee60cd1..1f73e27d8b 100644
--- a/documentation/content/ru/books/arch-handbook/book.po
+++ b/documentation/content/ru/books/arch-handbook/book.po
@@ -1,12 +1,12 @@
 # SOME DESCRIPTIVE TITLE
 # Copyright (C) YEAR The FreeBSD Project
 # This file is distributed under the same license as the FreeBSD Documentation package.
-# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025.
+# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025, 2026.
 msgid ""
 msgstr ""
 "Project-Id-Version: FreeBSD Documentation VERSION\n"
 "POT-Creation-Date: 2025-11-08 16:17+0000\n"
-"PO-Revision-Date: 2025-11-11 04:45+0000\n"
+"PO-Revision-Date: 2026-03-23 04:45+0000\n"
 "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
 "Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
 "documentation/booksarch-handbookbook/ru/>\n"
diff --git a/documentation/content/ru/books/arch-handbook/boot/_index.adoc b/documentation/content/ru/books/arch-handbook/boot/_index.adoc
index abfcf1feaa..305858635f 100644
--- a/documentation/content/ru/books/arch-handbook/boot/_index.adoc
+++ b/documentation/content/ru/books/arch-handbook/boot/_index.adoc
@@ -566,7 +566,7 @@ seta20.3:
 * [.filename]#boot0# перемещает себя по адресу `0x600`, по которому он был слинкован для выполнения, и переходит туда. Затем он читает первый сектор среза FreeBSD (который содержит [.filename]#boot1#) в адрес `0x7c00` и переходит туда.
 * [.filename]#boot1# загружает первые 16 секторов среза FreeBSD по адресу `0x8c00`. Эти 16 секторов, или 8192 байта, представляют собой весь файл [.filename]#boot#. Файл является объединением [.filename]#boot1# и [.filename]#boot2#. [.filename]#boot2#, в свою очередь, содержит сервер BTX и клиент [.filename]#boot2#. Наконец, выполняется переход по адресу `0x9010`, точке входа сервера BTX.
 
-Прежде чем изучать сервер BTX подробно, давайте рассмотрим, как создается единый, всеобъемлющий файл [.filename]#boot#. Способ сборки [.filename]#boot# определен в его [.filename]#Makefile# ([.filename]#stand/i386/boot2/Makefile#). Рассмотрим правило, которое создает файл [.filename]#boot#:
+Прежде чем изучать сервер BTX подробно, давайте рассмотрим, как создаётся единый, всеобъемлющий файл [.filename]#boot#. Способ сборки [.filename]#boot# определен в его [.filename]#Makefile# ([.filename]#stand/i386/boot2/Makefile#). Рассмотрим правило, которое создаёт файл [.filename]#boot#:
 
 [.programlisting]
 ....
@@ -587,7 +587,7 @@ seta20.3:
 ....
 
 .[.filename]#stand/i386/boot2/Makefile# [[boot-boot1-make-boot1]]
-Для применения правила создания [.filename]#boot1# необходимо собрать [.filename]#boot1.out#. Это, в свою очередь, зависит от наличия [.filename]#boot1.o#. Последний файл является результатом ассемблирования нашего знакомого [.filename]#boot1.S# без компоновки. Теперь применяется правило создания [.filename]#boot1.out#. Оно указывает, что [.filename]#boot1.o# должен быть скомпонован с точкой входа `start` и начальным адресом `0x7c00`. Наконец, [.filename]#boot1# создается из [.filename]#boot1.out# применением соответствующего правила. Это команда [.filename]#objcopy#, применяемая к [.filename]#boot1.out#. Обратите внимание на флаги, п
ередаваемые [.filename]#objcopy#: `-S` указывает на удаление всей информации о перемещении и символов; `-O binary` указывает формат вывода, то есть простой, неформатированный двоичный файл.
+Для применения правила создания [.filename]#boot1# необходимо собрать [.filename]#boot1.out#. Это, в свою очередь, зависит от наличия [.filename]#boot1.o#. Последний файл является результатом ассемблирования нашего знакомого [.filename]#boot1.S# без компоновки. Теперь применяется правило создания [.filename]#boot1.out#. Оно указывает, что [.filename]#boot1.o# должен быть скомпонован с точкой входа `start` и начальным адресом `0x7c00`. Наконец, [.filename]#boot1# создаётся из [.filename]#boot1.out# применением соответствующего правила. Это команда [.filename]#objcopy#, применяемая к [.filename]#boot1.out#. Обратите внимание на флаги, п
ередаваемые [.filename]#objcopy#: `-S` указывает на удаление всей информации о перемещении и символов; `-O binary` указывает формат вывода, то есть простой, неформатированный двоичный файл.
 
 Имея [.filename]#boot1#, давайте посмотрим, как устроен [.filename]#boot2#:
 
@@ -642,7 +642,7 @@ seta20.3:
 .[.filename]#stand/i386/boot2/boot2.h# [[boot-boot1-make-boot2h]]
 Напомним, что [.filename]#boot1# был перемещён (т.е. скопирован из `0x7c00` в `0x700`). Это перемещение теперь обретает смысл, потому что, как мы увидим, сервер BTX освобождает часть памяти, включая область, куда [.filename]#boot1# был изначально загружен. Однако серверу BTX необходим доступ к функции `xread` из [.filename]#boot1#; согласно выводу [.filename]#boot2.h#, эта функция находится по адресу `0x725`. Действительно, сервер BTX использует функцию `xread` из перемещённого кода [.filename]#boot1#. Теперь эта функция доступна из клиента [.filename]#boot2#.
 
-Следующее правило указывает компоновщику на необходимость связать различные файлы ([.filename]#ashldi3.o#, [.filename]#boot2.o# и [.filename]#sio.o#). Обратите внимание, что выходной файл [.filename]#boot2.out# компонуется для выполнения по адресу `0x2000` (${ORG2}). Напомним, что [.filename]#boot2# будет выполняться в пользовательском режиме внутри специального пользовательского сегмента, созданного сервером BTX. Этот сегмент начинается с адреса `0xa000`. Также помните, что часть [.filename]#boot2# в [.filename]#boot# была скопирована по адресу `0xc000`, то есть со смещением `0x2000` от начала пользовательского сег
мента, поэтому [.filename]#boot2# будет работать корректно при передаче управления на него. Далее, [.filename]#boot2.bin# создается из [.filename]#boot2.out# путем удаления символов и информации о формате; boot2.bin представляет собой _сырой_ бинарный файл. Теперь обратите внимание, что файл [.filename]#boot2.ldr# создается как 512-байтный файл, заполненный нулями. Это пространство зарезервировано для bsdlabel.
+Следующее правило указывает компоновщику на необходимость связать различные файлы ([.filename]#ashldi3.o#, [.filename]#boot2.o# и [.filename]#sio.o#). Обратите внимание, что выходной файл [.filename]#boot2.out# компонуется для выполнения по адресу `0x2000` (${ORG2}). Напомним, что [.filename]#boot2# будет выполняться в пользовательском режиме внутри специального пользовательского сегмента, созданного сервером BTX. Этот сегмент начинается с адреса `0xa000`. Также помните, что часть [.filename]#boot2# в [.filename]#boot# была скопирована по адресу `0xc000`, то есть со смещением `0x2000` от начала пользовательского сег
мента, поэтому [.filename]#boot2# будет работать корректно при передаче управления на него. Далее, [.filename]#boot2.bin# создаётся из [.filename]#boot2.out# путем удаления символов и информации о формате; boot2.bin представляет собой _сырой_ бинарный файл. Теперь обратите внимание, что файл [.filename]#boot2.ldr# создаётся как 512-байтный файл, заполненный нулями. Это пространство зарезервировано для bsdlabel.
 
 Теперь, когда у нас есть файлы [.filename]#boot1#, [.filename]#boot2.bin# и [.filename]#boot2.ldr#, осталось только добавить сервер BTX перед созданием универсального файла [.filename]#boot#. Сервер BTX находится в [.filename]#stand/i386/btx/btx#; у него есть собственный [.filename]#Makefile# со своим набором правил для сборки. Важно отметить, что он также компилируется как _сырой_ бинарный файл и линкуется для выполнения по адресу `0x9000`. Подробности можно найти в [.filename]#stand/i386/btx/btx/Makefile#.
 
@@ -651,8 +651,8 @@ seta20.3:
 Сервер BTX подготавливает простое окружение и переключается из 16-битного реального режима в 32-битный защищённый режим, непосредственно перед передачей управления клиенту. Это включает инициализацию и обновление следующих структур данных:
 
 * Изменяет `Таблицу Векторов Прерываний (IVT)`. IVT предоставляет обработчики исключений и прерываний для кода в Реальном Режиме.
-* Создается `Таблица дескрипторов прерываний (IDT)`. В ней предусмотрены записи для исключений процессора, аппаратных прерываний, двух системных вызовов и интерфейса V86. IDT предоставляет обработчики исключений и прерываний для кода в защищенном режиме.
-* Создается `Сегмент состояния задачи (TSS)`. Это необходимо, потому что процессор работает на _наименее_ привилегированном уровне при выполнении клиента ([.filename]#boot2#), но на _наиболее_ привилегированном уровне при выполнении сервера BTX.
+* Создаётся `Таблица дескрипторов прерываний (IDT)`. В ней предусмотрены записи для исключений процессора, аппаратных прерываний, двух системных вызовов и интерфейса V86. IDT предоставляет обработчики исключений и прерываний для кода в защищенном режиме.
+* Создаётся `Сегмент состояния задачи (TSS)`. Это необходимо, потому что процессор работает на _наименее_ привилегированном уровне при выполнении клиента ([.filename]#boot2#), но на _наиболее_ привилегированном уровне при выполнении сервера BTX.
 * Устанавливается GDT (Глобальная Таблица Дескрипторов). Создаются записи (дескрипторы) для кода и данных супервизора, кода и данных пользователя, а также кода и данных реального режима. footnote:[Код и данные реального режима необходимы при переключении обратно в реальный режим из защищённого режима, как указано в руководствах Intel.]
 
 Приступим к изучению фактической реализации. Напомним, что [.filename]#boot1# выполнил переход на адрес `0x9010` — точку входа сервера BTX. Прежде чем изучать выполнение программы там, обратите внимание, что сервер BTX имеет специальный заголовок в диапазоне адресов `0x9000-0x900f`, непосредственно перед точкой входа. Этот заголовок определён следующим образом:
@@ -732,7 +732,7 @@ init.0:		mov %bx,(%di)			# Store IP
 ....
 
 .[.filename]#stand/i386/btx/btx/btx.S# [[btx-ivt]]
-Следующий блок создает IDT (таблицу дескрипторов прерываний). IDT в защищенном режиме аналогична IVT в реальном режиме. То есть, IDT описывает различные обработчики исключений и прерываний, используемые, когда процессор работает в защищенном режиме. По сути, она также состоит из массива пар сегмент/смещение, хотя структура несколько сложнее, поскольку сегменты в защищенном режиме отличаются от реального режима, и применяются различные механизмы защиты:
+Следующий блок создаёт IDT (таблицу дескрипторов прерываний). IDT в защищенном режиме аналогична IVT в реальном режиме. То есть, IDT описывает различные обработчики исключений и прерываний, используемые, когда процессор работает в защищенном режиме. По сути, она также состоит из массива пар сегмент/смещение, хотя структура несколько сложнее, поскольку сегменты в защищенном режиме отличаются от реального режима, и применяются различные механизмы защиты:
 
 [.programlisting]
 ....
@@ -1195,7 +1195,7 @@ sys/kern/init_main.c:
 
 Хотя фреймворк sysinit описан в extref:{developers-handbook}[Руководстве разработчика], я рассмотрю его внутреннее устройство.
 
-Каждый объект инициализации системы (объект sysinit) создается путем вызова макроса SYSINIT(). Возьмем, к примеру, объект sysinit `announce`. Этот объект выводит сообщение об авторских правах:
+Каждый объект инициализации системы (объект sysinit) создаётся путем вызова макроса SYSINIT(). Возьмем, к примеру, объект sysinit `announce`. Этот объект выводит сообщение об авторских правах:
 
 [.programlisting]
 ....
diff --git a/documentation/content/ru/books/arch-handbook/boot/_index.po b/documentation/content/ru/books/arch-handbook/boot/_index.po
index 8d2920051f..8dcf7b5bbd 100644
--- a/documentation/content/ru/books/arch-handbook/boot/_index.po
+++ b/documentation/content/ru/books/arch-handbook/boot/_index.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FreeBSD Documentation VERSION\n"
 "POT-Creation-Date: 2025-11-08 16:17+0000\n"
-"PO-Revision-Date: 2026-03-05 04:45+0000\n"
+"PO-Revision-Date: 2026-04-05 04:45+0000\n"
 "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
 "Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
 "documentation/booksarch-handbookboot_index/ru/>\n"
@@ -2005,11 +2005,10 @@ msgid ""
 "filename]#stand/i386/boot2/Makefile#).  Let us look at the rule that creates "
 "the [.filename]#boot# file:"
 msgstr ""
-"Прежде чем изучать сервер BTX подробно, давайте рассмотрим, как создается "
-"единый, всеобъемлющий файл [.filename]#boot#. Способ сборки [."
-"filename]#boot# определен в его [.filename]#Makefile# ([.filename]#stand/"
-"i386/boot2/Makefile#). Рассмотрим правило, которое создает файл [."
-"filename]#boot#:"
+"Прежде чем изучать сервер BTX подробно, давайте рассмотрим, как создаётся "
+"единый, всеобъемлющий файл [.filename]#boot#. Способ сборки [.filename]#boot#"
+" определен в его [.filename]#Makefile# ([.filename]#stand/i386/boot2/"
+"Makefile#). Рассмотрим правило, которое создаёт файл [.filename]#boot#:"
 
 #. type: delimited block . 4
 #: documentation/content/en/books/arch-handbook/boot/_index.adoc:775
@@ -2086,12 +2085,12 @@ msgstr ""
 "filename]#boot1.out#. Это, в свою очередь, зависит от наличия [."
 "filename]#boot1.o#. Последний файл является результатом ассемблирования "
 "нашего знакомого [.filename]#boot1.S# без компоновки. Теперь применяется "
-"правило создания [.filename]#boot1.out#. Оно указывает, что [."
-"filename]#boot1.o# должен быть скомпонован с точкой входа `start` и "
-"начальным адресом `0x7c00`. Наконец, [.filename]#boot1# создается из [."
-"filename]#boot1.out# применением соответствующего правила. Это команда [."
-"filename]#objcopy#, применяемая к [.filename]#boot1.out#. Обратите внимание "
-"на флаги, передаваемые [.filename]#objcopy#: `-S` указывает на удаление всей "
+"правило создания [.filename]#boot1.out#. Оно указывает, что [.filename]#boot1"
+".o# должен быть скомпонован с точкой входа `start` и начальным адресом "
+"`0x7c00`. Наконец, [.filename]#boot1# создаётся из [.filename]#boot1.out# "
+"применением соответствующего правила. Это команда [.filename]#objcopy#, "
+"применяемая к [.filename]#boot1.out#. Обратите внимание на флаги, "
+"передаваемые [.filename]#objcopy#: `-S` указывает на удаление всей "
 "информации о перемещении и символов; `-O binary` указывает формат вывода, то "
 "есть простой, неформатированный двоичный файл."
 
@@ -2287,10 +2286,10 @@ msgstr ""
 "filename]#boot# была скопирована по адресу `0xc000`, то есть со смещением "
 "`0x2000` от начала пользовательского сегмента, поэтому [.filename]#boot2# "
 "будет работать корректно при передаче управления на него. Далее, [."
-"filename]#boot2.bin# создается из [.filename]#boot2.out# путем удаления "
+"filename]#boot2.bin# создаётся из [.filename]#boot2.out# путем удаления "
 "символов и информации о формате; boot2.bin представляет собой _сырой_ "
 "бинарный файл. Теперь обратите внимание, что файл [.filename]#boot2.ldr# "
-"создается как 512-байтный файл, заполненный нулями. Это пространство "
+"создаётся как 512-байтный файл, заполненный нулями. Это пространство "
 "зарезервировано для bsdlabel."
 
 #. type: Plain text
@@ -2368,7 +2367,7 @@ msgid ""
 "interface.  The IDT provides exception and interrupt handlers for Protected-"
 "Mode code."
 msgstr ""
-"Создается `Таблица дескрипторов прерываний (IDT)`. В ней предусмотрены "
+"Создаётся `Таблица дескрипторов прерываний (IDT)`. В ней предусмотрены "
 "записи для исключений процессора, аппаратных прерываний, двух системных "
 "вызовов и интерфейса V86. IDT предоставляет обработчики исключений и "
 "прерываний для кода в защищенном режиме."
@@ -2381,7 +2380,7 @@ msgid ""
 "filename]#boot2#), but in the _most_ privileged level when executing the BTX "
 "server."
 msgstr ""
-"Создается `Сегмент состояния задачи (TSS)`. Это необходимо, потому что "
+"Создаётся `Сегмент состояния задачи (TSS)`. Это необходимо, потому что "
 "процессор работает на _наименее_ привилегированном уровне при выполнении "
 "клиента ([.filename]#boot2#), но на _наиболее_ привилегированном уровне при "
 "выполнении сервера BTX."
@@ -2655,7 +2654,7 @@ msgid ""
 "complex, because segments in protected mode are different than in real mode, "
 "and various protection mechanisms apply:"
 msgstr ""
-"Следующий блок создает IDT (таблицу дескрипторов прерываний). IDT в "
+"Следующий блок создаёт IDT (таблицу дескрипторов прерываний). IDT в "
 "защищенном режиме аналогична IVT в реальном режиме. То есть, IDT описывает "
 "различные обработчики исключений и прерываний, используемые, когда процессор "
 "работает в защищенном режиме. По сути, она также состоит из массива пар "
@@ -4033,7 +4032,7 @@ msgid ""
 "SYSINIT() macro.  Let us take as example an `announce` sysinit object.  This "
 "object prints the copyright message:"
 msgstr ""
-"Каждый объект инициализации системы (объект sysinit) создается путем вызова "
+"Каждый объект инициализации системы (объект sysinit) создаётся путем вызова "
 "макроса SYSINIT(). Возьмем, к примеру, объект sysinit `announce`. Этот "
 "объект выводит сообщение об авторских правах:"
 
diff --git a/documentation/content/ru/books/arch-handbook/driverbasics/_index.po b/documentation/content/ru/books/arch-handbook/driverbasics/_index.po
index 3116e73e78..db9883e78e 100644
--- a/documentation/content/ru/books/arch-handbook/driverbasics/_index.po
+++ b/documentation/content/ru/books/arch-handbook/driverbasics/_index.po
@@ -1,12 +1,12 @@
 # SOME DESCRIPTIVE TITLE
 # Copyright (C) YEAR The FreeBSD Project
 # This file is distributed under the same license as the FreeBSD Documentation package.
-# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025.
+# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025, 2026.
 msgid ""
 msgstr ""
 "Project-Id-Version: FreeBSD Documentation VERSION\n"
 "POT-Creation-Date: 2025-05-01 19:56-0300\n"
-"PO-Revision-Date: 2025-11-20 04:45+0000\n"
+"PO-Revision-Date: 2026-03-08 09:11+0000\n"
 "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
 "Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
 "documentation/booksarch-handbookdriverbasics_index/ru/>\n"
diff --git a/documentation/content/ru/books/arch-handbook/isa/_index.adoc b/documentation/content/ru/books/arch-handbook/isa/_index.adoc
index a36105d19f..64363a8eb9 100644
--- a/documentation/content/ru/books/arch-handbook/isa/_index.adoc
+++ b/documentation/content/ru/books/arch-handbook/isa/_index.adoc
@@ -334,7 +334,7 @@ flags - уровень приоритета прерывания, один из:
 
 Теги организованы в иерархию в виде дерева с наследованием свойств. Дочерний тег наследует все требования родительского тега и может делать их более строгими, но никогда более мягкими.
 
-Обычно создается один корневой тег (без родителя) для каждого устройства. Если для каждого устройства требуется несколько областей памяти с разными требованиями, то для каждой из них может быть создан тег как дочерний по отношению к родительскому тегу.
+Обычно создаётся один корневой тег (без родителя) для каждого устройства. Если для каждого устройства требуется несколько областей памяти с разными требованиями, то для каждой из них может быть создан тег как дочерний по отношению к родительскому тегу.
 
 Теги могут быть использованы для создания карты двумя способами.
 
@@ -413,7 +413,7 @@ dmat - тег, который должен быть уничтожен.
 
 * `int bus_dmamap_load(bus_dma_tag_t dmat, bus_dmamap_t map, void *buf, bus_size_t buflen, bus_dmamap_callback_t *callback, void *callback_arg, int flags)`
 +
-Загрузить буфер в карту (карта должна быть предварительно создана с помощью `bus_dmamap_create()` или `bus_dmamem_alloc()`). Все страницы буфера проверяются на соответствие требованиям тега, и для несоответствующих выделяются промежуточные страницы. Создается массив дескрипторов физических сегментов и передаётся в подпрограмму обратного вызова. Ожидается, что эта подпрограмма обработает его каким-либо образом. Количество промежуточных буферов в системе ограничено, поэтому, если эти буферы требуются, но недоступны немедленно, запрос будет поставле
 в очередь, и обратный вызов будет выполнен, когда промежуточные буферы станут доступны. Возвращает 0, если обратный вызов был выполнен немедленно, или `EINPROGRESS`, если запрос был поставлен в очередь для выполнения в будущем. В последнем случае синхронизация с подпрограммой обратного вызова, поставленной в очередь, является обязанностью драйвера.
+Загрузить буфер в карту (карта должна быть предварительно создана с помощью `bus_dmamap_create()` или `bus_dmamem_alloc()`). Все страницы буфера проверяются на соответствие требованиям тега, и для несоответствующих выделяются промежуточные страницы. Создаётся массив дескрипторов физических сегментов и передаётся в подпрограмму обратного вызова. Ожидается, что эта подпрограмма обработает его каким-либо образом. Количество промежуточных буферов в системе ограничено, поэтому, если эти буферы требуются, но недоступны немедленно, запрос будет поставле
 в очередь, и обратный вызов будет выполнен, когда промежуточные буферы станут доступны. Возвращает 0, если обратный вызов был выполнен немедленно, или `EINPROGRESS`, если запрос был поставлен в очередь для выполнения в будущем. В последнем случае синхронизация с подпрограммой обратного вызова, поставленной в очередь, является обязанностью драйвера.
 +
 ** _dmat_ - тег
 ** _map_ - карта
@@ -479,7 +479,7 @@ bus_dmamem_alloc -> bus_dmamap_load -> ...use buffer... -> -> bus_dmamap_unload
           -> bus_dmamap_destroy
 ....
 
-При загрузке карты, созданной `bus_dmamem_alloc()`, переданные адрес и размер буфера должны быть такими же, как использованные в `bus_dmamem_alloc()`. В этом случае гарантируется, что весь буфер будет отображен как один сегмент (так что обратный вызов может основываться на этом предположении) и запрос будет выполнен немедленно (EINPROGRESS никогда не будет возвращен). Все, что нужно сделать обратному вызову в этом случае, — это сохранить физический адрес.
+При загрузке карты, созданной `bus_dmamem_alloc()`, переданные адрес и размер буфера должны быть такими же, как использованные в `bus_dmamem_alloc()`. В этом случае гарантируется, что весь буфер будет отображён как один сегмент (так что обратный вызов может основываться на этом предположении) и запрос будет выполнен немедленно (EINPROGRESS никогда не будет возвращен). Все, что нужно сделать обратному вызову в этом случае, — это сохранить физический адрес.
 
 Типичный пример:
 
diff --git a/documentation/content/ru/books/arch-handbook/isa/_index.po b/documentation/content/ru/books/arch-handbook/isa/_index.po
index 20b145402c..38e962e4a9 100644
--- a/documentation/content/ru/books/arch-handbook/isa/_index.po
+++ b/documentation/content/ru/books/arch-handbook/isa/_index.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FreeBSD Documentation VERSION\n"
 "POT-Creation-Date: 2025-05-01 19:56-0300\n"
-"PO-Revision-Date: 2026-03-04 20:01+0000\n"
+"PO-Revision-Date: 2026-04-05 04:45+0000\n"
 "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
 "Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
 "documentation/booksarch-handbookisa_index/ru/>\n"
@@ -1425,7 +1425,7 @@ msgid ""
 "device then a tag for each of them may be created as a child of the parent "
 "tag."
 msgstr ""
-"Обычно создается один корневой тег (без родителя) для каждого устройства. "
+"Обычно создаётся один корневой тег (без родителя) для каждого устройства. "
 "Если для каждого устройства требуется несколько областей памяти с разными "
 "требованиями, то для каждой из них может быть создан тег как дочерний по "
 "отношению к родительскому тегу."
@@ -1865,7 +1865,7 @@ msgstr ""
 "Загрузить буфер в карту (карта должна быть предварительно создана с помощью "
 "`bus_dmamap_create()` или `bus_dmamem_alloc()`). Все страницы буфера "
 "проверяются на соответствие требованиям тега, и для несоответствующих "
-"выделяются промежуточные страницы. Создается массив дескрипторов физических "
+"выделяются промежуточные страницы. Создаётся массив дескрипторов физических "
 "сегментов и передаётся в подпрограмму обратного вызова. Ожидается, что эта "
 "подпрограмма обработает его каким-либо образом. Количество промежуточных "
 "буферов в системе ограничено, поэтому, если эти буферы требуются, но "
@@ -2164,7 +2164,7 @@ msgstr ""
 "При загрузке карты, созданной `bus_dmamem_alloc()`, переданные адрес и "
 "размер буфера должны быть такими же, как использованные в "
 "`bus_dmamem_alloc()`. В этом случае гарантируется, что весь буфер будет "
-"отображен как один сегмент (так что обратный вызов может основываться на "
+"отображён как один сегмент (так что обратный вызов может основываться на "
 "этом предположении) и запрос будет выполнен немедленно (EINPROGRESS никогда "
 "не будет возвращен). Все, что нужно сделать обратному вызову в этом случае, —"
 " это сохранить физический адрес."
diff --git a/documentation/content/ru/books/arch-handbook/jail/_index.adoc b/documentation/content/ru/books/arch-handbook/jail/_index.adoc
index cc414c6ffa..ebfc174b42 100644
--- a/documentation/content/ru/books/arch-handbook/jail/_index.adoc
+++ b/documentation/content/ru/books/arch-handbook/jail/_index.adoc
@@ -48,7 +48,7 @@ toc::[]
 include::../../../../../shared/asciidoctor.adoc[]
 endif::[]
 
-На большинстве систем UNIX(R) пользователь `root` обладает неограниченной властью. Это не способствует безопасности. Если злоумышленник получит права `root` в системе, у него окажутся все функции под рукой. В FreeBSD существуют sysctl-параметры, которые ограничивают власть `root`, чтобы минимизировать ущерб от действий злоумышленника. В частности, одна из таких функций называется `уровни безопасности`. Аналогично, другая функция, доступная начиная с FreeBSD 4.0, — это утилита man:jail[8] — клетка. Клетка создает chroot-окружение и накладывает определённые огранич
ения на процессы, запущенные внутри `клетки`. Например, процесс в `клетке` не может влиять на процессы вне её, использовать определённые системные вызовы или наносить какой-либо ущерб основной системе.
+На большинстве систем UNIX(R) пользователь `root` обладает неограниченной властью. Это не способствует безопасности. Если злоумышленник получит права `root` в системе, у него окажутся все функции под рукой. В FreeBSD существуют sysctl-параметры, которые ограничивают власть `root`, чтобы минимизировать ущерб от действий злоумышленника. В частности, одна из таких функций называется `уровни безопасности`. Аналогично, другая функция, доступная начиная с FreeBSD 4.0, — это утилита man:jail[8] — клетка. Клетка создаёт chroot-окружение и накладывает определённые огранич
ения на процессы, запущенные внутри `клетки`. Например, процесс в `клетке` не может влиять на процессы вне её, использовать определённые системные вызовы или наносить какой-либо ущерб основной системе.
 
 Клетка становится новой моделью безопасности. Пользователи запускают потенциально уязвимые серверы, такие как Apache, BIND и sendmail, внутри клеток, так что если злоумышленник получит права `root` внутри клетки, это будет лишь неудобством, а не катастрофой. Данная статья в основном сосредоточена на внутреннем устройстве (исходном коде) клетки. Для получения информации о настройке клетки см. extref:{handbook}jails[раздел о клетках Руководства FreeBSD, jails-synopsis].
 
@@ -277,7 +277,7 @@ struct ucred {
 };
 ....
 
-В файле [.filename]#kern_jail.c# функция `jail()` вызывает функцию `jail_attach()` с заданным `jid`. Затем `jail_attach()` вызывает функцию `change_root()` для изменения корневого каталога вызывающего процесса. Функция `jail_attach()` создает новую структуру `ucred` и присоединяет её к вызывающему процессу после успешного присоединения структуры `prison` к структуре `ucred`. С этого момента вызывающий процесс считается находящимся в клетке. Когда в ядре вызывается функция `jailed()` с вновь созданной структурой `ucred` в качестве аргумента, она возвращает 1, указывая, что учётные данные связаны 
 клеткой. Общим родительским процессом для всех процессов, созданных внутри клетки, является процесс, запускающий man:jail[8], так как он вызывает системный вызов man:jail[2]. При выполнении программы через man:execve[2] она наследует свойство клетки из структуры `ucred` родительского процесса, следовательно, у нее структура `ucred` тоже со свойством клетки.
+В файле [.filename]#kern_jail.c# функция `jail()` вызывает функцию `jail_attach()` с заданным `jid`. Затем `jail_attach()` вызывает функцию `change_root()` для изменения корневого каталога вызывающего процесса. Функция `jail_attach()` создаёт новую структуру `ucred` и присоединяет её к вызывающему процессу после успешного присоединения структуры `prison` к структуре `ucred`. С этого момента вызывающий процесс считается находящимся в клетке. Когда в ядре вызывается функция `jailed()` с вновь созданной структурой `ucred` в качестве аргумента, она возвращает 1, указывая, что учётные данные связаны 
 клеткой. Общим родительским процессом для всех процессов, созданных внутри клетки, является процесс, запускающий man:jail[8], так как он вызывает системный вызов man:jail[2]. При выполнении программы через man:execve[2] она наследует свойство клетки из структуры `ucred` родительского процесса, следовательно, у неё структура `ucred` тоже со свойством клетки.
 
 [.programlisting]
 ....
@@ -313,7 +313,7 @@ jail_attach(struct thread *td, struct jail_attach_args *uap)
 }
 ....
 
-Когда процесс создается из родительского процесса, системный вызов man:fork[2] использует `crhold()` для поддержания учётных данных нового процесса. Это автоматически сохраняет учётные данные нового дочернего процесса согласованными с родительским, поэтому дочерний процесс также остаётся в клетке.
+Когда процесс создаётся из родительского процесса, системный вызов man:fork[2] использует `crhold()` для поддержания учётных данных нового процесса. Это автоматически сохраняет учётные данные нового дочернего процесса согласованными с родительским, поэтому дочерний процесс также остаётся в клетке.
 
 [.programlisting]
 ....
@@ -359,7 +359,7 @@ if (!jail_sysvipc_allowed && jailed(td->td_ucred))
 [.filename]#/usr/src/sys/kern/sysv_sem.c#:
 
 * `semctl(semid, semnum, cmd, ...)`: `semctl` выполняет указанную команду `cmd` для очереди семафоров, указанной в `semid`.
-* `semget(key, nsems, flag)`: `semget` создает массив семафоров, соответствующих `key`.
+* `semget(key, nsems, flag)`: `semget` создаёт массив семафоров, соответствующих `key`.
 +
 `key и flag имеют то же значение, как и в msgget.`
 * `semop(semid, array, nops)`: `semop` выполняет набор операций, указанных в `array`, для набора семафоров, идентифицируемых `semid`.
@@ -369,7 +369,7 @@ if (!jail_sysvipc_allowed && jailed(td->td_ucred))
 [.filename]#/usr/src/sys/kern/sysv_shm.c#:
 
 * `shmctl(shmid, cmd, buf)`: `shmctl` выполняет различные управляющие операции над областью разделяемой памяти, идентифицируемой `shmid`.
-* `shmget(key, size, flag)`: `shmget` обращается к существующей или создает новую область разделяемой памяти размером `size` байт.
+* `shmget(key, size, flag)`: `shmget` обращается к существующей или создаёт новую область разделяемой памяти размером `size` байт.
 * `shmat(shmid, addr, flag)`: `shmat` присоединяет область разделяемой памяти, идентифицируемую `shmid`, к адресному пространству процесса.
 * `shmdt(addr)`: `shmdt` отсоединяет ранее присоединенную область разделяемой памяти по адресу `addr`.
 
diff --git a/documentation/content/ru/books/arch-handbook/jail/_index.po b/documentation/content/ru/books/arch-handbook/jail/_index.po
index 43d8e6834c..7a249aa6a1 100644
--- a/documentation/content/ru/books/arch-handbook/jail/_index.po
+++ b/documentation/content/ru/books/arch-handbook/jail/_index.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FreeBSD Documentation VERSION\n"
 "POT-Creation-Date: 2025-11-08 16:17+0000\n"
-"PO-Revision-Date: 2026-03-04 20:01+0000\n"
+"PO-Revision-Date: 2026-04-05 04:45+0000\n"
 "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
 "Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
 "documentation/booksarch-handbookjail_index/ru/>\n"
@@ -52,7 +52,7 @@ msgstr ""
 "минимизировать ущерб от действий злоумышленника. В частности, одна из таких "
 "функций называется `уровни безопасности`. Аналогично, другая функция, "
 "доступная начиная с FreeBSD 4.0, — это утилита man:jail[8] — клетка. Клетка "
-"создает chroot-окружение и накладывает определённые ограничения на процессы, "
+"создаёт chroot-окружение и накладывает определённые ограничения на процессы, "
 "запущенные внутри `клетки`. Например, процесс в `клетке` не может влиять на "
 "процессы вне её, использовать определённые системные вызовы или наносить "
 "какой-либо ущерб основной системе."
@@ -730,17 +730,17 @@ msgstr ""
 "В файле [.filename]#kern_jail.c# функция `jail()` вызывает функцию "
 "`jail_attach()` с заданным `jid`. Затем `jail_attach()` вызывает функцию "
 "`change_root()` для изменения корневого каталога вызывающего процесса. "
-"Функция `jail_attach()` создает новую структуру `ucred` и присоединяет её к "
+"Функция `jail_attach()` создаёт новую структуру `ucred` и присоединяет её к "
 "вызывающему процессу после успешного присоединения структуры `prison` к "
 "структуре `ucred`. С этого момента вызывающий процесс считается находящимся "
 "в клетке. Когда в ядре вызывается функция `jailed()` с вновь созданной "
 "структурой `ucred` в качестве аргумента, она возвращает 1, указывая, что "
 "учётные данные связаны с клеткой. Общим родительским процессом для всех "
-"процессов, созданных внутри клетки, является процесс, запускающий man:"
-"jail[8], так как он вызывает системный вызов man:jail[2]. При выполнении "
-"программы через man:execve[2] она наследует свойство клетки из структуры "
-"`ucred` родительского процесса, следовательно, у нее структура `ucred` тоже "
-"со свойством клетки."
+"процессов, созданных внутри клетки, является процесс, запускающий man:jail[8]"
+", так как он вызывает системный вызов man:jail[2]. При выполнении программы "
+"через man:execve[2] она наследует свойство клетки из структуры `ucred` "
+"родительского процесса, следовательно, у неё структура `ucred` тоже со "
+"свойством клетки."
 
 #. type: delimited block . 4
 #: documentation/content/en/books/arch-handbook/jail/_index.adoc:296
@@ -820,7 +820,7 @@ msgid ""
 "process. It inherently keep the newly forked child's credential consistent "
 "with its parent, so the child process is also jailed."
 msgstr ""
-"Когда процесс создается из родительского процесса, системный вызов "
+"Когда процесс создаётся из родительского процесса, системный вызов "
 "man:fork[2] использует `crhold()` для поддержания учётных данных нового "
 "процесса. Это автоматически сохраняет учётные данные нового дочернего "
 "процесса согласованными с родительским, поэтому дочерний процесс также "
@@ -997,7 +997,7 @@ msgid ""
 "`semget(key, nsems, flag)`: `semget` creates an array of semaphores, "
 "corresponding to `key`."
 msgstr ""
-"`semget(key, nsems, flag)`: `semget` создает массив семафоров, "
+"`semget(key, nsems, flag)`: `semget` создаёт массив семафоров, "
 "соответствующих `key`."
 
 #. type: Plain text
@@ -1049,7 +1049,7 @@ msgid ""
 "`shmget(key, size, flag)`: `shmget` accesses or creates a shared memory "
 "region of `size` bytes."
 msgstr ""
-"`shmget(key, size, flag)`: `shmget` обращается к существующей или создает "
+"`shmget(key, size, flag)`: `shmget` обращается к существующей или создаёт "
 "новую область разделяемой памяти размером `size` байт."
 
 #. type: Plain text
diff --git a/documentation/content/ru/books/arch-handbook/kobj/_index.adoc b/documentation/content/ru/books/arch-handbook/kobj/_index.adoc
index 7d9e498d53..ed4ed83fd0 100644
--- a/documentation/content/ru/books/arch-handbook/kobj/_index.adoc
+++ b/documentation/content/ru/books/arch-handbook/kobj/_index.adoc
@@ -70,7 +70,7 @@ endif::[]
 
 Kobj работает путем генерации описаний методов. Каждое описание содержит уникальный идентификатор, а также функцию по умолчанию. Адрес описания используется для однозначной идентификации метода в таблице методов класса.
 
-Класс создается путем построения таблицы методов, связывающей одну или несколько функций с описаниями методов. Перед использованием класс компилируется. В процессе компиляции выделяется кэш и связывается с классом. Уникальный идентификатор назначается каждому описанию метода в таблице методов класса, если это ещё не было сделано другой компиляцией, ссылающейся на этот класс. Для каждого используемого метода скриптом генерируется функция для проверки аргументов и автоматического обращения к описанию метода для поиска. Сгенерир
ванная функция ищет метод, используя уникальный идентификатор, связанный с описанием метода, в качестве хэша для доступа к кэшу, связанному с классом объекта. Если метод не найден в кэше, сгенерированная функция использует таблицу класса для поиска метода. Если метод найден, используется связанная с ним функция внутри класса; в противном случае используется функция по умолчанию, связанная с описанием метода.
+Класс создаётся путем построения таблицы методов, связывающей одну или несколько функций с описаниями методов. Перед использованием класс компилируется. В процессе компиляции выделяется кэш и связывается с классом. Уникальный идентификатор назначается каждому описанию метода в таблице методов класса, если это ещё не было сделано другой компиляцией, ссылающейся на этот класс. Для каждого используемого метода скриптом генерируется функция для проверки аргументов и автоматического обращения к описанию метода для поиска. Сгенерир
ванная функция ищет метод, используя уникальный идентификатор, связанный с описанием метода, в качестве хэша для доступа к кэшу, связанному с классом объекта. Если метод не найден в кэше, сгенерированная функция использует таблицу класса для поиска метода. Если метод найден, используется связанная с ним функция внутри класса; в противном случае используется функция по умолчанию, связанная с описанием метода.
 
 Эти перенаправления можно визуализировать следующим образом:
 
diff --git a/documentation/content/ru/books/arch-handbook/kobj/_index.po b/documentation/content/ru/books/arch-handbook/kobj/_index.po
index 26ad1feeb8..16e7975549 100644
--- a/documentation/content/ru/books/arch-handbook/kobj/_index.po
+++ b/documentation/content/ru/books/arch-handbook/kobj/_index.po
@@ -1,12 +1,12 @@
 # SOME DESCRIPTIVE TITLE
 # Copyright (C) YEAR The FreeBSD Project
 # This file is distributed under the same license as the FreeBSD Documentation package.
-# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025.
+# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025, 2026.
 msgid ""
 msgstr ""
 "Project-Id-Version: FreeBSD Documentation VERSION\n"
 "POT-Creation-Date: 2025-05-01 19:56-0300\n"
-"PO-Revision-Date: 2025-11-26 04:45+0000\n"
+"PO-Revision-Date: 2026-04-05 04:45+0000\n"
 "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
 "Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
 "documentation/booksarch-handbookkobj_index/ru/>\n"
@@ -129,7 +129,7 @@ msgid ""
 "associated function within the class is used; otherwise, the default "
 "function associated with the method description is used."
 msgstr ""
-"Класс создается путем построения таблицы методов, связывающей одну или "
+"Класс создаётся путем построения таблицы методов, связывающей одну или "
 "несколько функций с описаниями методов. Перед использованием класс "
 "компилируется. В процессе компиляции выделяется кэш и связывается с классом. "
 "Уникальный идентификатор назначается каждому описанию метода в таблице "
diff --git a/documentation/content/ru/books/arch-handbook/mac/_index.adoc b/documentation/content/ru/books/arch-handbook/mac/_index.adoc
index 133fe61ed3..dd87dd1b0f 100644
--- a/documentation/content/ru/books/arch-handbook/mac/_index.adoc
+++ b/documentation/content/ru/books/arch-handbook/mac/_index.adoc
@@ -126,7 +126,7 @@ FreeBSD включает экспериментальную поддержку 
 [[mac-framework-kernel-arch-synchronization]]
 === Список политик параллелизма и синхронизации
 
-Поскольку набор активных политик может изменяться во время выполнения, а вызов точек входа не является атомарным, требуется синхронизация для предотвращения загрузки или выгрузки политик во время выполнения вызова точки входа, фиксируя набор активных политик на время выполнения. Это достигается с помощью счетчика занятости фреймворка: при входе в точку входа счетчик увеличивается; при выходе из нее — уменьшается. Пока счетчик занятости повышен, изменения списка политик запрещены, и потоки, пытающиеся изменить список политик, буд
т ждать, пока список не освободится. Счетчик занятости защищается мьютексом, а условная переменная используется для пробуждения потоков, ожидающих изменений списка политик. Побочным эффектом этой модели синхронизации является то, что рекурсивный вход в MAC Framework из модуля политики разрешен, хотя обычно не используется.
+Поскольку набор активных политик может изменяться во время выполнения, а вызов точек входа не является атомарным, требуется синхронизация для предотвращения загрузки или выгрузки политик во время выполнения вызова точки входа, фиксируя набор активных политик на время выполнения. Это достигается с помощью счетчика занятости фреймворка: при входе в точку входа счетчик увеличивается; при выходе из неё — уменьшается. Пока счетчик занятости повышен, изменения списка политик запрещены, и потоки, пытающиеся изменить список политик, буд
т ждать, пока список не освободится. Счетчик занятости защищается мьютексом, а условная переменная используется для пробуждения потоков, ожидающих изменений списка политик. Побочным эффектом этой модели синхронизации является то, что рекурсивный вход в MAC Framework из модуля политики разрешен, хотя обычно не используется.
 
 Для снижения накладных расходов счётчика занятости используются различные оптимизации, включая избегание полной стоимости увеличения и уменьшения, если список пуст или содержит только статические записи (политики, загруженные до старта системы, которые нельзя выгрузить). Также предоставляется опция на этапе компиляции, которая предотвращает любые изменения в наборе загруженных политик во время выполнения, что устраняет затраты на блокировку мьютексов, связанные с поддержкой динамически загружаемых и выгружаемых политик, поско
льку синхронизация больше не требуется.
 
@@ -770,7 +770,7 @@ void mpo_destroy_ifnet_label(struct label *label);
 | 
 |===
 
-Уничтожить метку на удаленном интерфейсе. В этой точке входа модуль политики должен освободить любое внутреннее хранилище, связанное с `label`, чтобы её можно было уничтожить.
+Уничтожить метку на удалённом интерфейсе. В этой точке входа модуль политики должен освободить любое внутреннее хранилище, связанное с `label`, чтобы её можно было уничтожить.
 
 [[mac-mpo-destroy-ipq-label]]
 ==== `mpo_destroy_ipq_label`
@@ -1605,7 +1605,7 @@ void mpo_create_devfs_device(dev_t dev, struct devfs_dirent *devfs_dirent,
 | 
 
 |`devfs_dirent`
-|Запись в каталоге devfs, для которой создается метка.
+|Запись в каталоге devfs, для которой создаётся метка.
 | 
 
 |`label`
@@ -2178,7 +2178,7 @@ void mpo_set_socket_peer_from_socket(struct socket *oldsocket,
 | 
 |===
 
-Установите метку однорангового узла на потоковом UNIX-сокете из переданной конечной точки удаленного сокета. Этот вызов будет выполнен при соединении пары сокетов и будет произведен для обеих конечных точек.
+Установите метку однорангового узла на потоковом UNIX-сокете из переданной конечной точки удалённого сокета. Этот вызов будет выполнен при соединении пары сокетов и будет произведен для обеих конечных точек.
 
 [[mac-net-labeling-event-ops]]
 ==== Действия с событиями меток сетевых объектов
diff --git a/documentation/content/ru/books/arch-handbook/mac/_index.po b/documentation/content/ru/books/arch-handbook/mac/_index.po
index e6580c7a99..da876cc02b 100644
--- a/documentation/content/ru/books/arch-handbook/mac/_index.po
+++ b/documentation/content/ru/books/arch-handbook/mac/_index.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FreeBSD Documentation VERSION\n"
 "POT-Creation-Date: 2025-05-01 19:56-0300\n"
-"PO-Revision-Date: 2026-03-04 20:01+0000\n"
+"PO-Revision-Date: 2026-04-05 04:45+0000\n"
 "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
 "Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
 "documentation/booksarch-handbookmac_index/ru/>\n"
@@ -433,7 +433,7 @@ msgstr ""
 "предотвращения загрузки или выгрузки политик во время выполнения вызова "
 "точки входа, фиксируя набор активных политик на время выполнения. Это "
 "достигается с помощью счетчика занятости фреймворка: при входе в точку входа "
-"счетчик увеличивается; при выходе из нее — уменьшается. Пока счетчик "
+"счетчик увеличивается; при выходе из неё — уменьшается. Пока счетчик "
 "занятости повышен, изменения списка политик запрещены, и потоки, пытающиеся "
 "изменить список политик, будут ждать, пока список не освободится. Счетчик "
 "занятости защищается мьютексом, а условная переменная используется для "
@@ -2607,7 +2607,7 @@ msgid ""
 "module should free any internal storage associated with `label` so that it "
 "may be destroyed."
 msgstr ""
-"Уничтожить метку на удаленном интерфейсе. В этой точке входа модуль политики "
+"Уничтожить метку на удалённом интерфейсе. В этой точке входа модуль политики "
 "должен освободить любое внутреннее хранилище, связанное с `label`, чтобы её "
 "можно было уничтожить."
 
@@ -3720,7 +3720,7 @@ msgstr "`devfs_dirent`"
 #: documentation/content/en/books/arch-handbook/mac/_index.adoc:1790
 #, no-wrap
 msgid "Devfs directory entry to be labeled."
-msgstr "Запись в каталоге devfs, для которой создается метка."
+msgstr "Запись в каталоге devfs, для которой создаётся метка."
 
 #. type: Table
 #: documentation/content/en/books/arch-handbook/mac/_index.adoc:1794
@@ -4942,7 +4942,7 @@ msgid ""
 "and will be made for both endpoints."
 msgstr ""
 "Установите метку однорангового узла на потоковом UNIX-сокете из переданной "
-"конечной точки удаленного сокета. Этот вызов будет выполнен при соединении "
+"конечной точки удалённого сокета. Этот вызов будет выполнен при соединении "
 "пары сокетов и будет произведен для обеих конечных точек."
 
 #. type: Title ====
diff --git a/documentation/content/ru/books/arch-handbook/newbus/_index.adoc b/documentation/content/ru/books/arch-handbook/newbus/_index.adoc
index a132c0da51..0a00ad2dd6 100644
--- a/documentation/content/ru/books/arch-handbook/newbus/_index.adoc
+++ b/documentation/content/ru/books/arch-handbook/newbus/_index.adoc
@@ -152,7 +152,7 @@ Newbus также позволяет определять методы инте
       int FOO_DOIT_TO_CHILD(device_t dev, device_t child);
 ....
 
-Исходный файл `[.filename]#foo_if.c#` также создается для сопровождения автоматически сгенерированного заголовочного файла; он содержит реализации функций, которые ищут расположение соответствующих функций в таблице методов объекта и вызывают эту функцию.
+Исходный файл `[.filename]#foo_if.c#` также создаётся для сопровождения автоматически сгенерированного заголовочного файла; он содержит реализации функций, которые ищут расположение соответствующих функций в таблице методов объекта и вызывают эту функцию.
 
 Система определяет два основных интерфейса. Первый фундаментальный интерфейс называется _"device"_ (устройство) и включает методы, которые относятся ко всем устройствам. Методы в интерфейсе _"device"_ включают _"probe"_ (обнаружение), _"attach"_ (присоединение) и _"detach"_ (отсоединение) для управления обнаружением оборудования, а также _"shutdown"_ (выключение), _"suspend"_ (приостановка) и _"resume"_ (возобновление) для уведомления о критических событиях.
 
diff --git a/documentation/content/ru/books/arch-handbook/newbus/_index.po b/documentation/content/ru/books/arch-handbook/newbus/_index.po
index dc3d29458c..5de7be37bd 100644
--- a/documentation/content/ru/books/arch-handbook/newbus/_index.po
+++ b/documentation/content/ru/books/arch-handbook/newbus/_index.po
@@ -1,12 +1,12 @@
 # SOME DESCRIPTIVE TITLE
 # Copyright (C) YEAR The FreeBSD Project
 # This file is distributed under the same license as the FreeBSD Documentation package.
-# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025.
+# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025, 2026.
 msgid ""
 msgstr ""
 "Project-Id-Version: FreeBSD Documentation VERSION\n"
 "POT-Creation-Date: 2025-05-01 19:56-0300\n"
-"PO-Revision-Date: 2025-07-05 04:45+0000\n"
+"PO-Revision-Date: 2026-04-05 04:45+0000\n"
 "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
 "Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
 "documentation/booksarch-handbooknewbus_index/ru/>\n"
@@ -466,7 +466,7 @@ msgid ""
 "functions which look up the location of the relevant functions in the "
 "object's method table and call that function."
 msgstr ""
-"Исходный файл `[.filename]#foo_if.c#` также создается для сопровождения "
+"Исходный файл `[.filename]#foo_if.c#` также создаётся для сопровождения "
 "автоматически сгенерированного заголовочного файла; он содержит реализации "
 "функций, которые ищут расположение соответствующих функций в таблице методов "
 "объекта и вызывают эту функцию."
diff --git a/documentation/content/ru/books/arch-handbook/scsi/_index.adoc b/documentation/content/ru/books/arch-handbook/scsi/_index.adoc
index 399cde1b8c..ae492e234c 100644
--- a/documentation/content/ru/books/arch-handbook/scsi/_index.adoc
+++ b/documentation/content/ru/books/arch-handbook/scsi/_index.adoc
@@ -364,7 +364,7 @@ CAM поддерживает SCSI-контроллеры, работающие 
 
 Затем настройте команду SCSI. Хранилище команды может быть указано в CCB различными способами, определяемыми флагами CCB. Буфер команды может содержаться в CCB или указываться на него; в последнем случае указатель может быть физическим или виртуальным. Поскольку оборудованию обычно требуется физический адрес, мы всегда преобразуем адрес в физический, как правило, используя API busdma.
 
-В случае, если запрашивается физический адрес, допустимо вернуть CCB со статусом `CAM_REQ_INVALID`, текущие драйверы так и делают. При необходимости физический адрес также может быть преобразован или отображен обратно в виртуальный, но с большими трудностями, поэтому мы этого не делаем.
+В случае, если запрашивается физический адрес, допустимо вернуть CCB со статусом `CAM_REQ_INVALID`, текущие драйверы так и делают. При необходимости физический адрес также может быть преобразован или отображён обратно в виртуальный, но с большими трудностями, поэтому мы этого не делаем.
 
 [.programlisting]
 ....
@@ -902,7 +902,7 @@ CAM поддерживает SCSI-контроллеры, работающие 
 static void xxx_poll(struct cam_sim *);
 ....
 
-Функция poll используется для имитации прерываний, когда подсистема прерываний не функционирует (например, когда система аварийно завершила работу и создает дамп памяти). Подсистема CAM устанавливает соответствующий уровень прерывания перед вызовом процедуры poll. Таким образом, все, что ей нужно сделать, — это вызвать процедуру прерывания (или наоборот, процедура poll может выполнять реальные действия, а процедура прерывания просто вызывает процедуру poll). Зачем тогда нужна отдельная функция? Это связано с различными соглашениями о вызов
ах. Процедура `xxx_poll` получает указатель на структуру cam_sim в качестве аргумента, в то время как процедура прерывания PCI по общему соглашению получает указатель на структуру `xxx_softc`, а процедура прерывания ISA получает только номер устройства. Таким образом, процедура poll обычно выглядит следующим образом:
+Функция poll используется для имитации прерываний, когда подсистема прерываний не функционирует (например, когда система аварийно завершила работу и создаёт дамп памяти). Подсистема CAM устанавливает соответствующий уровень прерывания перед вызовом процедуры poll. Таким образом, все, что ей нужно сделать, — это вызвать процедуру прерывания (или наоборот, процедура poll может выполнять реальные действия, а процедура прерывания просто вызывает процедуру poll). Зачем тогда нужна отдельная функция? Это связано с различными соглашениями о вызов
ах. Процедура `xxx_poll` получает указатель на структуру cam_sim в качестве аргумента, в то время как процедура прерывания PCI по общему соглашению получает указатель на структуру `xxx_softc`, а процедура прерывания ISA получает только номер устройства. Таким образом, процедура poll обычно выглядит следующим образом:
 
 [.programlisting]
 ....
diff --git a/documentation/content/ru/books/arch-handbook/scsi/_index.po b/documentation/content/ru/books/arch-handbook/scsi/_index.po
index 59aea88e0f..ad93c332ea 100644
--- a/documentation/content/ru/books/arch-handbook/scsi/_index.po
+++ b/documentation/content/ru/books/arch-handbook/scsi/_index.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FreeBSD Documentation VERSION\n"
 "POT-Creation-Date: 2025-05-01 19:56-0300\n"
-"PO-Revision-Date: 2026-03-04 20:01+0000\n"
+"PO-Revision-Date: 2026-04-05 04:45+0000\n"
 "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
 "Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
 "documentation/booksarch-handbookscsi_index/ru/>\n"
@@ -1295,7 +1295,7 @@ msgid ""
 msgstr ""
 "В случае, если запрашивается физический адрес, допустимо вернуть CCB со "
 "статусом `CAM_REQ_INVALID`, текущие драйверы так и делают. При необходимости "
-"физический адрес также может быть преобразован или отображен обратно в "
+"физический адрес также может быть преобразован или отображён обратно в "
 "виртуальный, но с большими трудностями, поэтому мы этого не делаем."
 
 #. type: delimited block . 4
@@ -2982,7 +2982,7 @@ msgid ""
 msgstr ""
 "Функция poll используется для имитации прерываний, когда подсистема "
 "прерываний не функционирует (например, когда система аварийно завершила "
-"работу и создает дамп памяти). Подсистема CAM устанавливает соответствующий "
+"работу и создаёт дамп памяти). Подсистема CAM устанавливает соответствующий "
 "уровень прерывания перед вызовом процедуры poll. Таким образом, все, что ей "
 "нужно сделать, — это вызвать процедуру прерывания (или наоборот, процедура "
 "poll может выполнять реальные действия, а процедура прерывания просто "
diff --git a/documentation/content/ru/books/arch-handbook/smp/_index.po b/documentation/content/ru/books/arch-handbook/smp/_index.po
index 0b5a7208a3..8eed7ab72a 100644
--- a/documentation/content/ru/books/arch-handbook/smp/_index.po
+++ b/documentation/content/ru/books/arch-handbook/smp/_index.po
@@ -1,12 +1,12 @@
 # SOME DESCRIPTIVE TITLE
 # Copyright (C) YEAR The FreeBSD Project
 # This file is distributed under the same license as the FreeBSD Documentation package.
-# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025.
+# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025, 2026.
 msgid ""
 msgstr ""
 "Project-Id-Version: FreeBSD Documentation VERSION\n"
 "POT-Creation-Date: 2025-05-01 19:56-0300\n"
-"PO-Revision-Date: 2025-12-18 04:45+0000\n"
+"PO-Revision-Date: 2026-03-08 09:11+0000\n"
 "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
 "Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
 "documentation/booksarch-handbooksmp_index/ru/>\n"
diff --git a/documentation/content/ru/books/arch-handbook/sound/_index.adoc b/documentation/content/ru/books/arch-handbook/sound/_index.adoc
index 453ee52e64..70441feb97 100644
--- a/documentation/content/ru/books/arch-handbook/sound/_index.adoc
+++ b/documentation/content/ru/books/arch-handbook/sound/_index.adoc
@@ -104,7 +104,7 @@ man:pcm[4] — это центральный компонент подсисте
 
 Существует два возможных способа работы с устройствами, не поддерживающими PnP:
 
-* Используйте метод `device_identify()` (пример: [.filename]#sound/isa/es1888.c#). Метод `device_identify()` проверяет наличие оборудования по известным адресам и, если находит поддерживаемое устройство, создает новое pcm-устройство, которое затем передаётся для probe/attach.
+* Используйте метод `device_identify()` (пример: [.filename]#sound/isa/es1888.c#). Метод `device_identify()` проверяет наличие оборудования по известным адресам и, если находит поддерживаемое устройство, создаёт новое pcm-устройство, которое затем передаётся для probe/attach.
 * Используйте пользовательскую конфигурацию ядра с соответствующими подсказками для устройств pcm (пример: [.filename]#sound/isa/mss.c#).
 
 [.filename]#pcm# драйверы должны реализовывать подпрограммы `device_suspend`, `device_resume` и `device_shutdown`, чтобы управление питанием и выгрузка модулей работали корректно.
diff --git a/documentation/content/ru/books/arch-handbook/sound/_index.po b/documentation/content/ru/books/arch-handbook/sound/_index.po
index 57d7fdbc59..3e9abd9cac 100644
--- a/documentation/content/ru/books/arch-handbook/sound/_index.po
+++ b/documentation/content/ru/books/arch-handbook/sound/_index.po
@@ -1,12 +1,12 @@
 # SOME DESCRIPTIVE TITLE
 # Copyright (C) YEAR The FreeBSD Project
 # This file is distributed under the same license as the FreeBSD Documentation package.
-# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025.
+# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025, 2026.
 msgid ""
 msgstr ""
 "Project-Id-Version: FreeBSD Documentation VERSION\n"
 "POT-Creation-Date: 2025-11-08 16:17+0000\n"
-"PO-Revision-Date: 2025-11-12 04:45+0000\n"
+"PO-Revision-Date: 2026-04-05 04:45+0000\n"
 "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
 "Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
 "documentation/booksarch-handbooksound_index/ru/>\n"
@@ -319,7 +319,7 @@ msgid ""
 msgstr ""
 "Используйте метод `device_identify()` (пример: [.filename]#sound/isa/es1888."
 "c#). Метод `device_identify()` проверяет наличие оборудования по известным "
-"адресам и, если находит поддерживаемое устройство, создает новое pcm-"
+"адресам и, если находит поддерживаемое устройство, создаёт новое pcm-"
 "устройство, которое затем передаётся для probe/attach."
 
 #. type: Plain text
diff --git a/documentation/content/ru/books/arch-handbook/sysinit/_index.adoc b/documentation/content/ru/books/arch-handbook/sysinit/_index.adoc
index 8d6ec7c1e0..450b8d5170 100644
--- a/documentation/content/ru/books/arch-handbook/sysinit/_index.adoc
+++ b/documentation/content/ru/books/arch-handbook/sysinit/_index.adoc
@@ -87,7 +87,7 @@ SYSUNINIT(uniquifier, subsystem, order, func, ident)
 
 === Запуск
 
-Макрос `SYSINIT()` создает необходимые данные SYSINIT в наборе данных инициализации системы, чтобы SYSINIT мог отсортировать и выполнить функцию при запуске системы и загрузке модуля. `SYSINIT()` принимает уникальный идентификатор, который SYSINIT использует для идентификации конкретных данных вызова функции, порядок подсистемы, порядок элемента подсистемы, функцию для вызова и данные для передачи в функцию. Все функции должны принимать аргумент в виде константного указателя.
+Макрос `SYSINIT()` создаёт необходимые данные SYSINIT в наборе данных инициализации системы, чтобы SYSINIT мог отсортировать и выполнить функцию при запуске системы и загрузке модуля. `SYSINIT()` принимает уникальный идентификатор, который SYSINIT использует для идентификации конкретных данных вызова функции, порядок подсистемы, порядок элемента подсистемы, функцию для вызова и данные для передачи в функцию. Все функции должны принимать аргумент в виде константного указателя.
 
 .Пример `SYSINIT()`
 [example]
diff --git a/documentation/content/ru/books/arch-handbook/sysinit/_index.po b/documentation/content/ru/books/arch-handbook/sysinit/_index.po
index b8e7b4377d..cb124c78a2 100644
--- a/documentation/content/ru/books/arch-handbook/sysinit/_index.po
+++ b/documentation/content/ru/books/arch-handbook/sysinit/_index.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FreeBSD Documentation VERSION\n"
 "POT-Creation-Date: 2025-05-01 19:56-0300\n"
-"PO-Revision-Date: 2026-03-04 20:01+0000\n"
+"PO-Revision-Date: 2026-04-05 04:45+0000\n"
 "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
 "Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
 "documentation/booksarch-handbooksysinit_index/ru/>\n"
@@ -206,7 +206,7 @@ msgid ""
 "subsystem element order, the function to call, and the data to pass the "
 "function. All functions must take a constant pointer argument."
 msgstr ""
-"Макрос `SYSINIT()` создает необходимые данные SYSINIT в наборе данных "
+"Макрос `SYSINIT()` создаёт необходимые данные SYSINIT в наборе данных "
 "инициализации системы, чтобы SYSINIT мог отсортировать и выполнить функцию "
 "при запуске системы и загрузке модуля. `SYSINIT()` принимает уникальный "
 "идентификатор, который SYSINIT использует для идентификации конкретных "
diff --git a/documentation/content/ru/books/arch-handbook/usb/_index.po b/documentation/content/ru/books/arch-handbook/usb/_index.po
index 372952d6f3..ab16e356c9 100644
--- a/documentation/content/ru/books/arch-handbook/usb/_index.po
+++ b/documentation/content/ru/books/arch-handbook/usb/_index.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FreeBSD Documentation VERSION\n"
 "POT-Creation-Date: 2025-11-08 16:17+0000\n"
-"PO-Revision-Date: 2026-03-04 20:01+0000\n"
+"PO-Revision-Date: 2026-03-08 09:11+0000\n"
 "Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
 "Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
 "documentation/booksarch-handbookusb_index/ru/>\n"


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a0a0636.24849.b46a85e>