841 lines
58 KiB
JSON
841 lines
58 KiB
JSON
{
|
||
"app": {
|
||
"name": "Reticulum MeshChatX",
|
||
"sync_messages": "Синхронизировать сообщения",
|
||
"compose": "Написать",
|
||
"messages": "Сообщения",
|
||
"nomad_network": "Nomad Network",
|
||
"map": "Карта",
|
||
"archives": "Архивы",
|
||
"propagation_nodes": "Узлы ретрансляции",
|
||
"network_visualiser": "Визуализатор сети",
|
||
"interfaces": "Интерфейсы",
|
||
"tools": "Инструменты",
|
||
"settings": "Настройки",
|
||
"identities": "Личности",
|
||
"documentation": "Документация",
|
||
"about": "О программе",
|
||
"changelog_title": "Что нового",
|
||
"do_not_show_again": "Не показывать снова для этой версии",
|
||
"do_not_show_ever": "Больше никогда не показывать",
|
||
"tutorial_title": "Руководство",
|
||
"tutorial_welcome": "Добро пожаловать в MeshChatX",
|
||
"tutorial_connect": "Подключение к сети Mesh",
|
||
"tutorial_finish": "Все готово!",
|
||
"tutorial_restart_required": "Требуется перезагрузка",
|
||
"tutorial_docker_note": "Если вы используете Docker, убедитесь, что ваш контейнер автоматически перезапускается.",
|
||
"my_identity": "Моя личность",
|
||
"identity_hash": "Хеш личности",
|
||
"lxmf_address": "Адрес LXMF",
|
||
"announce": "Анонсировать",
|
||
"announce_now": "Анонсировать сейчас",
|
||
"last_announced": "Последний анонс: {time}",
|
||
"last_announced_never": "Последний анонс: Никогда",
|
||
"display_name_placeholder": "Отображаемое имя",
|
||
"profile": "Профиль",
|
||
"manage_identity": "Управляйте своей личностью, участием в транспорте и настройками LXMF по умолчанию.",
|
||
"theme": "Тема",
|
||
"theme_mode": "Режим {mode}",
|
||
"transport": "Транспорт",
|
||
"enabled": "Включено",
|
||
"disabled": "Выключено",
|
||
"propagation": "Ретрансляция",
|
||
"local_node_running": "Локальный узел запущен",
|
||
"client_only": "Только клиент",
|
||
"copy": "Копировать",
|
||
"appearance": "Внешний вид",
|
||
"appearance_description": "Переключайтесь между светлой и темной темами в любое время.",
|
||
"light_theme": "Светлая тема",
|
||
"dark_theme": "Темная тема",
|
||
"live_preview": "Предпросмотр обновляется мгновенно.",
|
||
"realtime": "Реальное время",
|
||
"transport_mode": "Режим транспорта",
|
||
"transport_description": "Ретранслируйте пути и трафик для ближайших узлов.",
|
||
"enable_transport_mode": "Включить режим транспорта",
|
||
"transport_toggle_description": "Маршрутизировать анонсы, отвечать на запросы путей и помогать вашей сети оставаться онлайн.",
|
||
"requires_restart": "Требуется перезапуск после переключения.",
|
||
"show_community_interfaces": "Показывать интерфейсы сообщества",
|
||
"community_interfaces_description": "Показывать предустановки, поддерживаемые сообществом, при добавлении новых интерфейсов.",
|
||
"reliability": "Надежность",
|
||
"messages_description": "Настройте, как MeshChat повторяет или эскалирует неудачные доставки. Контролируйте автоматический повтор, пересылку вложений и механизмы отката для обеспечения надежной доставки сообщений в сети mesh.",
|
||
"auto_resend_title": "Автоповтор при анонсе узла",
|
||
"auto_resend_description": "Неудачные сообщения будут автоматически отправлены повторно, как только получатель снова выйдет в сеть.",
|
||
"retry_attachments_title": "Разрешить повтор для вложений",
|
||
"retry_attachments_description": "Крупные вложения также будут отправлены повторно (полезно, если у обоих узлов высокие лимиты).",
|
||
"auto_fallback_title": "Автопереключение на узел ретрансляции",
|
||
"auto_fallback_description": "Неудачные прямые доставки будут поставлены в очередь на ваш предпочтительный узел ретрансляции.",
|
||
"inbound_stamp_cost": "Стоимость входящего штампа",
|
||
"inbound_stamp_description": "Требовать штампы Proof-of-Work для сообщений, отправляемых вам напрямую. Более высокие значения требуют больше вычислительной работы от отправителей. Диапазон: 1-254. По умолчанию: 8.",
|
||
"browse_nodes": "Список узлов",
|
||
"propagation_nodes_description": "Поддерживайте общение, даже когда узлы находятся в офлайне.",
|
||
"nodes_info_1": "Узлы ретрансляции надежно хранят сообщения до тех пор, пока получатели снова не синхронизируются.",
|
||
"nodes_info_2": "Узлы соединяются друг с другом для распространения зашифрованных данных.",
|
||
"nodes_info_3": "Большинство узлов хранят данные около 30 дней, после чего недоставленные сообщения удаляются.",
|
||
"run_local_node": "Запустить локальный узел ретрансляции",
|
||
"run_local_node_description": "MeshChat будет анонсировать и поддерживать узел, используя этот локальный хеш назначения.",
|
||
"preferred_propagation_node": "Предпочтительный узел ретрансляции",
|
||
"preferred_node_placeholder": "Хеш назначения, например a39610c89d18bb48c73e429582423c24",
|
||
"fallback_node_description": "Сообщения будут отправляться на этот узел, если прямая доставка не удалась.",
|
||
"auto_sync_interval": "Интервал автосинхронизации",
|
||
"last_synced": "Последняя синхронизация {time} назад.",
|
||
"last_synced_never": "Последняя синхронизация: никогда.",
|
||
"propagation_stamp_cost": "Стоимость штампа узла ретрансляции",
|
||
"propagation_stamp_description": "Требовать штампы Proof-of-Work для сообщений, передаваемых через ваш узел. Более высокие значения требуют больше вычислительной работы. Диапазон: 13-254. По умолчанию: 16. **Примечание:** изменение требует перезапуска приложения.",
|
||
"language": "Язык",
|
||
"select_language": "Выберите предпочтительный язык.",
|
||
"custom_fork_by": "Модифицированная версия от",
|
||
"open": "Открыть",
|
||
"identity": "Личность",
|
||
"lxmf_address_hash": "Хеш адреса LXMF",
|
||
"propagation_node_status": "Статус узла ретрансляции",
|
||
"last_sync": "Синхронизация: {time} назад",
|
||
"last_sync_never": "Синхронизация: никогда",
|
||
"syncing": "Синхронизация...",
|
||
"syncing_node": "Синхронизация... ({state})",
|
||
"synced": "Синхронизировано",
|
||
"not_synced": "Не синхронизировано",
|
||
"not_configured": "Не настроено",
|
||
"toggle_source": "Исходный код",
|
||
"audio_calls": "Телефон",
|
||
"calls": "Звонки",
|
||
"status": "Статус",
|
||
"active_call": "Активный звонок",
|
||
"incoming": "Входящий",
|
||
"outgoing": "Исходящий",
|
||
"call": "Звонок",
|
||
"calls_plural": "Звонки",
|
||
"hop": "прыжок",
|
||
"hops_plural": "прыжков",
|
||
"hung_up_waiting": "Отключено, ожидание звонка...",
|
||
"view_incoming_calls": "Просмотр входящих звонков",
|
||
"hangup_all_calls": "Завершить все звонки",
|
||
"clear_history": "Очистить историю",
|
||
"no_active_calls": "Нет активных звонков",
|
||
"incoming_call": "Входящий звонок...",
|
||
"outgoing_call": "Исходящий звонок...",
|
||
"call_active": "Активен",
|
||
"call_ended": "Завершен",
|
||
"propagation_node": "Узел ретрансляции",
|
||
"sync_now": "Синхронизировать сейчас",
|
||
"setting_auto_saved": "Настройка {label} сохранена",
|
||
"auto_resend": "Авто-пересылка",
|
||
"retry_attachments": "Повтор вложений",
|
||
"auto_fallback": "Авто-откат",
|
||
"community_interfaces": "Сообщества",
|
||
"preferred_node": "Предпочитаемый узел",
|
||
"local_node": "Локальный узел",
|
||
"auto_sync": "Авто-синхронизация",
|
||
"inbound_stamp_cost_label": "Стоимость входящих марок",
|
||
"propagation_stamp_cost_label": "Стоимость марок узла",
|
||
"page_archiver": "Архиватор страниц",
|
||
"smart_crawler": "Умный краулер",
|
||
"authentication": "Аутентификация",
|
||
"banishment": "Изгнание",
|
||
"banishment_description": "Настройте визуальный эффект для заблокированных узлов и собеседников.",
|
||
"banished_effect_enabled": "Включить эффект изгнания",
|
||
"banished_effect_description": "Показывать визуальный оверлей на заблокированных узлах.",
|
||
"banished_text_label": "Текст изгнания",
|
||
"banished_text_description": "Текст, отображаемый поверх заблокированного узла.",
|
||
"banished_color_label": "Цвет изгнания",
|
||
"banished_color_description": "Цвет, используемый для эффекта изгнания.",
|
||
"desktop_open_calls_in_separate_window": "Открыть звонки в отдельном окне",
|
||
"desktop_open_calls_in_separate_window_description": "При активном звонке он будет отображаться в отдельном всплывающем окне, а не внутри приложения.",
|
||
"desktop_hardware_acceleration_enabled": "Аппаратное ускорение",
|
||
"desktop_hardware_acceleration_enabled_description": "Отключите это, если вы наблюдаете мерцание интерфейса, черные экраны или графические артефакты.",
|
||
"translator": "Переводчик",
|
||
"translator_enabled": "Включить переводчик",
|
||
"translator_description": "Включить функции перевода в разговорах.",
|
||
"libretranslate_url": "URL LibreTranslate",
|
||
"libretranslate_url_description": "URL-адрес, по которому доступен API LibreTranslate.",
|
||
"system": "Система",
|
||
"reticulum_stack": "Стек Reticulum",
|
||
"reticulum_stack_description": "Управление базовым сетевым стеком Reticulum.",
|
||
"reload_rns": "Перезагрузить RNS",
|
||
"reload_rns_description": "Отключить все назначения, остановить текущий экземпляр RNS и загрузить его заново. Это полезно для применения изменений конфигурации или перезапуска сетевого стека без перезагрузки всего приложения.",
|
||
"reloading_rns": "Перезагрузка RNS...",
|
||
"reloaded_rns": "Reticulum успешно перезагружен",
|
||
"announce_interval": "Интервал анонсов",
|
||
"stop_sync_confirm": "Вы уверены, что хотите остановить синхронизацию?",
|
||
"sync_error_generic": "Что-то пошло не так. Попробуйте позже.",
|
||
"sync_complete": "Синхронизация завершена. Получено сообщений: {count}.",
|
||
"sync_error": "Ошибка синхронизации: {status}",
|
||
"switching_identity": "Переключение личности...",
|
||
"loading_identity": "Загрузка вашей личности",
|
||
"emergency_mode_active": "Аварийный режим активен — используется база данных в оперативной памяти и ограниченные службы."
|
||
},
|
||
"common": {
|
||
"open": "Открыть",
|
||
"close": "Закрыть",
|
||
"cancel": "Отмена",
|
||
"save": "Сохранить",
|
||
"block": "Заблокировать",
|
||
"delete": "Удалить",
|
||
"edit": "Изменить",
|
||
"add": "Добавить",
|
||
"sync": "Синхронизировать",
|
||
"restart_app": "Перезапустить приложение",
|
||
"reveal": "Показать",
|
||
"refresh": "Обновить",
|
||
"vacuum": "Сжать базу",
|
||
"auto_recover": "Автовосстановление",
|
||
"shutdown": "Выключить",
|
||
"acknowledge_reset": "Подтвердить и сбросить",
|
||
"confirm": "Подтвердить",
|
||
"delete_confirm": "Вы уверены, что хотите удалить это? Это действие нельзя отменить."
|
||
},
|
||
"identities": {
|
||
"title": "Личности",
|
||
"manage": "Управляйте и переключайтесь между несколькими личностями Reticulum.",
|
||
"new_identity": "Новая личность",
|
||
"generate_fresh": "Создать новую личность Reticulum.",
|
||
"display_name": "Отображаемое имя",
|
||
"display_name_hint": "например, Секретный агент",
|
||
"current": "Текущая",
|
||
"switch": "Переключиться на эту личность",
|
||
"delete": "Удалить личность",
|
||
"no_identities": "Личности не найдены",
|
||
"create_first": "Создайте новую личность, чтобы начать.",
|
||
"switch_confirm": "Переключиться на личность \"{name}\"? Приложение будет перезапущено.",
|
||
"delete_confirm": "Вы уверены, что хотите удалить личность \"{name}\"? Это действие нельзя отменить.",
|
||
"switched": "Личность изменена. Приложение будет перезапущено для применения изменений.",
|
||
"created": "Личность успешно создана",
|
||
"deleted": "Личность удалена"
|
||
},
|
||
"about": {
|
||
"title": "О программе",
|
||
"version": "v{version}",
|
||
"rns_version": "RNS {version}",
|
||
"lxmf_version": "LXMF {version}",
|
||
"python_version": "Python {version}",
|
||
"config_path": "Путь к конфигу",
|
||
"database_path": "Путь к базе данных",
|
||
"database_size": "Размер базы данных",
|
||
"database_health": "Состояние базы данных",
|
||
"database_health_description": "Быстрая проверка, настройка WAL и инструменты восстановления базы данных MeshChatX.",
|
||
"running_checks": "Выполнение проверок...",
|
||
"integrity": "Целостность",
|
||
"journal_mode": "Режим журнала",
|
||
"wal_autocheckpoint": "WAL авточекпоинт",
|
||
"page_size": "Размер страницы",
|
||
"pages_free": "Страницы / Свободно",
|
||
"free_space_estimate": "Оценка свободного места",
|
||
"system_resources": "Системные ресурсы",
|
||
"live": "Live",
|
||
"memory_rss": "Память (RSS)",
|
||
"virtual_memory": "Виртуальная память",
|
||
"network_stats": "Статистика сети",
|
||
"sent": "Отправлено",
|
||
"received": "Получено",
|
||
"packets_sent": "Пакетов отправлено",
|
||
"packets_received": "Пакетов получено",
|
||
"reticulum_stats": "Статистика Reticulum",
|
||
"total_paths": "Всего путей",
|
||
"announces_per_second": "Анонсов / сек",
|
||
"announces_per_minute": "Анонсов / мин",
|
||
"announces_per_hour": "Анонсов / час",
|
||
"download_activity": "Активность загрузки",
|
||
"no_downloads_yet": "Загрузок пока нет",
|
||
"runtime_status": "Статус выполнения",
|
||
"shared_instance": "Общий экземпляр",
|
||
"standalone_instance": "Автономный экземпляр",
|
||
"transport_enabled": "Транспорт включен",
|
||
"transport_disabled": "Транспорт выключен",
|
||
"identity_addresses": "Личность и адреса",
|
||
"telephone_address": "Адрес телефона",
|
||
"security_integrity": "Целостность безопасности",
|
||
"security_integrity_description": "Статус верификации системы для бэкенда и файлов данных",
|
||
"secured": "Защищено",
|
||
"tampering_detected": "Обнаружено вмешательство",
|
||
"technical_issues": "Технические проблемы:",
|
||
"no_integrity_violations": "Нарушений целостности не обнаружено с момента последнего запуска.",
|
||
"dependency_chain": "Цепочка зависимостей",
|
||
"other_core_components": "Другие основные компоненты",
|
||
"backend_dependencies": "Зависимости бэкенда"
|
||
},
|
||
"interfaces": {
|
||
"title": "Интерфейсы",
|
||
"manage": "Управление",
|
||
"description": "Поиск, фильтрация и экспорт ваших адаптеров Reticulum.",
|
||
"add_interface": "Добавить интерфейс",
|
||
"import": "Импорт",
|
||
"export_all": "Экспорт всех",
|
||
"search_placeholder": "Поиск по имени, типу, хосту...",
|
||
"all": "Все",
|
||
"all_types": "Все типы",
|
||
"no_interfaces_found": "Интерфейсы не найдены",
|
||
"no_interfaces_description": "Измените параметры поиска или добавьте новый интерфейс.",
|
||
"restart_required": "Требуется перезапуск",
|
||
"restart_description": "Reticulum MeshChatX необходимо перезапустить, чтобы изменения вступили в силу.",
|
||
"restart_now": "Перезапустить сейчас"
|
||
},
|
||
"map": {
|
||
"title": "Карта",
|
||
"description": "Офлайн-карта с поддержкой MBTiles.",
|
||
"upload_mbtiles": "Загрузить MBTiles",
|
||
"select_file": "Выбрать файл MBTiles",
|
||
"offline_mode": "Офлайн-режим",
|
||
"online_mode": "Онлайн-режим",
|
||
"attribution": "Атрибуция",
|
||
"bounds": "Границы",
|
||
"center": "Центр",
|
||
"zoom": "Масштаб",
|
||
"uploading": "Загрузка...",
|
||
"upload_success": "Карта успешно загружена",
|
||
"upload_failed": "Ошибка загрузки карты",
|
||
"no_map_loaded": "Офлайн-карта не загружена. Загрузите файл .mbtiles для включения офлайн-режима.",
|
||
"invalid_file": "Неверный файл MBTiles. Поддерживаются только растровые карты.",
|
||
"default_view": "Вид по умолчанию",
|
||
"set_as_default": "Установить как вид по умолчанию",
|
||
"export_area": "Экспорт области",
|
||
"export_instructions": "Выделите область на карте для экспорта.",
|
||
"min_zoom": "Мин. масштаб",
|
||
"max_zoom": "Макс. масштаб",
|
||
"tile_count": "Оценка тайлов",
|
||
"start_export": "Начать экспорт",
|
||
"exporting": "Экспорт карты...",
|
||
"download_ready": "Экспорт завершен",
|
||
"download_now": "Скачать MBTiles",
|
||
"caching_enabled": "Кэширование тайлов",
|
||
"clear_cache": "Очистить кэш",
|
||
"cache_cleared": "Кэш тайлов очищен",
|
||
"tile_server_url": "URL сервера тайлов",
|
||
"tile_server_url_placeholder": "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||
"tile_server_url_hint": "Используйте {z}, {x}, {y} для масштаба, столбца, строки",
|
||
"tile_server_saved": "URL сервера тайлов сохранен",
|
||
"tile_server_openstreetmap": "OpenStreetMap",
|
||
"nominatim_api_url": "URL API Nominatim",
|
||
"nominatim_api_url_placeholder": "https://nominatim.openstreetmap.org",
|
||
"nominatim_api_url_hint": "Базовый URL для сервиса геокодирования Nominatim",
|
||
"nominatim_api_saved": "URL API Nominatim сохранен",
|
||
"search_placeholder": "Поиск места...",
|
||
"search_offline_error": "Поиск доступен только в онлайн-режиме",
|
||
"search_connection_error": "Не удалось подключиться к сервису поиска. Проверьте подключение к интернету.",
|
||
"search_error": "Ошибка поиска",
|
||
"search_no_results": "Результаты не найдены",
|
||
"custom_tile_server_unavailable": "Пользовательский сервер тайлов недоступен в офлайн-режиме",
|
||
"custom_nominatim_unavailable": "Пользовательский сервер Nominatim недоступен в офлайн-режиме",
|
||
"onboarding_title": "Экспорт в MBTiles!",
|
||
"onboarding_text": "Используйте инструмент экспорта для загрузки областей карты в виде файлов MBTiles для офлайн-использования.",
|
||
"onboarding_got_it": "Понятно",
|
||
"tool_point": "Точка",
|
||
"tool_linestring": "Линия",
|
||
"tool_polygon": "Полигон",
|
||
"tool_circle": "Круг",
|
||
"tool_measure": "Измерить",
|
||
"tool_clear": "Очистить",
|
||
"save_drawing": "Сохранить слой",
|
||
"load_drawing": "Загрузить слой",
|
||
"save_drawing_title": "Сохранить слой рисунков",
|
||
"save_drawing_desc": "Сохранить текущие аннотации на карте в базу данных.",
|
||
"drawing_name": "Название слоя",
|
||
"drawing_name_placeholder": "напр., Сектор Альфа",
|
||
"load_drawing_title": "Загрузить слой рисунков",
|
||
"loading_drawings": "Загрузка сохраненных слоев...",
|
||
"no_drawings": "Нет сохраненных слоев",
|
||
"no_drawings_desc": "Вы еще не сохранили ни одной аннотации на карте.",
|
||
"saved_on": "Сохранено",
|
||
"settings": "Настройки карты",
|
||
"go_to_my_location": "Мое местоположение"
|
||
},
|
||
"interface": {
|
||
"disable": "Выключить",
|
||
"enable": "Включить",
|
||
"edit_interface": "Изменить интерфейс",
|
||
"export_interface": "Экспорт интерфейса",
|
||
"delete_interface": "Удалить интерфейс",
|
||
"listen": "Слушать",
|
||
"forward": "Пересылать",
|
||
"port": "Порт",
|
||
"frequency": "Частота",
|
||
"bandwidth": "Полоса",
|
||
"txpower": "Мощность TX",
|
||
"spreading_factor": "SF",
|
||
"coding_rate": "Скорость кодирования",
|
||
"bitrate": "Битрейт",
|
||
"tx": "TX",
|
||
"rx": "RX",
|
||
"noise": "Шум",
|
||
"clients": "Клиенты"
|
||
},
|
||
"messages": {
|
||
"title": "Сообщения",
|
||
"conversations": "Чаты",
|
||
"announces": "Анонсы",
|
||
"search_placeholder": "Поиск по {count} чатам...",
|
||
"unread": "Непрочитанные",
|
||
"failed": "Ошибки",
|
||
"attachments": "Вложения",
|
||
"no_messages_yet": "Сообщений пока нет",
|
||
"loading_conversations": "Загрузка чатов...",
|
||
"no_conversations": "Чаты не найдены",
|
||
"discover_peers": "Ищите собеседников во вкладке 'Анонсы'",
|
||
"no_search_results": "Ничего не найдено",
|
||
"try_another_search": "Попробуйте другой поисковый запрос",
|
||
"no_search_results_conversations": "По вашему запросу чатов не найдено.",
|
||
"search_placeholder_announces": "Поиск по {count} недавним анонсам...",
|
||
"no_peers_discovered": "Собеседники не обнаружены",
|
||
"waiting_for_announce": "Ожидание анонсов!",
|
||
"no_search_results_peers": "По вашему запросу собеседников не найдено!",
|
||
"direct": "Прямая связь",
|
||
"downloading": "Загрузка",
|
||
"hops": "{count} прыжков",
|
||
"hops_away": "в {count} прыжках",
|
||
"snr": "SNR {snr}",
|
||
"stamp_cost": "Стоимость штампа {cost}",
|
||
"pop_out_chat": "Открыть в отдельном окне",
|
||
"custom_display_name": "Свое имя для контакта",
|
||
"send_placeholder": "Введите сообщение...",
|
||
"no_messages_in_conversation": "В этом чате пока нет сообщений.",
|
||
"say_hello": "Скажите привет!",
|
||
"no_active_chat": "Нет активного чата",
|
||
"select_peer_or_enter_address": "Выберите собеседника из списка или введите адрес ниже",
|
||
"add_files": "Добавить файлы",
|
||
"paste_from_clipboard": "Вставить из буфера обмена",
|
||
"location": "Местоположение",
|
||
"share_location": "Поделиться местоположением",
|
||
"request_location": "Запросить местоположение",
|
||
"view_on_map": "Показать на карте",
|
||
"request": "Запрос",
|
||
"generate_paper_message": "Создать бумажное сообщение (LXM)",
|
||
"recording": "Запись: {duration}",
|
||
"nomad_network_node": "Узел Nomad Network",
|
||
"toggle_source": "Исходный код"
|
||
},
|
||
"nomadnet": {
|
||
"remove_favourite": "Удалить из избранного",
|
||
"add_favourite": "Добавить в избранное",
|
||
"page_archives": "Архивы страницы",
|
||
"archive_current_version": "Архивировать текущую версию",
|
||
"no_archives_for_this_page": "Нет архивов для этой страницы",
|
||
"viewing_archived_version_from": "Просмотр архивной версии от {time}",
|
||
"viewing_archived_version": "Просмотр архивной версии",
|
||
"load_live": "Загрузить текущую",
|
||
"failed_to_load_page": "Ошибка загрузки страницы",
|
||
"archived_version_available": "Доступна архивная версия этой страницы.",
|
||
"view_archive": "Просмотреть архив",
|
||
"no_active_node": "Нет активного узла",
|
||
"select_node_to_browse": "Выберите узел, чтобы начать просмотр!",
|
||
"open_nomadnet_url": "Открыть URL Nomadnet",
|
||
"unknown_node": "Неизвестный узел",
|
||
"existing_download_in_progress": "Уже выполняется загрузка. Дождитесь ее завершения перед началом новой.",
|
||
"favourites": "Избранное",
|
||
"announces": "Анонсы",
|
||
"search_favourites_placeholder": "Поиск по {count} избранным...",
|
||
"search_placeholder_announces": "Поиск по {count} недавним анонсам...",
|
||
"rename": "Переименовать",
|
||
"remove": "Удалить",
|
||
"no_favourites": "Нет избранного",
|
||
"add_nodes_from_announces": "Добавляйте узлы из вкладки анонсов.",
|
||
"search_announces": "Поиск анонсов",
|
||
"announced_time_ago": "Анонсировано {time} назад",
|
||
"block_node": "Заблокировать узел",
|
||
"no_announces_yet": "Анонсов пока нет",
|
||
"listening_for_peers": "Ожидание узлов в сети.",
|
||
"block_node_confirm": "Вы уверены, что хотите заблокировать {name}? Его анонсы будут игнорироваться, и он не будет отображаться в списке.",
|
||
"node_blocked_successfully": "Узел успешно заблокирован",
|
||
"failed_to_block_node": "Не удалось заблокировать узел",
|
||
"rename_favourite": "Переименовать в избранном",
|
||
"remove_favourite_confirm": "Вы уверены, что хотите удалить этот узел из избранного?",
|
||
"enter_nomadnet_url": "Введите URL Nomadnet",
|
||
"archiving_page": "Архивация страницы...",
|
||
"page_archived_successfully": "Страница успешно архивирована.",
|
||
"identify_confirm": "Вы уверены, что хотите идентифицировать себя для этого узла NomadNetwork? Страница будет перезагружена после отправки вашей личности."
|
||
},
|
||
"forwarder": {
|
||
"title": "LXMF Форвардер",
|
||
"description": "Пересылка сообщений с одного адреса на другой с прозрачной обратной маршрутизацией.",
|
||
"add_rule": "Добавить правило пересылки",
|
||
"name": "Имя",
|
||
"name_placeholder": "Название правила (например, Домашний узел)...",
|
||
"forward_to_hash": "Пересылать на хеш",
|
||
"destination_placeholder": "Хеш назначения LXMF...",
|
||
"source_filter": "Фильтр источника (опционально)",
|
||
"source_filter_placeholder": "Пересылать только с этого хеша...",
|
||
"add_button": "Добавить правило",
|
||
"active_rules": "Активные правила",
|
||
"no_rules": "Правила пересылки не настроены.",
|
||
"active": "Активно",
|
||
"disabled": "Выключено",
|
||
"forwarding_to": "Пересылка на: {hash}",
|
||
"source_filter_display": "Фильтр источника: {hash}",
|
||
"delete_confirm": "Вы уверены, что хотите удалить это правило?"
|
||
},
|
||
"archives": {
|
||
"description": "Поиск и просмотр архивных страниц Nomad Network",
|
||
"search_placeholder": "Поиск по содержимому, хешу или пути...",
|
||
"loading": "Загрузка архивов...",
|
||
"no_archives_found": "Архивы не найдены",
|
||
"adjust_filters": "Попробуйте изменить параметры поиска.",
|
||
"browse_to_archive": "Архивные страницы появятся здесь после посещения сайтов Nomad Network.",
|
||
"page": "Страница",
|
||
"pages": "Страницы",
|
||
"view": "Просмотр",
|
||
"showing_range": "Показано с {start} по {end} из {total} архивов",
|
||
"page_of": "Страница {page} из {total_pages}"
|
||
},
|
||
"docs": {
|
||
"title": "Документация",
|
||
"subtitle": "Руководства и справочники Reticulum.",
|
||
"status_title": "Статус документации",
|
||
"status_downloading": "Загрузка...",
|
||
"status_available": "Доступно офлайн",
|
||
"status_not_downloaded": "Не загружено",
|
||
"btn_download": "Скачать руководства",
|
||
"btn_update": "Обновить руководство",
|
||
"error": "Ошибка"
|
||
},
|
||
"tools": {
|
||
"utilities": "Утилиты",
|
||
"power_tools": "Инструменты для операторов",
|
||
"diagnostics_description": "Средства диагностики и прошивки поставляются вместе с MeshChat для устранения неполадок без использования консоли.",
|
||
"ping": {
|
||
"title": "Ping",
|
||
"description": "Тест задержки для любого LXMF хеша с отображением статуса."
|
||
},
|
||
"rnprobe": {
|
||
"title": "RNProbe",
|
||
"description": "Зондирование узлов пакетами произвольного размера для проверки связи."
|
||
},
|
||
"rncp": {
|
||
"title": "RNCP",
|
||
"description": "Отправка и получение файлов через RNS с отслеживанием прогресса."
|
||
},
|
||
"rnstatus": {
|
||
"title": "RNStatus",
|
||
"description": "Статистика интерфейсов и информация о состоянии сети."
|
||
},
|
||
"translator": {
|
||
"title": "Translator",
|
||
"description": "Перевод текста через LibreTranslate API или локальный Argos Translate."
|
||
},
|
||
"forwarder": {
|
||
"title": "Forwarder",
|
||
"description": "Пересылка LXMF с маршрутизацией обратного пути."
|
||
},
|
||
"rnode_flasher": {
|
||
"title": "RNode Flasher",
|
||
"description": "Прошивка и обновление адаптеров RNode без использования командной строки."
|
||
},
|
||
"micron_editor": {
|
||
"title": "Редактор Micron",
|
||
"description": "Редактирование и предпросмотр разметки Micron с живым рендерингом.",
|
||
"editor": "Редактор",
|
||
"preview": "Предпросмотр",
|
||
"download": "Скачать",
|
||
"edit": "Редактировать",
|
||
"view_preview": "Просмотр",
|
||
"placeholder": "Введите разметку Micron здесь...",
|
||
"reset": "Сброс",
|
||
"new_tab": "Новая вкладка",
|
||
"rename_tab": "Переименовать вкладку",
|
||
"confirm_reset": "Вы уверены, что хотите сбросить редактор? Все ваши вкладки и содержимое будут потеряны.",
|
||
"confirm_delete_tab": "Вы уверены, что хотите удалить эту вкладку?",
|
||
"main_tab": "Основная"
|
||
},
|
||
"paper_message": {
|
||
"title": "Бумажное сообщение",
|
||
"description": "Создание и чтение подписанных бумажных сообщений LXMF через QR-коды."
|
||
}
|
||
},
|
||
"ping": {
|
||
"title": "Пинг узлов сети",
|
||
"description": "Только пункты назначения {code} отвечают на пинг.",
|
||
"destination_hash": "Хеш назначения",
|
||
"timeout_seconds": "Тайм-аут пинга (секунды)",
|
||
"start_ping": "Запустить пинг",
|
||
"stop": "Стоп",
|
||
"clear_results": "Очистить результаты",
|
||
"drop_path": "Сбросить путь",
|
||
"status": "Статус",
|
||
"running": "Запущено",
|
||
"idle": "Ожидание",
|
||
"last_rtt": "Последний RTT",
|
||
"last_error": "Последняя ошибка",
|
||
"console_output": "Вывод консоли",
|
||
"streaming_responses": "Потоковая передача seq-ответов в реальном времени",
|
||
"no_pings_yet": "Пингов пока нет. Запустите проверку для сбора данных RTT.",
|
||
"invalid_hash": "Неверный хеш назначения!",
|
||
"timeout_must_be_number": "Тайм-аут должен быть числом!"
|
||
},
|
||
"rncp": {
|
||
"file_transfer": "Передача файлов",
|
||
"title": "RNCP - Reticulum Network Copy",
|
||
"description": "Отправка и получение файлов через сеть Reticulum с использованием ресурсов RNS.",
|
||
"send_file": "Отправить файл",
|
||
"fetch_file": "Получить файл",
|
||
"listen": "Прослушивание",
|
||
"destination_hash": "Хеш назначения",
|
||
"file_path": "Путь к файлу",
|
||
"timeout_seconds": "Тайм-аут (секунды)",
|
||
"disable_compression": "Отключить сжатие",
|
||
"cancel": "Отмена",
|
||
"progress": "Прогресс",
|
||
"invalid_hash": "Неверный хеш назначения!",
|
||
"provide_file_path": "Пожалуйста, укажите путь к файлу!",
|
||
"file_sent_successfully": "Файл успешно отправлен. ID передачи: {id}",
|
||
"failed_to_send": "Не удалось отправить файл",
|
||
"remote_file_path": "Удаленный путь к файлу",
|
||
"save_path_optional": "Путь сохранения (опционально)",
|
||
"save_path_placeholder": "Оставьте пустым для текущей директории",
|
||
"allow_overwrite": "Разрешить перезапись",
|
||
"provide_remote_file_path": "Пожалуйста, укажите удаленный путь к файлу!",
|
||
"file_fetched_successfully": "Файл успешно получен. Сохранен в: {path}",
|
||
"failed_to_fetch": "Не удалось получить файл",
|
||
"allowed_hashes": "Разрешенные хеши идентичности (по одному в строке)",
|
||
"fetch_jail_path": "Путь изоляции (jail) для получения (опционально)",
|
||
"allow_fetch": "Разрешить получение",
|
||
"start_listening": "Начать прослушивание",
|
||
"stop_listening": "Остановить прослушивание",
|
||
"listening_on": "Прослушивание на:",
|
||
"provide_allowed_hash": "Пожалуйста, укажите хотя бы один разрешенный хеш идентичности!",
|
||
"failed_to_start_listener": "Не удалось запустить прослушиватель"
|
||
},
|
||
"rnprobe": {
|
||
"network_diagnostics": "Диагностика сети",
|
||
"title": "RNProbe - Проверка назначения",
|
||
"description": "Проверка пунктов назначения с настраиваемым размером пакетов для тестирования связности и измерения RTT.",
|
||
"destination_hash": "Хеш назначения",
|
||
"full_destination_name": "Полное имя назначения",
|
||
"probe_size_bytes": "Размер пакета (байты)",
|
||
"number_of_probes": "Количество проверок",
|
||
"wait_between_probes": "Ожидание между проверками (секунды)",
|
||
"start_probe": "Начать проверку",
|
||
"stop": "Стоп",
|
||
"clear_results": "Очистить результаты",
|
||
"summary": "Итог",
|
||
"sent": "Отправлено",
|
||
"delivered": "Доставлено",
|
||
"timeouts": "Тайм-ауты",
|
||
"failed": "Ошибка",
|
||
"probe_results": "Результаты проверки",
|
||
"probe_responses_realtime": "Ответы проверки в реальном времени",
|
||
"no_probes_yet": "Проверок пока нет. Запустите проверку для тестирования связности.",
|
||
"probe_number": "Проверка №{number}",
|
||
"bytes": "байт",
|
||
"hops": "Хопы",
|
||
"rtt": "RTT",
|
||
"rssi": "RSSI",
|
||
"snr": "SNR",
|
||
"quality": "Качество",
|
||
"timeout": "Тайм-аут",
|
||
"invalid_hash": "Неверный хеш назначения!",
|
||
"provide_full_name": "Пожалуйста, укажите полное имя назначения!",
|
||
"failed_to_probe": "Не удалось проверить назначение"
|
||
},
|
||
"rnstatus": {
|
||
"network_diagnostics": "Диагностика сети",
|
||
"title": "RNStatus - Статус сети",
|
||
"description": "Просмотр статистики интерфейсов и информации о статусе сети.",
|
||
"refresh": "Обновить",
|
||
"include_link_stats": "Включить статистику ссылок",
|
||
"sort_by": "Сортировать по:",
|
||
"none": "Нет",
|
||
"bitrate": "Битрейт",
|
||
"rx_bytes": "RX байт",
|
||
"tx_bytes": "TX байт",
|
||
"total_traffic": "Весь трафик",
|
||
"announces": "Анонсы",
|
||
"active_links": "Активные ссылки: {count}",
|
||
"no_interfaces_found": "Интерфейсы не найдены. Нажмите «Обновить» для загрузки статуса.",
|
||
"mode": "Режим",
|
||
"rx_packets": "RX пакетов",
|
||
"tx_packets": "TX пакетов",
|
||
"clients": "Клиенты",
|
||
"peers_reachable": "доступно",
|
||
"noise_floor": "Уровень шума",
|
||
"interference": "Помехи",
|
||
"cpu_load": "Загрузка ЦП",
|
||
"cpu_temp": "Темп. ЦП",
|
||
"memory_load": "Загрузка памяти",
|
||
"battery": "Батарея",
|
||
"network": "Сеть",
|
||
"incoming_announces": "Входящие анонсы",
|
||
"outgoing_announces": "Исходящие анонсы",
|
||
"airtime": "Эфирное время",
|
||
"channel_load": "Загрузка канала"
|
||
},
|
||
"translator": {
|
||
"text_translation": "Перевод текста",
|
||
"title": "Переводчик",
|
||
"description": "Перевод текста с использованием LibreTranslate API или локального Argos Translate.",
|
||
"argos_translate": "Argos Translate",
|
||
"libretranslate": "LibreTranslate",
|
||
"api_server": "Сервер API LibreTranslate",
|
||
"api_server_description": "Введите базовый URL вашего сервера LibreTranslate (например, http://localhost:5000)",
|
||
"source_language": "Исходный язык",
|
||
"auto_detect": "Автоопределение",
|
||
"target_language": "Целевой язык",
|
||
"select_target_language": "Выберите целевой язык",
|
||
"argos_not_detected": "Argos Translate не обнаружен",
|
||
"argos_not_detected_desc": "Для использования локального перевода необходимо установить пакет Argos Translate одним из следующих способов:",
|
||
"method_pip_venv": "Способ 1: pip (venv)",
|
||
"method_pipx": "Способ 2: pipx",
|
||
"note_restart_required": "Примечание: После установки может потребоваться перезапуск приложения и установка языковых пакетов через CLI Argos Translate.",
|
||
"no_language_packages": "Языковые пакеты не обнаружены",
|
||
"no_language_packages_desc": "Argos Translate установлен, но языковые пакеты недоступны. Установите языковые пакеты с помощью одной из следующих команд:",
|
||
"install_all_languages": "Установить все языки",
|
||
"install_specific_pair": "Установить конкретную языковую пару (пример: с английского на русский)",
|
||
"after_install_note": "После установки языковых пакетов нажмите «Обновить языки», чтобы перезагрузить список доступных языков.",
|
||
"text_to_translate": "Текст для перевода",
|
||
"enter_text_placeholder": "Введите текст для перевода...",
|
||
"translate": "Перевести",
|
||
"swap": "Поменять местами",
|
||
"clear": "Очистить",
|
||
"translation": "Перевод",
|
||
"source": "Источник",
|
||
"detected": "Определено",
|
||
"available_languages": "Доступные языки",
|
||
"languages_loaded_from": "Языки загружаются из LibreTranslate API или пакетов Argos Translate.",
|
||
"refresh_languages": "Обновить языки",
|
||
"failed_to_load_languages": "Не удалось загрузить языки. Убедитесь, что LibreTranslate запущен или Argos Translate установлен.",
|
||
"copied_to_clipboard": "Скопировано в буфер обмена"
|
||
},
|
||
"call": {
|
||
"phone": "Телефон",
|
||
"voicemail": "Голосовая почта",
|
||
"settings": "Настройки",
|
||
"unknown": "Неизвестно",
|
||
"call_ended": "Звонок завершен",
|
||
"call_declined": "Звонок отклонен",
|
||
"send_to_voicemail": "На голосовую почту",
|
||
"incoming_call": "Входящий звонок...",
|
||
"busy": "Занято...",
|
||
"rejected": "Отклонено...",
|
||
"calling": "Вызов...",
|
||
"available": "Доступно...",
|
||
"ringing": "Звонит...",
|
||
"connecting": "Подключение...",
|
||
"connected": "Подключено",
|
||
"accept": "Принять",
|
||
"decline": "Отклонить",
|
||
"hangup": "Завершить",
|
||
"answer_call": "Ответить на звонок",
|
||
"decline_call": "Отклонить звонок",
|
||
"hangup_call": "Завершить звонок",
|
||
"mute_mic": "Отключить микрофон",
|
||
"unmute_mic": "Включить микрофон",
|
||
"mute_speaker": "Отключить динамик",
|
||
"unmute_speaker": "Включить динамик",
|
||
"telephone": "Телефон",
|
||
"enter_identity_hash_to_call": "Введите хеш личности для звонка.",
|
||
"identity_hash": "Хеш личности",
|
||
"call_history": "История звонков",
|
||
"call_back": "Перезвонить",
|
||
"no_voicemails": "Нет голосовых сообщений",
|
||
"voicemails_will_appear_here": "Когда вам оставят сообщение, оно появится здесь.",
|
||
"voicemail_inbox": "Входящие голосовой почты",
|
||
"messages": "Сообщения",
|
||
"delete": "Удалить",
|
||
"voicemail_settings": "Настройки голосовой почты",
|
||
"dependencies_missing": "Отсутствуют зависимости",
|
||
"voicemail_requires_espeak": "Голосовая почта требует `espeak-ng` для генерации приветствий. Пожалуйста, установите его в вашей системе.",
|
||
"voicemail_requires_ffmpeg": "Голосовая почта требует `ffmpeg` для обработки аудиофайлов. Пожалуйста, установите его в вашей системе.",
|
||
"enable_voicemail": "Включить голосовую почту",
|
||
"enable_voicemail_description": "Автоматически принимать звонки и записывать сообщения",
|
||
"greeting_message": "Приветственное сообщение",
|
||
"enter_greeting_text": "Введите текст приветствия...",
|
||
"greeting_text_description": "Этот текст будет преобразован в речь с помощью eSpeak NG.",
|
||
"tts_speed": "Скорость TTS",
|
||
"tts_pitch": "Высота TTS",
|
||
"tts_voice": "Голос TTS",
|
||
"tts_word_gap": "Пауза между словами TTS",
|
||
"save_and_generate": "Сохранить и создать",
|
||
"generating": "Создание...",
|
||
"preview_greeting": "Предпросмотр приветствия",
|
||
"stop_preview": "Остановить предпросмотр",
|
||
"answer_delay_seconds": "Задержка ответа (с)",
|
||
"max_recording_seconds": "Макс. время записи (с)",
|
||
"recording_voicemail": "Запись голосового сообщения",
|
||
"call_status": "Статус звонка",
|
||
"call_recording": "Запись звонков",
|
||
"call_recording_description": "Записывать голосовые звонки в хранилище",
|
||
"recordings": "Записи",
|
||
"no_recordings": "Записей не найдено",
|
||
"remote_rx": "Удаленный (RX)",
|
||
"local_tx": "Локальный (TX)",
|
||
"download_rx": "Скачать RX",
|
||
"download_tx": "Скачать TX",
|
||
"default_quality": "Качество по умолчанию",
|
||
"active_call": "Активный звонок",
|
||
"status": "Статус",
|
||
"failed_to_answer_call": "Не удалось ответить на звонок",
|
||
"failed_to_hangup_call": "Не удалось завершить звонок",
|
||
"failed_to_toggle_microphone": "Не удалось переключить микрофон",
|
||
"failed_to_toggle_speaker": "Не удалось переключить динамик",
|
||
"failed_to_switch_audio_profile": "Не удалось переключить аудио профиль",
|
||
"failed_to_initiate_call": "Не удалось инициировать звонок",
|
||
"enter_identity_hash_to_call_error": "Введите хеш личности для звонка",
|
||
"failed_to_save_settings": "Не удалось сохранить настройки",
|
||
"do_not_disturb": "Не беспокоить",
|
||
"load_more": "Загрузить еще",
|
||
"go_to_phone_page": "На страницу телефона",
|
||
"search_history": "Поиск по истории...",
|
||
"allow_calls_from_contacts_only": "Звонки только от контактов",
|
||
"settings_saved": "Настройки сохранены",
|
||
"greeting_generated_successfully": "Приветствие успешно создано",
|
||
"failed_to_generate_greeting": "Не удалось создать приветствие",
|
||
"no_greeting_audio_found": "Аудио приветствия не найдено. Пожалуйста, создайте его сначала.",
|
||
"voicemail_deleted": "Голосовое сообщение удалено",
|
||
"failed_to_delete_voicemail": "Не удалось удалить голосовое сообщение",
|
||
"ringtone": "Рингтон",
|
||
"ringtone_settings": "Настройки рингтона",
|
||
"enable_custom_ringtone": "Включить свой рингтон",
|
||
"enable_custom_ringtone_description": "Воспроизводить свой аудиофайл при всех входящих звонках",
|
||
"upload_ringtone": "Загрузить рингтон",
|
||
"uploading_ringtone": "Загрузка рингтона...",
|
||
"no_custom_ringtone_uploaded": "Свой рингтон не загружен",
|
||
"supports_audio_formats": "Поддерживаются MP3, OGG, WAV, M4A, FLAC. Будет конвертирован в Opus.",
|
||
"preview_ringtone": "Прослушать рингтон",
|
||
"remove_ringtone": "Удалить рингтон",
|
||
"ringtone_uploaded_successfully": "Рингтон успешно загружен",
|
||
"failed_to_upload_ringtone": "Не удалось загрузить рингтон",
|
||
"ringtone_deleted": "Рингтон удален",
|
||
"failed_to_delete_ringtone": "Не удалось удалить рингтон",
|
||
"no_ringtone_audio_found": "Аудио рингтона не найдено. Пожалуйста, сначала загрузите его.",
|
||
"ringtone_volume": "Громкость рингтона",
|
||
"default_ringtone": "Рингтон по умолчанию",
|
||
"ringtone_for_non_contacts": "Рингтон для звонков не из списка контактов",
|
||
"primary_system_default": "Основной (системный)",
|
||
"random": "Случайный",
|
||
"edit_contact": "Изменить контакт",
|
||
"add_contact": "Добавить контакт",
|
||
"contact_name": "Имя контакта",
|
||
"preferred_ringtone": "Предпочитаемый рингтон",
|
||
"default_global_setting": "По умолчанию (общие настройки)",
|
||
"uploaded_ringtones": "Загруженные рингтоны",
|
||
"save_contact": "Сохранить контакт",
|
||
"primary_ringtone_set": "Основной рингтон установлен",
|
||
"failed_to_set_primary_ringtone": "Не удалось установить основной рингтон",
|
||
"failed_to_update_ringtone_name": "Не удалось обновить название рингтона",
|
||
"failed_to_play_ringtone": "Не удалось воспроизвести рингтон",
|
||
"failed_to_play_voicemail": "Не удалось воспроизвести сообщение"
|
||
},
|
||
"command_palette": {
|
||
"search_placeholder": "Поиск или ввод команды...",
|
||
"no_results": "Ничего не найдено по запросу \"{query}\"",
|
||
"nav_messages": "Перейти к сообщениям",
|
||
"nav_messages_desc": "Открыть недавние разговоры",
|
||
"nav_nomad": "Перейти в Nomad Network",
|
||
"nav_nomad_desc": "Просмотр распределенной сети",
|
||
"nav_map": "Перейти к карте",
|
||
"nav_map_desc": "Просмотр местоположения и телеметрии",
|
||
"nav_paper": "Генератор бумажных сообщений",
|
||
"nav_paper_desc": "Создание подписанных QR-кодов",
|
||
"nav_call": "Перейти к звонкам",
|
||
"nav_call_desc": "Голосовые звонки и голосовая почта",
|
||
"nav_settings": "Перейти к настройкам",
|
||
"nav_settings_desc": "Конфигурация и настройки приложения",
|
||
"action_sync": "Синхронизировать сообщения",
|
||
"action_sync_desc": "Запросить сообщения с узла",
|
||
"action_compose": "Написать новое сообщение",
|
||
"action_compose_desc": "Начать новый чат по адресу",
|
||
"action_orbit": "Режим орбиты",
|
||
"action_orbit_desc": "Визуализация космической орбиты",
|
||
"group_recent": "Недавние разговоры",
|
||
"group_contacts": "Контакты",
|
||
"group_actions": "Быстрые действия",
|
||
"footer_navigate": "Навигация",
|
||
"footer_select": "Выбрать"
|
||
}
|
||
}
|