Update documentation

This commit is contained in:
2025-12-04 21:01:52 +03:00
parent 6be0a94ba9
commit baebeca55b
14 changed files with 747 additions and 508 deletions
+3 -3
View File
@@ -24,10 +24,10 @@ Argenta предназначена для создания приложений,
**Ключевые особенности:** **Ключевые особенности:**
* **Интерактивные сессии**: В отличие от традиционных CLI-инструментов, ``Argenta`` создаёт циклические сессии, позволяя пользователю выполнять команды последовательно, не перезапуская приложение. * **Интерактивные сессии**: В отличие от традиционных CLI-инструментов, ``Argenta`` создаёт циклические сессии, позволяя пользователю выполнять команды последовательно, не перезапуская приложение.
* **Декларативный синтаксис**: Команды и их обработчики объявляются с помощью простых декораторов, что делает код чистым и интуитивно понятным. * **Декларативный синтаксис**: Команды и их обработчики объявляются с помощью простых декораторов, что делает код интуитивно понятным и позволяет сосредоточиться на том, "что" вы хотите сделать, а не "как".
* **Нативный DI**: Благодаря интеграции с `dishka <https://dishka.readthedocs.io/en/stable/>`_, вы можете легко внедрять зависимости прямо в обработчики команд, что упрощает их тестирование и переиспользование. * **Нативный DI**: Благодаря интеграции с [dishka](https://dishka.readthedocs.io/en/stable/), вы можете легко внедрять зависимости прямо в обработчики команд, что упрощает их тестирование, позволяет избежать мутабельных глобалов и многое другое.
* **Автоматическая валидация и парсинг**: Библиотека берёт на себя обработку флагов и аргументов командной строки, включая их парсинг, валидацию и преобразование типов. * **Автоматическая валидация и парсинг**: Библиотека берёт на себя обработку флагов и аргументов командной строки, включая их парсинг, валидацию и преобразование типов.
* **Гибкая настройка**: Вы можете легко кастомизировать системные сообщения, форматирование вывода и т.д. * **Гибкая настройка**: Вы можете легко кастомизировать системные сообщения, форматирование вывода, ссоздавать кастомные обработчики нестандартного поведения и т.д.
----- -----
+49 -33
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-02 22:27+0300\n" "POT-Creation-Date: 2025-12-04 20:41+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -54,7 +54,9 @@ msgstr "What is it and why?"
msgid "" msgid ""
"**Библиотека для построения модульных CLI-приложений с простым и приятным" "**Библиотека для построения модульных CLI-приложений с простым и приятным"
" API.**" " API.**"
msgstr "**A library for building modular CLI applications with a simple and pleasant API.**" msgstr ""
"**A library for building modular CLI applications with a simple and "
"pleasant API.**"
#: ../../index.rst:14 #: ../../index.rst:14
msgid "" msgid ""
@@ -64,8 +66,9 @@ msgid ""
"предоставляя для этого удобные абстракции." "предоставляя для этого удобные абстракции."
msgstr "" msgstr ""
"If you have functionality that you want to provide as a CLI application, " "If you have functionality that you want to provide as a CLI application, "
"Argenta will help you with that. The main goal of the library is to enable " "Argenta will help you with that. The main goal of the library is to "
"developers to focus on implementing their ideas by providing convenient abstractions." "enable developers to focus on implementing their ideas by providing "
"convenient abstractions."
#: ../../index.rst:17 #: ../../index.rst:17
msgid "App example" msgid "App example"
@@ -74,24 +77,30 @@ msgstr ""
#: ../../index.rst:20 #: ../../index.rst:20
msgid "" msgid ""
"Argenta предназначена для создания приложений, работающих в собственном " "Argenta предназначена для создания приложений, работающих в собственном "
"контексте (scope). Это означает, что при запуске пользователь входит в " "контексте (scope). Это означает, что приложение запускается один раз и "
"интерактивную сессию, где ему доступна вся реализованная вами " "создаёт интерактивную сессию, похожую на Python REPL или MySQL консоль. "
"функциональность." "При запуске пользователь входит в эту сессию, где ему доступна вся "
"реализованная вами функциональность."
msgstr "" msgstr ""
"Argenta is designed for creating applications that work in their own context " "Argenta is designed for creating applications that work in their own "
"(scope). This means that when launched, the user enters an interactive session " "context (scope). This means that the application starts once and creates "
"where all the functionality you've implemented is available." "an interactive session, similar to Python REPL or MySQL console. When "
"launched, the user enters this session where all the functionality you've "
"implemented is available."
#: ../../index.rst:22 #: ../../index.rst:22
msgid "" msgid ""
"Один из ключевых принципов библиотеки — цикличность. После выполнения " "Один из ключевых принципов библиотеки — цикличность. После выполнения "
"команды пользователь остаётся в интерактивной сессии, в отличие от таких " "команды пользователь остаётся в интерактивной сессии и может выполнять "
"библиотек, как ``argparse``, ``click`` и ``typer``. Выход из сессии " "следующие команды, в отличие от таких библиотек, как ``argparse``, "
"контролируется пользователем." "``click`` и ``typer``, где приложение завершается после каждой команды. "
"Выход из сессии контролируется пользователем."
msgstr "" msgstr ""
"One of the key principles of the library is cyclicity. After executing a command, " "One of the key principles of the library is cyclicity. After executing a "
"the user remains in the interactive session, unlike libraries such as ``argparse``, " "command, the user remains in the interactive session and can execute "
"``click``, and ``typer``. Exiting the session is controlled by the user." "subsequent commands, unlike libraries such as ``argparse``, ``click``, "
"and ``typer``, where the application terminates after each command. "
"Exiting the session is controlled by the user."
#: ../../index.rst:24 #: ../../index.rst:24
msgid "**Ключевые особенности:**" msgid "**Ключевые особенности:**"
@@ -103,28 +112,32 @@ msgid ""
"``Argenta`` создаёт циклические сессии, позволяя пользователю выполнять " "``Argenta`` создаёт циклические сессии, позволяя пользователю выполнять "
"команды последовательно, не перезапуская приложение." "команды последовательно, не перезапуская приложение."
msgstr "" msgstr ""
"**Interactive sessions**: Unlike traditional CLI tools, ``Argenta`` creates " "**Interactive sessions**: Unlike traditional CLI tools, ``Argenta`` "
"cyclical sessions, allowing users to execute commands sequentially without " "creates cyclical sessions, allowing users to execute commands "
"restarting the application." "sequentially without restarting the application."
#: ../../index.rst:27 #: ../../index.rst:27
msgid "" msgid ""
"**Декларативный синтаксис**: Команды и их обработчики объявляются с " "**Декларативный синтаксис**: Команды и их обработчики объявляются с "
"помощью простых декораторов, что делает код чистым и интуитивно понятным." "помощью простых декораторов, что делает код интуитивно понятным и "
"позволяет сосредоточиться на том, \"что\" вы хотите сделать, а не "
"\"как\"."
msgstr "" msgstr ""
"**Declarative syntax**: Commands and their handlers are declared using simple " "**Declarative syntax**: Commands and their handlers are declared using "
"decorators, making the code clean and intuitive." "simple decorators, making the code intuitive and allowing you to focus "
"on \"what\" you want to do, not \"how\"."
#: ../../index.rst:28 #: ../../index.rst:28
msgid "" msgid ""
"**Нативный DI**: Благодаря интеграции с `dishka " "**Нативный DI**: Благодаря интеграции с "
"<https://dishka.readthedocs.io/en/stable/>`_, вы можете легко внедрять " "[dishka](https://dishka.readthedocs.io/en/stable/), вы можете легко "
"зависимости прямо в обработчики команд, что упрощает их тестирование и " "внедрять зависимости прямо в обработчики команд, что упрощает их "
"переиспользование." "тестирование, позволяет избежать мутабельных глобалов и многое другое."
msgstr "" msgstr ""
"**Native DI**: Thanks to integration with `dishka " "**Native DI**: Thanks to integration with `dishka "
"<https://dishka.readthedocs.io/en/stable/>`_, you can easily inject " "<https://dishka.readthedocs.io/en/stable/>`_, you can easily inject "
"dependencies directly into command handlers, simplifying their testing and reuse." "dependencies directly into command handlers, simplifying their testing, "
"avoiding mutable globals, and much more."
#: ../../index.rst:29 #: ../../index.rst:29
msgid "" msgid ""
@@ -132,16 +145,19 @@ msgid ""
"обработку флагов и аргументов командной строки, включая их парсинг, " "обработку флагов и аргументов командной строки, включая их парсинг, "
"валидацию и преобразование типов." "валидацию и преобразование типов."
msgstr "" msgstr ""
"**Automatic validation and parsing**: The library handles command-line flags " "**Automatic validation and parsing**: The library handles command-line "
"and arguments, including their parsing, validation, and type conversion." "flags and arguments, including their parsing, validation, and type "
"conversion."
#: ../../index.rst:30 #: ../../index.rst:30
msgid "" msgid ""
"**Гибкая настройка**: Вы можете легко кастомизировать системные " "**Гибкая настройка**: Вы можете легко кастомизировать системные "
"сообщения, форматирование вывода и т.д." "сообщения, форматирование вывода, создавать кастомные обработчики "
"нестандартного поведения и т.д."
msgstr "" msgstr ""
"**Flexible configuration**: You can easily customize system messages, " "**Flexible configuration**: You can easily customize system messages, "
"output formatting, and more." "output formatting, create custom handlers for non-standard behavior, "
"and more."
#: ../../index.rst:35 #: ../../index.rst:35
msgid "Архитектура и жизненный цикл" msgid "Архитектура и жизненный цикл"
@@ -152,8 +168,8 @@ msgid ""
"Следующая диаграмма иллюстрирует, как компоненты Argenta взаимодействуют " "Следующая диаграмма иллюстрирует, как компоненты Argenta взаимодействуют "
"друг с другом, обрабатывая ввод пользователя." "друг с другом, обрабатывая ввод пользователя."
msgstr "" msgstr ""
"The following diagram illustrates how Argenta components interact with each " "The following diagram illustrates how Argenta components interact with "
"other while processing user input." "each other while processing user input."
#: ../../index.rst:39 #: ../../index.rst:39
msgid "Request Lifecycle Diagram" msgid "Request Lifecycle Diagram"
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-02 22:27+0300\n" "POT-Creation-Date: 2025-12-04 20:39+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -20,7 +20,7 @@ msgstr ""
#: ../../root/api/app/index.rst:4 #: ../../root/api/app/index.rst:4
msgid "App" msgid "App"
msgstr "" msgstr "App"
#: ../../root/api/app/index.rst:6 #: ../../root/api/app/index.rst:6
msgid "" msgid ""
@@ -30,8 +30,9 @@ msgid ""
"роутеров, обработчиков и системных сообщений." "роутеров, обработчиков и системных сообщений."
msgstr "" msgstr ""
"The ``App`` object is the core of your console application. It handles " "The ``App`` object is the core of your console application. It handles "
"configuration, lifecycle management, command processing, and user interaction, " "configuration, lifecycle management, command processing, and user "
"coordinating the work of all components: routers, handlers, and system messages." "interaction, coordinating the work of all components: routers, handlers, "
"and system messages."
#: ../../root/api/app/index.rst:11 #: ../../root/api/app/index.rst:11
msgid "Инициализация" msgid "Инициализация"
@@ -58,57 +59,65 @@ msgid ""
"``exit_command``: Команда, которая маркируется как триггер для выхода из " "``exit_command``: Команда, которая маркируется как триггер для выхода из "
"приложения." "приложения."
msgstr "" msgstr ""
"``exit_command``: Command that is marked as a trigger for exiting the application." "``exit_command``: Command that is marked as a trigger for exiting the "
"application."
#: ../../root/api/app/index.rst:44 #: ../../root/api/app/index.rst:44
msgid "" msgid ""
"``system_router_title``: Заголовок для системного роутера (содержит " "``system_router_title``: Заголовок для системного роутера (содержит "
"команду выхода)." "команду выхода)."
msgstr "" msgstr ""
"``system_router_title``: Title for the system router (contains the exit command)." "``system_router_title``: Title for the system router (contains the exit "
"command)."
#: ../../root/api/app/index.rst:45 #: ../../root/api/app/index.rst:45
msgid "" msgid ""
"``ignore_command_register``: Если ``True``, регистр вводимых команд " "``ignore_command_register``: Если ``True``, регистр вводимых команд "
"игнорируется при поиске обработчика." "игнорируется при поиске обработчика."
msgstr "" msgstr ""
"``ignore_command_register``: If ``True``, command case is ignored when searching for a handler." "``ignore_command_register``: If ``True``, command case is ignored when "
"searching for a handler."
#: ../../root/api/app/index.rst:46 #: ../../root/api/app/index.rst:46
msgid "" msgid ""
"``dividing_line``: Тип разделительной линии (``StaticDividingLine`` или " "``dividing_line``: Тип разделительной линии (``StaticDividingLine`` или "
"``DynamicDividingLine``)." "``DynamicDividingLine``)."
msgstr "" msgstr ""
"``dividing_line``: Type of dividing line (``StaticDividingLine`` or ``DynamicDividingLine``)." "``dividing_line``: Type of dividing line (``StaticDividingLine`` or "
"``DynamicDividingLine``)."
#: ../../root/api/app/index.rst:47 #: ../../root/api/app/index.rst:47
msgid "" msgid ""
"``repeat_command_groups_printing``: Если ``True``, список доступных " "``repeat_command_groups_printing``: Если ``True``, список доступных "
"команд выводится перед каждым вводом." "команд выводится перед каждым вводом."
msgstr "" msgstr ""
"``repeat_command_groups_printing``: If ``True``, the list of available commands is displayed before each input." "``repeat_command_groups_printing``: If ``True``, the list of available "
"commands is displayed before each input."
#: ../../root/api/app/index.rst:48 #: ../../root/api/app/index.rst:48
msgid "" msgid ""
"``override_system_messages``: Если ``True``, стандартное форматирование " "``override_system_messages``: Если ``True``, стандартное форматирование "
"(цвета, ASCII-арт) отключается." "(цвета, ASCII-арт) отключается."
msgstr "" msgstr ""
"``override_system_messages``: If ``True``, standard formatting (colors, ASCII art) is disabled." "``override_system_messages``: If ``True``, standard formatting (colors, "
"ASCII art) is disabled."
#: ../../root/api/app/index.rst:49 #: ../../root/api/app/index.rst:49
msgid "" msgid ""
"``autocompleter``: Экземпляр класса :ref:`AutoCompleter " "``autocompleter``: Экземпляр класса :ref:`AutoCompleter "
"<root_api_app_autocompleter>`, отвечающий за автодополнение команд." "<root_api_app_autocompleter>`, отвечающий за автодополнение команд."
msgstr "" msgstr ""
"``autocompleter``: Instance of the :ref:`AutoCompleter <root_api_app_autocompleter>` " "``autocompleter``: Instance of the :ref:`AutoCompleter "
"class responsible for command autocompletion." "<root_api_app_autocompleter>` class responsible for command "
"autocompletion."
#: ../../root/api/app/index.rst:50 #: ../../root/api/app/index.rst:50
msgid "" msgid ""
"``print_func``: Функция для вывода всех системных сообщений (по умолчанию" "``print_func``: Функция для вывода всех системных сообщений (по умолчанию"
" ``rich.Console().print``)." " ``rich.Console().print``)."
msgstr "" msgstr ""
"``print_func``: Function for outputting all system messages (defaults to ``rich.Console().print``)." "``print_func``: Function for outputting all system messages (defaults to "
"``rich.Console().print``)."
#: ../../root/api/app/index.rst:55 #: ../../root/api/app/index.rst:55
msgid "Основные методы" msgid "Основные методы"
@@ -119,7 +128,8 @@ msgid ""
"Регистрирует роутер в приложении. Все команды из этого роутера становятся" "Регистрирует роутер в приложении. Все команды из этого роутера становятся"
" доступными для вызова." " доступными для вызова."
msgstr "" msgstr ""
"Registers a router in the application. All commands from this router become available for invocation." "Registers a router in the application. All commands from this router "
"become available for invocation."
#: ../../root/api/app/index.rst #: ../../root/api/app/index.rst
msgid "Parameters" msgid "Parameters"
@@ -142,7 +152,8 @@ msgid ""
"Добавляет текстовое сообщение, которое выводится при запуске приложения " "Добавляет текстовое сообщение, которое выводится при запуске приложения "
"после ``initial_message``." "после ``initial_message``."
msgstr "" msgstr ""
"Adds a text message that is displayed when the application starts after ``initial_message``." "Adds a text message that is displayed when the application starts after "
"``initial_message``."
#: ../../root/api/app/index.rst:73 #: ../../root/api/app/index.rst:73
msgid "Строка с сообщением." msgid "Строка с сообщением."
@@ -165,11 +176,12 @@ msgid ""
"``App`` позволяет настраивать реакцию на различные события, такие как " "``App`` позволяет настраивать реакцию на различные события, такие как "
"ошибки ввода или неизвестные команды." "ошибки ввода или неизвестные команды."
msgstr "" msgstr ""
"``App`` allows you to configure responses to various events, such as input errors or unknown commands." "``App`` allows you to configure responses to various events, such as "
"input errors or unknown commands."
#: ../../root/api/app/index.rst:86 #: ../../root/api/app/index.rst:86
msgid "" msgid ""
"Подробнее о исключениях и их обработке в соответствующем :ref:`разделе " "Подробнее об исключениях и их обработке в соответствующем :ref:`разделе "
"документации <root_error_handling>`." "документации <root_error_handling>`."
msgstr "" msgstr ""
"For more details on exceptions and their handling, see the corresponding " "For more details on exceptions and their handling, see the corresponding "
@@ -181,7 +193,9 @@ msgstr "Sets the template for formatting command descriptions."
#: ../../root/api/app/index.rst:94 #: ../../root/api/app/index.rst:94
msgid "Обработчик принимает триггер команды (``str``) и её описание (``str``)." msgid "Обработчик принимает триггер команды (``str``) и её описание (``str``)."
msgstr "The handler accepts the command trigger (``str``) and its description (``str``)." msgstr ""
"The handler accepts the command trigger (``str``) and its description "
"(``str``)."
#: ../../root/api/app/index.rst:100 #: ../../root/api/app/index.rst:100
msgid "Устанавливает обработчик при некорректном введённом синтаксисе флагов." msgid "Устанавливает обработчик при некорректном введённом синтаксисе флагов."
@@ -201,7 +215,9 @@ msgstr "Sets the handler for entering an unknown command."
#: ../../root/api/app/index.rst:118 #: ../../root/api/app/index.rst:118
msgid "Обработчик принимает объект ``InputCommand`` - объект введённой команды." msgid "Обработчик принимает объект ``InputCommand`` - объект введённой команды."
msgstr "The handler accepts an ``InputCommand`` object - the entered command object." msgstr ""
"The handler accepts an ``InputCommand`` object - the entered command "
"object."
#: ../../root/api/app/index.rst:124 #: ../../root/api/app/index.rst:124
msgid "Устанавливает обработчик при вводе пустой строки." msgid "Устанавливает обработчик при вводе пустой строки."
@@ -230,12 +246,12 @@ msgid ""
"``rich`` и предназначены для вывода стандартной информации, такой как " "``rich`` и предназначены для вывода стандартной информации, такой как "
"подсказки по использованию." "подсказки по использованию."
msgstr "" msgstr ""
"``PredefinedMessages`` is a container containing a set of ready-to-use messages. " "``PredefinedMessages`` is a container containing a set of ready-to-use "
"They are formatted using ``rich`` syntax and are intended for displaying standard " "messages. They are formatted using ``rich`` syntax and are intended for "
"information, such as usage hints." "displaying standard information, such as usage hints."
#: ../../root/api/app/index.rst:151 #: ../../root/api/app/index.rst:151
msgid "Реккомендуется использовать их при старте приложения." msgid "Рекомендуется использовать их при старте приложения."
msgstr "It is recommended to use them when starting the application." msgstr "It is recommended to use them when starting the application."
#: ../../root/api/app/index.rst:178 #: ../../root/api/app/index.rst:178
+18 -15
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-02 22:27+0300\n" "POT-Creation-Date: 2025-12-04 20:39+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -28,13 +28,13 @@ msgid ""
"данных, которое существует в рамках одной сессии приложения (от запуска " "данных, которое существует в рамках одной сессии приложения (от запуска "
"до выхода). Она предназначена для обмена данными между обработчиками." "до выхода). Она предназначена для обмена данными между обработчиками."
msgstr "" msgstr ""
"``DataBridge`` is an entity that provides temporary data storage that exists within " "``DataBridge`` is an entity that provides temporary data storage that "
"a single application session (from startup to exit). It is designed for data " "exists within a single application session (from startup to exit). It is "
"exchange between handlers." "designed for data exchange between handlers."
#: ../../root/api/bridge.rst:8 #: ../../root/api/bridge.rst:8
msgid "Основной способ получения доступа к ``DataBridge`` — через ``di``." msgid "Основной способ получения доступа к ``DataBridge`` — через DI."
msgstr "The main way to access ``DataBridge`` is through ``di``." msgstr "The main way to access ``DataBridge`` is through DI."
#: ../../root/api/bridge.rst:21 #: ../../root/api/bridge.rst:21
msgid "**Практический пример: Аутентификация**" msgid "**Практический пример: Аутентификация**"
@@ -45,8 +45,8 @@ msgid ""
"Рассмотрим пример, где команда `login` сохраняет токен аутентификации, а " "Рассмотрим пример, где команда `login` сохраняет токен аутентификации, а "
"команда `get-profile` использует его." "команда `get-profile` использует его."
msgstr "" msgstr ""
"Let's consider an example where the `login` command saves an authentication token, " "Let's consider an example where the `login` command saves an "
"and the `get-profile` command uses it." "authentication token, and the `get-profile` command uses it."
#: ../../root/api/bridge.rst:29 #: ../../root/api/bridge.rst:29
msgid "**Как это работает:**" msgid "**Как это работает:**"
@@ -56,29 +56,32 @@ msgstr "**How it works:**"
msgid "" msgid ""
"При вызове обработчика ``dishka`` автоматически внедряет экземпляр " "При вызове обработчика ``dishka`` автоматически внедряет экземпляр "
"``DataBridge``." "``DataBridge``."
msgstr "When calling a handler, ``dishka`` automatically injects a ``DataBridge`` instance." msgstr ""
"When calling a handler, ``dishka`` automatically injects a ``DataBridge``"
" instance."
#: ../../root/api/bridge.rst:32 #: ../../root/api/bridge.rst:32
msgid "" msgid ""
"Команда ``login --username <имя>`` вызывает ``login_handler``, который " "Команда ``login --username <имя>`` вызывает ``login_handler``, который "
"через внедрённый ``data_bridge`` сохраняет токен." "через внедрённый ``data_bridge`` сохраняет токен."
msgstr "" msgstr ""
"The ``login --username <name>`` command calls ``login_handler``, which saves the " "The ``login --username <name>`` command calls ``login_handler``, which "
"token through the injected ``data_bridge``." "saves the token through the injected ``data_bridge``."
#: ../../root/api/bridge.rst:33 #: ../../root/api/bridge.rst:33
msgid "" msgid ""
"Команда ``get-profile`` вызывает ``get_profile_handler``, который так же " "Команда ``get-profile`` вызывает ``get_profile_handler``, который так же "
"получает ``data_bridge`` и извлекает из него токен." "получает ``data_bridge`` и извлекает из него токен."
msgstr "" msgstr ""
"The ``get-profile`` command calls ``get_profile_handler``, which also receives " "The ``get-profile`` command calls ``get_profile_handler``, which also "
"``data_bridge`` and extracts the token from it." "receives ``data_bridge`` and extracts the token from it."
#: ../../root/api/bridge.rst:42 #: ../../root/api/bridge.rst:42
msgid "" msgid ""
"Инициализирует хранилище. При использовании через ``di`` вызывается " "Инициализирует хранилище. При использовании через DI вызывается "
"автоматически." "автоматически."
msgstr "Initializes the storage. When used through ``di``, it is called automatically." msgstr ""
"Initializes the storage. When used through DI, it is called automatically."
#: ../../root/api/bridge.rst:46 #: ../../root/api/bridge.rst:46
msgid "Обновляет хранилище данными из словаря." msgid "Обновляет хранилище данными из словаря."
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-02 22:27+0300\n" "POT-Creation-Date: 2025-12-04 20:39+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -20,7 +20,7 @@ msgstr ""
#: ../../root/api/command/index.rst:4 #: ../../root/api/command/index.rst:4
msgid "Command" msgid "Command"
msgstr "" msgstr "Command"
#: ../../root/api/command/index.rst:6 #: ../../root/api/command/index.rst:6
msgid "" msgid ""
@@ -28,16 +28,17 @@ msgid ""
"команда связывает хэндлер с триггером, введя который он будет вызван для " "команда связывает хэндлер с триггером, введя который он будет вызван для "
"обработки." "обработки."
msgstr "" msgstr ""
"``Command`` is the basic unit of functionality in an application. Each command " "``Command`` is the basic unit of functionality in an application. Each "
"links a handler to a trigger, which when entered will invoke it for processing." "command links a handler to a trigger, which when entered will invoke it "
"for processing."
#: ../../root/api/command/index.rst:8 #: ../../root/api/command/index.rst:8
msgid "" msgid ""
"``Command`` инкапсулирует всю информацию о команде: её триггер (ключевое " "``Command`` инкапсулирует всю информацию о команде: её триггер (ключевое "
"слово для вызова), описание, набор флагов и список псевдонимов." "слово для вызова), описание, набор флагов и список псевдонимов."
msgstr "" msgstr ""
"``Command`` encapsulates all information about a command: its trigger (keyword for invocation), " "``Command`` encapsulates all information about a command: its trigger "
"description, set of flags, and list of aliases." "(keyword for invocation), description, set of flags, and list of aliases."
#: ../../root/api/command/index.rst:13 #: ../../root/api/command/index.rst:13
msgid "Инициализация" msgid "Инициализация"
@@ -68,8 +69,8 @@ msgid ""
"``flags``: Набор флагов для настройки поведения. Может быть одиночным " "``flags``: Набор флагов для настройки поведения. Может быть одиночным "
"объектом ``Flag`` или коллекцией ``Flags``." "объектом ``Flag`` или коллекцией ``Flags``."
msgstr "" msgstr ""
"``flags``: Set of flags for configuring behavior. Can be a single ``Flag`` " "``flags``: Set of flags for configuring behavior. Can be a single "
"object or a ``Flags`` collection." "``Flag`` object or a ``Flags`` collection."
#: ../../root/api/command/index.rst:28 #: ../../root/api/command/index.rst:28
msgid "``aliases``: Список строковых псевдонимов для основного триггера." msgid "``aliases``: Список строковых псевдонимов для основного триггера."
@@ -84,14 +85,16 @@ msgid ""
"Основной триггер команды. Используется для её идентификации при обработке" "Основной триггер команды. Используется для её идентификации при обработке"
" пользовательского ввода." " пользовательского ввода."
msgstr "" msgstr ""
"The main command trigger. Used for its identification when processing user input." "The main command trigger. Used for its identification when processing "
"user input."
#: ../../root/api/command/index.rst:38 #: ../../root/api/command/index.rst:38
msgid "" msgid ""
"Текстовое описание команды. Если не передано, используется значение по " "Текстовое описание команды. Если не передано, используется значение по "
"умолчанию." "умолчанию."
msgstr "" msgstr ""
"Text description of the command. If not provided, the default value is used." "Text description of the command. If not provided, the default value is "
"used."
#: ../../root/api/command/index.rst:42 #: ../../root/api/command/index.rst:42
msgid "" msgid ""
@@ -99,8 +102,9 @@ msgid ""
"передан ``Flag``, то автоматически конвертируется из одиночного в " "передан ``Flag``, то автоматически конвертируется из одиночного в "
"коллекцию при инициализации." "коллекцию при инициализации."
msgstr "" msgstr ""
"A ``Flags`` object containing all registered flags. If a ``Flag`` was passed, " "A ``Flags`` object containing all registered flags. If a ``Flag`` was "
"it is automatically converted from a single flag to a collection during initialization." "passed, it is automatically converted from a single flag to a collection "
"during initialization."
#: ../../root/api/command/index.rst:46 #: ../../root/api/command/index.rst:46
msgid "Список строковых псевдонимов. Пуст, если псевдонимы не заданы." msgid "Список строковых псевдонимов. Пуст, если псевдонимы не заданы."
@@ -113,9 +117,10 @@ msgstr "**Usage example:**"
#: ../../root/api/command/index.rst:54 #: ../../root/api/command/index.rst:54
msgid "" msgid ""
"Подробнее про флаги: :ref:`Flags <root_api_command_flags>` и :ref:`Флаги " "Подробнее про флаги: :ref:`Flags <root_api_command_flags>` и :ref:`Флаги "
"вводимых команд <root_flags>`." "команд <root_flags>`."
msgstr "" msgstr ""
"More about flags: :ref:`Flags <root_api_command_flags>` and :ref:`Input command flags <root_flags>`." "More about flags: :ref:`Flags <root_api_command_flags>` and :ref:`Command "
"flags <root_flags>`."
#: ../../root/api/command/index.rst:59 #: ../../root/api/command/index.rst:59
msgid "Регистрация команд" msgid "Регистрация команд"
@@ -142,8 +147,8 @@ msgid ""
"Псевдонимы позволяют вызывать один и тот же обработчик разными " "Псевдонимы позволяют вызывать один и тот же обработчик разными "
"триггерами, сохраняя флаги и описание команды." "триггерами, сохраняя флаги и описание команды."
msgstr "" msgstr ""
"Aliases allow invoking the same handler with different triggers while preserving " "Aliases allow invoking the same handler with different triggers while "
"the command's flags and description." "preserving the command's flags and description."
#: ../../root/api/command/index.rst:80 #: ../../root/api/command/index.rst:80
msgid "**Пример с псевдонимами:**" msgid "**Пример с псевдонимами:**"
@@ -168,16 +173,18 @@ msgid ""
"обработке пользовательского ввода. Прямая работа с ним возможна при " "обработке пользовательского ввода. Прямая работа с ним возможна при "
"создании пользовательского обработчика для неизвестных команд." "создании пользовательского обработчика для неизвестных команд."
msgstr "" msgstr ""
"``InputCommand`` represents a processed command entered by the user. This internal " "``InputCommand`` represents a processed command entered by the user. This"
"class is created automatically when processing user input. Direct work with it is " " internal class is created automatically when processing user input. "
"possible when creating a custom handler for unknown commands." "Direct work with it is possible when creating a custom handler for "
"unknown commands."
#: ../../root/api/command/index.rst:106 #: ../../root/api/command/index.rst:106
msgid "" msgid ""
"Подробнее о пользовательских обработчиках исключений см. :ref:`здесь " "Подробнее о пользовательских обработчиках исключений см. :ref:`здесь "
"<root_error_handling_unknown_command>`." "<root_error_handling_unknown_command>`."
msgstr "" msgstr ""
"For more details on custom exception handlers, see :ref:`here <root_error_handling_unknown_command>`." "For more details on custom exception handlers, see :ref:`here "
"<root_error_handling_unknown_command>`."
#: ../../root/api/command/index.rst:113 #: ../../root/api/command/index.rst:113
msgid "Строковый триггер, введённый пользователем." msgid "Строковый триггер, введённый пользователем."
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-02 22:27+0300\n" "POT-Creation-Date: 2025-12-04 20:39+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -29,9 +29,10 @@ msgid ""
"информацию о распознанном флаге: его имя, префикс, значение и статус " "информацию о распознанном флаге: его имя, префикс, значение и статус "
"валидации." "валидации."
msgstr "" msgstr ""
"The ``InputFlag`` object represents a flag entered by the user. It is created " "The ``InputFlag`` object represents a flag entered by the user. It is "
"as a result of processing user input and contains information about the recognized " "created as a result of processing user input and contains information "
"flag: its name, prefix, value, and validation status." "about the recognized flag: its name, prefix, value, and validation "
"status."
#: ../../root/api/command/input_flag.rst:10 #: ../../root/api/command/input_flag.rst:10
msgid "" msgid ""
@@ -70,8 +71,12 @@ msgid "Префикс флага: ``-``, ``--`` или ``---``."
msgstr "Flag prefix: ``-``, ``--``, or ``---``." msgstr "Flag prefix: ``-``, ``--``, or ``---``."
#: ../../root/api/command/input_flag.rst:33 #: ../../root/api/command/input_flag.rst:33
msgid "Значение, переданное с флагом. Может быть `None` для флагов без значений." msgid ""
msgstr "Value passed with the flag. Can be `None` for flags without values." "Значение, переданное с флагом. Может быть ``''`` (пустой строкой) для "
"флагов без значений."
msgstr ""
"Value passed with the flag. Can be ``''`` (empty string) for flags "
"without values."
#: ../../root/api/command/input_flag.rst:38 #: ../../root/api/command/input_flag.rst:38
msgid "" msgid ""
@@ -87,11 +92,13 @@ msgstr "Properties"
#: ../../root/api/command/input_flag.rst:46 #: ../../root/api/command/input_flag.rst:46
msgid "string_entity" msgid "string_entity"
msgstr "" msgstr "string_entity"
#: ../../root/api/command/input_flag.rst:54 #: ../../root/api/command/input_flag.rst:54
msgid "Возвращает строковое представление флага в формате ``prefix + name``." msgid "Возвращает строковое представление флага в формате ``prefix + name``."
msgstr "Returns the string representation of the flag in the format ``prefix + name``." msgstr ""
"Returns the string representation of the flag in the format ``prefix + "
"name``."
#: ../../root/api/command/input_flag.rst #: ../../root/api/command/input_flag.rst
msgid "return" msgid "return"
@@ -107,7 +114,7 @@ msgstr "Magic Methods"
#: ../../root/api/command/input_flag.rst:64 #: ../../root/api/command/input_flag.rst:64
msgid "__str__" msgid "__str__"
msgstr "" msgstr "__str__"
#: ../../root/api/command/input_flag.rst:71 #: ../../root/api/command/input_flag.rst:71
msgid "Возвращает строковое представление флага вместе с его значением." msgid "Возвращает строковое представление флага вместе с его значением."
@@ -124,7 +131,7 @@ msgstr "**Usage example:**"
#: ../../root/api/command/input_flag.rst:84 #: ../../root/api/command/input_flag.rst:84
msgid "__repr__" msgid "__repr__"
msgstr "" msgstr "__repr__"
#: ../../root/api/command/input_flag.rst:91 #: ../../root/api/command/input_flag.rst:91
msgid "Возвращает отладочное представление объекта." msgid "Возвращает отладочное представление объекта."
@@ -140,7 +147,7 @@ msgstr ""
#: ../../root/api/command/input_flag.rst:104 #: ../../root/api/command/input_flag.rst:104
msgid "__eq__" msgid "__eq__"
msgstr "" msgstr "__eq__"
#: ../../root/api/command/input_flag.rst:111 #: ../../root/api/command/input_flag.rst:111
msgid "Сравнивает два введённых флага на равенство по имени." msgid "Сравнивает два введённых флага на равенство по имени."
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-02 22:27+0300\n" "POT-Creation-Date: 2025-12-04 20:39+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -28,17 +28,17 @@ msgid ""
"аргументами командной строки. Его основная задача — предоставить удобный " "аргументами командной строки. Его основная задача — предоставить удобный "
"интерфейс для доступа к значениям, переданным при запуске приложения." "интерфейс для доступа к значениям, переданным при запуске приложения."
msgstr "" msgstr ""
"``ArgSpace`` is a container for storing and managing processed command-line arguments. " "``ArgSpace`` is a container for storing and managing processed command-"
"Its main purpose is to provide a convenient interface for accessing values passed at " "line arguments. Its main purpose is to provide a convenient interface for"
"application startup." " accessing values passed at application startup."
#: ../../root/api/orchestrator/argspace.rst:8 #: ../../root/api/orchestrator/argspace.rst:8
msgid "" msgid ""
"``ArgSpace`` создаётся автоматически после обработки аргументов с помощью" "``ArgSpace`` создаётся автоматически после обработки аргументов с помощью"
" ``ArgParser`` и содержит коллекцию объектов ``InputArgument``." " ``ArgParser`` и содержит коллекцию объектов ``InputArgument``."
msgstr "" msgstr ""
"``ArgSpace`` is created automatically after processing arguments using ``ArgParser`` " "``ArgSpace`` is created automatically after processing arguments using "
"and contains a collection of ``InputArgument`` objects." "``ArgParser`` and contains a collection of ``InputArgument`` objects."
#: ../../root/api/orchestrator/argspace.rst:13 #: ../../root/api/orchestrator/argspace.rst:13
msgid "Инициализация" msgid "Инициализация"
@@ -49,8 +49,8 @@ msgid ""
"Создание экземпляров класса ``ArgSpace`` происходит под `капотом`, вам не" "Создание экземпляров класса ``ArgSpace`` происходит под `капотом`, вам не"
" нужно создавать их вручную." " нужно создавать их вручную."
msgstr "" msgstr ""
"Creation of ``ArgSpace`` class instances happens under the hood, you don't need to " "Creation of ``ArgSpace`` class instances happens under the hood, you "
"create them manually." "don't need to create them manually."
#: ../../root/api/orchestrator/argspace.rst:17 #: ../../root/api/orchestrator/argspace.rst:17
msgid "**Атрибуты:**" msgid "**Атрибуты:**"
@@ -66,7 +66,7 @@ msgstr "Methods"
#: ../../root/api/orchestrator/argspace.rst:29 #: ../../root/api/orchestrator/argspace.rst:29
msgid "get_by_name" msgid "get_by_name"
msgstr "" msgstr "get_by_name"
#: ../../root/api/orchestrator/argspace.rst:36 #: ../../root/api/orchestrator/argspace.rst:36
msgid "Возвращает аргумент по имени." msgid "Возвращает аргумент по имени."
@@ -96,7 +96,7 @@ msgstr "**Usage example:**"
#: ../../root/api/orchestrator/argspace.rst:49 #: ../../root/api/orchestrator/argspace.rst:49
msgid "get_by_type" msgid "get_by_type"
msgstr "" msgstr "get_by_type"
#: ../../root/api/orchestrator/argspace.rst:56 #: ../../root/api/orchestrator/argspace.rst:56
msgid "Возвращает все аргументы определённого типа." msgid "Возвращает все аргументы определённого типа."
@@ -119,8 +119,8 @@ msgid ""
"Метод фильтрует ``all_arguments`` по атрибуту ``founder_class`` и " "Метод фильтрует ``all_arguments`` по атрибуту ``founder_class`` и "
"возвращает аргументы, созданные из указанного типа." "возвращает аргументы, созданные из указанного типа."
msgstr "" msgstr ""
"The method filters ``all_arguments`` by the ``founder_class`` attribute and " "The method filters ``all_arguments`` by the ``founder_class`` attribute "
"returns arguments created from the specified type." "and returns arguments created from the specified type."
#: ../../root/api/orchestrator/argspace.rst:71 #: ../../root/api/orchestrator/argspace.rst:71
msgid "InputArgument" msgid "InputArgument"
@@ -144,9 +144,9 @@ msgid ""
"запуска приложения. Типичный сценарий включает обработку аргументов через" "запуска приложения. Типичный сценарий включает обработку аргументов через"
" ``ArgParser`` и последующее извлечение значений из ``ArgSpace``." " ``ArgParser`` и последующее извлечение значений из ``ArgSpace``."
msgstr "" msgstr ""
"``ArgSpace`` is used to access argument values after the application starts. " "``ArgSpace`` is used to access argument values after the application "
"A typical scenario includes processing arguments through ``ArgParser`` and subsequent " "starts. A typical scenario includes processing arguments through "
"extraction of values from ``ArgSpace``." "``ArgParser`` and subsequent extraction of values from ``ArgSpace``."
#: ../../root/api/orchestrator/argspace.rst:83 #: ../../root/api/orchestrator/argspace.rst:83
msgid "**Полный пример:**" msgid "**Полный пример:**"
@@ -154,11 +154,11 @@ msgstr "**Complete example:**"
#: ../../root/api/orchestrator/argspace.rst:88 #: ../../root/api/orchestrator/argspace.rst:88
msgid "" msgid ""
"Доступ к аргументам из обработчиков осуществляется с помощью ``di``. " "Доступ к аргументам из обработчиков осуществляется с помощью DI. "
"Подробнее см. :ref:`здесь <root_dependency_injection>`." "Подробнее см. :ref:`здесь <root_dependency_injection>`."
msgstr "" msgstr ""
"Access to arguments from handlers is done using ``di``. " "Access to arguments from handlers is done using DI. For more details, see"
"For more details, see :ref:`here <root_dependency_injection>`." " :ref:`here <root_dependency_injection>`."
#: ../../root/api/orchestrator/argspace.rst:95 #: ../../root/api/orchestrator/argspace.rst:95
msgid "**Запуск приложения:**" msgid "**Запуск приложения:**"
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-02 22:27+0300\n" "POT-Creation-Date: 2025-12-04 20:39+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -25,11 +25,12 @@ msgstr "Orchestrator"
#: ../../root/api/orchestrator/index.rst:6 #: ../../root/api/orchestrator/index.rst:6
msgid "" msgid ""
"``Orchestrator`` — это высокоуровневый компонент, который конфигурирует и" "``Orchestrator`` — это высокоуровневый компонент, который конфигурирует и"
" оркестрирует приложение, парсер командной строки, ``di`` и остальные " " оркестрирует приложение, парсер командной строки, DI и остальные "
"компоненты, находящиеся по иерархии на уровне с ``App``." "компоненты, находящиеся по иерархии на уровне с ``App``."
msgstr "" msgstr ""
"``Orchestrator`` is a high-level component that configures and orchestrates the application, " "``Orchestrator`` is a high-level component that configures and "
"command-line parser, ``di``, and other components at the same hierarchical level as ``App``." "orchestrates the application, command-line parser, DI, and other "
"components at the same hierarchical level as ``App``."
#: ../../root/api/orchestrator/index.rst:8 #: ../../root/api/orchestrator/index.rst:8
msgid "" msgid ""
@@ -37,8 +38,9 @@ msgid ""
"команд, маршрутизация), ``Orchestrator`` подготавливает окружение для его" "команд, маршрутизация), ``Orchestrator`` подготавливает окружение для его"
" работы и служит точкой входа в приложение." " работы и служит точкой входа в приложение."
msgstr "" msgstr ""
"While ``App`` is responsible for interactive session logic (command input, routing), " "While ``App`` is responsible for interactive session logic (command "
"``Orchestrator`` prepares the environment for its operation and serves as the entry point to the application." "input, routing), ``Orchestrator`` prepares the environment for its "
"operation and serves as the entry point to the application."
#: ../../root/api/orchestrator/index.rst:13 #: ../../root/api/orchestrator/index.rst:13
msgid "Инициализация" msgid "Инициализация"
@@ -54,17 +56,19 @@ msgid ""
" командной строки при запуске скрипта (не путать с командами в " " командной строки при запуске скрипта (не путать с командами в "
"интерактивном режиме)." "интерактивном режиме)."
msgstr "" msgstr ""
"``arg_parser``: ``ArgParser`` instance responsible for parsing command-line arguments " "``arg_parser``: ``ArgParser`` instance responsible for parsing command-"
"at script startup (not to be confused with commands in interactive mode)." "line arguments at script startup (not to be confused with commands in "
"interactive mode)."
#: ../../root/api/orchestrator/index.rst:31 #: ../../root/api/orchestrator/index.rst:31
msgid "" msgid ""
"``custom_providers``: Список пользовательских провайдеров " "``custom_providers``: Список пользовательских провайдеров "
"``dishka.Provider`` для добавления ваших сервисов (например, подключений " "``dishka.Provider`` для добавления ваших сервисов (например, подключений "
"к БД или API-клиентов) в DI-контейнер." "к БД или API-клиентов) в di-контейнер."
msgstr "" msgstr ""
"``custom_providers``: List of custom ``dishka.Provider`` providers for adding your services " "``custom_providers``: List of custom ``dishka.Provider`` providers for "
"(e.g., database connections or API clients) to the``di``container." "adding your services (e.g., database connections or API clients) to the "
"DI container."
#: ../../root/api/orchestrator/index.rst:32 #: ../../root/api/orchestrator/index.rst:32
msgid "" msgid ""
@@ -72,8 +76,9 @@ msgid ""
"автоматически внедрит зависимости в обработчики команд, инспектируя их " "автоматически внедрит зависимости в обработчики команд, инспектируя их "
"сигнатуры." "сигнатуры."
msgstr "" msgstr ""
"``auto_inject_handlers``: If **True** (default), ``dishka`` will automatically inject " "``auto_inject_handlers``: If **True** (default), ``dishka`` will "
"dependencies into command handlers by inspecting their signatures." "automatically inject dependencies into command handlers by inspecting "
"their signatures."
#: ../../root/api/orchestrator/index.rst:37 #: ../../root/api/orchestrator/index.rst:37
msgid "Основные методы" msgid "Основные методы"
@@ -84,7 +89,8 @@ msgid ""
"Это главный метод, который запускает приложение. Он запускает бесконечный" "Это главный метод, который запускает приложение. Он запускает бесконечный"
" цикл ввода -> вывода." " цикл ввода -> вывода."
msgstr "" msgstr ""
"This is the main method that starts the application. It launches an infinite input -> output loop." "This is the main method that starts the application. It launches an "
"infinite input -> output loop."
#: ../../root/api/orchestrator/index.rst #: ../../root/api/orchestrator/index.rst
msgid "Parameters" msgid "Parameters"
@@ -100,10 +106,11 @@ msgstr "Purpose and Usage"
#: ../../root/api/orchestrator/index.rst:50 #: ../../root/api/orchestrator/index.rst:50
msgid "" msgid ""
"``Orchestrator`` абстрагирует сложность, связанную с настройкой ``di`` и " "``Orchestrator`` абстрагирует сложность, связанную с настройкой DI и "
"парсингом стартовых аргументов." "парсингом стартовых аргументов."
msgstr "" msgstr ""
"``Orchestrator`` abstracts the complexity associated with setting up ``di`` and parsing startup arguments." "``Orchestrator`` abstracts the complexity associated with setting up DI "
"and parsing startup arguments."
#: ../../root/api/orchestrator/index.rst:52 #: ../../root/api/orchestrator/index.rst:52
msgid "" msgid ""
@@ -111,8 +118,9 @@ msgid ""
"интерактивной сессии, а ``Orchestrator`` — за подготовку окружения и " "интерактивной сессии, а ``Orchestrator`` — за подготовку окружения и "
"запуск приложения." "запуск приложения."
msgstr "" msgstr ""
"This approach separates responsibilities: ``App`` is responsible for interactive session logic, " "This approach separates responsibilities: ``App`` is responsible for "
"while ``Orchestrator`` handles environment preparation and application launch." "interactive session logic, while ``Orchestrator`` handles environment "
"preparation and application launch."
#: ../../root/api/orchestrator/index.rst:54 #: ../../root/api/orchestrator/index.rst:54
msgid "**Пример использования:**" msgid "**Пример использования:**"
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-02 22:27+0300\n" "POT-Creation-Date: 2025-12-04 20:39+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -29,22 +29,24 @@ msgid ""
" и расширяемый код. Вместо того чтобы обработчики сами создавали нужные " " и расширяемый код. Вместо того чтобы обработчики сами создавали нужные "
"им объекты (зависимости), они получают их извне." "им объекты (зависимости), они получают их извне."
msgstr "" msgstr ""
"Dependency Injection (DI) is a design pattern that helps write loosely coupled, " "Dependency Injection (DI) is a design pattern that helps write loosely "
"easily testable, and extensible code. Instead of handlers creating the objects " "coupled, easily testable, and extensible code. Instead of handlers "
"(dependencies) they need themselves, they receive them from outside." "creating the objects (dependencies) they need themselves, they receive "
"them from outside."
#: ../../root/dependency_injection.rst:8 #: ../../root/dependency_injection.rst:8
msgid "" msgid ""
"``Argenta`` использует библиотеку ``dishka`` для реализации DI, что " "``Argenta`` использует библиотеку ``dishka`` для реализации DI, что "
"позволяет декларативно объявлять зависимости прямо в сигнатурах ваших " "позволяет декларативно объявлять зависимости прямо в сигнатурах ваших "
"обработчиков. Подробнее о **DI**, **IoC** и API для создания провайдеров " "обработчиков. Подробнее о DI, IoC и API для создания провайдеров можно "
"можно прочитать в `официальной документации dishka " "прочитать в `официальной документации dishka "
"<https://dishka.readthedocs.io/en/stable/di_intro.html>`_." "<https://dishka.readthedocs.io/en/stable/di_intro.html>`_."
msgstr "" msgstr ""
"``Argenta`` uses the ``dishka`` library to implement DI, which allows you to " "``Argenta`` uses the ``dishka`` library to implement DI, which allows you"
"declaratively declare dependencies directly in your handler signatures. You can " " to declaratively declare dependencies directly in your handler "
"read more about **DI**, **IoC**, and the API for creating providers in the " "signatures. You can read more about DI, IoC, and the API for "
"`official dishka documentation <https://dishka.readthedocs.io/en/stable/di_intro.html>`_." "creating providers in the `official dishka documentation "
"<https://dishka.readthedocs.io/en/stable/di_intro.html>`_."
#: ../../root/dependency_injection.rst:14 #: ../../root/dependency_injection.rst:14
msgid "Основная идея" msgid "Основная идея"
@@ -56,22 +58,22 @@ msgid ""
"данных. Вместо импорта и инициализации соединения внутри функции, вы " "данных. Вместо импорта и инициализации соединения внутри функции, вы "
"просто объявляете его как аргумент с аннотацией типа:" "просто объявляете его как аргумент с аннотацией типа:"
msgstr "" msgstr ""
"Imagine your handler needs access to a database to work. Instead of importing and " "Imagine your handler needs access to a database to work. Instead of "
"initializing the connection inside the function, you simply declare it as an " "importing and initializing the connection inside the function, you simply"
"argument with a type annotation:" " declare it as an argument with a type annotation:"
#: ../../root/dependency_injection.rst:19 #: ../../root/dependency_injection.rst:19
msgid "" msgid ""
"``argenta.di.FromDishka`` является алиасом для ``dishka.FromDishka``, и " "``argenta.di.FromDishka`` является алиасом для ``dishka.FromDishka``, и "
"они полностью взаимозаменяемы." "они полностью взаимозаменяемы."
msgstr "" msgstr ""
"``argenta.di.FromDishka`` is an alias for ``dishka.FromDishka``, and they are " "``argenta.di.FromDishka`` is an alias for ``dishka.FromDishka``, and they"
"fully interchangeable." " are fully interchangeable."
#: ../../root/dependency_injection.rst:21 #: ../../root/dependency_injection.rst:21
#: ../../root/dependency_injection.rst:29 #: ../../root/dependency_injection.rst:29
#: ../../root/dependency_injection.rst:37 #: ../../root/dependency_injection.rst:40
#: ../../root/dependency_injection.rst:60 #: ../../root/dependency_injection.rst:63
msgid "**Пример использования:**" msgid "**Пример использования:**"
msgstr "**Usage example:**" msgstr "**Usage example:**"
@@ -81,76 +83,93 @@ msgid ""
"``Connection`` и внедрит её. Но прежде чем использовать зависимость, её " "``Connection`` и внедрит её. Но прежде чем использовать зависимость, её "
"необходимо объявить в провайдере:" "необходимо объявить в провайдере:"
msgstr "" msgstr ""
"``Argenta`` with ``dishka`` will resolve the dependency by type ``Connection`` and " "``Argenta`` with ``dishka`` will resolve the dependency by type "
"inject it. But before using the dependency, it must be declared in a provider:" "``Connection`` and inject it. But before using the dependency, it must be"
" declared in a provider:"
#: ../../root/dependency_injection.rst:35 #: ../../root/dependency_injection.rst:35
msgid "После создания провайдера его необходимо зарегистрировать в оркестраторе:" msgid "После создания провайдера его необходимо зарегистрировать в оркестраторе."
msgstr "After creating the provider, it must be registered in the orchestrator:" msgstr "After creating the provider, it must be registered in the orchestrator."
#: ../../root/dependency_injection.rst:46 #: ../../root/dependency_injection.rst:38
msgid ""
"Провайдеры регистрируются в ``Orchestrator``, а не в ``App``, так как "
"оркестратор отвечает за настройку DI-контейнера на уровне всего "
"приложения. Вы можете передать список из нескольких провайдеров через "
"параметр ``custom_providers``."
msgstr ""
"Providers are registered in ``Orchestrator``, not in ``App``, because "
"the orchestrator is responsible for configuring the DI container at the "
"application level. You can pass a list of multiple providers through the "
"``custom_providers`` parameter."
#: ../../root/dependency_injection.rst:49
msgid "Как это работает?" msgid "Как это работает?"
msgstr "How Does It Work?" msgstr "How Does It Work?"
#: ../../root/dependency_injection.rst:48 #: ../../root/dependency_injection.rst:51
msgid "В основе``di``в Argenta лежат **провайдеры** и **контейнер**." msgid "В основе DI в Argenta лежат **провайдеры** и **контейнер**."
msgstr "DI in Argenta is based on **providers** and a **container**." msgstr "At the core of DI in Argenta are **providers** and a **container**."
#: ../../root/dependency_injection.rst:50 #: ../../root/dependency_injection.rst:53
msgid "" msgid ""
"**Провайдер (Provider)** — это \"рецепт\", который объясняет, как " "**Провайдер (Provider)** — это \"рецепт\", который объясняет, как "
"создавать и настраивать ту или иную зависимость (например, подключение к " "создавать и настраивать ту или иную зависимость (например, подключение к "
"БД, API-клиент или любой другой сервис)." "БД, API-клиент или любой другой сервис)."
msgstr "" msgstr ""
"**Provider (Provider)** is a \"recipe\" that explains how to create and " "**Provider (Provider)** is a \"recipe\" that explains how to create and "
"configure a particular dependency (for example, a database connection, API client, " "configure a particular dependency (for example, a database connection, "
"or any other service)." "API client, or any other service)."
#: ../../root/dependency_injection.rst:51 #: ../../root/dependency_injection.rst:54
msgid "" msgid ""
"**Контейнер (IoC Container)** — это \"фабрика\", которая хранит все " "**Контейнер (IoC Container)** — это \"фабрика\", которая хранит все "
"рецепты (провайдеры) и по запросу создаёт и выдаёт готовые зависимости." "рецепты (провайдеры) и по запросу создаёт и выдаёт готовые зависимости."
msgstr "" msgstr ""
"**Container (IoC Container)** is a \"factory\" that stores all recipes (providers) " "**Container (IoC Container)** is a \"factory\" that stores all recipes "
"and creates and provides ready dependencies on request." "(providers) and creates and provides ready dependencies on request."
#: ../../root/dependency_injection.rst:56 #: ../../root/dependency_injection.rst:59
msgid "Встроенные провайдеры" msgid "Встроенные провайдеры"
msgstr "Built-in Providers" msgstr "Built-in Providers"
#: ../../root/dependency_injection.rst:58 #: ../../root/dependency_injection.rst:61
msgid "" msgid ""
"``Argenta`` поставляется со встроенным провайдером, который даёт доступ к" "``Argenta`` поставляется со встроенным провайдером, который даёт доступ к"
" важным системным зависимостям без дополнительной настройки. Например, вы" " важным системным зависимостям без дополнительной настройки. Например, вы"
" можете получить объект ``ArgSpace``, который содержит аргументы " " можете получить объект :ref:`ArgSpace <root_api_orchestrator_argspace>`,"
"командной строки, переданные при запуске приложения." " который содержит аргументы командной строки, переданные при запуске "
"приложения."
msgstr "" msgstr ""
"``Argenta`` comes with a built-in provider that gives access to important system " "``Argenta`` comes with a built-in provider that gives access to important"
"dependencies without additional configuration. For example, you can get the " " system dependencies without additional configuration. For example, you "
"``ArgSpace`` object, which contains the command-line arguments passed when the " "can get the :ref:`ArgSpace <root_api_orchestrator_argspace>` object, "
"application was launched." "which contains the command-line arguments passed when the application was "
"launched."
#: ../../root/dependency_injection.rst:69 #: ../../root/dependency_injection.rst:72
msgid "Обмен данными между обработчиками" msgid "Обмен данными между обработчиками"
msgstr "Data Exchange Between Handlers" msgstr "Data Exchange Between Handlers"
#: ../../root/dependency_injection.rst:71 #: ../../root/dependency_injection.rst:74
msgid "" msgid ""
"Помимо DI, обработчики могут обмениваться данными в рамках сессии через " "Помимо DI, обработчики могут обмениваться данными в рамках сессии через "
"**объект контекста**. В ``Argenta`` эту роль выполняет объект " "**объект контекста**. В ``Argenta`` эту роль выполняет объект "
"``DataBridge``." "``DataBridge``."
msgstr "" msgstr ""
"In addition to DI, handlers can exchange data within a session through a **context " "In addition to DI, handlers can exchange data within a session through a "
"object**. In ``Argenta``, this role is performed by the ``DataBridge`` object." "**context object**. In ``Argenta``, this role is performed by the "
"``DataBridge`` object."
#: ../../root/dependency_injection.rst:73 #: ../../root/dependency_injection.rst:76
msgid "" msgid ""
"Каждый обработчик может записывать в него данные, а также читать, " "Каждый обработчик может записывать в него данные, а также читать, "
"обновлять и удалять их." "обновлять и удалять их."
msgstr "" msgstr ""
"Each handler can write data to it, as well as read, update, and delete data." "Each handler can write data to it, as well as read, update, and delete "
"data."
#: ../../root/dependency_injection.rst:76 #: ../../root/dependency_injection.rst:79
msgid "Подробнее об этом можно прочитать в разделе :ref:`root_api_bridge`." msgid "Подробнее об этом можно прочитать в разделе :ref:`root_api_bridge`."
msgstr "You can read more about this in the :ref:`root_api_bridge` section." msgstr "You can read more about this in the :ref:`root_api_bridge` section."
+209 -136
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-02 22:27+0300\n" "POT-Creation-Date: 2025-12-04 20:39+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -27,7 +27,8 @@ msgid ""
"Флаги — это специальные параметры, которые пользователь может добавлять к" "Флаги — это специальные параметры, которые пользователь может добавлять к"
" командам для управления их поведением." " командам для управления их поведением."
msgstr "" msgstr ""
"Flags are special parameters that users can add to commands to control their behavior." "Flags are special parameters that users can add to commands to control "
"their behavior."
#: ../../root/flags.rst:9 #: ../../root/flags.rst:9
msgid "Зачем нужны флаги в командах" msgid "Зачем нужны флаги в командах"
@@ -45,10 +46,10 @@ msgid ""
"режимы по требованию пользователя, оставляя основную функциональность " "режимы по требованию пользователя, оставляя основную функциональность "
"неизменной." "неизменной."
msgstr "" msgstr ""
"The main purpose of flags is to provide a way to change the command's logic without " "The main purpose of flags is to provide a way to change the command's "
"reworking it. A command can operate in several modes: standard, verbose, debug, or " "logic without reworking it. A command can operate in several modes: "
"simplified. Flags switch these modes on user demand, keeping the core functionality " "standard, verbose, debug, or simplified. Flags switch these modes on user"
"unchanged." " demand, keeping the core functionality unchanged."
#: ../../root/flags.rst:17 #: ../../root/flags.rst:17
msgid "Опциональность и удобство" msgid "Опциональность и удобство"
@@ -61,9 +62,10 @@ msgid ""
" же позволяют задать значения только необходимые в конкретной ситуации, " " же позволяют задать значения только необходимые в конкретной ситуации, "
"остальные используют значения по умолчанию." "остальные используют значения по умолчанию."
msgstr "" msgstr ""
"Flags solve the problem of mandatory parameters. If all command parameters are made " "Flags solve the problem of mandatory parameters. If all command "
"required, it makes the command difficult to use. Flags allow you to specify only " "parameters are made required, it makes the command difficult to use. "
"the values needed in a specific situation, while others use default values." "Flags allow you to specify only the values needed in a specific "
"situation, while others use default values."
#: ../../root/flags.rst:22 #: ../../root/flags.rst:22
msgid "Когда могут понадобиться флаги" msgid "Когда могут понадобиться флаги"
@@ -79,8 +81,9 @@ msgid ""
"фактического развёртывания (dry-run) для проверки. Флаг ``--dry-run`` " "фактического развёртывания (dry-run) для проверки. Флаг ``--dry-run`` "
"переключит режим работы." "переключит режим работы."
msgstr "" msgstr ""
"A command deploys an application normally, but a mode without actual deployment " "A command deploys an application normally, but a mode without actual "
"(dry-run) is needed for verification. The ``--dry-run`` flag will switch the mode." "deployment (dry-run) is needed for verification. The ``--dry-run`` flag "
"will switch the mode."
#: ../../root/flags.rst:27 #: ../../root/flags.rst:27
msgid "**Настройка уровня детальности**" msgid "**Настройка уровня детальности**"
@@ -92,8 +95,9 @@ msgid ""
" команды. Флаги ``--verbose`` или ``--debug`` предоставляют подробный " " команды. Флаги ``--verbose`` или ``--debug`` предоставляют подробный "
"вывод." "вывод."
msgstr "" msgstr ""
"When debugging or analyzing, more information about the command execution process " "When debugging or analyzing, more information about the command execution"
"is required. The ``--verbose`` or ``--debug`` flags provide detailed output." " process is required. The ``--verbose`` or ``--debug`` flags provide "
"detailed output."
#: ../../root/flags.rst:30 #: ../../root/flags.rst:30
msgid "**Управление поведением при ошибках**" msgid "**Управление поведением при ошибках**"
@@ -104,8 +108,8 @@ msgid ""
"По умолчанию команда может прерваться при первой ошибке. Флаг ``--force``" "По умолчанию команда может прерваться при первой ошибке. Флаг ``--force``"
" позволит продолжить работу, пропуская некритичные ошибки." " позволит продолжить работу, пропуская некритичные ошибки."
msgstr "" msgstr ""
"By default, a command may abort on the first error. The ``--force`` flag allows " "By default, a command may abort on the first error. The ``--force`` flag "
"continuing execution, skipping non-critical errors." "allows continuing execution, skipping non-critical errors."
#: ../../root/flags.rst:33 #: ../../root/flags.rst:33
msgid "**Форматирование вывода**" msgid "**Форматирование вывода**"
@@ -116,8 +120,8 @@ msgid ""
"Команда выводит данные текстом, но в некоторых сценариях нужен JSON или " "Команда выводит данные текстом, но в некоторых сценариях нужен JSON или "
"CSV. Флаг ``--format=json`` переключит формат вывода." "CSV. Флаг ``--format=json`` переключит формат вывода."
msgstr "" msgstr ""
"A command outputs data as text, but in some scenarios JSON or CSV is needed. The " "A command outputs data as text, but in some scenarios JSON or CSV is "
"``--format=json`` flag will switch the output format." "needed. The ``--format=json`` flag will switch the output format."
#: ../../root/flags.rst:36 #: ../../root/flags.rst:36
msgid "**Комбинирование опций**" msgid "**Комбинирование опций**"
@@ -128,8 +132,8 @@ msgid ""
"Часто нужна комбинация нескольких изменений: подробный вывод, dry-run " "Часто нужна комбинация нескольких изменений: подробный вывод, dry-run "
"режим и JSON формат. Несколько флагов решают эту задачу одновременно." "режим и JSON формат. Несколько флагов решают эту задачу одновременно."
msgstr "" msgstr ""
"Often a combination of several changes is needed: verbose output, dry-run mode, and " "Often a combination of several changes is needed: verbose output, dry-run"
"JSON format. Multiple flags solve this task simultaneously." " mode, and JSON format. Multiple flags solve this task simultaneously."
#: ../../root/flags.rst:40 #: ../../root/flags.rst:40
msgid "Практическое значение" msgid "Практическое значение"
@@ -142,9 +146,10 @@ msgid ""
"необходимости. Это особенно важно при автоматизации задач в скриптах, где" "необходимости. Это особенно важно при автоматизации задач в скриптах, где"
" гибкость интерфейса критична." " гибкость интерфейса критична."
msgstr "" msgstr ""
"Flags make commands more predictable and controllable. Users can start with simple " "Flags make commands more predictable and controllable. Users can start "
"usage and then add flags as needed. This is especially important when automating " "with simple usage and then add flags as needed. This is especially "
"tasks in scripts, where interface flexibility is critical." "important when automating tasks in scripts, where interface flexibility "
"is critical."
#: ../../root/flags.rst:44 #: ../../root/flags.rst:44
msgid "" msgid ""
@@ -152,9 +157,9 @@ msgid ""
"дополнительное поведение достигается без изменения структуры команды, а " "дополнительное поведение достигается без изменения структуры команды, а "
"только через передачу опциональных параметров." "только через передачу опциональных параметров."
msgstr "" msgstr ""
"Flags also facilitate command integration into various systems, as additional " "Flags also facilitate command integration into various systems, as "
"behavior is achieved without changing the command structure, only through passing " "additional behavior is achieved without changing the command structure, "
"optional parameters." "only through passing optional parameters."
#: ../../root/flags.rst:49 #: ../../root/flags.rst:49
msgid "Синтаксис флагов" msgid "Синтаксис флагов"
@@ -169,24 +174,75 @@ msgid ""
"Флаг состоит из префикса (``-``, ``--`` или ``---``), имени и, " "Флаг состоит из префикса (``-``, ``--`` или ``---``), имени и, "
"опционально, значения, которое указывается через пробел." "опционально, значения, которое указывается через пробел."
msgstr "" msgstr ""
"A flag consists of a prefix (``-``, ``--``, or ``---``), a name, and optionally a " "A flag consists of a prefix (``-``, ``--``, or ``---``), a name, and "
"value, which is specified with a space." "optionally a value, which is specified with a space."
#: ../../root/flags.rst:62 #: ../../root/flags.rst:59
msgid "**Примеры:**"
msgstr "**Examples:**"
#: ../../root/flags.rst:70
msgid "Работа с флагами в обработчиках"
msgstr "Working with Flags in Handlers"
#: ../../root/flags.rst:72
msgid ""
"Чтобы получить значение флага в обработчике, используйте объект "
"``response.input_flags`` типа :ref:`InputFlags "
"<root_api_command_input_flags>`."
msgstr ""
"To get the flag value in a handler, use the ``response.input_flags`` "
"object of type :ref:`InputFlags <root_api_command_input_flags>`."
#: ../../root/flags.rst:74
msgid "**Пример с флагом, имеющим значение:**"
msgstr "**Example with a flag that has a value:**"
#: ../../root/flags.rst:80
msgid "**Пример с флагом-переключателем:**"
msgstr "**Example with a toggle flag:**"
#: ../../root/flags.rst:87
msgid ""
"Подробнее о работе с объектом ``InputFlags`` см. в разделе "
":ref:`InputFlags <root_api_command_input_flags>`."
msgstr ""
"For more details on working with the ``InputFlags`` object, see the "
":ref:`InputFlags <root_api_command_input_flags>` section."
#: ../../root/flags.rst:92
msgid "Два типа флагов" msgid "Два типа флагов"
msgstr "Two Types of Flags" msgstr "Two Types of Flags"
#: ../../root/flags.rst:64 #: ../../root/flags.rst:94
msgid "" msgid "Флаги бывают двух основных видов:"
"Флаги бывают двух основных видов: без значений (переключатели) и со " msgstr "Flags come in two main types:"
"значениями. ``Argenta`` позволяет регистрировать и вводить флаги обоих "
"типов в любой последовательности для одной команды."
msgstr ""
"Flags come in two main types: without values (switches) and with values. "
"``Argenta`` allows registering and entering flags of both types in any sequence "
"for a single command."
#: ../../root/flags.rst:67 #: ../../root/flags.rst:96
msgid ""
"**Флаги со значениями** — принимают параметр после имени флага (например,"
" ``--name John``, ``--port 8080``)"
msgstr ""
"**Flags with values** — accept a parameter after the flag name (for "
"example, ``--name John``, ``--port 8080``)"
#: ../../root/flags.rst:97
msgid ""
"**Флаги-переключатели** — не принимают значения, их наличие само по себе "
"является сигналом (например, ``--verbose``, ``--force``)"
msgstr ""
"**Toggle flags** — do not accept values, their presence itself is a "
"signal (for example, ``--verbose``, ``--force``)"
#: ../../root/flags.rst:99
msgid ""
"``Argenta`` позволяет регистрировать и вводить флаги обоих типов в любой "
"последовательности для одной команды."
msgstr ""
"``Argenta`` allows registering and entering flags of both types in any "
"sequence for a single command."
#: ../../root/flags.rst:102
msgid "" msgid ""
"Ошибки валидации не выбрасывают исключений. Вместо этого у каждого " "Ошибки валидации не выбрасывают исключений. Вместо этого у каждого "
"объекта :ref:`InputFlag <root_api_command_input_flag>` есть атрибут " "объекта :ref:`InputFlag <root_api_command_input_flag>` есть атрибут "
@@ -195,47 +251,44 @@ msgid ""
" <root_api_command_flag>`." " <root_api_command_flag>`."
msgstr "" msgstr ""
"Validation errors do not throw exceptions. Instead, each :ref:`InputFlag " "Validation errors do not throw exceptions. Instead, each :ref:`InputFlag "
"<root_api_command_input_flag>` object has a ``status`` attribute that can be used " "<root_api_command_input_flag>` object has a ``status`` attribute that can"
"to determine if validation was successful. A detailed description of the API for " " be used to determine if validation was successful. A detailed "
"creating flags is in the :ref:`Flag <root_api_command_flag>` section." "description of the API for creating flags is in the :ref:`Flag "
"<root_api_command_flag>` section."
#: ../../root/flags.rst:69 #: ../../root/flags.rst:104
msgid "" msgid ""
"При регистрации флага можно задать правила валидации для его значения. По" "При регистрации флага можно задать правила валидации для его значения. По"
" умолчанию любое значение считается корректным. Валидацию можно настроить" " умолчанию любое значение считается корректным. Валидацию можно настроить"
" несколькими способами:" " несколькими способами:"
msgstr "" msgstr ""
"When registering a flag, you can set validation rules for its value. By default, " "When registering a flag, you can set validation rules for its value. By "
"any value is considered valid. Validation can be configured in several ways:" "default, any value is considered valid. Validation can be configured in "
"several ways:"
#: ../../root/flags.rst:74 #: ../../root/flags.rst:109
msgid "Флаги против аргументов" msgid "Флаги против аргументов"
msgstr "Flags vs Arguments" msgstr "Flags vs Arguments"
#: ../../root/flags.rst:76 #: ../../root/flags.rst:111
msgid "" msgid ""
"В контексте Argenta флаги и аргументы относятся к разным уровням " "В контексте Argenta флаги и аргументы относятся к разным уровням "
"взаимодействия с приложением и имеют принципиально разные сферы действия." "взаимодействия с приложением."
msgstr "" msgstr ""
"In the context of Argenta, flags and arguments belong to different levels of " "In the context of Argenta, flags and arguments belong to different levels"
"interaction with the application and have fundamentally different scopes." " of interaction with the application."
#: ../../root/flags.rst:79 #: ../../root/flags.rst:113
msgid "Определение и назначение"
msgstr "Definition and Purpose"
#: ../../root/flags.rst:81
msgid "" msgid ""
"**Аргументы** — это параметры, передаваемые при запуске приложения один " "**Аргументы** — это параметры, передаваемые при запуске приложения. Они "
"раз при инициализации. Они определяют глобальное состояние и конфигурацию" "определяют глобальную конфигурацию на протяжении всей его работы "
" приложения на протяжении всей его работы, например адрес базы данных, " "(например, адрес базы данных, уровень логирования)."
"уровень логирования или режим работы."
msgstr "" msgstr ""
"**Arguments** are parameters passed when launching the application once during " "**Arguments** are parameters passed when launching the application. They "
"initialization. They define the global state and configuration of the application " "define the global configuration throughout its operation (for example, "
"throughout its operation, such as database address, logging level, or operation mode." "database address, logging level)."
#: ../../root/flags.rst:83 #: ../../root/flags.rst:115
msgid "" msgid ""
"API и более подробное описание в разделах :ref:`ArgParser " "API и более подробное описание в разделах :ref:`ArgParser "
"<root_api_orchestrator_argparser>` и :ref:`Arguments " "<root_api_orchestrator_argparser>` и :ref:`Arguments "
@@ -245,123 +298,143 @@ msgstr ""
"<root_api_orchestrator_argparser>` and :ref:`Arguments " "<root_api_orchestrator_argparser>` and :ref:`Arguments "
"<root_api_orchestrator_arguments>` sections." "<root_api_orchestrator_arguments>` sections."
#: ../../root/flags.rst:85 #: ../../root/flags.rst:117
msgid "" msgid ""
"**Флаги** — это параметры командных операций, доступные в рамках " "**Флаги** — это параметры командных операций, доступные в рамках "
"интерактивной сессии при вводе каждой новой команды. Они позволяют " "интерактивной сессии при вводе каждой новой команды. Они позволяют "
"модифицировать поведение конкретной команды без перезагрузки приложения." "модифицировать поведение конкретной команды без перезагрузки приложения."
msgstr "" msgstr ""
"**Flags** are command operation parameters available within an interactive session " "**Flags** are command operation parameters available within an "
"when entering each new command. They allow modifying the behavior of a specific " "interactive session when entering each new command. They allow modifying "
"command without restarting the application." "the behavior of a specific command without restarting the application."
#: ../../root/flags.rst:87 #: ../../root/flags.rst:119
msgid "" msgid ""
"API и более подробное описание в разделе :ref:`Flag " "API и более подробное описание в разделе :ref:`Flag "
"<root_api_command_flag>`." "<root_api_command_flag>`."
msgstr "API and more detailed description in the :ref:`Flag <root_api_command_flag>` section." msgstr ""
"API and more detailed description in the :ref:`Flag "
"<root_api_command_flag>` section."
#: ../../root/flags.rst:92 #: ../../root/flags.rst:124
msgid "Ключевые различия" msgid "Ключевые различия"
msgstr "Key Differences" msgstr "Key Differences"
#: ../../root/flags.rst:94 #: ../../root/flags.rst:126
msgid "**Время жизни и область действия**" msgid "**Время жизни**"
msgstr "**Lifetime and Scope**" msgstr "**Lifetime**"
#: ../../root/flags.rst:95 #: ../../root/flags.rst:127
msgid "" msgid ""
"Аргументы передаются один раз при запуске приложения и сохраняют действие" "Аргументы передаются один раз при запуске и действуют на весь период "
" на весь период работы (скоуп **APP**). Флаги наоборот локальны и живут в" "работы приложения. Флаги локальны и существуют только в рамках выполнения"
" рамках скоупа **REQUEST**." " команды."
msgstr "" msgstr ""
"Arguments are passed once when launching the application and remain in effect for " "Arguments are passed once at startup and remain in effect for the entire "
"the entire operation period (scope **APP**). Flags, on the contrary, are local and " "application runtime. Flags are local and exist only within the execution "
"live within the **REQUEST** scope." "of a command."
#: ../../root/flags.rst:97 #: ../../root/flags.rst:129
msgid "**Частота изменения**" msgid "**Изменяемость**"
msgstr "**Change Frequency**" msgstr "**Mutability**"
#: ../../root/flags.rst:98 #: ../../root/flags.rst:130
msgid "" msgid ""
"Для изменения аргументов необходимо перезапустить приложение. Флаги можно" "Для изменения аргументов необходимо перезапустить приложение. Флаги можно"
" менять между каждым вводом команды без остановки приложения." " менять при каждом вводе команды."
msgstr "" msgstr ""
"To change arguments, the application must be restarted. Flags can be changed " "To change arguments, the application must be restarted. Flags can be "
"between each command input without stopping the application." "changed with each command input."
#: ../../root/flags.rst:100 #: ../../root/flags.rst:132
msgid "**Уровень конфигурации**" msgid "**Назначение**"
msgstr "**Configuration Level**" msgstr "**Purpose**"
#: ../../root/flags.rst:101 #: ../../root/flags.rst:133
msgid "" msgid ""
"Аргументы управляют глобальной конфигурацией приложения и его окружением." "Аргументы управляют глобальной конфигурацией приложения. Флаги управляют "
" Флаги управляют поведением отдельных команд и операций пользователя." "поведением отдельных команд."
msgstr "" msgstr ""
"Arguments control the global configuration of the application and its environment. " "Arguments control the global configuration of the application. Flags "
"Flags control the behavior of individual commands and user operations." "control the behavior of individual commands."
#: ../../root/flags.rst:103 #: ../../root/flags.rst:138
msgid "**Использование**" msgid "Практические примеры"
msgstr "**Usage**" msgstr "Practical Examples"
#: ../../root/flags.rst:104 #: ../../root/flags.rst:140
msgid "" msgid "Аргументы при запуске приложения:"
"Аргументы задают начальное состояние системы: что подключить, как " msgstr "Arguments at application startup:"
"работать. Флаги управляют тактикой выполнения команд: как её выполнить, с"
" какими изменениями."
msgstr ""
"Arguments set the initial state of the system: what to connect, how to operate. "
"Flags control the tactics of command execution: how to execute it, with what changes."
#: ../../root/flags.rst:109 #: ../../root/flags.rst:142
msgid "Практические примеры в Argenta"
msgstr "Practical Examples in Argenta"
#: ../../root/flags.rst:111
msgid "При запуске приложения Argenta передаются аргументы:"
msgstr "When launching an Argenta application, arguments are passed:"
#: ../../root/flags.rst:113
msgid "Адрес подключения к базе данных" msgid "Адрес подключения к базе данных"
msgstr "Database connection address" msgstr "Database connection address"
#: ../../root/flags.rst:114 #: ../../root/flags.rst:143
msgid "Режим работы (production, development, testing)" msgid "Режим работы (production, development, testing)"
msgstr "Operation mode (production, development, testing)" msgstr "Operation mode (production, development, testing)"
#: ../../root/flags.rst:115 #: ../../root/flags.rst:144
msgid "Уровень логирования" msgid "Уровень логирования"
msgstr "Logging level" msgstr "Logging level"
#: ../../root/flags.rst:116 #: ../../root/flags.rst:146
msgid "Путь к конфигурационным файлам" msgid "Флаги в интерактивной сессии:"
msgstr "Path to configuration files" msgstr "Flags in an interactive session:"
#: ../../root/flags.rst:118 #: ../../root/flags.rst:148
msgid "В интерактивной сессии для каждой команды указываются флаги:" msgid "``deploy --verbose --dry-run`` — для команды развёртывания"
msgstr "In an interactive session, flags are specified for each command:" msgstr "``deploy --verbose --dry-run`` — for the deployment command"
#: ../../root/flags.rst:120 #: ../../root/flags.rst:149
msgid "``deploy --verbose --dry-run`` — для текущей команды развёртывания"
msgstr "``deploy --verbose --dry-run`` — for the current deployment command"
#: ../../root/flags.rst:121
msgid "``backup --compress --encrypted`` — для команды резервного копирования" msgid "``backup --compress --encrypted`` — для команды резервного копирования"
msgstr "``backup --compress --encrypted`` — for the backup command" msgstr "``backup --compress --encrypted`` — for the backup command"
#: ../../root/flags.rst:122 #: ../../root/flags.rst:150
msgid "``test --parallel --coverage`` — для команды тестирования" msgid "``test --parallel --coverage`` — для команды тестирования"
msgstr "``test --parallel --coverage`` — for the testing command" msgstr "``test --parallel --coverage`` — for the testing command"
#: ../../root/flags.rst:124 #~ msgid "Определение и назначение"
msgid "" #~ msgstr "Definition and Purpose"
"Один пользователь может выполнить разные команды с разными флагами в "
"одной сессии приложения, без необходимости перезапуска с новыми " #~ msgid "**Частота изменения**"
"аргументами." #~ msgstr "**Change Frequency**"
msgstr ""
"A single user can execute different commands with different flags in one application " #~ msgid "**Уровень конфигурации**"
"session, without needing to restart with new arguments." #~ msgstr "**Configuration Level**"
#~ msgid "**Использование**"
#~ msgstr "**Usage**"
#~ msgid ""
#~ "Аргументы задают начальное состояние системы:"
#~ " что подключить, как работать. Флаги "
#~ "управляют тактикой выполнения команд: как "
#~ "её выполнить, с какими изменениями."
#~ msgstr ""
#~ "Arguments set the initial state of "
#~ "the system: what to connect, how "
#~ "to operate. Flags control the tactics"
#~ " of command execution: how to execute"
#~ " it, with what changes."
#~ msgid "При запуске приложения Argenta передаются аргументы:"
#~ msgstr "When launching an Argenta application, arguments are passed:"
#~ msgid "Путь к конфигурационным файлам"
#~ msgstr "Path to configuration files"
#~ msgid "В интерактивной сессии для каждой команды указываются флаги:"
#~ msgstr "In an interactive session, flags are specified for each command:"
#~ msgid ""
#~ "Один пользователь может выполнить разные "
#~ "команды с разными флагами в одной "
#~ "сессии приложения, без необходимости "
#~ "перезапуска с новыми аргументами."
#~ msgstr ""
#~ "A single user can execute different "
#~ "commands with different flags in one "
#~ "application session, without needing to "
#~ "restart with new arguments."
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-02 22:27+0300\n" "POT-Creation-Date: 2025-12-04 20:39+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -29,9 +29,10 @@ msgid ""
"создавать таблицы, подсвечивать синтаксис и многое другое, что улучшает " "создавать таблицы, подсвечивать синтаксис и многое другое, что улучшает "
"визуальное восприятие информации." "визуальное восприятие информации."
msgstr "" msgstr ""
"By default, ``Argenta`` uses the ``rich`` library for text output with enhanced " "By default, ``Argenta`` uses the ``rich`` library for text output with "
"formatting. It allows applying colors and styles, creating tables, highlighting " "enhanced formatting. It allows applying colors and styles, creating "
"syntax, and much more, which improves the visual perception of information." "tables, highlighting syntax, and much more, which improves the visual "
"perception of information."
#: ../../root/overriding_formatting.rst:11 #: ../../root/overriding_formatting.rst:11
msgid "Управление стандартным форматированием" msgid "Управление стандартным форматированием"
@@ -43,16 +44,17 @@ msgid ""
"``override_system_messages: bool`` (по умолчанию ``False``), который " "``override_system_messages: bool`` (по умолчанию ``False``), который "
"позволяет отключать стандартное форматирование." "позволяет отключать стандартное форматирование."
msgstr "" msgstr ""
"When creating an ``App`` instance, you can use the ``override_system_messages: " "When creating an ``App`` instance, you can use the "
"bool`` parameter (default ``False``), which allows disabling standard formatting." "``override_system_messages: bool`` parameter (default ``False``), which "
"allows disabling standard formatting."
#: ../../root/overriding_formatting.rst:15 #: ../../root/overriding_formatting.rst:15
msgid "" msgid ""
"Если установить его в ``True``, стилизация текста и ASCII-арт будут " "Если установить его в ``True``, стилизация текста и ASCII-графика будут "
"отключены, а системные сообщения — выводиться в «сыром» виде." "отключены, а системные сообщения — выводиться в «сыром» виде."
msgstr "" msgstr ""
"If set to ``True``, text styling and ASCII art will be disabled, and system " "If set to ``True``, text styling and ASCII graphics will be disabled, and"
"messages will be output in \"raw\" form." " system messages will be output in \"raw\" form."
#: ../../root/overriding_formatting.rst:20 #: ../../root/overriding_formatting.rst:20
msgid "Приветственное и прощальное сообщения" msgid "Приветственное и прощальное сообщения"
@@ -63,8 +65,8 @@ msgid ""
"Приветственное (``initial_message``) и прощальное (``farewell_message``) " "Приветственное (``initial_message``) и прощальное (``farewell_message``) "
"сообщения по умолчанию выводятся в виде ASCII-графики." "сообщения по умолчанию выводятся в виде ASCII-графики."
msgstr "" msgstr ""
"Welcome (``initial_message``) and farewell (``farewell_message``) messages are " "Welcome (``initial_message``) and farewell (``farewell_message``) "
"displayed as ASCII art by default." "messages are displayed as ASCII art by default."
#: ../../root/overriding_formatting.rst:25 #: ../../root/overriding_formatting.rst:25
msgid "" msgid ""
@@ -75,11 +77,11 @@ msgid ""
"``override_system_messages=True`` или использовать только латинские " "``override_system_messages=True`` или использовать только латинские "
"символы." "символы."
msgstr "" msgstr ""
"The ``art`` library is designed to work with ASCII characters and **does not " "The ``art`` library is designed to work with ASCII characters and **does "
"support Cyrillic**. This leads to distortion of Russian and other Cyrillic " "not support Cyrillic**. This leads to distortion of Russian and other "
"alphabet characters. If your message contains Cyrillic, it is recommended to " "Cyrillic alphabet characters. If your message contains Cyrillic, it is "
"disable formatting using ``override_system_messages=True`` or use only Latin " "recommended to disable formatting using ``override_system_messages=True``"
"characters." " or use only Latin characters."
#: ../../root/overriding_formatting.rst:30 #: ../../root/overriding_formatting.rst:30
msgid "Кастомизация вывода" msgid "Кастомизация вывода"
@@ -90,8 +92,8 @@ msgid ""
"Для полной замены логики вывода текста в конструкторе ``App`` " "Для полной замены логики вывода текста в конструкторе ``App`` "
"предусмотрен параметр ``print_func``." "предусмотрен параметр ``print_func``."
msgstr "" msgstr ""
"For complete replacement of text output logic, the ``App`` constructor provides " "For complete replacement of text output logic, the ``App`` constructor "
"the ``print_func`` parameter." "provides the ``print_func`` parameter."
#: ../../root/overriding_formatting.rst:34 #: ../../root/overriding_formatting.rst:34
msgid "" msgid ""
@@ -101,10 +103,11 @@ msgid ""
"``rich.console.Console().print``. Вы можете передать сюда свою функцию, " "``rich.console.Console().print``. Вы можете передать сюда свою функцию, "
"чтобы, например, логировать вывод в файл или отправлять его по сети." "чтобы, например, логировать вывод в файл или отправлять его по сети."
msgstr "" msgstr ""
"**print_func**: ``Callable[[str], None]`` This parameter allows passing any " "**print_func**: ``Callable[[str], None]`` This parameter allows passing "
"callable entity (for example, a function) that will be used to output all system " "any callable entity (for example, a function) that will be used to output"
"messages. By default, this is ``rich.console.Console().print``. You can pass your " " all system messages. By default, this is "
"own function here to, for example, log output to a file or send it over the network." "``rich.console.Console().print``. You can pass your own function here to,"
" for example, log output to a file or send it over the network."
#: ../../root/overriding_formatting.rst:38 #: ../../root/overriding_formatting.rst:38
msgid "" msgid ""
@@ -113,7 +116,8 @@ msgid ""
"выводиться в сыром виде, в этом случае рекомендуется переопределить " "выводиться в сыром виде, в этом случае рекомендуется переопределить "
"стандартное форматирование с помощью ``override_system_messages=True``." "стандартное форматирование с помощью ``override_system_messages=True``."
msgstr "" msgstr ""
"When overriding the output function, you should ensure it supports ``rich`` markup, " "When overriding the output function, you should ensure it supports "
"otherwise system messages will be output in raw form. In this case, it is " "``rich`` markup, otherwise system messages will be output in raw form. In"
"recommended to override standard formatting using ``override_system_messages=True``." " this case, it is recommended to override standard formatting using "
"``override_system_messages=True``."
+86 -42
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-02 22:27+0300\n" "POT-Creation-Date: 2025-12-04 20:39+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -27,28 +27,30 @@ msgid ""
"В этом руководстве мы рассмотрим два примера создания CLI-приложения с " "В этом руководстве мы рассмотрим два примера создания CLI-приложения с "
"помощью Argenta:" "помощью Argenta:"
msgstr "" msgstr ""
"In this guide, we will look at two examples of creating a CLI application with Argenta:" "In this guide, we will look at two examples of creating a CLI application"
" with Argenta:"
#: ../../root/quickstart.rst:8 #: ../../root/quickstart.rst:8
msgid "" msgid ""
"**Простой пример**: Минимальное приложение, быстрое знакомство с " "**Простой пример**: минимальное приложение для быстрого знакомства с "
"основными компонентами." "основными компонентами."
msgstr "" msgstr ""
"**Simple example**: A minimal application, quick introduction to the main components." "**Simple example**: a minimal application for quick introduction to the "
"main components."
#: ../../root/quickstart.rst:9 #: ../../root/quickstart.rst:9
msgid "" msgid ""
"**Более сложный пример**: Полнофункциональное приложение «Менеджер задач»" "**Более сложный пример**: полнофункциональное приложение «Менеджер задач»"
" с внедрением зависимостей и бизнес-логикой." " с внедрением зависимостей и бизнес-логикой."
msgstr "" msgstr ""
"**More complex example**: A full-featured \"Task Manager\" application with " "**More complex example**: a full-featured \"Task Manager\" application "
"dependency injection and business logic." "with dependency injection and business logic."
#: ../../root/quickstart.rst:12 #: ../../root/quickstart.rst:12
msgid "Простой пример" msgid "Простой пример"
msgstr "Simple Example" msgstr "Simple Example"
#: ../../root/quickstart.rst:14 ../../root/quickstart.rst:38 #: ../../root/quickstart.rst:14 ../../root/quickstart.rst:74
msgid "**Установка**" msgid "**Установка**"
msgstr "**Installation**" msgstr "**Installation**"
@@ -58,81 +60,123 @@ msgid ""
"запуска приложения. Вы можете скопировать этот код, запустить его и сразу" "запуска приложения. Вы можете скопировать этот код, запустить его и сразу"
" увидеть результат." " увидеть результат."
msgstr "" msgstr ""
"This example demonstrates the absolute minimum required to create and run an " "This example demonstrates the absolute minimum required to create and run"
"application. You can copy this code, run it, and immediately see the result." " an application. You can copy this code, run it, and immediately see the "
"result."
#: ../../root/quickstart.rst:26 ../../root/quickstart.rst:76 #: ../../root/quickstart.rst:26
msgid "**Запуск**"
msgstr "**Running**"
#: ../../root/quickstart.rst:28
msgid "Сохраните код в файл (например, ``main.py``) и запустите:"
msgstr "Save the code to a file (for example, ``main.py``) and run:"
#: ../../root/quickstart.rst:34 ../../root/quickstart.rst:112
msgid "**Результат**" msgid "**Результат**"
msgstr "**Result**" msgstr "**Result**"
#: ../../root/quickstart.rst:28
msgid "Simple App Example"
msgstr ""
#: ../../root/quickstart.rst:34
msgid "Более сложный пример: Менеджер задач"
msgstr "More Complex Example: Task Manager"
#: ../../root/quickstart.rst:36 #: ../../root/quickstart.rst:36
msgid "" msgid "Simple App Example"
"В этом руководстве мы создадим простое, но полнофункциональное " msgstr "Simple App Example"
"CLI-приложение «Менеджер задач», которое продемонстрирует ключевые "
"возможности Argenta." #: ../../root/quickstart.rst:42
msgstr "" msgid "Промежуточный пример: Калькулятор с флагами"
"In this guide, we will create a simple but full-featured CLI application \"Task " msgstr "Intermediate Example: Calculator with Flags"
"Manager\" that will demonstrate the key features of Argenta."
#: ../../root/quickstart.rst:44 #: ../../root/quickstart.rst:44
msgid ""
"Прежде чем перейти к сложному примеру с DI, рассмотрим промежуточный "
"вариант — калькулятор, который использует флаги для управления "
"поведением."
msgstr ""
"Before moving to a complex example with DI, let's consider an "
"intermediate option — a calculator that uses flags to control behavior."
#: ../../root/quickstart.rst:50
msgid "**Запуск:**"
msgstr "**Running:**"
#: ../../root/quickstart.rst:52
msgid "Сохраните код в файл ``calculator.py`` и запустите:"
msgstr "Save the code to a file ``calculator.py`` and run:"
#: ../../root/quickstart.rst:58
msgid "**Использование:**"
msgstr "**Usage:**"
#: ../../root/quickstart.rst:65
msgid ""
"Этот пример показывает, как работать с флагами без использования DI. "
"Теперь перейдём к более сложному примеру."
msgstr ""
"This example shows how to work with flags without using DI. Now let's "
"move on to a more complex example."
#: ../../root/quickstart.rst:70
msgid "Сложный пример: Менеджер задач с DI"
msgstr "Complex Example: Task Manager with DI"
#: ../../root/quickstart.rst:72
msgid ""
"В этом руководстве мы создадим полнофункциональное CLI-приложение "
"«Менеджер задач», которое продемонстрирует работу с внедрением "
"зависимостей."
msgstr ""
"In this guide, we will create a full-featured CLI application \"Task "
"Manager\" that will demonstrate working with dependency injection."
#: ../../root/quickstart.rst:80
msgid "**Определение моделей данных и репозитория**" msgid "**Определение моделей данных и репозитория**"
msgstr "**Defining Data Models and Repository**" msgstr "**Defining Data Models and Repository**"
#: ../../root/quickstart.rst:46 #: ../../root/quickstart.rst:82
msgid "Сначала определим модели данных для задачи и репозиторий для их хранения." msgid "Сначала определим модели данных для задачи и репозиторий для их хранения."
msgstr "First, let's define data models for tasks and a repository to store them." msgstr "First, let's define data models for tasks and a repository to store them."
#: ../../root/quickstart.rst:52 #: ../../root/quickstart.rst:88
msgid "**Создание провайдера для DI**" msgid "**Создание провайдера для DI**"
msgstr "**Creating a Provider for DI**" msgstr "**Creating a Provider for DI**"
#: ../../root/quickstart.rst:54 #: ../../root/quickstart.rst:90
msgid "" msgid ""
"Чтобы Argenta могла внедрять ``TaskRepository`` в наши обработчики, мы " "Чтобы Argenta могла внедрять ``TaskRepository`` в наши обработчики, мы "
"создадим провайдер для ``dishka``." "создадим провайдер для ``dishka``."
msgstr "" msgstr ""
"To allow Argenta to inject ``TaskRepository`` into our handlers, we will create a " "To allow Argenta to inject ``TaskRepository`` into our handlers, we will "
"provider for ``dishka``." "create a provider for ``dishka``."
#: ../../root/quickstart.rst:60 #: ../../root/quickstart.rst:96
msgid "**Создание обработчиков команд**" msgid "**Создание обработчиков команд**"
msgstr "**Creating Command Handlers**" msgstr "**Creating Command Handlers**"
#: ../../root/quickstart.rst:62 #: ../../root/quickstart.rst:98
msgid "" msgid ""
"Теперь создадим обработчики для команд ``add-task`` и ``list-tasks``. " "Теперь создадим обработчики для команд ``add-task`` и ``list-tasks``. "
"Обратите внимание, как мы используем флаги и внедряем ``TaskRepository``." "Обратите внимание, как мы используем флаги и внедряем ``TaskRepository``."
msgstr "" msgstr ""
"Now let's create handlers for the ``add-task`` and ``list-tasks`` commands. Notice " "Now let's create handlers for the ``add-task`` and ``list-tasks`` "
"how we use flags and inject ``TaskRepository``." "commands. Notice how we use flags and inject ``TaskRepository``."
#: ../../root/quickstart.rst:68 #: ../../root/quickstart.rst:104
msgid "**Сборка и запуск приложения**" msgid "**Сборка и запуск приложения**"
msgstr "**Building and Running the Application**" msgstr "**Building and Running the Application**"
#: ../../root/quickstart.rst:70 #: ../../root/quickstart.rst:106
msgid "" msgid ""
"Наконец, соберем все вместе: создадим экземпляр ``App``, подключим роутер" "Наконец, соберем все вместе: создадим экземпляр ``App``, подключим роутер"
" и провайдер, а затем запустим приложение." " и провайдер, а затем запустим приложение."
msgstr "" msgstr ""
"Finally, let's put it all together: create an ``App`` instance, connect the router " "Finally, let's put it all together: create an ``App`` instance, connect "
"and provider, and then run the application." "the router and provider, and then run the application."
#: ../../root/quickstart.rst:78 #: ../../root/quickstart.rst:114
msgid "" msgid ""
"Теперь вы можете запустить ``main.py`` и взаимодействовать с вашим новым " "Теперь вы можете запустить ``main.py`` и взаимодействовать с вашим новым "
"CLI-приложением." "CLI-приложением."
msgstr "Now you can run ``main.py`` and interact with your new CLI application." msgstr "Now you can run ``main.py`` and interact with your new CLI application."
#: ../../root/quickstart.rst:80 #: ../../root/quickstart.rst:116
msgid "Task Manager Example" msgid "Task Manager Example"
msgstr "" msgstr "Task Manager Example"
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-02 22:27+0300\n" "POT-Creation-Date: 2025-12-04 20:39+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -29,15 +29,46 @@ msgid ""
"перехвата стандартного потока вывода (``stdout``), что накладывает " "перехвата стандартного потока вывода (``stdout``), что накладывает "
"некоторые особенности." "некоторые особенности."
msgstr "" msgstr ""
"``Argenta`` provides flexible mechanisms for output formatting, including dynamic " "``Argenta`` provides flexible mechanisms for output formatting, including"
"dividing lines. This is achieved by intercepting the standard output stream " " dynamic dividing lines. This is achieved by intercepting the standard "
"(``stdout``), which imposes certain specifics." "output stream (``stdout``), which imposes certain specifics."
#: ../../root/redirect_stdout.rst:11 #: ../../root/redirect_stdout.rst:11
msgid "Когда нужно отключать перехват stdout"
msgstr "When to Disable stdout Interception"
#: ../../root/redirect_stdout.rst:13
msgid ""
"Отключайте перехват ``stdout`` (``disable_redirect_stdout=True`` в "
"``Router``), если ваши команды:"
msgstr ""
"Disable ``stdout`` interception (``disable_redirect_stdout=True`` in "
"``Router``) if your commands:"
#: ../../root/redirect_stdout.rst:15
msgid ""
"✓ Используют ``input()`` для интерактивного ввода данных от пользователя "
"✓ Используют прогресс-бары (``tqdm``, ``rich.progress``) ✓ Выводят данные"
" в реальном времени (streaming, логи) ✓ Используют библиотеки, которые "
"напрямую работают с ``stdout``"
msgstr ""
"✓ Use ``input()`` for interactive user input ✓ Use progress bars "
"(``tqdm``, ``rich.progress``) ✓ Output data in real-time (streaming, "
"logs) ✓ Use libraries that work directly with ``stdout``"
#: ../../root/redirect_stdout.rst:20
msgid ""
"Для обычных команд с ``print()`` перехват можно оставить включённым — это"
" не влияет на их работу."
msgstr ""
"For regular commands with ``print()``, interception can be left enabled —"
" it does not affect their operation."
#: ../../root/redirect_stdout.rst:25
msgid "Механизм перехвата ``stdout``" msgid "Механизм перехвата ``stdout``"
msgstr "``stdout`` Interception Mechanism" msgstr "``stdout`` Interception Mechanism"
#: ../../root/redirect_stdout.rst:13 #: ../../root/redirect_stdout.rst:27
msgid "" msgid ""
"По умолчанию ``Argenta`` перехватывает весь текст, выводимый в ``stdout``" "По умолчанию ``Argenta`` перехватывает весь текст, выводимый в ``stdout``"
" внутри обработчика команды. Это необходимо для реализации **динамических" " внутри обработчика команды. Это необходимо для реализации **динамических"
@@ -46,158 +77,164 @@ msgid ""
"создаёт аккуратный интерфейс, где вывод команды «обёрнут» в рамку, " "создаёт аккуратный интерфейс, где вывод команды «обёрнут» в рамку, "
"подогнанную под его содержимое." "подогнанную под его содержимое."
msgstr "" msgstr ""
"By default, ``Argenta`` intercepts all text output to ``stdout`` inside a command " "By default, ``Argenta`` intercepts all text output to ``stdout`` inside a"
"handler. This is necessary to implement **dynamic dividers**: the system analyzes " " command handler. This is necessary to implement **dynamic dividers**: "
"the output, finds the longest line, and uses it to draw the top and bottom borders. " "the system analyzes the output, finds the longest line, and uses it to "
"This approach creates a neat interface where the command output is \"wrapped\" in a " "draw the top and bottom borders. This approach creates a neat interface "
"frame fitted to its content." "where the command output is \"wrapped\" in a frame fitted to its content."
#: ../../root/redirect_stdout.rst:15 #: ../../root/redirect_stdout.rst:29
msgid "Пример приложения с динамической разделительной линией:" msgid "Пример приложения с динамической разделительной линией:"
msgstr "Example of an application with a dynamic dividing line:" msgstr "Example of an application with a dynamic dividing line:"
#: ../../root/redirect_stdout.rst:17 #: ../../root/redirect_stdout.rst:31
msgid "Example of an application with a dynamic dividing line" msgid "Example of an application with a dynamic dividing line"
msgstr "" msgstr "Example of an application with a dynamic dividing line"
#: ../../root/redirect_stdout.rst:20 #: ../../root/redirect_stdout.rst:34
msgid "" msgid ""
"Как вы можете заметить разделительная линия ровно той же длины, что и " "Как вы можете заметить, разделительная линия ровно той же длины, что и "
"самая длинная строка в выводе." "самая длинная строка в выводе."
msgstr "" msgstr ""
"As you can notice, the dividing line is exactly the same length as the longest line " "As you can see, the dividing line is exactly the same length as the "
"in the output." "longest line in the output."
#: ../../root/redirect_stdout.rst:22 #: ../../root/redirect_stdout.rst:36
msgid "То же приложение с статической линией:" msgid "То же приложение с статической линией:"
msgstr "The same application with a static line:" msgstr "The same application with a static line:"
#: ../../root/redirect_stdout.rst:24 #: ../../root/redirect_stdout.rst:38
msgid "Example of an application with a static dividing line" msgid "Example of an application with a static dividing line"
msgstr "" msgstr "Example of an application with a static dividing line"
#: ../../root/redirect_stdout.rst:27 #: ../../root/redirect_stdout.rst:41
msgid "" msgid ""
"В этом примере разделительная линия имеет фиксированную длину (по " "В этом примере разделительная линия имеет фиксированную длину (по "
"умолчанию 25 символов)." "умолчанию 25 символов)."
msgstr "In this example, the dividing line has a fixed length (25 characters by default)." msgstr ""
"In this example, the dividing line has a fixed length (25 characters by "
"default)."
#: ../../root/redirect_stdout.rst:32 #: ../../root/redirect_stdout.rst:46
msgid "Побочные эффекты перехвата ``stdout``" msgid "Побочные эффекты перехвата ``stdout``"
msgstr "Side Effects of ``stdout`` Interception" msgstr "Side Effects of ``stdout`` Interception"
#: ../../root/redirect_stdout.rst:34 #: ../../root/redirect_stdout.rst:48
msgid "" msgid ""
"Побочный эффект этого механизма проявляется при использовании функций, " "Побочный эффект этого механизма проявляется при использовании функций, "
"которые последовательно выводят текст в консоль и ожидают ввод от " "которые последовательно выводят текст в консоль и ожидают ввод от "
"пользователя. Классический пример — стандартная функция ``input()``." "пользователя. Классический пример — стандартная функция ``input()``."
msgstr "" msgstr ""
"A side effect of this mechanism manifests when using functions that sequentially " "A side effect of this mechanism manifests when using functions that "
"output text to the console and expect user input. A classic example is the standard " "sequentially output text to the console and expect user input. A classic "
"``input()`` function." "example is the standard ``input()`` function."
#: ../../root/redirect_stdout.rst:44 #: ../../root/redirect_stdout.rst:57
msgid "" msgid ""
"При включённом перехвате ``stdout`` текст (например, ``\"Введите ваше " "При включённом перехвате ``stdout`` текст (например, ``\"Введите ваше "
"имя: \"``) **не будет выведен в консоль немедленно**. Он попадёт в буфер " "имя: \"``) **не будет выведен в консоль немедленно**. Он попадёт в буфер "
"и отобразится лишь после завершения работы обработчика вместе с остальным" "и отобразится лишь после завершения работы обработчика вместе с остальным"
" выводом. Это может сбить пользователя с толку." " выводом. Это может сбить пользователя с толку."
msgstr "" msgstr ""
"With ``stdout`` interception enabled, text (for example, ``\"Enter your name: \"``) " "With ``stdout`` interception enabled, text (for example, ``\"Enter your "
"**will not be output to the console immediately**. It will go into a buffer and " "name: \"``) **will not be output to the console immediately**. It will go"
"appear only after the handler finishes, along with the rest of the output. This can " " into a buffer and appear only after the handler finishes, along with the"
"confuse the user." " rest of the output. This can confuse the user."
#: ../../root/redirect_stdout.rst:49 #: ../../root/redirect_stdout.rst:62
msgid "Отключение перехвата ``stdout`` с помощью ``disable_redirect_stdout``" msgid "Отключение перехвата ``stdout`` с помощью ``disable_redirect_stdout``"
msgstr "Disabling ``stdout`` Interception with ``disable_redirect_stdout``" msgstr "Disabling ``stdout`` Interception with ``disable_redirect_stdout``"
#: ../../root/redirect_stdout.rst:51 #: ../../root/redirect_stdout.rst:64
msgid "" msgid ""
"Чтобы решить эту проблему, в конструкторе ``Router`` предусмотрен " "Чтобы решить эту проблему, в конструкторе ``Router`` предусмотрен "
"специальный аргумент:" "специальный аргумент:"
msgstr "To solve this problem, the ``Router`` constructor provides a special argument:" msgstr ""
"To solve this problem, the ``Router`` constructor provides a special "
"argument:"
#: ../../root/redirect_stdout.rst:53 #: ../../root/redirect_stdout.rst:66
msgid "**disable_redirect_stdout** (``bool``, по умолчанию ``False``)" msgid "**disable_redirect_stdout** (``bool``, по умолчанию ``False``)"
msgstr "**disable_redirect_stdout** (``bool``, default ``False``)" msgstr "**disable_redirect_stdout** (``bool``, default ``False``)"
#: ../../root/redirect_stdout.rst:55 #: ../../root/redirect_stdout.rst:68
msgid "" msgid ""
"Если при создании роутера установить ``disable_redirect_stdout=True``, " "Если при создании роутера установить ``disable_redirect_stdout=True``, "
"механизм перехвата ``stdout`` будет отключён для всех его обработчиков." "механизм перехвата ``stdout`` будет отключён для всех его обработчиков."
msgstr "" msgstr ""
"If you set ``disable_redirect_stdout=True`` when creating a router, the ``stdout`` " "If you set ``disable_redirect_stdout=True`` when creating a router, the "
"interception mechanism will be disabled for all its handlers." "``stdout`` interception mechanism will be disabled for all its handlers."
#: ../../root/redirect_stdout.rst:57 ../../root/redirect_stdout.rst:87 #: ../../root/redirect_stdout.rst:70 ../../root/redirect_stdout.rst:100
msgid "**Пример использования:**" msgid "**Пример использования:**"
msgstr "**Usage example:**" msgstr "**Usage example:**"
#: ../../root/redirect_stdout.rst:63 #: ../../root/redirect_stdout.rst:76
msgid "" msgid ""
"В этом случае ``input()`` будет работать как обычно, и пользователь сразу" "В этом случае ``input()`` будет работать как обычно, и пользователь сразу"
" увидит приглашение к вводу." " увидит приглашение к вводу."
msgstr "" msgstr ""
"In this case, ``input()`` will work as usual, and the user will immediately see the " "In this case, ``input()`` will work as usual, and the user will "
"input prompt." "immediately see the input prompt."
#: ../../root/redirect_stdout.rst:68 #: ../../root/redirect_stdout.rst:81
msgid "Типы разделительных линий" msgid "Типы разделительных линий"
msgstr "Types of Dividing Lines" msgstr "Types of Dividing Lines"
#: ../../root/redirect_stdout.rst:70 #: ../../root/redirect_stdout.rst:83
msgid "" msgid ""
"``Argenta`` поддерживает два типа разделителей, которые настраиваются при" "``Argenta`` поддерживает два типа разделителей, которые настраиваются при"
" инициализации ``App``:" " инициализации ``App``:"
msgstr "" msgstr ""
"``Argenta`` supports two types of dividers, which are configured during ``App`` " "``Argenta`` supports two types of dividers, which are configured during "
"initialization:" "``App`` initialization:"
#: ../../root/redirect_stdout.rst:72 #: ../../root/redirect_stdout.rst:85
msgid "**``DynamicDividingLine()``**" msgid "**``DynamicDividingLine()``**"
msgstr "" msgstr "**``DynamicDividingLine()``**"
#: ../../root/redirect_stdout.rst:73 #: ../../root/redirect_stdout.rst:86
msgid "" msgid ""
"Поведение по умолчанию. Длина линии динамически подстраивается под самый " "Поведение по умолчанию. Длина линии динамически подстраивается под самый "
"длинный текст в выводе." "длинный текст в выводе."
msgstr "" msgstr ""
"Default behavior. The line length dynamically adjusts to the longest text in the output." "Default behavior. The line length dynamically adjusts to the longest text"
" in the output."
#: ../../root/redirect_stdout.rst:74 #: ../../root/redirect_stdout.rst:87
msgid "" msgid ""
"Требует включённого перехвата ``stdout`` " "Требует включённого перехвата ``stdout`` "
"(``disable_redirect_stdout=False`` в роутере)." "(``disable_redirect_stdout=False`` в роутере)."
msgstr "" msgstr ""
"Requires enabled ``stdout`` interception (``disable_redirect_stdout=False`` in the router)." "Requires enabled ``stdout`` interception "
"(``disable_redirect_stdout=False`` in the router)."
#: ../../root/redirect_stdout.rst:76 #: ../../root/redirect_stdout.rst:89
msgid "**``StaticDividingLine(length: int = 25)``**" msgid "**``StaticDividingLine(length: int = 25)``**"
msgstr "" msgstr "**``StaticDividingLine(length: int = 25)``**"
#: ../../root/redirect_stdout.rst:77 #: ../../root/redirect_stdout.rst:90
msgid "" msgid ""
"Линия имеет фиксированную длину (по умолчанию 25 символов), которую можно" "Линия имеет фиксированную длину (по умолчанию 25 символов), которую можно"
" задать через аргумент ``length``." " задать через аргумент ``length``."
msgstr "" msgstr ""
"The line has a fixed length (25 characters by default), which can be set via the " "The line has a fixed length (25 characters by default), which can be set "
"``length`` argument." "via the ``length`` argument."
#: ../../root/redirect_stdout.rst:78 #: ../../root/redirect_stdout.rst:91
msgid "" msgid ""
"Используется принудительно для роутеров с " "Используется принудительно для роутеров с "
"``disable_redirect_stdout=True``, так как без перехвата вывода невозможно" "``disable_redirect_stdout=True``, так как без перехвата вывода невозможно"
" определить динамическую длину." " определить динамическую длину."
msgstr "" msgstr ""
"Used forcibly for routers with ``disable_redirect_stdout=True``, as it is " "Used forcibly for routers with ``disable_redirect_stdout=True``, as it is"
"impossible to determine dynamic length without output interception." " impossible to determine dynamic length without output interception."
#: ../../root/redirect_stdout.rst:83 #: ../../root/redirect_stdout.rst:96
msgid "Настройка разделительной линии в ``App``" msgid "Настройка разделительной линии в ``App``"
msgstr "Configuring the Dividing Line in ``App``" msgstr "Configuring the Dividing Line in ``App``"
#: ../../root/redirect_stdout.rst:85 #: ../../root/redirect_stdout.rst:98
msgid "" msgid ""
"Вы можете глобально задать тип разделителя для всего приложения через " "Вы можете глобально задать тип разделителя для всего приложения через "
"аргумент ``dividing_line`` в конструкторе ``App``." "аргумент ``dividing_line`` в конструкторе ``App``."
@@ -205,69 +242,69 @@ msgstr ""
"You can globally set the divider type for the entire application via the " "You can globally set the divider type for the entire application via the "
"``dividing_line`` argument in the ``App`` constructor." "``dividing_line`` argument in the ``App`` constructor."
#: ../../root/redirect_stdout.rst:96 #: ../../root/redirect_stdout.rst:109
msgid "Итоговое поведение" msgid "Итоговое поведение"
msgstr "Resulting Behavior" msgstr "Resulting Behavior"
#: ../../root/redirect_stdout.rst:102 #: ../../root/redirect_stdout.rst:115
msgid "``disable_redirect_stdout`` на ``Router``" msgid "``disable_redirect_stdout`` на ``Router``"
msgstr "``disable_redirect_stdout`` on ``Router``" msgstr "``disable_redirect_stdout`` on ``Router``"
#: ../../root/redirect_stdout.rst:103 #: ../../root/redirect_stdout.rst:116
msgid "Тип линии в ``App``" msgid "Тип линии в ``App``"
msgstr "Line type in ``App``" msgstr "Line type in ``App``"
#: ../../root/redirect_stdout.rst:104 #: ../../root/redirect_stdout.rst:117
msgid "Фактическое поведение" msgid "Фактическое поведение"
msgstr "Actual behavior" msgstr "Actual behavior"
#: ../../root/redirect_stdout.rst:105 #: ../../root/redirect_stdout.rst:118
msgid "``input()`` работает корректно?" msgid "``input()`` работает корректно?"
msgstr "Does ``input()`` work correctly?" msgstr "Does ``input()`` work correctly?"
#: ../../root/redirect_stdout.rst:106 ../../root/redirect_stdout.rst:110 #: ../../root/redirect_stdout.rst:119 ../../root/redirect_stdout.rst:123
msgid "``False`` (по умолчанию)" msgid "``False`` (по умолчанию)"
msgstr "``False`` (default)" msgstr "``False`` (default)"
#: ../../root/redirect_stdout.rst:107 ../../root/redirect_stdout.rst:115 #: ../../root/redirect_stdout.rst:120 ../../root/redirect_stdout.rst:128
msgid "``DynamicDividingLine``" msgid "``DynamicDividingLine``"
msgstr "" msgstr "``DynamicDividingLine``"
#: ../../root/redirect_stdout.rst:108 #: ../../root/redirect_stdout.rst:121
msgid "Динамическая линия, длина по содержимому" msgid "Динамическая линия, длина по содержимому"
msgstr "Dynamic line, length by content" msgstr "Dynamic line, length by content"
#: ../../root/redirect_stdout.rst:109 ../../root/redirect_stdout.rst:113 #: ../../root/redirect_stdout.rst:122 ../../root/redirect_stdout.rst:126
msgid "Нет" msgid "Нет"
msgstr "No" msgstr "No"
#: ../../root/redirect_stdout.rst:111 ../../root/redirect_stdout.rst:119 #: ../../root/redirect_stdout.rst:124 ../../root/redirect_stdout.rst:132
msgid "``StaticDividingLine``" msgid "``StaticDividingLine``"
msgstr "" msgstr "``StaticDividingLine``"
#: ../../root/redirect_stdout.rst:112 ../../root/redirect_stdout.rst:120 #: ../../root/redirect_stdout.rst:125 ../../root/redirect_stdout.rst:133
msgid "Статическая линия указанной длины" msgid "Статическая линия указанной длины"
msgstr "Static line of specified length" msgstr "Static line of specified length"
#: ../../root/redirect_stdout.rst:114 ../../root/redirect_stdout.rst:118 #: ../../root/redirect_stdout.rst:127 ../../root/redirect_stdout.rst:131
msgid "``True``" msgid "``True``"
msgstr "" msgstr "``True``"
#: ../../root/redirect_stdout.rst:116 #: ../../root/redirect_stdout.rst:129
msgid "**Принудительно статическая линия** (длина по умолч.)" msgid "**Принудительно статическая линия** (длина по умолч.)"
msgstr "**Forcibly static line** (default length)" msgstr "**Forcibly static line** (default length)"
#: ../../root/redirect_stdout.rst:117 ../../root/redirect_stdout.rst:121 #: ../../root/redirect_stdout.rst:130 ../../root/redirect_stdout.rst:134
msgid "Да" msgid "Да"
msgstr "Yes" msgstr "Yes"
#: ../../root/redirect_stdout.rst:123 #: ../../root/redirect_stdout.rst:136
msgid "" msgid ""
"Таким образом, для интерактивных команд, требующих ввода от пользователя," "Таким образом, для интерактивных команд, требующих ввода от пользователя,"
" отключайте перехват ``stdout`` на уровне роутера. Для всех остальных " " отключайте перехват ``stdout`` на уровне роутера. Для всех остальных "
"команд можно оставить поведение по умолчанию." "команд можно оставить поведение по умолчанию."
msgstr "" msgstr ""
"Thus, for interactive commands that require user input, disable ``stdout`` " "Thus, for interactive commands that require user input, disable "
"interception at the router level. For all other commands, you can leave the default " "``stdout`` interception at the router level. For all other commands, you "
"behavior." "can leave the default behavior."
+39 -34
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Argenta \n" "Project-Id-Version: Argenta \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-12-02 22:27+0300\n" "POT-Creation-Date: 2025-12-04 20:39+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en\n" "Language: en\n"
@@ -27,8 +27,8 @@ msgid ""
"В этом разделе описаны практики тестирования приложений на основе " "В этом разделе описаны практики тестирования приложений на основе "
"``Argenta``. Примеры основаны на фактическом публичном API." "``Argenta``. Примеры основаны на фактическом публичном API."
msgstr "" msgstr ""
"This section describes testing practices for applications based on ``Argenta``. " "This section describes testing practices for applications based on "
"Examples are based on the actual public API." "``Argenta``. Examples are based on the actual public API."
#: ../../root/testing.rst:7 #: ../../root/testing.rst:7
msgid "Модульное тестирование обработчиков" msgid "Модульное тестирование обработчиков"
@@ -40,12 +40,12 @@ msgid ""
"чистые функции, не поднимая весь цикл приложения. Рекомендуются " "чистые функции, не поднимая весь цикл приложения. Рекомендуются "
"``unittest`` или ``pytest``." "``unittest`` или ``pytest``."
msgstr "" msgstr ""
"Handlers in ``Argenta`` are regular functions. They are convenient to test as pure " "Handlers in ``Argenta`` are regular functions. They are convenient to "
"functions without starting the entire application cycle. ``unittest`` or ``pytest`` " "test as pure functions without starting the entire application cycle. "
"are recommended." "``unittest`` or ``pytest`` are recommended."
#: ../../root/testing.rst:11 ../../root/testing.rst:24 #: ../../root/testing.rst:11 ../../root/testing.rst:24
#: ../../root/testing.rst:37 ../../root/testing.rst:53 #: ../../root/testing.rst:37 ../../root/testing.rst:55
msgid "**Пример использования:**" msgid "**Пример использования:**"
msgstr "**Usage example:**" msgstr "**Usage example:**"
@@ -58,7 +58,8 @@ msgid ""
"Если обработчику нужны зависимости, используйте ``dishka`` и интеграцию " "Если обработчику нужны зависимости, используйте ``dishka`` и интеграцию "
"``Argenta``:" "``Argenta``:"
msgstr "" msgstr ""
"If a handler needs dependencies, use ``dishka`` and ``Argenta`` integration:" "If a handler needs dependencies, use ``dishka`` and ``Argenta`` "
"integration:"
#: ../../root/testing.rst:33 #: ../../root/testing.rst:33
msgid "Интеграционное тестирование приложения" msgid "Интеграционное тестирование приложения"
@@ -71,9 +72,10 @@ msgid ""
"ввода. Это даёт близкое к реальности поведение без необходимости " "ввода. Это даёт близкое к реальности поведение без необходимости "
"симулировать ``stdin``." "симулировать ``stdin``."
msgstr "" msgstr ""
"For higher-level tests, assemble ``App`` and ``Router`` and call handlers through " "For higher-level tests, assemble ``App`` and ``Router`` and call handlers"
"command parsing, bypassing the infinite input loop. This provides behavior close to " " through command parsing, bypassing the infinite input loop. This "
"reality without the need to simulate ``stdin``." "provides behavior close to reality without the need to simulate "
"``stdin``."
#: ../../root/testing.rst:46 #: ../../root/testing.rst:46
msgid "E2E-тестирование цикла" msgid "E2E-тестирование цикла"
@@ -85,54 +87,57 @@ msgid ""
"передачей строк в ``stdin``. Это тяжелее и обычно не требуется. Если всё " "передачей строк в ``stdin``. Это тяжелее и обычно не требуется. Если всё "
"же необходимо — пример ниже." "же необходимо — пример ниже."
msgstr "" msgstr ""
"Full execution of the ``start_polling`` loop can be covered through a subprocess " "Full execution of the ``start_polling`` loop can be covered through a "
"with passing strings to ``stdin``. This is heavier and usually not required. If " "subprocess with passing strings to ``stdin``. This is heavier and usually"
"still necessary, an example is below." " not required. If still necessary, an example is below."
#: ../../root/testing.rst:51 #: ../../root/testing.rst:51
msgid "" msgid ""
"Обязательно передавайте строковый триггер команды выхода последним " "**Важно:** Обязательно передавайте строковый триггер команды выхода "
"элементом в списке, который передаёте в контекстном менеджере при патче " "последним элементом в списке ``side_effects`` при патче ``input``."
"``input`` как аргумент ``side_effects``, иначе тестируемое приложение "
"будет ожидать ввода следующей команды и не сможет корректно завершиться."
msgstr "" msgstr ""
"Be sure to pass the exit command string trigger as the last element in the list " "**Important:** Always pass the exit command string trigger as the last "
"that you pass in the context manager when patching ``input`` as the ``side_effects`` " "element in the ``side_effects`` list when patching ``input``."
"argument, otherwise the application under test will wait for the next command input "
"and will not be able to terminate correctly."
#: ../../root/testing.rst:62 #: ../../root/testing.rst:53
msgid ""
"Иначе тестируемое приложение будет ожидать ввода следующей команды и не "
"сможет корректно завершиться."
msgstr ""
"Otherwise, the application under test will wait for the next command "
"input and will not be able to terminate correctly."
#: ../../root/testing.rst:64
msgid "Советы по тестированию" msgid "Советы по тестированию"
msgstr "Testing Tips" msgstr "Testing Tips"
#: ../../root/testing.rst:64 #: ../../root/testing.rst:66
msgid "**Изолируйте тесты**: Каждый тест должен быть независимым от других." msgid "**Изолируйте тесты**: Каждый тест должен быть независимым от других."
msgstr "**Isolate tests**: Each test should be independent of others." msgstr "**Isolate tests**: Each test should be independent of others."
#: ../../root/testing.rst:65 #: ../../root/testing.rst:67
msgid "" msgid ""
"**Моки для внешних интеграций**: БД, HTTP-клиенты и т.п. подменяйте " "**Моки для внешних интеграций**: БД, HTTP-клиенты и т.п. подменяйте "
"заглушками и провайдерами ``dishka``." "заглушками и провайдерами ``dishka``."
msgstr "" msgstr ""
"**Mocks for external integrations**: Replace databases, HTTP clients, etc. with " "**Mocks for external integrations**: Replace databases, HTTP clients, "
"stubs and ``dishka`` providers." "etc. with stubs and ``dishka`` providers."
#: ../../root/testing.rst:66 #: ../../root/testing.rst:68
msgid "" msgid ""
"**Покрывайте ошибочные сценарии**: Некорректные флаги, неизвестные " "**Покрывайте ошибочные сценарии**: Некорректные флаги, неизвестные "
"команды, пустой ввод." "команды, пустой ввод."
msgstr "" msgstr "**Cover error scenarios**: Incorrect flags, unknown commands, empty input."
"**Cover error scenarios**: Incorrect flags, unknown commands, empty input."
#: ../../root/testing.rst:67 #: ../../root/testing.rst:69
msgid "" msgid ""
"**Минимизируйте зависимость от форматирования**: Сравнивайте ключевые " "**Минимизируйте зависимость от форматирования**: Сравнивайте ключевые "
"фрагменты вывода, а не весь блок целиком." "фрагменты вывода, а не весь блок целиком."
msgstr "" msgstr ""
"**Minimize formatting dependency**: Compare key output fragments, not the entire " "**Minimize formatting dependency**: Compare key output fragments, not the"
"block." " entire block."
#: ../../root/testing.rst:68 #: ../../root/testing.rst:70
msgid "**Измеряйте покрытие**: Используйте ``pytest-cov``." msgid "**Измеряйте покрытие**: Используйте ``pytest-cov``."
msgstr "**Measure coverage**: Use ``pytest-cov``." msgstr "**Measure coverage**: Use ``pytest-cov``."