mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 10:05:28 +03:00
feat: impl docs (#4)
The entire public api is covered with documentation in two languages - Russian and English. the library now supports the latest three versions of python - 3.12, 3.13 and 3.14 minor design changes: now, when a Boolean flag is entered, its value is an empty string, not None. tests have been adapted to the supported versions of python, readmi has been redesigned in two languages, German is no longer available.
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
_build/
|
||||
_static/
|
||||
*.mo
|
||||
@@ -0,0 +1,35 @@
|
||||
# Minimal makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line, and also
|
||||
# from the environment for the first two.
|
||||
SPHINXOPTS ?=
|
||||
SPHINXBUILD ?= sphinx-build
|
||||
SOURCEDIR = .
|
||||
BUILDDIR = _build
|
||||
LANGUAGES = en ru
|
||||
|
||||
build-all:
|
||||
sphinx-build -b html -D language=ru $(SOURCEDIR) $(BUILDDIR)/html/ru
|
||||
sphinx-build -b html -D language=en $(SOURCEDIR) $(BUILDDIR)/html/en
|
||||
|
||||
# Put it first so that "make" without argument is like "make help".
|
||||
help:
|
||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
|
||||
live-ru:
|
||||
sphinx-autobuild -b html . _build/html/ru -D language=ru
|
||||
|
||||
live-en:
|
||||
sphinx-autobuild -b html . _build/html/en -D language=en
|
||||
|
||||
update-langs:
|
||||
sphinx-build -b gettext . _build/gettext
|
||||
sphinx-intl update -p _build/gettext -l en
|
||||
|
||||
.PHONY: help Makefile serve-all
|
||||
|
||||
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||
%: Makefile
|
||||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||
@@ -0,0 +1,13 @@
|
||||
from argenta import App, Orchestrator
|
||||
from argenta.orchestrator.argparser import ArgParser, BooleanArgument, ValueArgument
|
||||
|
||||
arg_parser = ArgParser(processed_args=[BooleanArgument("dev"), ValueArgument('some', possible_values=['fuck', 'cruck'])])
|
||||
orchestrator = Orchestrator(
|
||||
arg_parser=arg_parser,
|
||||
)
|
||||
|
||||
if __name__ == "__main__":
|
||||
if arg_parser.parsed_argspace.get_by_name('dev'):
|
||||
orchestrator.start_polling(App(initial_message='ArgentaDev'))
|
||||
else:
|
||||
orchestrator.start_polling(App())
|
||||
@@ -0,0 +1,33 @@
|
||||
from argenta import App, Orchestrator
|
||||
from argenta.orchestrator.argparser import ArgParser, ValueArgument
|
||||
|
||||
arguments = [
|
||||
ValueArgument("host", help="Server host", is_required=True),
|
||||
ValueArgument("port", help="Server port", is_required=True),
|
||||
]
|
||||
|
||||
argparser = ArgParser(
|
||||
processed_args=arguments,
|
||||
name="WebServer",
|
||||
description="Simple web server"
|
||||
)
|
||||
|
||||
app = App()
|
||||
orchestrator = Orchestrator(argparser)
|
||||
|
||||
|
||||
def main():
|
||||
argspace = argparser.parsed_argspace
|
||||
|
||||
host = argspace.get_by_name("host")
|
||||
port = argspace.get_by_name("port")
|
||||
|
||||
print("Server configuration:")
|
||||
print(f" Host: {host.value}")
|
||||
print(f" Port: {port.value}")
|
||||
|
||||
orchestrator.start_polling(app)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,10 @@
|
||||
from argenta import Response, Router
|
||||
from argenta.di import FromDishka
|
||||
from argenta.orchestrator.argparser import ArgSpace
|
||||
|
||||
router = Router()
|
||||
|
||||
|
||||
@router.command("get_args")
|
||||
async def get_args(response: Response, argspace: FromDishka[ArgSpace]):
|
||||
print(argspace.all_arguments)
|
||||
@@ -0,0 +1,21 @@
|
||||
from argenta import Response, Router
|
||||
from argenta.di import FromDishka
|
||||
from argenta.orchestrator.argparser import ArgSpace, BooleanArgument, ValueArgument
|
||||
|
||||
router = Router()
|
||||
|
||||
|
||||
@router.command("get_args")
|
||||
def get_args(response: Response, argspace: FromDishka[ArgSpace]):
|
||||
# Get all boolean flags
|
||||
boolean_flags = argspace.get_by_type(BooleanArgument)
|
||||
print(f"Active flags: {[arg.name for arg in boolean_flags if arg.value]}")
|
||||
|
||||
# Get all value arguments
|
||||
value_args = argspace.get_by_type(ValueArgument)
|
||||
for arg in value_args:
|
||||
print(f"{arg.name} = {arg.value}")
|
||||
|
||||
# Count arguments of each type
|
||||
print(f"Boolean arguments: {len(argspace.get_by_type(BooleanArgument))}")
|
||||
print(f"Value arguments: {len(argspace.get_by_type(ValueArgument))}")
|
||||
@@ -0,0 +1,11 @@
|
||||
config_arg = argspace.get_by_name("config")
|
||||
if config_arg:
|
||||
print(f"Config path: {config_arg.value}")
|
||||
|
||||
verbose_arg = argspace.get_by_name("verbose")
|
||||
if verbose_arg and verbose_arg.value:
|
||||
print("Verbose mode enabled")
|
||||
|
||||
unknown_arg = argspace.get_by_name("nonexistent")
|
||||
if unknown_arg is None:
|
||||
print("Argument not found")
|
||||
@@ -0,0 +1,28 @@
|
||||
from argenta.orchestrator.argparser import ArgParser, ValueArgument
|
||||
|
||||
# Create arguments
|
||||
config_arg = ValueArgument(
|
||||
"config",
|
||||
help="Path to configuration file",
|
||||
default="config.yaml"
|
||||
)
|
||||
|
||||
log_level_arg = ValueArgument(
|
||||
"log-level",
|
||||
help="Logging level",
|
||||
possible_values=["DEBUG", "INFO", "WARNING", "ERROR"],
|
||||
default="INFO"
|
||||
)
|
||||
|
||||
host_arg = ValueArgument(
|
||||
"host",
|
||||
help="Server host address",
|
||||
is_required=True
|
||||
)
|
||||
|
||||
# Register in ArgParser
|
||||
parser = ArgParser(
|
||||
processed_args=[config_arg, log_level_arg, host_arg],
|
||||
name="MyApp",
|
||||
description="My application with CLI arguments"
|
||||
)
|
||||
@@ -0,0 +1,23 @@
|
||||
from argenta.orchestrator.argparser import ArgParser, BooleanArgument
|
||||
|
||||
# Create boolean arguments
|
||||
verbose_arg = BooleanArgument(
|
||||
"verbose",
|
||||
help="Enable verbose output"
|
||||
)
|
||||
|
||||
debug_arg = BooleanArgument(
|
||||
"debug",
|
||||
help="Enable debug mode"
|
||||
)
|
||||
|
||||
no_cache_arg = BooleanArgument(
|
||||
"no-cache",
|
||||
help="Disable caching"
|
||||
)
|
||||
|
||||
# Register in ArgParser
|
||||
parser = ArgParser(
|
||||
processed_args=[verbose_arg, debug_arg, no_cache_arg],
|
||||
name="MyApp"
|
||||
)
|
||||
@@ -0,0 +1,10 @@
|
||||
from argenta import App
|
||||
from argenta.app import AutoCompleter
|
||||
|
||||
# Setting up autocompletion with saving history to a file
|
||||
my_autocompleter = AutoCompleter(history_filename="argenta_history.txt")
|
||||
|
||||
# Passing the configured autocompleter to the application
|
||||
app = App(autocompleter=my_autocompleter)
|
||||
|
||||
# ... the rest of the application logic
|
||||
@@ -0,0 +1,20 @@
|
||||
from argenta.command import Flag, Flags, Command
|
||||
|
||||
# Simple command without flags
|
||||
hello_cmd = Command("hello", description="Greet the user")
|
||||
|
||||
# Command with description and aliases
|
||||
quit_cmd = Command("quit", description="Exit the application", aliases=["exit", "q"])
|
||||
|
||||
# Command with flags
|
||||
deploy_cmd = Command(
|
||||
"deploy",
|
||||
description="Deploy application to server",
|
||||
flags=Flags(
|
||||
[
|
||||
Flag("env", possible_values=["dev", "prod"]),
|
||||
Flag("force"),
|
||||
]
|
||||
),
|
||||
aliases=["dep"],
|
||||
)
|
||||
@@ -0,0 +1,19 @@
|
||||
from argenta import Command, Response, Router
|
||||
|
||||
router = Router(title="User Management")
|
||||
|
||||
|
||||
@router.command(Command("create-user", description="Create a new user account"))
|
||||
def handle_create_user(response: Response):
|
||||
print("Creating new user...")
|
||||
|
||||
|
||||
@router.command(
|
||||
Command(
|
||||
"delete-user",
|
||||
description="Delete existing user account",
|
||||
aliases=["remove-user", "rm-user"],
|
||||
)
|
||||
)
|
||||
def handle_delete_user(response: Response):
|
||||
print("Deleting user...")
|
||||
@@ -0,0 +1,33 @@
|
||||
from argenta import Command, Response, Router
|
||||
from argenta.command import Flag, Flags
|
||||
|
||||
router = Router(title="Server Management")
|
||||
|
||||
|
||||
@router.command(
|
||||
Command(
|
||||
"start",
|
||||
description="Start the server",
|
||||
flags=Flags(
|
||||
[
|
||||
Flag("port"),
|
||||
Flag("host"),
|
||||
Flag("debug"),
|
||||
]
|
||||
),
|
||||
aliases=["run"],
|
||||
)
|
||||
)
|
||||
def handle_start(response: Response):
|
||||
input_flags = response.input_flags
|
||||
port_flag = input_flags.get_flag_by_name("port")
|
||||
host_flag = input_flags.get_flag_by_name("host")
|
||||
debug_flag = input_flags.get_flag_by_name("debug")
|
||||
|
||||
host = host_flag.input_value if host_flag else "localhost"
|
||||
port = port_flag.input_value if port_flag else "8080"
|
||||
debug = debug_flag and debug_flag.input_value
|
||||
|
||||
print(f"Starting server on {host}:{port}")
|
||||
if debug:
|
||||
print("Debug mode: ON")
|
||||
@@ -0,0 +1,11 @@
|
||||
from argenta.command import InputCommand
|
||||
|
||||
# Parse command without flags
|
||||
cmd1 = InputCommand.parse("hello")
|
||||
print(cmd1.trigger) # "hello"
|
||||
print(len(cmd1.input_flags)) # 0
|
||||
|
||||
# Parse command with flags
|
||||
cmd2 = InputCommand.parse("deploy --env prod --force")
|
||||
print(cmd2.trigger) # "deploy"
|
||||
print(len(cmd2.input_flags)) # 2
|
||||
@@ -0,0 +1,11 @@
|
||||
from argenta import Router, Command, Response
|
||||
|
||||
router = Router(title="System")
|
||||
|
||||
@router.command(Command(
|
||||
"shutdown",
|
||||
description="Shutdown the system",
|
||||
aliases=["poweroff", "halt", "stop"]
|
||||
))
|
||||
def handle_shutdown(response: Response):
|
||||
print("Shutting down the system...")
|
||||
@@ -0,0 +1,9 @@
|
||||
from sqlite3 import Connection
|
||||
from argenta import Response, Router
|
||||
from argenta.di import FromDishka
|
||||
|
||||
router = Router()
|
||||
|
||||
@router.command("connect")
|
||||
def connect_handler(response: Response, connection: FromDishka[Connection]):
|
||||
connection.execute("...")
|
||||
@@ -0,0 +1,13 @@
|
||||
import sqlite3
|
||||
from sqlite3 import Connection
|
||||
from typing import Iterable
|
||||
|
||||
from dishka import Provider, Scope, provide
|
||||
|
||||
|
||||
class ConnectionProvider(Provider):
|
||||
@provide(scope=Scope.REQUEST)
|
||||
def new_connection(self) -> Iterable[Connection]:
|
||||
conn = sqlite3.connect(":memory:")
|
||||
yield conn
|
||||
conn.close()
|
||||
@@ -0,0 +1,3 @@
|
||||
from argenta import Orchestrator
|
||||
|
||||
orchestrator = Orchestrator(custom_providers=[ConnectionProvider()])
|
||||
@@ -0,0 +1,9 @@
|
||||
from argenta import Response, Router
|
||||
from argenta.di import FromDishka
|
||||
from argenta.orchestrator.argparser import ArgSpace
|
||||
|
||||
router = Router()
|
||||
|
||||
@router.command("info")
|
||||
def connect_handler(response: Response, argspace: FromDishka[ArgSpace]):
|
||||
print(argspace.get_by_name("type"))
|
||||
@@ -0,0 +1,7 @@
|
||||
from argenta import App
|
||||
|
||||
def empty_command_handler():
|
||||
print("Empty command handler called")
|
||||
|
||||
app: App = App()
|
||||
app.set_empty_command_handler(empty_command_handler)
|
||||
@@ -0,0 +1,7 @@
|
||||
from argenta import App
|
||||
|
||||
def incorrect_input_syntax_handler(raw_command: str):
|
||||
print(f"Incorrect input syntax for command: {raw_command}")
|
||||
|
||||
app: App = App()
|
||||
app.set_incorrect_input_syntax_handler(incorrect_input_syntax_handler)
|
||||
@@ -0,0 +1,7 @@
|
||||
from argenta import App
|
||||
|
||||
def repeated_input_flags_handler(raw_command: str):
|
||||
print(f"Repeated input flags: {raw_command}")
|
||||
|
||||
app: App = App()
|
||||
app.set_repeated_input_flags_handler(repeated_input_flags_handler)
|
||||
@@ -0,0 +1,7 @@
|
||||
from argenta import App
|
||||
|
||||
def empty_command_handler():
|
||||
print("Empty input command")
|
||||
|
||||
app: App = App()
|
||||
app.set_empty_command_handler(empty_command_handler)
|
||||
@@ -0,0 +1,8 @@
|
||||
from argenta import App
|
||||
from argenta.command import InputCommand
|
||||
|
||||
def unknown_command_handler(command: InputCommand):
|
||||
print(f"Unknown input command with trigger: {command.trigger}")
|
||||
|
||||
app: App = App()
|
||||
app.set_unknown_command_handler(unknown_command_handler)
|
||||
@@ -0,0 +1,7 @@
|
||||
from argenta import App, Response
|
||||
|
||||
def exit_command_handler(response: Response):
|
||||
print("Exit command handler")
|
||||
|
||||
app: App = App()
|
||||
app.set_exit_command_handler(exit_command_handler)
|
||||
@@ -0,0 +1,36 @@
|
||||
from argenta.command import Flags, PredefinedFlags
|
||||
|
||||
# Using predefined flags when creating a command
|
||||
command_flags = Flags(
|
||||
[
|
||||
PredefinedFlags.HELP,
|
||||
PredefinedFlags.SHORT_HELP,
|
||||
PredefinedFlags.INFO,
|
||||
]
|
||||
)
|
||||
|
||||
# Using Network Flags
|
||||
network_flags = Flags(
|
||||
[
|
||||
PredefinedFlags.HOST,
|
||||
PredefinedFlags.PORT,
|
||||
]
|
||||
)
|
||||
|
||||
# Validating the values of predefined flags
|
||||
print(PredefinedFlags.HOST.validate_input_flag_value("192.168.1.1")) # True
|
||||
print(PredefinedFlags.HOST.validate_input_flag_value("invalid")) # False
|
||||
|
||||
print(PredefinedFlags.PORT.validate_input_flag_value("8080")) # True
|
||||
print(PredefinedFlags.PORT.validate_input_flag_value("99999")) # True
|
||||
print(PredefinedFlags.PORT.validate_input_flag_value("abc")) # False
|
||||
|
||||
# Flags without values
|
||||
print(PredefinedFlags.HELP.validate_input_flag_value(None)) # True
|
||||
print(PredefinedFlags.HELP.validate_input_flag_value("something")) # False
|
||||
|
||||
# Checking string representations
|
||||
print(PredefinedFlags.HELP.string_entity) # --help
|
||||
print(PredefinedFlags.SHORT_HELP.string_entity) # -H
|
||||
print(PredefinedFlags.HOST.string_entity) # --host
|
||||
print(PredefinedFlags.SHORT_PORT.string_entity) # -P
|
||||
@@ -0,0 +1,20 @@
|
||||
import re
|
||||
from argenta.command import Flag, PossibleValues
|
||||
|
||||
# Simple flag with any values
|
||||
verbose_flag = Flag(name="verbose")
|
||||
|
||||
# Flag with short prefix
|
||||
short_flag = Flag(name="v", prefix="-")
|
||||
|
||||
# Flag that does not take a value
|
||||
help_flag = Flag(name="help", possible_values=PossibleValues.NEITHER)
|
||||
|
||||
# Flag with list of possible values
|
||||
format_flag = Flag(name="format", possible_values=["json", "xml", "csv"])
|
||||
|
||||
# Flag with regexp for validation input value
|
||||
email_flag = Flag(
|
||||
name="email",
|
||||
possible_values=re.compile(r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"),
|
||||
)
|
||||
@@ -0,0 +1,20 @@
|
||||
import re
|
||||
|
||||
from argenta.command.flag.models import Flag, PossibleValues
|
||||
|
||||
# Flag with list of allowed values
|
||||
format_flag = Flag(name="format", possible_values=["json", "xml", "csv"])
|
||||
|
||||
# Value validation
|
||||
print(format_flag.validate_input_flag_value("json")) # True
|
||||
print(format_flag.validate_input_flag_value("pdf")) # False
|
||||
|
||||
# Flag without value
|
||||
help_flag = Flag(name="help", possible_values=PossibleValues.NEITHER)
|
||||
print(help_flag.validate_input_flag_value(None)) # True
|
||||
print(help_flag.validate_input_flag_value("value")) # False
|
||||
|
||||
# Flag with regular expression
|
||||
port_flag = Flag(name="port", possible_values=re.compile(r"^\d{1,5}$"))
|
||||
print(port_flag.validate_input_flag_value("8080")) # True
|
||||
print(port_flag.validate_input_flag_value("abc")) # False
|
||||
@@ -0,0 +1,9 @@
|
||||
from argenta.command import Flag
|
||||
|
||||
help_flag = Flag(name="help")
|
||||
version_flag = Flag(name="V", prefix="-")
|
||||
|
||||
print(help_flag) # --help
|
||||
|
||||
message = f"Use {help_flag} to see help"
|
||||
print(message) # Use --help to see help
|
||||
@@ -0,0 +1,12 @@
|
||||
from argenta.command import Flag
|
||||
|
||||
verbose_flag = Flag(name="verbose", prefix="--")
|
||||
short_flag = Flag(name="v", prefix="-")
|
||||
|
||||
# Debug view
|
||||
print(repr(verbose_flag)) # Flag<prefix=--, name=verbose>
|
||||
print(repr(short_flag)) # Flag<prefix=-, name=v>
|
||||
|
||||
# In an interactive console or debugger
|
||||
# >>> verbose_flag
|
||||
# Flag<prefix=--, name=verbose>
|
||||
@@ -0,0 +1,21 @@
|
||||
from argenta.command import Flag, PossibleValues
|
||||
|
||||
# Creating two flags with the same name and prefix
|
||||
flag1 = Flag(name="verbose", prefix="--")
|
||||
flag2 = Flag(name="verbose", prefix="--")
|
||||
|
||||
# Flag comparison
|
||||
print(flag1 == flag2) # True
|
||||
|
||||
# Flags with different prefixes are not equal
|
||||
flag3 = Flag(name="verbose", prefix="-")
|
||||
print(flag1 == flag3) # False
|
||||
|
||||
# Flags with different names are not equal
|
||||
flag4 = Flag(name="help", prefix="--")
|
||||
print(flag1 == flag4) # False
|
||||
|
||||
# Different possible_values do not affect equality
|
||||
flag5 = Flag(name="verbose", prefix="--", possible_values=PossibleValues.NEITHER)
|
||||
flag6 = Flag(name="verbose", prefix="--", possible_values=["value1", "value2"])
|
||||
print(flag5 == flag6)
|
||||
@@ -0,0 +1,24 @@
|
||||
from argenta import Router, Response
|
||||
from argenta.command import Command, Flag, PossibleValues
|
||||
from argenta.command.flag import ValidationStatus
|
||||
|
||||
router = Router()
|
||||
|
||||
|
||||
@router.command(Command(
|
||||
"deploy",
|
||||
flags=Flag("verbose", possible_values=PossibleValues.NEITHER)
|
||||
))
|
||||
def deploy_handler(response: Response):
|
||||
# Check for toggle flag presence
|
||||
verbose_flag = response.input_flags.get_flag_by_name("verbose")
|
||||
|
||||
if verbose_flag and verbose_flag.status == ValidationStatus.VALID:
|
||||
print("Deploying with verbose output...")
|
||||
# Detailed logic
|
||||
elif verbose_flag and verbose_flag.status == ValidationStatus.INVALID:
|
||||
print("Incorrect flag value")
|
||||
return
|
||||
else:
|
||||
print("Deploying...")
|
||||
# Normal logic
|
||||
@@ -0,0 +1,16 @@
|
||||
from argenta import Router, Response
|
||||
from argenta.command import Command, Flag
|
||||
|
||||
router = Router()
|
||||
|
||||
|
||||
@router.command(Command("greet", flags=Flag("name")))
|
||||
def greet_handler(response: Response):
|
||||
# Get flag by name
|
||||
name_flag = response.input_flags.get_flag_by_name("name")
|
||||
|
||||
# Check if flag was passed
|
||||
if name_flag:
|
||||
print(f"Hello, {name_flag.input_value}!")
|
||||
else:
|
||||
print("Hello, stranger!")
|
||||
@@ -0,0 +1,11 @@
|
||||
import re
|
||||
from argenta.command import Command, Flag, Flags
|
||||
|
||||
flags = Flags(
|
||||
[
|
||||
Flag("host", possible_values=re.compile(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$")),
|
||||
Flag("port", possible_values=re.compile(r"^\d{1,5}$")),
|
||||
]
|
||||
)
|
||||
|
||||
cmd = Command("start", description="Start the server", flags=flags)
|
||||
@@ -0,0 +1,9 @@
|
||||
from argenta.command import Flag, Flags
|
||||
|
||||
flags: Flags = Flags()
|
||||
|
||||
flags.add_flag(Flag("config"))
|
||||
flags.add_flag(Flag("debug"))
|
||||
flags.add_flag(Flag("log-level", possible_values=["INFO", "DEBUG", "ERROR"]))
|
||||
|
||||
print(len(flags)) # 3
|
||||
@@ -0,0 +1,15 @@
|
||||
from argenta.command import Flag, Flags
|
||||
from argenta.command.flag.defaults import PredefinedFlags
|
||||
|
||||
flags = Flags([PredefinedFlags.HOST])
|
||||
|
||||
additional_flags = [
|
||||
PredefinedFlags.PORT,
|
||||
Flag("database"),
|
||||
Flag("ssl"),
|
||||
Flag("verbose"),
|
||||
]
|
||||
|
||||
flags.add_flags(additional_flags)
|
||||
|
||||
print(len(flags)) # 5
|
||||
@@ -0,0 +1,13 @@
|
||||
from argenta.command import Flag, Flags
|
||||
from argenta.command.flag.defaults import PredefinedFlags
|
||||
|
||||
|
||||
flags = Flags([PredefinedFlags.HOST, PredefinedFlags.PORT, Flag("verbose")])
|
||||
|
||||
host_flag = flags.get_flag_by_name("host")
|
||||
if host_flag:
|
||||
print(f"Found flag: {host_flag.name}")
|
||||
|
||||
unknown_flag = flags.get_flag_by_name("nonexistent")
|
||||
if unknown_flag is None:
|
||||
print("Flag not found")
|
||||
@@ -0,0 +1,13 @@
|
||||
from argenta.command.flag import InputFlag, ValidationStatus
|
||||
|
||||
flag_with_value = InputFlag(
|
||||
name="output", prefix="--", input_value="result.txt", status=ValidationStatus.VALID
|
||||
)
|
||||
|
||||
flag_without_value = InputFlag(
|
||||
name="help", prefix="-", input_value='', status=ValidationStatus.VALID
|
||||
)
|
||||
|
||||
# String representation includes value
|
||||
print(str(flag_with_value)) # --output result.txt
|
||||
print(str(flag_without_value)) # -help
|
||||
@@ -0,0 +1,12 @@
|
||||
from argenta.command.flag import InputFlag, ValidationStatus
|
||||
|
||||
flag = InputFlag(
|
||||
name="config",
|
||||
prefix="--",
|
||||
input_value="settings.json",
|
||||
status=ValidationStatus.VALID,
|
||||
)
|
||||
|
||||
# Debug representation of the object
|
||||
print(repr(flag))
|
||||
# InputFlag<prefix='--', name='config', value='settings.json', status=ValidationStatus.VALID>
|
||||
@@ -0,0 +1,23 @@
|
||||
from argenta import Command, Response, Router
|
||||
from argenta.command import Flag, Flags
|
||||
|
||||
|
||||
router = Router(title="Example")
|
||||
|
||||
@router.command(
|
||||
Command(
|
||||
"example",
|
||||
description="Example command with flags",
|
||||
flags=Flags([
|
||||
Flag("name"),
|
||||
Flag("age")
|
||||
]),
|
||||
)
|
||||
)
|
||||
def example_handler(response: Response):
|
||||
input_flags = response.input_flags
|
||||
|
||||
if input_flags:
|
||||
print(f"Received {len(input_flags)} flag(s)")
|
||||
else:
|
||||
print("No flags provided")
|
||||
@@ -0,0 +1,49 @@
|
||||
from argenta import Command, Response, Router
|
||||
from argenta.command import Flag, Flags, InputFlag
|
||||
from argenta.command.flag import ValidationStatus
|
||||
|
||||
router = Router(title="Comprehensive Example")
|
||||
|
||||
|
||||
@router.command(
|
||||
Command(
|
||||
"validate",
|
||||
description="Validate all flags",
|
||||
flags=Flags(
|
||||
[
|
||||
Flag("format", possible_values=["json", "xml"]),
|
||||
Flag("output"),
|
||||
Flag("force"),
|
||||
]
|
||||
),
|
||||
)
|
||||
)
|
||||
def validate_handler(response: Response):
|
||||
input_flags = response.input_flags
|
||||
|
||||
print("Flag validation results:")
|
||||
|
||||
valid_flags: list[InputFlag] = []
|
||||
invalid_flags: list[InputFlag] = []
|
||||
undefined_flags: list[InputFlag] = []
|
||||
|
||||
for flag in input_flags:
|
||||
if flag.status == ValidationStatus.VALID:
|
||||
valid_flags.append(flag)
|
||||
print(f" ✓ {flag.string_entity}: {flag.input_value} (VALID)")
|
||||
elif flag.status == ValidationStatus.INVALID:
|
||||
invalid_flags.append(flag)
|
||||
print(f" ✗ {flag.string_entity}: {flag.input_value} (INVALID)")
|
||||
elif flag.status == ValidationStatus.UNDEFINED:
|
||||
undefined_flags.append(flag)
|
||||
print(f" ? {flag.string_entity}: {flag.input_value} (UNDEFINED)")
|
||||
|
||||
print("\nSummary:")
|
||||
print(f" Valid flags: {len(valid_flags)}")
|
||||
print(f" Invalid flags: {len(invalid_flags)}")
|
||||
print(f" Undefined flags: {len(undefined_flags)}")
|
||||
|
||||
if valid_flags:
|
||||
print("\nProcessing valid flags:")
|
||||
for flag in valid_flags:
|
||||
print(f" Processing {flag.name} = {flag.input_value}")
|
||||
@@ -0,0 +1,36 @@
|
||||
from argenta import Command, Response, Router
|
||||
from argenta.command import Flag, Flags
|
||||
|
||||
router = Router(title="Get Flag Example")
|
||||
|
||||
|
||||
@router.command(
|
||||
Command(
|
||||
"config",
|
||||
description="Configure settings",
|
||||
flags=Flags([
|
||||
Flag("host"),
|
||||
Flag("port"),
|
||||
Flag("debug")
|
||||
]),
|
||||
)
|
||||
)
|
||||
def config_handler(response: Response):
|
||||
input_flags = response.input_flags
|
||||
|
||||
host_flag = input_flags.get_flag_by_name("host")
|
||||
port_flag = input_flags.get_flag_by_name("port")
|
||||
debug_flag = input_flags.get_flag_by_name("debug")
|
||||
|
||||
if host_flag:
|
||||
print(f"Host: {host_flag.input_value}")
|
||||
|
||||
if port_flag:
|
||||
print(f"Port: {port_flag.input_value}")
|
||||
|
||||
if debug_flag:
|
||||
print("Debug mode enabled")
|
||||
|
||||
missing_flag = input_flags.get_flag_by_name("nonexistent")
|
||||
if missing_flag is None:
|
||||
print("Flag 'nonexistent' not found")
|
||||
@@ -0,0 +1,19 @@
|
||||
from argenta import Command, Response, Router
|
||||
from argenta.command.flag import InputFlag, InputFlags, ValidationStatus
|
||||
|
||||
router = Router(title="Add Flag Example")
|
||||
|
||||
|
||||
@router.command(Command("test", description="Test command"))
|
||||
def test_handler(response: Response):
|
||||
# Create new InputFlags collection
|
||||
new_flags = InputFlags()
|
||||
|
||||
# Add one flag
|
||||
test_flag = InputFlag(
|
||||
name="test", prefix="--", input_value="value", status=ValidationStatus.VALID
|
||||
)
|
||||
new_flags.add_flag(test_flag)
|
||||
|
||||
print(f"Flags count: {len(new_flags.flags)}")
|
||||
print(f"First flag: {new_flags.flags[0].name}")
|
||||
@@ -0,0 +1,24 @@
|
||||
from argenta.command.flag import InputFlag, InputFlags, ValidationStatus
|
||||
|
||||
# Create InputFlags collection
|
||||
flags = InputFlags()
|
||||
|
||||
# Create several flags
|
||||
flag1 = InputFlag(
|
||||
name="option1", prefix="--", input_value="value1", status=ValidationStatus.VALID
|
||||
)
|
||||
|
||||
flag2 = InputFlag(
|
||||
name="option2", prefix="--", input_value="value2", status=ValidationStatus.VALID
|
||||
)
|
||||
|
||||
flag3 = InputFlag(
|
||||
name="option3", prefix="---", input_value="value3", status=ValidationStatus.VALID
|
||||
)
|
||||
|
||||
# Add all flags in one call
|
||||
flags.add_flags([flag1, flag2, flag3])
|
||||
|
||||
print(f"Total flags: {len(flags.flags)}")
|
||||
for flag in flags:
|
||||
print(f" - {flag.string_entity}: {flag.input_value}")
|
||||
@@ -0,0 +1,27 @@
|
||||
from argenta import Command, Response, Router
|
||||
from argenta.command import Flag, Flags
|
||||
|
||||
router = Router(title="Bool Check Example")
|
||||
|
||||
|
||||
@router.command(
|
||||
Command(
|
||||
"action",
|
||||
description="Action with optional flags",
|
||||
flags=Flags([Flag("option1"), Flag("option2")]),
|
||||
)
|
||||
)
|
||||
def action_handler(response: Response):
|
||||
input_flags = response.input_flags
|
||||
|
||||
# Check for flags presence
|
||||
if input_flags:
|
||||
print("Flags were provided:")
|
||||
for flag in input_flags:
|
||||
print(f" - {flag.name}: {flag.input_value}")
|
||||
else:
|
||||
print("No flags provided, using defaults")
|
||||
|
||||
# Alternative way to check
|
||||
has_flags = bool(input_flags)
|
||||
print(f"\nHas flags: {has_flags}")
|
||||
@@ -0,0 +1,37 @@
|
||||
from argenta.command.flag import InputFlag, ValidationStatus
|
||||
from argenta.command.flag.flags.models import InputFlags
|
||||
|
||||
# Create first collection
|
||||
flags1 = InputFlags(
|
||||
[
|
||||
InputFlag(name="flag1", input_value="value1", status=ValidationStatus.VALID),
|
||||
InputFlag(name="flag2", input_value="value2", status=ValidationStatus.VALID),
|
||||
]
|
||||
)
|
||||
|
||||
# Create second collection with same flags
|
||||
flags2 = InputFlags(
|
||||
[
|
||||
InputFlag(name="flag1", input_value="value1", status=ValidationStatus.VALID),
|
||||
InputFlag(name="flag2", input_value="value2", status=ValidationStatus.VALID),
|
||||
]
|
||||
)
|
||||
|
||||
# Create third collection with different values
|
||||
flags3 = InputFlags(
|
||||
[
|
||||
InputFlag(name="flag1", input_value="different", status=ValidationStatus.VALID),
|
||||
InputFlag(name="flag2", input_value="value2", status=ValidationStatus.VALID),
|
||||
]
|
||||
)
|
||||
|
||||
print(f"flags1 == flags2: {flags1 == flags2}") # True (same names)
|
||||
print(
|
||||
f"flags1 == flags3: {flags1 == flags3}"
|
||||
) # True (same names, values are not considered)
|
||||
|
||||
# Different collections
|
||||
flags4 = InputFlags(
|
||||
[InputFlag(name="flag3", input_value="value3", status=ValidationStatus.VALID)]
|
||||
)
|
||||
print(f"flags1 == flags4: {flags1 == flags4}") # False (different flags)
|
||||
@@ -0,0 +1,33 @@
|
||||
from argenta import Command, Response, Router
|
||||
from argenta.command import Flag, Flags
|
||||
from argenta.command.flag import InputFlag
|
||||
|
||||
router = Router(title="Contains Example")
|
||||
|
||||
|
||||
@router.command(
|
||||
Command(
|
||||
"check",
|
||||
description="Check flags",
|
||||
flags=Flags([Flag("verbose"), Flag("debug"), Flag("quiet")]),
|
||||
)
|
||||
)
|
||||
def check_handler(response: Response):
|
||||
input_flags = response.input_flags
|
||||
|
||||
# Check for specific flag presence
|
||||
verbose_flag = input_flags.get_flag_by_name("verbose")
|
||||
debug_flag = input_flags.get_flag_by_name("debug")
|
||||
|
||||
# Use 'in' operator for checking
|
||||
if verbose_flag and verbose_flag in input_flags:
|
||||
print("Verbose flag is present")
|
||||
|
||||
if debug_flag and debug_flag in input_flags:
|
||||
print("Debug flag is present")
|
||||
|
||||
# You can create a flag for checking (comparison is by name)
|
||||
test_flag = InputFlag(name="verbose", prefix="--", input_value="any", status=None)
|
||||
|
||||
if test_flag in input_flags:
|
||||
print("Verbose flag found using 'in' operator")
|
||||
@@ -0,0 +1,27 @@
|
||||
import sqlite3
|
||||
from sqlite3 import Connection
|
||||
from typing import Iterable
|
||||
|
||||
from dishka import Provider, Scope, provide
|
||||
|
||||
from argenta import App, Orchestrator
|
||||
|
||||
|
||||
class ConnectionProvider(Provider):
|
||||
@provide(scope=Scope.REQUEST)
|
||||
def new_connection(self) -> Iterable[Connection]:
|
||||
conn = sqlite3.connect(":memory:")
|
||||
yield conn
|
||||
conn.close()
|
||||
|
||||
|
||||
# 2. Create and configure App
|
||||
app = App()
|
||||
# ... you can add routers here ...
|
||||
|
||||
# 3. Create Orchestrator, passing our provider
|
||||
orchestrator = Orchestrator(custom_providers=[ConnectionProvider()])
|
||||
|
||||
# 4. Start the application
|
||||
if __name__ == "__main__":
|
||||
orchestrator.start_polling(app)
|
||||
@@ -0,0 +1,5 @@
|
||||
from argenta.command import Flag, PossibleValues
|
||||
|
||||
# Creating flags with any values
|
||||
message_flag = Flag(name="message", possible_values=PossibleValues.ALL)
|
||||
name_flag = Flag(name="name", possible_values=PossibleValues.ALL)
|
||||
@@ -0,0 +1,14 @@
|
||||
import re
|
||||
from argenta.command import Flag, PossibleValues
|
||||
|
||||
# Flag without value
|
||||
verbose_flag = Flag(name="verbose", possible_values=PossibleValues.NEITHER)
|
||||
|
||||
# Flag with any value
|
||||
output_flag = Flag(name="output", possible_values=PossibleValues.ALL)
|
||||
|
||||
# Flag with a list of valid values
|
||||
format_flag = Flag(name="format", possible_values=["json", "xml", "csv", "yaml"])
|
||||
|
||||
# Flag with regular expression
|
||||
email_flag = Flag(name="email", possible_values=re.compile(r"^[\w\.-]+@[\w\.-]+\.\w+$"))
|
||||
@@ -0,0 +1,6 @@
|
||||
from argenta.command import Flag, PossibleValues
|
||||
|
||||
# Creating flags without values
|
||||
help_flag = Flag(name="help", possible_values=PossibleValues.NEITHER)
|
||||
verbose_flag = Flag(name="verbose", possible_values=PossibleValues.NEITHER)
|
||||
force_flag = Flag(name="force", possible_values=PossibleValues.NEITHER)
|
||||
@@ -0,0 +1,68 @@
|
||||
import operator
|
||||
import re
|
||||
|
||||
from argenta import App, Orchestrator, Response, Router
|
||||
from argenta.app import DynamicDividingLine
|
||||
from argenta.command import Command, Flag, Flags
|
||||
from argenta.response.status import ResponseStatus
|
||||
|
||||
router = Router("Calculator")
|
||||
|
||||
operations = {
|
||||
'mul': operator.mul,
|
||||
'sub': operator.sub,
|
||||
'add': operator.add
|
||||
}
|
||||
|
||||
@router.command(
|
||||
Command(
|
||||
"calc",
|
||||
description="Calculator with two numbers",
|
||||
flags=Flags(
|
||||
[
|
||||
Flag("a", possible_values=re.compile(r"^\d{,5}$")), # First number
|
||||
Flag("b", possible_values=re.compile(r"^\d{,5}$")), # Second number
|
||||
Flag("operation", possible_values=["add", "sub", "mul"]), # Operation: add, sub, mul
|
||||
]
|
||||
),
|
||||
)
|
||||
)
|
||||
def calc_handler(response: Response):
|
||||
# Get flag values
|
||||
a_flag = response.input_flags.get_flag_by_name("a")
|
||||
b_flag = response.input_flags.get_flag_by_name("b")
|
||||
op_flag = response.input_flags.get_flag_by_name("op")
|
||||
|
||||
# Check that all flags are provided
|
||||
if response.status != ResponseStatus.ALL_FLAGS_VALID or not all([a_flag, b_flag, op_flag]):
|
||||
print("Error: must specify --a, --b and --op")
|
||||
return
|
||||
|
||||
a = float(a_flag.input_value)
|
||||
b = float(b_flag.input_value)
|
||||
operation = op_flag.input_value
|
||||
|
||||
try:
|
||||
result = operations[operation](a, b)
|
||||
except ZeroDivisionError:
|
||||
print("Can't divide by zero")
|
||||
else:
|
||||
print(f"Result: {result}")
|
||||
|
||||
|
||||
app = App(
|
||||
initial_message="Calculator",
|
||||
repeat_command_groups_printing=False,
|
||||
prompt=">> ",
|
||||
dividing_line=DynamicDividingLine("~"),
|
||||
)
|
||||
orchestrator = Orchestrator()
|
||||
|
||||
|
||||
def main():
|
||||
app.include_router(router)
|
||||
orchestrator.start_polling(app)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,16 @@
|
||||
# main.py
|
||||
from .routers import router
|
||||
|
||||
from argenta import App, Orchestrator
|
||||
|
||||
app: App = App()
|
||||
orchestrator: Orchestrator = Orchestrator()
|
||||
|
||||
|
||||
def main() -> None:
|
||||
app.include_router(router)
|
||||
orchestrator.start_polling(app)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,9 @@
|
||||
# routers.py
|
||||
from argenta import Command, Response, Router
|
||||
|
||||
router = Router(title="Quickstart Example")
|
||||
|
||||
|
||||
@router.command(Command("hello", description="Say hello"))
|
||||
def handler(response: Response):
|
||||
print("Hello, world!")
|
||||
@@ -0,0 +1,37 @@
|
||||
from argenta import App, Command, Orchestrator, Router, Response
|
||||
from argenta.command import Flag
|
||||
|
||||
# 1. Create app and orchestrator instances
|
||||
app = App(
|
||||
prompt=">> ",
|
||||
initial_message="Simple App",
|
||||
farewell_message="Goodbye!",
|
||||
repeat_command_groups_printing=False
|
||||
)
|
||||
orchestrator = Orchestrator()
|
||||
|
||||
# 2. Create router for grouping commands
|
||||
main_router = Router(title="Main commands")
|
||||
|
||||
|
||||
# 3. Define command and its handler
|
||||
@main_router.command(Command(
|
||||
"hello",
|
||||
description="Prints greeting message",
|
||||
flags=Flag("name")
|
||||
))
|
||||
def hello_handler(response: Response):
|
||||
"""This handler will be called for 'hello' command."""
|
||||
name = response.input_flags.get_flag_by_name("name")
|
||||
if name:
|
||||
print(f"Hello, {name.input_value}!")
|
||||
else:
|
||||
print("Hello, world!")
|
||||
|
||||
|
||||
# 4. Include router to application
|
||||
app.include_router(main_router)
|
||||
|
||||
# 5. Start application
|
||||
if __name__ == "__main__":
|
||||
orchestrator.start_polling(app)
|
||||
@@ -0,0 +1,54 @@
|
||||
from typing import cast
|
||||
|
||||
from argenta import Command, Response, Router
|
||||
from argenta.command.flag import Flag, Flags, ValidationStatus
|
||||
from argenta.di import FromDishka
|
||||
|
||||
from .repository import Priority, Task, TaskRepository
|
||||
|
||||
router = Router(title="Task Manager")
|
||||
|
||||
|
||||
@router.command(Command(
|
||||
"add-task",
|
||||
description="Add a new task",
|
||||
flags=Flags([
|
||||
Flag("description"),
|
||||
Flag("priority", possible_values=["low", "medium", "high"]),
|
||||
]),
|
||||
))
|
||||
def add_task(response: Response, repo: FromDishka[TaskRepository]):
|
||||
description_flag = response.input_flags.get_flag_by_name("description")
|
||||
|
||||
if not description_flag or not description_flag.status == ValidationStatus.VALID:
|
||||
print("Error: --description flag is required.")
|
||||
return
|
||||
|
||||
task_description = description_flag.input_value or ""
|
||||
|
||||
priority_flag = response.input_flags.get_flag_by_name("priority")
|
||||
|
||||
if priority_flag and priority_flag.status == ValidationStatus.VALID:
|
||||
priority_value = priority_flag.input_value
|
||||
else:
|
||||
priority_value = "medium"
|
||||
|
||||
priority = cast(Priority, priority_value)
|
||||
|
||||
task = Task(description=task_description, priority=priority)
|
||||
repo.add_task(task)
|
||||
|
||||
print(f"Added task: '{task.description}' with priority '{task.priority}'")
|
||||
|
||||
|
||||
@router.command(Command("list-tasks", description="List all tasks"))
|
||||
def list_tasks(response: Response, repo: FromDishka[TaskRepository]):
|
||||
tasks = repo.get_all_tasks()
|
||||
|
||||
if not tasks:
|
||||
print("No tasks found.")
|
||||
return
|
||||
|
||||
print("Tasks:")
|
||||
for i, task in enumerate(tasks, 1):
|
||||
print(f" {i}. {task.description} (Priority: {task.priority})")
|
||||
@@ -0,0 +1,18 @@
|
||||
from argenta import App, Orchestrator
|
||||
|
||||
from .handlers import router
|
||||
from .provider import TaskProvider
|
||||
|
||||
# 1. Create app and orchestrator instances
|
||||
app = App(
|
||||
initial_message="Task Manager",
|
||||
prompt="Enter a command: ",
|
||||
)
|
||||
orchestrator = Orchestrator(custom_providers=[TaskProvider()])
|
||||
|
||||
# 2. Include router with our commands
|
||||
app.include_router(router)
|
||||
|
||||
# 3. Start polling via orchestrator
|
||||
if __name__ == "__main__":
|
||||
orchestrator.start_polling(app)
|
||||
@@ -0,0 +1,9 @@
|
||||
from dishka import Provider, Scope, provide
|
||||
|
||||
from .repository import TaskRepository
|
||||
|
||||
|
||||
class TaskProvider(Provider):
|
||||
@provide(scope=Scope.APP)
|
||||
def get_repository(self) -> TaskRepository:
|
||||
return TaskRepository()
|
||||
@@ -0,0 +1,21 @@
|
||||
from dataclasses import dataclass
|
||||
from typing import Literal
|
||||
|
||||
Priority = Literal["low", "medium", "high"]
|
||||
|
||||
|
||||
@dataclass
|
||||
class Task:
|
||||
description: str
|
||||
priority: Priority = "medium"
|
||||
|
||||
|
||||
class TaskRepository:
|
||||
def __init__(self):
|
||||
self._tasks: list[Task] = []
|
||||
|
||||
def add_task(self, task: Task):
|
||||
self._tasks.append(task)
|
||||
|
||||
def get_all_tasks(self) -> list[Task]:
|
||||
return self._tasks
|
||||
@@ -0,0 +1,10 @@
|
||||
from argenta import Response, Router
|
||||
|
||||
# For this router stdout redirect will be disabled
|
||||
interactive_router = Router(disable_redirect_stdout=True)
|
||||
|
||||
|
||||
@interactive_router.command("ask")
|
||||
def ask_name(response: Response):
|
||||
name = input("What is your name? ")
|
||||
print(f"Nice to meet you, {name}!")
|
||||
@@ -0,0 +1,5 @@
|
||||
from argenta import App
|
||||
from argenta.app import StaticDividingLine
|
||||
|
||||
# All routers will use static line with length 50 by default
|
||||
app = App(dividing_line=StaticDividingLine(length=50))
|
||||
@@ -0,0 +1,42 @@
|
||||
from argenta import Router, Response, Command, DataBridge
|
||||
from argenta.command import Flag
|
||||
from argenta.di import FromDishka
|
||||
|
||||
router = Router(title="Authentication")
|
||||
|
||||
def authenticate_user(username: str) -> str:
|
||||
return f"token_for_{username}"
|
||||
|
||||
|
||||
@router.command(Command("login", flags=Flag("username")))
|
||||
def login_handler(response: Response, data_bridge: FromDishka[DataBridge]):
|
||||
username_flag = response.input_flags.get_flag_by_name("username")
|
||||
if not username_flag or not username_flag.input_value:
|
||||
print("Error: username must be specified using the --username flag.")
|
||||
return
|
||||
|
||||
username = username_flag.input_value
|
||||
token = authenticate_user(username)
|
||||
|
||||
data_bridge.update({"auth_token": token})
|
||||
print(f"Login successful! User '{username}' authenticated.")
|
||||
|
||||
|
||||
@router.command("get-profile")
|
||||
def get_profile_handler(response: Response, data_bridge: FromDishka[DataBridge]):
|
||||
token = data_bridge.get_by_key("auth_token")
|
||||
|
||||
if not token:
|
||||
print("Error: you are not authenticated. Please run the 'login' command first.")
|
||||
return
|
||||
|
||||
print(f"Loading profile using token: [yellow]{token}[/yellow]")
|
||||
|
||||
|
||||
@router.command("logout")
|
||||
def logout_handler(response: Response, data_bridge: FromDishka[DataBridge]):
|
||||
try:
|
||||
data_bridge.delete_by_key("auth_token")
|
||||
print("Logout successful. Session data cleared.")
|
||||
except KeyError:
|
||||
print("You were not authenticated anyway.")
|
||||
@@ -0,0 +1,12 @@
|
||||
from argenta import Command, Response, Router
|
||||
from argenta.response import ResponseStatus
|
||||
|
||||
router = Router(title="Example")
|
||||
|
||||
|
||||
@router.command(Command("greet", description="Greet the user"))
|
||||
def greet_handler(response: Response):
|
||||
if response.status == ResponseStatus.ALL_FLAGS_VALID:
|
||||
print("Hello! All flags are valid.")
|
||||
else:
|
||||
print("Warning: Some flags have issues.")
|
||||
@@ -0,0 +1,25 @@
|
||||
from argenta import Command, Response, Router
|
||||
|
||||
router = Router(title="Data Example")
|
||||
|
||||
|
||||
@router.command(Command("set", description="Set data"))
|
||||
def set_handler(response: Response):
|
||||
# Update global data storage
|
||||
response.update_data(
|
||||
{
|
||||
"user_name": "John",
|
||||
"timestamp": "2024-01-01",
|
||||
"settings": {"theme": "dark", "language": "ru"},
|
||||
}
|
||||
)
|
||||
print("Data updated successfully")
|
||||
|
||||
|
||||
@router.command(Command("show", description="Show data"))
|
||||
def show_handler(response: Response):
|
||||
# Get data from global storage
|
||||
data = response.get_data()
|
||||
if "user_name" in data:
|
||||
print(f"User: {data['user_name']}")
|
||||
print(f"Settings: {data.get('settings', {})}")
|
||||
@@ -0,0 +1,16 @@
|
||||
from argenta import Command, Response, Router
|
||||
|
||||
router = Router(title="Get Data Example")
|
||||
|
||||
|
||||
@router.command(Command("info", description="Show all stored data"))
|
||||
def info_handler(response: Response):
|
||||
# Get all data from global storage
|
||||
all_data = response.get_data()
|
||||
|
||||
if all_data:
|
||||
print("Stored data:")
|
||||
for key, value in all_data.items():
|
||||
print(f" {key}: {value}")
|
||||
else:
|
||||
print("No data stored")
|
||||
@@ -0,0 +1,19 @@
|
||||
from argenta import Command, Response, Router
|
||||
|
||||
router = Router(title="Clear Data Example")
|
||||
|
||||
|
||||
@router.command(Command("clear", description="Clear all stored data"))
|
||||
def clear_handler(response: Response):
|
||||
# Clear all data storage
|
||||
response.clear_data()
|
||||
print("All data cleared")
|
||||
|
||||
|
||||
@router.command(Command("check", description="Check if data exists"))
|
||||
def check_handler(response: Response):
|
||||
data = response.get_data()
|
||||
if data:
|
||||
print(f"Storage contains {len(data)} item(s)")
|
||||
else:
|
||||
print("Storage is empty")
|
||||
@@ -0,0 +1,29 @@
|
||||
from argenta import Command, Response, Router
|
||||
|
||||
router = Router(title="Delete Data Example")
|
||||
|
||||
|
||||
@router.command(Command("store", description="Store data"))
|
||||
def store_handler(response: Response):
|
||||
response.update_data(
|
||||
{
|
||||
"temp_key": "temporary value",
|
||||
"important_key": "important value",
|
||||
"another_key": "another value",
|
||||
}
|
||||
)
|
||||
print("Data stored")
|
||||
|
||||
|
||||
@router.command(Command("remove", description="Remove specific key"))
|
||||
def remove_handler(response: Response):
|
||||
# Delete specific key from storage
|
||||
try:
|
||||
response.delete_from_data("temp_key")
|
||||
print("Key 'temp_key' deleted")
|
||||
|
||||
# Check what remains
|
||||
remaining = response.get_data()
|
||||
print(f"Remaining keys: {list(remaining.keys())}")
|
||||
except KeyError:
|
||||
print("Key not found")
|
||||
@@ -0,0 +1,38 @@
|
||||
from argenta import Command, Response, Router
|
||||
from argenta.command import Flag, Flags
|
||||
from argenta.command.flag import ValidationStatus
|
||||
from argenta.response import ResponseStatus
|
||||
|
||||
router = Router(title="Flags Example")
|
||||
|
||||
|
||||
@router.command(
|
||||
Command(
|
||||
"process",
|
||||
description="Process with flags",
|
||||
flags=Flags([
|
||||
Flag("format", possible_values=["json", "xml"]),
|
||||
Flag("verbose")
|
||||
]),
|
||||
)
|
||||
)
|
||||
def process_handler(response: Response):
|
||||
print(f"Status: {response.status}")
|
||||
|
||||
format_flag = response.input_flags.get_flag_by_name("format")
|
||||
verbose_flag = response.input_flags.get_flag_by_name("verbose")
|
||||
|
||||
if format_flag:
|
||||
format_value = format_flag.input_value
|
||||
print(f"Format: {format_value}")
|
||||
|
||||
if verbose_flag:
|
||||
print("Verbose mode enabled")
|
||||
|
||||
if response.status == ResponseStatus.ALL_FLAGS_VALID:
|
||||
print("All flags are valid, proceeding...")
|
||||
elif response.status == ResponseStatus.INVALID_VALUE_FLAGS:
|
||||
print("Warning: Some flags have invalid values")
|
||||
for flag in response.input_flags:
|
||||
if flag.status == ValidationStatus.INVALID:
|
||||
print(f" Invalid flag: {flag.string_entity} = {flag.input_value}")
|
||||
@@ -0,0 +1,7 @@
|
||||
from argenta import Command, Response, Router
|
||||
|
||||
user_router = Router(title="User Management")
|
||||
|
||||
@user_router.command(Command("add-user", description="Adds a new user"))
|
||||
def add_user_handler(response: Response):
|
||||
print("User added successfully!")
|
||||
@@ -0,0 +1,32 @@
|
||||
import sys
|
||||
from unittest.mock import patch
|
||||
import pytest
|
||||
from pytest import CaptureFixture
|
||||
|
||||
from argenta import App, Orchestrator, Router, Command, Response
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def patched_argv():
|
||||
with patch.object(sys, 'argv', ['program.py']):
|
||||
yield
|
||||
|
||||
def test_input_incorrect_command(capsys: CaptureFixture[str]):
|
||||
router = Router()
|
||||
orchestrator = Orchestrator()
|
||||
|
||||
@router.command(Command('test'))
|
||||
def test(response: Response) -> None:
|
||||
print('test command')
|
||||
|
||||
app = App(override_system_messages=True, print_func=print)
|
||||
app.include_router(router)
|
||||
app.set_unknown_command_handler(
|
||||
lambda command: print(f'Unknown command: {command.trigger}')
|
||||
)
|
||||
|
||||
with patch("builtins.input", side_effect=["help", "q"]):
|
||||
orchestrator.start_polling(app)
|
||||
|
||||
output = capsys.readouterr().out
|
||||
assert "\nUnknown command: help\n" in output
|
||||
@@ -0,0 +1,21 @@
|
||||
import io
|
||||
from contextlib import redirect_stdout
|
||||
|
||||
from argenta import App, Router, Command, Response
|
||||
from argenta.command import InputCommand
|
||||
|
||||
|
||||
def test_simple_app() -> None:
|
||||
app = App(override_system_messages=True, repeat_command_groups_printing=False)
|
||||
router = Router(title="App")
|
||||
|
||||
@router.command(Command("HELP", description="Show help"))
|
||||
def help_cmd(response: Response):
|
||||
print("Available commands: HELP")
|
||||
|
||||
app.include_router(router)
|
||||
|
||||
with redirect_stdout(io.StringIO()) as stdout:
|
||||
router.finds_appropriate_handler(InputCommand.parse("HELP"))
|
||||
|
||||
assert "Available commands:" in stdout.getvalue()
|
||||
@@ -0,0 +1,42 @@
|
||||
import io
|
||||
from contextlib import redirect_stdout
|
||||
|
||||
from argenta.command import InputCommand
|
||||
from dishka import Provider, make_container, Scope
|
||||
|
||||
from argenta import Router, Response
|
||||
from argenta.di.integration import setup_dishka, FromDishka
|
||||
|
||||
|
||||
class Service:
|
||||
def hello(self) -> str:
|
||||
return "world"
|
||||
|
||||
def get_service() -> Service:
|
||||
return Service()
|
||||
|
||||
|
||||
router = Router(title="DI")
|
||||
|
||||
@router.command("HELLO")
|
||||
def hello(response: Response, service: FromDishka[Service]) -> None:
|
||||
print(f"hello {service.hello()}")
|
||||
|
||||
|
||||
class _FakeApp:
|
||||
# Minimal stub for setup_dishka; app object is not used in unit tests
|
||||
registered_routers = [router]
|
||||
|
||||
|
||||
def test_hello_uses_service():
|
||||
provider = Provider(scope=Scope.APP)
|
||||
provider.provide(get_service)
|
||||
|
||||
container = make_container(provider)
|
||||
setup_dishka(app=_FakeApp(), container=container, auto_inject=True)
|
||||
|
||||
# Call handler
|
||||
with redirect_stdout(io.StringIO()) as stdout:
|
||||
router.finds_appropriate_handler(InputCommand.parse('HELLO'))
|
||||
|
||||
assert "hello world" in stdout.getvalue()
|
||||
@@ -0,0 +1,19 @@
|
||||
import io
|
||||
from contextlib import redirect_stdout
|
||||
|
||||
from argenta import Router, Command, Response
|
||||
from argenta.command import InputCommand
|
||||
|
||||
|
||||
router = Router(title="Demo")
|
||||
|
||||
@router.command(Command("PING", description="Ping command"))
|
||||
def ping(response: Response):
|
||||
print("PONG")
|
||||
|
||||
|
||||
def test_ping_prints_pong():
|
||||
# Call handler
|
||||
with redirect_stdout(io.StringIO()) as stdout:
|
||||
router.finds_appropriate_handler(InputCommand.parse("PING"))
|
||||
assert "PONG" in stdout.getvalue()
|
||||
@@ -0,0 +1,48 @@
|
||||
# Configuration file for the Sphinx documentation builder.
|
||||
#
|
||||
# For the full list of built-in configuration values, see the documentation:
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
||||
|
||||
# -- Project information -----------------------------------------------------
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
|
||||
|
||||
project = "Argenta"
|
||||
copyright = "2025, kolo"
|
||||
author = "kolo"
|
||||
root_doc = "index"
|
||||
|
||||
# -- General configuration ---------------------------------------------------
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
||||
|
||||
locale_dirs = ['locales/']
|
||||
gettext_compact = False
|
||||
|
||||
templates_path = ["_templates"]
|
||||
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
|
||||
|
||||
|
||||
# -- Options for HTML output -------------------------------------------------
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
|
||||
|
||||
html_theme = "shibuya"
|
||||
html_static_path = ["_static"]
|
||||
|
||||
html_context = {
|
||||
"languages": [
|
||||
("English", "/en/latest/%s/", "en"),
|
||||
("Русский", "/ru/latest/%s/", "ru"),
|
||||
]
|
||||
}
|
||||
|
||||
html_theme_options = {
|
||||
"accent_color": "cyan",
|
||||
"nav_links": [
|
||||
{
|
||||
"title": "Sponsor me",
|
||||
"url": "https://github.com/sponsors/koloideal"
|
||||
},
|
||||
],
|
||||
"github_url": "https://github.com/koloideal/Argenta",
|
||||
"linkedin_url": "https://www.linkedin.com/in/dmitry-shevelev-31b9a6324"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
.. Argenta documentation master file, created by
|
||||
sphinx-quickstart on Sat Oct 11 19:54:43 2025.
|
||||
You can adapt this file completely to your liking, but it should at least
|
||||
contain the root `toctree` directive.
|
||||
|
||||
Argenta
|
||||
=======
|
||||
|
||||
Что это и зачем?
|
||||
----------------
|
||||
|
||||
**Библиотека для построения модульных CLI-приложений с простым и приятным API.**
|
||||
|
||||
Если у вас есть функциональность, которую вы хотите предоставить в виде CLI-приложения, Argenta поможет вам в этом.
|
||||
Основная цель библиотеки — дать разработчикам возможность сосредоточиться на реализации своих идей, предоставляя для этого удобные абстракции.
|
||||
|
||||
.. image:: https://i.ibb.co/fzWcfgFq/2025-12-04-173045.png
|
||||
:alt: App example
|
||||
|
||||
Argenta предназначена для создания приложений, работающих в собственном контексте (scope). Это означает, что приложение запускается один раз и создаёт интерактивную сессию, похожую на Python REPL или MySQL консоль. При запуске пользователь входит в эту сессию, где ему доступна вся реализованная вами функциональность.
|
||||
|
||||
Один из ключевых принципов библиотеки — цикличность. После выполнения команды пользователь остаётся в интерактивной сессии, в отличие от таких библиотек, как ``argparse``, ``click`` и ``typer``, где приложение завершается после каждой команды. Выход из сессии контролируется пользователем.
|
||||
|
||||
**Ключевые особенности:**
|
||||
|
||||
* **Интерактивные сессии**: В отличие от традиционных CLI-инструментов, ``Argenta`` создаёт циклические сессии, позволяя пользователю выполнять команды последовательно, не перезапуская приложение.
|
||||
* **Декларативный синтаксис**: Команды и их обработчики объявляются с помощью простых декораторов, что делает код интуитивно понятным и позволяет сосредоточиться на том, "что" вы хотите сделать, а не "как".
|
||||
* **Нативный DI**: Благодаря интеграции с [dishka](https://dishka.readthedocs.io/en/stable/), вы можете легко внедрять зависимости прямо в обработчики команд, что упрощает их тестирование, позволяет избежать мутабельных глобалов и многое другое.
|
||||
* **Автоматическая валидация и парсинг**: Библиотека берёт на себя обработку флагов и аргументов командной строки, включая их парсинг, валидацию и преобразование типов.
|
||||
* **Гибкая настройка**: Вы можете легко кастомизировать системные сообщения, форматирование вывода, создавать кастомные обработчики нестандартного поведения и т.д.
|
||||
|
||||
-----
|
||||
|
||||
Архитектура и жизненный цикл
|
||||
-----------------------------
|
||||
|
||||
Следующая диаграмма иллюстрирует, как компоненты Argenta взаимодействуют друг с другом, обрабатывая ввод пользователя.
|
||||
|
||||
.. image:: https://i.ibb.co/hF3FdFr1/argenta-intro-drawio-2.png
|
||||
:alt: Request Lifecycle Diagram
|
||||
:align: center
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
:caption: Контент:
|
||||
|
||||
root/quickstart
|
||||
root/error_handling
|
||||
root/flags
|
||||
root/overriding_formatting
|
||||
root/api/index
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
:caption: Продвинутое использование:
|
||||
|
||||
root/redirect_stdout
|
||||
root/dependency_injection
|
||||
root/testing
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
:caption: Для разработчиков:
|
||||
|
||||
root/contributing
|
||||
root/code_of_conduct
|
||||
|
||||
.. toctree::
|
||||
:hidden:
|
||||
:caption: Ссылки проекта:
|
||||
|
||||
GitHub <https://github.com/koloideal/argenta>
|
||||
PyPI <https://pypi.org/project/argenta>
|
||||
@@ -0,0 +1,30 @@
|
||||
set windows-shell := ["powershell.exe", "-NoLogo", "-Command"]
|
||||
set shell := ["bash", "-c"]
|
||||
|
||||
# Variables
|
||||
sphinxopts := ""
|
||||
sphinxbuild := "sphinx-build"
|
||||
sourcedir := "."
|
||||
builddir := "_build"
|
||||
|
||||
# Default recipe (help)
|
||||
default:
|
||||
@{{sphinxbuild}} -M help "{{sourcedir}}" "{{builddir}}" {{sphinxopts}}
|
||||
|
||||
# Build all language versions
|
||||
build:
|
||||
{{sphinxbuild}} -b html -D language=ru {{sourcedir}} {{builddir}}/html/ru
|
||||
{{sphinxbuild}} -b html -D language =en {{sourcedir}} {{builddir}}/html/en
|
||||
|
||||
# Live preview for Russian version
|
||||
live-ru:
|
||||
sphinx-autobuild -b html . _build/html/ru -D language=ru
|
||||
|
||||
# Live preview for English version
|
||||
live-en:
|
||||
sphinx-autobuild -b html . _build/html/en -D language=en
|
||||
|
||||
# Update translation files
|
||||
update-langs:
|
||||
{{sphinxbuild}} -b gettext . _build/gettext
|
||||
sphinx-intl update -p _build/gettext -l en
|
||||
@@ -0,0 +1,177 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-04 20:41+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../index.rst:43
|
||||
msgid "Контент:"
|
||||
msgstr "Content:"
|
||||
|
||||
#: ../../index.rst:53
|
||||
msgid "Продвинутое использование:"
|
||||
msgstr "Advanced usage:"
|
||||
|
||||
#: ../../index.rst:61
|
||||
msgid "Для разработчиков:"
|
||||
msgstr "For developers:"
|
||||
|
||||
#: ../../index.rst:68
|
||||
msgid "GitHub"
|
||||
msgstr ""
|
||||
|
||||
#: ../../index.rst:68
|
||||
msgid "PyPI"
|
||||
msgstr ""
|
||||
|
||||
#: ../../index.rst:68
|
||||
msgid "Ссылки проекта:"
|
||||
msgstr "Project links:"
|
||||
|
||||
#: ../../index.rst:7
|
||||
msgid "Argenta"
|
||||
msgstr ""
|
||||
|
||||
#: ../../index.rst:10
|
||||
msgid "Что это и зачем?"
|
||||
msgstr "What is it and why?"
|
||||
|
||||
#: ../../index.rst:12
|
||||
msgid ""
|
||||
"**Библиотека для построения модульных CLI-приложений с простым и приятным"
|
||||
" API.**"
|
||||
msgstr ""
|
||||
"**A library for building modular CLI applications with a simple and "
|
||||
"pleasant API.**"
|
||||
|
||||
#: ../../index.rst:14
|
||||
msgid ""
|
||||
"Если у вас есть функциональность, которую вы хотите предоставить в виде "
|
||||
"CLI-приложения, Argenta поможет вам в этом. Основная цель библиотеки — "
|
||||
"дать разработчикам возможность сосредоточиться на реализации своих идей, "
|
||||
"предоставляя для этого удобные абстракции."
|
||||
msgstr ""
|
||||
"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 developers to focus on implementing their ideas by providing "
|
||||
"convenient abstractions."
|
||||
|
||||
#: ../../index.rst:17
|
||||
msgid "App example"
|
||||
msgstr ""
|
||||
|
||||
#: ../../index.rst:20
|
||||
msgid ""
|
||||
"Argenta предназначена для создания приложений, работающих в собственном "
|
||||
"контексте (scope). Это означает, что приложение запускается один раз и "
|
||||
"создаёт интерактивную сессию, похожую на Python REPL или MySQL консоль. "
|
||||
"При запуске пользователь входит в эту сессию, где ему доступна вся "
|
||||
"реализованная вами функциональность."
|
||||
msgstr ""
|
||||
"Argenta is designed for creating applications that work in their own "
|
||||
"context (scope). This means that the application starts once and creates "
|
||||
"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
|
||||
msgid ""
|
||||
"Один из ключевых принципов библиотеки — цикличность. После выполнения "
|
||||
"команды пользователь остаётся в интерактивной сессии, в отличие от таких "
|
||||
"библиотек, как ``argparse``, ``click`` и ``typer``, где приложение "
|
||||
"завершается после каждой команды. Выход из сессии контролируется "
|
||||
"пользователем."
|
||||
msgstr ""
|
||||
"One of the key principles of the library is cyclicity. After executing a "
|
||||
"command, the user remains in the interactive session, "
|
||||
"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
|
||||
msgid "**Ключевые особенности:**"
|
||||
msgstr "**Key features:**"
|
||||
|
||||
#: ../../index.rst:26
|
||||
msgid ""
|
||||
"**Интерактивные сессии**: В отличие от традиционных CLI-инструментов, "
|
||||
"``Argenta`` создаёт циклические сессии, позволяя пользователю выполнять "
|
||||
"команды последовательно, не перезапуская приложение."
|
||||
msgstr ""
|
||||
"**Interactive sessions**: Unlike traditional CLI tools, ``Argenta`` "
|
||||
"creates cyclical sessions, allowing users to execute commands "
|
||||
"sequentially without restarting the application."
|
||||
|
||||
#: ../../index.rst:27
|
||||
msgid ""
|
||||
"**Декларативный синтаксис**: Команды и их обработчики объявляются с "
|
||||
"помощью простых декораторов, что делает код интуитивно понятным и "
|
||||
"позволяет сосредоточиться на том, \"что\" вы хотите сделать, а не "
|
||||
"\"как\"."
|
||||
msgstr ""
|
||||
"**Declarative syntax**: Commands and their handlers are declared using "
|
||||
"simple decorators, making the code intuitive and allowing you to focus on"
|
||||
" \"what\" you want to do, not \"how\"."
|
||||
|
||||
#: ../../index.rst:28
|
||||
msgid ""
|
||||
"**Нативный DI**: Благодаря интеграции с "
|
||||
"[dishka](https://dishka.readthedocs.io/en/stable/), вы можете легко "
|
||||
"внедрять зависимости прямо в обработчики команд, что упрощает их "
|
||||
"тестирование, позволяет избежать мутабельных глобалов и многое другое."
|
||||
msgstr ""
|
||||
"**Native DI**: Thanks to integration with `dishka "
|
||||
"<https://dishka.readthedocs.io/en/stable/>`_, you can easily inject "
|
||||
"dependencies directly into command handlers, simplifying their testing, "
|
||||
"avoiding mutable globals, and much more."
|
||||
|
||||
#: ../../index.rst:29
|
||||
msgid ""
|
||||
"**Автоматическая валидация и парсинг**: Библиотека берёт на себя "
|
||||
"обработку флагов и аргументов командной строки, включая их парсинг, "
|
||||
"валидацию и преобразование типов."
|
||||
msgstr ""
|
||||
"**Automatic validation and parsing**: The library handles command-line "
|
||||
"flags and arguments, including their parsing, validation, and type "
|
||||
"conversion."
|
||||
|
||||
#: ../../index.rst:30
|
||||
msgid ""
|
||||
"**Гибкая настройка**: Вы можете легко кастомизировать системные "
|
||||
"сообщения, форматирование вывода, создавать кастомные обработчики "
|
||||
"нестандартного поведения и т.д."
|
||||
msgstr ""
|
||||
"**Flexible configuration**: You can easily customize system messages, "
|
||||
"output formatting, create custom handlers for non-standard behavior, and "
|
||||
"more."
|
||||
|
||||
#: ../../index.rst:35
|
||||
msgid "Архитектура и жизненный цикл"
|
||||
msgstr "Architecture and lifecycle"
|
||||
|
||||
#: ../../index.rst:37
|
||||
msgid ""
|
||||
"Следующая диаграмма иллюстрирует, как компоненты Argenta взаимодействуют "
|
||||
"друг с другом, обрабатывая ввод пользователя."
|
||||
msgstr ""
|
||||
"The following diagram illustrates how Argenta components interact with "
|
||||
"each other while processing user input."
|
||||
|
||||
#: ../../index.rst:39
|
||||
msgid "Request Lifecycle Diagram"
|
||||
msgstr ""
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-02 22:27+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/app/autocompleter.rst:4
|
||||
msgid "AutoCompleter"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/app/autocompleter.rst:6
|
||||
msgid ""
|
||||
"``AutoCompleter`` — это компонент, отвечающий за интерактивное "
|
||||
"автодополнение команд. Он улучшает пользовательский опыт, предлагая "
|
||||
"подсказки и завершая ввод на основе истории команд, что ускоряет работу и"
|
||||
" снижает вероятность опечаток."
|
||||
msgstr ""
|
||||
"``AutoCompleter`` is a component responsible for interactive command autocompletion. "
|
||||
"It improves user experience by offering suggestions and completing input based on "
|
||||
"command history, which speeds up work and reduces the likelihood of typos."
|
||||
|
||||
#: ../../root/api/app/autocompleter.rst:11
|
||||
msgid "Инициализация"
|
||||
msgstr "Initialization"
|
||||
|
||||
#: ../../root/api/app/autocompleter.rst:18
|
||||
msgid "Создаёт и настраивает экземпляр ``AutoCompleter``."
|
||||
msgstr "Creates and configures an ``AutoCompleter`` instance."
|
||||
|
||||
#: ../../root/api/app/autocompleter.rst:20
|
||||
msgid ""
|
||||
"``history_filename``: Имя файла для сохранения истории команд. Если "
|
||||
"указано, история будет сохраняться между сессиями. При значении ``None`` "
|
||||
"история хранится только в контексте сессии."
|
||||
msgstr ""
|
||||
"``history_filename``: Filename for saving command history. If specified, history "
|
||||
"will be saved between sessions. When set to ``None``, history is stored only within "
|
||||
"the session context."
|
||||
|
||||
#: ../../root/api/app/autocompleter.rst:21
|
||||
msgid ""
|
||||
"``autocomplete_button``: Клавиша, активирующая автодополнение. По "
|
||||
"умолчанию — **Tab**."
|
||||
msgstr ""
|
||||
"``autocomplete_button``: Key that activates autocompletion. Defaults to **Tab**."
|
||||
|
||||
#: ../../root/api/app/autocompleter.rst:26
|
||||
msgid "Назначение и возможности"
|
||||
msgstr "Purpose and Features"
|
||||
|
||||
#: ../../root/api/app/autocompleter.rst:28
|
||||
msgid "Основные возможности ``AutoCompleter``:"
|
||||
msgstr "Main features of ``AutoCompleter``:"
|
||||
|
||||
#: ../../root/api/app/autocompleter.rst:30
|
||||
msgid ""
|
||||
"**Автодополнение по истории**: При нажатии клавиши автодополнения (по "
|
||||
"умолчанию **Tab**) система ищет в истории команды, начинающиеся с уже "
|
||||
"введённого текста."
|
||||
msgstr ""
|
||||
"**History-based autocompletion**: When the autocompletion key is pressed (by default **Tab**), "
|
||||
"the system searches history for commands starting with the already entered text."
|
||||
|
||||
#: ../../root/api/app/autocompleter.rst:32
|
||||
msgid ""
|
||||
"**Общий префикс**: Если найдено несколько команд с общим префиксом, будет"
|
||||
" подставлена только общая часть. Например, для команд ``show_users`` и "
|
||||
"``show_profile`` при вводе ``sho`` и нажатии **Tab** ввод дополнится до "
|
||||
"``show_``."
|
||||
msgstr ""
|
||||
"**Common prefix**: If multiple commands with a common prefix are found, only the common "
|
||||
"part will be inserted. For example, for commands ``show_users`` and ``show_profile``, "
|
||||
"when entering ``sho`` and pressing **Tab**, the input will be completed to ``show_``."
|
||||
|
||||
#: ../../root/api/app/autocompleter.rst:34
|
||||
msgid ""
|
||||
"**Постоянная история**: Если указан ``history_filename``, история команд "
|
||||
"сохраняется в файл при выходе и загружается при следующем запуске. Это "
|
||||
"делает автодополнение со временем «умнее»."
|
||||
msgstr ""
|
||||
"**Persistent history**: If ``history_filename`` is specified, command history is saved "
|
||||
"to a file on exit and loaded on the next startup. This makes autocompletion \"smarter\" over time."
|
||||
|
||||
#: ../../root/api/app/autocompleter.rst:36
|
||||
msgid ""
|
||||
"**Очистка истории**: При сохранении ``AutoCompleter`` удаляет дубликаты и"
|
||||
" несуществующие команды, поддерживая историю в актуальном состоянии."
|
||||
msgstr ""
|
||||
"**History cleanup**: When saving, ``AutoCompleter`` removes duplicates and non-existent "
|
||||
"commands, keeping the history up to date."
|
||||
|
||||
#: ../../root/api/app/autocompleter.rst:38
|
||||
msgid ""
|
||||
"**Настройка клавиши**: Клавишу автодополнения можно изменить с помощью "
|
||||
"параметра ``autocomplete_button``."
|
||||
msgstr ""
|
||||
"**Key customization**: The autocompletion key can be changed using the ``autocomplete_button`` parameter."
|
||||
|
||||
#: ../../root/api/app/autocompleter.rst:43
|
||||
msgid "Пример использования"
|
||||
msgstr "Usage Example"
|
||||
|
||||
#: ../../root/api/app/autocompleter.rst:45
|
||||
msgid "``AutoCompleter`` передаётся как аргумент при инициализации `App`."
|
||||
msgstr "``AutoCompleter`` is passed as an argument when initializing `App`."
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-02 22:27+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:4
|
||||
msgid "Dividing Lines"
|
||||
msgstr "Dividing Lines"
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:6
|
||||
msgid ""
|
||||
"Разделительные линии в ``Argenta`` используются для визуального "
|
||||
"структурирования вывода и отделения блоков информации друг от друга. "
|
||||
"Библиотека предлагает два типа линий: статическую и динамическую."
|
||||
msgstr ""
|
||||
"Dividing lines in ``Argenta`` are used for visual structuring of output and separating "
|
||||
"information blocks from each other. The library offers two types of lines: static and dynamic."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:11
|
||||
msgid "``StaticDividingLine``"
|
||||
msgstr "``StaticDividingLine``"
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:13
|
||||
msgid ""
|
||||
"``StaticDividingLine`` создаёт разделительную линию **фиксированной** "
|
||||
"длины. Этот тип линии полезен для создания предсказуемого и "
|
||||
"унифицированного интерфейса."
|
||||
msgstr ""
|
||||
"``StaticDividingLine`` creates a dividing line of **fixed** length. This type of line "
|
||||
"is useful for creating a predictable and unified interface."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:21
|
||||
msgid "Создаёт экземпляр статической разделительной линии."
|
||||
msgstr "Creates a static dividing line instance."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:23
|
||||
msgid ""
|
||||
"``unit_part``: Символ для построения линии (учитывается только первый "
|
||||
"символ). По умолчанию: ``-``."
|
||||
msgstr ""
|
||||
"``unit_part``: Character for building the line (only the first character is considered). "
|
||||
"Defaults to: ``-``."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:24
|
||||
msgid "``length``: Фиксированная длина линии. По умолчанию: ``25``."
|
||||
msgstr "``length``: Fixed line length. Defaults to: ``25``."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:29
|
||||
msgid "``DynamicDividingLine``"
|
||||
msgstr "``DynamicDividingLine``"
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:31
|
||||
msgid ""
|
||||
"``DynamicDividingLine`` создаёт линию, длина которой **динамически** "
|
||||
"подстраивается под самую длинную строку в выводе команды. Это требует "
|
||||
"перехвата ``stdout``, в результате чего разделители идеально обрамляют "
|
||||
"выводимый контент."
|
||||
msgstr ""
|
||||
"``DynamicDividingLine`` creates a line whose length **dynamically** adjusts to the longest "
|
||||
"line in the command output. This requires capturing ``stdout``, resulting in dividers that "
|
||||
"perfectly frame the output content."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:38
|
||||
msgid "Создаёт экземпляр динамической разделительной линии."
|
||||
msgstr "Creates a dynamic dividing line instance."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:40
|
||||
msgid "``unit_part``: Символ для построения линии. По умолчанию: ``-``."
|
||||
msgstr "``unit_part``: Character for building the line. Defaults to: ``-``."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:42
|
||||
msgid "Длина вычисляется автоматически и не задаётся при инициализации."
|
||||
msgstr "Length is calculated automatically and is not set during initialization."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:45
|
||||
msgid ""
|
||||
"Обязательно почитайте про нюансы использования динамических линий и "
|
||||
"перехвата ``stdout`` в :ref:`этом разделе<root_redirect_stdout>`."
|
||||
msgstr ""
|
||||
"Be sure to read about the nuances of using dynamic lines and capturing ``stdout`` "
|
||||
"in :ref:`this section<root_redirect_stdout>`."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:50
|
||||
msgid "Назначение и использование"
|
||||
msgstr "Purpose and Usage"
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:52
|
||||
msgid "Выбор между статической и динамической линией зависит от ваших задач."
|
||||
msgstr "The choice between static and dynamic lines depends on your needs."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:54
|
||||
msgid "**StaticDividingLine** идеально подходит, если:"
|
||||
msgstr "**StaticDividingLine** is ideal if:"
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:56
|
||||
msgid "Вам нужен строгий и консистентный дизайн."
|
||||
msgstr "You need a strict and consistent design."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:57
|
||||
msgid ""
|
||||
"Вы используете роутеры с отключённым перехватом ``stdout`` "
|
||||
"(``disable_redirect_stdout=True``), где динамическое вычисление длины "
|
||||
"невозможно."
|
||||
msgstr ""
|
||||
"You are using routers with disabled ``stdout`` capture (``disable_redirect_stdout=True``), "
|
||||
"where dynamic length calculation is not possible."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:59
|
||||
msgid ""
|
||||
"**DynamicDividingLine** (поведение по умолчанию) — предпочтительный "
|
||||
"выбор, если:"
|
||||
msgstr "**DynamicDividingLine** (default behavior) is the preferred choice if:"
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:61
|
||||
msgid "Вы хотите, чтобы интерфейс был адаптивным."
|
||||
msgstr "You want the interface to be adaptive."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:62
|
||||
msgid "Вывод ваших команд имеет разную длину."
|
||||
msgstr "Your command output has varying lengths."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:63
|
||||
msgid ""
|
||||
"В ваших обработчиках нет интерактивных операций ввода (например, "
|
||||
"``input()``)."
|
||||
msgstr "Your handlers do not have interactive input operations (e.g., ``input()``)."
|
||||
|
||||
#: ../../root/api/app/dividing_lines.rst:65
|
||||
msgid ""
|
||||
"Тип разделителя для всего приложения задаётся при инициализации ``App`` "
|
||||
"через параметр ``dividing_line``."
|
||||
msgstr ""
|
||||
"The divider type for the entire application is set during ``App`` initialization "
|
||||
"via the ``dividing_line`` parameter."
|
||||
|
||||
@@ -0,0 +1,280 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-04 20:39+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/app/index.rst:4
|
||||
msgid "App"
|
||||
msgstr "App"
|
||||
|
||||
#: ../../root/api/app/index.rst:6
|
||||
msgid ""
|
||||
"Объект ``App`` — это ядро вашего консольного приложения. Он отвечает за "
|
||||
"конфигурацию, управление жизненным циклом, обработку команд и "
|
||||
"взаимодействие с пользователем, координируя работу всех компонентов: "
|
||||
"роутеров, обработчиков и системных сообщений."
|
||||
msgstr ""
|
||||
"The ``App`` object is the core of your console application. It handles "
|
||||
"configuration, lifecycle management, command processing, and user "
|
||||
"interaction, coordinating the work of all components: routers, handlers, "
|
||||
"and system messages."
|
||||
|
||||
#: ../../root/api/app/index.rst:11
|
||||
msgid "Инициализация"
|
||||
msgstr "Initialization"
|
||||
|
||||
#: ../../root/api/app/index.rst:38
|
||||
msgid "Создаёт и настраивает экземпляр приложения."
|
||||
msgstr "Creates and configures an application instance."
|
||||
|
||||
#: ../../root/api/app/index.rst:40
|
||||
msgid "``prompt``: Приглашение к вводу, отображаемое перед каждой командой."
|
||||
msgstr "``prompt``: Input prompt displayed before each command."
|
||||
|
||||
#: ../../root/api/app/index.rst:41
|
||||
msgid "``initial_message``: Сообщение, выводимое при запуске приложения."
|
||||
msgstr "``initial_message``: Message displayed when the application starts."
|
||||
|
||||
#: ../../root/api/app/index.rst:42
|
||||
msgid "``farewell_message``: Сообщение, выводимое при выходе из приложения."
|
||||
msgstr "``farewell_message``: Message displayed when exiting the application."
|
||||
|
||||
#: ../../root/api/app/index.rst:43
|
||||
msgid ""
|
||||
"``exit_command``: Команда, которая маркируется как триггер для выхода из "
|
||||
"приложения."
|
||||
msgstr ""
|
||||
"``exit_command``: Command that is marked as a trigger for exiting the "
|
||||
"application."
|
||||
|
||||
#: ../../root/api/app/index.rst:44
|
||||
msgid ""
|
||||
"``system_router_title``: Заголовок для системного роутера (содержит "
|
||||
"команду выхода)."
|
||||
msgstr ""
|
||||
"``system_router_title``: Title for the system router (contains the exit "
|
||||
"command)."
|
||||
|
||||
#: ../../root/api/app/index.rst:45
|
||||
msgid ""
|
||||
"``ignore_command_register``: Если ``True``, регистр вводимых команд "
|
||||
"игнорируется при поиске обработчика."
|
||||
msgstr ""
|
||||
"``ignore_command_register``: If ``True``, command case is ignored when "
|
||||
"searching for a handler."
|
||||
|
||||
#: ../../root/api/app/index.rst:46
|
||||
msgid ""
|
||||
"``dividing_line``: Тип разделительной линии (``StaticDividingLine`` или "
|
||||
"``DynamicDividingLine``)."
|
||||
msgstr ""
|
||||
"``dividing_line``: Type of dividing line (``StaticDividingLine`` or "
|
||||
"``DynamicDividingLine``)."
|
||||
|
||||
#: ../../root/api/app/index.rst:47
|
||||
msgid ""
|
||||
"``repeat_command_groups_printing``: Если ``True``, список доступных "
|
||||
"команд выводится перед каждым вводом."
|
||||
msgstr ""
|
||||
"``repeat_command_groups_printing``: If ``True``, the list of available "
|
||||
"commands is displayed before each input."
|
||||
|
||||
#: ../../root/api/app/index.rst:48
|
||||
msgid ""
|
||||
"``override_system_messages``: Если ``True``, стандартное форматирование "
|
||||
"(цвета, ASCII-арт) отключается."
|
||||
msgstr ""
|
||||
"``override_system_messages``: If ``True``, standard formatting (colors, "
|
||||
"ASCII art) is disabled."
|
||||
|
||||
#: ../../root/api/app/index.rst:49
|
||||
msgid ""
|
||||
"``autocompleter``: Экземпляр класса :ref:`AutoCompleter "
|
||||
"<root_api_app_autocompleter>`, отвечающий за автодополнение команд."
|
||||
msgstr ""
|
||||
"``autocompleter``: Instance of the :ref:`AutoCompleter "
|
||||
"<root_api_app_autocompleter>` class responsible for command "
|
||||
"autocompletion."
|
||||
|
||||
#: ../../root/api/app/index.rst:50
|
||||
msgid ""
|
||||
"``print_func``: Функция для вывода всех системных сообщений (по умолчанию"
|
||||
" ``rich.Console().print``)."
|
||||
msgstr ""
|
||||
"``print_func``: Function for outputting all system messages (defaults to "
|
||||
"``rich.Console().print``)."
|
||||
|
||||
#: ../../root/api/app/index.rst:55
|
||||
msgid "Основные методы"
|
||||
msgstr "Main Methods"
|
||||
|
||||
#: ../../root/api/app/index.rst:59
|
||||
msgid ""
|
||||
"Регистрирует роутер в приложении. Все команды из этого роутера становятся"
|
||||
" доступными для вызова."
|
||||
msgstr ""
|
||||
"Registers a router in the application. All commands from this router "
|
||||
"become available for invocation."
|
||||
|
||||
#: ../../root/api/app/index.rst
|
||||
msgid "Parameters"
|
||||
msgstr "Parameters"
|
||||
|
||||
#: ../../root/api/app/index.rst:61
|
||||
msgid "Экземпляр ``Router`` для регистрации."
|
||||
msgstr "``Router`` instance to register."
|
||||
|
||||
#: ../../root/api/app/index.rst:65
|
||||
msgid "Регистрирует несколько роутеров одновременно."
|
||||
msgstr "Registers multiple routers simultaneously."
|
||||
|
||||
#: ../../root/api/app/index.rst:67
|
||||
msgid "Последовательность экземпляров ``Router`` для регистрации."
|
||||
msgstr "Sequence of ``Router`` instances to register."
|
||||
|
||||
#: ../../root/api/app/index.rst:71
|
||||
msgid ""
|
||||
"Добавляет текстовое сообщение, которое выводится при запуске приложения "
|
||||
"после ``initial_message``."
|
||||
msgstr ""
|
||||
"Adds a text message that is displayed when the application starts after "
|
||||
"``initial_message``."
|
||||
|
||||
#: ../../root/api/app/index.rst:73
|
||||
msgid "Строка с сообщением."
|
||||
msgstr "String with the message."
|
||||
|
||||
#: ../../root/api/app/index.rst:76
|
||||
msgid ""
|
||||
"Для вывода стандартных сообщений можно использовать готовые шаблоны из "
|
||||
":ref:`PredefinedMessages <root_api_predefined_messages>`."
|
||||
msgstr ""
|
||||
"For outputting standard messages, you can use ready-made templates from "
|
||||
":ref:`PredefinedMessages <root_api_predefined_messages>`."
|
||||
|
||||
#: ../../root/api/app/index.rst:81
|
||||
msgid "Методы установки обработчиков"
|
||||
msgstr "Handler Setup Methods"
|
||||
|
||||
#: ../../root/api/app/index.rst:83
|
||||
msgid ""
|
||||
"``App`` позволяет настраивать реакцию на различные события, такие как "
|
||||
"ошибки ввода или неизвестные команды."
|
||||
msgstr ""
|
||||
"``App`` allows you to configure responses to various events, such as "
|
||||
"input errors or unknown commands."
|
||||
|
||||
#: ../../root/api/app/index.rst:86
|
||||
msgid ""
|
||||
"Подробнее об исключениях и их обработке в соответствующем :ref:`разделе "
|
||||
"документации <root_error_handling>`."
|
||||
msgstr ""
|
||||
"For more details on exceptions and their handling, see the corresponding "
|
||||
":ref:`documentation section <root_error_handling>`."
|
||||
|
||||
#: ../../root/api/app/index.rst:92
|
||||
msgid "Устанавливает шаблон для форматирования описания команды."
|
||||
msgstr "Sets the template for formatting command descriptions."
|
||||
|
||||
#: ../../root/api/app/index.rst:94
|
||||
msgid "Обработчик принимает триггер команды (``str``) и её описание (``str``)."
|
||||
msgstr ""
|
||||
"The handler accepts the command trigger (``str``) and its description "
|
||||
"(``str``)."
|
||||
|
||||
#: ../../root/api/app/index.rst:100
|
||||
msgid "Устанавливает обработчик при некорректном введённом синтаксисе флагов."
|
||||
msgstr "Sets the handler for incorrect flag syntax input."
|
||||
|
||||
#: ../../root/api/app/index.rst:102 ../../root/api/app/index.rst:110
|
||||
msgid "Обработчик принимает строку, введённую пользователем."
|
||||
msgstr "The handler accepts the string entered by the user."
|
||||
|
||||
#: ../../root/api/app/index.rst:108
|
||||
msgid "Устанавливает обработчик при повторяющихся флагах в введённой команде."
|
||||
msgstr "Sets the handler for duplicate flags in the entered command."
|
||||
|
||||
#: ../../root/api/app/index.rst:116
|
||||
msgid "Устанавливает обработчик при вводе неизвестной команды."
|
||||
msgstr "Sets the handler for entering an unknown command."
|
||||
|
||||
#: ../../root/api/app/index.rst:118
|
||||
msgid "Обработчик принимает объект ``InputCommand`` - объект введённой команды."
|
||||
msgstr ""
|
||||
"The handler accepts an ``InputCommand`` object - the entered command "
|
||||
"object."
|
||||
|
||||
#: ../../root/api/app/index.rst:124
|
||||
msgid "Устанавливает обработчик при вводе пустой строки."
|
||||
msgstr "Sets the handler for entering an empty string."
|
||||
|
||||
#: ../../root/api/app/index.rst:126
|
||||
msgid "Обработчик не принимает аргументов."
|
||||
msgstr "The handler accepts no arguments."
|
||||
|
||||
#: ../../root/api/app/index.rst:132
|
||||
msgid "Переопределяет стандартное поведение при вызове команды выхода."
|
||||
msgstr "Overrides the default behavior when the exit command is invoked."
|
||||
|
||||
#: ../../root/api/app/index.rst:134
|
||||
msgid "Обработчик принимает объект ``Response``."
|
||||
msgstr "The handler accepts a ``Response`` object."
|
||||
|
||||
#: ../../root/api/app/index.rst:147
|
||||
msgid "PredefinedMessages"
|
||||
msgstr "PredefinedMessages"
|
||||
|
||||
#: ../../root/api/app/index.rst:149
|
||||
msgid ""
|
||||
"``PredefinedMessages`` — это контейнер, содержащий набор готовых к "
|
||||
"использованию сообщений. Они отформатированы с использованием синтаксиса "
|
||||
"``rich`` и предназначены для вывода стандартной информации, такой как "
|
||||
"подсказки по использованию."
|
||||
msgstr ""
|
||||
"``PredefinedMessages`` is a container containing a set of ready-to-use "
|
||||
"messages. They are formatted using ``rich`` syntax and are intended for "
|
||||
"displaying standard information, such as usage hints."
|
||||
|
||||
#: ../../root/api/app/index.rst:151
|
||||
msgid "Рекомендуется использовать их при старте приложения."
|
||||
msgstr "It is recommended to use them when starting the application."
|
||||
|
||||
#: ../../root/api/app/index.rst:178
|
||||
msgid "Строка: ``[b dim]Usage[/b dim]: [i]<command> <[green]flags[/green]>[/i]``"
|
||||
msgstr "String: ``[b dim]Usage[/b dim]: [i]<command> <[green]flags[/green]>[/i]``"
|
||||
|
||||
#: ../../root/api/app/index.rst:180
|
||||
msgid "Отображается как: ``Usage: <command> <flags>``"
|
||||
msgstr "Displayed as: ``Usage: <command> <flags>``"
|
||||
|
||||
#: ../../root/api/app/index.rst:184
|
||||
msgid "Строка: ``[b dim]Help[/b dim]: [i]<command>[/i] [b red]--help[/b red]``"
|
||||
msgstr "String: ``[b dim]Help[/b dim]: [i]<command>[/i] [b red]--help[/b red]``"
|
||||
|
||||
#: ../../root/api/app/index.rst:186
|
||||
msgid "Отображается как: ``Help: <command> --help``"
|
||||
msgstr "Displayed as: ``Help: <command> --help``"
|
||||
|
||||
#: ../../root/api/app/index.rst:190
|
||||
msgid "Строка: ``[b dim]Autocomplete[/b dim]: [i]<part>[/i] [bold]<tab>``"
|
||||
msgstr "String: ``[b dim]Autocomplete[/b dim]: [i]<part>[/i] [bold]<tab>``"
|
||||
|
||||
#: ../../root/api/app/index.rst:192
|
||||
msgid "Отображается как: ``Autocomplete: <part> <tab>``"
|
||||
msgstr "Displayed as: ``Autocomplete: <part> <tab>``"
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-04 20:39+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/bridge.rst:4
|
||||
msgid "DataBridge"
|
||||
msgstr "DataBridge"
|
||||
|
||||
#: ../../root/api/bridge.rst:6
|
||||
msgid ""
|
||||
"``DataBridge`` — это сущность, предоставляющая временное хранилище "
|
||||
"данных, которое существует в рамках одной сессии приложения (от запуска "
|
||||
"до выхода). Она предназначена для обмена данными между обработчиками."
|
||||
msgstr ""
|
||||
"``DataBridge`` is an entity that provides temporary data storage that "
|
||||
"exists within a single application session (from startup to exit). It is "
|
||||
"designed for data exchange between handlers."
|
||||
|
||||
#: ../../root/api/bridge.rst:8
|
||||
msgid "Основной способ получения доступа к ``DataBridge`` — через DI."
|
||||
msgstr "The main way to access ``DataBridge`` is through DI."
|
||||
|
||||
#: ../../root/api/bridge.rst:21
|
||||
msgid "**Практический пример: Аутентификация**"
|
||||
msgstr "**Practical Example: Authentication**"
|
||||
|
||||
#: ../../root/api/bridge.rst:23
|
||||
msgid ""
|
||||
"Рассмотрим пример, где команда `login` сохраняет токен аутентификации, а "
|
||||
"команда `get-profile` использует его."
|
||||
msgstr ""
|
||||
"Let's consider an example where the `login` command saves an "
|
||||
"authentication token, and the `get-profile` command uses it."
|
||||
|
||||
#: ../../root/api/bridge.rst:29
|
||||
msgid "**Как это работает:**"
|
||||
msgstr "**How it works:**"
|
||||
|
||||
#: ../../root/api/bridge.rst:31
|
||||
msgid ""
|
||||
"При вызове обработчика ``dishka`` автоматически внедряет экземпляр "
|
||||
"``DataBridge``."
|
||||
msgstr ""
|
||||
"When calling a handler, ``dishka`` automatically injects a ``DataBridge``"
|
||||
" instance."
|
||||
|
||||
#: ../../root/api/bridge.rst:32
|
||||
msgid ""
|
||||
"Команда ``login --username <имя>`` вызывает ``login_handler``, который "
|
||||
"через внедрённый ``data_bridge`` сохраняет токен."
|
||||
msgstr ""
|
||||
"The ``login --username <name>`` command calls ``login_handler``, which "
|
||||
"saves the token through the injected ``data_bridge``."
|
||||
|
||||
#: ../../root/api/bridge.rst:33
|
||||
msgid ""
|
||||
"Команда ``get-profile`` вызывает ``get_profile_handler``, который так же "
|
||||
"получает ``data_bridge`` и извлекает из него токен."
|
||||
msgstr ""
|
||||
"The ``get-profile`` command calls ``get_profile_handler``, which also "
|
||||
"receives ``data_bridge`` and extracts the token from it."
|
||||
|
||||
#: ../../root/api/bridge.rst:42
|
||||
msgid ""
|
||||
"Инициализирует хранилище. При использовании через DI вызывается "
|
||||
"автоматически."
|
||||
msgstr ""
|
||||
"Initializes the storage. When used through DI, it is called automatically."
|
||||
|
||||
#: ../../root/api/bridge.rst:46
|
||||
msgid "Обновляет хранилище данными из словаря."
|
||||
msgstr "Updates the storage with data from a dictionary."
|
||||
|
||||
#: ../../root/api/bridge.rst:50
|
||||
msgid "Возвращает все данные из хранилища."
|
||||
msgstr "Returns all data from the storage."
|
||||
|
||||
#: ../../root/api/bridge.rst:54
|
||||
msgid "Возвращает значение по ключу или ``None``, если ключ не найден."
|
||||
msgstr "Returns the value by key or ``None`` if the key is not found."
|
||||
|
||||
#: ../../root/api/bridge.rst:58
|
||||
msgid "Удаляет значение по ключу. Вызывает ``KeyError``, если ключ не найден."
|
||||
msgstr "Deletes the value by key. Raises ``KeyError`` if the key is not found."
|
||||
|
||||
#: ../../root/api/bridge.rst:62
|
||||
msgid "Полностью очищает хранилище."
|
||||
msgstr "Completely clears the storage."
|
||||
|
||||
@@ -0,0 +1,335 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-02 22:27+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/command/flag.rst:4
|
||||
msgid "Flag"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/command/flag.rst:6
|
||||
msgid ""
|
||||
"``Flag`` — это сущность, описывающая флаг команды. Её основная задача — "
|
||||
"определить параметры флага, включая его имя, префикс и правила валидации."
|
||||
msgstr ""
|
||||
"``Flag`` is an entity describing a command flag. Its main purpose is to define "
|
||||
"flag parameters, including its name, prefix, and validation rules."
|
||||
|
||||
#: ../../root/api/command/flag.rst:10
|
||||
msgid ""
|
||||
"Документация по :ref:`PossibleValues <root_api_command_possible_values>` "
|
||||
"— перечисление, определяющее типы допустимых значений."
|
||||
msgstr ""
|
||||
"Documentation for :ref:`PossibleValues <root_api_command_possible_values>` "
|
||||
"— an enumeration defining types of allowed values."
|
||||
|
||||
#: ../../root/api/command/flag.rst:12
|
||||
msgid ""
|
||||
"Документация по :ref:`InputFlag <root_api_command_input_flag>` — объект "
|
||||
"обработанного флага, введённого пользователем."
|
||||
msgstr ""
|
||||
"Documentation for :ref:`InputFlag <root_api_command_input_flag>` — an object "
|
||||
"representing a processed flag entered by the user."
|
||||
|
||||
#: ../../root/api/command/flag.rst:14
|
||||
msgid ""
|
||||
":ref:`Общая информация <root_flags>` о флагах и их использовании в "
|
||||
"``Argenta``"
|
||||
msgstr ":ref:`General information <root_flags>` about flags and their usage in ``Argenta``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:19
|
||||
msgid "Инициализация"
|
||||
msgstr "Initialization"
|
||||
|
||||
#: ../../root/api/command/flag.rst:30
|
||||
msgid "Создаёт новый флаг для регистрации в команде."
|
||||
msgstr "Creates a new flag for registration in a command."
|
||||
|
||||
#: ../../root/api/command/flag.rst:32
|
||||
msgid "``name``: Имя флага (обязательный параметр)."
|
||||
msgstr "``name``: Flag name (required parameter)."
|
||||
|
||||
#: ../../root/api/command/flag.rst:33
|
||||
msgid "``prefix``: Префикс флага (``-``, ``--``, ``---``). По умолчанию ``--``."
|
||||
msgstr "``prefix``: Flag prefix (``-``, ``--``, ``---``). Defaults to ``--``."
|
||||
|
||||
#: ../../root/api/command/flag.rst:34
|
||||
msgid ""
|
||||
"``possible_values``: Правила валидации значения. Может быть списком "
|
||||
"строк, регулярным выражением или значением из ``PossibleValues``. По "
|
||||
"умолчанию ``PossibleValues.ALL``, то есть любое значение допустимо."
|
||||
msgstr ""
|
||||
"``possible_values``: Value validation rules. Can be a list of strings, a regular "
|
||||
"expression, or a value from ``PossibleValues``. Defaults to ``PossibleValues.ALL``, "
|
||||
"meaning any value is allowed."
|
||||
|
||||
#: ../../root/api/command/flag.rst:36
|
||||
msgid "**Атрибуты:**"
|
||||
msgstr "**Attributes:**"
|
||||
|
||||
#: ../../root/api/command/flag.rst:40
|
||||
msgid "Имя флага в виде строки."
|
||||
msgstr "Flag name as a string."
|
||||
|
||||
#: ../../root/api/command/flag.rst:44
|
||||
msgid "Префикс флага. Один из: ``\"-\"``, ``\"--\"``, ``\"---\"``."
|
||||
msgstr "Flag prefix. One of: ``\"-\"``, ``\"--\"``, ``\"---\"``."
|
||||
|
||||
#: ../../root/api/command/flag.rst:48
|
||||
msgid "Допустимые значения для флага."
|
||||
msgstr "Allowed values for the flag."
|
||||
|
||||
#: ../../root/api/command/flag.rst:50 ../../root/api/command/flag.rst:93
|
||||
#: ../../root/api/command/flag.rst:113 ../../root/api/command/flag.rst:136
|
||||
#: ../../root/api/command/flag.rst:253
|
||||
msgid "**Пример использования:**"
|
||||
msgstr "**Usage example:**"
|
||||
|
||||
#: ../../root/api/command/flag.rst:59
|
||||
msgid "Свойства"
|
||||
msgstr "Properties"
|
||||
|
||||
#: ../../root/api/command/flag.rst:62
|
||||
msgid "string_entity"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/command/flag.rst:70
|
||||
msgid "Возвращает строковое представление флага в формате ``prefix + name``."
|
||||
msgstr "Returns the string representation of the flag in the format ``prefix + name``."
|
||||
|
||||
#: ../../root/api/command/flag.rst
|
||||
msgid "return"
|
||||
msgstr "return"
|
||||
|
||||
#: ../../root/api/command/flag.rst:72 ../../root/api/command/flag.rst:91
|
||||
msgid "Строковое представление флага"
|
||||
msgstr "String representation of the flag"
|
||||
|
||||
#: ../../root/api/command/flag.rst:74
|
||||
msgid ""
|
||||
"Это свойство объединяет префикс и имя в единую строку, которая "
|
||||
"представляет флаг так, как он выглядел бы в командной строке."
|
||||
msgstr ""
|
||||
"This property combines the prefix and name into a single string that represents "
|
||||
"the flag as it would appear on the command line."
|
||||
|
||||
#: ../../root/api/command/flag.rst:79
|
||||
msgid "Магические методы"
|
||||
msgstr "Magic Methods"
|
||||
|
||||
#: ../../root/api/command/flag.rst:82
|
||||
msgid "__str__"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/command/flag.rst:89
|
||||
msgid "Возвращает строковое представление флага (аналогично ``string_entity``)."
|
||||
msgstr "Returns the string representation of the flag (similar to ``string_entity``)."
|
||||
|
||||
#: ../../root/api/command/flag.rst:102
|
||||
msgid "__repr__"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/command/flag.rst:109
|
||||
msgid "Возвращает отладочное представление объекта."
|
||||
msgstr "Returns the debug representation of the object."
|
||||
|
||||
#: ../../root/api/command/flag.rst:111
|
||||
msgid "Строка в формате ``Flag<prefix=..., name=...>``."
|
||||
msgstr "String in the format ``Flag<prefix=..., name=...>``."
|
||||
|
||||
#: ../../root/api/command/flag.rst:122
|
||||
msgid "__eq__"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/command/flag.rst:129
|
||||
msgid ""
|
||||
"Сравнивает два флага на равенство по их строковому представлению "
|
||||
"(``string_entity``)."
|
||||
msgstr ""
|
||||
"Compares two flags for equality based on their string representation (``string_entity``)."
|
||||
|
||||
#: ../../root/api/command/flag.rst
|
||||
msgid "param other"
|
||||
msgstr "param other"
|
||||
|
||||
#: ../../root/api/command/flag.rst:131
|
||||
msgid "Объект для сравнения"
|
||||
msgstr "Object to compare"
|
||||
|
||||
#: ../../root/api/command/flag.rst:132
|
||||
msgid "**True**, если флаги равны, иначе **False**"
|
||||
msgstr "**True** if flags are equal, otherwise **False**"
|
||||
|
||||
#: ../../root/api/command/flag.rst:134
|
||||
msgid "Два флага считаются равными, если их ``string_entity`` идентичны."
|
||||
msgstr "Two flags are considered equal if their ``string_entity`` are identical."
|
||||
|
||||
#: ../../root/api/command/flag.rst:147
|
||||
msgid "PredefinedFlags"
|
||||
msgstr "PredefinedFlags"
|
||||
|
||||
#: ../../root/api/command/flag.rst:149
|
||||
msgid "``argenta.command.PredefinedFlags``"
|
||||
msgstr "``argenta.command.PredefinedFlags``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:151
|
||||
msgid ""
|
||||
"Класс ``PredefinedFlags`` предоставляет набор готовых флагов для "
|
||||
"использования в приложениях без их ручного создания. Эти флаги покрывают "
|
||||
"распространённые сценарии."
|
||||
msgstr ""
|
||||
"The ``PredefinedFlags`` class provides a set of ready-made flags for use in "
|
||||
"applications without manual creation. These flags cover common scenarios."
|
||||
|
||||
#: ../../root/api/command/flag.rst:153
|
||||
msgid ""
|
||||
"Все предопределённые флаги являются атрибутами класса и представляют "
|
||||
"собой готовые экземпляры ``Flag``."
|
||||
msgstr ""
|
||||
"All predefined flags are class attributes and represent ready-made ``Flag`` instances."
|
||||
|
||||
#: ../../root/api/command/flag.rst:158
|
||||
msgid "Информационные флаги"
|
||||
msgstr "Informational Flags"
|
||||
|
||||
#: ../../root/api/command/flag.rst:163
|
||||
msgid "Флаг для отображения справки: ``--help``"
|
||||
msgstr "Flag for displaying help: ``--help``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:165
|
||||
msgid "``name``: ``\"help\"``"
|
||||
msgstr "``name``: ``\"help\"``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:166 ../../root/api/command/flag.rst:182
|
||||
#: ../../root/api/command/flag.rst:224 ../../root/api/command/flag.rst:240
|
||||
msgid "``prefix``: ``\"--\"`` (по умолчанию)"
|
||||
msgstr "``prefix``: ``\"--\"`` (default)"
|
||||
|
||||
#: ../../root/api/command/flag.rst:167 ../../root/api/command/flag.rst:175
|
||||
#: ../../root/api/command/flag.rst:183 ../../root/api/command/flag.rst:191
|
||||
#: ../../root/api/command/flag.rst:204 ../../root/api/command/flag.rst:212
|
||||
msgid "``possible_values``: ``PossibleValues.NEITHER``"
|
||||
msgstr "``possible_values``: ``PossibleValues.NEITHER``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:171
|
||||
msgid "Короткая версия флага справки: ``-H``"
|
||||
msgstr "Short version of the help flag: ``-H``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:173
|
||||
#: ../../root/api/command/flag.rst:231
|
||||
msgid "``name``: ``\"H\"``"
|
||||
msgstr "``name``: ``\"H\"``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:174
|
||||
#: ../../root/api/command/flag.rst:190
|
||||
#: ../../root/api/command/flag.rst:211
|
||||
#: ../../root/api/command/flag.rst:232
|
||||
#: ../../root/api/command/flag.rst:248
|
||||
msgid "``prefix``: ``\"-\"``"
|
||||
msgstr "``prefix``: ``\"-\"``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:179
|
||||
msgid "Флаг для отображения информации: ``--info``"
|
||||
msgstr "Flag for displaying information: ``--info``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:181
|
||||
msgid "``name``: ``\"info\"``"
|
||||
msgstr "``name``: ``\"info\"``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:187
|
||||
msgid "Короткая версия флага информации: ``-I``"
|
||||
msgstr "Short version of the info flag: ``-I``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:189
|
||||
msgid "``name``: ``\"I\"``"
|
||||
msgstr "``name``: ``\"I\"``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:196
|
||||
msgid "Флаги выбора"
|
||||
msgstr "Selection Flags"
|
||||
|
||||
#: ../../root/api/command/flag.rst:200
|
||||
msgid "Флаг для выбора всех элементов: ``--all``"
|
||||
msgstr "Flag for selecting all items: ``--all``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:202
|
||||
msgid "``name``: ``\"all\"``"
|
||||
msgstr "``name``: ``\"all\"``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:203
|
||||
msgid "``prefix``: ``\"--\"``"
|
||||
msgstr "``prefix``: ``\"--\"``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:208
|
||||
msgid "Короткая версия флага выбора всех элементов: ``-A``"
|
||||
msgstr "Short version of the select all flag: ``-A``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:210
|
||||
msgid "``name``: ``\"A\"``"
|
||||
msgstr "``name``: ``\"A\"``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:217
|
||||
msgid "Сетевые флаги"
|
||||
msgstr "Network Flags"
|
||||
|
||||
#: ../../root/api/command/flag.rst:221
|
||||
msgid "Флаг для указания IP-адреса хоста: ``--host``"
|
||||
msgstr "Flag for specifying host IP address: ``--host``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:223
|
||||
msgid "``name``: ``\"host\"``"
|
||||
msgstr "``name``: ``\"host\"``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:225 ../../root/api/command/flag.rst:233
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"``possible_values``: Регулярное выражение для валидации IPv4: "
|
||||
"``r\"^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$\"``"
|
||||
msgstr ""
|
||||
"``possible_values``: Regular expression for IPv4 validation: "
|
||||
"``r\"^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$\"``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:229
|
||||
msgid "Короткая версия флага хоста: ``-H``"
|
||||
msgstr "Short version of the host flag: ``-H``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:237
|
||||
msgid "Флаг для указания порта: ``--port``"
|
||||
msgstr "Flag for specifying port: ``--port``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:239
|
||||
msgid "``name``: ``\"port\"``"
|
||||
msgstr "``name``: ``\"port\"``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:241 ../../root/api/command/flag.rst:249
|
||||
#, python-brace-format
|
||||
msgid ""
|
||||
"``possible_values``: Регулярное выражение для валидации порта: "
|
||||
"``r\"^\\d{1,5}$\"``"
|
||||
msgstr ""
|
||||
"``possible_values``: Regular expression for port validation: "
|
||||
"``r\"^\\d{1,5}$\"``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:245
|
||||
msgid "Короткая версия флага порта: ``-P``"
|
||||
msgstr "Short version of the port flag: ``-P``"
|
||||
|
||||
#: ../../root/api/command/flag.rst:247
|
||||
msgid "``name``: ``\"P\"``"
|
||||
msgstr "``name``: ``\"P\"``"
|
||||
|
||||
@@ -0,0 +1,172 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-02 22:27+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/command/flags.rst:4
|
||||
msgid "Flags"
|
||||
msgstr "Flags"
|
||||
|
||||
#: ../../root/api/command/flags.rst:6
|
||||
msgid ""
|
||||
"``Flags`` — это коллекция флагов команды. Её основная задача — "
|
||||
"группировать и управлять набором флагов, зарегистрированных для "
|
||||
"конкретной команды. ``Flags`` служит контейнером, который позволяет "
|
||||
"удобно добавлять, извлекать, итерировать флаги и проверять их наличие."
|
||||
msgstr ""
|
||||
"``Flags`` is a collection of command flags. Its main purpose is to group and manage "
|
||||
"the set of flags registered for a specific command. ``Flags`` serves as a container "
|
||||
"that allows convenient addition, retrieval, iteration of flags, and checking their presence."
|
||||
|
||||
#: ../../root/api/command/flags.rst:10
|
||||
msgid ""
|
||||
"Документация по отдельным флагам (:ref:`Flag <root_api_command_flag>`, "
|
||||
":ref:`InputFlag <root_api_command_input_flag>`)"
|
||||
msgstr ""
|
||||
"Documentation for individual flags (:ref:`Flag <root_api_command_flag>`, "
|
||||
":ref:`InputFlag <root_api_command_input_flag>`)"
|
||||
|
||||
#: ../../root/api/command/flags.rst:12
|
||||
msgid ""
|
||||
"Документация по :ref:`InputFlags <root_api_command_input_flags>` — "
|
||||
"коллекция обработанных флагов, введённых пользователем."
|
||||
msgstr ""
|
||||
"Documentation for :ref:`InputFlags <root_api_command_input_flags>` — "
|
||||
"a collection of processed flags entered by the user."
|
||||
|
||||
#: ../../root/api/command/flags.rst:14
|
||||
msgid ""
|
||||
":ref:`Общая информация <root_flags>` о флагах и их использовании в "
|
||||
"приложении ``Argenta``"
|
||||
msgstr ""
|
||||
":ref:`General information <root_flags>` about flags and their usage in "
|
||||
"the ``Argenta`` application"
|
||||
|
||||
#: ../../root/api/command/flags.rst:19
|
||||
msgid "Инициализация"
|
||||
msgstr "Initialization"
|
||||
|
||||
#: ../../root/api/command/flags.rst:26
|
||||
msgid "Создаёт новую коллекцию флагов."
|
||||
msgstr "Creates a new flag collection."
|
||||
|
||||
#: ../../root/api/command/flags.rst:28
|
||||
msgid ""
|
||||
"``flags``: Необязательный список флагов типа ``Flag`` для инициализации "
|
||||
"коллекции. Если не указан, создаётся пустая коллекция."
|
||||
msgstr ""
|
||||
"``flags``: Optional list of flags of type ``Flag`` for initializing the collection. "
|
||||
"If not specified, an empty collection is created."
|
||||
|
||||
#: ../../root/api/command/flags.rst:30
|
||||
msgid "**Атрибуты:**"
|
||||
msgstr "**Attributes:**"
|
||||
|
||||
#: ../../root/api/command/flags.rst:35
|
||||
msgid "Список всех зарегистрированных флагов типа ``Flag``."
|
||||
msgstr "List of all registered flags of type ``Flag``."
|
||||
|
||||
#: ../../root/api/command/flags.rst:37 ../../root/api/command/flags.rst:63
|
||||
#: ../../root/api/command/flags.rst:86 ../../root/api/command/flags.rst:109
|
||||
msgid "**Пример использования:**"
|
||||
msgstr "**Usage example:**"
|
||||
|
||||
#: ../../root/api/command/flags.rst:46
|
||||
msgid "Методы"
|
||||
msgstr "Methods"
|
||||
|
||||
#: ../../root/api/command/flags.rst:49
|
||||
msgid "add_flag"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/command/flags.rst:56
|
||||
msgid "Добавляет флаг в коллекцию."
|
||||
msgstr "Adds a flag to the collection."
|
||||
|
||||
#: ../../root/api/command/flags.rst
|
||||
msgid "param flag"
|
||||
msgstr "param flag"
|
||||
|
||||
#: ../../root/api/command/flags.rst:58
|
||||
msgid "Флаг типа ``Flag`` для добавления."
|
||||
msgstr "Flag of type ``Flag`` to add."
|
||||
|
||||
#: ../../root/api/command/flags.rst
|
||||
msgid "return"
|
||||
msgstr "return"
|
||||
|
||||
#: ../../root/api/command/flags.rst:59 ../../root/api/command/flags.rst:82
|
||||
msgid "None."
|
||||
msgstr "None."
|
||||
|
||||
#: ../../root/api/command/flags.rst:61
|
||||
msgid "Используется для динамического расширения набора флагов."
|
||||
msgstr "Used for dynamically extending the set of flags."
|
||||
|
||||
#: ../../root/api/command/flags.rst:72
|
||||
msgid "add_flags"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/command/flags.rst:79
|
||||
msgid "Добавляет в коллекцию список флагов."
|
||||
msgstr "Adds a list of flags to the collection."
|
||||
|
||||
#: ../../root/api/command/flags.rst
|
||||
msgid "param flags"
|
||||
msgstr "param flags"
|
||||
|
||||
#: ../../root/api/command/flags.rst:81
|
||||
msgid "Список флагов типа ``Flag`` для добавления."
|
||||
msgstr "List of flags of type ``Flag`` to add."
|
||||
|
||||
#: ../../root/api/command/flags.rst:84
|
||||
msgid ""
|
||||
"Метод расширяет коллекцию, добавляя в неё все флаги из переданного "
|
||||
"списка. Эффективен для пакетного добавления."
|
||||
msgstr ""
|
||||
"The method extends the collection by adding all flags from the provided list. "
|
||||
"Efficient for batch addition."
|
||||
|
||||
#: ../../root/api/command/flags.rst:95
|
||||
msgid "get_flag_by_name"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/command/flags.rst:102
|
||||
msgid "Возвращает флаг по имени."
|
||||
msgstr "Returns a flag by name."
|
||||
|
||||
#: ../../root/api/command/flags.rst
|
||||
msgid "param name"
|
||||
msgstr "param name"
|
||||
|
||||
#: ../../root/api/command/flags.rst:104
|
||||
msgid "Имя искомого флага."
|
||||
msgstr "Name of the flag to search for."
|
||||
|
||||
#: ../../root/api/command/flags.rst:105
|
||||
msgid "Объект ``Flag`` или ``None``, если флаг не найден."
|
||||
msgstr "``Flag`` object or ``None`` if the flag is not found."
|
||||
|
||||
#: ../../root/api/command/flags.rst:107
|
||||
msgid ""
|
||||
"Метод возвращает флаг с соответствующим именем. Если флаг не найден, "
|
||||
"возвращается ``None``."
|
||||
msgstr ""
|
||||
"The method returns a flag with the corresponding name. If the flag is not found, "
|
||||
"``None`` is returned."
|
||||
|
||||
@@ -0,0 +1,196 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-04 20:39+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/command/index.rst:4
|
||||
msgid "Command"
|
||||
msgstr "Command"
|
||||
|
||||
#: ../../root/api/command/index.rst:6
|
||||
msgid ""
|
||||
"``Command`` — это основная единица функциональности в приложении. Каждая "
|
||||
"команда связывает хэндлер с триггером, введя который он будет вызван для "
|
||||
"обработки."
|
||||
msgstr ""
|
||||
"``Command`` is the basic unit of functionality in an application. Each "
|
||||
"command links a handler to a trigger, which when entered will invoke it "
|
||||
"for processing."
|
||||
|
||||
#: ../../root/api/command/index.rst:8
|
||||
msgid ""
|
||||
"``Command`` инкапсулирует всю информацию о команде: её триггер (ключевое "
|
||||
"слово для вызова), описание, набор флагов и список псевдонимов."
|
||||
msgstr ""
|
||||
"``Command`` encapsulates all information about a command: its trigger "
|
||||
"(keyword for invocation), description, set of flags, and list of aliases."
|
||||
|
||||
#: ../../root/api/command/index.rst:13
|
||||
msgid "Инициализация"
|
||||
msgstr "Initialization"
|
||||
|
||||
#: ../../root/api/command/index.rst:23
|
||||
msgid "Создаёт новую команду для регистрации в роутере."
|
||||
msgstr "Creates a new command for registration in a router."
|
||||
|
||||
#: ../../root/api/command/index.rst:25
|
||||
msgid ""
|
||||
"``trigger``: Строковый триггер, который пользователь вводит для вызова "
|
||||
"команды. Является основным идентификатором."
|
||||
msgstr ""
|
||||
"``trigger``: String trigger that the user enters to invoke the command. "
|
||||
"Serves as the primary identifier."
|
||||
|
||||
#: ../../root/api/command/index.rst:26
|
||||
msgid ""
|
||||
"``description``: Необязательное описание, объясняющее назначение команды."
|
||||
" Отображается в справке."
|
||||
msgstr ""
|
||||
"``description``: Optional description explaining the command's purpose. "
|
||||
"Displayed in help."
|
||||
|
||||
#: ../../root/api/command/index.rst:27
|
||||
msgid ""
|
||||
"``flags``: Набор флагов для настройки поведения. Может быть одиночным "
|
||||
"объектом ``Flag`` или коллекцией ``Flags``."
|
||||
msgstr ""
|
||||
"``flags``: Set of flags for configuring behavior. Can be a single "
|
||||
"``Flag`` object or a ``Flags`` collection."
|
||||
|
||||
#: ../../root/api/command/index.rst:28
|
||||
msgid "``aliases``: Список строковых псевдонимов для основного триггера."
|
||||
msgstr "``aliases``: List of string aliases for the main trigger."
|
||||
|
||||
#: ../../root/api/command/index.rst:30 ../../root/api/command/index.rst:108
|
||||
msgid "**Атрибуты:**"
|
||||
msgstr "**Attributes:**"
|
||||
|
||||
#: ../../root/api/command/index.rst:34
|
||||
msgid ""
|
||||
"Основной триггер команды. Используется для её идентификации при обработке"
|
||||
" пользовательского ввода."
|
||||
msgstr ""
|
||||
"The main command trigger. Used for its identification when processing "
|
||||
"user input."
|
||||
|
||||
#: ../../root/api/command/index.rst:38
|
||||
msgid ""
|
||||
"Текстовое описание команды. Если не передано, используется значение по "
|
||||
"умолчанию."
|
||||
msgstr ""
|
||||
"Text description of the command. If not provided, the default value is "
|
||||
"used."
|
||||
|
||||
#: ../../root/api/command/index.rst:42
|
||||
msgid ""
|
||||
"Объект ``Flags``, содержащий все зарегистрированные флаги. Если был "
|
||||
"передан ``Flag``, то автоматически конвертируется из одиночного в "
|
||||
"коллекцию при инициализации."
|
||||
msgstr ""
|
||||
"A ``Flags`` object containing all registered flags. If a ``Flag`` was "
|
||||
"passed, it is automatically converted from a single flag to a collection "
|
||||
"during initialization."
|
||||
|
||||
#: ../../root/api/command/index.rst:46
|
||||
msgid "Список строковых псевдонимов. Пуст, если псевдонимы не заданы."
|
||||
msgstr "List of string aliases. Empty if no aliases are defined."
|
||||
|
||||
#: ../../root/api/command/index.rst:48
|
||||
msgid "**Пример использования:**"
|
||||
msgstr "**Usage example:**"
|
||||
|
||||
#: ../../root/api/command/index.rst:54
|
||||
msgid ""
|
||||
"Подробнее про флаги: :ref:`Flags <root_api_command_flags>` и :ref:`Флаги "
|
||||
"команд <root_flags>`."
|
||||
msgstr ""
|
||||
"More about flags: :ref:`Flags <root_api_command_flags>` and :ref:`Command "
|
||||
"flags <root_flags>`."
|
||||
|
||||
#: ../../root/api/command/index.rst:59
|
||||
msgid "Регистрация команд"
|
||||
msgstr "Command Registration"
|
||||
|
||||
#: ../../root/api/command/index.rst:61
|
||||
msgid "Команды передаются в качестве аргумента в декоратор ``@router.command()``."
|
||||
msgstr "Commands are passed as an argument to the ``@router.command()`` decorator."
|
||||
|
||||
#: ../../root/api/command/index.rst:63
|
||||
msgid "**Базовый пример:**"
|
||||
msgstr "**Basic example:**"
|
||||
|
||||
#: ../../root/api/command/index.rst:68
|
||||
msgid "**Команды с флагами:**"
|
||||
msgstr "**Commands with flags:**"
|
||||
|
||||
#: ../../root/api/command/index.rst:76
|
||||
msgid "Работа с псевдонимами"
|
||||
msgstr "Working with Aliases"
|
||||
|
||||
#: ../../root/api/command/index.rst:78
|
||||
msgid ""
|
||||
"Псевдонимы позволяют вызывать один и тот же обработчик разными "
|
||||
"триггерами, сохраняя флаги и описание команды."
|
||||
msgstr ""
|
||||
"Aliases allow invoking the same handler with different triggers while "
|
||||
"preserving the command's flags and description."
|
||||
|
||||
#: ../../root/api/command/index.rst:80
|
||||
msgid "**Пример с псевдонимами:**"
|
||||
msgstr "**Example with aliases:**"
|
||||
|
||||
#: ../../root/api/command/index.rst:85
|
||||
msgid "Теперь пользователь может вызвать команду любым из способов:"
|
||||
msgstr "Now the user can invoke the command in any of the following ways:"
|
||||
|
||||
#: ../../root/api/command/index.rst:94
|
||||
msgid "Все эти варианты вызовут один и тот же хэндлер ``handle_shutdown``."
|
||||
msgstr "All these variants will invoke the same handler ``handle_shutdown``."
|
||||
|
||||
#: ../../root/api/command/index.rst:101
|
||||
msgid "InputCommand"
|
||||
msgstr "InputCommand"
|
||||
|
||||
#: ../../root/api/command/index.rst:103
|
||||
msgid ""
|
||||
"``InputCommand`` представляет собой обработанную команду, введённую "
|
||||
"пользователем. Этот внутренний класс создаётся автоматически при "
|
||||
"обработке пользовательского ввода. Прямая работа с ним возможна при "
|
||||
"создании пользовательского обработчика для неизвестных команд."
|
||||
msgstr ""
|
||||
"``InputCommand`` represents a processed command entered by the user. This"
|
||||
" internal class is created automatically when processing user input. "
|
||||
"Direct work with it is possible when creating a custom handler for "
|
||||
"unknown commands."
|
||||
|
||||
#: ../../root/api/command/index.rst:106
|
||||
msgid ""
|
||||
"Подробнее о пользовательских обработчиках исключений см. :ref:`здесь "
|
||||
"<root_error_handling_unknown_command>`."
|
||||
msgstr ""
|
||||
"For more details on custom exception handlers, see :ref:`here "
|
||||
"<root_error_handling_unknown_command>`."
|
||||
|
||||
#: ../../root/api/command/index.rst:113
|
||||
msgid "Строковый триггер, введённый пользователем."
|
||||
msgstr "String trigger entered by the user."
|
||||
|
||||
#: ../../root/api/command/index.rst:118
|
||||
msgid "Объект ``InputFlags``, содержащий все введённые и распаршенные флаги."
|
||||
msgstr "An ``InputFlags`` object containing all entered and parsed flags."
|
||||
|
||||
@@ -0,0 +1,171 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-04 20:39+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:4
|
||||
msgid "InputFlag"
|
||||
msgstr "InputFlag"
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:6
|
||||
msgid ""
|
||||
"Объект ``InputFlag`` представляет собой флаг, введённый пользователем. Он"
|
||||
" создаётся в результате обработки пользовательского ввода и содержит "
|
||||
"информацию о распознанном флаге: его имя, префикс, значение и статус "
|
||||
"валидации."
|
||||
msgstr ""
|
||||
"The ``InputFlag`` object represents a flag entered by the user. It is "
|
||||
"created as a result of processing user input and contains information "
|
||||
"about the recognized flag: its name, prefix, value, and validation "
|
||||
"status."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:10
|
||||
msgid ""
|
||||
"Документация по :ref:`Flag <root_api_command_flag>` — класс для "
|
||||
"регистрации флага."
|
||||
msgstr ""
|
||||
"Documentation for :ref:`Flag <root_api_command_flag>` — class for "
|
||||
"registering a flag."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:12
|
||||
msgid ""
|
||||
"Документация по :ref:`ValidationStatus "
|
||||
"<root_api_command_validation_status>` — статусы валидации флагов."
|
||||
msgstr ""
|
||||
"Documentation for :ref:`ValidationStatus "
|
||||
"<root_api_command_validation_status>` — flag validation statuses."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:17
|
||||
msgid ""
|
||||
"Экземпляры этого класса не предназначены для прямого создания. Они "
|
||||
"содержатся в объекте :ref:`Response <root_api_response>`."
|
||||
msgstr ""
|
||||
"Instances of this class are not intended for direct creation. They are "
|
||||
"contained in the :ref:`Response <root_api_response>` object."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:19
|
||||
msgid "**Атрибуты:**"
|
||||
msgstr "**Attributes:**"
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:24
|
||||
msgid "Имя введённого флага."
|
||||
msgstr "Name of the entered flag."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:29
|
||||
msgid "Префикс флага: ``-``, ``--`` или ``---``."
|
||||
msgstr "Flag prefix: ``-``, ``--``, or ``---``."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:33
|
||||
msgid ""
|
||||
"Значение, переданное с флагом. Может быть ``''`` (пустой строкой) для "
|
||||
"флагов без значений."
|
||||
msgstr ""
|
||||
"Value passed with the flag. Can be ``''`` (empty string) for flags "
|
||||
"without values."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:38
|
||||
msgid ""
|
||||
"Статус валидации флага: ``ValidationStatus.VALID``, "
|
||||
"``ValidationStatus.INVALID`` или ``ValidationStatus.UNDEFINED``."
|
||||
msgstr ""
|
||||
"Flag validation status: ``ValidationStatus.VALID``, "
|
||||
"``ValidationStatus.INVALID``, or ``ValidationStatus.UNDEFINED``."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:43
|
||||
msgid "Свойства"
|
||||
msgstr "Properties"
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:46
|
||||
msgid "string_entity"
|
||||
msgstr "string_entity"
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:54
|
||||
msgid "Возвращает строковое представление флага в формате ``prefix + name``."
|
||||
msgstr ""
|
||||
"Returns the string representation of the flag in the format ``prefix + "
|
||||
"name``."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst
|
||||
msgid "return"
|
||||
msgstr "return"
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:56
|
||||
msgid "Строковое представление флага"
|
||||
msgstr "String representation of the flag"
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:61
|
||||
msgid "Магические методы"
|
||||
msgstr "Magic Methods"
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:64
|
||||
msgid "__str__"
|
||||
msgstr "__str__"
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:71
|
||||
msgid "Возвращает строковое представление флага вместе с его значением."
|
||||
msgstr "Returns the string representation of the flag along with its value."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:73
|
||||
msgid "Строка в формате ``флаг значение``."
|
||||
msgstr "String in the format ``flag value``."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:75
|
||||
#: ../../root/api/command/input_flag.rst:95
|
||||
msgid "**Пример использования:**"
|
||||
msgstr "**Usage example:**"
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:84
|
||||
msgid "__repr__"
|
||||
msgstr "__repr__"
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:91
|
||||
msgid "Возвращает отладочное представление объекта."
|
||||
msgstr "Returns the debug representation of the object."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:93
|
||||
msgid ""
|
||||
"Строка в формате ``InputFlag<prefix=..., name=..., value=..., "
|
||||
"status=...>``."
|
||||
msgstr ""
|
||||
"String in the format ``InputFlag<prefix=..., name=..., value=..., "
|
||||
"status=...>``."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:104
|
||||
msgid "__eq__"
|
||||
msgstr "__eq__"
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:111
|
||||
msgid "Сравнивает два введённых флага на равенство по имени."
|
||||
msgstr "Compares two entered flags for equality by name."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst
|
||||
msgid "param other"
|
||||
msgstr "param other"
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:113
|
||||
msgid "Объект для сравнения."
|
||||
msgstr "Object to compare."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:114
|
||||
msgid "**True**, если имена флагов совпадают, иначе **False**."
|
||||
msgstr "**True** if flag names match, otherwise **False**."
|
||||
|
||||
#: ../../root/api/command/input_flag.rst:116
|
||||
msgid "Два введённых флага считаются равными, если их имена совпадают."
|
||||
msgstr "Two entered flags are considered equal if their names match."
|
||||
|
||||
@@ -0,0 +1,219 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-02 22:27+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:4
|
||||
msgid "InputFlags"
|
||||
msgstr "InputFlags"
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:6
|
||||
msgid ""
|
||||
"``InputFlags`` — это коллекция флагов, введённых пользователем. Её "
|
||||
"основная задача — группировать и управлять набором флагов, переданных "
|
||||
"вместе с командой. ``InputFlags`` служит контейнером, который позволяет "
|
||||
"удобно извлекать, итерировать и проверять наличие флагов, а также "
|
||||
"работать с их значениями и статусами валидации."
|
||||
msgstr ""
|
||||
"``InputFlags`` is a collection of flags entered by the user. Its main purpose is to "
|
||||
"group and manage the set of flags passed with a command. ``InputFlags`` serves as a "
|
||||
"container that allows convenient retrieval, iteration, and checking of flag presence, "
|
||||
"as well as working with their values and validation statuses."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:10
|
||||
msgid ""
|
||||
"Документация по отдельным флагам (:ref:`Flag <root_api_command_flag>`, "
|
||||
":ref:`InputFlag <root_api_command_input_flag>`)"
|
||||
msgstr ""
|
||||
"Documentation for individual flags (:ref:`Flag <root_api_command_flag>`, "
|
||||
":ref:`InputFlag <root_api_command_input_flag>`)"
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:12
|
||||
msgid ""
|
||||
"Документация по :ref:`InputFlags <root_api_command_input_flags>` — "
|
||||
"коллекция обработанных флагов, введённых пользователем."
|
||||
msgstr ""
|
||||
"Documentation for :ref:`InputFlags <root_api_command_input_flags>` — "
|
||||
"a collection of processed flags entered by the user."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:14
|
||||
msgid ""
|
||||
"Документация по :ref:`Response <root_api_response>` — объект ответа, "
|
||||
"содержащий ``InputFlags``"
|
||||
msgstr ""
|
||||
"Documentation for :ref:`Response <root_api_response>` — response object "
|
||||
"containing ``InputFlags``"
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:16
|
||||
msgid ""
|
||||
":ref:`Общая информация <root_flags>` о флагах и их использовании в "
|
||||
"приложении ``Argenta``"
|
||||
msgstr ""
|
||||
":ref:`General information <root_flags>` about flags and their usage in "
|
||||
"the ``Argenta`` application"
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:21
|
||||
msgid "Инициализация"
|
||||
msgstr "Initialization"
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:28
|
||||
msgid "Создаёт новую коллекцию введённых флагов."
|
||||
msgstr "Creates a new collection of entered flags."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:30
|
||||
msgid ""
|
||||
"``flags``: Необязательный список флагов типа ``InputFlag`` для "
|
||||
"инициализации коллекции. Если не указан, создаётся пустая коллекция."
|
||||
msgstr ""
|
||||
"``flags``: Optional list of flags of type ``InputFlag`` for initializing the collection. "
|
||||
"If not specified, an empty collection is created."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:33
|
||||
msgid ""
|
||||
"Экземпляры этого класса обычно не создаются напрямую. Они автоматически "
|
||||
"формируются системой при обработке пользовательского ввода и доступны "
|
||||
"через атрибут ``input_flags`` объекта ``Response``."
|
||||
msgstr ""
|
||||
"Instances of this class are usually not created directly. They are automatically "
|
||||
"formed by the system when processing user input and are accessible through the "
|
||||
"``input_flags`` attribute of the ``Response`` object."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:35
|
||||
msgid "**Атрибуты:**"
|
||||
msgstr "**Attributes:**"
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:40
|
||||
msgid ""
|
||||
"Список всех введённых флагов типа ``InputFlag``. Пуст, если флаги не были"
|
||||
" переданы при инициализации или пользователь не ввёл их с командой."
|
||||
msgstr ""
|
||||
"List of all entered flags of type ``InputFlag``. Empty if flags were not passed "
|
||||
"during initialization or the user did not enter them with the command."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:42
|
||||
#: ../../root/api/command/input_flags.rst:68
|
||||
#: ../../root/api/command/input_flags.rst:94
|
||||
#: ../../root/api/command/input_flags.rst:117
|
||||
#: ../../root/api/command/input_flags.rst:131
|
||||
msgid "**Пример использования:**"
|
||||
msgstr "**Usage example:**"
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:51
|
||||
msgid "Методы"
|
||||
msgstr "Methods"
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:54
|
||||
msgid "get_flag_by_name"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:61
|
||||
msgid "Возвращает флаг по имени."
|
||||
msgstr "Returns a flag by name."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst
|
||||
msgid "param name"
|
||||
msgstr "param name"
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:63
|
||||
msgid "Имя искомого флага (без префикса)."
|
||||
msgstr "Name of the flag to search for (without prefix)."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst
|
||||
msgid "return"
|
||||
msgstr "return"
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:64
|
||||
msgid "Объект ``InputFlag`` или ``None``, если флаг не найден."
|
||||
msgstr "``InputFlag`` object or ``None`` if the flag is not found."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:66
|
||||
msgid ""
|
||||
"Метод возвращает первый флаг с соответствующим именем (без учёта "
|
||||
"префикса)."
|
||||
msgstr ""
|
||||
"The method returns the first flag with the corresponding name (ignoring the prefix)."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:77
|
||||
msgid "add_flag"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:84
|
||||
msgid "Добавляет введённый флаг в коллекцию."
|
||||
msgstr "Adds an entered flag to the collection."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst
|
||||
msgid "param flag"
|
||||
msgstr "param flag"
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:86
|
||||
msgid "Флаг типа ``InputFlag`` для добавления."
|
||||
msgstr "Flag of type ``InputFlag`` to add."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:87
|
||||
#: ../../root/api/command/input_flags.rst:113
|
||||
msgid "None."
|
||||
msgstr "None."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:89
|
||||
msgid ""
|
||||
"Метод добавляет флаг в конец списка ``flags``. Используется для "
|
||||
"динамического расширения коллекции."
|
||||
msgstr ""
|
||||
"The method adds a flag to the end of the ``flags`` list. Used for dynamically extending the collection."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:92
|
||||
msgid ""
|
||||
"Этот метод используется редко, так как `InputFlags` обычно создаётся "
|
||||
"автоматически. Однако он может быть полезен для тестирования или ручного "
|
||||
"создания коллекций."
|
||||
msgstr ""
|
||||
"This method is rarely used, as `InputFlags` is usually created automatically. "
|
||||
"However, it can be useful for testing or manual collection creation."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:103
|
||||
msgid "add_flags"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:110
|
||||
msgid "Добавляет в коллекцию список введённых флагов."
|
||||
msgstr "Adds a list of entered flags to the collection."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst
|
||||
msgid "param flags"
|
||||
msgstr "param flags"
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:112
|
||||
msgid "Список флагов типа ``InputFlag`` для добавления."
|
||||
msgstr "List of flags of type ``InputFlag`` to add."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:115
|
||||
msgid ""
|
||||
"Метод расширяет коллекцию, добавляя в неё все флаги из переданного "
|
||||
"списка. Эффективен для пакетного добавления."
|
||||
msgstr ""
|
||||
"The method extends the collection by adding all flags from the provided list. "
|
||||
"Efficient for batch addition."
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:126
|
||||
msgid "Практические примеры"
|
||||
msgstr "Practical Examples"
|
||||
|
||||
#: ../../root/api/command/input_flags.rst:129
|
||||
msgid "Обработка всех флагов с проверкой статусов"
|
||||
msgstr "Processing All Flags with Status Checking"
|
||||
|
||||
@@ -0,0 +1,190 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-02 22:27+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:5
|
||||
msgid "PossibleValues"
|
||||
msgstr "PossibleValues"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:7
|
||||
msgid ""
|
||||
"``PossibleValues`` — это перечисление, которое определяет "
|
||||
"специальные режимы валидации для значений флагов. ``PossibleValues`` "
|
||||
"используется в параметре ``possible_values`` класса ``Flag``, чтобы "
|
||||
"указать, может ли флаг принимать значения и какие ограничения на них "
|
||||
"накладываются."
|
||||
msgstr ""
|
||||
"``PossibleValues`` is an enumeration that defines special validation "
|
||||
"modes for flag values. ``PossibleValues`` is used in the ``possible_values`` parameter "
|
||||
"of the ``Flag`` class to specify whether a flag can accept values and what restrictions "
|
||||
"are imposed on them."
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:9
|
||||
msgid ""
|
||||
"``PossibleValues`` содержит два основных значения: ``NEITHER`` (для "
|
||||
"флагов, которые не могут принимать значения) и ``ALL`` (для флагов, "
|
||||
"принимающих любые значения). Это перечисление используется вместе со "
|
||||
"списками строк и регулярными выражениями для создания гибкой системы "
|
||||
"валидации."
|
||||
msgstr ""
|
||||
"``PossibleValues`` contains two main values: ``NEITHER`` (for flags that cannot "
|
||||
"accept values) and ``ALL`` (for flags accepting any values). This enumeration is "
|
||||
"used together with string lists and regular expressions to create a flexible "
|
||||
"validation system."
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:12
|
||||
msgid ""
|
||||
"Результат валидации доступен через атрибут ``status`` у экземпляра "
|
||||
"``InputFlag``. Подробнее см. :ref:`здесь <root_api_command_input_flag>`."
|
||||
msgstr ""
|
||||
"The validation result is available through the ``status`` attribute of the "
|
||||
"``InputFlag`` instance. For more details, see :ref:`here <root_api_command_input_flag>`."
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:16
|
||||
msgid ""
|
||||
"Документация по :ref:`Flag <root_api_command_flag>` — класс флага, "
|
||||
"использующий ``PossibleValues``."
|
||||
msgstr ""
|
||||
"Documentation for :ref:`Flag <root_api_command_flag>` — flag class "
|
||||
"using ``PossibleValues``."
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:18
|
||||
msgid ""
|
||||
"Документация по :ref:`ValidationStatus "
|
||||
"<root_api_command_validation_status>` — результат валидации ввёденного "
|
||||
"флага."
|
||||
msgstr ""
|
||||
"Documentation for :ref:`ValidationStatus "
|
||||
"<root_api_command_validation_status>` — validation result of the entered flag."
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:20
|
||||
msgid ""
|
||||
":ref:`Общая информация <root_flags>` о флагах и их использовании в "
|
||||
"приложении ``Argenta``"
|
||||
msgstr ""
|
||||
":ref:`General information <root_flags>` about flags and their usage in "
|
||||
"the ``Argenta`` application"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:25
|
||||
msgid "NEITHER"
|
||||
msgstr "NEITHER"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:32
|
||||
msgid "Указывает, что флаг **не должен** иметь значения."
|
||||
msgstr "Indicates that the flag **should not** have a value."
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:34
|
||||
msgid ""
|
||||
"Флаги с этим значением работают как булевы переключатели: их наличие в "
|
||||
"командной строке само по себе является информацией. Попытка передать "
|
||||
"такому флагу значение приведёт к ошибке валидации."
|
||||
msgstr ""
|
||||
"Flags with this value work as boolean switches: their presence on the command line "
|
||||
"is information in itself. Attempting to pass a value to such a flag will result in "
|
||||
"a validation error."
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:36
|
||||
msgid "**Примеры флагов с** ``NEITHER``:"
|
||||
msgstr "**Examples of flags with** ``NEITHER``:"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:38
|
||||
msgid "``--help`` — флаг справки"
|
||||
msgstr "``--help`` — help flag"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:39
|
||||
msgid "``--verbose`` — флаг подробного вывода"
|
||||
msgstr "``--verbose`` — verbose output flag"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:40
|
||||
msgid "``--force`` — флаг принудительного выполнения"
|
||||
msgstr "``--force`` — forced execution flag"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:41
|
||||
msgid "``-A`` / ``--all`` — флаг выбора всех элементов"
|
||||
msgstr "``-A`` / ``--all`` — select all items flag"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:43
|
||||
#: ../../root/api/command/possible_values.rst:68
|
||||
msgid "**Пример использования:**"
|
||||
msgstr "**Usage example:**"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:52
|
||||
msgid "ALL"
|
||||
msgstr "ALL"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:59
|
||||
msgid "Указывает, что флаг может принимать **любое** значение."
|
||||
msgstr "Indicates that the flag can accept **any** value."
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:61
|
||||
msgid ""
|
||||
"Флаги с этим значением универсальны и не накладывают ограничений на "
|
||||
"передаваемые данные. Валидация всегда будет успешной."
|
||||
msgstr ""
|
||||
"Flags with this value are universal and do not impose restrictions on the data passed. "
|
||||
"Validation will always be successful."
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:63
|
||||
msgid "**Примеры флагов с** ``ALL``:"
|
||||
msgstr "**Examples of flags with** ``ALL``:"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:65
|
||||
msgid "``--message`` — произвольное текстовое сообщение"
|
||||
msgstr "``--message`` — arbitrary text message"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:66
|
||||
msgid "``--name`` — произвольное имя"
|
||||
msgstr "``--name`` — arbitrary name"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:77
|
||||
msgid "Параметр possible_values"
|
||||
msgstr "The possible_values Parameter"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:79
|
||||
msgid ""
|
||||
"``PossibleValues`` используется как один из возможных типов для параметра"
|
||||
" ``possible_values`` при создании экземпляра ``Flag``."
|
||||
msgstr ""
|
||||
"``PossibleValues`` is used as one of the possible types for the ``possible_values`` "
|
||||
"parameter when creating a ``Flag`` instance."
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:81
|
||||
msgid "**Доступные типы для** ``possible_values``:"
|
||||
msgstr "**Available types for** ``possible_values``:"
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:83
|
||||
msgid "``PossibleValues.NEITHER``: флаг без значения."
|
||||
msgstr "``PossibleValues.NEITHER``: flag without a value."
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:84
|
||||
msgid "``PossibleValues.ALL``: флаг с любым значением (по умолчанию)."
|
||||
msgstr "``PossibleValues.ALL``: flag with any value (default)."
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:85
|
||||
msgid "``list[str]``: флаг с ограниченным набором значений."
|
||||
msgstr "``list[str]``: flag with a limited set of values."
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:86
|
||||
msgid "``Pattern[str]``: флаг со значением, проверяемым по регулярному выражению."
|
||||
msgstr "``Pattern[str]``: flag with a value validated by a regular expression."
|
||||
|
||||
#: ../../root/api/command/possible_values.rst:88
|
||||
msgid "**Пример комбинированного использования:**"
|
||||
msgstr "**Combined usage example:**"
|
||||
|
||||
@@ -0,0 +1,165 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-02 22:27+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:4
|
||||
msgid "ValidationStatus"
|
||||
msgstr "ValidationStatus"
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:6
|
||||
msgid ""
|
||||
"``ValidationStatus`` — это перечисление, которое определяет состояние "
|
||||
"валидации флага. Его задача — предоставить стандартные константы для "
|
||||
"отображения результата проверки. ``ValidationStatus`` используется в "
|
||||
"атрибуте ``status`` класса ``InputFlag``."
|
||||
msgstr ""
|
||||
"``ValidationStatus`` is an enumeration that defines the validation state of a flag. "
|
||||
"Its purpose is to provide standard constants for displaying the validation result. "
|
||||
"``ValidationStatus`` is used in the ``status`` attribute of the ``InputFlag`` class."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:8
|
||||
msgid ""
|
||||
"``ValidationStatus`` содержит три значения: **VALID** (корректный флаг), "
|
||||
"**INVALID** (некорректный) и **UNDEFINED** (незарегистрированный)."
|
||||
msgstr ""
|
||||
"``ValidationStatus`` contains three values: **VALID** (valid flag), "
|
||||
"**INVALID** (invalid), and **UNDEFINED** (unregistered)."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:12
|
||||
msgid ""
|
||||
"Статус валидации устанавливается автоматически при создании экземпляра "
|
||||
"``InputFlag`` на основе правил, заданных в соответствующем ``Flag``."
|
||||
msgstr ""
|
||||
"The validation status is set automatically when creating an ``InputFlag`` instance "
|
||||
"based on the rules defined in the corresponding ``Flag``."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:16
|
||||
msgid ""
|
||||
"Документация по :ref:`InputFlag <root_api_command_input_flag>` — класс "
|
||||
"введённого флага, использующий ``ValidationStatus``."
|
||||
msgstr ""
|
||||
"Documentation for :ref:`InputFlag <root_api_command_input_flag>` — entered flag class "
|
||||
"using ``ValidationStatus``."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:18
|
||||
msgid ""
|
||||
"Документация по :ref:`Flag <root_api_command_flag>` — класс флага с "
|
||||
"правилами валидации."
|
||||
msgstr ""
|
||||
"Documentation for :ref:`Flag <root_api_command_flag>` — flag class with "
|
||||
"validation rules."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:20
|
||||
msgid ""
|
||||
"Документация по :ref:`PossibleValues <root_api_command_possible_values>` "
|
||||
"— типы допустимых значений."
|
||||
msgstr ""
|
||||
"Documentation for :ref:`PossibleValues <root_api_command_possible_values>` "
|
||||
"— types of allowed values."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:25
|
||||
msgid "VALID"
|
||||
msgstr "VALID"
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:32
|
||||
msgid "Указывает, что флаг и его значение **прошли** валидацию."
|
||||
msgstr "Indicates that the flag and its value **passed** validation."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:34
|
||||
msgid ""
|
||||
"Флаги с этим статусом соответствуют правилам, заданным в "
|
||||
"``possible_values`` соответствующего ``Flag``. Их можно безопасно "
|
||||
"использовать в логике приложения без дополнительных проверок."
|
||||
msgstr ""
|
||||
"Flags with this status comply with the rules defined in the ``possible_values`` "
|
||||
"of the corresponding ``Flag``. They can be safely used in application logic without "
|
||||
"additional checks."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:36
|
||||
msgid "**Условия получения статуса** ``VALID``:"
|
||||
msgstr "**Conditions for receiving** ``VALID`` **status:**"
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:38
|
||||
msgid "Флаг с ``PossibleValues.NEITHER`` передан без значения."
|
||||
msgstr "Flag with ``PossibleValues.NEITHER`` passed without a value."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:39
|
||||
msgid "Флаг с ``PossibleValues.ALL`` передан с любым значением или без него."
|
||||
msgstr "Flag with ``PossibleValues.ALL`` passed with any value or without one."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:40
|
||||
msgid "Значение флага входит в список разрешённых."
|
||||
msgstr "Flag value is in the list of allowed values."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:41
|
||||
msgid "Значение флага соответствует регулярному выражению."
|
||||
msgstr "Flag value matches the regular expression."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:46
|
||||
msgid "INVALID"
|
||||
msgstr "INVALID"
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:53
|
||||
msgid "Указывает, что флаг или его значение **не прошли** валидацию."
|
||||
msgstr "Indicates that the flag or its value **did not pass** validation."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:55
|
||||
msgid ""
|
||||
"Флаги с этим статусом нарушают правила, заданные в ``possible_values`` "
|
||||
"соответствующего ``Flag``. Их следует обрабатывать как ошибочные."
|
||||
msgstr ""
|
||||
"Flags with this status violate the rules defined in the ``possible_values`` "
|
||||
"of the corresponding ``Flag``. They should be treated as erroneous."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:57
|
||||
msgid "**Условия получения статуса** ``INVALID``:"
|
||||
msgstr "**Conditions for receiving** ``INVALID`` **status:**"
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:59
|
||||
msgid "Флаг с ``PossibleValues.NEITHER`` передан со значением."
|
||||
msgstr "Flag with ``PossibleValues.NEITHER`` passed with a value."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:60
|
||||
msgid "Значение флага не входит в список разрешённых."
|
||||
msgstr "Flag value is not in the list of allowed values."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:61
|
||||
msgid "Значение флага не соответствует регулярному выражению."
|
||||
msgstr "Flag value does not match the regular expression."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:62
|
||||
msgid "Флаг требует значение, но передан без него."
|
||||
msgstr "Flag requires a value but was passed without one."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:67
|
||||
msgid "UNDEFINED"
|
||||
msgstr "UNDEFINED"
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:74
|
||||
msgid "Указывает, что введённый флаг не был зарегистрирован в команде."
|
||||
msgstr "Indicates that the entered flag was not registered in the command."
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:76
|
||||
msgid "**Условия получения статуса** ``UNDEFINED``:"
|
||||
msgstr "**Conditions for receiving** ``UNDEFINED`` **status:**"
|
||||
|
||||
#: ../../root/api/command/validation_status.rst:78
|
||||
msgid "Введённый флаг не найден среди зарегистрированных для данной команды."
|
||||
msgstr "The entered flag is not found among those registered for this command."
|
||||
|
||||
@@ -0,0 +1,217 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-02 22:27+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/index.rst:5
|
||||
msgid "Публичное API"
|
||||
msgstr "Public API"
|
||||
|
||||
#: ../../root/api/index.rst:8
|
||||
msgid "Описание раздела"
|
||||
msgstr "Section Description"
|
||||
|
||||
#: ../../root/api/index.rst:10
|
||||
msgid "В этом разделе описан публичный API библиотеки. Он включает:"
|
||||
msgstr "This section describes the library's public API. It includes:"
|
||||
|
||||
#: ../../root/api/index.rst:12
|
||||
msgid "Классы и функции для интеграции в ваши приложения."
|
||||
msgstr "Classes and functions for integration into your applications."
|
||||
|
||||
#: ../../root/api/index.rst:13
|
||||
msgid "Рекомендации по использованию и поддерживаемые сценарии."
|
||||
msgstr "Usage recommendations and supported scenarios."
|
||||
|
||||
#: ../../root/api/index.rst:14
|
||||
msgid "Примеры кода, подробные сигнатуры и описание возвращаемых значений."
|
||||
msgstr "Code examples, detailed signatures, and descriptions of return values."
|
||||
|
||||
#: ../../root/api/index.rst:15
|
||||
msgid "Гарантии стабильности и обратной совместимости."
|
||||
msgstr "Stability and backward compatibility guarantees."
|
||||
|
||||
#: ../../root/api/index.rst:17
|
||||
msgid ""
|
||||
"Интерфейсы, не описанные в этом разделе, считаются внутренними. Их "
|
||||
"использование может привести к ошибкам при обновлении библиотеки. При "
|
||||
"разработке собственных решений используйте только компоненты, описанные "
|
||||
"здесь. Это обеспечит стабильность и совместимость ваших продуктов с "
|
||||
"будущими версиями ``Argenta``."
|
||||
msgstr ""
|
||||
"Interfaces not described in this section are considered internal. Using them may "
|
||||
"lead to errors when updating the library. When developing your own solutions, use "
|
||||
"only the components described here. This will ensure the stability and compatibility "
|
||||
"of your products with future versions of ``Argenta``."
|
||||
|
||||
#: ../../root/api/index.rst:22
|
||||
msgid "Публичные импорты"
|
||||
msgstr "Public Imports"
|
||||
|
||||
#: ../../root/api/index.rst:24
|
||||
msgid ""
|
||||
"Все основные компоненты библиотеки доступны для прямого импорта из "
|
||||
"корневого пакета ``argenta`` или его подмодулей."
|
||||
msgstr ""
|
||||
"All main library components are available for direct import from the root package "
|
||||
"``argenta`` or its submodules."
|
||||
|
||||
#: ../../root/api/index.rst:27
|
||||
msgid "Основные компоненты"
|
||||
msgstr "Main Components"
|
||||
|
||||
#: ../../root/api/index.rst:32
|
||||
msgid ""
|
||||
":ref:`App <root_api_app_index>` — Объект приложения, который отвечает за "
|
||||
"логику роутинга, настройки, валидации и т.д."
|
||||
msgstr ""
|
||||
":ref:`App <root_api_app_index>` — Application object responsible for routing logic, "
|
||||
"settings, validation, etc."
|
||||
|
||||
#: ../../root/api/index.rst:33
|
||||
msgid ""
|
||||
":ref:`Orchestrator <root_api_orchestrator_index>` — Класс для "
|
||||
"конфигурирования и запуска всего приложения."
|
||||
msgstr ""
|
||||
":ref:`Orchestrator <root_api_orchestrator_index>` — Class for configuring and "
|
||||
"launching the entire application."
|
||||
|
||||
#: ../../root/api/index.rst:34
|
||||
msgid ""
|
||||
":ref:`Router <root_api_router>` — Класс для группировки и регистрации "
|
||||
"команд."
|
||||
msgstr ":ref:`Router <root_api_router>` — Class for grouping and registering commands."
|
||||
|
||||
#: ../../root/api/index.rst:35
|
||||
msgid ""
|
||||
":ref:`Command <root_api_command_index>` — Класс для создания команд при "
|
||||
"инициализации хэндлеров."
|
||||
msgstr ""
|
||||
":ref:`Command <root_api_command_index>` — Class for creating commands when "
|
||||
"initializing handlers."
|
||||
|
||||
#: ../../root/api/index.rst:36
|
||||
msgid ""
|
||||
":ref:`Response <root_api_response>` — Объект ответа, передаваемый в "
|
||||
"обработчики."
|
||||
msgstr ":ref:`Response <root_api_response>` — Response object passed to handlers."
|
||||
|
||||
#: ../../root/api/index.rst:39
|
||||
msgid "Команды и флаги"
|
||||
msgstr "Commands and Flags"
|
||||
|
||||
#: ../../root/api/index.rst:52
|
||||
msgid ":ref:`Flag <root_api_command_flag>` — Класс для описания флага."
|
||||
msgstr ":ref:`Flag <root_api_command_flag>` — Class for describing a flag."
|
||||
|
||||
#: ../../root/api/index.rst:53
|
||||
msgid ":ref:`Flags <root_api_command_flags>` — Коллекция для регистрации флагов."
|
||||
msgstr ":ref:`Flags <root_api_command_flags>` — Collection for registering flags."
|
||||
|
||||
#: ../../root/api/index.rst:54
|
||||
msgid ""
|
||||
":ref:`InputFlag <root_api_command_input_flag>` — Класс для введённого "
|
||||
"пользователем флага."
|
||||
msgstr ""
|
||||
":ref:`InputFlag <root_api_command_input_flag>` — Class for a user-entered flag."
|
||||
|
||||
#: ../../root/api/index.rst:55
|
||||
msgid ""
|
||||
":ref:`InputFlags <root_api_command_input_flags>` — Коллекция введённых "
|
||||
"флагов."
|
||||
msgstr ":ref:`InputFlags <root_api_command_input_flags>` — Collection of entered flags."
|
||||
|
||||
#: ../../root/api/index.rst:56
|
||||
msgid ""
|
||||
":ref:`PossibleValues <root_api_command_possible_values>` — Правила "
|
||||
"валидации значений флага."
|
||||
msgstr ""
|
||||
":ref:`PossibleValues <root_api_command_possible_values>` — Validation rules for "
|
||||
"flag values."
|
||||
|
||||
#: ../../root/api/index.rst:57
|
||||
msgid ""
|
||||
":ref:`ValidationStatus <root_api_command_validation_status>` — Статусы "
|
||||
"валидации флагов."
|
||||
msgstr ""
|
||||
":ref:`ValidationStatus <root_api_command_validation_status>` — Flag validation statuses."
|
||||
|
||||
#: ../../root/api/index.rst:58
|
||||
msgid ""
|
||||
":ref:`PredefinedFlags <root_api_command_flag_predefined_flags>` — "
|
||||
"Коллекция предопределённых флагов."
|
||||
msgstr ""
|
||||
":ref:`PredefinedFlags <root_api_command_flag_predefined_flags>` — Collection of "
|
||||
"predefined flags."
|
||||
|
||||
#: ../../root/api/index.rst:61
|
||||
msgid "Настройка приложения"
|
||||
msgstr "Application Configuration"
|
||||
|
||||
#: ../../root/api/index.rst:71
|
||||
msgid ""
|
||||
":ref:`AutoCompleter <root_api_app_autocompleter>` - Класс для настройки "
|
||||
"автодополнения."
|
||||
msgstr ""
|
||||
":ref:`AutoCompleter <root_api_app_autocompleter>` - Class for configuring "
|
||||
"autocompletion."
|
||||
|
||||
#: ../../root/api/index.rst:72
|
||||
msgid ""
|
||||
":ref:`StaticDividingLine <root_api_app_dividing_lines>` — Статическая "
|
||||
"разделительная линия для оформления вывода."
|
||||
msgstr ""
|
||||
":ref:`StaticDividingLine <root_api_app_dividing_lines>` — Static dividing line for "
|
||||
"output formatting."
|
||||
|
||||
#: ../../root/api/index.rst:73
|
||||
#: ../../root/api/index.rst:73
|
||||
msgid ""
|
||||
":ref:`DynamicDividingLine <root_api_app_dividing_lines>` — Динамическая "
|
||||
"разделительная линия для оформления вывода."
|
||||
msgstr ""
|
||||
":ref:`DynamicDividingLine <root_api_app_dividing_lines>` — Dynamic dividing line "
|
||||
"for output formatting."
|
||||
#: ../../root/api/index.rst:74
|
||||
msgid ""
|
||||
":ref:`PredefinedMessages <root_api_predefined_messages>` — Готовые "
|
||||
"сообщения для вывода при старте приложения."
|
||||
msgstr ""
|
||||
":ref:`PredefinedMessages <root_api_predefined_messages>` — Ready-made messages for "
|
||||
"output at application startup."
|
||||
|
||||
#: ../../root/api/index.rst:77
|
||||
msgid "Внедрение зависимостей"
|
||||
msgstr "Dependency Injection"
|
||||
|
||||
#: ../../root/api/index.rst:85
|
||||
msgid ""
|
||||
":ref:`FromDishka <root_dependency_injection>` — Маркер аргумента функции "
|
||||
"как зависимости, которая должна быть инжектирована."
|
||||
msgstr ""
|
||||
":ref:`FromDishka <root_dependency_injection>` — Marker for a function argument as a "
|
||||
"dependency that should be injected."
|
||||
|
||||
#: ../../root/api/index.rst:86
|
||||
msgid ""
|
||||
":ref:`inject <root_dependency_injection>` — Декоратор для инжектирования "
|
||||
"зависимостей, указанных в сигнатуре."
|
||||
msgstr ""
|
||||
":ref:`inject <root_dependency_injection>` — Decorator for injecting dependencies "
|
||||
"specified in the signature."
|
||||
|
||||
@@ -0,0 +1,154 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-02 22:29+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:4
|
||||
msgid "ArgParser"
|
||||
msgstr "ArgParser"
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:6
|
||||
msgid ""
|
||||
"``ArgParser`` предназначен для обработки **аргументов командной строки**,"
|
||||
" передаваемых приложению при запуске. Важно не путать их с флагами, "
|
||||
"которые пользователь вводит в интерактивном режиме. ``ArgParser`` "
|
||||
"позволяет получать внешнюю конфигурацию в момент старта (например, путь к"
|
||||
" файлу настроек, флаги отладки или режим запуска)."
|
||||
msgstr ""
|
||||
"``ArgParser`` is designed for processing **command-line arguments** passed to the "
|
||||
"application at startup. It's important not to confuse them with flags that the user "
|
||||
"enters in interactive mode. ``ArgParser`` allows receiving external configuration at "
|
||||
"startup (e.g., path to settings file, debug flags, or launch mode)."
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:11
|
||||
msgid "Инициализация"
|
||||
msgstr "Initialization"
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:21
|
||||
msgid "Создаёт экземпляр парсера аргументов командной строки."
|
||||
msgstr "Creates an instance of the command-line argument parser."
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:23
|
||||
msgid ""
|
||||
"``processed_args``: Список аргументов для обработки при запуске "
|
||||
"приложения. Подробнее см. :ref:`здесь <root_api_orchestrator_arguments>`."
|
||||
msgstr ""
|
||||
"``processed_args``: List of arguments to process at application startup. "
|
||||
"For more details, see :ref:`here <root_api_orchestrator_arguments>`."
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:24
|
||||
msgid "``name``: Имя приложения для отображения в справке."
|
||||
msgstr "``name``: Application name for display in help."
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:25
|
||||
msgid "``description``: Описание приложения для отображения в справке."
|
||||
msgstr "``description``: Application description for display in help."
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:26
|
||||
msgid "``epilog``: Дополнительная информация для отображения в конце справки."
|
||||
msgstr "``epilog``: Additional information for display at the end of help."
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:31
|
||||
msgid "Атрибуты"
|
||||
msgstr "Attributes"
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:35
|
||||
msgid ""
|
||||
"Экземпляр ``ArgSpace``, содержащий все обработанные аргументы командной "
|
||||
"строки. Подробнее см. :ref:`здесь <root_api_orchestrator_argspace>`."
|
||||
msgstr ""
|
||||
"``ArgSpace`` instance containing all processed command-line arguments. "
|
||||
"For more details, see :ref:`here <root_api_orchestrator_argspace>`."
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:38
|
||||
msgid ""
|
||||
"До инициализации ``Orchestrator``, в конструктор которого был передан "
|
||||
"экземпляр ``ArgParser``, атрибут ``parsed_argspace`` будет содержать "
|
||||
"пустой ``ArgSpace``."
|
||||
msgstr ""
|
||||
"Before initializing ``Orchestrator``, to whose constructor an ``ArgParser`` instance "
|
||||
"was passed, the ``parsed_argspace`` attribute will contain an empty ``ArgSpace``."
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:40
|
||||
msgid ""
|
||||
"Парсинг и валидация аргументов происходят при инициализации "
|
||||
"``Orchestrator``, поэтому использовать ``parsed_argspace`` "
|
||||
"**целесообразно только после** этого."
|
||||
msgstr ""
|
||||
"Parsing and validation of arguments occur during ``Orchestrator`` initialization, "
|
||||
"so using ``parsed_argspace`` is **advisable only after** that."
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:45
|
||||
msgid "Лучшие практики"
|
||||
msgstr "Best Practices"
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:47
|
||||
msgid ""
|
||||
"Использовать атрибут ``parsed_argspace`` рекомендуется только на этапе "
|
||||
"настройки приложения. В обработчиках лучшей практикой является получение "
|
||||
"``ArgSpace`` через DI. Подробнее см. :ref:`здесь "
|
||||
"<root_dependency_injection>`."
|
||||
msgstr ""
|
||||
"Using the ``parsed_argspace`` attribute is recommended only during the application "
|
||||
"setup phase. In handlers, the best practice is to obtain ``ArgSpace`` through DI. "
|
||||
"For more details, see :ref:`here <root_dependency_injection>`."
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:49
|
||||
msgid "**Пример использования:**"
|
||||
msgstr "**Usage example:**"
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:56
|
||||
msgid "Обработка ошибок"
|
||||
msgstr "Error Handling"
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:59
|
||||
msgid ""
|
||||
"Про типы аргументов подробнее в :ref:`Arguments "
|
||||
"<root_api_orchestrator_arguments>`"
|
||||
msgstr ""
|
||||
"For more details on argument types, see :ref:`Arguments "
|
||||
"<root_api_orchestrator_arguments>`"
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:61
|
||||
msgid ""
|
||||
"При работе с аргументами командной строки стандартный ``ArgumentParser`` "
|
||||
"автоматически обрабатывает следующие ситуации:"
|
||||
msgstr ""
|
||||
"When working with command-line arguments, the standard ``ArgumentParser`` "
|
||||
"automatically handles the following situations:"
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:63
|
||||
msgid "**Отсутствие обязательного аргумента:**"
|
||||
msgstr "**Missing required argument:**"
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:71
|
||||
msgid "**Недопустимое значение из списка possible_values:**"
|
||||
msgstr "**Invalid value from possible_values list:**"
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:79
|
||||
msgid "**Использование устаревшего аргумента:**"
|
||||
msgstr "**Using a deprecated argument:**"
|
||||
|
||||
#: ../../root/api/orchestrator/argparser.rst:81
|
||||
msgid ""
|
||||
"При использовании аргумента с ``is_deprecated=True`` выводится "
|
||||
"предупреждение, но выполнение продолжается:"
|
||||
msgstr ""
|
||||
"When using an argument with ``is_deprecated=True``, a warning is displayed, "
|
||||
"but execution continues:"
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-04 20:39+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:4
|
||||
msgid "ArgSpace"
|
||||
msgstr "ArgSpace"
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:6
|
||||
msgid ""
|
||||
"``ArgSpace`` — это контейнер для хранения и управления обработанными "
|
||||
"аргументами командной строки. Его основная задача — предоставить удобный "
|
||||
"интерфейс для доступа к значениям, переданным при запуске приложения."
|
||||
msgstr ""
|
||||
"``ArgSpace`` is a container for storing and managing processed command-"
|
||||
"line arguments. Its main purpose is to provide a convenient interface for"
|
||||
" accessing values passed at application startup."
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:8
|
||||
msgid ""
|
||||
"``ArgSpace`` создаётся автоматически после обработки аргументов с помощью"
|
||||
" ``ArgParser`` и содержит коллекцию объектов ``InputArgument``."
|
||||
msgstr ""
|
||||
"``ArgSpace`` is created automatically after processing arguments using "
|
||||
"``ArgParser`` and contains a collection of ``InputArgument`` objects."
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:13
|
||||
msgid "Инициализация"
|
||||
msgstr "Initialization"
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:15
|
||||
msgid ""
|
||||
"Создание экземпляров класса ``ArgSpace`` происходит под `капотом`, вам не"
|
||||
" нужно создавать их вручную."
|
||||
msgstr ""
|
||||
"Creation of ``ArgSpace`` class instances happens under the hood, you "
|
||||
"don't need to create them manually."
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:17
|
||||
msgid "**Атрибуты:**"
|
||||
msgstr "**Attributes:**"
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:21
|
||||
msgid "Список всех обработанных аргументов типа ``InputArgument``."
|
||||
msgstr "List of all processed arguments of type ``InputArgument``."
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:26
|
||||
msgid "Методы"
|
||||
msgstr "Methods"
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:29
|
||||
msgid "get_by_name"
|
||||
msgstr "get_by_name"
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:36
|
||||
msgid "Возвращает аргумент по имени."
|
||||
msgstr "Returns an argument by name."
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst
|
||||
msgid "param name"
|
||||
msgstr "param name"
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:38
|
||||
msgid "Имя искомого аргумента."
|
||||
msgstr "Name of the argument to search for."
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst
|
||||
msgid "return"
|
||||
msgstr "return"
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:39
|
||||
msgid "Объект ``InputArgument`` или ``None``, если аргумент не найден."
|
||||
msgstr "``InputArgument`` object or ``None`` if the argument is not found."
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:41
|
||||
#: ../../root/api/orchestrator/argspace.rst:63
|
||||
#: ../../root/api/orchestrator/argspace.rst:90
|
||||
msgid "**Пример использования:**"
|
||||
msgstr "**Usage example:**"
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:49
|
||||
msgid "get_by_type"
|
||||
msgstr "get_by_type"
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:56
|
||||
msgid "Возвращает все аргументы определённого типа."
|
||||
msgstr "Returns all arguments of a specific type."
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst
|
||||
msgid "param arg_type"
|
||||
msgstr "param arg_type"
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:58
|
||||
msgid "Тип аргумента (``BooleanArgument`` или ``ValueArgument``)."
|
||||
msgstr "Argument type (``BooleanArgument`` or ``ValueArgument``)."
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:59
|
||||
msgid "Список аргументов указанного типа или пустой список."
|
||||
msgstr "List of arguments of the specified type or an empty list."
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:61
|
||||
msgid ""
|
||||
"Метод фильтрует ``all_arguments`` по атрибуту ``founder_class`` и "
|
||||
"возвращает аргументы, созданные из указанного типа."
|
||||
msgstr ""
|
||||
"The method filters ``all_arguments`` by the ``founder_class`` attribute "
|
||||
"and returns arguments created from the specified type."
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:71
|
||||
msgid "InputArgument"
|
||||
msgstr "InputArgument"
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:74
|
||||
msgid ""
|
||||
"Документация по ``InputArgument`` находится :ref:`здесь "
|
||||
"<root_api_orchestrator_arguments_inputargument>`."
|
||||
msgstr ""
|
||||
"Documentation for ``InputArgument`` is located :ref:`here "
|
||||
"<root_api_orchestrator_arguments_inputargument>`."
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:79
|
||||
msgid "Примеры использования"
|
||||
msgstr "Usage Examples"
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:81
|
||||
msgid ""
|
||||
"``ArgSpace`` используется для доступа к значениям аргументов после "
|
||||
"запуска приложения. Типичный сценарий включает обработку аргументов через"
|
||||
" ``ArgParser`` и последующее извлечение значений из ``ArgSpace``."
|
||||
msgstr ""
|
||||
"``ArgSpace`` is used to access argument values after the application "
|
||||
"starts. A typical scenario includes processing arguments through "
|
||||
"``ArgParser`` and subsequent extraction of values from ``ArgSpace``."
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:83
|
||||
msgid "**Полный пример:**"
|
||||
msgstr "**Complete example:**"
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:88
|
||||
msgid ""
|
||||
"Доступ к аргументам из обработчиков осуществляется с помощью DI. "
|
||||
"Подробнее см. :ref:`здесь <root_dependency_injection>`."
|
||||
msgstr ""
|
||||
"Access to arguments from handlers is done using DI. For more details, see"
|
||||
" :ref:`here <root_dependency_injection>`."
|
||||
|
||||
#: ../../root/api/orchestrator/argspace.rst:95
|
||||
msgid "**Запуск приложения:**"
|
||||
msgstr "**Running the application:**"
|
||||
|
||||
@@ -0,0 +1,227 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-02 22:27+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:4
|
||||
msgid "Arguments"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:6
|
||||
msgid ""
|
||||
"Модуль ``Arguments`` предоставляет классы для работы с аргументами "
|
||||
"командной строки. Они позволяют настраивать поведение приложения в момент"
|
||||
" его запуска, передавая различные параметры конфигурации."
|
||||
msgstr ""
|
||||
"The ``Arguments`` module provides classes for working with command-line arguments. "
|
||||
"They allow configuring application behavior at startup by passing various configuration parameters."
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:8
|
||||
msgid ""
|
||||
"Аргументы регистрируются в ``ArgParser`` и после обработки становятся "
|
||||
"доступными в объекте ``ArgSpace``."
|
||||
msgstr ""
|
||||
"Arguments are registered in ``ArgParser`` and after processing become available in the ``ArgSpace`` object."
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:13
|
||||
msgid "ValueArgument"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:15
|
||||
msgid "Класс для аргументов, требующих передачи значения."
|
||||
msgstr "Class for arguments that require passing a value."
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:31
|
||||
msgid "Создаёт аргумент командной строки, требующий значения."
|
||||
msgstr "Creates a command-line argument that requires a value."
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst
|
||||
msgid "param name"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:33
|
||||
#: ../../root/api/orchestrator/arguments.rst:74
|
||||
#: ../../root/api/orchestrator/arguments.rst:117
|
||||
msgid "Имя аргумента"
|
||||
msgstr "Argument name"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst
|
||||
msgid "param prefix"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:34
|
||||
#: ../../root/api/orchestrator/arguments.rst:75
|
||||
msgid "Префикс (по умолчанию ``--``)"
|
||||
msgstr "Prefix (defaults to ``--``)"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst
|
||||
msgid "param help"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:35
|
||||
#: ../../root/api/orchestrator/arguments.rst:76
|
||||
msgid "Сообщение для справки (``--help``)"
|
||||
msgstr "Help message (``--help``)"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst
|
||||
msgid "param possible_values"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:36
|
||||
msgid "Список допустимых значений"
|
||||
msgstr "List of allowed values"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst
|
||||
msgid "param default"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:37
|
||||
msgid "Значение по умолчанию, если аргумент не передан"
|
||||
msgstr "Default value if the argument is not passed"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst
|
||||
msgid "param is_required"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:38
|
||||
msgid ""
|
||||
"Если ``True``, аргумент становится обязательным. Если не передать при "
|
||||
"запуске, приложение не запустится"
|
||||
msgstr ""
|
||||
"If ``True``, the argument becomes required. If not passed at startup, the application will not start"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst
|
||||
msgid "param is_deprecated"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:39
|
||||
msgid ""
|
||||
"Если ``True``, помечает аргумент как устаревший. Если передать при "
|
||||
"запуске, будет выведено предупреждение в консоль"
|
||||
msgstr ""
|
||||
"If ``True``, marks the argument as deprecated. If passed at startup, a warning will be displayed in the console"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:41
|
||||
#: ../../root/api/orchestrator/arguments.rst:79
|
||||
msgid "**Пример использования:**"
|
||||
msgstr "**Usage example:**"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:47
|
||||
#: ../../root/api/orchestrator/arguments.rst:85
|
||||
msgid "**Запуск приложения:**"
|
||||
msgstr "**Running the application:**"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:57
|
||||
msgid "BooleanArgument"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:59
|
||||
msgid ""
|
||||
"Класс для булевых аргументов, не требующих значения. Их наличие при "
|
||||
"запуске устанавливает значение в **True**, отсутствие — в **False**."
|
||||
msgstr ""
|
||||
"Class for boolean arguments that do not require a value. Their presence at startup "
|
||||
"sets the value to **True**, absence to **False**."
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:72
|
||||
msgid "Создаёт булев аргумент командной строки без значения."
|
||||
msgstr "Creates a boolean command-line argument without a value."
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:77
|
||||
msgid "Если ``True``, помечает аргумент как устаревший"
|
||||
msgstr "If ``True``, marks the argument as deprecated"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:98
|
||||
msgid "InputArgument"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:101
|
||||
msgid ""
|
||||
"``InputArgument`` напрямую связан с контейнером ``ArgSpace`` и является "
|
||||
"его наполнителем. Подробнее о нём см. :ref:`здесь "
|
||||
"<root_api_orchestrator_argspace>`."
|
||||
msgstr ""
|
||||
"``InputArgument`` is directly related to the ``ArgSpace`` container and serves as its filler. "
|
||||
"For more details, see :ref:`here <root_api_orchestrator_argspace>`."
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:103
|
||||
msgid ""
|
||||
"Представляет собой обработанный аргумент командной строки. Этот класс "
|
||||
"используется внутри ``ArgSpace`` для хранения значений, полученных после "
|
||||
"парсинга."
|
||||
msgstr ""
|
||||
"Represents a processed command-line argument. This class is used inside ``ArgSpace`` "
|
||||
"to store values obtained after parsing."
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:115
|
||||
msgid "Создаёт экземпляр обработанного входного аргумента."
|
||||
msgstr "Creates an instance of a processed input argument."
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst
|
||||
msgid "param value"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:118
|
||||
msgid ""
|
||||
"Значение аргумента. Для ``BooleanArgument`` — **True**, если аргумент "
|
||||
"передан, и **False**, если нет; для ``ValueArgument`` — введённая строка"
|
||||
msgstr ""
|
||||
"Argument value. For ``BooleanArgument`` — **True** if the argument is passed, and **False** if not; "
|
||||
"for ``ValueArgument`` — the entered string"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst
|
||||
msgid "param founder_class"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:119
|
||||
msgid ""
|
||||
"Класс-родитель, из которого был создан аргумент (``BooleanArgument`` или "
|
||||
"``ValueArgument``)"
|
||||
msgstr ""
|
||||
"Parent class from which the argument was created (``BooleanArgument`` or ``ValueArgument``)"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:121
|
||||
msgid "**Атрибуты:**"
|
||||
msgstr "**Attributes:**"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:125
|
||||
msgid ""
|
||||
"Имя аргумента, указанное при создании ``ValueArgument`` или "
|
||||
"``BooleanArgument``."
|
||||
msgstr ""
|
||||
"Argument name specified when creating ``ValueArgument`` or ``BooleanArgument``."
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:129
|
||||
msgid "Значение аргумента. Тип зависит от исходного класса:"
|
||||
msgstr "Argument value. Type depends on the source class:"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:131
|
||||
msgid "Для ``BooleanArgument``: **True**, если аргумент был передан"
|
||||
msgstr "For ``BooleanArgument``: **True** if the argument was passed"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:132
|
||||
msgid ""
|
||||
"Для ``ValueArgument``: строка с переданным значением или значением по "
|
||||
"умолчанию"
|
||||
msgstr ""
|
||||
"For ``ValueArgument``: string with the passed value or default value"
|
||||
|
||||
#: ../../root/api/orchestrator/arguments.rst:136
|
||||
msgid "Ссылка на класс-родитель. Используется для определения типа и фильтрации."
|
||||
msgstr "Reference to the parent class. Used for type determination and filtering."
|
||||
|
||||
@@ -0,0 +1,128 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-04 20:39+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst:4
|
||||
msgid "Orchestrator"
|
||||
msgstr "Orchestrator"
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst:6
|
||||
msgid ""
|
||||
"``Orchestrator`` — это высокоуровневый компонент, который конфигурирует и"
|
||||
" оркестрирует приложение, парсер командной строки, DI и остальные "
|
||||
"компоненты, находящиеся по иерархии на уровне с ``App``."
|
||||
msgstr ""
|
||||
"``Orchestrator`` is a high-level component that configures and "
|
||||
"orchestrates the application, command-line parser, DI, and other "
|
||||
"components at the same hierarchical level as ``App``."
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst:8
|
||||
msgid ""
|
||||
"В то время как ``App`` отвечает за логику интерактивной сессии (ввод "
|
||||
"команд, маршрутизация), ``Orchestrator`` подготавливает окружение для его"
|
||||
" работы и служит точкой входа в приложение."
|
||||
msgstr ""
|
||||
"While ``App`` is responsible for interactive session logic (command "
|
||||
"input, routing), ``Orchestrator`` prepares the environment for its "
|
||||
"operation and serves as the entry point to the application."
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst:13
|
||||
msgid "Инициализация"
|
||||
msgstr "Initialization"
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst:28
|
||||
msgid "Создаёт и конфигурирует экземпляр ``Orchestrator``."
|
||||
msgstr "Creates and configures an ``Orchestrator`` instance."
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst:30
|
||||
msgid ""
|
||||
"``arg_parser``: Экземпляр ``ArgParser``, отвечающий за парсинг аргументов"
|
||||
" командной строки при запуске скрипта (не путать с командами в "
|
||||
"интерактивном режиме)."
|
||||
msgstr ""
|
||||
"``arg_parser``: ``ArgParser`` instance responsible for parsing command-"
|
||||
"line arguments at script startup (not to be confused with commands in "
|
||||
"interactive mode)."
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst:31
|
||||
msgid ""
|
||||
"``custom_providers``: Список пользовательских провайдеров "
|
||||
"``dishka.Provider`` для добавления ваших сервисов (например, подключений "
|
||||
"к БД или API-клиентов) в di-контейнер."
|
||||
msgstr ""
|
||||
"``custom_providers``: List of custom ``dishka.Provider`` providers for "
|
||||
"adding your services (e.g., database connections or API clients) to the "
|
||||
"DI container."
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst:32
|
||||
msgid ""
|
||||
"``auto_inject_handlers``: Если **True** (по умолчанию), ``dishka`` "
|
||||
"автоматически внедрит зависимости в обработчики команд, инспектируя их "
|
||||
"сигнатуры."
|
||||
msgstr ""
|
||||
"``auto_inject_handlers``: If **True** (default), ``dishka`` will "
|
||||
"automatically inject dependencies into command handlers by inspecting "
|
||||
"their signatures."
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst:37
|
||||
msgid "Основные методы"
|
||||
msgstr "Main Methods"
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst:41
|
||||
msgid ""
|
||||
"Это главный метод, который запускает приложение. Он запускает бесконечный"
|
||||
" цикл ввода -> вывода."
|
||||
msgstr ""
|
||||
"This is the main method that starts the application. It launches an "
|
||||
"infinite input -> output loop."
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst
|
||||
msgid "Parameters"
|
||||
msgstr "Parameters"
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst:43
|
||||
msgid "Экземпляр ``App``, который будет запущен."
|
||||
msgstr "``App`` instance to be launched."
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst:48
|
||||
msgid "Назначение и использование"
|
||||
msgstr "Purpose and Usage"
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst:50
|
||||
msgid ""
|
||||
"``Orchestrator`` абстрагирует сложность, связанную с настройкой DI и "
|
||||
"парсингом стартовых аргументов."
|
||||
msgstr ""
|
||||
"``Orchestrator`` abstracts the complexity associated with setting up DI "
|
||||
"and parsing startup arguments."
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst:52
|
||||
msgid ""
|
||||
"Такой подход разделяет ответственности: ``App`` отвечает за логику "
|
||||
"интерактивной сессии, а ``Orchestrator`` — за подготовку окружения и "
|
||||
"запуск приложения."
|
||||
msgstr ""
|
||||
"This approach separates responsibilities: ``App`` is responsible for "
|
||||
"interactive session logic, while ``Orchestrator`` handles environment "
|
||||
"preparation and application launch."
|
||||
|
||||
#: ../../root/api/orchestrator/index.rst:54
|
||||
msgid "**Пример использования:**"
|
||||
msgstr "**Usage example:**"
|
||||
|
||||
@@ -0,0 +1,185 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-02 22:27+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/response.rst:4
|
||||
msgid "Response"
|
||||
msgstr "Response"
|
||||
|
||||
#: ../../root/api/response.rst:6
|
||||
msgid ""
|
||||
"``Response`` — это объект, который передаётся в обработчик команды. Он "
|
||||
"создаётся автоматически при обработке пользовательского ввода и содержит "
|
||||
"статус валидации, введённые флаги."
|
||||
msgstr ""
|
||||
"``Response`` is an object that is passed to the command handler. It is created "
|
||||
"automatically when processing user input and contains validation status and entered flags."
|
||||
|
||||
#: ../../root/api/response.rst:11
|
||||
msgid ""
|
||||
"Документация по :ref:`InputFlags <root_api_command_input_flags>` — "
|
||||
"коллекция введённых флагов команды."
|
||||
msgstr ""
|
||||
"Documentation for :ref:`InputFlags <root_api_command_input_flags>` — collection of "
|
||||
"entered command flags."
|
||||
|
||||
#: ../../root/api/response.rst:13
|
||||
msgid ""
|
||||
"Документация по :ref:`ResponseStatus <root_api_response_status>` — "
|
||||
"статусы валидации флагов команды."
|
||||
msgstr ""
|
||||
"Documentation for :ref:`ResponseStatus <root_api_response_status>` — command flag "
|
||||
"validation statuses."
|
||||
|
||||
#: ../../root/api/response.rst:15
|
||||
msgid ""
|
||||
"Документация по :ref:`InputFlag <root_api_command_input_flag>` — "
|
||||
"отдельный введённый флаг."
|
||||
msgstr ""
|
||||
"Documentation for :ref:`InputFlag <root_api_command_input_flag>` — individual "
|
||||
"entered flag."
|
||||
|
||||
#: ../../root/api/response.rst:20
|
||||
msgid "Инициализация"
|
||||
msgstr "Initialization"
|
||||
|
||||
#: ../../root/api/response.rst:30
|
||||
msgid "Создаёт новый объект ответа."
|
||||
msgstr "Creates a new response object."
|
||||
|
||||
#: ../../root/api/response.rst:32
|
||||
msgid ""
|
||||
"``status``: Общий статус валидации флагов из перечисления "
|
||||
"``ResponseStatus``."
|
||||
msgstr "``status``: Overall flag validation status from the ``ResponseStatus`` enumeration."
|
||||
|
||||
#: ../../root/api/response.rst:33
|
||||
msgid ""
|
||||
"``input_flags``: Коллекция введённых флагов (``InputFlags``). По "
|
||||
"умолчанию — пустая."
|
||||
msgstr "``input_flags``: Collection of entered flags (``InputFlags``). Empty by default."
|
||||
|
||||
#: ../../root/api/response.rst:36
|
||||
msgid ""
|
||||
"Экземпляры этого класса не предназначены для прямого создания. Они "
|
||||
"автоматически формируются системой и передаются в обработчик команды в "
|
||||
"качестве первого обязательного аргумента."
|
||||
msgstr ""
|
||||
"Instances of this class are not intended for direct creation. They are automatically "
|
||||
"formed by the system and passed to the command handler as the first required argument."
|
||||
|
||||
#: ../../root/api/response.rst:38
|
||||
msgid "**Атрибуты:**"
|
||||
msgstr "**Attributes:**"
|
||||
|
||||
#: ../../root/api/response.rst:43
|
||||
msgid ""
|
||||
"Общий статус валидации всех флагов команды (``ResponseStatus``). "
|
||||
"Указывает, были ли среди введённых флагов некорректные или "
|
||||
"незарегистрированные."
|
||||
msgstr ""
|
||||
"Overall validation status of all command flags (``ResponseStatus``). Indicates "
|
||||
"whether there were any incorrect or unregistered flags among the entered ones."
|
||||
|
||||
#: ../../root/api/response.rst:48
|
||||
msgid ""
|
||||
"Коллекция всех флагов, переданных с командой (``InputFlags``). Содержит "
|
||||
"все обработанные флаги с их значениями и статусами валидации."
|
||||
msgstr ""
|
||||
"Collection of all flags passed with the command (``InputFlags``). Contains all "
|
||||
"processed flags with their values and validation statuses."
|
||||
|
||||
#: ../../root/api/response.rst:50
|
||||
msgid "**Пример использования:**"
|
||||
msgstr "**Usage example:**"
|
||||
|
||||
#: ../../root/api/response.rst:59
|
||||
msgid "Работа с флагами"
|
||||
msgstr "Working with Flags"
|
||||
|
||||
#: ../../root/api/response.rst:61
|
||||
msgid ""
|
||||
"``Response`` предоставляет доступ к введённым флагам через атрибут "
|
||||
"``input_flags``. Вы можете проверять их наличие, получать значения и "
|
||||
"статусы валидации."
|
||||
msgstr ""
|
||||
"``Response`` provides access to entered flags through the ``input_flags`` attribute. "
|
||||
"You can check their presence, get values, and validation statuses."
|
||||
|
||||
#: ../../root/api/response.rst:63
|
||||
msgid "**Пример работы с флагами:**"
|
||||
msgstr "**Example of working with flags:**"
|
||||
|
||||
#: ../../root/api/response.rst:74
|
||||
msgid "ResponseStatus"
|
||||
msgstr "ResponseStatus"
|
||||
|
||||
#: ../../root/api/response.rst:76
|
||||
msgid ""
|
||||
"``ResponseStatus`` — это перечисление, которое определяет общий статус "
|
||||
"валидации всех флагов команды. Используется в атрибуте ``status`` объекта"
|
||||
" ``Response``."
|
||||
msgstr ""
|
||||
"``ResponseStatus`` is an enumeration that defines the overall validation status of "
|
||||
"all command flags. Used in the ``status`` attribute of the ``Response`` object."
|
||||
|
||||
#: ../../root/api/response.rst:79
|
||||
msgid "ALL_FLAGS_VALID"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/response.rst:86
|
||||
msgid ""
|
||||
"Все введённые флаги прошли валидацию. Нет ни некорректных, ни "
|
||||
"незарегистрированных флагов."
|
||||
msgstr ""
|
||||
"All entered flags passed validation. There are no incorrect or unregistered flags."
|
||||
|
||||
#: ../../root/api/response.rst:89
|
||||
msgid "UNDEFINED_FLAGS"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/response.rst:96
|
||||
msgid ""
|
||||
"Среди введённых флагов есть незарегистрированные, но нет флагов с "
|
||||
"некорректными значениями."
|
||||
msgstr ""
|
||||
"Among the entered flags, there are unregistered ones, but no flags with incorrect values."
|
||||
|
||||
#: ../../root/api/response.rst:99
|
||||
msgid "INVALID_VALUE_FLAGS"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/response.rst:106
|
||||
msgid ""
|
||||
"Среди введённых флагов есть флаги с некорректными значениями, но нет "
|
||||
"незарегистрированных."
|
||||
msgstr ""
|
||||
"Among the entered flags, there are flags with incorrect values, but no unregistered ones."
|
||||
|
||||
#: ../../root/api/response.rst:109
|
||||
msgid "UNDEFINED_AND_INVALID_FLAGS"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/response.rst:116
|
||||
msgid ""
|
||||
"Среди введённых флагов есть как незарегистрированные, так и флаги с "
|
||||
"некорректными значениями."
|
||||
msgstr ""
|
||||
"Among the entered flags, there are both unregistered flags and flags with incorrect values."
|
||||
|
||||
@@ -0,0 +1,186 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-02 22:27+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/api/router.rst:4
|
||||
msgid "Router"
|
||||
msgstr ""
|
||||
|
||||
#: ../../root/api/router.rst:6
|
||||
msgid ""
|
||||
"``Router`` — это основной строительный блок для организации логики в "
|
||||
"приложении. Его задача — группировать связанные команды и их обработчики."
|
||||
" Каждый роутер представляет собой логический контейнер для определённого "
|
||||
"набора функций."
|
||||
msgstr ""
|
||||
"``Router`` is the main building block for organizing logic in an "
|
||||
"application. Its purpose is to group related commands and their handlers. "
|
||||
"Each router represents a logical container for a specific set of functions."
|
||||
|
||||
#: ../../root/api/router.rst:8
|
||||
msgid ""
|
||||
"Например, в приложении для управления пользователями один роутер может "
|
||||
"отвечать за аутентификацию (``login``, ``logout``), а другой — за "
|
||||
"операции с профилем (``profile-show``, ``profile-edit``)."
|
||||
msgstr ""
|
||||
"For example, in a user management application, one router can handle "
|
||||
"authentication (``login``, ``logout``), while another handles profile "
|
||||
"operations (``profile-show``, ``profile-edit``)."
|
||||
|
||||
#: ../../root/api/router.rst:13
|
||||
msgid "Инициализация"
|
||||
msgstr "Initialization"
|
||||
|
||||
#: ../../root/api/router.rst:21
|
||||
msgid "Создаёт новый экземпляр роутера."
|
||||
msgstr "Creates a new router instance."
|
||||
|
||||
#: ../../root/api/router.rst:23
|
||||
msgid ""
|
||||
"``title``: Необязательный заголовок для группы команд. Отображается в "
|
||||
"списке доступных команд, помогая пользователю ориентироваться."
|
||||
msgstr ""
|
||||
"``title``: Optional title for the command group. Displayed in the list of "
|
||||
"available commands to help users navigate."
|
||||
|
||||
#: ../../root/api/router.rst:24
|
||||
msgid ""
|
||||
"``disable_redirect_stdout``: Если ``True``, отключает перехват ``stdout``"
|
||||
" для всех команд этого роутера. Это необходимо для интерактивных команд "
|
||||
"(например, с ``input()``). При отключении перехвата автоматически "
|
||||
"используется статическая разделительная линия. Подробнее см. в разделе "
|
||||
":ref:`Переопределение стандартного вывода <root_redirect_stdout>`."
|
||||
msgstr ""
|
||||
"``disable_redirect_stdout``: If ``True``, disables ``stdout`` capture for "
|
||||
"all commands in this router. This is necessary for interactive commands "
|
||||
"(e.g., with ``input()``). When capture is disabled, a static separator line "
|
||||
"is automatically used. See :ref:`Overriding standard output <root_redirect_stdout>` "
|
||||
"for more details."
|
||||
|
||||
#: ../../root/api/router.rst:29
|
||||
msgid "Регистрация команд"
|
||||
msgstr "Command Registration"
|
||||
|
||||
#: ../../root/api/router.rst:31
|
||||
msgid ""
|
||||
"Для регистрации команды и привязки к ней обработчика используется "
|
||||
"декоратор ``@command``."
|
||||
msgstr ""
|
||||
"The ``@command`` decorator is used to register a command and bind a handler to it."
|
||||
|
||||
#: ../../root/api/router.rst:35
|
||||
msgid "Декоратор для регистрации функции как обработчика команды."
|
||||
msgstr "Decorator for registering a function as a command handler."
|
||||
|
||||
#: ../../root/api/router.rst
|
||||
msgid "Parameters"
|
||||
msgstr "Parameters"
|
||||
|
||||
#: ../../root/api/router.rst:37
|
||||
msgid ""
|
||||
"Экземпляр ``Command``, описывающий триггер, флаги и описание команды. "
|
||||
"Может быть строкой, которая станет триггером (без возможности настройки "
|
||||
"флагов и описания)."
|
||||
msgstr ""
|
||||
"A ``Command`` instance describing the trigger, flags, and command description. "
|
||||
"Can be a string that will become the trigger (without the ability to configure "
|
||||
"flags and description)."
|
||||
|
||||
#: ../../root/api/router.rst:39
|
||||
msgid "**Пример использования:**"
|
||||
msgstr "**Usage example:**"
|
||||
|
||||
#: ../../root/api/router.rst:48
|
||||
msgid "Системный роутер"
|
||||
msgstr "System Router"
|
||||
|
||||
#: ../../root/api/router.rst:50
|
||||
msgid ""
|
||||
"``Argenta`` поставляется со встроенным системным роутером, который "
|
||||
"автоматически подключается к каждому приложению."
|
||||
msgstr ""
|
||||
"``Argenta`` comes with a built-in system router that is automatically "
|
||||
"connected to every application."
|
||||
|
||||
#: ../../root/api/router.rst:55
|
||||
msgid ""
|
||||
"Предопределённый экземпляр ``Router`` с базовыми системными командами (по"
|
||||
" умолчанию — команда выхода). Имеет заголовок **«System points:»**, "
|
||||
"который можно переопределить в ``App``."
|
||||
msgstr ""
|
||||
"A predefined ``Router`` instance with basic system commands (by default, "
|
||||
"the exit command). Has the title **\"System points:\"**, which can be "
|
||||
"overridden in ``App``."
|
||||
|
||||
#: ../../root/api/router.rst:57
|
||||
msgid ""
|
||||
"Вы можете добавлять свои команды в этот роутер. Для этого импортируйте "
|
||||
"``argenta.router.defaults.system_router`` и используйте его декоратор "
|
||||
"``@command``."
|
||||
msgstr ""
|
||||
"You can add your own commands to this router. To do this, import "
|
||||
"``argenta.router.defaults.system_router`` and use its ``@command`` decorator."
|
||||
|
||||
#: ../../root/api/router.rst:62
|
||||
msgid "Возможные исключения"
|
||||
msgstr "Possible Exceptions"
|
||||
|
||||
#: ../../root/api/router.rst:64
|
||||
msgid ""
|
||||
"При регистрации команд и флагов в ``Router`` могут возникнуть следующие "
|
||||
"исключения:"
|
||||
msgstr ""
|
||||
"The following exceptions may occur when registering commands and flags in ``Router``:"
|
||||
|
||||
#: ../../root/api/router.rst:68
|
||||
msgid ""
|
||||
"Выбрасывается, если триггер команды в ``Command`` содержит пробелы. "
|
||||
"Триггеры должны быть одним словом."
|
||||
msgstr ""
|
||||
"Raised if the command trigger in ``Command`` contains spaces. "
|
||||
"Triggers must be a single word."
|
||||
|
||||
#: ../../root/api/router.rst:70
|
||||
msgid "**Неправильно:** ``Command(\"add user\")``"
|
||||
msgstr "**Incorrect:** ``Command(\"add user\")``"
|
||||
|
||||
#: ../../root/api/router.rst:72
|
||||
msgid "**Правильно:** ``Command(\"add-user\")``"
|
||||
msgstr "**Correct:** ``Command(\"add-user\")``"
|
||||
|
||||
#: ../../root/api/router.rst:76
|
||||
msgid ""
|
||||
"Возникает, если при определении флагов для команды были использованы "
|
||||
"дублирующиеся имена. Имена флагов в рамках одной команды должны быть "
|
||||
"уникальны."
|
||||
msgstr ""
|
||||
"Raised if duplicate names were used when defining flags for a command. "
|
||||
"Flag names within a single command must be unique."
|
||||
|
||||
#: ../../root/api/router.rst:78
|
||||
msgid "**Пример, вызывающий исключение:**"
|
||||
msgstr "**Example that raises an exception:**"
|
||||
|
||||
#: ../../root/api/router.rst:90
|
||||
msgid ""
|
||||
"Возникает, если обработчик команды не принимает обязательный аргумент "
|
||||
"``Response``."
|
||||
msgstr ""
|
||||
"Raised if the command handler does not accept the required ``Response`` argument."
|
||||
|
||||
@@ -0,0 +1,189 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-02 22:27+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/code_of_conduct.rst:4
|
||||
msgid "Правила сообщества"
|
||||
msgstr "Community Guidelines"
|
||||
|
||||
#: ../../root/code_of_conduct.rst:7
|
||||
msgid "Наше обязательство"
|
||||
msgstr "Our Pledge"
|
||||
|
||||
#: ../../root/code_of_conduct.rst:9
|
||||
msgid ""
|
||||
"В целях создания открытой и гостеприимной атмосферы мы, как участники и "
|
||||
"мейнтейнеры, обязуемся сделать участие в нашем проекте и сообществе "
|
||||
"свободным от преследований для всех, независимо от возраста, "
|
||||
"телосложения, инвалидности, этнической принадлежности, уровня опыта, "
|
||||
"образования, социально-экономического статуса, национальности, внешности,"
|
||||
" расы или религии."
|
||||
msgstr ""
|
||||
"In the interest of fostering an open and welcoming environment, we as "
|
||||
"contributors and maintainers pledge to make participation in our project and "
|
||||
"community a harassment-free experience for everyone, regardless of age, body "
|
||||
"size, disability, ethnicity, level of experience, education, socio-economic "
|
||||
"status, nationality, personal appearance, race, or religion."
|
||||
|
||||
#: ../../root/code_of_conduct.rst:14
|
||||
msgid "Наши стандарты"
|
||||
msgstr "Our Standards"
|
||||
|
||||
#: ../../root/code_of_conduct.rst:16
|
||||
msgid "Примеры поведения, которые способствуют созданию позитивной среды:"
|
||||
msgstr "Examples of behavior that contributes to creating a positive environment:"
|
||||
|
||||
#: ../../root/code_of_conduct.rst:18
|
||||
msgid "Проявление эмпатии и доброты по отношению к другим."
|
||||
msgstr "Demonstrating empathy and kindness toward other people."
|
||||
|
||||
#: ../../root/code_of_conduct.rst:19
|
||||
msgid "Уважение к различным мнениям, точкам зрения и опыту."
|
||||
msgstr "Being respectful of differing opinions, viewpoints, and experiences."
|
||||
|
||||
#: ../../root/code_of_conduct.rst:20
|
||||
msgid "Предоставление и тактичное принятие конструктивной обратной связи."
|
||||
msgstr "Giving and gracefully accepting constructive feedback."
|
||||
|
||||
#: ../../root/code_of_conduct.rst:21
|
||||
msgid ""
|
||||
"Принятие ответственности и извинения перед теми, кого затронули наши "
|
||||
"ошибки, а также извлечение уроков из этого опыта."
|
||||
msgstr ""
|
||||
"Accepting responsibility and apologizing to those affected by our mistakes, "
|
||||
"and learning from the experience."
|
||||
|
||||
#: ../../root/code_of_conduct.rst:22
|
||||
msgid "Фокус на том, что лучше для всего сообщества."
|
||||
msgstr "Focusing on what is best for the overall community."
|
||||
|
||||
#: ../../root/code_of_conduct.rst:24
|
||||
msgid "Примеры недопустимого поведения включают:"
|
||||
msgstr "Examples of unacceptable behavior include:"
|
||||
|
||||
#: ../../root/code_of_conduct.rst:26
|
||||
msgid ""
|
||||
"Троллинг, оскорбительные или уничижительные комментарии, а также личные "
|
||||
"или политические нападки."
|
||||
msgstr ""
|
||||
"Trolling, insulting or derogatory comments, and personal or political attacks."
|
||||
|
||||
#: ../../root/code_of_conduct.rst:27
|
||||
msgid "Публичное или частное преследование."
|
||||
msgstr "Public or private harassment."
|
||||
|
||||
#: ../../root/code_of_conduct.rst:28
|
||||
msgid ""
|
||||
"Публикация личной информации других лиц (например, физического или "
|
||||
"электронного адреса) без их явного разрешения."
|
||||
msgstr ""
|
||||
"Publishing others' private information, such as a physical or email address, "
|
||||
"without their explicit permission."
|
||||
|
||||
#: ../../root/code_of_conduct.rst:29
|
||||
msgid ""
|
||||
"Любое другое поведение, которое можно обоснованно считать неуместным в "
|
||||
"профессиональной среде."
|
||||
msgstr ""
|
||||
"Other conduct which could reasonably be considered inappropriate in a "
|
||||
"professional setting."
|
||||
|
||||
#: ../../root/code_of_conduct.rst:34
|
||||
msgid "Наши обязанности"
|
||||
msgstr "Our Responsibilities"
|
||||
|
||||
#: ../../root/code_of_conduct.rst:36
|
||||
msgid ""
|
||||
"Мейнтейнеры проекта несут ответственность за разъяснение и обеспечение "
|
||||
"соблюдения стандартов приемлемого поведения и предпримут справедливые "
|
||||
"корректирующие действия в ответ на любые случаи неприемлемого поведения."
|
||||
msgstr ""
|
||||
"Project maintainers are responsible for clarifying and enforcing standards of "
|
||||
"acceptable behavior and will take appropriate and fair corrective action in "
|
||||
"response to any instances of unacceptable behavior."
|
||||
|
||||
#: ../../root/code_of_conduct.rst:38
|
||||
msgid ""
|
||||
"Мейнтейнеры проекта имеют право и обязанность удалять, редактировать или "
|
||||
"отклонять комментарии, коммиты, код, правки в вики, задачи и другие "
|
||||
"вклады, которые не соответствуют настоящему Кодексу поведения, а также "
|
||||
"временно или навсегда блокировать любого участника за поведение, которое "
|
||||
"они сочтут неуместным, угрожающим, оскорбительным или вредным."
|
||||
msgstr ""
|
||||
"Project maintainers have the right and responsibility to remove, edit, or reject "
|
||||
"comments, commits, code, wiki edits, issues, and other contributions that are not "
|
||||
"aligned with this Code of Conduct, and will ban temporarily or permanently any "
|
||||
"contributor for behaviors that they deem inappropriate, threatening, offensive, or harmful."
|
||||
|
||||
#: ../../root/code_of_conduct.rst:43
|
||||
msgid "Сфера применения"
|
||||
msgstr "Scope"
|
||||
|
||||
#: ../../root/code_of_conduct.rst:45
|
||||
msgid ""
|
||||
"Настоящий Кодекс поведения применяется как в рамках проекта, так и в "
|
||||
"публичных пространствах, когда человек официально представляет "
|
||||
"сообщество. Примеры такого представительства включают использование "
|
||||
"официального адреса электронной почты, публикации через официальный "
|
||||
"аккаунт в социальных сетях или выступление в качестве назначенного "
|
||||
"представителя на онлайн- или офлайн-мероприятии."
|
||||
msgstr ""
|
||||
"This Code of Conduct applies both within project spaces and in public spaces "
|
||||
"when an individual is officially representing the community. Examples of "
|
||||
"representing the community include using an official project email address, "
|
||||
"posting via an official social media account, or acting as an appointed "
|
||||
"representative at an online or offline event."
|
||||
|
||||
#: ../../root/code_of_conduct.rst:50
|
||||
msgid "Обеспечение соблюдения"
|
||||
msgstr "Enforcement"
|
||||
|
||||
#: ../../root/code_of_conduct.rst:52
|
||||
msgid ""
|
||||
"О случаях оскорбительного, преследовательского или иного неприемлемого "
|
||||
"поведения можно сообщить команде проекта по адресу "
|
||||
"kolo.is.main@gmail.com. Все жалобы будут рассмотрены и расследованы "
|
||||
"оперативно и справедливо."
|
||||
msgstr ""
|
||||
"Instances of abusive, harassing, or otherwise unacceptable behavior may be "
|
||||
"reported to the project team at kolo.is.main@gmail.com. All complaints will be "
|
||||
"reviewed and investigated promptly and fairly."
|
||||
|
||||
#: ../../root/code_of_conduct.rst:54
|
||||
msgid "Команда проекта обязуется уважать частную жизнь и безопасность заявителя."
|
||||
msgstr "The project team is obligated to respect the privacy and security of the reporter."
|
||||
|
||||
#: ../../root/code_of_conduct.rst:59
|
||||
msgid "Атрибуция"
|
||||
msgstr "Attribution"
|
||||
|
||||
#: ../../root/code_of_conduct.rst:61
|
||||
msgid ""
|
||||
"Настоящий Кодекс поведения адаптирован из `Contributor Covenant "
|
||||
"<https://www.contributor-covenant.org/>`__, версии `1.4 <https://www"
|
||||
".contributor-covenant.org/version/1/4/code-of-"
|
||||
"conduct/code_of_conduct.md>`__ и `2.0 <https://www.contributor-"
|
||||
"covenant.org/version/2/0/code_of_conduct/code_of_conduct.md>`__."
|
||||
msgstr ""
|
||||
"This Code of Conduct is adapted from the `Contributor Covenant "
|
||||
"<https://www.contributor-covenant.org/>`__, version `1.4 <https://www"
|
||||
".contributor-covenant.org/version/1/4/code-of-"
|
||||
"conduct/code_of_conduct.md>`__ and `2.0 <https://www.contributor-"
|
||||
"covenant.org/version/2/0/code_of_conduct/code_of_conduct.md>`__."
|
||||
|
||||
@@ -0,0 +1,739 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-03 13:42+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/contributing.rst:4
|
||||
msgid "Вклад в проект"
|
||||
msgstr "Contributing to the Project"
|
||||
|
||||
#: ../../root/contributing.rst:8
|
||||
msgid "Прежде всего, спасибо, что уделили время для внесения своего вклада! ❤️"
|
||||
msgstr "First of all, thank you for taking the time to contribute! ❤️"
|
||||
|
||||
#: ../../root/contributing.rst:10
|
||||
msgid ""
|
||||
"Мы приветствуем и ценим любой вклад. Пожалуйста, прочтите соответствующий"
|
||||
" раздел, прежде чем начать. Это облегчит работу мейнтейнеров и сделает "
|
||||
"процесс более гладким для всех. Сообщество с нетерпением ждёт ваших идей!"
|
||||
" 🎉"
|
||||
msgstr ""
|
||||
"We welcome and appreciate any contribution. Please read the relevant "
|
||||
"section before getting started. This will make it easier for maintainers "
|
||||
"and make the process smoother for everyone. The community is looking "
|
||||
"forward to your ideas! 🎉"
|
||||
|
||||
#: ../../root/contributing.rst:14
|
||||
msgid ""
|
||||
"Если вам нравится проект, но у вас нет времени на активный вклад, вы "
|
||||
"можете поддержать нас другими способами:"
|
||||
msgstr ""
|
||||
"If you like the project but don't have time to actively contribute, you "
|
||||
"can support us in other ways:"
|
||||
|
||||
#: ../../root/contributing.rst:16
|
||||
msgid "Поставить звезду на GitHub."
|
||||
msgstr "Star the project on GitHub."
|
||||
|
||||
#: ../../root/contributing.rst:17
|
||||
msgid "Написать о проекте в Twitter или других социальных сетях."
|
||||
msgstr "Write about the project on Twitter or other social media."
|
||||
|
||||
#: ../../root/contributing.rst:18
|
||||
msgid "Сослаться на проект в `README` вашего репозитория."
|
||||
msgstr "Reference the project in your repository's `README`."
|
||||
|
||||
#: ../../root/contributing.rst:19
|
||||
msgid "Упомянуть проект на митапах и рассказать о нём друзьям и коллегам."
|
||||
msgstr ""
|
||||
"Mention the project at meetups and tell your friends and colleagues about"
|
||||
" it."
|
||||
|
||||
#: ../../root/contributing.rst:24
|
||||
msgid "Содержание"
|
||||
msgstr "Contents"
|
||||
|
||||
#: ../../root/contributing.rst:26
|
||||
msgid ":ref:`Кодекс поведения <code-of-conduct>`"
|
||||
msgstr ":ref:`Code of Conduct <code-of-conduct>`"
|
||||
|
||||
#: ../../root/contributing.rst:27
|
||||
msgid ":ref:`У меня есть вопрос <i-have-a-question>`"
|
||||
msgstr ":ref:`I Have a Question <i-have-a-question>`"
|
||||
|
||||
#: ../../root/contributing.rst:28
|
||||
msgid ":ref:`Я хочу внести вклад <i-want-to-contribute>`"
|
||||
msgstr ":ref:`I Want to Contribute <i-want-to-contribute>`"
|
||||
|
||||
#: ../../root/contributing.rst:29
|
||||
msgid ":ref:`Сообщение об ошибках <reporting-bugs>`"
|
||||
msgstr ":ref:`Reporting Bugs <reporting-bugs>`"
|
||||
|
||||
#: ../../root/contributing.rst:30
|
||||
msgid ":ref:`Предложение улучшений <suggesting-enhancements>`"
|
||||
msgstr ":ref:`Suggesting Enhancements <suggesting-enhancements>`"
|
||||
|
||||
#: ../../root/contributing.rst:31
|
||||
msgid ":ref:`Ваш первый вклад в код <your-first-code-contribution>`"
|
||||
msgstr ":ref:`Your First Code Contribution <your-first-code-contribution>`"
|
||||
|
||||
#: ../../root/contributing.rst:32
|
||||
msgid ":ref:`Улучшение документации <improving-documentation>`"
|
||||
msgstr ":ref:`Improving Documentation <improving-documentation>`"
|
||||
|
||||
#: ../../root/contributing.rst:33
|
||||
msgid ":ref:`Руководства по стилю <styleguide>`"
|
||||
msgstr ":ref:`Style Guides <styleguide>`"
|
||||
|
||||
#: ../../root/contributing.rst:34
|
||||
msgid ":ref:`Присоединяйтесь к команде проекта <join-the-project-team>`"
|
||||
msgstr ":ref:`Join the Project Team <join-the-project-team>`"
|
||||
|
||||
#: ../../root/contributing.rst:39
|
||||
msgid "Кодекс поведения"
|
||||
msgstr "Code of Conduct"
|
||||
|
||||
#: ../../root/contributing.rst:41
|
||||
msgid ""
|
||||
"Этот проект и все его участники руководствуются :ref:`Кодексом поведения "
|
||||
"Argenta <root_code_of_conduct>`. Участвуя, вы обязуетесь соблюдать этот "
|
||||
"кодекс. Пожалуйста, сообщайте о недопустимом поведении."
|
||||
msgstr ""
|
||||
"This project and all its participants are governed by the :ref:`Argenta "
|
||||
"Code of Conduct <root_code_of_conduct>`. By participating, you are "
|
||||
"expected to uphold this code. Please report unacceptable behavior."
|
||||
|
||||
#: ../../root/contributing.rst:49
|
||||
msgid "У меня есть вопрос"
|
||||
msgstr "I Have a Question"
|
||||
|
||||
#: ../../root/contributing.rst:53
|
||||
msgid ""
|
||||
"Прежде чем задать вопрос, пожалуйста, ознакомьтесь с `документацией "
|
||||
"<https://argenta.readthedocs.io>`_."
|
||||
msgstr ""
|
||||
"Before asking a question, please check the `documentation "
|
||||
"<https://argenta.readthedocs.io>`_."
|
||||
|
||||
#: ../../root/contributing.rst:55
|
||||
msgid ""
|
||||
"Поищите ответ в существующих `Issues "
|
||||
"<https://github.com/koloideal/Argenta/issues>`_. Если вы нашли похожий "
|
||||
"вопрос, но всё ещё нуждаетесь в разъяснениях, можете написать в нём. "
|
||||
"Также рекомендуем поискать ответ в интернете."
|
||||
msgstr ""
|
||||
"Search for an answer in existing `Issues "
|
||||
"<https://github.com/koloideal/Argenta/issues>`_. If you found a similar "
|
||||
"question but still need clarification, you can comment on it. We also "
|
||||
"recommend searching the internet for an answer."
|
||||
|
||||
#: ../../root/contributing.rst:57
|
||||
msgid ""
|
||||
"Если ответа не нашлось, создайте новый `Issue "
|
||||
"<https://github.com/koloideal/Argenta/issues/new>`_ и предоставьте как "
|
||||
"можно больше контекста, включая версии проекта и платформы."
|
||||
msgstr ""
|
||||
"If you can't find an answer, create a new `Issue "
|
||||
"<https://github.com/koloideal/Argenta/issues/new>`_ and provide as much "
|
||||
"context as possible, including project and platform versions."
|
||||
|
||||
#: ../../root/contributing.rst:59
|
||||
msgid "Мы займемся вашей задачей как можно скорее."
|
||||
msgstr "We will address your issue as soon as possible."
|
||||
|
||||
#: ../../root/contributing.rst:66
|
||||
msgid "Я хочу внести вклад"
|
||||
msgstr "I Want to Contribute"
|
||||
|
||||
#: ../../root/contributing.rst:69
|
||||
msgid "Правовое уведомление"
|
||||
msgstr "Legal Notice"
|
||||
|
||||
#: ../../root/contributing.rst:72
|
||||
msgid ""
|
||||
"Внося вклад в этот проект, вы подтверждаете, что являетесь автором 100% "
|
||||
"контента, обладаете необходимыми правами на него и соглашаетесь, что он "
|
||||
"может распространяться под лицензией проекта."
|
||||
msgstr ""
|
||||
"By contributing to this project, you confirm that you are the author of "
|
||||
"100% of the content, have the necessary rights to it, and agree that it "
|
||||
"may be distributed under the project's license."
|
||||
|
||||
#: ../../root/contributing.rst:77
|
||||
msgid "Сообщение об ошибках"
|
||||
msgstr "Reporting Bugs"
|
||||
|
||||
#: ../../root/contributing.rst:80
|
||||
msgid "Перед отправкой отчета об ошибке"
|
||||
msgstr "Before Submitting a Bug Report"
|
||||
|
||||
#: ../../root/contributing.rst:81
|
||||
msgid ""
|
||||
"Хороший отчёт об ошибке не должен заставлять других вытягивать из вас "
|
||||
"дополнительную информацию. Пожалуйста, тщательно всё изучите, соберите "
|
||||
"информацию и подробно опишите проблему. Это поможет нам исправить её как "
|
||||
"можно быстрее."
|
||||
msgstr ""
|
||||
"A good bug report shouldn't require others to extract additional "
|
||||
"information from you. Please investigate thoroughly, gather information, "
|
||||
"and describe the problem in detail. This will help us fix it as quickly "
|
||||
"as possible."
|
||||
|
||||
#: ../../root/contributing.rst:83 ../../root/contributing.rst:124
|
||||
msgid "Убедитесь, что вы используете последнюю версию."
|
||||
msgstr "Make sure you are using the latest version."
|
||||
|
||||
#: ../../root/contributing.rst:84
|
||||
msgid ""
|
||||
"Убедитесь, что проблема действительно является ошибкой, а не вызвана, "
|
||||
"например, использованием несовместимых версий окружения. Прочтите "
|
||||
"`документацию <https://argenta.readthedocs.io>`_ и, если нужна поддержка,"
|
||||
" загляните в раздел :ref:`У меня есть вопрос <i-have-a-question>`."
|
||||
msgstr ""
|
||||
"Make sure the issue is actually a bug and not caused by, for example, "
|
||||
"using incompatible environment versions. Read the `documentation "
|
||||
"<https://argenta.readthedocs.io>`_ and, if you need support, check out "
|
||||
"the :ref:`I Have a Question <i-have-a-question>` section."
|
||||
|
||||
#: ../../root/contributing.rst:85
|
||||
msgid ""
|
||||
"Проверьте, нет ли уже отчёта о вашей ошибке в `трекере "
|
||||
"<https://github.com/koloideal/Argenta/issues?q=label%3Abug>`_."
|
||||
msgstr ""
|
||||
"Check if there is already a report about your bug in the `tracker "
|
||||
"<https://github.com/koloideal/Argenta/issues?q=label%3Abug>`_."
|
||||
|
||||
#: ../../root/contributing.rst:86
|
||||
msgid ""
|
||||
"Также поищите в интернете (включая `Stack Overflow`), чтобы узнать, "
|
||||
"обсуждалась ли проблема за пределами `GitHub`."
|
||||
msgstr ""
|
||||
"Also search the internet (including `Stack Overflow`) to see if the issue"
|
||||
" has been discussed outside of `GitHub`."
|
||||
|
||||
#: ../../root/contributing.rst:87
|
||||
msgid "Соберите информацию об ошибке:"
|
||||
msgstr "Collect information about the bug:"
|
||||
|
||||
#: ../../root/contributing.rst:88
|
||||
msgid "Трассировка стека."
|
||||
msgstr "Stack trace."
|
||||
|
||||
#: ../../root/contributing.rst:89
|
||||
msgid "ОС, платформа и версия (Windows, Linux, macOS, x86, ARM)."
|
||||
msgstr "OS, platform, and version (Windows, Linux, macOS, x86, ARM)."
|
||||
|
||||
#: ../../root/contributing.rst:90
|
||||
msgid ""
|
||||
"Версия интерпретатора, компилятора, SDK, среды выполнения, менеджера "
|
||||
"пакетов и т.д."
|
||||
msgstr ""
|
||||
"Version of interpreter, compiler, SDK, runtime environment, package "
|
||||
"manager, etc."
|
||||
|
||||
#: ../../root/contributing.rst:91
|
||||
msgid "Входные данные и полученный результат."
|
||||
msgstr "Input data and output received."
|
||||
|
||||
#: ../../root/contributing.rst:92
|
||||
msgid ""
|
||||
"Можете ли вы надёжно воспроизвести проблему? Воспроизводится ли она на "
|
||||
"старых версиях?"
|
||||
msgstr "Can you reliably reproduce the issue? Does it reproduce on older versions?"
|
||||
|
||||
#: ../../root/contributing.rst:95
|
||||
msgid "Как мне отправить хороший отчет об ошибке?"
|
||||
msgstr "How Do I Submit a Good Bug Report?"
|
||||
|
||||
#: ../../root/contributing.rst:98
|
||||
msgid ""
|
||||
"Никогда не сообщайте о проблемах безопасности, уязвимостях или ошибках с "
|
||||
"конфиденциальной информацией в публичном трекере. Для этого используйте "
|
||||
"электронную почту."
|
||||
msgstr ""
|
||||
"Never report security issues, vulnerabilities, or bugs with sensitive "
|
||||
"information in the public tracker. Use email for this purpose."
|
||||
|
||||
#: ../../root/contributing.rst:100
|
||||
msgid ""
|
||||
"Мы используем `GitHub Issues` для отслеживания ошибок. Если вы "
|
||||
"столкнулись с проблемой:"
|
||||
msgstr "We use `GitHub Issues` to track bugs. If you encounter a problem:"
|
||||
|
||||
#: ../../root/contributing.rst:102
|
||||
msgid ""
|
||||
"Откройте новый `Issue "
|
||||
"<https://github.com/koloideal/Argenta/issues/new>`_. На этом этапе не "
|
||||
"нужно присваивать ему метки."
|
||||
msgstr ""
|
||||
"Open a new `Issue <https://github.com/koloideal/Argenta/issues/new>`_. At"
|
||||
" this stage, you don't need to assign labels to it."
|
||||
|
||||
#: ../../root/contributing.rst:103
|
||||
msgid "Объясните ожидаемое и фактическое поведение."
|
||||
msgstr "Explain the expected and actual behavior."
|
||||
|
||||
#: ../../root/contributing.rst:104
|
||||
msgid ""
|
||||
"Предоставьте как можно больше контекста и опишите **шаги для "
|
||||
"воспроизведения**, чтобы проблему можно было воссоздать. Лучше всего "
|
||||
"изолировать её и создать минимальный тестовый пример."
|
||||
msgstr ""
|
||||
"Provide as much context as possible and describe **reproduction steps** "
|
||||
"so the issue can be recreated. It's best to isolate it and create a "
|
||||
"minimal test case."
|
||||
|
||||
#: ../../root/contributing.rst:105
|
||||
msgid "Предоставьте информацию, которую вы собрали в предыдущем разделе."
|
||||
msgstr "Provide the information you collected in the previous section."
|
||||
|
||||
#: ../../root/contributing.rst:107
|
||||
msgid "После того, как задача будет создана:"
|
||||
msgstr "Once the issue is created:"
|
||||
|
||||
#: ../../root/contributing.rst:109
|
||||
msgid "Команда проекта присвоит задаче соответствующую метку."
|
||||
msgstr "The project team will assign an appropriate label to the issue."
|
||||
|
||||
#: ../../root/contributing.rst:110
|
||||
msgid ""
|
||||
"Член команды попытается воспроизвести проблему. Если шагов нет или они не"
|
||||
" приводят к результату, команда попросит вас предоставить их и пометит "
|
||||
"задачу как `needs-repro`. Такие задачи не будут рассматриваться до тех "
|
||||
"пор, пока проблема не будет воспроизведена."
|
||||
msgstr ""
|
||||
"A team member will try to reproduce the issue. If there are no steps or "
|
||||
"they don't lead to the result, the team will ask you to provide them and "
|
||||
"mark the issue as `needs-repro`. Such issues will not be addressed until "
|
||||
"the problem is reproduced."
|
||||
|
||||
#: ../../root/contributing.rst:111
|
||||
msgid ""
|
||||
"Если проблема будет воспроизведена, она будет помечена как `needs-fix` "
|
||||
"(и, возможно, другими метками, например `critical`), после чего её сможет"
|
||||
" взять в работу :ref:`любой желающий <your-first-code-contribution>`."
|
||||
msgstr ""
|
||||
"If the issue is reproduced, it will be marked as `needs-fix` (and "
|
||||
"possibly with other labels, such as `critical`), after which :ref:`anyone"
|
||||
" willing <your-first-code-contribution>` can take it on."
|
||||
|
||||
#: ../../root/contributing.rst:118
|
||||
msgid "Предложение улучшений"
|
||||
msgstr "Suggesting Enhancements"
|
||||
|
||||
#: ../../root/contributing.rst:120
|
||||
msgid ""
|
||||
"Этот раздел поможет вам отправить предложение по улучшению `Argenta`, "
|
||||
"**включая как новые функции, так и незначительные улучшения**. Следование"
|
||||
" этим рекомендациям поможет мейнтейнерам и сообществу лучше понять вашу "
|
||||
"идею."
|
||||
msgstr ""
|
||||
"This section will help you submit an enhancement suggestion for "
|
||||
"`Argenta`, **including both new features and minor improvements**. "
|
||||
"Following these guidelines will help maintainers and the community better"
|
||||
" understand your idea."
|
||||
|
||||
#: ../../root/contributing.rst:123
|
||||
msgid "Перед отправкой предложения по улучшению"
|
||||
msgstr "Before Submitting an Enhancement Suggestion"
|
||||
|
||||
#: ../../root/contributing.rst:125
|
||||
msgid ""
|
||||
"Внимательно прочтите `документацию <https://argenta.readthedocs.io>`_ и "
|
||||
"убедитесь, что предлагаемая функциональность ещё не реализована "
|
||||
"(возможно, через конфигурацию)."
|
||||
msgstr ""
|
||||
"Carefully read the `documentation <https://argenta.readthedocs.io>`_ and "
|
||||
"make sure the proposed functionality is not already implemented (perhaps "
|
||||
"through configuration)."
|
||||
|
||||
#: ../../root/contributing.rst:126
|
||||
msgid ""
|
||||
"Выполните `поиск <https://github.com/koloideal/Argenta/issues>`_, чтобы "
|
||||
"проверить, не предлагалось ли это улучшение ранее. Если да, добавьте "
|
||||
"комментарий к существующей задаче."
|
||||
msgstr ""
|
||||
"Perform a `search <https://github.com/koloideal/Argenta/issues>`_ to "
|
||||
"check if this enhancement has been suggested before. If so, add a comment"
|
||||
" to the existing issue."
|
||||
|
||||
#: ../../root/contributing.rst:127
|
||||
msgid ""
|
||||
"Определите, соответствует ли ваша идея масштабу и целям проекта. Вам "
|
||||
"предстоит убедительно доказать её пользу. Мы хотим видеть функции, "
|
||||
"которые будут полезны большинству пользователей. Если ваша идея "
|
||||
"ориентирована на узкий круг, рассмотрите возможность создания плагина."
|
||||
msgstr ""
|
||||
"Determine if your idea fits the scope and goals of the project. You will "
|
||||
"need to convincingly demonstrate its value. We want to see features that "
|
||||
"will be useful to most users. If your idea targets a narrow audience, "
|
||||
"consider creating a plugin."
|
||||
|
||||
#: ../../root/contributing.rst:130
|
||||
msgid "Как мне отправить хорошее предложение по улучшению?"
|
||||
msgstr "How Do I Submit a Good Enhancement Suggestion?"
|
||||
|
||||
#: ../../root/contributing.rst:131
|
||||
msgid ""
|
||||
"Предложения по улучшению отслеживаются в `GitHub Issues "
|
||||
"<https://github.com/koloideal/Argenta/issues>`_."
|
||||
msgstr ""
|
||||
"Enhancement suggestions are tracked in `GitHub Issues "
|
||||
"<https://github.com/koloideal/Argenta/issues>`_."
|
||||
|
||||
#: ../../root/contributing.rst:133
|
||||
msgid ""
|
||||
"Используйте **чёткий и описательный заголовок**, чтобы идентифицировать "
|
||||
"предложение."
|
||||
msgstr "Use a **clear and descriptive title** to identify the suggestion."
|
||||
|
||||
#: ../../root/contributing.rst:134
|
||||
msgid "Предоставьте **пошаговое и подробное описание** предлагаемого улучшения."
|
||||
msgstr ""
|
||||
"Provide a **step-by-step and detailed description** of the proposed "
|
||||
"enhancement."
|
||||
|
||||
#: ../../root/contributing.rst:135
|
||||
msgid ""
|
||||
"**Опишите текущее поведение** и **объясните, какое вы ожидали увидеть "
|
||||
"вместо этого** и почему. Здесь же можно указать, какие альтернативы вам "
|
||||
"не подходят."
|
||||
msgstr ""
|
||||
"**Describe the current behavior** and **explain what you expected to see "
|
||||
"instead** and why. You can also mention which alternatives don't work for"
|
||||
" you."
|
||||
|
||||
#: ../../root/contributing.rst:136
|
||||
msgid ""
|
||||
"**Приложите скриншоты или видео**, которые помогут продемонстрировать "
|
||||
"шаги или указать на часть, к которой относится предложение."
|
||||
msgstr ""
|
||||
"**Attach screenshots or videos** that help demonstrate the steps or point"
|
||||
" to the part the suggestion relates to."
|
||||
|
||||
#: ../../root/contributing.rst:137
|
||||
msgid ""
|
||||
"**Объясните, почему это улучшение будет полезно** большинству "
|
||||
"пользователей `Argenta`. Вы также можете указать на другие проекты, "
|
||||
"которые решили эту проблему и могут послужить источником вдохновения."
|
||||
msgstr ""
|
||||
"**Explain why this enhancement would be useful** to most `Argenta` users."
|
||||
" You can also point to other projects that have solved this problem and "
|
||||
"could serve as inspiration."
|
||||
|
||||
#: ../../root/contributing.rst:144
|
||||
msgid "Ваш первый вклад в код"
|
||||
msgstr "Your First Code Contribution"
|
||||
|
||||
#: ../../root/contributing.rst:146
|
||||
msgid ""
|
||||
"Не знаете, с чего начать? Посмотрите на задачи с метками `good first "
|
||||
"issue` и `help wanted` в нашем репозитории на `GitHub`. Они хорошо "
|
||||
"подходят для новичков."
|
||||
msgstr ""
|
||||
"Don't know where to start? Look at issues labeled `good first issue` and "
|
||||
"`help wanted` in our `GitHub` repository. They are well-suited for "
|
||||
"beginners."
|
||||
|
||||
#: ../../root/contributing.rst:148
|
||||
msgid ""
|
||||
"Чтобы начать, настройте локальное окружение для разработки, следуя этим "
|
||||
"шагам."
|
||||
msgstr ""
|
||||
"To get started, set up a local development environment by following these"
|
||||
" steps."
|
||||
|
||||
#: ../../root/contributing.rst:150
|
||||
msgid "Сделайте форк репозитория ``Argenta`` на ``GitHub``."
|
||||
msgstr "Fork the ``Argenta`` repository on ``GitHub``."
|
||||
|
||||
#: ../../root/contributing.rst:151
|
||||
msgid "Клонируйте ваш форк на локальную машину:"
|
||||
msgstr "Clone your fork to your local machine:"
|
||||
|
||||
#: ../../root/contributing.rst:158
|
||||
msgid "Создайте и активируйте виртуальное окружение."
|
||||
msgstr "Create and activate a virtual environment."
|
||||
|
||||
#: ../../root/contributing.rst:170
|
||||
msgid "Установите зависимости проекта, включая инструменты для разработки."
|
||||
msgstr "Install project dependencies, including development tools."
|
||||
|
||||
#: ../../root/contributing.rst:176
|
||||
msgid ""
|
||||
"Создайте новую ветку для вашей функции или исправления. Используйте "
|
||||
"описательное имя, например `fix/login-bug` или `feat/new-widget`."
|
||||
msgstr ""
|
||||
"Create a new branch for your feature or fix. Use a descriptive name, such"
|
||||
" as `fix/login-bug` or `feat/new-widget`."
|
||||
|
||||
#: ../../root/contributing.rst:182
|
||||
msgid ""
|
||||
"Внесите свои изменения. Напишите код и не забудьте добавить или обновить "
|
||||
"тесты."
|
||||
msgstr "Make your changes. Write code and don't forget to add or update tests."
|
||||
|
||||
#: ../../root/contributing.rst:183
|
||||
msgid "Запустите тесты, чтобы убедиться, что все работает корректно."
|
||||
msgstr "Run tests to make sure everything works correctly."
|
||||
|
||||
#: ../../root/contributing.rst:189
|
||||
msgid ""
|
||||
"Сделайте коммит, следуя :ref:`нашему руководству по стилю <styleguide>`, "
|
||||
"и отправьте изменения в ваш форк."
|
||||
msgstr ""
|
||||
"Commit following :ref:`our style guide <styleguide>` and push the changes to your fork."
|
||||
|
||||
#: ../../root/contributing.rst:197
|
||||
msgid ""
|
||||
"Откройте `Pull Request` из вашей ветки в ветку `main` официального "
|
||||
"репозитория. Предоставьте чёткое описание проблемы и вашего решения. "
|
||||
"Укажите номер связанной задачи, если она есть."
|
||||
msgstr ""
|
||||
"Open a `Pull Request` from your branch to the `main` branch of the "
|
||||
"official repository. Provide a clear description of the problem and your "
|
||||
"solution. Include the related issue number if there is one."
|
||||
|
||||
#: ../../root/contributing.rst:204
|
||||
msgid "Улучшение документации"
|
||||
msgstr "Improving Documentation"
|
||||
|
||||
#: ../../root/contributing.rst:206
|
||||
msgid ""
|
||||
"Хорошая документация крайне важна. Мы используем `Sphinx` для её "
|
||||
"генерации из исходных файлов в директории `docs/`. Мы приветствуем любые "
|
||||
"улучшения: от исправления опечатки до написания нового раздела."
|
||||
msgstr ""
|
||||
"Good documentation is crucial. We use `Sphinx` to generate it from source"
|
||||
" files in the `docs/` directory. We welcome any improvements: from fixing"
|
||||
" a typo to writing a new section."
|
||||
|
||||
#: ../../root/contributing.rst:210
|
||||
msgid "Мы поддерживаем документацию на двух языках: русском и английском."
|
||||
msgstr "We maintain documentation in two languages: Russian and English."
|
||||
|
||||
#: ../../root/contributing.rst:214
|
||||
msgid ""
|
||||
"Для инкапсуляции различных команд, необходимых для настройки и запуска "
|
||||
"проекта мы используем ``just``, он же фигурирует в различных примерах в "
|
||||
"документации, поэтому рекомендуем вам `установить его "
|
||||
"<https://github.com/casey/just#installation>`_"
|
||||
msgstr ""
|
||||
"To encapsulate various commands needed for setting up and running the "
|
||||
"project, we use ``just``, which also appears in various examples in the "
|
||||
"documentation, so we recommend you `install it "
|
||||
"<https://github.com/casey/just#installation>`_"
|
||||
|
||||
#: ../../root/contributing.rst:216
|
||||
msgid ""
|
||||
"Для улучшения документации вы можете следовать процессу, похожему на "
|
||||
"внесение вклада в код:"
|
||||
msgstr ""
|
||||
"To improve documentation, you can follow a process similar to "
|
||||
"contributing code:"
|
||||
|
||||
#: ../../root/contributing.rst:218
|
||||
msgid ""
|
||||
"Убедитесь, что ваше окружение для разработки настроено, как описано в "
|
||||
"разделе :ref:`Ваш первый вклад в код <your-first-code-contribution>`."
|
||||
msgstr ""
|
||||
"Make sure your development environment is set up as described in the "
|
||||
":ref:`Your First Code Contribution <your-first-code-contribution>` section."
|
||||
|
||||
#: ../../root/contributing.rst:219
|
||||
msgid "Перейдите в директорию с документацией."
|
||||
msgstr "Navigate to the documentation directory."
|
||||
|
||||
#: ../../root/contributing.rst:225
|
||||
msgid ""
|
||||
"Внесите изменения в **русскую** версию документации (`docs/index.rst` "
|
||||
"и/или `docs/root/*`)."
|
||||
msgstr ""
|
||||
"Make changes to the **Russian** version of the documentation "
|
||||
"(`docs/index.rst` and/or `docs/root/*`)."
|
||||
|
||||
#: ../../root/contributing.rst:226
|
||||
msgid ""
|
||||
"Чтобы собрать документацию локально в режиме автоматического ребилда и "
|
||||
"увидеть изменения, выполните:"
|
||||
msgstr ""
|
||||
"To build the documentation locally in auto-rebuild mode and see the "
|
||||
"changes, run:"
|
||||
|
||||
#: ../../root/contributing.rst:232
|
||||
msgid ""
|
||||
"Откройте `127.0.0.1:8000` в браузере, чтобы просмотреть сгенерированную "
|
||||
"документацию."
|
||||
msgstr "Open `127.0.0.1:8000` in your browser to view the generated documentation."
|
||||
|
||||
#: ../../root/contributing.rst:233
|
||||
msgid ""
|
||||
"После завершения работы над русской версией необходимо создать английский"
|
||||
" перевод:"
|
||||
msgstr ""
|
||||
"After completing work on the Russian version, you need to create an "
|
||||
"English translation:"
|
||||
|
||||
#: ../../root/contributing.rst:239
|
||||
msgid ""
|
||||
"После обновления шаблона обновите файлы перевода, расположенные в "
|
||||
"`docs/locales/en/LC_MESSAGES/`."
|
||||
msgstr ""
|
||||
"After updating the template, update the translation files located in "
|
||||
"`docs/locales/en/LC_MESSAGES/`."
|
||||
|
||||
#: ../../root/contributing.rst:240
|
||||
msgid ""
|
||||
"Когда изменения будут готовы, сделайте коммит и откройте `Pull Request`. "
|
||||
"Используйте префикс `docs:` в сообщении коммита."
|
||||
msgstr ""
|
||||
"When the changes are ready, commit and open a `Pull Request`. Use the "
|
||||
"`docs:` prefix in the commit message."
|
||||
|
||||
#: ../../root/contributing.rst:247
|
||||
msgid "Руководства по стилю"
|
||||
msgstr "Style Guides"
|
||||
|
||||
#: ../../root/contributing.rst:251
|
||||
msgid "**Сообщения коммитов**"
|
||||
msgstr "**Commit Messages**"
|
||||
|
||||
#: ../../root/contributing.rst:253
|
||||
msgid ""
|
||||
"Мы следуем спецификации `Conventional Commits "
|
||||
"<https://www.conventionalcommits.org/en/v1.0.0/>`_. Это делает историю "
|
||||
"проекта более читаемой и позволяет автоматически генерировать журнал "
|
||||
"изменений."
|
||||
msgstr ""
|
||||
"We follow the `Conventional Commits "
|
||||
"<https://www.conventionalcommits.org/en/v1.0.0/>`_ specification. This "
|
||||
"makes the project history more readable and allows automatic changelog "
|
||||
"generation."
|
||||
|
||||
#: ../../root/contributing.rst:255
|
||||
msgid ""
|
||||
"Каждое сообщение коммита состоит из **заголовка**, **тела** и **нижнего "
|
||||
"колонтитула**."
|
||||
msgstr "Each commit message consists of a **header**, **body**, and **footer**."
|
||||
|
||||
#: ../../root/contributing.rst:265
|
||||
msgid "``<тип>`` должен быть одним из следующих:"
|
||||
msgstr "``<type>`` must be one of the following:"
|
||||
|
||||
#: ../../root/contributing.rst:267
|
||||
msgid "**feat**: Новая функция для пользователя."
|
||||
msgstr "**feat**: A new feature for the user."
|
||||
|
||||
#: ../../root/contributing.rst:268
|
||||
msgid "**fix**: Исправление ошибки для пользователя."
|
||||
msgstr "**fix**: A bug fix for the user."
|
||||
|
||||
#: ../../root/contributing.rst:269
|
||||
msgid "**docs**: Только изменения в документации."
|
||||
msgstr "**docs**: Documentation changes only."
|
||||
|
||||
#: ../../root/contributing.rst:270
|
||||
msgid ""
|
||||
"**style**: Изменения, не влияющие на смысл кода (пробелы, форматирование "
|
||||
"и т.д.)."
|
||||
msgstr ""
|
||||
"**style**: Changes that don't affect the meaning of the code (whitespace,"
|
||||
" formatting, etc.)."
|
||||
|
||||
#: ../../root/contributing.rst:271
|
||||
msgid ""
|
||||
"**refactor**: Изменение кода, которое не исправляет ошибку и не добавляет"
|
||||
" новую функцию."
|
||||
msgstr "**refactor**: A code change that neither fixes a bug nor adds a feature."
|
||||
|
||||
#: ../../root/contributing.rst:272
|
||||
msgid "**perf**: Изменение кода, улучшающее производительность."
|
||||
msgstr "**perf**: A code change that improves performance."
|
||||
|
||||
#: ../../root/contributing.rst:273
|
||||
msgid "**test**: Добавление недостающих тестов или исправление существующих."
|
||||
msgstr "**test**: Adding missing tests or correcting existing tests."
|
||||
|
||||
#: ../../root/contributing.rst:274
|
||||
msgid ""
|
||||
"**chore**: Изменения в процессе сборки или вспомогательных инструментах и"
|
||||
" библиотеках."
|
||||
msgstr "**chore**: Changes to the build process or auxiliary tools and libraries."
|
||||
|
||||
#: ../../root/contributing.rst:277
|
||||
msgid "Примеры"
|
||||
msgstr "Examples"
|
||||
|
||||
#: ../../root/contributing.rst:278
|
||||
msgid "Простое исправление: ``fix: correct typo in user authentication flow``"
|
||||
msgstr "Simple fix: ``fix: correct typo in user authentication flow``"
|
||||
|
||||
#: ../../root/contributing.rst:281
|
||||
msgid ""
|
||||
"Новая функция с областью видимости: ``feat(api): add new endpoint for "
|
||||
"user profiles``"
|
||||
msgstr "New feature with scope: ``feat(api): add new endpoint for user profiles``"
|
||||
|
||||
#: ../../root/contributing.rst:289
|
||||
msgid "Присоединяйтесь к команде проекта"
|
||||
msgstr "Join the Project Team"
|
||||
|
||||
#: ../../root/contributing.rst:291
|
||||
msgid ""
|
||||
"Мы всегда ищем энтузиастов для присоединения к команде. Если вы являетесь"
|
||||
" постоянным участником и продемонстрировали глубокое понимание целей и "
|
||||
"архитектуры проекта, вы можете стать хорошим кандидатом на роль "
|
||||
"мейнтейнера."
|
||||
msgstr ""
|
||||
"We are always looking for enthusiasts to join the team. If you are a "
|
||||
"regular contributor and have demonstrated a deep understanding of the "
|
||||
"project's goals and architecture, you may be a good candidate for a "
|
||||
"maintainer role."
|
||||
|
||||
#: ../../root/contributing.rst:293
|
||||
msgid ""
|
||||
"Активные члены сообщества могут стать членами команды. Обычно это "
|
||||
"включает:"
|
||||
msgstr "Active community members can become team members. This typically includes:"
|
||||
|
||||
#: ../../root/contributing.rst:295
|
||||
msgid "Постоянный вклад в виде качественного кода и документации."
|
||||
msgstr "Consistent contributions of quality code and documentation."
|
||||
|
||||
#: ../../root/contributing.rst:296
|
||||
msgid "Помощь другим пользователям с их вопросами и проблемами."
|
||||
msgstr "Helping other users with their questions and issues."
|
||||
|
||||
#: ../../root/contributing.rst:297
|
||||
msgid ""
|
||||
"Проверку `Pull Request`'ов от других участников с конструктивной обратной"
|
||||
" связью."
|
||||
msgstr ""
|
||||
"Reviewing `Pull Requests` from other contributors with constructive "
|
||||
"feedback."
|
||||
|
||||
#: ../../root/contributing.rst:299
|
||||
msgid ""
|
||||
"Если вы заинтересованы в том, чтобы стать постоянным членом команды, "
|
||||
"лучший способ — быть активным и полезным участником сообщества. "
|
||||
"Существующие мейнтейнеры заметят ваши усилия и могут связаться с вами."
|
||||
msgstr ""
|
||||
"If you are interested in becoming a permanent team member, the best way "
|
||||
"is to be an active and helpful community contributor. Existing "
|
||||
"maintainers will notice your efforts and may reach out to you."
|
||||
|
||||
@@ -0,0 +1,175 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-04 20:39+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/dependency_injection.rst:4
|
||||
msgid "Внедрение зависимостей"
|
||||
msgstr "Dependency Injection"
|
||||
|
||||
#: ../../root/dependency_injection.rst:6
|
||||
msgid ""
|
||||
"Внедрение зависимостей (Dependency Injection, DI) — это паттерн "
|
||||
"проектирования, который помогает писать слабосвязанный, легко тестируемый"
|
||||
" и расширяемый код. Вместо того чтобы обработчики сами создавали нужные "
|
||||
"им объекты (зависимости), они получают их извне."
|
||||
msgstr ""
|
||||
"Dependency Injection (DI) is a design pattern that helps write loosely "
|
||||
"coupled, easily testable, and extensible code. Instead of handlers "
|
||||
"creating the objects (dependencies) they need themselves, they receive "
|
||||
"them from outside."
|
||||
|
||||
#: ../../root/dependency_injection.rst:8
|
||||
msgid ""
|
||||
"``Argenta`` использует библиотеку ``dishka`` для реализации DI, что "
|
||||
"позволяет декларативно объявлять зависимости прямо в сигнатурах ваших "
|
||||
"обработчиков. Подробнее о DI, IoC и API для создания провайдеров можно "
|
||||
"прочитать в `официальной документации dishka "
|
||||
"<https://dishka.readthedocs.io/en/stable/di_intro.html>`_."
|
||||
msgstr ""
|
||||
"``Argenta`` uses the ``dishka`` library to implement DI, which allows you"
|
||||
" to declaratively declare dependencies directly in your handler "
|
||||
"signatures. You can read more about DI, IoC, and the API for "
|
||||
"creating providers in the `official dishka documentation "
|
||||
"<https://dishka.readthedocs.io/en/stable/di_intro.html>`_."
|
||||
|
||||
#: ../../root/dependency_injection.rst:14
|
||||
msgid "Основная идея"
|
||||
msgstr "Main Idea"
|
||||
|
||||
#: ../../root/dependency_injection.rst:16
|
||||
msgid ""
|
||||
"Представьте, что вашему обработчику для работы нужен доступ к базе "
|
||||
"данных. Вместо импорта и инициализации соединения внутри функции, вы "
|
||||
"просто объявляете его как аргумент с аннотацией типа:"
|
||||
msgstr ""
|
||||
"Imagine your handler needs access to a database to work. Instead of "
|
||||
"importing and initializing the connection inside the function, you simply"
|
||||
" declare it as an argument with a type annotation:"
|
||||
|
||||
#: ../../root/dependency_injection.rst:19
|
||||
msgid ""
|
||||
"``argenta.di.FromDishka`` является алиасом для ``dishka.FromDishka``, и "
|
||||
"они полностью взаимозаменяемы."
|
||||
msgstr ""
|
||||
"``argenta.di.FromDishka`` is an alias for ``dishka.FromDishka``, and they"
|
||||
" are fully interchangeable."
|
||||
|
||||
#: ../../root/dependency_injection.rst:21
|
||||
#: ../../root/dependency_injection.rst:29
|
||||
#: ../../root/dependency_injection.rst:40
|
||||
#: ../../root/dependency_injection.rst:63
|
||||
msgid "**Пример использования:**"
|
||||
msgstr "**Usage example:**"
|
||||
|
||||
#: ../../root/dependency_injection.rst:27
|
||||
msgid ""
|
||||
"``Argenta`` с помощью ``dishka`` разрешит зависимость по типу "
|
||||
"``Connection`` и внедрит её. Но прежде чем использовать зависимость, её "
|
||||
"необходимо объявить в провайдере:"
|
||||
msgstr ""
|
||||
"``Argenta`` with ``dishka`` will resolve the dependency by type "
|
||||
"``Connection`` and inject it. But before using the dependency, it must be"
|
||||
" declared in a provider:"
|
||||
|
||||
#: ../../root/dependency_injection.rst:35
|
||||
msgid "После создания провайдера его необходимо зарегистрировать в оркестраторе."
|
||||
msgstr "After creating the provider, it must be registered in the orchestrator."
|
||||
|
||||
#: ../../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 "Как это работает?"
|
||||
msgstr "How Does It Work?"
|
||||
|
||||
#: ../../root/dependency_injection.rst:51
|
||||
msgid "В основе DI в Argenta лежат **провайдеры** и **контейнер**."
|
||||
msgstr "At the core of DI in Argenta are **providers** and a **container**."
|
||||
|
||||
#: ../../root/dependency_injection.rst:53
|
||||
msgid ""
|
||||
"**Провайдер (Provider)** — это \"рецепт\", который объясняет, как "
|
||||
"создавать и настраивать ту или иную зависимость (например, подключение к "
|
||||
"БД, API-клиент или любой другой сервис)."
|
||||
msgstr ""
|
||||
"**Provider (Provider)** is a \"recipe\" that explains how to create and "
|
||||
"configure a particular dependency (for example, a database connection, "
|
||||
"API client, or any other service)."
|
||||
|
||||
#: ../../root/dependency_injection.rst:54
|
||||
msgid ""
|
||||
"**Контейнер (IoC Container)** — это \"фабрика\", которая хранит все "
|
||||
"рецепты (провайдеры) и по запросу создаёт и выдаёт готовые зависимости."
|
||||
msgstr ""
|
||||
"**Container (IoC Container)** is a \"factory\" that stores all recipes "
|
||||
"(providers) and creates and provides ready dependencies on request."
|
||||
|
||||
#: ../../root/dependency_injection.rst:59
|
||||
msgid "Встроенные провайдеры"
|
||||
msgstr "Built-in Providers"
|
||||
|
||||
#: ../../root/dependency_injection.rst:61
|
||||
msgid ""
|
||||
"``Argenta`` поставляется со встроенным провайдером, который даёт доступ к"
|
||||
" важным системным зависимостям без дополнительной настройки. Например, вы"
|
||||
" можете получить объект :ref:`ArgSpace <root_api_orchestrator_argspace>`,"
|
||||
" который содержит аргументы командной строки, переданные при запуске "
|
||||
"приложения."
|
||||
msgstr ""
|
||||
"``Argenta`` comes with a built-in provider that gives access to important"
|
||||
" system dependencies without additional configuration. For example, you "
|
||||
"can get the :ref:`ArgSpace <root_api_orchestrator_argspace>` object, "
|
||||
"which contains the command-line arguments passed when the application was "
|
||||
"launched."
|
||||
|
||||
#: ../../root/dependency_injection.rst:72
|
||||
msgid "Обмен данными между обработчиками"
|
||||
msgstr "Data Exchange Between Handlers"
|
||||
|
||||
#: ../../root/dependency_injection.rst:74
|
||||
msgid ""
|
||||
"Помимо DI, обработчики могут обмениваться данными в рамках сессии через "
|
||||
"**объект контекста**. В ``Argenta`` эту роль выполняет объект "
|
||||
"``DataBridge``."
|
||||
msgstr ""
|
||||
"In addition to DI, handlers can exchange data within a session through a "
|
||||
"**context object**. In ``Argenta``, this role is performed by the "
|
||||
"``DataBridge`` object."
|
||||
|
||||
#: ../../root/dependency_injection.rst:76
|
||||
msgid ""
|
||||
"Каждый обработчик может записывать в него данные, а также читать, "
|
||||
"обновлять и удалять их."
|
||||
msgstr ""
|
||||
"Each handler can write data to it, as well as read, update, and delete "
|
||||
"data."
|
||||
|
||||
#: ../../root/dependency_injection.rst:79
|
||||
msgid "Подробнее об этом можно прочитать в разделе :ref:`root_api_bridge`."
|
||||
msgstr "You can read more about this in the :ref:`root_api_bridge` section."
|
||||
|
||||
@@ -0,0 +1,195 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-02 22:27+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/error_handling.rst:4
|
||||
msgid "Обработка ошибок"
|
||||
msgstr "Error Handling"
|
||||
|
||||
#: ../../root/error_handling.rst:6
|
||||
msgid ""
|
||||
"``Argenta`` выбрасывает исключения в пограничных случаях, связанных с "
|
||||
"пользовательским вводом. По умолчанию они обрабатываются системными "
|
||||
"обработчиками, но вы можете их переопределить. Это делается с помощью "
|
||||
"сеттеров экземпляра ``App`` вида ``.set_*_handler()``. Подробнее о каждом"
|
||||
" из них рассказано :ref:`ниже <possible_errors>`."
|
||||
msgstr ""
|
||||
"``Argenta`` throws exceptions in edge cases related to user input. By default, "
|
||||
"they are handled by system handlers, but you can override them. This is done using "
|
||||
"``App`` instance setters of the form ``.set_*_handler()``. More details about each "
|
||||
"of them are described :ref:`below <possible_errors>`."
|
||||
|
||||
#: ../../root/error_handling.rst:10
|
||||
msgid ""
|
||||
"Ни одно исключение не остаётся необработанным, так как для каждого случая"
|
||||
" предусмотрен стандартный обработчик. Поэтому переопределение является "
|
||||
"опциональным."
|
||||
msgstr ""
|
||||
"No exception goes unhandled, as a default handler is provided for each case. "
|
||||
"Therefore, overriding is optional."
|
||||
|
||||
#: ../../root/error_handling.rst:12 ../../root/error_handling.rst:37
|
||||
#: ../../root/error_handling.rst:61 ../../root/error_handling.rst:82
|
||||
#: ../../root/error_handling.rst:105 ../../root/error_handling.rst:126
|
||||
msgid "**Пример использования:**"
|
||||
msgstr "**Usage example:**"
|
||||
|
||||
#: ../../root/error_handling.rst:22
|
||||
msgid "Возможные исключения и нестандартное поведение"
|
||||
msgstr "Possible Exceptions and Non-Standard Behavior"
|
||||
|
||||
#: ../../root/error_handling.rst:25
|
||||
msgid "``UnprocessedInputFlagException``: Некорректный синтаксис флагов"
|
||||
msgstr "``UnprocessedInputFlagException``: Incorrect Flag Syntax"
|
||||
|
||||
#: ../../root/error_handling.rst:27
|
||||
msgid ""
|
||||
"Это исключение выбрасывается, когда парсер не может обработать команду "
|
||||
"из-за некорректного синтаксиса. Чаще всего это связано с ошибкой в "
|
||||
"синтаксисе флагов. Подробнее о них можно прочитать в разделе :ref:`Flags "
|
||||
"<root_flags>`."
|
||||
msgstr ""
|
||||
"This exception is thrown when the parser cannot process a command due to incorrect "
|
||||
"syntax. Most often this is related to an error in flag syntax. You can read more "
|
||||
"about them in the :ref:`Flags <root_flags>` section."
|
||||
|
||||
#: ../../root/error_handling.rst:29 ../../root/error_handling.rst:53
|
||||
#: ../../root/error_handling.rst:74 ../../root/error_handling.rst:97
|
||||
msgid "Стандартный обработчик выводит в консоль:"
|
||||
msgstr "The default handler outputs to the console:"
|
||||
|
||||
#: ../../root/error_handling.rst:35
|
||||
msgid ""
|
||||
"Для переопределения используется сеттер "
|
||||
"``.set_incorrect_input_syntax_handler()``. Он принимает на вход "
|
||||
"обработчик с сигнатурой ``Callable[[str], None]``, где единственный "
|
||||
"аргумент — это строка с необработанной командой."
|
||||
msgstr ""
|
||||
"To override, use the ``.set_incorrect_input_syntax_handler()`` setter. It accepts "
|
||||
"a handler with the signature ``Callable[[str], None]``, where the only argument is "
|
||||
"a string with the unprocessed command."
|
||||
|
||||
#: ../../root/error_handling.rst:46
|
||||
msgid "``RepeatedInputFlagsException``: Повторяющиеся флаги в команде"
|
||||
msgstr "``RepeatedInputFlagsException``: Repeated Flags in Command"
|
||||
|
||||
#: ../../root/error_handling.rst:48
|
||||
msgid ""
|
||||
"Исключение выбрасывается, если пользователь ввёл команду с повторяющимися"
|
||||
" флагами. Два флага (:ref:`InputFlag <root_api_command_input_flag>`) "
|
||||
"считаются одинаковыми, если у них совпадают имена. Подробнее о флагах и "
|
||||
"их синтаксисе — в разделе :ref:`Flags <root_flags>`."
|
||||
msgstr ""
|
||||
"The exception is thrown if the user entered a command with repeated flags. Two "
|
||||
"flags (:ref:`InputFlag <root_api_command_input_flag>`) are considered the same if "
|
||||
"their names match. More about flags and their syntax in the :ref:`Flags "
|
||||
"<root_flags>` section."
|
||||
|
||||
#: ../../root/error_handling.rst:51
|
||||
msgid ""
|
||||
"Сравнение на равенство у регистрируемых флагов (``Flag``) происходит "
|
||||
"иначе, подробнее в :ref:`Flag <root_flags>`."
|
||||
msgstr ""
|
||||
"Equality comparison for registered flags (``Flag``) works differently, see "
|
||||
":ref:`Flag <root_flags>` for details."
|
||||
|
||||
#: ../../root/error_handling.rst:59
|
||||
msgid ""
|
||||
"Для переопределения используется сеттер "
|
||||
"``.set_repeated_input_flags_handler()``. Он принимает на вход обработчик "
|
||||
"с сигнатурой ``Callable[[str], None]``, где единственный аргумент — это "
|
||||
"строка с необработанной командой."
|
||||
msgstr ""
|
||||
"To override, use the ``.set_repeated_input_flags_handler()`` setter. It accepts a "
|
||||
"handler with the signature ``Callable[[str], None]``, where the only argument is a "
|
||||
"string with the unprocessed command."
|
||||
|
||||
#: ../../root/error_handling.rst:70
|
||||
msgid "``EmptyInputCommandException``: Введена пустая команда"
|
||||
msgstr "``EmptyInputCommandException``: Empty Command Entered"
|
||||
|
||||
#: ../../root/error_handling.rst:72
|
||||
msgid ""
|
||||
"Исключение выбрасывается, если пользователь ввёл пустую строку или "
|
||||
"строку, состоящую только из пробельных символов (``\\n``, ``\\t``, пробел"
|
||||
" и т.д.)."
|
||||
msgstr ""
|
||||
"The exception is thrown if the user entered an empty string or a string consisting "
|
||||
"only of whitespace characters (``\\n``, ``\\t``, space, etc.)."
|
||||
|
||||
#: ../../root/error_handling.rst:80
|
||||
msgid ""
|
||||
"Для переопределения используется сеттер ``.set_empty_command_handler()``."
|
||||
" Он принимает на вход обработчик с сигнатурой ``Callable[[], None]`` (без"
|
||||
" аргументов)."
|
||||
msgstr ""
|
||||
"To override, use the ``.set_empty_command_handler()`` setter. It accepts a handler "
|
||||
"with the signature ``Callable[[], None]`` (no arguments)."
|
||||
|
||||
#: ../../root/error_handling.rst:93
|
||||
msgid "Обработка неизвестной команды"
|
||||
msgstr "Handling Unknown Commands"
|
||||
|
||||
#: ../../root/error_handling.rst:95
|
||||
msgid ""
|
||||
"Это поведение активируется, когда пользователь вводит команду, которая не"
|
||||
" зарегистрирована ни в одном из роутеров и не является псевдонимом "
|
||||
"(alias) для существующей команды."
|
||||
msgstr ""
|
||||
"This behavior is triggered when the user enters a command that is not registered "
|
||||
"in any of the routers and is not an alias for an existing command."
|
||||
|
||||
#: ../../root/error_handling.rst:103
|
||||
msgid ""
|
||||
"Для переопределения используется сеттер "
|
||||
"``.set_unknown_command_handler()``. Он принимает на вход обработчик с "
|
||||
"сигнатурой ``Callable[[InputCommand], None]``, где аргумент — объект "
|
||||
":ref:`InputCommand <root_api_command_input_command>`."
|
||||
msgstr ""
|
||||
"To override, use the ``.set_unknown_command_handler()`` setter. It accepts a "
|
||||
"handler with the signature ``Callable[[InputCommand], None]``, where the argument "
|
||||
"is an :ref:`InputCommand <root_api_command_input_command>` object."
|
||||
|
||||
#: ../../root/error_handling.rst:114
|
||||
msgid "Выход из приложения"
|
||||
msgstr "Exiting the Application"
|
||||
|
||||
#: ../../root/error_handling.rst:116
|
||||
msgid ""
|
||||
"Это поведение активируется, когда пользователь вводит команду, помеченную"
|
||||
" как команда выхода."
|
||||
msgstr ""
|
||||
"This behavior is triggered when the user enters a command marked as an exit command."
|
||||
|
||||
#: ../../root/error_handling.rst:118
|
||||
msgid ""
|
||||
"Стандартный обработчик выводит в консоль текст и завершает работу "
|
||||
"приложения:"
|
||||
msgstr "The default handler outputs text to the console and terminates the application:"
|
||||
|
||||
#: ../../root/error_handling.rst:124
|
||||
msgid ""
|
||||
"Для переопределения используется сеттер ``.set_exit_command_handler()``. "
|
||||
"Он принимает на вход обработчик с сигнатурой ``Callable[[Response], "
|
||||
"None]``, где аргумент — объект :ref:`Response <root_api_response>`."
|
||||
msgstr ""
|
||||
"To override, use the ``.set_exit_command_handler()`` setter. It accepts a handler "
|
||||
"with the signature ``Callable[[Response], None]``, where the argument is a "
|
||||
":ref:`Response <root_api_response>` object."
|
||||
|
||||
@@ -0,0 +1,440 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2025, kolo
|
||||
# This file is distributed under the same license as the Argenta package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Argenta \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-12-04 20:39+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
"Language-Team: en <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.17.0\n"
|
||||
|
||||
#: ../../root/flags.rst:4
|
||||
msgid "Флаги вводимых команд"
|
||||
msgstr "Input Command Flags"
|
||||
|
||||
#: ../../root/flags.rst:6
|
||||
msgid ""
|
||||
"Флаги — это специальные параметры, которые пользователь может добавлять к"
|
||||
" командам для управления их поведением."
|
||||
msgstr ""
|
||||
"Flags are special parameters that users can add to commands to control "
|
||||
"their behavior."
|
||||
|
||||
#: ../../root/flags.rst:9
|
||||
msgid "Зачем нужны флаги в командах"
|
||||
msgstr "Why Flags Are Needed in Commands"
|
||||
|
||||
#: ../../root/flags.rst:12
|
||||
msgid "Управление поведением команды"
|
||||
msgstr "Controlling Command Behavior"
|
||||
|
||||
#: ../../root/flags.rst:14
|
||||
msgid ""
|
||||
"Основная цель флагов — предоставить способ изменить логику работы команды"
|
||||
" без её переработки. Команда может работать в нескольких режимах: "
|
||||
"стандартном, подробном, отладочном или упрощённом. Флаги переключают эти "
|
||||
"режимы по требованию пользователя, оставляя основную функциональность "
|
||||
"неизменной."
|
||||
msgstr ""
|
||||
"The main purpose of flags is to provide a way to change the command's "
|
||||
"logic without reworking it. A command can operate in several modes: "
|
||||
"standard, verbose, debug, or simplified. Flags switch these modes on user"
|
||||
" demand, keeping the core functionality unchanged."
|
||||
|
||||
#: ../../root/flags.rst:17
|
||||
msgid "Опциональность и удобство"
|
||||
msgstr "Optionality and Convenience"
|
||||
|
||||
#: ../../root/flags.rst:19
|
||||
msgid ""
|
||||
"Флаги решают проблему обязательности параметров. Если все параметры "
|
||||
"команды сделать обязательными, это затруднит использование команды. Флаги"
|
||||
" же позволяют задать значения только необходимые в конкретной ситуации, "
|
||||
"остальные используют значения по умолчанию."
|
||||
msgstr ""
|
||||
"Flags solve the problem of mandatory parameters. If all command "
|
||||
"parameters are made required, it makes the command difficult to use. "
|
||||
"Flags allow you to specify only the values needed in a specific "
|
||||
"situation, while others use default values."
|
||||
|
||||
#: ../../root/flags.rst:22
|
||||
msgid "Когда могут понадобиться флаги"
|
||||
msgstr "When Flags Might Be Needed"
|
||||
|
||||
#: ../../root/flags.rst:24
|
||||
msgid "**Переключение режимов работы**"
|
||||
msgstr "**Switching Operation Modes**"
|
||||
|
||||
#: ../../root/flags.rst:25
|
||||
msgid ""
|
||||
"Команда выполняет развёртывание приложения обычно, но нужен режим без "
|
||||
"фактического развёртывания (dry-run) для проверки. Флаг ``--dry-run`` "
|
||||
"переключит режим работы."
|
||||
msgstr ""
|
||||
"A command deploys an application normally, but a mode without actual "
|
||||
"deployment (dry-run) is needed for verification. The ``--dry-run`` flag "
|
||||
"will switch the mode."
|
||||
|
||||
#: ../../root/flags.rst:27
|
||||
msgid "**Настройка уровня детальности**"
|
||||
msgstr "**Adjusting Verbosity Level**"
|
||||
|
||||
#: ../../root/flags.rst:28
|
||||
msgid ""
|
||||
"При отладке или анализе требуется больше информации о процессе выполнения"
|
||||
" команды. Флаги ``--verbose`` или ``--debug`` предоставляют подробный "
|
||||
"вывод."
|
||||
msgstr ""
|
||||
"When debugging or analyzing, more information about the command execution"
|
||||
" process is required. The ``--verbose`` or ``--debug`` flags provide "
|
||||
"detailed output."
|
||||
|
||||
#: ../../root/flags.rst:30
|
||||
msgid "**Управление поведением при ошибках**"
|
||||
msgstr "**Managing Error Behavior**"
|
||||
|
||||
#: ../../root/flags.rst:31
|
||||
msgid ""
|
||||
"По умолчанию команда может прерваться при первой ошибке. Флаг ``--force``"
|
||||
" позволит продолжить работу, пропуская некритичные ошибки."
|
||||
msgstr ""
|
||||
"By default, a command may abort on the first error. The ``--force`` flag "
|
||||
"allows continuing execution, skipping non-critical errors."
|
||||
|
||||
#: ../../root/flags.rst:33
|
||||
msgid "**Форматирование вывода**"
|
||||
msgstr "**Output Formatting**"
|
||||
|
||||
#: ../../root/flags.rst:34
|
||||
msgid ""
|
||||
"Команда выводит данные текстом, но в некоторых сценариях нужен JSON или "
|
||||
"CSV. Флаг ``--format=json`` переключит формат вывода."
|
||||
msgstr ""
|
||||
"A command outputs data as text, but in some scenarios JSON or CSV is "
|
||||
"needed. The ``--format=json`` flag will switch the output format."
|
||||
|
||||
#: ../../root/flags.rst:36
|
||||
msgid "**Комбинирование опций**"
|
||||
msgstr "**Combining Options**"
|
||||
|
||||
#: ../../root/flags.rst:37
|
||||
msgid ""
|
||||
"Часто нужна комбинация нескольких изменений: подробный вывод, dry-run "
|
||||
"режим и JSON формат. Несколько флагов решают эту задачу одновременно."
|
||||
msgstr ""
|
||||
"Often a combination of several changes is needed: verbose output, dry-run"
|
||||
" mode, and JSON format. Multiple flags solve this task simultaneously."
|
||||
|
||||
#: ../../root/flags.rst:40
|
||||
msgid "Практическое значение"
|
||||
msgstr "Practical Significance"
|
||||
|
||||
#: ../../root/flags.rst:42
|
||||
msgid ""
|
||||
"Флаги делают команды более предсказуемыми и контролируемыми. Пользователь"
|
||||
" может начать с простого использования, а затем добавлять флаги по мере "
|
||||
"необходимости. Это особенно важно при автоматизации задач в скриптах, где"
|
||||
" гибкость интерфейса критична."
|
||||
msgstr ""
|
||||
"Flags make commands more predictable and controllable. Users can start "
|
||||
"with simple usage and then add flags as needed. This is especially "
|
||||
"important when automating tasks in scripts, where interface flexibility "
|
||||
"is critical."
|
||||
|
||||
#: ../../root/flags.rst:44
|
||||
msgid ""
|
||||
"Флаги также облегчают интеграцию команд в различные системы, так как "
|
||||
"дополнительное поведение достигается без изменения структуры команды, а "
|
||||
"только через передачу опциональных параметров."
|
||||
msgstr ""
|
||||
"Flags also facilitate command integration into various systems, as "
|
||||
"additional behavior is achieved without changing the command structure, "
|
||||
"only through passing optional parameters."
|
||||
|
||||
#: ../../root/flags.rst:49
|
||||
msgid "Синтаксис флагов"
|
||||
msgstr "Flag Syntax"
|
||||
|
||||
#: ../../root/flags.rst:51
|
||||
msgid "Общий синтаксис выглядит так:"
|
||||
msgstr "The general syntax looks like this:"
|
||||
|
||||
#: ../../root/flags.rst:57
|
||||
msgid ""
|
||||
"Флаг состоит из префикса (``-``, ``--`` или ``---``), имени и, "
|
||||
"опционально, значения, которое указывается через пробел."
|
||||
msgstr ""
|
||||
"A flag consists of a prefix (``-``, ``--``, or ``---``), a name, and "
|
||||
"optionally a value, which is specified with a space."
|
||||
|
||||
#: ../../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 "Два типа флагов"
|
||||
msgstr "Two Types of Flags"
|
||||
|
||||
#: ../../root/flags.rst:94
|
||||
msgid "Флаги бывают двух основных видов:"
|
||||
msgstr "Flags come in two main types:"
|
||||
|
||||
#: ../../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 ""
|
||||
"Ошибки валидации не выбрасывают исключений. Вместо этого у каждого "
|
||||
"объекта :ref:`InputFlag <root_api_command_input_flag>` есть атрибут "
|
||||
"``status``, по которому можно определить, прошла ли валидация успешно. "
|
||||
"Подробное описание API для создания флагов находится в разделе :ref:`Flag"
|
||||
" <root_api_command_flag>`."
|
||||
msgstr ""
|
||||
"Validation errors do not throw exceptions. Instead, each :ref:`InputFlag "
|
||||
"<root_api_command_input_flag>` object has a ``status`` attribute that can"
|
||||
" be used to determine if validation was successful. A detailed "
|
||||
"description of the API for creating flags is in the :ref:`Flag "
|
||||
"<root_api_command_flag>` section."
|
||||
|
||||
#: ../../root/flags.rst:104
|
||||
msgid ""
|
||||
"При регистрации флага можно задать правила валидации для его значения. По"
|
||||
" умолчанию любое значение считается корректным. Валидацию можно настроить"
|
||||
" несколькими способами:"
|
||||
msgstr ""
|
||||
"When registering a flag, you can set validation rules for its value. By "
|
||||
"default, any value is considered valid. Validation can be configured in "
|
||||
"several ways:"
|
||||
|
||||
#: ../../root/flags.rst:109
|
||||
msgid "Флаги против аргументов"
|
||||
msgstr "Flags vs Arguments"
|
||||
|
||||
#: ../../root/flags.rst:111
|
||||
msgid ""
|
||||
"В контексте Argenta флаги и аргументы относятся к разным уровням "
|
||||
"взаимодействия с приложением."
|
||||
msgstr ""
|
||||
"In the context of Argenta, flags and arguments belong to different levels"
|
||||
" of interaction with the application."
|
||||
|
||||
#: ../../root/flags.rst:113
|
||||
msgid ""
|
||||
"**Аргументы** — это параметры, передаваемые при запуске приложения. Они "
|
||||
"определяют глобальную конфигурацию на протяжении всей его работы "
|
||||
"(например, адрес базы данных, уровень логирования)."
|
||||
msgstr ""
|
||||
"**Arguments** are parameters passed when launching the application. They "
|
||||
"define the global configuration throughout its operation (for example, "
|
||||
"database address, logging level)."
|
||||
|
||||
#: ../../root/flags.rst:115
|
||||
msgid ""
|
||||
"API и более подробное описание в разделах :ref:`ArgParser "
|
||||
"<root_api_orchestrator_argparser>` и :ref:`Arguments "
|
||||
"<root_api_orchestrator_arguments>`."
|
||||
msgstr ""
|
||||
"API and more detailed description in the :ref:`ArgParser "
|
||||
"<root_api_orchestrator_argparser>` and :ref:`Arguments "
|
||||
"<root_api_orchestrator_arguments>` sections."
|
||||
|
||||
#: ../../root/flags.rst:117
|
||||
msgid ""
|
||||
"**Флаги** — это параметры командных операций, доступные в рамках "
|
||||
"интерактивной сессии при вводе каждой новой команды. Они позволяют "
|
||||
"модифицировать поведение конкретной команды без перезагрузки приложения."
|
||||
msgstr ""
|
||||
"**Flags** are command operation parameters available within an "
|
||||
"interactive session when entering each new command. They allow modifying "
|
||||
"the behavior of a specific command without restarting the application."
|
||||
|
||||
#: ../../root/flags.rst:119
|
||||
msgid ""
|
||||
"API и более подробное описание в разделе :ref:`Flag "
|
||||
"<root_api_command_flag>`."
|
||||
msgstr ""
|
||||
"API and more detailed description in the :ref:`Flag "
|
||||
"<root_api_command_flag>` section."
|
||||
|
||||
#: ../../root/flags.rst:124
|
||||
msgid "Ключевые различия"
|
||||
msgstr "Key Differences"
|
||||
|
||||
#: ../../root/flags.rst:126
|
||||
msgid "**Время жизни**"
|
||||
msgstr "**Lifetime**"
|
||||
|
||||
#: ../../root/flags.rst:127
|
||||
msgid ""
|
||||
"Аргументы передаются один раз при запуске и действуют на весь период "
|
||||
"работы приложения. Флаги локальны и существуют только в рамках выполнения"
|
||||
" команды."
|
||||
msgstr ""
|
||||
"Arguments are passed once at startup and remain in effect for the entire "
|
||||
"application runtime. Flags are local and exist only within the execution "
|
||||
"of a command."
|
||||
|
||||
#: ../../root/flags.rst:129
|
||||
msgid "**Изменяемость**"
|
||||
msgstr "**Mutability**"
|
||||
|
||||
#: ../../root/flags.rst:130
|
||||
msgid ""
|
||||
"Для изменения аргументов необходимо перезапустить приложение. Флаги можно"
|
||||
" менять при каждом вводе команды."
|
||||
msgstr ""
|
||||
"To change arguments, the application must be restarted. Flags can be "
|
||||
"changed with each command input."
|
||||
|
||||
#: ../../root/flags.rst:132
|
||||
msgid "**Назначение**"
|
||||
msgstr "**Purpose**"
|
||||
|
||||
#: ../../root/flags.rst:133
|
||||
msgid ""
|
||||
"Аргументы управляют глобальной конфигурацией приложения. Флаги управляют "
|
||||
"поведением отдельных команд."
|
||||
msgstr ""
|
||||
"Arguments control the global configuration of the application. Flags "
|
||||
"control the behavior of individual commands."
|
||||
|
||||
#: ../../root/flags.rst:138
|
||||
msgid "Практические примеры"
|
||||
msgstr "Practical Examples"
|
||||
|
||||
#: ../../root/flags.rst:140
|
||||
msgid "Аргументы при запуске приложения:"
|
||||
msgstr "Arguments at application startup:"
|
||||
|
||||
#: ../../root/flags.rst:142
|
||||
msgid "Адрес подключения к базе данных"
|
||||
msgstr "Database connection address"
|
||||
|
||||
#: ../../root/flags.rst:143
|
||||
msgid "Режим работы (production, development, testing)"
|
||||
msgstr "Operation mode (production, development, testing)"
|
||||
|
||||
#: ../../root/flags.rst:144
|
||||
msgid "Уровень логирования"
|
||||
msgstr "Logging level"
|
||||
|
||||
#: ../../root/flags.rst:146
|
||||
msgid "Флаги в интерактивной сессии:"
|
||||
msgstr "Flags in an interactive session:"
|
||||
|
||||
#: ../../root/flags.rst:148
|
||||
msgid "``deploy --verbose --dry-run`` — для команды развёртывания"
|
||||
msgstr "``deploy --verbose --dry-run`` — for the deployment command"
|
||||
|
||||
#: ../../root/flags.rst:149
|
||||
msgid "``backup --compress --encrypted`` — для команды резервного копирования"
|
||||
msgstr "``backup --compress --encrypted`` — for the backup command"
|
||||
|
||||
#: ../../root/flags.rst:150
|
||||
msgid "``test --parallel --coverage`` — для команды тестирования"
|
||||
msgstr "``test --parallel --coverage`` — for the testing command"
|
||||
|
||||
#~ msgid "Определение и назначение"
|
||||
#~ msgstr "Definition and Purpose"
|
||||
|
||||
#~ msgid "**Частота изменения**"
|
||||
#~ msgstr "**Change Frequency**"
|
||||
|
||||
#~ msgid "**Уровень конфигурации**"
|
||||
#~ 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."
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user