feat(telegram): full i18n — ~230 Russian strings replaced with t() calls
- Added ~120 new i18n keys to both en and ru sections - Replaced all remaining hardcoded Russian strings in telegram.uc - Menu, status, connections, diagnostics, help, subscriptions, quiet hours, test rule, export, MAC blocking, devices, watchdog/AI, QoS, section management, DNS presets, exec, daily digest, update notifications, blocked activity, all navigation buttons - All keys verified present via runtime check
This commit is contained in:
@@ -349,6 +349,185 @@ let strings = {
|
|||||||
|
|
||||||
// ─── Healer ───
|
// ─── Healer ───
|
||||||
heal_running: "AI Doctor running diagnostics and self-healing...",
|
heal_running: "AI Doctor running diagnostics and self-healing...",
|
||||||
|
// ─── Batch i18n additions ───
|
||||||
|
msg_truncated: "... (message truncated)",
|
||||||
|
menu_version: "Version",
|
||||||
|
menu_cpu: "Router CPU",
|
||||||
|
list_header: "⚙️ <b>List:</b>",
|
||||||
|
outbound_groups_not_found: "Proxy groups not found.",
|
||||||
|
outbound_switch_failed: "Failed to switch server",
|
||||||
|
outbound_group: "Group",
|
||||||
|
outbound_server: "Server",
|
||||||
|
outbound_check_hint: "Check if sing-box is running and Clash API is accessible.",
|
||||||
|
section_ips: "IP addresses",
|
||||||
|
section_list_header: "⚙️ <b>Section:</b>",
|
||||||
|
backup_archive_empty: "Archive is empty or corrupted.",
|
||||||
|
backup_archive_unsafe: "Unsafe archive:",
|
||||||
|
backup_restoring: "Checking and restoring backup...",
|
||||||
|
backup_extract_failed: "Failed to extract archive.",
|
||||||
|
backup_not_valid_uci: "config/tachyon in archive is not a valid UCI.",
|
||||||
|
backup_no_config: "Archive contains neither config/tachyon nor tachyon/ directory.",
|
||||||
|
backup_save_config_failed: "Failed to save current config.",
|
||||||
|
backup_save_data_failed: "Failed to save current /etc/tachyon data.",
|
||||||
|
backup_write_config_error: "Write error /etc/config/tachyon.",
|
||||||
|
backup_uci_validation_failed: "Restored config failed UCI validation. Rolled back.",
|
||||||
|
backup_write_data_error: "Write error /etc/tachyon. Rolled back.",
|
||||||
|
backup_restored: "Backup restored. Restarting Tachyon...",
|
||||||
|
backup_done: "Done!",
|
||||||
|
backup_collecting: "Collecting backup...",
|
||||||
|
backup_create_error: "Backup creation error.",
|
||||||
|
support_bundle_collecting: "Generating Support Bundle...",
|
||||||
|
support_bundle_error: "Bundle generation error.",
|
||||||
|
conn_closed_msg: "All active connections closed.\nThey will be re-established along new routes.",
|
||||||
|
conn_close_error: "Connection reset error.\nsing-box Clash API is unavailable.",
|
||||||
|
updates_title: "Component Updates",
|
||||||
|
updates_disabled: "Update check is disabled in settings.",
|
||||||
|
updates_cache_empty: "Cache is empty. Check later.",
|
||||||
|
update_check_error: "Check error",
|
||||||
|
update_new_release_build: "new release build",
|
||||||
|
update_dev_build: "dev build",
|
||||||
|
update_all_current: "All components up to date.",
|
||||||
|
update_cache_parse_error: "Cache parse error:",
|
||||||
|
update_cache_unavailable: "Check cache empty or unavailable.",
|
||||||
|
btn_refresh_cache: "Refresh cache",
|
||||||
|
api_parse_error: "API parsing error:",
|
||||||
|
api_connect_failed: "Failed to connect to sing-box API.",
|
||||||
|
logs_header: "Tachyon Logs",
|
||||||
|
info_title: "System Information",
|
||||||
|
info_device_label: "Device",
|
||||||
|
info_fetch_failed: "Failed to get system information.",
|
||||||
|
sub_empty_url: "(empty)",
|
||||||
|
btn_sub_delete: " 🗑 Delete",
|
||||||
|
btn_add_subscription: "Add subscription",
|
||||||
|
sub_section_subs: "Subscriptions",
|
||||||
|
sub_found_count: "Subscriptions found:",
|
||||||
|
sub_enter_url: "Enter subscription URL:\n\n<i>Send /cancel to cancel</i>",
|
||||||
|
sub_url_empty: "URL cannot be empty.",
|
||||||
|
sub_added: "Subscription added to section",
|
||||||
|
sub_not_found: "Subscription not found.",
|
||||||
|
sub_removed: "Subscription removed from section",
|
||||||
|
help_title: "Command Help",
|
||||||
|
help_main_section: "Main:",
|
||||||
|
help_diag_section: "Diagnostics:",
|
||||||
|
help_manage_section: "Management:",
|
||||||
|
help_settings_section: "Settings:",
|
||||||
|
help_this: "This help",
|
||||||
|
quiet_hours_title: "Quiet Hours",
|
||||||
|
quiet_status: "Status",
|
||||||
|
quiet_enabled_label: "Enabled",
|
||||||
|
quiet_disabled_label: "Disabled",
|
||||||
|
quiet_start_label: "Start:",
|
||||||
|
quiet_end_label: "End:",
|
||||||
|
quiet_hint: "During quiet hours, the bot only sends critical notifications.",
|
||||||
|
btn_enable: "Enable",
|
||||||
|
btn_disable: "Disable",
|
||||||
|
quiet_hour_start: "start",
|
||||||
|
quiet_hour_end: "end",
|
||||||
|
quiet_enter_hour: "⏰ Enter the hour for %s quiet hours (0–23):\n\n<i>Send /cancel to cancel</i>",
|
||||||
|
test_rule_header: "Rule check:",
|
||||||
|
test_match: "Match:",
|
||||||
|
test_action: "Action:",
|
||||||
|
export_title: "Exporting config...",
|
||||||
|
export_done: "Config exported.\n\n⚠️ File contains sensitive data. Do not publish it.",
|
||||||
|
export_failed: "Failed to export config.",
|
||||||
|
mac_invalid: "Invalid MAC address.",
|
||||||
|
mac_firewall_open_failed: "Failed to open firewall configuration.",
|
||||||
|
mac_block_rule_failed: "Failed to create block rule.",
|
||||||
|
mac_blocked: "blocked.",
|
||||||
|
mac_unblocked: "unblocked.",
|
||||||
|
mac_firewall_bg: "Firewall rules are applying in background (a few seconds).",
|
||||||
|
devices_title: "Network Devices:",
|
||||||
|
device_hostname_unknown: "Unknown",
|
||||||
|
devices_not_found: "No devices found.",
|
||||||
|
watchdog_stop_btn: "Stop Watchdog",
|
||||||
|
ai_full_status_btn: "Full AI Status",
|
||||||
|
watchdog_start_btn: "Start Watchdog",
|
||||||
|
ai_incident: "⚠️ Incident resolved:",
|
||||||
|
ai_resolution: "🔧 Auto-fix:",
|
||||||
|
ai_all_ok: "All network services, DNS, nftables and memory are working perfectly.",
|
||||||
|
ai_diag_ok: "Diagnostics completed successfully.",
|
||||||
|
ai_diag_done: "Diagnostics completed.",
|
||||||
|
ai_status_collecting: "Collecting full AI Watchdog status...",
|
||||||
|
ai_status_error: "Status fetch error.",
|
||||||
|
ai_data_truncated: "data truncated",
|
||||||
|
ai_full_status_header: "AI Watchdog — Full Status:",
|
||||||
|
qos_title: "Gaming & Voice QoS Accelerator",
|
||||||
|
qos_enabled_detail: "Enabled (DSCP EF + AF41 Priority)",
|
||||||
|
qos_disabled_detail: "Disabled",
|
||||||
|
qos_priority_rules: "Priority rules:",
|
||||||
|
btn_qos_disable: "Disable QoS",
|
||||||
|
btn_qos_enable: "Enable QoS",
|
||||||
|
cb_obsolete: "Button obsolete — open the list again.",
|
||||||
|
update_component_title: "Starting update",
|
||||||
|
update_bg_hint: "Process started in background. Check later.",
|
||||||
|
err_unknown_component: "Unknown component:",
|
||||||
|
admin_invalid_chat_id: "Invalid Chat ID.",
|
||||||
|
admin_user_added: "User added to admin list.",
|
||||||
|
admin_user_already: "User is already an admin.",
|
||||||
|
sec_enter_name: "Enter a Latin name for the new section (e.g. <code>my_vpn</code>):\n\n<i>Send /cancel to cancel</i>",
|
||||||
|
sec_enter_label: "Enter a new human-readable name (Label) for section",
|
||||||
|
sec_enter_target: "Enter outbound interface (target) for section",
|
||||||
|
sec_not_found: "Section not found.",
|
||||||
|
sec_deleted: "Section deleted.",
|
||||||
|
sec_add_items_prompt: "Send items to add (one per line or space-separated):\n\n<i>Send /cancel to cancel</i>",
|
||||||
|
sec_sub_add_prompt: "Enter section name and subscription URL separated by a space:\n<code>/sec_sub_add Main https://...</code>\n\n<i>Send /cancel to cancel</i>",
|
||||||
|
sec_enter_value: "Enter new value for",
|
||||||
|
sec_add_list_prompt: "Send items to add to the list (space or newline separated):\n\n<i>Send /cancel to cancel</i>",
|
||||||
|
dns_all_protocols: "All protocols",
|
||||||
|
dns_servers_applied: "DNS servers set:",
|
||||||
|
dns_restart_hint: "Restart to apply.",
|
||||||
|
dns_bootstrap_applied: "Bootstrap DNS servers set:",
|
||||||
|
exec_cmd_error: "Command execution error:",
|
||||||
|
exec_access_denied: "Access denied. Your Chat ID:",
|
||||||
|
backup_downloading: "Downloading backup...",
|
||||||
|
backup_download_error: "File download error.",
|
||||||
|
backup_url_error: "File URL error.",
|
||||||
|
backup_format_hint: "Please send the backup in .tar.gz format.",
|
||||||
|
admin_forward_prompt: "Forwarded a message from user",
|
||||||
|
btn_admin_add: "Add",
|
||||||
|
exec_whitelist_msg: "Executing from whitelist:",
|
||||||
|
exec_no_output: "No output",
|
||||||
|
action_cancelled: "Action cancelled.",
|
||||||
|
err_text_expected: "A text message is expected. Try again or /cancel.",
|
||||||
|
value_saved: "Value saved.",
|
||||||
|
items_added: "items added.",
|
||||||
|
section_created: "Section created!",
|
||||||
|
err_invalid_section_name: "Invalid name. Only letters, numbers, and underscores allowed.",
|
||||||
|
label_changed: "Name changed.",
|
||||||
|
target_changed: "Target changed.",
|
||||||
|
items_added_count: "Added",
|
||||||
|
nothing_added: "Nothing added.",
|
||||||
|
err_format_section_url: "Format: <code>section URL</code>\nExample: <code>Main https://...</code>",
|
||||||
|
err_invalid_hour: "Enter an integer from 0 to 23.",
|
||||||
|
saved: "Saved.",
|
||||||
|
daily_unknown: "unknown",
|
||||||
|
daily_uptime: "OS Uptime:",
|
||||||
|
daily_rx: "Current RX:",
|
||||||
|
daily_tx: "Current TX:",
|
||||||
|
build_label: "Build:",
|
||||||
|
blocked_activity: "Blocked Activity",
|
||||||
|
blocked_rule_label: "Rule:",
|
||||||
|
blocked_rule: "Rule:",
|
||||||
|
blocked_attempts: "Attempts to access blocked sites",
|
||||||
|
info_read_error: "Error reading info:",
|
||||||
|
quiet_start_word: "start",
|
||||||
|
quiet_end_word: "end",
|
||||||
|
quiet_saved: "Settings saved.",
|
||||||
|
sec_created: "Section created!",
|
||||||
|
sec_invalid_name: "Invalid name. Only Latin letters, digits, underscores.",
|
||||||
|
sec_invalid_hour: "Invalid hour.",
|
||||||
|
sec_changed_to: "changed to",
|
||||||
|
exec_value_saved: "Value saved. Restart needed for changes.",
|
||||||
|
exec_items_added: "Added",
|
||||||
|
exec_items_added_count: "Added",
|
||||||
|
exec_nothing_added: "Nothing added.",
|
||||||
|
exec_changed_to: "changed to",
|
||||||
|
exec_format_hint: "Format: domain.com or [ip]/prefix.",
|
||||||
|
update_new_release_header: "New build of current release!",
|
||||||
|
update_build_label: "Build",
|
||||||
|
critical_keyword_fallen: "Down",
|
||||||
|
critical_keyword_error: "Error",
|
||||||
|
btn_update_component: "Update",
|
||||||
},
|
},
|
||||||
|
|
||||||
ru: {
|
ru: {
|
||||||
@@ -700,6 +879,185 @@ let strings = {
|
|||||||
|
|
||||||
// ─── Healer ───
|
// ─── Healer ───
|
||||||
heal_running: "ИИ-Автомеханик выполняет диагностику и самолечение...",
|
heal_running: "ИИ-Автомеханик выполняет диагностику и самолечение...",
|
||||||
|
// ─── Batch i18n additions ───
|
||||||
|
msg_truncated: "... (сообщение сокращено)",
|
||||||
|
menu_version: "Версия",
|
||||||
|
menu_cpu: "Роутер CPU",
|
||||||
|
list_header: "⚙️ <b>Список:</b>",
|
||||||
|
outbound_groups_not_found: "Группы прокси не найдены.",
|
||||||
|
outbound_switch_failed: "Не удалось переключить сервер",
|
||||||
|
outbound_group: "Группа",
|
||||||
|
outbound_server: "Сервер",
|
||||||
|
outbound_check_hint: "Проверьте, запущен ли sing-box и доступен ли Clash API.",
|
||||||
|
section_ips: "IP адреса",
|
||||||
|
section_list_header: "⚙️ <b>Секция:</b>",
|
||||||
|
backup_archive_empty: "Архив пуст или повреждён.",
|
||||||
|
backup_archive_unsafe: "Небезопасный архив:",
|
||||||
|
backup_restoring: "Проверяю и восстанавливаю бэкап...",
|
||||||
|
backup_extract_failed: "Не удалось распаковать архив.",
|
||||||
|
backup_not_valid_uci: "config/tachyon в архиве не похож на валидный UCI.",
|
||||||
|
backup_no_config: "В архиве нет ни config/tachyon, ни каталога tachyon/.",
|
||||||
|
backup_save_config_failed: "Не удалось сохранить текущий конфиг.",
|
||||||
|
backup_save_data_failed: "Не удалось сохранить текущие данные /etc/tachyon.",
|
||||||
|
backup_write_config_error: "Ошибка записи /etc/config/tachyon.",
|
||||||
|
backup_uci_validation_failed: "Восстановленный конфиг не прошёл проверку UCI. Выполнен откат.",
|
||||||
|
backup_write_data_error: "Ошибка записи /etc/tachyon. Выполнен откат.",
|
||||||
|
backup_restored: "Бэкап восстановлен. Перезапускаю Tachyon...",
|
||||||
|
backup_done: "Готово!",
|
||||||
|
backup_collecting: "Собираю бэкап...",
|
||||||
|
backup_create_error: "Ошибка создания бэкапа.",
|
||||||
|
support_bundle_collecting: "Формирую Support Bundle...",
|
||||||
|
support_bundle_error: "Ошибка генерации Bundle.",
|
||||||
|
conn_closed_msg: "Все активные соединения сброшены.\nОни будут переустановлены по новым маршрутам.",
|
||||||
|
conn_close_error: "Ошибка сброса соединений.\nsing-box Clash API недоступен.",
|
||||||
|
updates_title: "Обновления компонентов",
|
||||||
|
updates_disabled: "Проверка обновлений отключена в настройках.",
|
||||||
|
updates_cache_empty: "Кэш пуст. Зайдите позже.",
|
||||||
|
update_check_error: "Ошибка проверки",
|
||||||
|
update_new_release_build: "новая сборка релиза",
|
||||||
|
update_dev_build: "dev-сборка",
|
||||||
|
update_all_current: "Все компоненты актуальны.",
|
||||||
|
update_cache_parse_error: "Ошибка парсинга кэша:",
|
||||||
|
update_cache_unavailable: "Кэш проверок пуст или недоступен.",
|
||||||
|
btn_refresh_cache: "Обновить кэш",
|
||||||
|
api_parse_error: "Ошибка парсинга API:",
|
||||||
|
api_connect_failed: "Не удалось подключиться к API sing-box.",
|
||||||
|
logs_header: "Логи Tachyon",
|
||||||
|
info_title: "Информация о системе",
|
||||||
|
info_device_label: "Устройство",
|
||||||
|
info_fetch_failed: "Не удалось получить информацию о системе.",
|
||||||
|
sub_empty_url: "(пусто)",
|
||||||
|
btn_sub_delete: " 🗑 Удалить",
|
||||||
|
btn_add_subscription: "Добавить подписку",
|
||||||
|
sub_section_subs: "Подписки секции",
|
||||||
|
sub_found_count: "Найдено подписок:",
|
||||||
|
sub_enter_url: "Введите URL подписки:\n\n<i>Отправьте /cancel для отмены</i>",
|
||||||
|
sub_url_empty: "URL не может быть пустым.",
|
||||||
|
sub_added: "Подписка добавлена в секцию",
|
||||||
|
sub_not_found: "Подписка не найдена.",
|
||||||
|
sub_removed: "Подписка удалена из секции",
|
||||||
|
help_title: "Справка по командам",
|
||||||
|
help_main_section: "Основные:",
|
||||||
|
help_diag_section: "Диагностика:",
|
||||||
|
help_manage_section: "Управление:",
|
||||||
|
help_settings_section: "Настройка:",
|
||||||
|
help_this: "Эта справка",
|
||||||
|
quiet_hours_title: "Тихие часы",
|
||||||
|
quiet_status: "Статус",
|
||||||
|
quiet_enabled_label: "Включены",
|
||||||
|
quiet_disabled_label: "Выключены",
|
||||||
|
quiet_start_label: "Начало:",
|
||||||
|
quiet_end_label: "Конец:",
|
||||||
|
quiet_hint: "В тихие часы бот отправляет только критические уведомления.",
|
||||||
|
btn_enable: "Включить",
|
||||||
|
btn_disable: "Выключить",
|
||||||
|
quiet_hour_start: "начала",
|
||||||
|
quiet_hour_end: "окончания",
|
||||||
|
quiet_enter_hour: "⏰ Введите час %s тихих часов (0–23):\n\n<i>Отправьте /cancel для отмены</i>",
|
||||||
|
test_rule_header: "Проверка правила:",
|
||||||
|
test_match: "Совпадение:",
|
||||||
|
test_action: "Действие:",
|
||||||
|
export_title: "Экспорт конфига...",
|
||||||
|
export_done: "Конфиг экспортирован.\n\n⚠️ Файл содержит чувствительные данные. Не публикуйте его.",
|
||||||
|
export_failed: "Не удалось экспортировать конфиг.",
|
||||||
|
mac_invalid: "Некорректный MAC-адрес.",
|
||||||
|
mac_firewall_open_failed: "Не удалось открыть конфигурацию firewall.",
|
||||||
|
mac_block_rule_failed: "Не удалось создать правило блокировки.",
|
||||||
|
mac_blocked: "заблокировано.",
|
||||||
|
mac_unblocked: "разблокировано.",
|
||||||
|
mac_firewall_bg: "Правила firewall применяются в фоне (несколько секунд).",
|
||||||
|
devices_title: "Устройства в сети:",
|
||||||
|
device_hostname_unknown: "Неизвестно",
|
||||||
|
devices_not_found: "Устройства не найдены.",
|
||||||
|
watchdog_stop_btn: "Остановить Watchdog",
|
||||||
|
ai_full_status_btn: "Полный статус AI",
|
||||||
|
watchdog_start_btn: "Запустить Watchdog",
|
||||||
|
ai_incident: "⚠️ Устранён инцидент:",
|
||||||
|
ai_resolution: "🔧 Авто-решение:",
|
||||||
|
ai_all_ok: "Все сетевые службы, DNS, nftables и память работают идеально.",
|
||||||
|
ai_diag_ok: "Диагностика завершена успешно.",
|
||||||
|
ai_diag_done: "Диагностика завершена.",
|
||||||
|
ai_status_collecting: "Сбор полного AI Watchdog статуса...",
|
||||||
|
ai_status_error: "Ошибка получения статуса.",
|
||||||
|
ai_data_truncated: "данные сокращены",
|
||||||
|
ai_full_status_header: "AI Watchdog — Полный статус:",
|
||||||
|
qos_title: "Игровой & Голосовой QoS Ускоритель",
|
||||||
|
qos_enabled_detail: "Включен (DSCP EF + AF41 Priority)",
|
||||||
|
qos_disabled_detail: "Выключен",
|
||||||
|
qos_priority_rules: "Приоритетные правила:",
|
||||||
|
btn_qos_disable: "Отключить QoS",
|
||||||
|
btn_qos_enable: "Включить QoS",
|
||||||
|
cb_obsolete: "Кнопка устарела — откройте список заново.",
|
||||||
|
update_component_title: "Запуск обновления",
|
||||||
|
update_bg_hint: "Процесс запущен в фоне. Зайдите позже.",
|
||||||
|
err_unknown_component: "Неизвестный компонент:",
|
||||||
|
admin_invalid_chat_id: "Неверный Chat ID.",
|
||||||
|
admin_user_added: "Пользователь добавлен в список администраторов.",
|
||||||
|
admin_user_already: "Пользователь уже является администратором.",
|
||||||
|
sec_enter_name: "Введите латинское имя для новой секции (например, <code>my_vpn</code>):\n\n<i>Отправьте /cancel для отмены</i>",
|
||||||
|
sec_enter_label: "Введите новое понятное имя (Label) для секции",
|
||||||
|
sec_enter_target: "Введите имя исходящего интерфейса (target) для секции",
|
||||||
|
sec_not_found: "Секция не найдена.",
|
||||||
|
sec_deleted: "Секция удалена.",
|
||||||
|
sec_add_items_prompt: "Отправьте элементы для добавления (по одному в строке или через пробел):\n\n<i>Отправьте /cancel для отмены</i>",
|
||||||
|
sec_sub_add_prompt: "Введите имя секции и URL подписки через пробел:\n<code>/sec_sub_add Main https://...</code>\n\n<i>Отправьте /cancel для отмены</i>",
|
||||||
|
sec_enter_value: "Введите новое значение для",
|
||||||
|
sec_add_list_prompt: "Отправьте элементы для добавления в список (через пробел или с новой строки):\n\n<i>Отправьте /cancel для отмены</i>",
|
||||||
|
dns_all_protocols: "Все протоколы",
|
||||||
|
dns_servers_applied: "DNS серверы установлены:",
|
||||||
|
dns_restart_hint: "Выполните перезапуск для применения.",
|
||||||
|
dns_bootstrap_applied: "Bootstrap DNS серверы установлены:",
|
||||||
|
exec_cmd_error: "Ошибка выполнения команды:",
|
||||||
|
exec_access_denied: "Доступ запрещен. Ваш Chat ID:",
|
||||||
|
backup_downloading: "Скачиваю бэкап...",
|
||||||
|
backup_download_error: "Ошибка загрузки файла.",
|
||||||
|
backup_url_error: "Ошибка получения URL файла.",
|
||||||
|
backup_format_hint: "Пожалуйста, отправьте бэкап в формате `.tar.gz`.",
|
||||||
|
admin_forward_prompt: "Вы переслали сообщение от пользователя",
|
||||||
|
btn_admin_add: "Добавить",
|
||||||
|
exec_whitelist_msg: "Выполняю из разрешённого набора (whitelist):",
|
||||||
|
exec_no_output: "Нет вывода",
|
||||||
|
action_cancelled: "Действие отменено.",
|
||||||
|
err_text_expected: "Ожидается текстовое сообщение. Попробуйте ещё раз или /cancel.",
|
||||||
|
value_saved: "Значение сохранено.",
|
||||||
|
items_added: "элементов.",
|
||||||
|
section_created: "Секция создана!",
|
||||||
|
err_invalid_section_name: "Неверное имя. Разрешены только буквы, цифры и подчеркивания.",
|
||||||
|
label_changed: "Имя изменено.",
|
||||||
|
target_changed: "Цель изменена.",
|
||||||
|
items_added_count: "Добавлено",
|
||||||
|
nothing_added: "Ничего не добавлено.",
|
||||||
|
err_format_section_url: "Формат: <code>секция URL</code>\nНапример: <code>Main https://...</code>",
|
||||||
|
err_invalid_hour: "Введите целое число от 0 до 23.",
|
||||||
|
saved: "Сохранено.",
|
||||||
|
daily_unknown: "неизвестно",
|
||||||
|
daily_uptime: "Аптайм ОС:",
|
||||||
|
daily_rx: "Текущий RX:",
|
||||||
|
daily_tx: "Текущий TX:",
|
||||||
|
build_label: "Сборка:",
|
||||||
|
blocked_activity: "Заблокированная активность",
|
||||||
|
blocked_rule_label: "Правило:",
|
||||||
|
blocked_rule: "Правило:",
|
||||||
|
blocked_attempts: "Попыток доступа к заблокированным сайтам",
|
||||||
|
info_read_error: "Ошибка чтения информации:",
|
||||||
|
quiet_start_word: "начала",
|
||||||
|
quiet_end_word: "окончания",
|
||||||
|
quiet_saved: "Настройки сохранены.",
|
||||||
|
sec_created: "Секция создана!",
|
||||||
|
sec_invalid_name: "Некорректное имя. Только латиница, цифры и _.",
|
||||||
|
sec_invalid_hour: "Некорректное время.",
|
||||||
|
sec_changed_to: "изменено на",
|
||||||
|
exec_value_saved: "Значение сохранено. Для вступления изменений в силу необходим перезапуск.",
|
||||||
|
exec_items_added: "Добавлено",
|
||||||
|
exec_items_added_count: "Добавлено",
|
||||||
|
exec_nothing_added: "Ничего не добавлено.",
|
||||||
|
exec_changed_to: "изменено на",
|
||||||
|
exec_format_hint: "Формат: domain.com или [ip]/prefix.",
|
||||||
|
update_new_release_header: "Новая сборка текущего релиза!",
|
||||||
|
update_build_label: "Сборка",
|
||||||
|
critical_keyword_fallen: "Упал",
|
||||||
|
critical_keyword_error: "Ошибка",
|
||||||
|
btn_update_component: "Обновить",
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user