// ignore: unused_import import 'package:intl/intl.dart' as intl; import 'app_localizations.dart'; // ignore_for_file: type=lint /// The translations for Russian (`ru`). class AppLocalizationsRu extends AppLocalizations { AppLocalizationsRu([String locale = 'ru']) : super(locale); @override String get appTitle => 'Offband Meshcore'; @override String get nav_contacts => 'Контакты'; @override String get nav_channels => 'Каналы'; @override String get nav_map => 'Карта'; @override String get common_cancel => 'Отмена'; @override String get common_ok => 'OK'; @override String get common_connect => 'Коннект'; @override String get common_unknownDevice => 'Неизвестное устройство'; @override String get common_save => 'Сохранить'; @override String get common_delete => 'Удалить'; @override String get common_deleteAll => 'Удалить все'; @override String get common_close => 'Закрыть'; @override String get common_done => 'Готово'; @override String get common_edit => 'Изменить'; @override String get common_add => 'Добавить'; @override String get common_settings => 'Настройки'; @override String get common_disconnect => 'Отключить'; @override String get common_connected => 'Подключено'; @override String get common_disconnected => 'Отключено'; @override String get common_create => 'Создать'; @override String get common_continue => 'Продолжить'; @override String get common_share => 'Поделиться'; @override String get common_copy => 'Копировать'; @override String get common_retry => 'Повторить'; @override String get common_hide => 'Скрыть'; @override String get common_remove => 'Убрать'; @override String get common_enable => 'Включить'; @override String get common_disable => 'Выключить'; @override String get common_reboot => 'Перезагрузить'; @override String get common_loading => 'Загрузка...'; @override String get common_notAvailable => '—'; @override String common_voltageValue(String volts) { return '$volts В'; } @override String common_percentValue(int percent) { return '$percent%'; } @override String get common_autoRefresh => 'Автообновление'; @override String get common_interval => 'Интервал'; @override String get scanner_title => 'Offband Meshcore'; @override String get connectionChoiceUsbLabel => 'USB'; @override String get connectionChoiceBluetoothLabel => 'Bluetooth'; @override String get connectionChoiceTcpLabel => 'TCP'; @override String get tcpScreenTitle => 'Установить соединение по протоколу TCP'; @override String get tcpHostLabel => 'IP-адрес'; @override String get tcpHostHint => '192.168.40.10'; @override String get tcpPortLabel => 'Порт'; @override String get tcpPortHint => '5000'; @override String get tcpStatus_notConnected => 'Введите адрес и подключитесь.'; @override String tcpStatus_connectingTo(String endpoint) { return 'Подключение к $endpoint...'; } @override String get tcpErrorHostRequired => 'Необходимо указать IP-адрес.'; @override String get tcpErrorPortInvalid => 'Порт должен находиться в диапазоне от 1 до 65535.'; @override String get tcpErrorUnsupported => 'Протокол TCP не поддерживается на этой платформе.'; @override String get tcpErrorTimedOut => 'Соединение TCP не удалось установить.'; @override String tcpConnectionFailed(String error) { return 'Не удалось установить соединение TCP: $error'; } @override String get usbScreenTitle => 'Подключение через USB'; @override String get usbScreenSubtitle => 'Выберите обнаруженное устройство с последовательным интерфейсом и подключите его напрямую к вашему узлу MeshCore.'; @override String get usbScreenStatus => 'Выберите USB-устройство'; @override String get usbScreenNote => 'USB-серийный порт активен на поддерживаемых устройствах Android и на настольных платформах.'; @override String get usbScreenEmptyState => 'Не обнаружено устройств USB. Подключите одно из них и обновите список.'; @override String get usbErrorPermissionDenied => 'Запрос на доступ через USB был отклонен.'; @override String get usbErrorDeviceMissing => 'Выбранное USB-устройство больше недоступно.'; @override String get usbErrorInvalidPort => 'Выберите действительное USB-устройство.'; @override String get usbErrorBusy => 'Еще одно запрошенное соединение через USB уже находится в процессе.'; @override String get usbErrorNotConnected => 'Ни одно USB-устройство не подключено.'; @override String get usbErrorOpenFailed => 'Не удалось открыть выбранное USB-устройство.'; @override String get usbErrorConnectFailed => 'Не удалось установить соединение с выбранным USB-устройством.'; @override String get usbErrorUnsupported => 'Поддержка последовательного USB отсутствует на данной платформе.'; @override String get usbErrorAlreadyActive => 'USB-соединение уже установлено.'; @override String get usbErrorNoDeviceSelected => 'Не было выбрано ни одно устройство USB.'; @override String get usbErrorPortClosed => 'USB-соединение не установлено.'; @override String get usbErrorConnectTimedOut => 'Соединение не установлено. Убедитесь, что устройство имеет установленное программное обеспечение USB Companion.'; @override String get usbFallbackDeviceName => 'Устройство для последовательного подключения к сети'; @override String get usbStatus_notConnected => 'Выберите USB-устройство'; @override String get usbStatus_connecting => 'Подключение к USB-устройству...'; @override String get usbStatus_searching => 'Поиск USB-устройств...'; @override String usbConnectionFailed(String error) { return 'Не удалось установить соединение через USB: $error'; } @override String get scanner_scanning => 'Поиск устройств...'; @override String get scanner_connecting => 'Подключение...'; @override String get scanner_disconnecting => 'Отключение...'; @override String get scanner_notConnected => 'Не подключено'; @override String scanner_connectedTo(String deviceName) { return 'Подключено к $deviceName'; } @override String get scanner_searchingDevices => 'Поиск устройств MeshCore...'; @override String get scanner_tapToScan => 'Нажмите для поиска MeshCore устройств'; @override String scanner_connectionFailed(String error) { return 'Подключение не удалось: $error'; } @override String get scanner_stop => 'Стоп'; @override String get scanner_scan => 'Сканирование'; @override String get scanner_bluetoothOff => 'Bluetooth выключен'; @override String get scanner_bluetoothOffMessage => 'Пожалуйста, включите Bluetooth, чтобы найти устройства.'; @override String get scanner_chromeRequired => 'Требуется браузер Chrome'; @override String get scanner_chromeRequiredMessage => 'Для поддержки Bluetooth в этом веб-приложении требуется Google Chrome или браузер на базе Chromium.'; @override String get scanner_enableBluetooth => 'Включите Bluetooth'; @override String get device_quickSwitch => 'Быстрое переключение'; @override String get device_meshcore => 'MeshCore'; @override String get settings_title => 'Настройки'; @override String get settings_deviceInfo => 'Информация об устройстве'; @override String get settings_appSettings => 'Настройки приложения'; @override String get settings_appSettingsSubtitle => 'Внешний вид, перевод и настройки карты'; @override String get settings_messageSettings => 'Message Settings'; @override String get settings_messageSettingsSubtitle => 'Notifications and message handling'; @override String get settings_nodeSettings => 'Настройки ноды'; @override String get settings_nodeName => 'Имя ноды'; @override String get settings_nodeNameNotSet => 'Не установлено'; @override String get settings_nodeNameHint => 'Введите имя ноды'; @override String get settings_nodeNameUpdated => 'Имя обновлено'; @override String get settings_radioSettings => 'Настройки радио'; @override String get settings_radioSettingsSubtitle => 'Частота, мощность и коэффициент распространения'; @override String get settings_radioSettingsUpdated => 'Настройки радио обновлены'; @override String get settings_location => 'Позиция'; @override String get settings_locationSubtitle => 'Координаты GPS'; @override String get settings_locationUpdated => 'Позиция и настройки GPS обновлены'; @override String get settings_locationBothRequired => 'Введите широту и долготу.'; @override String get settings_locationInvalid => 'Неверная широта или долгота.'; @override String get settings_locationGPSEnable => 'Включить GPS'; @override String get settings_locationGPSEnableSubtitle => 'Включение GPS для автоматического обновления позиции.'; @override String get settings_locationIntervalSec => 'Интервал для позиционирования GPS (секунды)'; @override String get settings_gpsStatusTitle => 'GPS status'; @override String get settings_gpsStatusRefresh => 'Query GPS'; @override String get settings_gpsStatusLiveFix => 'Live GPS fix'; @override String get settings_gpsStatusNoFix => 'No fix: using stored/last position'; @override String get settings_gpsStatusCoords => 'Coordinates'; @override String get settings_gpsStatusSats => 'Satellites'; @override String get settings_gpsStatusAltitude => 'Altitude'; @override String get settings_gpsStatusTime => 'Fix time'; @override String get settings_gpsStatusTapRefresh => 'Tap Query GPS to read the current GPS state'; @override String get settings_gpsStatusNoResponse => 'No response: device may need the GPS-query firmware build'; @override String get settings_locationIntervalInvalid => 'Интервал должен составлять не менее 60 секунд и не более 86400 секунд.'; @override String get settings_latitude => 'Широта'; @override String get settings_longitude => 'Долгота'; @override String get settings_contactSettings => 'Настройки контактов'; @override String get settings_contactSettingsSubtitle => 'Настройки добавления контактов'; @override String get settings_privacyMode => 'Режим конфиденциальности'; @override String get settings_privacyModeSubtitle => 'Скрыть имя/позицию в анонсировании'; @override String get settings_privacyModeToggle => 'Включите режим конфиденциальности, чтобы скрыть свое имя и местоположение в анонсировании.'; @override String get settings_privacyModeEnabled => 'Режим конфиденциальности включен'; @override String get settings_privacyModeDisabled => 'Режим конфиденциальности выключен'; @override String get settings_privacy => 'Настройки конфиденциальности'; @override String get settings_privacySubtitle => 'Контролируйте, какую информацию делиться.'; @override String get settings_privacySettingsDescription => 'Выберите, какую информацию ваше устройство будет делиться с другими.'; @override String get settings_denyAll => 'Отклонить все'; @override String get settings_allowByContact => 'Разрешить по флагам контактов'; @override String get settings_allowAll => 'Разрешить все'; @override String get settings_telemetryBaseMode => 'Базовый режим телеметрии'; @override String get settings_telemetryLocationMode => 'Режим местоположения телеметрии'; @override String get settings_telemetryEnvironmentMode => 'Режим среды телеметрии'; @override String get settings_advertLocation => 'Местоположение рекламы'; @override String get settings_advertLocationSubtitle => 'Включить местоположение в объявление'; @override String get settings_multiAck => 'Несколько подтверждений'; @override String get settings_telemetryModeUpdated => 'Режим телеметрии обновлен'; @override String get settings_actions => 'Действия'; @override String get settings_deleteAllPaths => 'Delete All Paths'; @override String get settings_deleteAllPathsSubtitle => 'Clear all path data from contacts.'; @override String get settings_sendAdvertisement => 'Отправить анонсирование'; @override String get settings_sendAdvertisementSubtitle => 'Отправить анонсирование о присутствии сейчас'; @override String get settings_advertisementSent => 'Анонсирование отправлено'; @override String get settings_syncTime => 'Синхронизация времени'; @override String get settings_syncTimeSubtitle => 'Синхронизировать время с телефоном'; @override String get settings_timeSynchronized => 'Время синхронизировано'; @override String get settings_refreshContacts => 'Обновить контакты'; @override String get settings_refreshContactsSubtitle => 'Перезагрузить список контактов с устройства'; @override String get settings_rebootDevice => 'Перезагрузить устройство'; @override String get settings_rebootDeviceSubtitle => 'Перезапустить устройство MeshCore'; @override String get settings_rebootDeviceConfirm => 'Вы уверены, что хотите перезагрузить устройство? Вы будете отключены.'; @override String get settings_debug => 'Отладка'; @override String get settings_experimental => 'Experimental'; @override String get settings_experimentalSubtitle => 'Advanced and in-development features'; @override String get settings_experimentalDescription => 'These features are experimental and may change or be removed at any time. They default to off.'; @override String get settings_coreScopeObserverCount => 'CoreScope observer counts'; @override String get settings_coreScopeObserverCountSubtitle => 'On outgoing channel messages, show how many CoreScope observers heard the packet, alongside radio-heard repeats. Needs internet.'; @override String get settings_coreScopeObserverCountUnsupported => 'Requires a firmware build with packet-hash support (v22+).'; @override String get settings_experimentalDisable => 'Disable experimental features'; @override String get settings_experimentalDisableSubtitle => 'Turns off all experimental features and hides this section. Unlock again with 7 taps on the Build row.'; @override String get settings_experimentalUnlocked => 'Experimental features unlocked'; @override String get settings_experimentalAlreadyUnlocked => 'Experimental features are already unlocked'; @override String settings_experimentalCountdown(int count) { return '$count more taps to unlock experimental features'; } @override String get settings_companionDebugLog => 'Журнал отладки (для сопутствующего приложения)'; @override String get settings_companionDebugLogSubtitle => 'Команды, ответы и необработанные данные, используемые для протоколов BLE, TCP и USB.'; @override String get settings_appDebugLog => 'Журнал отладки приложения'; @override String get settings_appDebugLogSubtitle => 'Сообщения отладки приложения'; @override String get settings_about => 'О программе'; @override String settings_aboutVersion(String version) { return 'Offband Meshcore v$version'; } @override String get settings_aboutLegalese => '2026 MeshCore Open Source Project'; @override String get settings_aboutDescription => 'Открытое клиентское приложение на Flutter для устройств MeshCore с LoRa-сетями.'; @override String get settings_aboutLicenses => 'View licenses'; @override String get settings_aboutWebsite => 'Offband website'; @override String get settings_aboutPlayStore => 'Google Play'; @override String get settings_aboutDonate => 'Donate or sponsor'; @override String get settings_aboutLinkFailed => 'Could not open the link'; @override String get settings_aboutOpenMeteoAttribution => 'Данные о высоте LOS: Open-Meteo (CC BY 4.0)'; @override String get settings_infoName => 'Имя'; @override String get settings_infoId => 'ID'; @override String get settings_infoStatus => 'Статус'; @override String get settings_infoFirmware => 'Firmware'; @override String get settings_infoModel => 'Model'; @override String get settings_infoOffbandCaps => 'Offband capabilities'; @override String get settings_infoBattery => 'Батарея'; @override String get settings_infoPublicKey => 'Публичный ключ'; @override String get settings_infoBuild => 'Build'; @override String get settings_infoDataScope => 'Data scope'; @override String get settings_infoDataScopeSubtitle => 'Messages, contacts, and channels are stored per radio under this key'; @override String get settings_publicKeyCopied => 'Public key copied'; @override String get settings_infoContactsCount => 'Количество контактов'; @override String get settings_infoChannelCount => 'Количество каналов'; @override String get settings_presets => 'Пресеты'; @override String get settings_frequency => 'Частота (МГц)'; @override String get settings_frequencyHelper => '300.0 – 2500.0'; @override String get settings_frequencyInvalid => 'Недопустимая частота (300–2500 МГц)'; @override String get settings_bandwidth => 'Полоса пропускания'; @override String get settings_spreadingFactor => 'Коэффициент расширения'; @override String get settings_codingRate => 'Коэффициент кодирования'; @override String get settings_txPower => 'Мощность передачи (дБм)'; @override String get settings_txPowerHelper => '0 – 22'; @override String get settings_txPowerInvalid => 'Недопустимая мощность передачи (0–22 дБм)'; @override String get settings_clientRepeat => 'Повторение \"вне сети\"'; @override String get settings_clientRepeatSubtitle => 'Позвольте этому устройству повторять пакеты данных для других устройств.'; @override String get settings_femLna => 'Receive amplifier (FEM LNA)'; @override String get settings_femLnaSubtitle => 'Boosts receive sensitivity. Leave on unless you are troubleshooting a strong nearby signal.'; @override String get settings_clientRepeatFreqWarning => 'Для работы в режиме \"без подключения к сети\" требуется частота 433, 869 или 918 МГц.'; @override String settings_error(String message) { return 'Ошибка: $message'; } @override String get appSettings_title => 'Настройки приложения'; @override String get appSettings_appearance => 'Внешний вид'; @override String get appSettings_theme => 'Тема'; @override String get appSettings_themeSystem => 'Как в системе'; @override String get appSettings_themeLight => 'Светлая'; @override String get appSettings_themeDark => 'Тёмная'; @override String get appSettings_clock => 'Clock'; @override String get appSettings_clockSystem => 'System default'; @override String get appSettings_clock12h => '12-hour'; @override String get appSettings_clock24h => '24-hour'; @override String get appSettings_language => 'Язык'; @override String get appSettings_languageSystem => 'Как в системе'; @override String get appSettings_languageEn => 'Английский'; @override String get appSettings_languageFr => 'Французский'; @override String get appSettings_languageEs => 'Испанский'; @override String get appSettings_languageDe => 'Немецкий'; @override String get appSettings_languagePl => 'Польский'; @override String get appSettings_languageSl => 'Словенский'; @override String get appSettings_languagePt => 'Португальский'; @override String get appSettings_languageIt => 'Итальянский'; @override String get appSettings_languageZh => 'Китайский'; @override String get appSettings_languageSv => 'Шведский'; @override String get appSettings_languageNl => 'Нидерландский'; @override String get appSettings_languageSk => 'Словацкий'; @override String get appSettings_languageBg => 'Болгарский'; @override String get appSettings_languageRu => 'Русский'; @override String get appSettings_languageUk => 'Українська'; @override String get appSettings_enableMessageTracing => 'Включить трассировку сообщений'; @override String get appSettings_enableMessageTracingSubtitle => 'Показывать подробные метаданные о маршрутизации и времени для сообщений'; @override String get appSettings_notifications => 'Уведомления'; @override String get appSettings_enableNotifications => 'Включить уведомления'; @override String get appSettings_enableNotificationsSubtitle => 'Получать уведомления о сообщениях и оповещениях'; @override String get appSettings_notificationPermissionDenied => 'Разрешение на уведомления отклонено'; @override String get appSettings_notificationsEnabled => 'Уведомления включены'; @override String get appSettings_notificationsDisabled => 'Уведомления отключены'; @override String get appSettings_messageNotifications => 'Уведомления о сообщениях'; @override String get appSettings_messageNotificationsSubtitle => 'Показывать уведомление при получении новых сообщений'; @override String get appSettings_channelMessageNotifications => 'Уведомления о сообщениях в каналах'; @override String get appSettings_channelMessageNotificationsSubtitle => 'Показывать уведомление при получении сообщений в каналах'; @override String get appSettings_advertisementNotifications => 'Обнаружен новый узел'; @override String get appSettings_advertisementNotificationsSubtitle => 'Уведомлять при обнаружении новых репитеров или контактов'; @override String get appSettings_messaging => 'Обмен сообщениями'; @override String get appSettings_clearPathOnMaxRetry => 'Сбросить маршрут после максимального числа попыток'; @override String get appSettings_clearPathOnMaxRetrySubtitle => 'Сбросить маршрут контакта после 5 неудачных попыток отправки'; @override String get appSettings_pathsWillBeCleared => 'Маршруты будут сброшены после 5 неудачных попыток'; @override String get appSettings_pathsWillNotBeCleared => 'Маршруты не будут автоматически сбрасываться'; @override String get appSettings_autoRouteRotation => 'Автоматическое переключение маршрутов'; @override String get appSettings_autoRouteRotationSubtitle => 'Циклически переключаться между лучшими маршрутами и режимом рассылки'; @override String get appSettings_autoRouteRotationEnabled => 'Автоматическое переключение маршрутов включено'; @override String get appSettings_autoRouteRotationDisabled => 'Автоматическое переключение маршрутов отключено'; @override String get appSettings_maxRouteWeight => 'Максимальный допустимый вес маршрута'; @override String get appSettings_maxRouteWeightSubtitle => 'Максимальный вес, который может быть перевезён по определённому маршруту при успешных доставках.'; @override String get appSettings_initialRouteWeight => 'Начальный вес маршрута'; @override String get appSettings_initialRouteWeightSubtitle => 'Начальный вес для новых, только что открытых маршрутов'; @override String get appSettings_routeWeightSuccessIncrement => 'Увеличение веса успеха'; @override String get appSettings_routeWeightSuccessIncrementSubtitle => 'Вес, добавленный к маршруту после успешной доставки.'; @override String get appSettings_routeWeightFailureDecrement => 'Уменьшение веса неудачи'; @override String get appSettings_routeWeightFailureDecrementSubtitle => 'Вес, который был удален с пути после неудачной доставки.'; @override String get appSettings_maxMessageRetries => 'Максимальное количество повторных попыток отправки сообщения'; @override String get appSettings_maxMessageRetriesSubtitle => 'Количество попыток повторной отправки сообщения перед тем, как пометить его как неудачное.'; @override String path_routeWeight(String weight, String max) { return '$weight/$max'; } @override String get appSettings_battery => 'Батарея'; @override String get appSettings_batteryChemistry => 'Химия батареи'; @override String appSettings_batteryChemistryPerDevice(String deviceName) { return 'Установить для устройства ($deviceName)'; } @override String get appSettings_batteryChemistryConnectFirst => 'Подключитесь к устройству, чтобы выбрать'; @override String get appSettings_batteryNmc => '18650 NMC (3.0–4.2 В)'; @override String get appSettings_batteryLifepo4 => 'LiFePO4 (2.6–3.65 В)'; @override String get appSettings_batteryLipo => 'LiPo (3.0–4.2 В)'; @override String get appSettings_keepScreenAwake => 'Не выключать экран'; @override String get appSettings_keepScreenAwakeSubtitle => 'Экран не будет гаснуть, пока приложение открыто. Расходует больше заряда.'; @override String get appSettings_mapDisplay => 'Отображение карты'; @override String get appSettings_showRepeaters => 'Показывать репитеры'; @override String get appSettings_showRepeatersSubtitle => 'Отображать репитеры на карте'; @override String get appSettings_showChatNodes => 'Показывать чат-ноды'; @override String get appSettings_showChatNodesSubtitle => 'Отображать чат-ноды на карте'; @override String get appSettings_showOtherNodes => 'Показывать другие ноды'; @override String get appSettings_showOtherNodesSubtitle => 'Отображать другие типы нод на карте'; @override String get appSettings_timeFilter => 'Фильтр по времени'; @override String get appSettings_timeFilterShowAll => 'Показывать все ноды'; @override String appSettings_timeFilterShowLast(int hours) { return 'Показывать ноды за последние $hours ч'; } @override String get appSettings_mapTimeFilter => 'Временной фильтр карты'; @override String get appSettings_showNodesDiscoveredWithin => 'Показывать ноды, обнаруженные за:'; @override String get appSettings_allTime => 'Всё время'; @override String get appSettings_lastHour => 'Последний час'; @override String get appSettings_last6Hours => 'Последние 6 часов'; @override String get appSettings_last24Hours => 'Последние 24 часа'; @override String get appSettings_lastWeek => 'Последнюю неделю'; @override String get appSettings_offlineMapCache => 'Кэш офлайн-карты'; @override String get appSettings_unitsTitle => 'Единицы'; @override String get appSettings_unitsMetric => 'Метрическая (м/км)'; @override String get appSettings_unitsImperial => 'Имперская (ft / mi)'; @override String get appSettings_noAreaSelected => 'Область не выбрана'; @override String appSettings_areaSelectedZoom(int minZoom, int maxZoom) { return 'Область выбрана (масштаб $minZoom–$maxZoom)'; } @override String get appSettings_debugCard => 'Отладка'; @override String get appSettings_appDebugLogging => 'Журнал отладки приложения'; @override String get appSettings_appDebugLoggingSubtitle => 'Записывать отладочные сообщения приложения для диагностики'; @override String get appSettings_appDebugLoggingEnabled => 'Журнал отладки приложения включён'; @override String get appSettings_appDebugLoggingDisabled => 'Журнал отладки приложения отключён'; @override String get contacts_title => 'Контакты'; @override String get contacts_noContacts => 'Контактов пока нет'; @override String get contacts_contactsWillAppear => 'Контакты появятся, когда устройства начнут рассылать оповещения'; @override String get contacts_unread => 'Непрочитанное'; @override String get contacts_searchContactsNoNumber => 'Поиск контактов...'; @override String contacts_searchContacts(int number, String str) { return 'Поиск контактов...'; } @override String contacts_searchFavorites(int number, String str) { return 'Поиск $number$str избранного...'; } @override String contacts_searchUsers(int number, String str) { return 'Поиск $number$str пользователей...'; } @override String contacts_searchRepeaters(int number, String str) { return 'Поиск $number$str ретрансляторов...'; } @override String contacts_searchRoomServers(int number, String str) { return 'Поиск $number$str серверов комнат...'; } @override String contacts_searchSensors(int number, String str) { return 'Search $number$str Sensors...'; } @override String get contacts_noUnreadContacts => 'Нет непрочитанных контактов'; @override String get contacts_noContactsFound => 'Контакты или группы не найдены'; @override String get contacts_deleteContact => 'Удалить контакт'; @override String contacts_removeConfirm(String contactName) { return 'Удалить $contactName из контактов?'; } @override String get contacts_manageRepeater => 'Управление репитером'; @override String get contacts_manageRoom => 'Управление сервером комнат'; @override String get contacts_roomLogin => 'Вход на сервер комнат'; @override String get contacts_openChat => 'Открыть чат'; @override String get contacts_editGroup => 'Изменить группу'; @override String get contacts_deleteGroup => 'Удалить группу'; @override String contacts_deleteGroupConfirm(String groupName) { return 'Удалить \"$groupName\"?'; } @override String get contacts_newGroup => 'Новая группа'; @override String get contacts_groupName => 'Имя группы'; @override String get contacts_groupNameRequired => 'Имя группы обязательно'; @override String get contacts_groupNameReserved => 'Это имя группы зарезервировано'; @override String contacts_groupAlreadyExists(String name) { return 'Группа \"$name\" уже существует'; } @override String get contacts_filterContacts => 'Фильтр контактов...'; @override String get contacts_noContactsMatchFilter => 'Нет контактов, соответствующих фильтру'; @override String get contacts_noMembers => 'Нет участников'; @override String get contacts_lastSeenNow => 'Видели только что'; @override String contacts_lastSeenMinsAgo(int minutes) { return 'Видели $minutes мин назад'; } @override String get contacts_lastSeenHourAgo => 'Видели 1 час назад'; @override String contacts_lastSeenHoursAgo(int hours) { return 'Видели $hours ч назад'; } @override String get contacts_lastSeenDayAgo => 'Видели 1 день назад'; @override String contacts_lastSeenDaysAgo(int days) { return 'Видели $days дн. назад'; } @override String get contact_info => 'Контактная информация'; @override String get contact_settings => 'Настройки контактов'; @override String get contact_telemetry => 'Телеметрия'; @override String get contact_lastSeen => 'Последний раз видели'; @override String get contact_clearChat => 'Очистить чат'; @override String get contact_teleBase => 'База телеметрии'; @override String get contact_teleBaseSubtitle => 'Разрешить обмен уровнем заряда батареи и базовой телеметрией'; @override String get contact_teleLoc => 'Местоположение телеметрии'; @override String get contact_teleLocSubtitle => 'Разрешить обмен данными о местоположении'; @override String get contact_teleEnv => 'Среда телеметрии'; @override String get contact_teleEnvSubtitle => 'Разрешить обмен данными датчиков окружающей среды'; @override String get channels_title => 'Каналы'; @override String get channels_noChannelsConfigured => 'Каналы не настроены'; @override String get channels_addPublicChannel => 'Добавить публичный канал'; @override String get channels_searchChannels => 'Поиск каналов...'; @override String get channels_noChannelsFound => 'Каналы не найдены'; @override String channels_channelIndex(int index) { return 'Канал $index'; } @override String get channels_public => 'Публичный'; @override String channels_via(String path) { return 'через $path'; } @override String get channels_private => 'Приватный'; @override String get channels_editChannel => 'Изменить канал'; @override String get channels_muteChannel => 'Отключить уведомления канала'; @override String get channels_unmuteChannel => 'Включить уведомления канала'; @override String get channels_notifications => 'Notifications'; @override String get channels_notifyAll => 'All messages'; @override String get channels_notifyMentionsOnly => 'Mentions only'; @override String get channels_notifyOff => 'Off'; @override String get channels_deleteChannel => 'Удалить канал'; @override String channels_deleteChannelConfirm(String name) { return 'Удалить \"$name\"? Это действие нельзя отменить.'; } @override String channels_channelDeleteFailed(String name) { return 'Не удалось удалить канал $name.'; } @override String channels_channelDeleted(String name) { return 'Канал \"$name\" удалён'; } @override String get channels_addChannel => 'Добавить канал'; @override String get channels_channelIndexLabel => 'Индекс канала'; @override String get channels_channelName => 'Имя канала'; @override String get channels_usePublicChannel => 'Использовать публичный канал'; @override String get channels_standardPublicPsk => 'Стандартный публичный PSK'; @override String get channels_pskHex => 'PSK (Hex)'; @override String get channels_generateRandomPsk => 'Сгенерировать случайный PSK'; @override String get channels_enterChannelName => 'Введите имя канала'; @override String get channels_pskMustBe32Hex => 'PSK должен содержать 32 шестнадцатеричных символа'; @override String channels_channelAdded(String name) { return 'Канал \"$name\" добавлен'; } @override String channels_editChannelTitle(int index) { return 'Изменить канал $index'; } @override String get channels_cyr2latCompression => 'Сжатие Cyr2Lat'; @override String get channels_cyr2latCompressionDscr => 'Заменяет некоторые кириллические символы на латиницу при отправке.'; @override String get channels_cyr2latSettingsHeading => 'Настройка Cyr2Lat'; @override String get channels_cyr2latSettingsSubheading => 'Список замен'; @override String get channels_cyr2latSettingsDscr => 'Редактировать JSON-конфигурацию замены символов'; @override String get channels_cyr2latSettingsDialogHint => 'JSON-карта замен'; @override String channels_cyr2latSettingsDialogWrongJSON(Object error) { return 'Некорректный JSON: $error'; } @override String channels_channelUpdated(String name) { return 'Канал \"$name\" обновлён'; } @override String get settings_cyr2latProfileAdd => 'Добавить профиль Cyr2Lat'; @override String get settings_cyr2latProfileName => 'Название профиля'; @override String get settings_cyr2latProfileNameEmpty => 'Название профиля не может быть пустым'; @override String get settings_cyr2latProfileAdded => 'Профиль добавлен'; @override String get settings_cyr2latProfileUpdated => 'Профиль успешно обновлен'; @override String get settings_cyr2latProfileEdit => 'Редактировать профиль Cyr2Lat'; @override String get settings_cyr2latProfileDelete => 'Удалить профиль Cyr2Lat'; @override String get settings_cyr2latProfileDeleted => 'Профиль успешно удален'; @override String settings_cyr2latProfileDeleteDscr(String name) { return 'Вы действительно хотите удалить профиль \"$name\"?'; } @override String get channels_publicChannelAdded => 'Публичный канал добавлен'; @override String get channels_sortBy => 'Сортировка'; @override String get channels_sortManual => 'Вручную'; @override String get channels_sortAZ => 'По алфавиту'; @override String get channels_sortLatestMessages => 'По последним сообщениям'; @override String get channels_sortUnread => 'По непрочитанным'; @override String get channels_createPrivateChannel => 'Создать приватный канал'; @override String get channels_createPrivateChannelDesc => 'Защищён секретным ключом.'; @override String get channels_joinPrivateChannel => 'Присоединиться к приватному каналу'; @override String get channels_joinPrivateChannelDesc => 'Введите секретный ключ вручную.'; @override String get channels_joinPublicChannel => 'Присоединиться к публичному каналу'; @override String get channels_joinPublicChannelDesc => 'К этому каналу может присоединиться любой.'; @override String get channels_joinHashtagChannel => 'Присоединиться к хэштег-каналу'; @override String get channels_joinHashtagChannelDesc => 'К хэштег-каналам может присоединиться любой.'; @override String get channels_scanQrCode => 'Сканировать QR-код'; @override String get channels_scanQrCodeComingSoon => 'Скоро будет'; @override String get channels_enterHashtag => 'Введите хэштег'; @override String get channels_hashtagHint => 'например, #команда'; @override String get chat_noMessages => 'Сообщений пока нет'; @override String get chat_sendMessage => 'Отправить сообщение'; @override String chat_sendMessageTo(String contactName) { return 'Отправить сообщение $contactName'; } @override String get chat_sendMessageToStart => 'Отправьте сообщение, чтобы начать'; @override String get chat_originalMessageNotFound => 'Исходное сообщение не найдено'; @override String chat_replyingTo(String name) { return 'Ответ для $name'; } @override String chat_replyTo(String name) { return 'Ответить $name'; } @override String get chat_location => 'Местоположение'; @override String get chat_typeMessage => 'Напишите сообщение...'; @override String chat_messageTooLong(int maxBytes) { return 'Сообщение слишком длинное (макс. $maxBytes байт).'; } @override String get chat_messageCopied => 'Сообщение скопировано'; @override String get chat_messageDeleted => 'Сообщение удалено'; @override String get chat_retryingMessage => 'Повтор отправки сообщения'; @override String get chat_sendingAgain => 'Sending again'; @override String get message_sendAgain => 'Send Again'; @override String chat_retryCount(int current, int max) { return 'Попытка $current/$max'; } @override String get chat_sendGif => 'Отправить GIF'; @override String get chat_reply => 'Ответить'; @override String get chat_replyWithRoute => 'Reply with route'; @override String get chat_addReaction => 'Добавить реакцию'; @override String get chat_me => 'Я'; @override String get emojiCategorySmileys => 'Смайлы'; @override String get emojiCategoryGestures => 'Жесты'; @override String get emojiCategoryHearts => 'Сердечки'; @override String get emojiCategoryObjects => 'Предметы'; @override String get gifPicker_title => 'Выберите GIF'; @override String get gifPicker_searchHint => 'Поиск GIF...'; @override String get gifPicker_poweredBy => 'Работает на GIPHY'; @override String get gifPicker_noGifsFound => 'GIF не найдены'; @override String get gifPicker_failedLoad => 'Не удалось загрузить GIF'; @override String get gifPicker_failedSearch => 'Не удалось выполнить поиск GIF'; @override String get gifPicker_noInternet => 'Нет подключения к интернету'; @override String get debugLog_appTitle => 'Журнал отладки приложения'; @override String get debugLog_bleTitle => 'Журнал отладки BLE'; @override String get debugLog_copyLog => 'Копировать журнал'; @override String get debugLog_clearLog => 'Очистить журнал'; @override String get debugLog_shareLog => 'Share logs'; @override String get debugLog_saveLog => 'Save logs'; @override String get debugLog_downloadLog => 'Download logs'; @override String get debugLog_shareSubject => 'Offband Meshcore logs'; @override String get debugLog_logSaved => 'Log saved'; @override String get debugLog_logUnavailable => 'No log available to export'; @override String get debugLog_copied => 'Журнал отладки скопирован'; @override String get debugLog_bleCopied => 'Журнал BLE скопирован'; @override String get debugLog_noEntries => 'Журнал отладки пока пуст'; @override String get debugLog_enableInSettings => 'Включите запись журнала отладки в настройках'; @override String get debugLog_frames => 'Фреймы'; @override String get debugLog_rawLogRx => 'Сырой журнал приёма'; @override String get debugLog_noBleActivity => 'Активность BLE пока отсутствует'; @override String debugFrame_length(int count) { return 'Длина фрейма: $count байт'; } @override String debugFrame_command(String value) { return 'Команда: 0x$value'; } @override String get debugFrame_textMessageHeader => 'Фрейм текстового сообщения:'; @override String debugFrame_destinationPubKey(String pubKey) { return '- Публичный ключ получателя: $pubKey'; } @override String debugFrame_timestamp(int timestamp) { return '- Временная метка: $timestamp'; } @override String debugFrame_flags(String value) { return '- Флаги: 0x$value'; } @override String debugFrame_textType(int type, String label) { return '- Тип текста: $type ($label)'; } @override String get debugFrame_textTypeCli => 'CLI'; @override String get debugFrame_textTypePlain => 'Обычный'; @override String debugFrame_text(String text) { return '- Текст: \"$text\"'; } @override String get debugFrame_hexDump => 'Шестнадцатеричный дамп:'; @override String get chat_pathManagement => 'Управление маршрутами'; @override String get chat_ShowAllPaths => 'Показать все пути'; @override String get chat_routingMode => 'Режим маршрутизации'; @override String get chat_autoUseSavedPath => 'Авто (использовать сохранённый маршрут)'; @override String get chat_forceFloodMode => 'Принудительный режим рассылки'; @override String get chat_recentAckPaths => 'Недавние подтверждённые маршруты (нажмите, чтобы использовать):'; @override String get chat_pathHistoryFull => 'История маршрутов заполнена. Удалите записи, чтобы добавить новые.'; @override String get chat_hopSingular => 'хоп'; @override String get chat_hopPlural => 'хопов'; @override String chat_hopsCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, other: 'хопов', many: 'хопов', few: 'хопа', one: 'хоп', ); return '$count $_temp0'; } @override String channel_heardTooltip(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, other: '$count repeats', one: '1 repeat', ); return 'Heard $_temp0'; } @override String channel_coreScopeTooltip(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, other: '$count CoreScope observers', one: '1 CoreScope observer', ); return 'Seen by $_temp0'; } @override String get channel_coreScopeRefresh => 'Refresh CoreScope observers'; @override String get channel_coreScopeRefreshFailed => 'CoreScope unreachable'; @override String channel_coreScopeCounts(int observers, int observations) { String _temp0 = intl.Intl.pluralLogic( observers, locale: localeName, other: '$observers observers', one: '1 observer', ); return '$_temp0 · $observations observations'; } @override String get chat_successes => 'успешно'; @override String get chat_score => 'Оценка'; @override String get chat_removePath => 'Удалить маршрут'; @override String get chat_noPathHistoryYet => 'История маршрутов пока пуста.\nОтправьте сообщение, чтобы обнаружить маршруты.'; @override String get chat_pathActions => 'Действия с маршрутом:'; @override String get chat_setCustomPath => 'Указать маршрут вручную'; @override String get chat_setCustomPathSubtitle => 'Вручную задать маршрут передачи'; @override String get chat_clearPath => 'Очистить маршрут'; @override String get chat_clearPathSubtitle => 'Принудительно обновить маршрут при следующей отправке'; @override String get chat_pathCleared => 'Маршрут очищен. Следующее сообщение обновит маршрут.'; @override String get chat_floodModeSubtitle => 'Используйте переключатель маршрутизации в панели приложения'; @override String get chat_floodModeEnabled => 'Режим рассылки включён. Отключите через значок маршрутизации в панели приложения.'; @override String get chat_fullPath => 'Полный маршрут'; @override String get chat_pathDetailsNotAvailable => 'Детали маршрута ещё недоступны. Попробуйте отправить сообщение для обновления.'; @override String chat_pathSetHops(int hopCount, String status) { String _temp0 = intl.Intl.pluralLogic( hopCount, locale: localeName, other: 'хопов', many: 'хопов', few: 'хопа', one: 'хоп', ); return 'Маршрут установлен: $hopCount $_temp0 — $status'; } @override String get chat_pathSavedLocally => 'Сохранено локально. Подключитесь для синхронизации.'; @override String get chat_pathDeviceConfirmed => 'Подтверждено устройством.'; @override String get chat_pathDeviceNotConfirmed => 'Ещё не подтверждено устройством.'; @override String get chat_type => 'Тип'; @override String get chat_path => 'Маршрут'; @override String get chat_publicKey => 'Публичный ключ'; @override String get chat_floodForced => 'Рассылка (принудительно)'; @override String get chat_directForced => 'Прямой (принудительно)'; @override String chat_hopsForced(int count) { return '$count хоп(ов) (принудительно)'; } @override String get chat_floodAuto => 'Рассылка (авто)'; @override String get chat_direct => 'Прямой'; @override String get chat_poiShared => 'Точка интереса отправлена'; @override String chat_unread(int count) { return 'Непрочитанных: $count'; } @override String get chat_markAsUnread => 'Пометить как непрочитанные'; @override String get chat_newMessages => 'Новые сообщения'; @override String get chat_openLink => 'Открыть ссылку?'; @override String get chat_openLinkConfirmation => 'Хотите открыть эту ссылку в вашем браузере?'; @override String get chat_open => 'Открыть'; @override String chat_couldNotOpenLink(String url) { return 'Не удалось открыть ссылку: $url'; } @override String get chat_invalidLink => 'Неправильный формат ссылки'; @override String get map_title => 'Карта нод'; @override String get map_lineOfSight => 'Линия видимости'; @override String get map_losScreenTitle => 'Линия видимости'; @override String get map_noNodesWithLocation => 'Нет нод с данными о местоположении'; @override String get map_nodesNeedGps => 'Ноды должны передавать свои GPS-координаты, чтобы отображаться на карте'; @override String map_nodesCount(int count) { return 'Нод: $count'; } @override String map_pinsCount(int count) { return 'Меток: $count'; } @override String get map_chat => 'Чат'; @override String get map_repeater => 'Репитер'; @override String get map_room => 'Комната'; @override String get map_sensor => 'Сенсор'; @override String get map_pinDm => 'Метка (ЛС)'; @override String get map_pinPrivate => 'Метка (Приватная)'; @override String get map_pinPublic => 'Метка (Публичная)'; @override String get map_lastSeen => 'Последнее появление'; @override String get map_disconnectConfirm => 'Вы уверены, что хотите отключиться от этого устройства?'; @override String get map_from => 'От'; @override String get map_source => 'Источник'; @override String get map_flags => 'Флаги'; @override String get map_type => 'Тип'; @override String get map_path => 'Путь'; @override String get map_location => 'Местоположение'; @override String get map_estLocation => 'Прибл. местоположение'; @override String get map_publicKey => 'Публичный ключ'; @override String get map_publicKeyPrefixHint => 'напр. ab12'; @override String get map_shareMarkerHere => 'Поделиться меткой здесь'; @override String get map_setAsMyLocation => 'Установить мое местоположение'; @override String get map_pinLabel => 'Метка'; @override String get map_label => 'Подпись'; @override String get map_pointOfInterest => 'Точка интереса'; @override String get map_sendToContact => 'Отправить контакту'; @override String get map_sendToChannel => 'Отправить в канал'; @override String get map_noChannelsAvailable => 'Нет доступных каналов'; @override String get map_publicLocationShare => 'Публичная передача местоположения'; @override String map_publicLocationShareConfirm(String channelLabel) { return 'Вы собираетесь поделиться местоположением в $channelLabel. Этот канал публичный, и любой, у кого есть PSK, сможет его увидеть.'; } @override String get map_connectToShareMarkers => 'Подключитесь к устройству, чтобы делиться метками'; @override String get map_filterNodes => 'Фильтр нод'; @override String get map_nodeTypes => 'Типы нод'; @override String get map_chatNodes => 'Чат-ноды'; @override String get map_repeaters => 'Репитеры'; @override String get map_otherNodes => 'Другие ноды'; @override String get map_showOverlaps => 'Перекрытия ключа повтора'; @override String get map_alwaysShowNames => 'Always show names'; @override String get map_keyPrefix => 'Префикс ключа'; @override String get map_filterByKeyPrefix => 'Фильтр по префиксу ключа'; @override String get map_publicKeyPrefix => 'Префикс публичного ключа'; @override String get map_markers => 'Метки'; @override String get map_showSharedMarkers => 'Показывать общие метки'; @override String get map_showGuessedLocations => 'Отобразить предполагаемые места расположения узлов'; @override String get map_showDiscoveryContacts => 'Показать контакты Discovery'; @override String get map_guessedLocation => 'Угаданное место'; @override String get map_lastSeenTime => 'Время последнего появления'; @override String get map_sharedPin => 'Общая метка'; @override String get map_sharedAt => 'Поделено'; @override String get map_joinRoom => 'Присоединиться к комнате'; @override String get map_manageRepeater => 'Управление репитером'; @override String get map_tapToAdd => 'Нажимайте на узлы, чтобы добавить их в путь.'; @override String get map_runTrace => 'Запустить трассировку пути'; @override String get map_runTraceWithReturnPath => 'Вернуться обратно по тому же пути'; @override String get map_removeLast => 'Удалить последний'; @override String get map_pathTraceCancelled => 'Отмена трассировки пути'; @override String get mapCache_title => 'Кэш офлайн-карты'; @override String get mapCache_selectAreaFirst => 'Сначала выберите область для кэширования'; @override String get mapCache_noTilesToDownload => 'Нет плиток для загрузки в этой области'; @override String get mapCache_downloadTilesTitle => 'Загрузить плитки'; @override String mapCache_downloadTilesPrompt(int count) { return 'Загрузить $count плиток для офлайн-использования?'; } @override String get mapCache_downloadAction => 'Загрузить'; @override String mapCache_cachedTiles(int count) { return 'Закэшировано $count плиток'; } @override String mapCache_cachedTilesWithFailed(int downloaded, int failed) { return 'Закэшировано $downloaded плиток ($failed не загружено)'; } @override String get mapCache_clearOfflineCacheTitle => 'Очистить офлайн-кэш'; @override String get mapCache_clearOfflineCachePrompt => 'Удалить все закэшированные плитки карты?'; @override String get mapCache_offlineCacheCleared => 'Офлайн-кэш очищен'; @override String get mapCache_noAreaSelected => 'Область не выбрана'; @override String get mapCache_cacheArea => 'Область кэширования'; @override String get mapCache_useCurrentView => 'Использовать текущий вид'; @override String get mapCache_zoomRange => 'Диапазон масштаба'; @override String mapCache_estimatedTiles(int count) { return 'Оценочное количество плиток: $count'; } @override String mapCache_downloadedTiles(int completed, int total) { return 'Загружено $completed из $total'; } @override String get mapCache_downloadTilesButton => 'Загрузить плитки'; @override String get mapCache_clearCacheButton => 'Очистить кэш'; @override String mapCache_failedDownloads(int count) { return 'Неудачных загрузок: $count'; } @override String mapCache_boundsLabel( String north, String south, String east, String west, ) { return 'С $north, Ю $south, В $east, З $west'; } @override String get time_justNow => 'Только что'; @override String time_minutesAgo(int minutes) { return '$minutes мин назад'; } @override String time_hoursAgo(int hours) { return '$hours ч назад'; } @override String time_daysAgo(int days) { return '$days дн. назад'; } @override String get time_hour => 'час'; @override String get time_hours => 'часов'; @override String get time_day => 'день'; @override String get time_days => 'дней'; @override String get time_week => 'неделя'; @override String get time_weeks => 'недель'; @override String get time_month => 'месяц'; @override String get time_months => 'месяцев'; @override String get time_minutes => 'минут'; @override String get time_allTime => 'Всё время'; @override String get dialog_disconnect => 'Отключиться'; @override String get dialog_disconnectConfirm => 'Вы уверены, что хотите отключиться от этого устройства?'; @override String get login_repeaterLogin => 'Вход в репитер'; @override String get login_roomLogin => 'Вход на сервер комнат'; @override String get login_password => 'Пароль'; @override String get login_enterPassword => 'Введите пароль'; @override String get login_savePassword => 'Сохранить пароль'; @override String get login_savePasswordSubtitle => 'Пароль будет надёжно сохранён на этом устройстве'; @override String get login_repeaterDescription => 'Введите пароль репитера для доступа к настройкам и статусу.'; @override String get login_roomDescription => 'Введите пароль комнаты для доступа к настройкам и статусу.'; @override String get login_routing => 'Маршрутизация'; @override String get login_routingMode => 'Режим маршрутизации'; @override String get login_autoUseSavedPath => 'Авто (использовать сохранённый маршрут)'; @override String get login_forceFloodMode => 'Принудительный режим рассылки'; @override String get login_managePaths => 'Управление маршрутами'; @override String get login_login => 'Войти'; @override String login_attempt(int current, int max) { return 'Попытка $current/$max'; } @override String login_failed(String error) { return 'Ошибка входа: $error'; } @override String get login_failedMessage => 'Не удалось войти. Либо пароль неверен, либо репитер недоступен.'; @override String get common_reload => 'Обновить'; @override String get common_clear => 'Очистить'; @override String path_currentPath(String path) { return 'Текущий маршрут: $path'; } @override String path_usingHopsPath(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, other: 'хопов', many: 'хопов', few: 'хопа', one: 'хоп', ); return 'Используется маршрут из $count $_temp0'; } @override String get path_enterCustomPath => 'Введите маршрут вручную'; @override String get path_currentPathLabel => 'Текущий маршрут'; @override String get path_suggestedRoute => 'Suggested route (shortest heard)'; @override String get path_searchRepeaters => 'Search repeaters'; @override String get path_hexPrefixInstructions => 'Введите 2-символьные шестнадцатеричные префиксы для каждого хопа, разделённые запятыми.'; @override String get path_hexPrefixExample => 'Пример: A1,F2,3C (каждый узел использует первый байт своего публичного ключа)'; @override String get path_labelHexPrefixes => 'Маршрут (шестнадцатеричные префиксы)'; @override String get path_helperMaxHops => 'Максимум 64 хопа. Каждый префикс — 2 шестнадцатеричных символа (1 байт)'; @override String get path_selectFromContacts => 'Или выберите из контактов:'; @override String get path_noRepeatersFound => 'Репитеры или серверы комнат не найдены.'; @override String get path_customPathsRequire => 'Пользовательские маршруты требуют промежуточных узлов, способных ретранслировать сообщения.'; @override String path_invalidHexPrefixes(String prefixes) { return 'Недопустимые шестнадцатеричные префиксы: $prefixes'; } @override String get path_tooLong => 'Маршрут слишком длинный. Максимум 64 хопа.'; @override String get path_setPath => 'Установить маршрут'; @override String get repeater_management => 'Управление репитером'; @override String get room_management => 'Управление сервером комнат'; @override String get repeater_guest => 'Информация о ретрансляторе'; @override String get room_guest => 'Информация о сервере'; @override String get repeater_managementTools => 'Инструменты управления'; @override String get repeater_guestTools => 'Инструменты для гостей'; @override String get repeater_status => 'Статус'; @override String get repeater_statusSubtitle => 'Просмотр статуса, статистики и соседей репитера'; @override String get repeater_telemetry => 'Телеметрия'; @override String get repeater_telemetrySubtitle => 'Просмотр телеметрии датчиков и системной статистики'; @override String get repeater_cli => 'CLI'; @override String get repeater_cliSubtitle => 'Отправка команд репитеру'; @override String get repeater_neighbors => 'Соседи'; @override String get repeater_neighborsSubtitle => 'Просмотр соседей на нулевом хопе.'; @override String get repeater_settings => 'Настройки'; @override String get repeater_settingsSubtitle => 'Настройка параметров репитера'; @override String get repeater_clockSyncAfterLogin => 'Синхронизация часов после входа в систему'; @override String get repeater_clockSyncAfterLoginSubtitle => 'Автоматически отправлять сообщение \"синхронизация времени\" после успешной авторизации.'; @override String get repeater_statusTitle => 'Статус репитера'; @override String get repeater_routingMode => 'Режим маршрутизации'; @override String get repeater_autoUseSavedPath => 'Авто (использовать сохранённый маршрут)'; @override String get repeater_forceFloodMode => 'Принудительный режим рассылки'; @override String get repeater_pathManagement => 'Управление маршрутами'; @override String get repeater_refresh => 'Обновить'; @override String get repeater_statusRequestTimeout => 'Время ожидания статуса истекло.'; @override String repeater_errorLoadingStatus(String error) { return 'Ошибка загрузки статуса: $error'; } @override String get repeater_systemInformation => 'Системная информация'; @override String get repeater_battery => 'Батарея'; @override String get repeater_clockAtLogin => 'Время (при входе)'; @override String get repeater_uptime => 'Время работы'; @override String get repeater_queueLength => 'Длина очереди'; @override String get repeater_debugFlags => 'Флаги отладки'; @override String get repeater_radioStatistics => 'Радиостатистика'; @override String get repeater_lastRssi => 'Последний RSSI'; @override String get repeater_lastSnr => 'Последний SNR'; @override String get repeater_noiseFloor => 'Уровень шума'; @override String get repeater_txAirtime => 'Время эфира (передача)'; @override String get repeater_rxAirtime => 'Время эфира (приём)'; @override String get repeater_chanUtil => 'Использование канала'; @override String get repeater_packetStatistics => 'Статистика пакетов'; @override String get repeater_sent => 'Отправлено'; @override String get repeater_received => 'Получено'; @override String get repeater_duplicates => 'Дубликаты'; @override String repeater_daysHoursMinsSecs( int days, int hours, int minutes, int seconds, ) { return '$days дн. $hoursч $minutesм $secondsс'; } @override String repeater_packetTxTotal(int total, String flood, String direct) { return 'Всего: $total, Рассылка: $flood, Прямые: $direct'; } @override String repeater_packetRxTotal(int total, String flood, String direct) { return 'Всего: $total, Рассылка: $flood, Прямые: $direct'; } @override String repeater_duplicatesFloodDirect(String flood, String direct) { return 'Рассылка: $flood, Прямые: $direct'; } @override String repeater_duplicatesTotal(int total) { return 'Всего: $total'; } @override String get repeater_settingsTitle => 'Настройки репитера'; @override String get repeater_basicSettings => 'Основные настройки'; @override String get repeater_repeaterName => 'Имя репитера'; @override String get repeater_repeaterNameHelper => 'Отображаемое имя этого репитера'; @override String get repeater_adminPassword => 'Пароль администратора'; @override String get repeater_adminPasswordHelper => 'Пароль с полным доступом'; @override String get repeater_guestPassword => 'Гостевой пароль'; @override String get repeater_guestPasswordHelper => 'Пароль для доступа только для чтения'; @override String get repeater_radioSettings => 'Настройки радио'; @override String get repeater_frequencyMhz => 'Частота (МГц)'; @override String get repeater_frequencyHelper => '300–2500 МГц'; @override String get repeater_txPower => 'Мощность передачи'; @override String get repeater_txPowerHelper => '1–30 дБм'; @override String get repeater_bandwidth => 'Полоса пропускания'; @override String get repeater_spreadingFactor => 'Коэффициент расширения'; @override String get repeater_codingRate => 'Коэффициент кодирования'; @override String get repeater_locationSettings => 'Настройки местоположения'; @override String get repeater_latitude => 'Широта'; @override String get repeater_latitudeHelper => 'В десятичных градусах (напр., 37.7749)'; @override String get repeater_longitude => 'Долгота'; @override String get repeater_longitudeHelper => 'В десятичных градусах (напр., -122.4194)'; @override String get repeater_features => 'Функции'; @override String get repeater_packetForwarding => 'Пересылка пакетов'; @override String get repeater_packetForwardingSubtitle => 'Разрешить репитеру пересылать пакеты'; @override String get repeater_guestAccess => 'Гостевой доступ'; @override String get repeater_guestAccessSubtitle => 'Разрешить гостевой доступ только для чтения'; @override String get repeater_privacyMode => 'Режим конфиденциальности'; @override String get repeater_privacyModeSubtitle => 'Скрывать имя/местоположение в оповещениях'; @override String get repeater_advertisementSettings => 'Настройки анонсирования'; @override String get repeater_localAdvertInterval => 'Интервал локальных анонсирований'; @override String repeater_localAdvertIntervalMinutes(int minutes) { return '$minutes минут'; } @override String get repeater_floodAdvertInterval => 'Интервал анонсирований рассылкой (flood)'; @override String repeater_floodAdvertIntervalHours(int hours) { return '$hours часов'; } @override String get repeater_encryptedAdvertInterval => 'Интервал зашифрованных анонсирований'; @override String get repeater_dangerZone => 'Опасная зона'; @override String get repeater_rebootRepeater => 'Перезагрузить репитер'; @override String get repeater_rebootRepeaterSubtitle => 'Перезапустить устройство репитера'; @override String get repeater_rebootRepeaterConfirm => 'Вы уверены, что хотите перезагрузить этот репитер?'; @override String get repeater_regenerateIdentityKey => 'Пересоздать ключ идентификации'; @override String get repeater_regenerateIdentityKeySubtitle => 'Сгенерировать новую пару публичного/приватного ключей'; @override String get repeater_regenerateIdentityKeyConfirm => 'Это создаст новую идентичность для репитера. Продолжить?'; @override String get repeater_eraseFileSystem => 'Стереть файловую систему'; @override String get repeater_eraseFileSystemSubtitle => 'Отформатировать файловую систему репитера'; @override String get repeater_eraseFileSystemConfirm => 'ВНИМАНИЕ: это удалит все данные на репитере. Действие нельзя отменить!'; @override String get repeater_eraseSerialOnly => 'Очистка доступна только через последовательную консоль.'; @override String repeater_commandSent(String command) { return 'Команда отправлена: $command'; } @override String repeater_errorSendingCommand(String error) { return 'Ошибка отправки команды: $error'; } @override String get repeater_confirm => 'Подтвердить'; @override String get repeater_settingsSaved => 'Настройки успешно сохранены'; @override String get repeater_rxGain => 'Увеличенная эффективность RX'; @override String get repeater_rxGainHelper => 'Более высокая чувствительность, больший ток потребления (только для SX1262/SX1268)'; @override String get repeater_refreshRxGain => 'Обновите усиление RX'; @override String get repeater_multiAcks => 'Несколько подтверждений'; @override String get repeater_multiAcksSubtitle => 'Обеспечьте доставку сообщений по нескольким каналам для повышения эффективности.'; @override String get repeater_refreshMultiAcks => 'Обновление нескольких подтверждений'; @override String get repeater_networkHealth => 'Состояние сети'; @override String get repeater_loopDetect => 'Обнаружение циклов'; @override String get repeater_loopDetectHelper => 'Создайте пакеты данных, которые выглядят как циклы маршрутизации.'; @override String get repeater_loopDetectOff => 'Отключено'; @override String get repeater_loopDetectMinimal => 'Минимальный'; @override String get repeater_loopDetectModerate => 'Умеренный'; @override String get repeater_loopDetectStrict => 'Строгий'; @override String get repeater_dutyCycle => 'Цикл работы'; @override String get repeater_dutyCycleHelper => 'Максимальный процент времени, выделенного на трансляцию.'; @override String repeater_dutyCyclePercent(int percent) { return '$percent%'; } @override String get repeater_ownerInfo => 'Информация о операторе'; @override String get repeater_ownerInfoHelper => 'Общая метаинформация для этого ретранслятора'; @override String get repeater_refreshOwnerInfo => 'Обновить информацию о операторе'; @override String get repeater_floodMax => 'Максимальное количество прыжков при наводнении'; @override String get repeater_floodMaxHelper => 'Максимальное количество пакетов, которые могут быть отправлены в одном потоке (0-64)'; @override String get repeater_advancedSettings => 'Продвинутый'; @override String get repeater_advancedSettingsSubtitle => 'Регуляторы для опытных операторов'; @override String get repeater_pathHashMode => 'Режим хеширования пути'; @override String get repeater_pathHashModeHelper => 'Байты, используемые для кодирования идентификатора этого ретранслятора в тегах для обнаружения потоков/циклов. 0 = 1 байт (256 идентификаторов, до 64 переходов), 1 = 2 байта (65 000 идентификаторов, до 32 переходов), 2 = 3 байта (1 600 000 идентификаторов, до 21 перехода). Версии прошивки v1.13 и более ранние версии не поддерживают многобайтовые пути — они поднимаются только после того, как ваша сеть будет обновлена до версии v1.14 и выше.'; @override String get repeater_txDelay => 'Задержка в работе системы Flood TX'; @override String get repeater_txDelayHelper => 'Передача с увеличенным интервалом для трафика во время наводнения, в качестве коэффициента, умножающего время передачи пакета (от 0 до 2, по умолчанию 0,5). Более высокое значение означает меньшее количество столкновений, но более медленную передачу.'; @override String get repeater_directTxDelay => 'Прямая задержка сигнала TX'; @override String get repeater_directTxDelayHelper => 'Передача промежуточных данных для прямого (немассового) трафика, в качестве коэффициента, равного времени передачи пакета (от 0 до 2, по умолчанию 0,3).'; @override String get repeater_intThresh => 'Пороговое значение помех'; @override String get repeater_intThreshHelper => 'Порог устанавливается для калибровки уровня шума радио, чтобы оно отсеивало помехи, превышающие этот уровень. Значение \"0\" означает отключение – используйте только в случае, если вы наблюдаете ошибки при приеме сигнала в шумном диапазоне.'; @override String get repeater_agcResetInterval => 'Интервал сброса AGC'; @override String get repeater_agcResetIntervalHelper => 'Как часто следует сбрасывать автоматическую регулировку усиления радио, чтобы вернуться к нормальному состоянию после заклинивания? Интервал сброса составляет несколько секунд, кратный 4. Отключение периодического сброса осуществляется с помощью параметра 0.'; @override String get repeater_actionsTitle => 'Действия'; @override String get repeater_sendAdvert => 'Отправить объявление о наводнении'; @override String get repeater_sendAdvertSubtitle => 'Разместите рекламу о наводнении в эфире по всей сети.'; @override String get repeater_sendAdvertZeroHop => 'Опубликуйте рекламу, не требующую промежуточного распространения.'; @override String get repeater_sendAdvertZeroHopSubtitle => 'Разместите рекламу, распространяемую одним способом (без использования ретрансляторов).'; @override String get repeater_clockSync => 'Синхронизировать время сейчас'; @override String get repeater_clockSyncSubtitle => 'Установите время на вашем телефоне, чтобы оно совпадало со временем ретранслятора.'; @override String repeater_actionSucceeded(String action) { return '$action succeeded'; } @override String repeater_actionFailed(String action, String error) { return '$action failed: $error'; } @override String get repeater_settingsSavedRebootNeeded => 'Настройки сохранены — перезагрузите ретранслятор, чтобы применить их.'; @override String repeater_settingsPartialFailure(String failures) { return 'Некоторые настройки не удалось применить: $failures'; } @override String repeater_errorSavingSettings(String error) { return 'Ошибка сохранения настроек: $error'; } @override String get repeater_refreshBasicSettings => 'Обновить основные настройки'; @override String get repeater_refreshRadioSettings => 'Обновить настройки радио'; @override String get repeater_refreshTxPower => 'Обновить мощность передачи'; @override String get repeater_refreshPacketForwarding => 'Обновить пересылку пакетов'; @override String get repeater_refreshGuestAccess => 'Обновить гостевой доступ'; @override String get repeater_refreshPrivacyMode => 'Обновить режим конфиденциальности'; @override String repeater_refreshed(String label) { return '$label обновлён'; } @override String repeater_errorRefreshing(String label) { return 'Ошибка обновления $label'; } @override String get repeater_cliTitle => 'CLI репитера'; @override String get repeater_debugNextCommand => 'Отладка следующей команды'; @override String get repeater_commandHelp => 'Справка по командам'; @override String get repeater_clearHistory => 'Очистить историю'; @override String get repeater_noCommandsSent => 'Команды ещё не отправлялись'; @override String get repeater_typeCommandOrUseQuick => 'Введите команду ниже или используйте быстрые команды'; @override String get repeater_enterCommandHint => 'Введите команду...'; @override String get repeater_previousCommand => 'Предыдущая команда'; @override String get repeater_nextCommand => 'Следующая команда'; @override String get repeater_enterCommandFirst => 'Сначала введите команду'; @override String get repeater_cliCommandFrameTitle => 'Фрейм CLI-команды'; @override String repeater_cliCommandError(String error) { return 'Ошибка: $error'; } @override String get repeater_cliQuickGetName => 'Получить имя'; @override String get repeater_cliQuickGetRadio => 'Получить радио'; @override String get repeater_cliQuickGetTx => 'Получить TX'; @override String get repeater_cliQuickNeighbors => 'Соседи'; @override String get repeater_cliQuickVersion => 'Версия'; @override String get repeater_cliQuickAdvertise => 'Анонсировать'; @override String get repeater_cliQuickClock => 'Время'; @override String get repeater_cliQuickClockSync => 'Синхронизация часов'; @override String get repeater_cliQuickDiscovery => 'Обнаружить Соседей'; @override String get repeater_cliHelpAdvert => 'Отправляет пакет анонсирования'; @override String get repeater_cliHelpReboot => 'Перезагружает устройство. (обычно вы получите «Тайм-аут» — это нормально)'; @override String get repeater_cliHelpClock => 'Показывает текущее время по часам устройства.'; @override String get repeater_cliHelpPassword => 'Устанавливает новый пароль администратора для устройства.'; @override String get repeater_cliHelpVersion => 'Показывает версию устройства и дату сборки прошивки.'; @override String get repeater_cliHelpClearStats => 'Сбрасывает различные счётчики статистики в ноль.'; @override String get repeater_cliHelpSetAf => 'Устанавливает коэффициент времени в эфире.'; @override String get repeater_cliHelpSetTx => 'Устанавливает мощность передачи LoRa в дБм. (требуется перезагрузка)'; @override String get repeater_cliHelpSetRepeat => 'Включает или отключает роль репитера для этой ноды.'; @override String get repeater_cliHelpSetAllowReadOnly => '(Сервер комнат) Если «on», то вход без пароля разрешён, но публиковать в комнату нельзя (только чтение)'; @override String get repeater_cliHelpSetFloodMax => 'Устанавливает максимальное число хопов для входящих пакетов в режиме рассылки (если >= макс., пакет не пересылается)'; @override String get repeater_cliHelpSetIntThresh => 'Устанавливает порог интерференции (в дБ). По умолчанию 14. Установите 0, чтобы отключить обнаружение помех.'; @override String get repeater_cliHelpSetAgcResetInterval => 'Устанавливает интервал сброса автоматической регулировки усиления. Установите 0, чтобы отключить.'; @override String get repeater_cliHelpSetMultiAcks => 'Включает или отключает функцию «двойных ACK».'; @override String get repeater_cliHelpSetAdvertInterval => 'Устанавливает интервал (в минутах) отправки локального (нулевой хоп) анонсирования. Установите 0, чтобы отключить.'; @override String get repeater_cliHelpSetFloodAdvertInterval => 'Устанавливает интервал (в часах) отправки анонсирований рассылкой. Установите 0, чтобы отключить.'; @override String get repeater_cliHelpSetGuestPassword => 'Устанавливает/обновляет гостевой пароль. (для репитеров гости могут отправлять запрос «Get Stats»)'; @override String get repeater_cliHelpSetName => 'Устанавливает имя в оповещениях.'; @override String get repeater_cliHelpSetLat => 'Устанавливает широту для карты в оповещениях. (десятичные градусы)'; @override String get repeater_cliHelpSetLon => 'Устанавливает долготу для карты в оповещениях. (десятичные градусы)'; @override String get repeater_cliHelpSetRadio => 'Устанавливает полностью новые параметры радио и сохраняет их в настройки. Требуется команда «reboot» для применения.'; @override String get repeater_cliHelpSetRxDelay => 'Устанавливает (экспериментально) базовую задержку (>1 для эффекта) для принятых пакетов на основе качества сигнала. Установите 0, чтобы отключить.'; @override String get repeater_cliHelpSetTxDelay => 'Устанавливает множитель времени в эфире для пакета в режиме рассылки и применяет случайную задержку перед пересылкой (чтобы уменьшить коллизии).'; @override String get repeater_cliHelpSetDirectTxDelay => 'То же, что txdelay, но для случайной задержки пересылки пакетов в прямом режиме.'; @override String get repeater_cliHelpSetBridgeEnabled => 'Включить/выключить мост.'; @override String get repeater_cliHelpSetBridgeDelay => 'Установить задержку перед ретрансляцией пакетов.'; @override String get repeater_cliHelpSetBridgeSource => 'Выбрать, будет ли мост ретранслировать полученные или отправленные пакеты.'; @override String get repeater_cliHelpSetBridgeBaud => 'Установить скорость последовательного соединения для мостов RS232.'; @override String get repeater_cliHelpSetBridgeSecret => 'Установить секрет моста для мостов ESP-NOW.'; @override String get repeater_cliHelpSetAdcMultiplier => 'Устанавливает пользовательский коэффициент коррекции напряжения батареи (поддерживается только на некоторых платах).'; @override String get repeater_cliHelpTempRadio => 'Устанавливает временные параметры радио на заданное число минут, затем возвращает исходные. (НЕ сохраняется в настройки).'; @override String get repeater_cliHelpSetPerm => 'Изменяет ACL. Удаляет запись (по префиксу публичного ключа), если «permissions» равен нулю. Добавляет новую запись, если указан полный ключ и он отсутствует в ACL. Обновляет запись по совпадению префикса. Биты прав зависят от роли прошивки, но младшие 2 бита: 0 (Гость), 1 (Только чтение), 2 (Чтение/запись), 3 (Админ)'; @override String get repeater_cliHelpGetBridgeType => 'Получает тип моста: none, rs232, espnow'; @override String get repeater_cliHelpLogStart => 'Начинает запись пакетов в файловую систему.'; @override String get repeater_cliHelpLogStop => 'Останавливает запись пакетов в файловую систему.'; @override String get repeater_cliHelpLogErase => 'Удаляет журналы пакетов из файловой системы.'; @override String get repeater_cliHelpNeighbors => 'Показывает список других репитеров, услышанных через оповещения нулевого хопа. Каждая строка: префикс-id-в-hex:временная-метка:snr×4'; @override String get repeater_cliHelpNeighborRemove => 'Удаляет первую подходящую запись (по префиксу публичного ключа в hex) из списка соседей.'; @override String get repeater_cliHelpRegion => '(только через последовательный порт) Показывает все определённые регионы и текущие права на рассылку.'; @override String get repeater_cliHelpRegionLoad => 'ПРИМЕЧАНИЕ: это специальная многострочная команда. Каждая следующая строка — имя региона (с отступом пробелами для указания иерархии, минимум один пробел). Завершается пустой строкой.'; @override String get repeater_cliHelpRegionGet => 'Ищет регион по префиксу имени (или «*» для глобальной области). Отвечает: «-> имя-региона (родитель) \'F\'»'; @override String get repeater_cliHelpRegionPut => 'Добавляет или обновляет определение региона с заданным именем.'; @override String get repeater_cliHelpRegionRemove => 'Удаляет определение региона с заданным именем. (должно точно совпадать и не иметь дочерних регионов)'; @override String get repeater_cliHelpRegionAllowf => 'Разрешает рассылку («F»lood) для заданного региона. («*» для глобальной/устаревшей области)'; @override String get repeater_cliHelpRegionDenyf => 'Запрещает рассылку («F»lood) для заданного региона. (НЕ рекомендуется для глобальной области!)'; @override String get repeater_cliHelpRegionHome => 'Показывает текущий «домашний» регион. (Пока не используется, зарезервировано на будущее)'; @override String get repeater_cliHelpRegionHomeSet => 'Устанавливает «домашний» регион.'; @override String get repeater_cliHelpRegionSave => 'Сохраняет список/карту регионов в память.'; @override String get repeater_cliHelpGps => 'Показывает статус GPS. Если GPS выключен — отвечает только «off». Если включён — показывает статус, фиксацию, количество спутников.'; @override String get repeater_cliHelpGpsOnOff => 'Переключает состояние питания GPS.'; @override String get repeater_cliHelpGpsSync => 'Синхронизирует время ноды с часами GPS.'; @override String get repeater_cliHelpGpsSetLoc => 'Устанавливает позицию ноды по координатам GPS и сохраняет в настройки.'; @override String get repeater_cliHelpGpsAdvert => 'Показывает конфигурацию передачи местоположения в анонсированиях:\n- none: не включать местоположение\n- share: передавать GPS-координаты (из SensorManager)\n- prefs: передавать координаты из настроек'; @override String get repeater_cliHelpGpsAdvertSet => 'Устанавливает конфигурацию передачи местоположения.'; @override String get repeater_commandsListTitle => 'Список команд'; @override String get repeater_commandsListNote => 'ПРИМЕЧАНИЕ: для большинства команд «set ...» существуют соответствующие команды «get ...».'; @override String get repeater_general => 'Общие'; @override String get repeater_settingsCategory => 'Настройки'; @override String get repeater_bridge => 'Мост'; @override String get repeater_logging => 'Журналирование'; @override String get repeater_neighborsRepeaterOnly => 'Соседи (только для репитеров)'; @override String get repeater_regionManagementRepeaterOnly => 'Управление регионами (только для репитеров)'; @override String get repeater_regionNote => 'Команды регионов введены для управления определениями регионов и правами доступа.'; @override String get repeater_gpsManagement => 'Управление GPS'; @override String get repeater_gpsNote => 'Команда gps введена для управления параметрами, связанными с местоположением.'; @override String get repeater_getCategory => 'Получить значения'; @override String get repeater_powerMgmt => 'Управление энергопотреблением'; @override String get repeater_sensors => 'Датчики'; @override String get repeater_cliHelpPowerOff => 'Отключает устройство. (ожидается отсутствие ответа).'; @override String get repeater_cliHelpClkReboot => 'Сбрасывает часы до известной эпохи и перезапускает устройство.'; @override String get repeater_cliHelpAdvertZeroHop => 'Отправляет рекламу, распространяемую только среди ближайших соседей (без промежуточных узлов).'; @override String get repeater_cliHelpStartOta => 'Запускает обновление прошивки по воздуху на поддерживаемых устройствах.'; @override String get repeater_cliHelpTime => 'Устанавливает время устройства в соответствии с заданными секундами от начала эпохи Unix. Время не может сброситься назад.'; @override String get repeater_cliHelpBoard => 'Отображает информацию о производителе платы / идентификатор аппаратного обеспечения.'; @override String get repeater_cliHelpDiscoverNeighbors => 'Отправляет запрос на обнаружение соседних узлов. (Только для ретранслятора)'; @override String get repeater_cliHelpPowersaving => 'Показывает, включен ли режим экономии энергии.'; @override String get repeater_cliHelpPowersavingOnOff => 'Включает или выключает режим экономии энергии (если он поддерживается).'; @override String get repeater_cliHelpErase => '(Только для серийного использования) Форматирует файловую систему устройства. Удаляет все настройки и контакты.'; @override String get repeater_cliHelpSetDutyCycle => 'Устанавливает максимальный допустимый цикл передачи данных в процентах (от 1 до 100). Внутренне корректирует коэффициент времени передачи.'; @override String get repeater_cliHelpSetPrvKey => '(Только для серийного использования) Заменяет приватный ключ, идентифицирующий устройство. Требуется перезагрузка для применения. Генерирует новый публичный ключ.'; @override String get repeater_cliHelpSetRadioRxGain => '(Только для SX126x) Переключает усиление RX для повышения чувствительности при больших токах потребления.'; @override String get repeater_cliHelpSetOwnerInfo => 'Указывает строку с контактной информацией владельца, которая должна быть включена в объявления. Используйте \'|\' для переносов строк.'; @override String get repeater_cliHelpSetPathHashMode => 'Устанавливает режим хеширования пути. 0 = устаревший, 1 = стандартный, 2 = строгий. Влияет на то, как определяются маршруты.'; @override String get repeater_cliHelpSetLoopDetect => 'Устанавливает чувствительность обнаружения циклов маршрутизации: \"выключено\", \"минимальная\", \"умеренная\" или \"строгая\".'; @override String get repeater_cliHelpSetFreq => '(Только для настройки) Быстро устанавливает только частоту. Требуется перезагрузка. Рекомендуется использовать функцию \"настройка радио\" для полного набора параметров.'; @override String get repeater_cliHelpSetBridgeChannel => '(Только для моста ESPNow) Устанавливает канал Wi-Fi (от 1 до 14), используемый мостом.'; @override String get repeater_cliHelpGetName => 'Отображает имя настроенного узла.'; @override String get repeater_cliHelpGetRole => 'Отображает роль прошивки (ретранслятор, сервер для комнаты и т.д.).'; @override String get repeater_cliHelpGetPublicKey => 'Отображает открытый ключ устройства.'; @override String get repeater_cliHelpGetPrvKey => '(Только для серийного использования) Отображает приватный ключ устройства. Рассматривайте его как секретную информацию.'; @override String get repeater_cliHelpGetRepeat => 'Отображает, включена ли функция перенаправления пакетов (функция ретранслятора) или нет.'; @override String get repeater_cliHelpGetTx => 'Отображает текущую мощность передатчика в дБм.'; @override String get repeater_cliHelpGetFreq => 'Отображает настроенную частоту радиосигнала в мегагерцах.'; @override String get repeater_cliHelpGetRadio => 'Отображает все параметры радиосигнала: частоту, полосу пропускания, коэффициент модуляции, скорость кодирования.'; @override String get repeater_cliHelpGetRadioRxGain => '(Только для SX126x) Отображает состояние усиления сигнала на входе RX.'; @override String get repeater_cliHelpGetAf => 'Отображает текущий коэффициент времени эфира.'; @override String get repeater_cliHelpGetDutyCycle => 'Отображает текущий допустимый цикл работы в процентах.'; @override String get repeater_cliHelpGetIntThresh => 'Отображает порог помех в децибелах.'; @override String get repeater_cliHelpGetAgcResetInterval => 'Отображает интервал сброса автоматической регулировки усиления в секундах.'; @override String get repeater_cliHelpGetMultiAcks => 'Показывает, включен ли режим двойной подтверждения (1) или выключен (0).'; @override String get repeater_cliHelpGetAllowReadOnly => 'Отображает, разрешен ли доступ для чтения только для гостей.'; @override String get repeater_cliHelpGetAdvertInterval => 'Отображает продолжительность рекламного блока в минутах.'; @override String get repeater_cliHelpGetFloodAdvertInterval => 'Отображает интервал времени показа рекламного ролика в часах.'; @override String get repeater_cliHelpGetGuestPassword => 'Отображает установленный пароль для гостя.'; @override String get repeater_cliHelpGetLat => 'Отображает заданную широту.'; @override String get repeater_cliHelpGetLon => 'Отображает заданную долготу.'; @override String get repeater_cliHelpGetRxDelay => 'Отображает базовое значение задержки.'; @override String get repeater_cliHelpGetTxDelay => 'Отображает коэффициент задержки при работе в режиме затопления.'; @override String get repeater_cliHelpGetDirectTxDelay => 'Отображает коэффициент задержки в режиме прямого подключения.'; @override String get repeater_cliHelpGetFloodMax => 'Отображает максимальное количество переходов при затоплении.'; @override String get repeater_cliHelpGetOwnerInfo => 'Отображает строку с контактной информацией владельца.'; @override String get repeater_cliHelpGetPathHashMode => 'Отображает режим работы с хэшем пути (0/1/2).'; @override String get repeater_cliHelpGetLoopDetect => 'Отображает чувствительность к обнаружению циклов.'; @override String get repeater_cliHelpGetAcl => '(Только для серий) Перечисляет записи управления доступом на ретрансляторе.'; @override String get repeater_cliHelpGetBridgeEnabled => 'Показывает, включена ли функция моста.'; @override String get repeater_cliHelpGetBridgeDelay => 'Отображает задержку в миллисекундах.'; @override String get repeater_cliHelpGetBridgeSource => 'Отображает, какие пакеты RX или TX передаются через мост.'; @override String get repeater_cliHelpGetBridgeBaud => '(Только для интерфейса RS232) Отображает скорость передачи данных на интерфейсе RS232.'; @override String get repeater_cliHelpGetBridgeChannel => '(Только для моста ESPNow) Отображает канал WiFi, используемый мостом.'; @override String get repeater_cliHelpGetBridgeSecret => '(Только для моста ESPNow) Отображает общий секрет, используемый мостом.'; @override String get repeater_cliHelpGetBootloaderVer => '(Только для NRF52) Отображает версию загрузчика.'; @override String get repeater_cliHelpGetAdcMultiplier => 'Отображает коэффициент умножения аналого-цифрового преобразователя (масштабирование напряжения от батареи).'; @override String get repeater_cliHelpGetPwrMgtSupport => 'Сообщает, есть ли у совета поддержки функций управления питанием.'; @override String get repeater_cliHelpGetPwrMgtSource => 'Отображает текущий источник питания: внешний или аккумулятор.'; @override String get repeater_cliHelpGetPwrMgtBootReason => 'Отображает последние причины сброса и выключения.'; @override String get repeater_cliHelpGetPwrMgtBootMv => 'Отображает напряжение батареи при запуске системы в милливольтах (мВ).'; @override String get repeater_cliHelpSensorGet => 'Считывает пользовательское значение для датчика по указанному ключу.'; @override String get repeater_cliHelpSensorSet => 'Создает пользовательские настройки для датчика.'; @override String get repeater_cliHelpSensorList => 'Перечисляет все пользовательские настройки датчиков, разбитые на страницы с возможностью указания начального индекса.'; @override String get repeater_cliHelpRegionDefault => 'Отображает текущий область действия по умолчанию.'; @override String get repeater_cliHelpRegionDefaultSet => 'Устанавливает значение региона по умолчанию. Используйте \"\", чтобы сбросить значение.'; @override String get repeater_cliHelpRegionListAllowed => 'Перечисляет регионы, где разрешено движение транспорта во время наводнений.'; @override String get repeater_cliHelpRegionListDenied => 'Перечисляет регионы, где запрещено движение транспорта во время наводнений.'; @override String get repeater_cliHelpStatsPackets => '(Только для серийной версии) Отображает статистику на уровне пакетов.'; @override String get repeater_cliHelpStatsRadio => '(Только для серий) Отображает статистику радио.'; @override String get repeater_cliHelpStatsCore => '(Только для серийного оборудования) Отображает основные статистические данные прошивки.'; @override String get telemetry_receivedData => 'Полученные телеметрические данные'; @override String get telemetry_requestTimeout => 'Время ожидания телеметрии истекло.'; @override String telemetry_errorLoading(String error) { return 'Ошибка загрузки телеметрии: $error'; } @override String get telemetry_noData => 'Данные телеметрии недоступны.'; @override String telemetry_channelTitle(int channel) { return 'Канал $channel'; } @override String get telemetry_batteryLabel => 'Батарея'; @override String get telemetry_voltageLabel => 'Напряжение'; @override String get telemetry_mcuTemperatureLabel => 'Температура МК'; @override String get telemetry_temperatureLabel => 'Температура'; @override String get telemetry_currentLabel => 'Ток'; @override String telemetry_batteryValue(int percent, String volts) { return '$percent% / $voltsВ'; } @override String telemetry_voltageValue(String volts) { return '$voltsВ'; } @override String telemetry_currentValue(String amps) { return '$ampsА'; } @override String telemetry_temperatureValue(String celsius, String fahrenheit) { return '$celsius°C / $fahrenheit°F'; } @override String get telemetry_digitalInputLabel => 'Цифровой вход'; @override String get telemetry_digitalOutputLabel => 'Цифровой выход'; @override String get telemetry_analogInputLabel => 'Аналоговый вход'; @override String get telemetry_analogOutputLabel => 'Аналоговый выход'; @override String get telemetry_genericLabel => 'Общий датчик'; @override String get telemetry_luminosityLabel => 'Освещённость'; @override String get telemetry_presenceLabel => 'Присутствие'; @override String get telemetry_humidityLabel => 'Влажность'; @override String get telemetry_accelerometerLabel => 'Акселерометр'; @override String get telemetry_pressureLabel => 'Давление'; @override String get telemetry_altitudeLabel => 'Высота'; @override String get telemetry_frequencyLabel => 'Частота'; @override String get telemetry_percentageLabel => 'Процент'; @override String get telemetry_concentrationLabel => 'Концентрация'; @override String get telemetry_powerLabel => 'Мощность'; @override String get telemetry_distanceLabel => 'Расстояние'; @override String get telemetry_energyLabel => 'Энергия'; @override String get telemetry_directionLabel => 'Направление'; @override String get telemetry_timeLabel => 'Время'; @override String get telemetry_gyrometerLabel => 'Гирометр'; @override String get telemetry_colourLabel => 'Цвет'; @override String get telemetry_gpsLabel => 'GPS'; @override String get telemetry_switchLabel => 'Переключатель'; @override String get telemetry_polylineLabel => 'Полилиния'; @override String telemetry_altitudeValue(String meters) { return '$meters м'; } @override String telemetry_frequencyValue(String hertz) { return '$hertz Гц'; } @override String telemetry_pressureValue(String hpa) { return '$hpa гПа'; } @override String telemetry_luminosityValue(String lux) { return '$lux лк'; } @override String telemetry_powerValue(String watts) { return '$watts Вт'; } @override String telemetry_distanceValue(String meters) { return '$meters м'; } @override String telemetry_energyValue(String kilowattHours) { return '$kilowattHours кВт⋅ч'; } @override String telemetry_directionValue(String degrees) { return '$degrees°'; } @override String telemetry_concentrationValue(String ppm) { return '$ppm ppm'; } @override String telemetry_percentageValue(String percent) { return '$percent%'; } @override String telemetry_analogValue(String value) { return '$value'; } @override String get telemetry_autoFetchQuantity => 'Количество запросов'; @override String get telemetry_error => 'Не удалось получить данные'; @override String get neighbors_receivedData => 'Полученные данные о соседях'; @override String get neighbors_requestTimedOut => 'Время ожидания данных о соседях истекло.'; @override String neighbors_errorLoading(String error) { return 'Ошибка загрузки соседей: $error'; } @override String get neighbors_repeatersNeighbors => 'Соседи репитеров'; @override String get neighbors_noData => 'Данные о соседях недоступны.'; @override String neighbors_unknownContact(String pubkey) { return 'Неизвестный $pubkey'; } @override String neighbors_heardAgo(String time) { return 'Слушал(а): $time назад'; } @override String get channelPath_title => 'Путь пакета'; @override String get channelPath_viewMap => 'Посмотреть на карте'; @override String get channelPath_otherObservedPaths => 'Другие наблюдаемые пути'; @override String get channelPath_repeaterHops => 'Хопы через репитеры'; @override String get channelPath_noHopDetails => 'Детали хопов для этого пакета не предоставлены.'; @override String get channelPath_messageDetails => 'Детали сообщения'; @override String get channelPath_senderLabel => 'Отправитель'; @override String get channelPath_timeLabel => 'Время'; @override String get channelPath_repeatsLabel => 'Повторы'; @override String channelPath_pathLabel(int index) { return 'Путь $index'; } @override String get channelPath_observedLabel => 'Наблюдаемый'; @override String channelPath_observedPathTitle(int index, String hops) { return 'Наблюдаемый путь $index • $hops'; } @override String get channelPath_noLocationData => 'Нет данных о местоположении'; @override String channelPath_timeWithDate(int day, int month, String time) { return '$day/$month $time'; } @override String channelPath_timeOnly(String time) { return '$time'; } @override String get channelPath_unknownPath => 'Неизвестный'; @override String get channelPath_floodPath => 'Рассылка'; @override String get channelPath_directPath => 'Прямой'; @override String channelPath_observedZeroOf(int total) { return '0 из $total хопов'; } @override String channelPath_observedSomeOf(int observed, int total) { return '$observed из $total хопов'; } @override String get channelPath_mapTitle => 'Карта пути'; @override String get channelPath_noRepeaterLocations => 'Нет данных о местоположении репитеров для этого пути.'; @override String channelPath_primaryPath(int index) { return 'Путь $index (Основной)'; } @override String get channelPath_pathLabelTitle => 'Путь'; @override String get channelPath_routeDirect => 'direct (routed)'; @override String channelPath_routeFlood(int hops) { return 'flood, $hops hops'; } @override String get channelPath_snrLabel => 'SNR'; @override String channelPath_snrValue(String db) { return '$db dB'; } @override String get channelPath_rssiLabel => 'RSSI'; @override String channelPath_rssiValue(int dbm) { return '$dbm dBm'; } @override String get channelPath_observedPathHeader => 'Наблюдаемый путь'; @override String channelPath_selectedPathLabel(String label, String prefixes) { return '$label • $prefixes'; } @override String get channelPath_noHopDetailsAvailable => 'Детали хопов для этого пакета недоступны.'; @override String get channelPath_unknownRepeater => 'Неизвестный репитер'; @override String get community_title => 'Сообщество'; @override String get community_create => 'Создать сообщество'; @override String get community_createDesc => 'Создать новое сообщество и поделиться через QR-код.'; @override String get community_join => 'Присоединиться'; @override String get community_joinTitle => 'Присоединиться к сообществу'; @override String community_joinConfirmation(String name) { return 'Вы хотите присоединиться к сообществу \"$name\"?'; } @override String get community_scanQr => 'Сканировать QR-код сообщества'; @override String get community_scanInstructions => 'Наведите камеру на QR-код сообщества'; @override String get community_showQr => 'Показать QR-код'; @override String get community_publicChannel => 'Публичный канал сообщества'; @override String get community_hashtagChannel => 'Хэштег-канал сообщества'; @override String get community_name => 'Имя сообщества'; @override String get community_enterName => 'Введите имя сообщества'; @override String community_created(String name) { return 'Сообщество \"$name\" создано'; } @override String community_joined(String name) { return 'Присоединились к сообществу \"$name\"'; } @override String get community_qrTitle => 'Поделиться сообществом'; @override String community_qrInstructions(String name) { return 'Отсканируйте этот QR-код, чтобы присоединиться к \"$name\"'; } @override String get channels_shareQr => 'Share QR Code'; @override String get channels_shareQrTitle => 'Share Channel'; @override String channels_shareQrInstructions(String name) { return 'Scan to add \"$name\".'; } @override String get channels_scanQr => 'Scan QR Code'; @override String get channels_scanQrDesc => 'Add a community or channel from a QR code'; @override String get channels_scanQrInstructions => 'Point at a MeshCore QR code'; @override String get channels_invalidQr => 'Invalid QR code'; @override String get channels_noFreeSlot => 'No free channel slot'; @override String channels_qrAddConfirm(String name) { return 'Add channel \"$name\"?'; } @override String channels_qrAdded(String name) { return 'Added \"$name\".'; } @override String channels_qrExists(String name) { return '\"$name\" is already added.'; } @override String get community_hashtagPrivacyHint => 'Хэштег-каналы сообщества доступны только его участникам'; @override String get community_invalidQrCode => 'Недопустимый QR-код сообщества'; @override String get community_alreadyMember => 'Уже участник'; @override String community_alreadyMemberMessage(String name) { return 'Вы уже участник сообщества \"$name\".'; } @override String get community_addPublicChannel => 'Добавить публичный канал сообщества'; @override String get community_addPublicChannelHint => 'Автоматически добавить публичный канал для этого сообщества'; @override String get community_noCommunities => 'Вы ещё не присоединились ни к одному сообществу'; @override String get community_scanOrCreate => 'Отсканируйте QR-код или создайте сообщество, чтобы начать'; @override String get community_manageCommunities => 'Управление сообществами'; @override String get community_delete => 'Покинуть сообщество'; @override String community_deleteConfirm(String name) { return 'Покинуть \"$name\"?'; } @override String community_deleteChannelsWarning(int count) { return 'Это также удалит $count канал(ов) и их сообщения.'; } @override String community_deleted(String name) { return 'Покинули сообщество \"$name\"'; } @override String get community_regenerateSecret => 'Пересоздать секрет'; @override String community_regenerateSecretConfirm(String name) { return 'Пересоздать секретный ключ для \"$name\"? Все участники должны будут отсканировать новый QR-код для продолжения общения.'; } @override String get community_regenerate => 'Пересоздать'; @override String community_secretRegenerated(String name) { return 'Секрет пересоздан для \"$name\"'; } @override String get community_updateSecret => 'Обновить секрет'; @override String community_secretUpdated(String name) { return 'Секрет обновлён для \"$name\"'; } @override String community_scanToUpdateSecret(String name) { return 'Отсканируйте новый QR-код, чтобы обновить секрет для \"$name\"'; } @override String get community_addHashtagChannel => 'Добавить хэштег-канал сообщества'; @override String get community_addHashtagChannelDesc => 'Добавить хэштег-канал для этого сообщества'; @override String get community_selectCommunity => 'Выбрать сообщество'; @override String get community_regularHashtag => 'Обычный хэштег'; @override String get community_regularHashtagDesc => 'Публичный хэштег (любой может присоединиться)'; @override String get community_communityHashtag => 'Хэштег сообщества'; @override String get community_communityHashtagDesc => 'Доступен только участникам сообщества'; @override String community_forCommunity(String name) { return 'Для $name'; } @override String get listFilter_tooltip => 'Фильтр и сортировка'; @override String get listFilter_sortBy => 'Сортировка по'; @override String get listFilter_latestMessages => 'Последние сообщения'; @override String get listFilter_heardRecently => 'Слышали недавно'; @override String get listFilter_az => 'По алфавиту'; @override String get listFilter_filters => 'Фильтры'; @override String get listFilter_all => 'Все'; @override String get listFilter_favorites => 'Избранное'; @override String get listFilter_addToFavorites => 'Добавить в избранное'; @override String get listFilter_removeFromFavorites => 'Удалить из избранного'; @override String get listFilter_users => 'Пользователи'; @override String get listFilter_repeaters => 'Репитеры'; @override String get listFilter_roomServers => 'Серверы комнат'; @override String get listFilter_sensors => 'Sensors'; @override String get listFilter_unreadOnly => 'Только непрочитанные'; @override String get listFilter_newGroup => 'Новая группа'; @override String get pathTrace_you => 'Вы'; @override String get pathTrace_failed => 'Путь трассировки не выполнен.'; @override String get pathTrace_notAvailable => 'Трассировка пути недоступна.'; @override String get pathTrace_refreshTooltip => 'Обновить Path Trace'; @override String get pathTrace_someHopsNoLocation => 'Одному или нескольким хмелям не указано местоположение!'; @override String get pathTrace_clearTooltip => 'Очистить путь'; @override String get losSelectStartEnd => 'Выберите начальный и конечный узлы для LOS.'; @override String losRunFailed(String error) { return 'Проверка прямой видимости не удалась: $error'; } @override String get losClearAllPoints => 'Очистить все точки'; @override String get losRunToViewElevationProfile => 'Запустите LOS, чтобы просмотреть профиль высот.'; @override String get losMenuTitle => 'ЛОС Меню'; @override String get losMenuSubtitle => 'Коснитесь узлов или нажмите и удерживайте карту для выбора пользовательских точек.'; @override String get losShowDisplayNodes => 'Показать узлы отображения'; @override String get losCustomPoints => 'Пользовательские точки'; @override String losCustomPointLabel(int index) { return 'Пользовательский $index'; } @override String get losPointA => 'Точка А'; @override String get losPointB => 'Точка Б'; @override String losAntennaA(String value, String unit) { return 'Антенна А: $value $unit'; } @override String losAntennaB(String value, String unit) { return 'Антенна Б: $value $unit'; } @override String get losRun => 'Запустить ЛОС'; @override String get losNoElevationData => 'Нет данных о высоте'; @override String losProfileClear( String distance, String distanceUnit, String clearance, String heightUnit, ) { return '$distance $distanceUnit, свободная зона видимости, минимальный зазор $clearance $heightUnit'; } @override String losProfileBlocked( String distance, String distanceUnit, String obstruction, String heightUnit, ) { return '$distance $distanceUnit, заблокирован $obstruction $heightUnit'; } @override String get losStatusChecking => 'ЛОС: проверяю...'; @override String get losStatusNoData => 'ЛОС: нет данных'; @override String losStatusSummary(int clear, int total, int blocked, int unknown) { return 'LOS: $clear/$total очищено, $blocked заблокировано, $unknown неизвестно.'; } @override String get losErrorElevationUnavailable => 'Данные о высоте недоступны для одного или нескольких образцов.'; @override String get losErrorInvalidInput => 'Неверные данные о точках/высоте для расчета LOS.'; @override String get losRenameCustomPoint => 'Переименовать пользовательскую точку'; @override String get losPointName => 'Имя точки'; @override String get losShowPanelTooltip => 'Показать панель LOS'; @override String get losHidePanelTooltip => 'Скрыть панель LOS'; @override String get losElevationAttribution => 'Данные о высоте: Open-Meteo (CC BY 4.0)'; @override String get losLegendRadioHorizon => 'Радиогоризонт'; @override String get losLegendLosBeam => 'Линия прямой видимости'; @override String get losLegendTerrain => 'Рельеф'; @override String get losBlockedSpotsTitle => 'Зарезервированные места'; @override String get losBlockedSpotsHint => 'Щелкните по заблокированной области, чтобы выделить ее на карте.'; @override String losBlockedSpotChip( String distance, String distanceUnit, String obstruction, String heightUnit, ) { return '$distance $distanceUnit • $obstruction $heightUnit'; } @override String get losSelectedObstructionTitle => 'Выбранный объект, препятствующий движению'; @override String losSelectedObstructionDetails( String obstruction, String heightUnit, String distanceFromA, String distanceUnit, String distanceFromB, ) { return 'Blocked by $obstruction $heightUnit, $distanceFromA from A and $distanceFromB from B ($distanceUnit).'; } @override String get losFrequencyLabel => 'Частота'; @override String get losFrequencyInfoTooltip => 'Просмотреть детали расчёта'; @override String get losFrequencyDialogTitle => 'Расчёт радиогоризонта'; @override String losFrequencyDialogDescription( double baselineK, double baselineFreq, double frequencyMHz, double kFactor, ) { return 'Начиная с k=$baselineK на частоте $baselineFreq МГц, расчет корректирует коэффициент k для текущего диапазона $frequencyMHz МГц, который определяет изогнутую границу радиогоризонта.'; } @override String get contacts_pathTrace => 'Трассировка пути'; @override String get contacts_ping => 'Пинговать'; @override String get contacts_repeaterPathTrace => 'Отследить путь к ретранслятору'; @override String get contacts_repeaterPing => 'Пинговать повторитель'; @override String contacts_repeaterPathTraceVia(String prefix) { return 'Path trace via $prefix'; } @override String get contacts_roomPathTrace => 'Трассировка пути к серверу комнаты'; @override String get contacts_roomPing => 'Пинговать сервер комнаты'; @override String get contacts_chatTraceRoute => 'Трассировка маршрута'; @override String contacts_pathTraceTo(String name) { return 'Показать маршрут к $name'; } @override String get contacts_clipboardEmpty => 'Буфер обмена пуст.'; @override String get contacts_invalidAdvertFormat => 'Недействительные контактные данные'; @override String get contacts_contactImported => 'Контакт был импортирован'; @override String get contacts_contactImportFailed => 'Контакт не удалось импортировать'; @override String get contacts_zeroHopAdvert => 'Реклама Zero Hop'; @override String get contacts_floodAdvert => 'Рекламный поток'; @override String get contacts_copyAdvertToClipboard => 'Копировать рекламу в буфер обмена'; @override String get contacts_addContactFromClipboard => 'Добавить контакт из буфера обмена'; @override String get contacts_ShareContact => 'Копировать контакт в буфер обмена'; @override String get contacts_ShareContactZeroHop => 'Поделиться контактом по объявлению'; @override String get contacts_zeroHopContactAdvertSent => 'Отправлено сообщение по объявлению.'; @override String get contacts_zeroHopContactAdvertFailed => 'Не удалось отправить контакт.'; @override String get contacts_contactAdvertCopied => 'Реклама скопирована в буфер обмена.'; @override String get contacts_contactAdvertCopyFailed => 'Копирование рекламы в буфер обмена не удалось.'; @override String get notification_activityTitle => 'Активность MeshCore'; @override String notification_messagesCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, other: 'сообщений', many: 'сообщений', few: 'сообщения', one: 'сообщение', ); return '$count $_temp0'; } @override String notification_channelMessagesCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, other: 'сообщений канала', many: 'сообщений канала', few: 'сообщения канала', one: 'сообщение канала', ); return '$count $_temp0'; } @override String notification_newNodesCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, other: 'новых узлов', many: 'новых узлов', few: 'новых узла', one: 'новый узел', ); return '$count $_temp0'; } @override String notification_newTypeDiscovered(String contactType) { return 'Обнаружен новый $contactType'; } @override String get notification_receivedNewMessage => 'Получено новое сообщение'; @override String get settings_gpxExportRepeaters => 'Экспортировать рипитеры / сервер комнаты в GPX'; @override String get settings_gpxExportRepeatersSubtitle => 'Экспортирует ретрансляторы / сервер комнат с местоположением в файл GPX.'; @override String get settings_gpxExportContacts => 'Экспортировать спутников в GPX'; @override String get settings_gpxExportContactsSubtitle => 'Экспортирует спутников с местоположением в файл GPX.'; @override String get settings_gpxExportAll => 'Экспортировать все контакты в GPX'; @override String get settings_gpxExportAllSubtitle => 'Экспортирует все контакты с местоположением в файл GPX.'; @override String get settings_gpxExportSuccess => 'Успешно экспортирован файл GPX.'; @override String get settings_gpxExportNoContacts => 'Нет контактов для экспорта.'; @override String get settings_gpxExportNotAvailable => 'Не поддерживается на вашем устройстве/ОС'; @override String get settings_gpxExportError => 'Произошла ошибка при экспорте.'; @override String get settings_gpxExportRepeatersRoom => 'Местоположения повторителей и серверов комнат'; @override String get settings_gpxExportChat => 'Местоположения спутников'; @override String get settings_gpxExportAllContacts => 'Все местоположения контактов'; @override String get settings_gpxExportShareText => 'Данные карты экспортированы из meshcore-open'; @override String get settings_gpxExportShareSubject => 'meshcore-open экспорт данных карты GPX'; @override String get snrIndicator_nearByRepeaters => 'Ближайшие ретрансляторы'; @override String get snrIndicator_noNeighbors => 'No neighbors heard currently. Messages still broadcast and route.'; @override String get snrIndicator_lastSeen => 'Последний раз видели'; @override String get contactsSettings_title => 'Настройки контактов'; @override String get contactsSettings_autoAddTitle => 'Автоматическое обнаружение'; @override String get contactsSettings_otherTitle => 'Другие настройки, связанные с контактами'; @override String get contactsSettings_autoAddUsersTitle => 'Автоматически добавлять пользователей'; @override String get contactsSettings_autoAddUsersSubtitle => 'Разрешить компаньону автоматически добавлять обнаруженных пользователей'; @override String get contactsSettings_autoAddRepeatersTitle => 'Автоматически добавлять ретрансляторы'; @override String get contactsSettings_autoAddRepeatersSubtitle => 'Разрешить спутнику автоматически добавлять обнаруженные ретрансляторы'; @override String get contactsSettings_autoAddRoomServersTitle => 'Автоматически добавлять серверы комнат'; @override String get contactsSettings_autoAddRoomServersSubtitle => 'Разрешить компаньону автоматически добавлять обнаруженные сервера комнат.'; @override String get contactsSettings_autoAddSensorsTitle => 'Автоматически добавлять датчики'; @override String get contactsSettings_autoAddSensorsSubtitle => 'Разрешить компаньону автоматически добавлять обнаруженные датчики'; @override String get contactsSettings_overwriteOldestTitle => 'Перезаписать самое старое'; @override String get contactsSettings_overwriteOldestSubtitle => 'Когда список контактов заполнен, будет заменен самый старый контакт, который не находится в избранном.'; @override String get discoveredContacts_Title => 'Обнаруженные контакты'; @override String get discoveredContacts_noMatching => 'Нет совпадающих контактов'; @override String get discoveredContacts_searchHint => 'Найденные контакты поиска'; @override String get discoveredContacts_contactAdded => 'Контакт добавлен'; @override String get discoveredContacts_addContact => 'Добавить контакт'; @override String get discoveredContacts_copyContact => 'Копировать контакт в буфер обмена'; @override String get discoveredContacts_deleteContact => 'Удалить контакт'; @override String get discoveredContacts_deleteContactAll => 'Удалить Все Обнаруженные Контакты'; @override String get discoveredContacts_deleteContactAllContent => 'Вы уверены, что хотите удалить все обнаруженные контакты?'; @override String get chat_sendCooldown => 'Пожалуйста, подождите немного, прежде чем отправлять сообщение снова.'; @override String get appSettings_jumpToOldestUnread => 'Перейти к самому старому непрочитанному сообщению'; @override String get appSettings_jumpToOldestUnreadSubtitle => 'При открытии чата с непрочитанными сообщениями, прокрутите страницу, чтобы увидеть первое непрочитанное сообщение, а не последнее.'; @override String get appSettings_languageHu => 'Венгерский'; @override String get appSettings_languageJa => 'Японский'; @override String get appSettings_languageKo => 'Корейский'; @override String get radioStats_tooltip => 'Статистика радио и беспроводной сети'; @override String get radioStats_screenTitle => 'Статистика радиовещания'; @override String get radioStats_notConnected => 'Подключитесь к устройству, чтобы просмотреть статистику радио.'; @override String get radioStats_firmwareTooOld => 'Для работы радиостатистики требуется установленная версия прошивки v8 или более новая.'; @override String get radioStats_waiting => 'Ожидаем данных…'; @override String radioStats_noiseFloor(int noiseDbm) { return 'Уровень шума: $noiseDbm дБм'; } @override String radioStats_lastRssi(int rssiDbm) { return 'Последнее значение RSSI: $rssiDbm дБм'; } @override String radioStats_lastSnr(String snr) { return 'Последнее значение SNR: $snr дБ'; } @override String radioStats_txAir(int seconds) { return 'Время эфира на телеканале TX (общее): $seconds секунд'; } @override String radioStats_rxAir(int seconds) { return 'Общее время использования RX (в секундах): $seconds с'; } @override String get radioStats_chartCaption => 'Уровень шума (дБм) на основе последних измерений.'; @override String radioStats_stripNoise(int noiseDbm) { return 'Уровень шума: $noiseDbm дБм'; } @override String get radioStats_stripWaiting => 'Получение данных о радио…'; @override String get radioStats_settingsTile => 'Статистика радиовещания'; @override String get radioStats_settingsSubtitle => 'Уровень шума, RSSI, SNR и время передачи'; @override String get translation_title => 'Перевод'; @override String get translation_enableTitle => 'Включить перевод'; @override String get translation_enableSubtitle => 'Переводить входящие сообщения и позволять предварительный перевод перед отправкой.'; @override String get translation_composerTitle => 'Переводить перед отправкой'; @override String get translation_composerSubtitle => 'Управляет исходным состоянием значка перевода, предоставляемого редактором.'; @override String get translation_autoIncomingTitle => 'Автоматически переводить сообщения'; @override String get translation_autoIncomingSubtitle => 'Автоматически переводит сообщения для уведомлений, а также для чатов и каналов.'; @override String get translation_translateMessage => 'Перевести сообщение'; @override String get translation_targetLanguage => 'Целевой язык'; @override String get translation_useAppLanguage => 'Используйте язык приложения'; @override String get translation_downloadedModelLabel => 'Загруженная модель'; @override String get translation_presetModelLabel => 'Предопределенная модель от Hugging Face'; @override String get translation_manualUrlLabel => 'Ссылка на руководство'; @override String get translation_downloadModel => 'Скачать модель'; @override String get translation_downloading => 'Загрузка...'; @override String get translation_working => 'Работа...'; @override String get translation_stop => 'Прекратите'; @override String get translation_mergingChunks => 'Объединение скачанных фрагментов в один финальный файл...'; @override String get translation_downloadedModels => 'Загруженные модели'; @override String get translation_deleteModel => 'Удалить модель'; @override String get translation_modelDownloaded => 'Модель перевода загружена.'; @override String get translation_downloadStopped => 'Процесс загрузки был прерван.'; @override String translation_downloadFailed(String error) { return 'Не удалось скачать: $error'; } @override String get translation_enterUrlFirst => 'Сначала введите URL модели.'; @override String get scanner_linuxPairingShowPin => 'Показать PIN'; @override String get scanner_linuxPairingHidePin => 'Скрыть PIN'; @override String get scanner_linuxPairingPinTitle => 'PIN‑код сопряжения Bluetooth'; @override String scanner_linuxPairingPinPrompt(String deviceName) { return 'Введите PIN‑код для $deviceName (оставьте пустым, если нет).'; } @override String get translation_messageTranslation => 'Перевод сообщения'; @override String get translation_translateBeforeSending => 'Перевести перед отправкой'; @override String get translation_composerEnabledHint => 'Сообщения будут переведены перед отправкой.'; @override String get translation_composerDisabledHint => 'Отправляйте сообщения на языке, в котором они были изначально набраны.'; @override String translation_translateTo(String language) { return 'Перевести на $language'; } @override String get translation_translationOptions => 'Варианты перевода'; @override String get translation_systemLanguage => 'Язык системы'; @override String get background_serviceTitle => 'MeshCore работает'; @override String get background_serviceText => 'Поддерживает BLE-соединение'; @override String appSettings_translationModelDeleted(String name) { return 'Удалено $name'; } @override String appSettings_translationModelDeleteFailed(String error) { return 'Не удалось удалить: $error'; } @override String channels_channelUpdateFailed(String error) { return 'Не удалось обновить канал: $error'; } @override String get contact_typeChat => 'Чат'; @override String get contact_typeRepeater => 'Ретранслятор'; @override String get contact_typeRoom => 'Комната'; @override String get contact_typeSensor => 'Датчик'; @override String get contact_typeUnknown => 'Неизвестно'; @override String get block_block => 'Block'; @override String get block_unblock => 'Unblock'; @override String get block_sender => 'Block sender'; @override String block_blocked(String name) { return 'Blocked $name'; } @override String block_unblocked(String name) { return 'Unblocked $name'; } @override String block_blockedNameOnly(String name) { return 'Blocked \"$name\" across all channels. Name only until we learn their key'; } @override String get block_settingsTitle => 'Blocked'; @override String get block_settingsSubtitle => 'Users you\'ve blocked'; @override String get block_none => 'No blocked users'; @override String get block_keysSection => 'Blocked contacts'; @override String get block_namesSection => 'Blocked names'; @override String get block_namesHint => 'Name-only blocks (channel senders). Each upgrades to a full block once we learn their key.'; @override String get block_offloadActive => 'Firmware offload active: blocks sync to this radio'; @override String get block_offloadStoreFull => 'Radio block list full (32): extra blocks stay app-only'; @override String get block_composerNotice => 'You\'ve blocked this contact'; @override String get storageUnavailableTitle => 'Message storage unavailable'; @override String get storageUnavailableBody => 'Your history is not lost, but the app can\'t open its database, so new messages are NOT being saved. Restart the app after fixing the problem. See the app log for details.'; @override String get batteryOptimizationTitle => 'Battery optimization is on'; @override String get batteryOptimizationBody => 'Android may sleep the app when the screen is off and drop the radio connection. Set this app\'s battery usage to Unrestricted for a reliable background connection.'; @override String get batteryOptimizationOpenSettings => 'Open battery settings'; @override String get batteryOptimizationDismiss => 'Dismiss'; @override String get batteryOptimizationOpenFailed => 'Couldn\'t open battery settings'; }