mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-08-11 08:20:36 +00:00
- i18n: translate connection screen + chat tab keys into 13 locales; add "Send my contact" (advert) strings in all locales - feat: move self-advert from home header into composer "+" action menu (new lib/utils/advert_helper.dart, always shows Flood/Direct sheet) - fix: hide-repeaters map toggle was bypassed in simple mode - fix: simple mode map now shows only favourite chat contacts - fix: wrap ListTiles in Material (contact_tile secondary actions, inferred contact group card) to satisfy Flutter ink assertions - device-authoritative contact/channel sync and UX review fixes Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3448 lines
101 KiB
Dart
3448 lines
101 KiB
Dart
// 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 => 'MeshCore SAR';
|
||
|
||
@override
|
||
String get messages => 'Сообщения';
|
||
|
||
@override
|
||
String get contacts => 'Контакты';
|
||
|
||
@override
|
||
String get map => 'Карта';
|
||
|
||
@override
|
||
String get settings => 'Настройки';
|
||
|
||
@override
|
||
String get connect => 'Подключить';
|
||
|
||
@override
|
||
String get disconnect => 'Отключить';
|
||
|
||
@override
|
||
String get noDevicesFound => 'Устройства не найдены';
|
||
|
||
@override
|
||
String get scanAgain => 'Повторить поиск';
|
||
|
||
@override
|
||
String get deviceNotConnected => 'Устройство не подключено';
|
||
|
||
@override
|
||
String get locationPermissionDenied => 'Доступ к геолокации запрещён';
|
||
|
||
@override
|
||
String get locationPermissionPermanentlyDenied =>
|
||
'Доступ к геолокации запрещён навсегда. Включите его в настройках.';
|
||
|
||
@override
|
||
String get locationPermissionRequired =>
|
||
'Доступ к геолокации необходим для GPS-трекинга и координации команды. Вы можете включить его позже в настройках.';
|
||
|
||
@override
|
||
String get locationServicesDisabled =>
|
||
'Службы геолокации отключены. Пожалуйста, включите их в настройках.';
|
||
|
||
@override
|
||
String get failedToGetGpsLocation => 'Не удалось получить GPS-координаты';
|
||
|
||
@override
|
||
String failedToAdvertise(String error) {
|
||
return 'Ошибка трансляции: $error';
|
||
}
|
||
|
||
@override
|
||
String get cancelReconnection => 'Отменить переподключение';
|
||
|
||
@override
|
||
String get general => 'Основные';
|
||
|
||
@override
|
||
String get theme => 'Тема';
|
||
|
||
@override
|
||
String get chooseTheme => 'Выбрать тему';
|
||
|
||
@override
|
||
String get light => 'Светлая';
|
||
|
||
@override
|
||
String get dark => 'Тёмная';
|
||
|
||
@override
|
||
String get blueLightTheme => 'Синяя светлая тема';
|
||
|
||
@override
|
||
String get blueDarkTheme => 'Синяя тёмная тема';
|
||
|
||
@override
|
||
String get sarRed => 'SAR Красная';
|
||
|
||
@override
|
||
String get alertEmergencyMode => 'Режим тревоги / ЧС';
|
||
|
||
@override
|
||
String get sarGreen => 'SAR Зелёная';
|
||
|
||
@override
|
||
String get safeAllClearMode => 'Режим «Всё в порядке»';
|
||
|
||
@override
|
||
String get autoSystem => 'Авто (Система)';
|
||
|
||
@override
|
||
String get followSystemTheme => 'Следовать системной теме';
|
||
|
||
@override
|
||
String get showRxTxIndicators => 'Показывать индикаторы RX/TX';
|
||
|
||
@override
|
||
String get disableMap => 'Отключить карту';
|
||
|
||
@override
|
||
String get language => 'Язык';
|
||
|
||
@override
|
||
String get chooseLanguage => 'Выбрать язык';
|
||
|
||
@override
|
||
String get save => 'Сохранить';
|
||
|
||
@override
|
||
String get cancel => 'Отмена';
|
||
|
||
@override
|
||
String get close => 'Закрыть';
|
||
|
||
@override
|
||
String get about => 'О приложении';
|
||
|
||
@override
|
||
String get appVersion => 'Версия приложения';
|
||
|
||
@override
|
||
String get aboutMeshCoreSar => 'О MeshCore SAR';
|
||
|
||
@override
|
||
String get aboutDescription =>
|
||
'Приложение для поисково-спасательных операций, разработанное для аварийно-спасательных служб. Возможности:\n\n• BLE mesh-сеть для связи между устройствами\n• Офлайн-карты с несколькими вариантами слоёв\n• Отслеживание членов команды в реальном времени\n• Тактические маркеры SAR (найденный человек, пожар, место сбора)\n• Управление контактами и обмен сообщениями\n• GPS-трекинг с показанием курса компаса\n• Кэширование тайлов карт для работы офлайн';
|
||
|
||
@override
|
||
String get technologiesUsed => 'Используемые технологии:';
|
||
|
||
@override
|
||
String get technologiesList =>
|
||
'• Flutter для кросс-платформенной разработки\n• BLE (Bluetooth Low Energy) для mesh-сети\n• OpenStreetMap для карт\n• Provider для управления состоянием\n• SharedPreferences для локального хранилища';
|
||
|
||
@override
|
||
String get moreInfo => 'Подробнее';
|
||
|
||
@override
|
||
String get packageName => 'Имя пакета';
|
||
|
||
@override
|
||
String get sampleData => 'Тестовые данные';
|
||
|
||
@override
|
||
String get sampleDataDescription =>
|
||
'Загрузить или очистить тестовые контакты, сообщения каналов и маркеры SAR';
|
||
|
||
@override
|
||
String get loadSampleData => 'Загрузить тестовые данные';
|
||
|
||
@override
|
||
String get clearAllData => 'Очистить все данные';
|
||
|
||
@override
|
||
String get clearAllDataConfirmTitle => 'Очистить все данные';
|
||
|
||
@override
|
||
String get clearAllDataConfirmMessage =>
|
||
'Это удалит все контакты и маркеры SAR. Вы уверены?';
|
||
|
||
@override
|
||
String get clear => 'Очистить';
|
||
|
||
@override
|
||
String loadedSampleData(
|
||
int teamCount,
|
||
int channelCount,
|
||
int sarCount,
|
||
int messageCount,
|
||
) {
|
||
return 'Загружено: $teamCount членов команды, $channelCount каналов, $sarCount маркеров SAR, $messageCount сообщений';
|
||
}
|
||
|
||
@override
|
||
String failedToLoadSampleData(String error) {
|
||
return 'Не удалось загрузить тестовые данные: $error';
|
||
}
|
||
|
||
@override
|
||
String get allDataCleared => 'Все данные очищены';
|
||
|
||
@override
|
||
String get failedToStartBackgroundTracking =>
|
||
'Не удалось запустить фоновое отслеживание. Проверьте разрешения и BLE-соединение.';
|
||
|
||
@override
|
||
String locationBroadcast(String latitude, String longitude) {
|
||
return 'Трансляция геолокации: $latitude, $longitude';
|
||
}
|
||
|
||
@override
|
||
String get defaultPinInfo =>
|
||
'PIN-код по умолчанию для устройств без экрана — 123456. Проблемы с сопряжением? Удалите устройство из Bluetooth в системных настройках.';
|
||
|
||
@override
|
||
String get noMessagesYet => 'Сообщений пока нет';
|
||
|
||
@override
|
||
String get pullDownToSync => 'Потяните вниз для синхронизации сообщений';
|
||
|
||
@override
|
||
String get deleteContact => 'Удалить контакт';
|
||
|
||
@override
|
||
String get delete => 'Удалить';
|
||
|
||
@override
|
||
String get viewOnMap => 'Показать на карте';
|
||
|
||
@override
|
||
String get refresh => 'Обновить';
|
||
|
||
@override
|
||
String get resetPath => 'Сбросить маршрут (перепроложить)';
|
||
|
||
@override
|
||
String copiedToClipboard(String label) {
|
||
return '$label скопировано в буфер обмена';
|
||
}
|
||
|
||
@override
|
||
String get pleaseEnterPassword => 'Пожалуйста, введите пароль';
|
||
|
||
@override
|
||
String failedToSyncContacts(String error) {
|
||
return 'Не удалось синхронизировать контакты: $error';
|
||
}
|
||
|
||
@override
|
||
String get loggedInSuccessfully =>
|
||
'Вход выполнен! Ожидание сообщений комнаты...';
|
||
|
||
@override
|
||
String get loginFailed => 'Ошибка входа — неверный пароль';
|
||
|
||
@override
|
||
String loggingIn(String roomName) {
|
||
return 'Вход в $roomName...';
|
||
}
|
||
|
||
@override
|
||
String failedToSendLogin(String error) {
|
||
return 'Не удалось отправить данные входа: $error';
|
||
}
|
||
|
||
@override
|
||
String get lowLocationAccuracy => 'Низкая точность геолокации';
|
||
|
||
@override
|
||
String get continue_ => 'Продолжить';
|
||
|
||
@override
|
||
String get sendSarMarker => 'Отправить маркер SAR';
|
||
|
||
@override
|
||
String get deleteDrawing => 'Удалить рисунок';
|
||
|
||
@override
|
||
String get drawingTools => 'Инструменты рисования';
|
||
|
||
@override
|
||
String get drawLine => 'Нарисовать линию';
|
||
|
||
@override
|
||
String get drawLineDesc => 'Нарисуйте произвольную линию на карте';
|
||
|
||
@override
|
||
String get drawRectangle => 'Нарисовать прямоугольник';
|
||
|
||
@override
|
||
String get drawRectangleDesc => 'Нарисуйте прямоугольную область на карте';
|
||
|
||
@override
|
||
String get measureDistance => 'Измерить расстояние';
|
||
|
||
@override
|
||
String get measureDistanceDesc => 'Долгое нажатие на две точки для измерения';
|
||
|
||
@override
|
||
String get clearMeasurement => 'Сбросить измерение';
|
||
|
||
@override
|
||
String distanceLabel(String distance) {
|
||
return 'Расстояние: $distance';
|
||
}
|
||
|
||
@override
|
||
String get longPressForSecondPoint => 'Долгое нажатие для второй точки';
|
||
|
||
@override
|
||
String get longPressToStartMeasurement =>
|
||
'Долгое нажатие для установки первой точки';
|
||
|
||
@override
|
||
String get longPressToStartNewMeasurement =>
|
||
'Долгое нажатие для начала нового измерения';
|
||
|
||
@override
|
||
String get shareDrawings => 'Поделиться рисунками';
|
||
|
||
@override
|
||
String get clearAllDrawings => 'Удалить все рисунки';
|
||
|
||
@override
|
||
String get completeLine => 'Завершить линию';
|
||
|
||
@override
|
||
String broadcastDrawingsToTeam(int count, String plural) {
|
||
return 'Транслировать $count рисун$plural команде';
|
||
}
|
||
|
||
@override
|
||
String removeAllDrawings(int count, String plural) {
|
||
return 'Удалить все $count рисун$plural';
|
||
}
|
||
|
||
@override
|
||
String deleteAllDrawingsConfirm(int count, String plural) {
|
||
return 'Удалить все $count рисун$plural с карты?';
|
||
}
|
||
|
||
@override
|
||
String get drawing => 'Рисунок';
|
||
|
||
@override
|
||
String shareDrawingsCount(int count, String plural) {
|
||
return 'Поделиться $count рисун$plural';
|
||
}
|
||
|
||
@override
|
||
String get showReceivedDrawings => 'Показать полученные рисунки';
|
||
|
||
@override
|
||
String get showingAllDrawings => 'Показаны все рисунки';
|
||
|
||
@override
|
||
String get showingOnlyYourDrawings => 'Показаны только ваши рисунки';
|
||
|
||
@override
|
||
String get showSarMarkers => 'Показать маркеры SAR';
|
||
|
||
@override
|
||
String get showingSarMarkers => 'Маркеры SAR отображаются';
|
||
|
||
@override
|
||
String get hidingSarMarkers => 'Маркеры SAR скрыты';
|
||
|
||
@override
|
||
String get clearAll => 'Очистить всё';
|
||
|
||
@override
|
||
String get publicChannel => 'Публичный канал';
|
||
|
||
@override
|
||
String get broadcastToAll => 'Трансляция всем ближайшим узлам (временно)';
|
||
|
||
@override
|
||
String get storedPermanently => 'Сохранено постоянно в комнате';
|
||
|
||
@override
|
||
String get notConnectedToDevice => 'Устройство не подключено';
|
||
|
||
@override
|
||
String get typeYourMessage => 'Введите сообщение...';
|
||
|
||
@override
|
||
String get quickLocationMarker => 'Быстрый маркер местоположения';
|
||
|
||
@override
|
||
String get markerType => 'Тип маркера';
|
||
|
||
@override
|
||
String get sendTo => 'Отправить в';
|
||
|
||
@override
|
||
String get noDestinationsAvailable => 'Нет доступных получателей.';
|
||
|
||
@override
|
||
String get selectDestination => 'Выберите получателя...';
|
||
|
||
@override
|
||
String get ephemeralBroadcastInfo =>
|
||
'Временно: передаётся по эфиру. Не сохраняется — узлы должны быть онлайн.';
|
||
|
||
@override
|
||
String get persistentRoomInfo =>
|
||
'Постоянно: хранится неизменно в комнате. Синхронизируется автоматически и доступно офлайн.';
|
||
|
||
@override
|
||
String get location => 'Местоположение';
|
||
|
||
@override
|
||
String get fromMap => 'С карты';
|
||
|
||
@override
|
||
String get gettingLocation => 'Получение местоположения...';
|
||
|
||
@override
|
||
String get locationError => 'Ошибка геолокации';
|
||
|
||
@override
|
||
String get retry => 'Повторить';
|
||
|
||
@override
|
||
String get refreshLocation => 'Обновить местоположение';
|
||
|
||
@override
|
||
String accuracyMeters(int accuracy) {
|
||
return 'Точность: ±$accuracyм';
|
||
}
|
||
|
||
@override
|
||
String get notesOptional => 'Заметки (необязательно)';
|
||
|
||
@override
|
||
String get addAdditionalInformation =>
|
||
'Добавьте дополнительную информацию...';
|
||
|
||
@override
|
||
String lowAccuracyWarning(int accuracy) {
|
||
return 'Точность геолокации: ±$accuracyм. Этого может быть недостаточно для операций SAR.\n\nПродолжить всё равно?';
|
||
}
|
||
|
||
@override
|
||
String get loginToRoom => 'Войти в комнату';
|
||
|
||
@override
|
||
String get enterPasswordInfo =>
|
||
'Введите пароль для доступа к этой комнате. Пароль будет сохранён для дальнейшего использования.';
|
||
|
||
@override
|
||
String get password => 'Пароль';
|
||
|
||
@override
|
||
String get enterRoomPassword => 'Введите пароль комнаты';
|
||
|
||
@override
|
||
String get loggingInDots => 'Вход...';
|
||
|
||
@override
|
||
String get login => 'Войти';
|
||
|
||
@override
|
||
String failedToAddRoom(String error) {
|
||
return 'Не удалось добавить комнату на устройство: $error\n\nВозможно, комната ещё не объявила себя.\nПопробуйте подождать, пока комната не выйдет на связь.';
|
||
}
|
||
|
||
@override
|
||
String get direct => 'Напрямую';
|
||
|
||
@override
|
||
String get flood => 'Широковещательно';
|
||
|
||
@override
|
||
String get autoSend => 'Автоотправка';
|
||
|
||
@override
|
||
String get autoSendDescription => 'Отправить текущим маршрутом.';
|
||
|
||
@override
|
||
String get sendDirect => 'Прямая отправка';
|
||
|
||
@override
|
||
String get sendDirectDescription => 'Отправить напрямую этому контакту.';
|
||
|
||
@override
|
||
String get sendFlood => 'Отправка лавиной';
|
||
|
||
@override
|
||
String get sendFloodDescription => 'Отправить через все ретрансляторы.';
|
||
|
||
@override
|
||
String get loggedIn => 'Вход выполнен';
|
||
|
||
@override
|
||
String get noGpsData => 'Нет данных GPS';
|
||
|
||
@override
|
||
String get distance => 'Расстояние';
|
||
|
||
@override
|
||
String directPingTimeout(String name) {
|
||
return 'Таймаут прямого пинга — повтор $name широковещательно...';
|
||
}
|
||
|
||
@override
|
||
String pingFailed(String name) {
|
||
return 'Пинг не удался: $name — ответ не получен';
|
||
}
|
||
|
||
@override
|
||
String deleteContactConfirmation(String name) {
|
||
return 'Вы уверены, что хотите удалить \"$name\"?\n\nЭто удалит контакт как из приложения, так и с сопряжённого радиоустройства.';
|
||
}
|
||
|
||
@override
|
||
String failedToRemoveContact(String error) {
|
||
return 'Не удалось удалить контакт: $error';
|
||
}
|
||
|
||
@override
|
||
String get type => 'Тип';
|
||
|
||
@override
|
||
String get publicKey => 'Публичный ключ';
|
||
|
||
@override
|
||
String get lastSeen => 'Последнее появление';
|
||
|
||
@override
|
||
String get yes => 'Да';
|
||
|
||
@override
|
||
String get no => 'Нет';
|
||
|
||
@override
|
||
String get permissions => 'Разрешения';
|
||
|
||
@override
|
||
String get telemetry => 'Телеметрия';
|
||
|
||
@override
|
||
String get voltage => 'Напряжение';
|
||
|
||
@override
|
||
String get battery => 'Батарея';
|
||
|
||
@override
|
||
String get temperature => 'Температура';
|
||
|
||
@override
|
||
String get humidity => 'Влажность';
|
||
|
||
@override
|
||
String get pressure => 'Давление';
|
||
|
||
@override
|
||
String get gpsTelemetry => 'GPS (телеметрия)';
|
||
|
||
@override
|
||
String get reLoginToRoom => 'Войти в комнату повторно';
|
||
|
||
@override
|
||
String get heading => 'Курс';
|
||
|
||
@override
|
||
String get elevation => 'Высота';
|
||
|
||
@override
|
||
String get accuracy => 'Точность';
|
||
|
||
@override
|
||
String get bearing => 'Азимут';
|
||
|
||
@override
|
||
String get direction => 'Направление';
|
||
|
||
@override
|
||
String get filterMarkers => 'Фильтр маркеров';
|
||
|
||
@override
|
||
String get filterMarkersTooltip => 'Фильтровать маркеры';
|
||
|
||
@override
|
||
String get contactsFilter => 'Контакты';
|
||
|
||
@override
|
||
String get repeatersFilter => 'Ретрансляторы';
|
||
|
||
@override
|
||
String get sarMarkers => 'Маркеры SAR';
|
||
|
||
@override
|
||
String get foundPerson => 'Найденный человек';
|
||
|
||
@override
|
||
String get fire => 'Пожар';
|
||
|
||
@override
|
||
String get stagingArea => 'Место сбора';
|
||
|
||
@override
|
||
String get showAll => 'Показать все';
|
||
|
||
@override
|
||
String get locationUnavailable => 'Местоположение недоступно';
|
||
|
||
@override
|
||
String get ahead => 'впереди';
|
||
|
||
@override
|
||
String degreesRight(int degrees) {
|
||
return '$degrees° вправо';
|
||
}
|
||
|
||
@override
|
||
String degreesLeft(int degrees) {
|
||
return '$degrees° влево';
|
||
}
|
||
|
||
@override
|
||
String latLonFormat(String latitude, String longitude) {
|
||
return 'Ш: $latitude Д: $longitude';
|
||
}
|
||
|
||
@override
|
||
String get noContactsYet => 'Контактов пока нет';
|
||
|
||
@override
|
||
String get connectToDeviceToLoadContacts =>
|
||
'Подключите устройство для загрузки контактов';
|
||
|
||
@override
|
||
String get teamMembers => 'Члены команды';
|
||
|
||
@override
|
||
String get repeaters => 'Ретрансляторы';
|
||
|
||
@override
|
||
String get rooms => 'Комнаты';
|
||
|
||
@override
|
||
String get channels => 'Каналы';
|
||
|
||
@override
|
||
String get selectMapLayer => 'Выбрать слой карты';
|
||
|
||
@override
|
||
String get openStreetMap => 'OpenStreetMap';
|
||
|
||
@override
|
||
String get openTopoMap => 'OpenTopoMap';
|
||
|
||
@override
|
||
String get esriSatellite => 'ESRI Спутник';
|
||
|
||
@override
|
||
String get googleHybrid => 'Google Гибрид';
|
||
|
||
@override
|
||
String get googleRoadmap => 'Google Дороги';
|
||
|
||
@override
|
||
String get googleTerrain => 'Google Рельеф';
|
||
|
||
@override
|
||
String get dragToPosition => 'Перетащите для позиционирования';
|
||
|
||
@override
|
||
String get createSarMarker => 'Создать маркер SAR';
|
||
|
||
@override
|
||
String get compass => 'Компас';
|
||
|
||
@override
|
||
String get navigationAndContacts => 'Навигация и контакты';
|
||
|
||
@override
|
||
String get sarAlert => 'ТРЕВОГА SAR';
|
||
|
||
@override
|
||
String get textCopiedToClipboard => 'Текст скопирован в буфер обмена';
|
||
|
||
@override
|
||
String get cannotReplySenderMissing =>
|
||
'Не удаётся ответить: нет информации об отправителе';
|
||
|
||
@override
|
||
String get cannotReplyContactNotFound =>
|
||
'Не удаётся ответить: контакт не найден';
|
||
|
||
@override
|
||
String get copyText => 'Копировать текст';
|
||
|
||
@override
|
||
String get saveAsTemplate => 'Сохранить как шаблон';
|
||
|
||
@override
|
||
String get templateSaved => 'Шаблон успешно сохранён';
|
||
|
||
@override
|
||
String get templateAlreadyExists => 'Шаблон с таким эмодзи уже существует';
|
||
|
||
@override
|
||
String get deleteMessage => 'Удалить сообщение';
|
||
|
||
@override
|
||
String get deleteMessageConfirmation =>
|
||
'Вы уверены, что хотите удалить это сообщение?';
|
||
|
||
@override
|
||
String get shareLocation => 'Поделиться местоположением';
|
||
|
||
@override
|
||
String shareLocationText(
|
||
String markerInfo,
|
||
String lat,
|
||
String lon,
|
||
String url,
|
||
) {
|
||
return '$markerInfo\n\nКоординаты: $lat, $lon\n\nGoogle Maps: $url';
|
||
}
|
||
|
||
@override
|
||
String get sarLocationShare => 'Местоположение SAR';
|
||
|
||
@override
|
||
String get justNow => 'Только что';
|
||
|
||
@override
|
||
String minutesAgo(int minutes) {
|
||
return '$minutesм назад';
|
||
}
|
||
|
||
@override
|
||
String hoursAgo(int hours) {
|
||
return '$hoursч назад';
|
||
}
|
||
|
||
@override
|
||
String daysAgo(int days) {
|
||
return '$daysд назад';
|
||
}
|
||
|
||
@override
|
||
String secondsAgo(int seconds) {
|
||
return '$secondsс назад';
|
||
}
|
||
|
||
@override
|
||
String get sending => 'Отправка...';
|
||
|
||
@override
|
||
String get sent => 'Отправлено';
|
||
|
||
@override
|
||
String get delivered => 'Доставлено';
|
||
|
||
@override
|
||
String deliveredWithTime(int time) {
|
||
return 'Доставлено ($timeмс)';
|
||
}
|
||
|
||
@override
|
||
String get failed => 'Ошибка';
|
||
|
||
@override
|
||
String get broadcast => 'Трансляция';
|
||
|
||
@override
|
||
String deliveredToContacts(int delivered, int total) {
|
||
return 'Доставлено $delivered/$total контактам';
|
||
}
|
||
|
||
@override
|
||
String get allDelivered => 'Все доставлено';
|
||
|
||
@override
|
||
String get recipientDetails => 'Детали получателей';
|
||
|
||
@override
|
||
String get pending => 'Ожидание';
|
||
|
||
@override
|
||
String get sarMarkerFoundPerson => 'Найденный человек';
|
||
|
||
@override
|
||
String get sarMarkerFire => 'Место пожара';
|
||
|
||
@override
|
||
String get sarMarkerStagingArea => 'Место сбора';
|
||
|
||
@override
|
||
String get sarMarkerObject => 'Найденный объект';
|
||
|
||
@override
|
||
String get from => 'От';
|
||
|
||
@override
|
||
String get coordinates => 'Координаты';
|
||
|
||
@override
|
||
String get tapToViewOnMap => 'Нажмите, чтобы открыть на карте';
|
||
|
||
@override
|
||
String get radioSettings => 'Настройки радио';
|
||
|
||
@override
|
||
String get frequencyMHz => 'Частота (МГц)';
|
||
|
||
@override
|
||
String get bandwidth => 'Полоса пропускания';
|
||
|
||
@override
|
||
String get spreadingFactor => 'Коэффициент расширения';
|
||
|
||
@override
|
||
String get codingRate => 'Скорость кодирования';
|
||
|
||
@override
|
||
String get txPowerDbm => 'Мощность TX (дБм)';
|
||
|
||
@override
|
||
String maxPowerDbm(int power) {
|
||
return 'Макс: $power дБм';
|
||
}
|
||
|
||
@override
|
||
String get you => 'Вы';
|
||
|
||
@override
|
||
String exportFailed(String error) {
|
||
return 'Ошибка экспорта: $error';
|
||
}
|
||
|
||
@override
|
||
String importFailed(String error) {
|
||
return 'Ошибка импорта: $error';
|
||
}
|
||
|
||
@override
|
||
String get unknown => 'Неизвестно';
|
||
|
||
@override
|
||
String get onlineLayers => 'Онлайн-слои';
|
||
|
||
@override
|
||
String get locationTrail => 'Трек местоположения';
|
||
|
||
@override
|
||
String get showTrailOnMap => 'Показать трек на карте';
|
||
|
||
@override
|
||
String get trailVisible => 'Трек отображается на карте';
|
||
|
||
@override
|
||
String get trailHiddenRecording => 'Трек скрыт (запись продолжается)';
|
||
|
||
@override
|
||
String get duration => 'Продолжительность';
|
||
|
||
@override
|
||
String get points => 'Точки';
|
||
|
||
@override
|
||
String get clearTrail => 'Очистить трек';
|
||
|
||
@override
|
||
String get clearTrailQuestion => 'Очистить трек?';
|
||
|
||
@override
|
||
String get clearTrailConfirmation =>
|
||
'Вы уверены, что хотите очистить текущий трек? Это действие нельзя отменить.';
|
||
|
||
@override
|
||
String get noTrailRecorded => 'Трек ещё не записан';
|
||
|
||
@override
|
||
String get startTrackingToRecord =>
|
||
'Запустите отслеживание геолокации для записи трека';
|
||
|
||
@override
|
||
String get trailControls => 'Управление треком';
|
||
|
||
@override
|
||
String get model => 'Модель';
|
||
|
||
@override
|
||
String get version => 'Версия';
|
||
|
||
@override
|
||
String get maxContacts => 'Макс. контактов';
|
||
|
||
@override
|
||
String get maxChannels => 'Макс. каналов';
|
||
|
||
@override
|
||
String get publicInfo => 'Публичная информация';
|
||
|
||
@override
|
||
String get useCurrentLocation => 'Использовать текущее местоположение';
|
||
|
||
@override
|
||
String get noneUnknown => 'Нет/Неизвестно';
|
||
|
||
@override
|
||
String get chatNode => 'Узел чата';
|
||
|
||
@override
|
||
String get repeater => 'Ретранслятор';
|
||
|
||
@override
|
||
String get roomChannel => 'Комната/Канал';
|
||
|
||
@override
|
||
String typeNumber(int number) {
|
||
return 'Тип $number';
|
||
}
|
||
|
||
@override
|
||
String failedToSave(String error) {
|
||
return 'Не удалось сохранить: $error';
|
||
}
|
||
|
||
@override
|
||
String failedToGetLocation(String error) {
|
||
return 'Не удалось получить местоположение: $error';
|
||
}
|
||
|
||
@override
|
||
String get sarTemplates => 'Шаблоны SAR';
|
||
|
||
@override
|
||
String get addTemplate => 'Добавить шаблон';
|
||
|
||
@override
|
||
String get editTemplate => 'Изменить шаблон';
|
||
|
||
@override
|
||
String get deleteTemplate => 'Удалить шаблон';
|
||
|
||
@override
|
||
String get templateName => 'Название шаблона';
|
||
|
||
@override
|
||
String get templateNameHint => 'например, Найденный человек';
|
||
|
||
@override
|
||
String get templateEmoji => 'Эмодзи';
|
||
|
||
@override
|
||
String get emojiRequired => 'Требуется эмодзи';
|
||
|
||
@override
|
||
String get nameRequired => 'Требуется название';
|
||
|
||
@override
|
||
String get templateDescription => 'Описание (необязательно)';
|
||
|
||
@override
|
||
String get templateDescriptionHint => 'Добавьте дополнительный контекст...';
|
||
|
||
@override
|
||
String get templateColor => 'Цвет';
|
||
|
||
@override
|
||
String get previewFormat => 'Предпросмотр (формат сообщения SAR)';
|
||
|
||
@override
|
||
String get importFromClipboard => 'Импорт';
|
||
|
||
@override
|
||
String get exportToClipboard => 'Экспорт';
|
||
|
||
@override
|
||
String deleteTemplateConfirmation(String name) {
|
||
return 'Удалить шаблон \'$name\'?';
|
||
}
|
||
|
||
@override
|
||
String get templateAdded => 'Шаблон добавлен';
|
||
|
||
@override
|
||
String get templateUpdated => 'Шаблон обновлён';
|
||
|
||
@override
|
||
String get templateDeleted => 'Шаблон удалён';
|
||
|
||
@override
|
||
String templatesImported(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: 'Импортировано $count шаблонов',
|
||
one: 'Импортирован 1 шаблон',
|
||
zero: 'Шаблоны не импортированы',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String templatesExported(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '$count шаблонов экспортировано в буфер обмена',
|
||
one: '1 шаблон экспортирован в буфер обмена',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String get resetToDefaults => 'Сбросить до умолчаний';
|
||
|
||
@override
|
||
String get resetToDefaultsConfirmation =>
|
||
'Все пользовательские шаблоны будут удалены и восстановлены 4 шаблона по умолчанию. Продолжить?';
|
||
|
||
@override
|
||
String get reset => 'Сбросить';
|
||
|
||
@override
|
||
String get resetComplete => 'Шаблоны сброшены до умолчаний';
|
||
|
||
@override
|
||
String get noTemplates => 'Шаблоны недоступны';
|
||
|
||
@override
|
||
String get tapAddToCreate => 'Нажмите +, чтобы создать первый шаблон';
|
||
|
||
@override
|
||
String get ok => 'ОК';
|
||
|
||
@override
|
||
String get locationPermission => 'Разрешение геолокации';
|
||
|
||
@override
|
||
String get checking => 'Проверка...';
|
||
|
||
@override
|
||
String get locationPermissionGrantedAlways => 'Разрешено (всегда)';
|
||
|
||
@override
|
||
String get locationPermissionGrantedWhileInUse =>
|
||
'Разрешено (при использовании)';
|
||
|
||
@override
|
||
String get locationPermissionDeniedTapToRequest =>
|
||
'Запрещено — нажмите для запроса';
|
||
|
||
@override
|
||
String get locationPermissionPermanentlyDeniedOpenSettings =>
|
||
'Запрещено навсегда — откройте настройки';
|
||
|
||
@override
|
||
String get locationPermissionDialogContent =>
|
||
'Доступ к геолокации запрещён навсегда. Включите его в настройках устройства для GPS-трекинга и обмена местоположением.';
|
||
|
||
@override
|
||
String get openSettings => 'Открыть настройки';
|
||
|
||
@override
|
||
String get locationPermissionGranted => 'Разрешение геолокации получено!';
|
||
|
||
@override
|
||
String get locationPermissionRequiredForGps =>
|
||
'Разрешение геолокации необходимо для GPS-трекинга и обмена местоположением.';
|
||
|
||
@override
|
||
String get locationPermissionAlreadyGranted =>
|
||
'Разрешение геолокации уже предоставлено.';
|
||
|
||
@override
|
||
String get sarNavyBlue => 'SAR Тёмно-синяя';
|
||
|
||
@override
|
||
String get sarNavyBlueDescription => 'Профессиональный / оперативный режим';
|
||
|
||
@override
|
||
String get selectRecipient => 'Выбрать получателя';
|
||
|
||
@override
|
||
String get broadcastToAllNearby => 'Трансляция всем ближайшим';
|
||
|
||
@override
|
||
String get searchRecipients => 'Поиск получателей...';
|
||
|
||
@override
|
||
String get noContactsFound => 'Контакты не найдены';
|
||
|
||
@override
|
||
String get noRoomsFound => 'Комнаты не найдены';
|
||
|
||
@override
|
||
String get noRecipientsAvailable => 'Нет доступных получателей';
|
||
|
||
@override
|
||
String get noChannelsFound => 'Каналы не найдены';
|
||
|
||
@override
|
||
String get newMessage => 'Новое сообщение';
|
||
|
||
@override
|
||
String get channel => 'Канал';
|
||
|
||
@override
|
||
String get samplePoliceLead => 'Руководитель группы полиции';
|
||
|
||
@override
|
||
String get sampleDroneOperator => 'Оператор дрона';
|
||
|
||
@override
|
||
String get sampleFirefighterAlpha => 'Пожарный';
|
||
|
||
@override
|
||
String get sampleMedicCharlie => 'Медик';
|
||
|
||
@override
|
||
String get sampleCommandDelta => 'Командование';
|
||
|
||
@override
|
||
String get sampleFireEngine => 'Пожарная машина';
|
||
|
||
@override
|
||
String get sampleAirSupport => 'Авиационная поддержка';
|
||
|
||
@override
|
||
String get sampleBaseCoordinator => 'Базовый координатор';
|
||
|
||
@override
|
||
String get channelEmergency => 'Аварийный';
|
||
|
||
@override
|
||
String get channelCoordination => 'Координация';
|
||
|
||
@override
|
||
String get channelUpdates => 'Обновления';
|
||
|
||
@override
|
||
String get sampleTeamMember => 'Тестовый член команды';
|
||
|
||
@override
|
||
String get sampleScout => 'Тестовый разведчик';
|
||
|
||
@override
|
||
String get sampleBase => 'Тестовая база';
|
||
|
||
@override
|
||
String get sampleSearcher => 'Тестовый поисковик';
|
||
|
||
@override
|
||
String get sampleObjectBackpack => ' Найден рюкзак синего цвета';
|
||
|
||
@override
|
||
String get sampleObjectVehicle =>
|
||
' Брошенный автомобиль — установить владельца';
|
||
|
||
@override
|
||
String get sampleObjectCamping => ' Обнаружено туристическое снаряжение';
|
||
|
||
@override
|
||
String get sampleObjectTrailMarker => ' Указатель тропы найден вне маршрута';
|
||
|
||
@override
|
||
String get sampleMsgAllTeamsCheckIn => 'Всем группам: сообщить о готовности';
|
||
|
||
@override
|
||
String get sampleMsgWeatherUpdate => 'Погода: ясно, температура 18°C';
|
||
|
||
@override
|
||
String get sampleMsgBaseCamp => 'Базовый лагерь развёрнут у места сбора';
|
||
|
||
@override
|
||
String get sampleMsgTeamAlpha => 'Группа выдвигается в сектор 2';
|
||
|
||
@override
|
||
String get sampleMsgRadioCheck => 'Проверка связи — всем станциям ответить';
|
||
|
||
@override
|
||
String get sampleMsgWaterSupply => 'Вода доступна на контрольной точке 3';
|
||
|
||
@override
|
||
String get sampleMsgTeamBravo => 'Группа докладывает: сектор 1 чист';
|
||
|
||
@override
|
||
String get sampleMsgEtaRallyPoint => 'Прибытие на место сбора: 15 минут';
|
||
|
||
@override
|
||
String get sampleMsgSupplyDrop => 'Сброс снаряжения подтверждён на 14:00';
|
||
|
||
@override
|
||
String get sampleMsgDroneSurvey =>
|
||
'Разведка дроном завершена — ничего не обнаружено';
|
||
|
||
@override
|
||
String get sampleMsgTeamCharlie => 'Группа запрашивает подкрепление';
|
||
|
||
@override
|
||
String get sampleMsgRadioDiscipline =>
|
||
'Всем подразделениям: соблюдать радиодисциплину';
|
||
|
||
@override
|
||
String get sampleMsgUrgentMedical =>
|
||
'СРОЧНО: нужна медицинская помощь в секторе 4';
|
||
|
||
@override
|
||
String get sampleMsgAdultMale => ' Взрослый мужчина, в сознании';
|
||
|
||
@override
|
||
String get sampleMsgFireSpotted => 'Обнаружен пожар — координаты следуют';
|
||
|
||
@override
|
||
String get sampleMsgSpreadingRapidly => ' Распространяется быстро!';
|
||
|
||
@override
|
||
String get sampleMsgPriorityHelicopter =>
|
||
'ПРИОРИТЕТ: нужна поддержка вертолёта';
|
||
|
||
@override
|
||
String get sampleMsgMedicalTeamEnRoute =>
|
||
'Медицинская группа движется к вашему местоположению';
|
||
|
||
@override
|
||
String get sampleMsgEvacHelicopter =>
|
||
'Вертолёт эвакуации: прибытие через 10 минут';
|
||
|
||
@override
|
||
String get sampleMsgEmergencyResolved =>
|
||
'Чрезвычайная ситуация ликвидирована — опасности нет';
|
||
|
||
@override
|
||
String get sampleMsgEmergencyStagingArea => ' Аварийное место сбора';
|
||
|
||
@override
|
||
String get sampleMsgEmergencyServices =>
|
||
'Аварийные службы уведомлены и реагируют';
|
||
|
||
@override
|
||
String get sampleAlphaTeamLead => 'Руководитель группы';
|
||
|
||
@override
|
||
String get sampleBravoScout => 'Разведчик';
|
||
|
||
@override
|
||
String get sampleCharlieMedic => 'Медик';
|
||
|
||
@override
|
||
String get sampleDeltaNavigator => 'Навигатор';
|
||
|
||
@override
|
||
String get sampleEchoSupport => 'Поддержка';
|
||
|
||
@override
|
||
String get sampleBaseCommand => 'Базовое командование';
|
||
|
||
@override
|
||
String get sampleFieldCoordinator => 'Полевой координатор';
|
||
|
||
@override
|
||
String get sampleMedicalTeam => 'Медицинская группа';
|
||
|
||
@override
|
||
String get mapDrawing => 'Рисунок на карте';
|
||
|
||
@override
|
||
String get navigateToDrawing => 'Перейти к рисунку';
|
||
|
||
@override
|
||
String get copyCoordinates => 'Копировать координаты';
|
||
|
||
@override
|
||
String get hideFromMap => 'Скрыть с карты';
|
||
|
||
@override
|
||
String get lineDrawing => 'Линия';
|
||
|
||
@override
|
||
String get rectangleDrawing => 'Прямоугольник';
|
||
|
||
@override
|
||
String get manualCoordinates => 'Ввод координат вручную';
|
||
|
||
@override
|
||
String get enterCoordinatesManually => 'Ввести координаты вручную';
|
||
|
||
@override
|
||
String get latitudeLabel => 'Широта';
|
||
|
||
@override
|
||
String get longitudeLabel => 'Долгота';
|
||
|
||
@override
|
||
String get exampleCoordinates => 'Пример: 55.7558, 37.6173';
|
||
|
||
@override
|
||
String get shareDrawing => 'Поделиться рисунком';
|
||
|
||
@override
|
||
String get shareWithAllNearbyDevices =>
|
||
'Поделиться со всеми ближайшими устройствами';
|
||
|
||
@override
|
||
String get shareToRoom => 'Отправить в комнату';
|
||
|
||
@override
|
||
String get sendToPersistentStorage =>
|
||
'Отправить в постоянное хранилище комнаты';
|
||
|
||
@override
|
||
String get deleteDrawingConfirm =>
|
||
'Вы уверены, что хотите удалить этот рисунок?';
|
||
|
||
@override
|
||
String get drawingDeleted => 'Рисунок удалён';
|
||
|
||
@override
|
||
String yourDrawingsCount(int count) {
|
||
return 'Ваши рисунки ($count)';
|
||
}
|
||
|
||
@override
|
||
String get shared => 'Передано';
|
||
|
||
@override
|
||
String get line => 'Линия';
|
||
|
||
@override
|
||
String get rectangle => 'Прямоугольник';
|
||
|
||
@override
|
||
String get updateAvailable => 'Доступно обновление';
|
||
|
||
@override
|
||
String get currentVersion => 'Текущая';
|
||
|
||
@override
|
||
String get latestVersion => 'Последняя';
|
||
|
||
@override
|
||
String get downloadUpdate => 'Скачать';
|
||
|
||
@override
|
||
String get updateLater => 'Позже';
|
||
|
||
@override
|
||
String get cadastralParcels => 'Кадастровые участки';
|
||
|
||
@override
|
||
String get forestRoads => 'Лесные дороги';
|
||
|
||
@override
|
||
String get wmsOverlays => 'WMS-наложения';
|
||
|
||
@override
|
||
String get hikingTrails => 'Туристические маршруты';
|
||
|
||
@override
|
||
String get mainRoads => 'Главные дороги';
|
||
|
||
@override
|
||
String get houseNumbers => 'Номера домов';
|
||
|
||
@override
|
||
String get fireHazardZones => 'Пожароопасные зоны';
|
||
|
||
@override
|
||
String get historicalFires => 'Исторические пожары';
|
||
|
||
@override
|
||
String get firebreaks => 'Противопожарные просеки';
|
||
|
||
@override
|
||
String get krasFireZones => 'Пожарные зоны Краса';
|
||
|
||
@override
|
||
String get placeNames => 'Названия мест';
|
||
|
||
@override
|
||
String get municipalityBorders => 'Границы муниципалитетов';
|
||
|
||
@override
|
||
String get topographicMap => 'Топографическая карта 1:25000';
|
||
|
||
@override
|
||
String get recentMessages => 'Последние сообщения';
|
||
|
||
@override
|
||
String get addChannel => 'Добавить канал';
|
||
|
||
@override
|
||
String get channelName => 'Название канала';
|
||
|
||
@override
|
||
String get channelNameHint => 'например, Группа спасения Альфа';
|
||
|
||
@override
|
||
String get channelSecret => 'Секрет канала';
|
||
|
||
@override
|
||
String get channelSecretHint => 'Общий пароль для этого канала';
|
||
|
||
@override
|
||
String get channelSecretHelp =>
|
||
'Этот секрет необходимо передать всем членам команды, которым нужен доступ к каналу';
|
||
|
||
@override
|
||
String get channelTypesInfo =>
|
||
'Hash-каналы (#команда): секрет генерируется из названия автоматически. Одно название = один канал на всех устройствах.\n\nЗакрытые каналы: используется явный секрет. Войти могут только те, у кого есть секрет.';
|
||
|
||
@override
|
||
String get hashChannelInfo =>
|
||
'Hash-канал: секрет будет автоматически создан из названия. Все, кто использует одно и то же имя, окажутся в одном канале.';
|
||
|
||
@override
|
||
String get channelNameRequired => 'Требуется название канала';
|
||
|
||
@override
|
||
String get channelNameTooLong =>
|
||
'Название канала не должно превышать 31 символ';
|
||
|
||
@override
|
||
String get channelSecretRequired => 'Требуется секрет канала';
|
||
|
||
@override
|
||
String get channelSecretTooLong =>
|
||
'Секрет канала не должен превышать 32 символа';
|
||
|
||
@override
|
||
String get invalidAsciiCharacters => 'Разрешены только символы ASCII';
|
||
|
||
@override
|
||
String get channelCreatedSuccessfully => 'Канал успешно создан';
|
||
|
||
@override
|
||
String channelCreationFailed(String error) {
|
||
return 'Не удалось создать канал: $error';
|
||
}
|
||
|
||
@override
|
||
String get deleteChannel => 'Удалить канал';
|
||
|
||
@override
|
||
String deleteChannelConfirmation(String channelName) {
|
||
return 'Вы уверены, что хотите удалить канал \"$channelName\"? Это действие нельзя отменить.';
|
||
}
|
||
|
||
@override
|
||
String get channelDeletedSuccessfully => 'Канал успешно удалён';
|
||
|
||
@override
|
||
String channelDeletionFailed(String error) {
|
||
return 'Не удалось удалить канал: $error';
|
||
}
|
||
|
||
@override
|
||
String get createChannel => 'Создать канал';
|
||
|
||
@override
|
||
String get wizardBack => 'Назад';
|
||
|
||
@override
|
||
String get wizardSkip => 'Пропустить';
|
||
|
||
@override
|
||
String get wizardNext => 'Далее';
|
||
|
||
@override
|
||
String get wizardGetStarted => 'Начать';
|
||
|
||
@override
|
||
String get wizardWelcomeTitle => 'Добро пожаловать в MeshCore SAR';
|
||
|
||
@override
|
||
String get viewWelcomeTutorial => 'Просмотреть обучение';
|
||
|
||
@override
|
||
String get allTeamContacts => 'Все контакты команды';
|
||
|
||
@override
|
||
String directMessagesInfo(int count) {
|
||
return 'Личные сообщения с подтверждением. Отправлено $count членам команды.';
|
||
}
|
||
|
||
@override
|
||
String sarMarkerSentToContacts(int count) {
|
||
return 'Маркер SAR отправлен $count контактам';
|
||
}
|
||
|
||
@override
|
||
String get noContactsAvailable => 'Нет доступных контактов команды';
|
||
|
||
@override
|
||
String get reply => 'Ответить';
|
||
|
||
@override
|
||
String get technicalDetails => 'Технические детали';
|
||
|
||
@override
|
||
String get messageTechnicalDetails => 'Технические детали сообщения';
|
||
|
||
@override
|
||
String get linkQuality => 'Качество связи';
|
||
|
||
@override
|
||
String get delivery => 'Доставка';
|
||
|
||
@override
|
||
String get status => 'Статус';
|
||
|
||
@override
|
||
String get expectedAckTag => 'Ожидаемый тег ACK';
|
||
|
||
@override
|
||
String get roundTrip => 'Время отклика';
|
||
|
||
@override
|
||
String get retryAttempt => 'Попытка повтора';
|
||
|
||
@override
|
||
String get floodFallback => 'Широковещательный резерв';
|
||
|
||
@override
|
||
String get identity => 'Идентификатор';
|
||
|
||
@override
|
||
String get messageId => 'ID сообщения';
|
||
|
||
@override
|
||
String get sender => 'Отправитель';
|
||
|
||
@override
|
||
String get senderKey => 'Ключ отправителя';
|
||
|
||
@override
|
||
String get recipient => 'Получатель';
|
||
|
||
@override
|
||
String get recipientKey => 'Ключ получателя';
|
||
|
||
@override
|
||
String get voice => 'Голос';
|
||
|
||
@override
|
||
String get voiceId => 'ID голоса';
|
||
|
||
@override
|
||
String get envelope => 'Конверт';
|
||
|
||
@override
|
||
String get sessionProgress => 'Прогресс сессии';
|
||
|
||
@override
|
||
String get complete => 'Завершено';
|
||
|
||
@override
|
||
String get rawDump => 'Необработанные данные';
|
||
|
||
@override
|
||
String get cannotRetryMissingRecipient =>
|
||
'Повтор невозможен: нет информации о получателе';
|
||
|
||
@override
|
||
String get voiceUnavailable => 'Голос сейчас недоступен';
|
||
|
||
@override
|
||
String get requestingVoice => 'Запрос голоса';
|
||
|
||
@override
|
||
String get device => 'устройство';
|
||
|
||
@override
|
||
String get change => 'Изменить';
|
||
|
||
@override
|
||
String get wizardOverviewDescription =>
|
||
'Это приложение объединяет сообщения MeshCore, полевые обновления SAR, карты и инструменты устройства в одном месте.';
|
||
|
||
@override
|
||
String get wizardOverviewFeature1 =>
|
||
'Отправляйте личные сообщения, сообщения комнат и сообщения каналов из основной вкладки «Сообщения».';
|
||
|
||
@override
|
||
String get wizardOverviewFeature2 =>
|
||
'Делитесь SAR-маркерами, рисунками на карте, голосовыми клипами и изображениями через mesh-сеть.';
|
||
|
||
@override
|
||
String get wizardOverviewFeature3 =>
|
||
'Подключайтесь по BLE или TCP, а затем управляйте сопутствующей радиостанцией прямо из приложения.';
|
||
|
||
@override
|
||
String get wizardMessagingTitle => 'Сообщения и полевые отчёты';
|
||
|
||
@override
|
||
String get wizardMessagingDescription =>
|
||
'Здесь сообщения это больше, чем просто текст. Приложение уже поддерживает несколько видов операционных данных и сценариев передачи.';
|
||
|
||
@override
|
||
String get wizardMessagingFeature1 =>
|
||
'Отправляйте личные сообщения, сообщения комнат и трафик каналов из одного редактора.';
|
||
|
||
@override
|
||
String get wizardMessagingFeature2 =>
|
||
'Создавайте обновления SAR и повторно используемые шаблоны SAR для типовых полевых отчётов.';
|
||
|
||
@override
|
||
String get wizardMessagingFeature3 =>
|
||
'Передавайте голосовые сессии и изображения с индикатором прогресса и оценкой эфирного времени в интерфейсе.';
|
||
|
||
@override
|
||
String get wizardConnectDeviceTitle => 'Подключить устройство';
|
||
|
||
@override
|
||
String get wizardConnectDeviceDescription =>
|
||
'Подключите свою радиостанцию MeshCore, выберите имя и примените радиопрофиль перед продолжением.';
|
||
|
||
@override
|
||
String get wizardSetupBadge => 'Настройка';
|
||
|
||
@override
|
||
String get wizardOverviewBadge => 'Обзор';
|
||
|
||
@override
|
||
String wizardConnectedToDevice(String deviceName) {
|
||
return 'Подключено к $deviceName';
|
||
}
|
||
|
||
@override
|
||
String get wizardNoDeviceConnected => 'Устройство ещё не подключено';
|
||
|
||
@override
|
||
String get wizardSkipForNow => 'Пропустить пока';
|
||
|
||
@override
|
||
String get wizardDeviceNameLabel => 'Имя устройства';
|
||
|
||
@override
|
||
String get wizardDeviceNameHelp =>
|
||
'Это имя транслируется другим пользователям MeshCore.';
|
||
|
||
@override
|
||
String get wizardConfigRegionLabel => 'Регион конфигурации';
|
||
|
||
@override
|
||
String get wizardConfigRegionHelp =>
|
||
'Используется полный официальный список профилей MeshCore. По умолчанию выбран EU/UK (Narrow).';
|
||
|
||
@override
|
||
String get wizardPresetNote1 =>
|
||
'Убедитесь, что выбранный профиль соответствует местным радиоправилам.';
|
||
|
||
@override
|
||
String get wizardPresetNote2 =>
|
||
'Список соответствует официальному потоку профилей инструмента MeshCore config.';
|
||
|
||
@override
|
||
String get wizardPresetNote3 =>
|
||
'Для онбординга по умолчанию остаётся выбран EU/UK (Narrow).';
|
||
|
||
@override
|
||
String get wizardSaving => 'Сохранение...';
|
||
|
||
@override
|
||
String get wizardSaveAndContinue => 'Сохранить и продолжить';
|
||
|
||
@override
|
||
String get wizardEnterDeviceName =>
|
||
'Введите имя устройства перед продолжением.';
|
||
|
||
@override
|
||
String wizardDeviceSetupSaved(String deviceName, String presetName) {
|
||
return 'Сохранено: $deviceName, профиль $presetName.';
|
||
}
|
||
|
||
@override
|
||
String get wizardNetworkTitle => 'Контакты, комнаты и ретрансляторы';
|
||
|
||
@override
|
||
String get wizardNetworkDescription =>
|
||
'Вкладка «Контакты» организует сеть, которую вы обнаруживаете, и маршруты, которые вы узнаёте со временем.';
|
||
|
||
@override
|
||
String get wizardNetworkFeature1 =>
|
||
'Просматривайте участников команды, ретрансляторы, комнаты, каналы и ожидающие объявления в одном списке.';
|
||
|
||
@override
|
||
String get wizardNetworkFeature2 =>
|
||
'Используйте smart ping, вход в комнаты, изученные пути и инструменты сброса маршрутов, когда связь становится нестабильной.';
|
||
|
||
@override
|
||
String get wizardNetworkFeature3 =>
|
||
'Создавайте каналы и управляйте сетевыми назначениями, не покидая приложение.';
|
||
|
||
@override
|
||
String get wizardMapOpsTitle => 'Карта, следы и общая геометрия';
|
||
|
||
@override
|
||
String get wizardMapOpsDescription =>
|
||
'Карта приложения напрямую связана с сообщениями, отслеживанием и SAR-слоями, а не является отдельным просмотрщиком.';
|
||
|
||
@override
|
||
String get wizardMapOpsFeature1 =>
|
||
'Отслеживайте свою позицию, местоположение команды и траектории движения на карте.';
|
||
|
||
@override
|
||
String get wizardMapOpsFeature2 =>
|
||
'Открывайте рисунки из сообщений, просматривайте их прямо в интерфейсе и удаляйте с карты при необходимости.';
|
||
|
||
@override
|
||
String get wizardMapOpsFeature3 =>
|
||
'Используйте карты ретрансляторов и общие слои, чтобы понимать покрытие сети в поле.';
|
||
|
||
@override
|
||
String get wizardToolsTitle => 'Инструменты помимо сообщений';
|
||
|
||
@override
|
||
String get wizardToolsDescription =>
|
||
'Здесь есть больше, чем четыре основные вкладки. Приложение также включает настройку, диагностику и необязательные сценарии датчиков.';
|
||
|
||
@override
|
||
String get wizardToolsFeature1 =>
|
||
'Откройте настройки устройства, чтобы изменить параметры радио, телеметрию, мощность TX и сведения о сопутствующем устройстве.';
|
||
|
||
@override
|
||
String get wizardToolsFeature2 =>
|
||
'Включите вкладку «Датчики», если нужны панели наблюдаемых датчиков и быстрые действия обновления.';
|
||
|
||
@override
|
||
String get wizardToolsFeature3 =>
|
||
'Используйте журналы пакетов, сканирование спектра и диагностику разработчика для устранения проблем mesh-сети.';
|
||
|
||
@override
|
||
String get postConnectDiscoveryTitle => 'Обнаружить ретрансляторы сейчас?';
|
||
|
||
@override
|
||
String get postConnectDiscoveryDescription =>
|
||
'Запустите обнаружение ретрансляторов сразу после подключения, чтобы увидеть ближайшие узлы MeshCore и быстрее добавить их в свою сеть.';
|
||
|
||
@override
|
||
String get contactInSensors => 'В датчиках';
|
||
|
||
@override
|
||
String get contactAddToSensors => 'Добавить в датчики';
|
||
|
||
@override
|
||
String get contactSetPath => 'Задать путь';
|
||
|
||
@override
|
||
String contactAddedToSensors(String contactName) {
|
||
return '$contactName добавлен в Датчики';
|
||
}
|
||
|
||
@override
|
||
String contactFailedToClearRoute(String error) {
|
||
return 'Не удалось очистить маршрут: $error';
|
||
}
|
||
|
||
@override
|
||
String get contactRouteCleared => 'Маршрут очищен';
|
||
|
||
@override
|
||
String contactRouteSet(String route) {
|
||
return 'Маршрут задан: $route';
|
||
}
|
||
|
||
@override
|
||
String contactFailedToSetRoute(String error) {
|
||
return 'Не удалось задать маршрут: $error';
|
||
}
|
||
|
||
@override
|
||
String get rssi => 'RSSI';
|
||
|
||
@override
|
||
String get snr => 'SNR';
|
||
|
||
@override
|
||
String get ackTimeout => 'Таймаут ACK';
|
||
|
||
@override
|
||
String get opcode => 'Опкод';
|
||
|
||
@override
|
||
String get payload => 'Полезная нагрузка';
|
||
|
||
@override
|
||
String get hops => 'Хопы';
|
||
|
||
@override
|
||
String get hashSize => 'Размер хеша';
|
||
|
||
@override
|
||
String get pathBytes => 'Байты пути';
|
||
|
||
@override
|
||
String get selectedPath => 'Выбранный путь';
|
||
|
||
@override
|
||
String get estimatedTx => 'Ожидаемая передача';
|
||
|
||
@override
|
||
String get senderToReceipt => 'От отправителя до получения';
|
||
|
||
@override
|
||
String get receivedCopies => 'Полученные копии';
|
||
|
||
@override
|
||
String get retryCause => 'Причина повтора';
|
||
|
||
@override
|
||
String get retryMode => 'Режим повтора';
|
||
|
||
@override
|
||
String get retryResult => 'Результат повтора';
|
||
|
||
@override
|
||
String get lastRetry => 'Последний повтор';
|
||
|
||
@override
|
||
String get rxPackets => 'RX-пакеты';
|
||
|
||
@override
|
||
String get mesh => 'Mesh';
|
||
|
||
@override
|
||
String get rate => 'Скорость';
|
||
|
||
@override
|
||
String get window => 'Окно';
|
||
|
||
@override
|
||
String get posttxDelay => 'Задержка после передачи';
|
||
|
||
@override
|
||
String get bandpass => 'Полосовой';
|
||
|
||
@override
|
||
String get bandpassFilterVoice => 'Полосовой фильтр голоса';
|
||
|
||
@override
|
||
String get active => 'Активно';
|
||
|
||
@override
|
||
String get addContact => 'Добавить контакт';
|
||
|
||
@override
|
||
String get all => 'Все';
|
||
|
||
@override
|
||
String get clearAllLabel => 'Очистить все';
|
||
|
||
@override
|
||
String get clearFilters => 'Очистить фильтры';
|
||
|
||
@override
|
||
String get clearRoute => 'Очистить маршрут';
|
||
|
||
@override
|
||
String get clearMessages => 'Очистить сообщения';
|
||
|
||
@override
|
||
String get clearScale => 'Очистить масштаб';
|
||
|
||
@override
|
||
String get clearDiscoveries => 'Очистить обнаружения';
|
||
|
||
@override
|
||
String get clearOnlineTraceDatabase => 'Очистить базу трассировок';
|
||
|
||
@override
|
||
String get clearAllChannels => 'Очистить все каналы';
|
||
|
||
@override
|
||
String get clearAllContacts => 'Очистить все контакты';
|
||
|
||
@override
|
||
String get clearChannels => 'Очистить каналы';
|
||
|
||
@override
|
||
String get clearContacts => 'Очистить контакты';
|
||
|
||
@override
|
||
String get clearPathOnMaxRetry => 'Очистить путь при макс. повторе';
|
||
|
||
@override
|
||
String get create => 'Создать';
|
||
|
||
@override
|
||
String get custom => 'Пользовательский';
|
||
|
||
@override
|
||
String get defaultValue => 'По умолчанию';
|
||
|
||
@override
|
||
String get duplicate => 'Дублировать';
|
||
|
||
@override
|
||
String get editName => 'Редактировать имя';
|
||
|
||
@override
|
||
String get open => 'Открыть';
|
||
|
||
@override
|
||
String get paste => 'Вставить';
|
||
|
||
@override
|
||
String get preview => 'Предпросмотр';
|
||
|
||
@override
|
||
String get remove => 'Удалить';
|
||
|
||
@override
|
||
String get rename => 'Переименовать';
|
||
|
||
@override
|
||
String get resolveAll => 'Разрешить все';
|
||
|
||
@override
|
||
String get send => 'Отправить';
|
||
|
||
@override
|
||
String get sendAnyway => 'Отправить все равно';
|
||
|
||
@override
|
||
String get share => 'Поделиться';
|
||
|
||
@override
|
||
String get trace => 'Трассировка';
|
||
|
||
@override
|
||
String get discovery => 'Обнаружение';
|
||
|
||
@override
|
||
String get discoverRepeaters => 'Обнаружить повторители';
|
||
|
||
@override
|
||
String get discoverSensors => 'Обнаружить датчики';
|
||
|
||
@override
|
||
String get repeaterDiscoverySent => 'Обнаружение повторителей отправлено';
|
||
|
||
@override
|
||
String get sensorDiscoverySent => 'Обнаружение датчиков отправлено';
|
||
|
||
@override
|
||
String get clearedPendingDiscoveries => 'Ожидающие обнаружения очищены.';
|
||
|
||
@override
|
||
String get autoDiscovery => 'Автоматическое обнаружение';
|
||
|
||
@override
|
||
String get enableAutomaticAdding => 'Включить автоматическое добавление';
|
||
|
||
@override
|
||
String get autoaddRepeaters => 'Автодобавление повторителей';
|
||
|
||
@override
|
||
String get autoaddRoomServers => 'Автодобавление серверов комнат';
|
||
|
||
@override
|
||
String get autoaddSensors => 'Автодобавление датчиков';
|
||
|
||
@override
|
||
String get autoaddUsers => 'Автодобавление пользователей';
|
||
|
||
@override
|
||
String get overwriteOldestWhenFull => 'Перезаписать старейшие при заполнении';
|
||
|
||
@override
|
||
String get storage => 'Хранилище';
|
||
|
||
@override
|
||
String get dangerZone => 'Опасная зона';
|
||
|
||
@override
|
||
String get profiles => 'Профили';
|
||
|
||
@override
|
||
String get favourites => 'Избранное';
|
||
|
||
@override
|
||
String get sensors => 'Датчики';
|
||
|
||
@override
|
||
String get others => 'Другие';
|
||
|
||
@override
|
||
String get gpsModule => 'Модуль GPS';
|
||
|
||
@override
|
||
String get liveTraffic => 'Живой трафик';
|
||
|
||
@override
|
||
String get repeatersMap => 'Карта повторителей';
|
||
|
||
@override
|
||
String get blePacketLogs => 'Журналы BLE-пакетов';
|
||
|
||
@override
|
||
String get onlineTraceDatabase => 'База трассировок';
|
||
|
||
@override
|
||
String get routePathByteSize => 'Размер пути в байтах';
|
||
|
||
@override
|
||
String get messageNotifications => 'Уведомления о сообщениях';
|
||
|
||
@override
|
||
String get sarAlerts => 'SAR-оповещения';
|
||
|
||
@override
|
||
String get discoveryNotifications => 'Уведомления об обнаружении';
|
||
|
||
@override
|
||
String get updateNotifications => 'Уведомления об обновлениях';
|
||
|
||
@override
|
||
String get muteWhileAppIsOpen => 'Без звука при открытом приложении';
|
||
|
||
@override
|
||
String get disableContacts => 'Отключить контакты';
|
||
|
||
@override
|
||
String get enableSensorsTab => 'Включить вкладку Датчики';
|
||
|
||
@override
|
||
String get enableProfiles => 'Включить профили';
|
||
|
||
@override
|
||
String get nearestRepeaterFallback => 'Ближайший повторитель как резерв';
|
||
|
||
@override
|
||
String get deleteAllStoredMessageHistory => 'Удалить всю историю сообщений';
|
||
|
||
@override
|
||
String get messageFontSize => 'Размер шрифта сообщений';
|
||
|
||
@override
|
||
String get rotateMapWithHeading => 'Вращать карту по направлению';
|
||
|
||
@override
|
||
String get showMapDebugInfo => 'Показать отладочную информацию карты';
|
||
|
||
@override
|
||
String get openMapInFullscreen => 'Открыть карту на весь экран';
|
||
|
||
@override
|
||
String get showSarMarkersLabel => 'Показать SAR-маркеры';
|
||
|
||
@override
|
||
String get hideRepeatersOnMap => 'Скрыть повторители на карте';
|
||
|
||
@override
|
||
String get setMapScale => 'Установить масштаб карты';
|
||
|
||
@override
|
||
String get customMapScaleSaved => 'Пользовательский масштаб карты сохранён';
|
||
|
||
@override
|
||
String get voiceBitrate => 'Битрейт голоса';
|
||
|
||
@override
|
||
String get voiceCompressor => 'Компрессор голоса';
|
||
|
||
@override
|
||
String get voiceLimiter => 'Лимитер голоса';
|
||
|
||
@override
|
||
String get micAutoGain => 'Автоусиление микрофона';
|
||
|
||
@override
|
||
String get echoCancellation => 'Подавление эха';
|
||
|
||
@override
|
||
String get noiseSuppression => 'Подавление шума';
|
||
|
||
@override
|
||
String get trimSilenceInVoiceMessages =>
|
||
'Обрезать тишину в голосовых сообщениях';
|
||
|
||
@override
|
||
String get compressor => 'Компрессор';
|
||
|
||
@override
|
||
String get limiter => 'Лимитер';
|
||
|
||
@override
|
||
String get autoGain => 'Автоусиление';
|
||
|
||
@override
|
||
String get echoCancel => 'Эхо';
|
||
|
||
@override
|
||
String get noiseSuppress => 'Шум';
|
||
|
||
@override
|
||
String get silenceTrim => 'Тишина';
|
||
|
||
@override
|
||
String get maxImageSize => 'Максимальный размер изображения';
|
||
|
||
@override
|
||
String get imageCompression => 'Сжатие изображения';
|
||
|
||
@override
|
||
String get grayscale => 'Оттенки серого';
|
||
|
||
@override
|
||
String get ultraMode => 'Режим ультра';
|
||
|
||
@override
|
||
String get fastPrivateGpsUpdates => 'Быстрые приватные GPS-обновления';
|
||
|
||
@override
|
||
String get movementThreshold => 'Порог движения';
|
||
|
||
@override
|
||
String get fastGpsMovementThreshold => 'Порог движения быстрого GPS';
|
||
|
||
@override
|
||
String get fastGpsActiveuseInterval =>
|
||
'Интервал активного использования быстрого GPS';
|
||
|
||
@override
|
||
String get activeuseUpdateInterval =>
|
||
'Интервал обновления при активном использовании';
|
||
|
||
@override
|
||
String get repeatNearbyTraffic => 'Повторять ближний трафик';
|
||
|
||
@override
|
||
String get relayThroughRepeatersAcrossTheMesh =>
|
||
'Ретранслировать через повторители по сети';
|
||
|
||
@override
|
||
String get nearbyOnlyWithoutRepeaterFlooding =>
|
||
'Только рядом, без flood повторителей';
|
||
|
||
@override
|
||
String get multihop => 'Многохоповый';
|
||
|
||
@override
|
||
String get createProfile => 'Создать профиль';
|
||
|
||
@override
|
||
String get renameProfile => 'Переименовать профиль';
|
||
|
||
@override
|
||
String get newProfile => 'Новый профиль';
|
||
|
||
@override
|
||
String get manageProfiles => 'Управление профилями';
|
||
|
||
@override
|
||
String get enableProfilesToStartManagingThem =>
|
||
'Включите профили, чтобы начать управлять ими.';
|
||
|
||
@override
|
||
String get openMessage => 'Открыть сообщение';
|
||
|
||
@override
|
||
String get jumpToTheRelatedSarMessage => 'Перейти к связанному SAR-сообщению';
|
||
|
||
@override
|
||
String get removeSarMarker => 'Удалить SAR-маркер';
|
||
|
||
@override
|
||
String get pleaseSelectADestinationToSendSarMarker =>
|
||
'Выберите назначение для отправки SAR-маркера';
|
||
|
||
@override
|
||
String get sarMarkerBroadcastToPublicChannel =>
|
||
'SAR-маркер отправлен в публичный канал';
|
||
|
||
@override
|
||
String get sarMarkerSentToRoom => 'SAR-маркер отправлен в комнату';
|
||
|
||
@override
|
||
String get loadFromGallery => 'Загрузить из галереи';
|
||
|
||
@override
|
||
String get replaceImage => 'Заменить изображение';
|
||
|
||
@override
|
||
String get selectFromGallery => 'Выбрать из галереи';
|
||
|
||
@override
|
||
String get team => 'Команда';
|
||
|
||
@override
|
||
String get found => 'Найдено';
|
||
|
||
@override
|
||
String get staging => 'Место сбора';
|
||
|
||
@override
|
||
String get object => 'Объект';
|
||
|
||
@override
|
||
String get quiet => 'Тихо';
|
||
|
||
@override
|
||
String get busy => 'Занято';
|
||
|
||
@override
|
||
String get searchMessages => 'Поиск сообщений';
|
||
|
||
@override
|
||
String get sendImageFromGallery => 'Отправить изображение из галереи';
|
||
|
||
@override
|
||
String get takePhoto => 'Сделать фото';
|
||
|
||
@override
|
||
String get allMessages => 'Все сообщения';
|
||
|
||
@override
|
||
String get sendToPublicChannel => 'Отправить в публичный канал?';
|
||
|
||
@override
|
||
String get selectMarkerTypeAndDestination =>
|
||
'Выберите тип маркера и назначение';
|
||
|
||
@override
|
||
String get noDestinationsAvailableLabel => 'Нет доступных назначений';
|
||
|
||
@override
|
||
String get image => 'Изображение';
|
||
|
||
@override
|
||
String get format => 'Формат';
|
||
|
||
@override
|
||
String get dimensions => 'Размеры';
|
||
|
||
@override
|
||
String get segments => 'Сегменты';
|
||
|
||
@override
|
||
String get transfers => 'Передачи';
|
||
|
||
@override
|
||
String get downloadedBy => 'Загружено';
|
||
|
||
@override
|
||
String get saveDiscoverySettings => 'Сохранить настройки обнаружения';
|
||
|
||
@override
|
||
String get savePublicInfo => 'Сохранить публичную информацию';
|
||
|
||
@override
|
||
String get saveRadioSettings => 'Сохранить настройки радио';
|
||
|
||
@override
|
||
String get savePath => 'Сохранить путь';
|
||
|
||
@override
|
||
String get wipeDeviceData => 'Стереть данные устройства';
|
||
|
||
@override
|
||
String get wipeDevice => 'Стереть устройство';
|
||
|
||
@override
|
||
String get destructiveDeviceActions => 'Деструктивные действия устройства.';
|
||
|
||
@override
|
||
String get chooseAPresetOrFinetuneCustomRadioSettings =>
|
||
'Выберите пресет или настройте радио вручную.';
|
||
|
||
@override
|
||
String get used => 'Использовано';
|
||
|
||
@override
|
||
String get total => 'Всего';
|
||
|
||
@override
|
||
String get renameValue => 'Переименовать значение';
|
||
|
||
@override
|
||
String get customizeFields => 'Настроить поля';
|
||
|
||
@override
|
||
String get livePreview => 'Предпросмотр в реальном времени';
|
||
|
||
@override
|
||
String get refreshSchedule => 'Расписание обновления';
|
||
|
||
@override
|
||
String get noResponse => 'Нет ответа';
|
||
|
||
@override
|
||
String get refreshing => 'Обновление';
|
||
|
||
@override
|
||
String get unavailable => 'Недоступно';
|
||
|
||
@override
|
||
String get pickARelayOrNodeToWatchInSensors =>
|
||
'Выберите реле или узел для наблюдения.';
|
||
|
||
@override
|
||
String get publicKeyLabel => 'Публичный ключ';
|
||
|
||
@override
|
||
String get alreadyInContacts => 'Уже в контактах';
|
||
|
||
@override
|
||
String get connectToADeviceBeforeAddingContacts =>
|
||
'Подключитесь к устройству перед добавлением контактов';
|
||
|
||
@override
|
||
String get fromContacts => 'Из контактов';
|
||
|
||
@override
|
||
String get onlineOnly => 'Только онлайн';
|
||
|
||
@override
|
||
String get inBoth => 'В обоих';
|
||
|
||
@override
|
||
String get source => 'Источник';
|
||
|
||
@override
|
||
String get allMessagesCleared => 'Все сообщения очищены';
|
||
|
||
@override
|
||
String get onlineTraceDatabaseCleared => 'База трассировок очищена';
|
||
|
||
@override
|
||
String get packetLogsCleared => 'Журналы пакетов очищены';
|
||
|
||
@override
|
||
String get hexDataCopiedToClipboard => 'Hex-данные скопированы в буфер';
|
||
|
||
@override
|
||
String get developerModeEnabled => 'Режим разработчика включён';
|
||
|
||
@override
|
||
String get developerModeDisabled => 'Режим разработчика отключён';
|
||
|
||
@override
|
||
String get clipboardIsEmpty => 'Буфер обмена пуст';
|
||
|
||
@override
|
||
String get contactImported => 'Контакт импортирован';
|
||
|
||
@override
|
||
String get contactLinkCopiedToClipboard =>
|
||
'Ссылка на контакт скопирована в буфер';
|
||
|
||
@override
|
||
String get failedToExportContact => 'Не удалось экспортировать контакт';
|
||
|
||
@override
|
||
String get noLogsToExport => 'Нет журналов для экспорта';
|
||
|
||
@override
|
||
String get exportAsCsv => 'Экспортировать как CSV';
|
||
|
||
@override
|
||
String get exportAsText => 'Экспортировать как текст';
|
||
|
||
@override
|
||
String get receivedRfc3339 => 'Получено (RFC3339)';
|
||
|
||
@override
|
||
String get buildTime => 'Время сборки';
|
||
|
||
@override
|
||
String get downloadUrlNotAvailable => 'URL загрузки недоступен';
|
||
|
||
@override
|
||
String get cannotOpenDownloadUrl => 'Не удаётся открыть URL загрузки';
|
||
|
||
@override
|
||
String get updateCheckIsOnlyAvailableOnAndroid =>
|
||
'Проверка обновлений доступна только на Android';
|
||
|
||
@override
|
||
String get youAreRunningTheLatestVersion => 'Вы используете последнюю версию';
|
||
|
||
@override
|
||
String get updateAvailableButDownloadUrlNotFound =>
|
||
'Обновление доступно, но URL загрузки не найден';
|
||
|
||
@override
|
||
String get startTictactoe => 'Начать Tic-Tac-Toe';
|
||
|
||
@override
|
||
String get tictactoeUnavailable => 'Tic-Tac-Toe недоступно';
|
||
|
||
@override
|
||
String get tictactoeOpponentUnknown => 'Tic-Tac-Toe: противник неизвестен';
|
||
|
||
@override
|
||
String get tictactoeWaitingForStart => 'Tic-Tac-Toe: ожидание начала';
|
||
|
||
@override
|
||
String get acceptsShareLinks => 'Принимает общие ссылки';
|
||
|
||
@override
|
||
String get supportsRawHex => 'Поддерживает raw hex';
|
||
|
||
@override
|
||
String get clipboardfriendly => 'Удобно для буфера';
|
||
|
||
@override
|
||
String get captured => 'Захвачено';
|
||
|
||
@override
|
||
String get size => 'Размер';
|
||
|
||
@override
|
||
String get noCustomChannelsToClear =>
|
||
'Нет пользовательских каналов для очистки.';
|
||
|
||
@override
|
||
String get noDeviceContactsToClear => 'Нет контактов устройства для очистки.';
|
||
|
||
@override
|
||
String get aToZ => 'А-Я';
|
||
|
||
@override
|
||
String get add => 'Добавить';
|
||
|
||
@override
|
||
String get addAdditionalDetails => 'Добавить дополнительные сведения';
|
||
|
||
@override
|
||
String get addPeer => 'Добавить узел';
|
||
|
||
@override
|
||
String get addPeerManually => 'Добавить узел вручную';
|
||
|
||
@override
|
||
String addedToContacts(String name) {
|
||
return '$name добавлен в контакты';
|
||
}
|
||
|
||
@override
|
||
String addedToSensors(String name) {
|
||
return '$name добавлен в Датчики';
|
||
}
|
||
|
||
@override
|
||
String get allowAll => 'Разрешить все';
|
||
|
||
@override
|
||
String get anonymousRxStats => 'Анонимная статистика RX';
|
||
|
||
@override
|
||
String get appearance => 'Внешний вид';
|
||
|
||
@override
|
||
String get ascii => 'ASCII';
|
||
|
||
@override
|
||
String get baseTelemetry => 'Базовая телеметрия';
|
||
|
||
@override
|
||
String get blePin => 'BLE PIN';
|
||
|
||
@override
|
||
String get buzzerAlerts => 'Звуковые оповещения';
|
||
|
||
@override
|
||
String get cancelImageReceive => 'Отменить получение изображения';
|
||
|
||
@override
|
||
String get choose => 'Выбрать';
|
||
|
||
@override
|
||
String get chooseWhichTabsAndContactSectionsToShow =>
|
||
'Выберите отображаемые вкладки и разделы контактов';
|
||
|
||
@override
|
||
String get clearCache => 'Очистить кэш';
|
||
|
||
@override
|
||
String get clearHistory => 'Очистить историю';
|
||
|
||
@override
|
||
String get clearLiveView => 'Очистить режим реального времени';
|
||
|
||
@override
|
||
String get clearLogs => 'Очистить журналы';
|
||
|
||
@override
|
||
String get clearOfflineCache => 'Очистить офлайн-кэш?';
|
||
|
||
@override
|
||
String get clearOverlay => 'Очистить наложение';
|
||
|
||
@override
|
||
String get clearRouteOnlyAfterAllRetriesFail =>
|
||
'Очищать маршрут только после всех неудачных повторов';
|
||
|
||
@override
|
||
String get codecBitrateAndAudioProcessing =>
|
||
'Кодек, битрейт и обработка звука';
|
||
|
||
@override
|
||
String get connectByIpAddress => 'Подключиться по IP-адресу';
|
||
|
||
@override
|
||
String get controlWhichAlertsYouReceive =>
|
||
'Управление получаемыми оповещениями';
|
||
|
||
@override
|
||
String get copyFullHex => 'Копировать полный Hex';
|
||
|
||
@override
|
||
String get copyRawResponse => 'Копировать необработанный ответ';
|
||
|
||
@override
|
||
String get couldNotLoadMetHistory => 'Не удалось загрузить историю MET';
|
||
|
||
@override
|
||
String customizeSensor(String name) {
|
||
return 'Настроить $name';
|
||
}
|
||
|
||
@override
|
||
String get data => 'Данные';
|
||
|
||
@override
|
||
String get deleteGroup => 'Удалить группу';
|
||
|
||
@override
|
||
String deleteStyleConfirm(String name) {
|
||
return 'Удалить $name?';
|
||
}
|
||
|
||
@override
|
||
String deleteThisDrawing(String type) {
|
||
return 'Удалить этот $type?';
|
||
}
|
||
|
||
@override
|
||
String get deny => 'Запретить';
|
||
|
||
@override
|
||
String get deviceInfo => 'Информация об устройстве';
|
||
|
||
@override
|
||
String get deviceSettings => 'Настройки устройства';
|
||
|
||
@override
|
||
String get deviceTimeSynced =>
|
||
'Время устройства синхронизировано с телефоном.';
|
||
|
||
@override
|
||
String get disableFastGpsPublishing => 'Отключить быструю публикацию GPS';
|
||
|
||
@override
|
||
String get displayMarkersAndTraceDatabase =>
|
||
'Отображение, маркеры и база трассировок';
|
||
|
||
@override
|
||
String get download => 'Скачать';
|
||
|
||
@override
|
||
String get environmentalTelemetry => 'Телеметрия окружающей среды';
|
||
|
||
@override
|
||
String errorCheckingForUpdates(String error) {
|
||
return 'Ошибка проверки обновлений: $error';
|
||
}
|
||
|
||
@override
|
||
String errorGeneric(String error) {
|
||
return 'Ошибка: $error';
|
||
}
|
||
|
||
@override
|
||
String errorOpeningDownload(String error) {
|
||
return 'Ошибка открытия загрузки: $error';
|
||
}
|
||
|
||
@override
|
||
String get exportLogs => 'Экспортировать журналы';
|
||
|
||
@override
|
||
String get extraAggressiveAvifCompression => 'Сверхагрессивное сжатие AVIF';
|
||
|
||
@override
|
||
String failedToAddContact(String error) {
|
||
return 'Не удалось добавить контакт: $error';
|
||
}
|
||
|
||
@override
|
||
String failedToAddName(String name, String error) {
|
||
return 'Не удалось добавить $name: $error';
|
||
}
|
||
|
||
@override
|
||
String failedToClearChannels(String error) {
|
||
return 'Не удалось очистить каналы: $error';
|
||
}
|
||
|
||
@override
|
||
String failedToClearContacts(String error) {
|
||
return 'Не удалось очистить контакты: $error';
|
||
}
|
||
|
||
@override
|
||
String get failedToConnectViaSerial =>
|
||
'Не удалось подключиться через последовательный порт';
|
||
|
||
@override
|
||
String failedToLoadPreviewImage(String error) {
|
||
return 'Не удалось загрузить изображение предпросмотра: $error';
|
||
}
|
||
|
||
@override
|
||
String failedToLoadTrace(String error) {
|
||
return 'Не удалось загрузить трассировку: $error';
|
||
}
|
||
|
||
@override
|
||
String failedToSendSarMarker(String error) {
|
||
return 'Не удалось отправить маркер SAR: $error';
|
||
}
|
||
|
||
@override
|
||
String failedToSetBuzzerMode(String error) {
|
||
return 'Не удалось установить режим зуммера: $error';
|
||
}
|
||
|
||
@override
|
||
String failedToSetGpsMode(String error) {
|
||
return 'Не удалось установить режим GPS: $error';
|
||
}
|
||
|
||
@override
|
||
String failedToSyncDeviceTime(String error) {
|
||
return 'Не удалось синхронизировать время устройства: $error';
|
||
}
|
||
|
||
@override
|
||
String failedToWipeDeviceData(String error) {
|
||
return 'Не удалось стереть данные устройства: $error';
|
||
}
|
||
|
||
@override
|
||
String get fastGpsTargetChannel => 'Целевой канал быстрого GPS';
|
||
|
||
@override
|
||
String get fastUpdatesThresholdsAndPermissions =>
|
||
'Быстрые обновления, пороги и разрешения';
|
||
|
||
@override
|
||
String get fetchingCatalog => 'Загрузка каталога...';
|
||
|
||
@override
|
||
String get fifteenMinutes => '15 минут';
|
||
|
||
@override
|
||
String get fifteenSeconds => '15 секунд';
|
||
|
||
@override
|
||
String get filterByDirection => 'Фильтр по направлению';
|
||
|
||
@override
|
||
String get finish => 'Завершить';
|
||
|
||
@override
|
||
String get fiveMinutes => '5 минут';
|
||
|
||
@override
|
||
String get fiveSeconds => '5 секунд';
|
||
|
||
@override
|
||
String get fix => 'Фикс';
|
||
|
||
@override
|
||
String get gps => 'GPS';
|
||
|
||
@override
|
||
String get gpsAdvertPolicy => 'Политика объявлений GPS';
|
||
|
||
@override
|
||
String get gpsAndLocation => 'GPS и местоположение';
|
||
|
||
@override
|
||
String get gpsDiagnostics => 'Диагностика GPS';
|
||
|
||
@override
|
||
String get gpsSection => 'GPS';
|
||
|
||
@override
|
||
String get help => 'Помощь';
|
||
|
||
@override
|
||
String get hex => 'Hex';
|
||
|
||
@override
|
||
String get hidden => 'Скрыто';
|
||
|
||
@override
|
||
String get howTheRadioAutoAddsDiscoveredNodes =>
|
||
'Как радио автоматически добавляет обнаруженные узлы.';
|
||
|
||
@override
|
||
String get images => 'Изображения';
|
||
|
||
@override
|
||
String get importProfile => 'Импортировать профиль';
|
||
|
||
@override
|
||
String get lastFix => 'Последний фикс';
|
||
|
||
@override
|
||
String get latest => 'Последняя';
|
||
|
||
@override
|
||
String get latitude => 'Широта';
|
||
|
||
@override
|
||
String get loadASavedRegion => 'Загрузить сохранённый регион';
|
||
|
||
@override
|
||
String get loading => 'Загрузка';
|
||
|
||
@override
|
||
String get locationSharingHardwareAndUpdateInterval =>
|
||
'Обмен местоположением, оборудование и интервал обновления.';
|
||
|
||
@override
|
||
String get locationTelemetry => 'Телеметрия местоположения';
|
||
|
||
@override
|
||
String get lockDestination => 'Зафиксировать назначение';
|
||
|
||
@override
|
||
String get longitude => 'Долгота';
|
||
|
||
@override
|
||
String get mapStyle => 'Стиль карты';
|
||
|
||
@override
|
||
String get max => 'Макс';
|
||
|
||
@override
|
||
String get maxZoom => 'Макс. масштаб';
|
||
|
||
@override
|
||
String get messaging => 'Сообщения';
|
||
|
||
@override
|
||
String get metHistory => 'История MET';
|
||
|
||
@override
|
||
String get min => 'Мин';
|
||
|
||
@override
|
||
String get minZoom => 'Мин. масштаб';
|
||
|
||
@override
|
||
String get moveDown => 'Переместить вниз';
|
||
|
||
@override
|
||
String get moveUp => 'Переместить вверх';
|
||
|
||
@override
|
||
String get multiAckMode => 'Режим множественного ACK';
|
||
|
||
@override
|
||
String get multiDeviceWorkspaceManagement =>
|
||
'Управление рабочим пространством на нескольких устройствах';
|
||
|
||
@override
|
||
String get myLocation => 'Моё местоположение';
|
||
|
||
@override
|
||
String get nameAndTelemetryShared =>
|
||
'Имя и телеметрия доступны другим устройствам.';
|
||
|
||
@override
|
||
String newVersionAvailable(String version) {
|
||
return 'Новая версия: $version';
|
||
}
|
||
|
||
@override
|
||
String get newer => 'Новее';
|
||
|
||
@override
|
||
String get noNeighboursFound => 'Соседи не найдены';
|
||
|
||
@override
|
||
String get noServersFound => 'Серверы не найдены';
|
||
|
||
@override
|
||
String get notSet => 'Не задано';
|
||
|
||
@override
|
||
String get notifications => 'Уведомления';
|
||
|
||
@override
|
||
String get offZeroSeconds => 'Выкл (0 с)';
|
||
|
||
@override
|
||
String get offlineMaps => 'Офлайн-карты';
|
||
|
||
@override
|
||
String get older => 'Старее';
|
||
|
||
@override
|
||
String get oneByteMode0 => '1 байт (режим 0)';
|
||
|
||
@override
|
||
String get oneHour => '1 час';
|
||
|
||
@override
|
||
String get oneMinute => '1 минута';
|
||
|
||
@override
|
||
String get openPacketLogs => 'Открыть журналы пакетов';
|
||
|
||
@override
|
||
String get packetTypeHelp => 'Справка по типам пакетов';
|
||
|
||
@override
|
||
String get pasteShareLinkOrHexAdvert => 'Вставьте ссылку или Hex-объявление';
|
||
|
||
@override
|
||
String get pathHash => 'Хеш пути';
|
||
|
||
@override
|
||
String get pathSize => 'Размер пути';
|
||
|
||
@override
|
||
String get ping => 'Пинг';
|
||
|
||
@override
|
||
String get polygon => 'Полигон';
|
||
|
||
@override
|
||
String get rawResponseCopied => 'Необработанный ответ скопирован';
|
||
|
||
@override
|
||
String get resendThroughNearestRepeaterOnFailure =>
|
||
'Повторить через ближайший ретранслятор при ошибке';
|
||
|
||
@override
|
||
String get resolveContact => 'Разрешить контакт';
|
||
|
||
@override
|
||
String get routingRetriesAndDestinationLock =>
|
||
'Маршрутизация, повторы и фиксация назначения';
|
||
|
||
@override
|
||
String get samples => 'Образцы';
|
||
|
||
@override
|
||
String get satellites => 'Спутники';
|
||
|
||
@override
|
||
String get saving => 'Сохранение...';
|
||
|
||
@override
|
||
String get search => 'Поиск';
|
||
|
||
@override
|
||
String get searchByNameOrToken => 'Поиск по имени или токену';
|
||
|
||
@override
|
||
String get searchDiscoveredNodes => 'Поиск обнаруженных узлов';
|
||
|
||
@override
|
||
String get searchInCurrentFilter => 'Поиск в текущем фильтре';
|
||
|
||
@override
|
||
String get searchLogs => 'Поиск по журналам...';
|
||
|
||
@override
|
||
String get searchSensors => 'Поиск датчиков';
|
||
|
||
@override
|
||
String get searchThisSection => 'Поиск в этом разделе';
|
||
|
||
@override
|
||
String get selectedRelays => 'Выбранные ретрансляторы';
|
||
|
||
@override
|
||
String get sensor => 'Датчик';
|
||
|
||
@override
|
||
String serialError(String error) {
|
||
return 'Ошибка последовательного порта: $error';
|
||
}
|
||
|
||
@override
|
||
String setPathForContact(String name) {
|
||
return 'Задать путь для $name';
|
||
}
|
||
|
||
@override
|
||
String get shareLiveGps => 'Транслировать GPS';
|
||
|
||
@override
|
||
String get shareMyTiles => 'Поделиться моими тайлами';
|
||
|
||
@override
|
||
String get sharingLocationFromPhone =>
|
||
'Трансляция местоположения на этом канале с телефона.';
|
||
|
||
@override
|
||
String get sharingLocationFromRadio =>
|
||
'Трансляция местоположения на этом канале с радио.';
|
||
|
||
@override
|
||
String signalDbm(String rssi) {
|
||
return 'Сигнал $rssi дБм';
|
||
}
|
||
|
||
@override
|
||
String get sizeCompressionAndPreview => 'Размер, сжатие и предпросмотр';
|
||
|
||
@override
|
||
String get simpleMode => 'Простой режим';
|
||
|
||
@override
|
||
String get simpleModeDescription =>
|
||
'Только чат и карта с избранными контактами';
|
||
|
||
@override
|
||
String get simpleModeRequiresLockedDestination =>
|
||
'Сначала включите «Зафиксировать назначение» с каналом, чтобы использовать простой режим';
|
||
|
||
@override
|
||
String get noFavouriteContacts => 'Нет избранных контактов';
|
||
|
||
@override
|
||
String get skip => 'Пропустить';
|
||
|
||
@override
|
||
String get smallerFileSize => 'Меньший размер файла';
|
||
|
||
@override
|
||
String get sort => 'Сортировка';
|
||
|
||
@override
|
||
String get stoppedSharingLocation =>
|
||
'Трансляция местоположения на этом канале остановлена.';
|
||
|
||
@override
|
||
String get suppressNotificationsWhileInForeground =>
|
||
'Отключить уведомления при открытом приложении';
|
||
|
||
@override
|
||
String get tabsAndNavigation => 'Вкладки и навигация';
|
||
|
||
@override
|
||
String get templatesAndTutorials => 'Шаблоны и обучение';
|
||
|
||
@override
|
||
String get tenMinutes => '10 минут';
|
||
|
||
@override
|
||
String get tenSeconds => '10 секунд';
|
||
|
||
@override
|
||
String get testSendUpdate => 'Тестовая отправка обновления';
|
||
|
||
@override
|
||
String get themeLanguageAndDisplayPreferences =>
|
||
'Тема, язык и настройки отображения';
|
||
|
||
@override
|
||
String get thirtyMinutes => '30 минут';
|
||
|
||
@override
|
||
String get thirtySeconds => '30 секунд';
|
||
|
||
@override
|
||
String get threeBytesMode2 => '3 байта (режим 2)';
|
||
|
||
@override
|
||
String get trafficStatsMessageHistoryAndDeveloperTools =>
|
||
'Статистика трафика, история сообщений и инструменты разработчика';
|
||
|
||
@override
|
||
String get twoBytesMode1 => '2 байта (режим 1)';
|
||
|
||
@override
|
||
String get twoMinutes => '2 минуты';
|
||
|
||
@override
|
||
String get undo => 'Отменить';
|
||
|
||
@override
|
||
String get updated => 'Обновлено';
|
||
|
||
@override
|
||
String get useContactFlags => 'Использовать флаги контактов';
|
||
|
||
@override
|
||
String get useSavedCoordinates => 'Использовать сохранённые координаты';
|
||
|
||
@override
|
||
String get view => 'Просмотр';
|
||
|
||
@override
|
||
String get viewNeighbours => 'Просмотр соседей';
|
||
|
||
@override
|
||
String get viewPublicStats => 'Просмотр публичной статистики';
|
||
|
||
@override
|
||
String get setRegionScope => 'Установить область региона';
|
||
|
||
@override
|
||
String get regionScope => 'Область региона';
|
||
|
||
@override
|
||
String get regionScopeNone => 'Нет (глобально)';
|
||
|
||
@override
|
||
String get clearRegionScope => 'Очистить область';
|
||
|
||
@override
|
||
String get regionScopeWarning =>
|
||
'Только ретрансляторы, разрешающие этот регион, будут пересылать.';
|
||
|
||
@override
|
||
String get discoverRegions => 'Обнаружить из ретрансляторов';
|
||
|
||
@override
|
||
String get discoveringRegions => 'Обнаружение регионов...';
|
||
|
||
@override
|
||
String get enterRegionName => 'Название региона (напр. auckland)';
|
||
|
||
@override
|
||
String get noRegionsFound => 'Регионы не найдены на этом ретрансляторе.';
|
||
|
||
@override
|
||
String regionScopeSet(String name) {
|
||
return 'Область региона установлена на $name';
|
||
}
|
||
|
||
@override
|
||
String get regionScopeCleared => 'Область региона очищена';
|
||
|
||
@override
|
||
String get selectDestinationFirst =>
|
||
'Сначала выберите канал, контакт или комнату';
|
||
|
||
@override
|
||
String get recipientNoLongerAvailable => 'Получатель больше не доступен';
|
||
|
||
@override
|
||
String failedToSendMessage(String error) {
|
||
return 'Не удалось отправить: $error';
|
||
}
|
||
|
||
@override
|
||
String get tictactoeDirectOnly =>
|
||
'Крестики-нолики работают только в личных сообщениях. Сначала выберите контакт.';
|
||
|
||
@override
|
||
String get deviceKeyUnavailable => 'Ключ устройства недоступен';
|
||
|
||
@override
|
||
String get imageCompressionFailed => 'Не удалось сжать изображение';
|
||
|
||
@override
|
||
String get imageFragmentationFailed =>
|
||
'Не удалось разделить изображение на фрагменты';
|
||
|
||
@override
|
||
String get failedToAnnounceImage => 'Не удалось анонсировать изображение';
|
||
|
||
@override
|
||
String get noRecipientSelected => 'Получатель не выбран';
|
||
|
||
@override
|
||
String get imageSendFailed => 'Не удалось отправить изображение';
|
||
|
||
@override
|
||
String get microphonePermissionRequiredForVoice =>
|
||
'Для голосовых сообщений требуется разрешение на микрофон';
|
||
|
||
@override
|
||
String get recordingDiscarded => 'Запись отменена';
|
||
|
||
@override
|
||
String publicChannelMediaWarning(String mediaType) {
|
||
return 'Вы собираетесь отправить $mediaType в публичный канал. Это не рекомендуется: получить это может любой в mesh-сети. Выберите приватный или тегированный канал, если только это не то, что вы хотите.';
|
||
}
|
||
|
||
@override
|
||
String get selectPrivateChannelToShareLocation =>
|
||
'Выберите приватный канал, чтобы поделиться местоположением.';
|
||
|
||
@override
|
||
String get stopSharingMyLocation => 'Прекратить делиться местоположением';
|
||
|
||
@override
|
||
String get shareMyLocation => 'Поделиться местоположением';
|
||
|
||
@override
|
||
String get stopRecording => 'Остановить запись';
|
||
|
||
@override
|
||
String get recordVoice => 'Записать голосовое сообщение';
|
||
|
||
@override
|
||
String get moreActions => 'Другие действия';
|
||
|
||
@override
|
||
String get noMessagesInFilter => 'В этом фильтре нет сообщений';
|
||
|
||
@override
|
||
String get noMatchesInFilter => 'В этом фильтре нет совпадений';
|
||
|
||
@override
|
||
String syncFailed(String error) {
|
||
return 'Ошибка синхронизации: $error';
|
||
}
|
||
|
||
@override
|
||
String get invalidLink => 'Недействительная ссылка';
|
||
|
||
@override
|
||
String get cannotOpenLink => 'Не удаётся открыть ссылку';
|
||
|
||
@override
|
||
String get failedToOpenLink => 'Не удалось открыть ссылку';
|
||
|
||
@override
|
||
String get failedToResendMessage => 'Не удалось повторно отправить сообщение';
|
||
|
||
@override
|
||
String retryFailed(String error) {
|
||
return 'Повторная попытка не удалась: $error';
|
||
}
|
||
|
||
@override
|
||
String get deleteDrawingAndMessage => 'Удалить рисунок и сообщение';
|
||
|
||
@override
|
||
String get lastEchoRelay => 'Последнее эхо: ретранслятор';
|
||
|
||
@override
|
||
String get lastEchoPath => 'Последнее эхо: путь';
|
||
|
||
@override
|
||
String get lastEchoBytesReport => 'Последнее эхо: отчёт о байтах';
|
||
|
||
@override
|
||
String get noGpsCoordinatesAvailable => 'Координаты GPS недоступны';
|
||
|
||
@override
|
||
String get notASarMarker => 'Это не маркер SAR';
|
||
|
||
@override
|
||
String failedToSaveTemplate(String error) {
|
||
return 'Не удалось сохранить шаблон: $error';
|
||
}
|
||
|
||
@override
|
||
String get drawingNotFound => 'Рисунок не найден';
|
||
|
||
@override
|
||
String get unknownDrawingType => 'Неизвестный тип рисунка';
|
||
|
||
@override
|
||
String get customMapMarker => 'Пользовательский маркер карты';
|
||
|
||
@override
|
||
String customMapPointLabel(String point) {
|
||
return 'Точка: $point';
|
||
}
|
||
|
||
@override
|
||
String mapIdLabel(String id) {
|
||
return 'ID карты: $id';
|
||
}
|
||
|
||
@override
|
||
String get cannotFetchVoice => 'Не удаётся получить голосовое сообщение';
|
||
|
||
@override
|
||
String get senderContactUnknown =>
|
||
'Контакт отправителя неизвестен. Сначала синхронизируйте контакты.';
|
||
|
||
@override
|
||
String get senderRouteUnknown =>
|
||
'Маршрут отправителя неизвестен. Сначала синхронизируйте контакты/путь.';
|
||
|
||
@override
|
||
String messageTooFar(String hops, String maxHops) {
|
||
return 'Сообщение слишком далеко ($hops хопов, макс. $maxHops).';
|
||
}
|
||
|
||
@override
|
||
String get senderRouteNoPathResponse =>
|
||
'Маршрут отправителя не ответил на проверку пути. Синхронизируйте контакты/путь и попробуйте снова.';
|
||
|
||
@override
|
||
String get senderRouteNoRawResponse =>
|
||
'Маршрут отправителя не ответил на raw-транспортном пути.';
|
||
|
||
@override
|
||
String voiceFetchOverHops(String hops) {
|
||
return 'Получение голоса через $hops хопов может занять время.';
|
||
}
|
||
|
||
@override
|
||
String get voiceReceiveCanceled => 'Приём голосового сообщения отменён';
|
||
|
||
@override
|
||
String get fetchingMissingVoiceFragments =>
|
||
'Получение недостающих фрагментов голоса';
|
||
|
||
@override
|
||
String get receivingVoice => 'Приём голоса';
|
||
|
||
@override
|
||
String get cannotFetchImage => 'Не удаётся получить изображение';
|
||
|
||
@override
|
||
String imageFetchOverHops(String hops) {
|
||
return 'Получение изображения через $hops хопов может занять время.';
|
||
}
|
||
|
||
@override
|
||
String get imageAlreadyBeingReceived => 'Изображение уже принимается';
|
||
|
||
@override
|
||
String get loadImage => 'Загрузить изображение';
|
||
|
||
@override
|
||
String get imageFetchFailedToSendRequest =>
|
||
'Не удалось отправить запрос на изображение';
|
||
|
||
@override
|
||
String get imageUnavailable => 'Изображение сейчас недоступно';
|
||
|
||
@override
|
||
String get imageFetchTimedOut => 'Время ожидания изображения истекло';
|
||
|
||
@override
|
||
String get imageReceiveCanceled => 'Приём изображения отменён';
|
||
|
||
@override
|
||
String get closeImagePreview => 'Закрыть просмотр изображения';
|
||
|
||
@override
|
||
String get recordingReleaseToSend => 'Запись... отпустите, чтобы отправить';
|
||
|
||
@override
|
||
String get sendingVoice => 'Отправка голоса...';
|
||
|
||
@override
|
||
String get sendLongPressToRecordVoice =>
|
||
'Отправить (удерживайте для записи голоса)';
|
||
|
||
@override
|
||
String get discardRecording => 'Удалить запись';
|
||
|
||
@override
|
||
String hopCount(num count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '$count хопа',
|
||
many: '$count хопов',
|
||
few: '$count хопа',
|
||
one: '$count хоп',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String get channelsSectionDescription =>
|
||
'Широковещательные каналы для mesh-трафика поблизости';
|
||
|
||
@override
|
||
String get roomsSectionDescription =>
|
||
'Общие пространства для постоянной координации команды';
|
||
|
||
@override
|
||
String get contactsSectionDescription =>
|
||
'Люди и устройства в прямой досягаемости';
|
||
|
||
@override
|
||
String get noRecentChatters => 'Нет недавних собеседников';
|
||
|
||
@override
|
||
String get public => 'Публичный';
|
||
|
||
@override
|
||
String get failedToSendTicTacToeMove =>
|
||
'Не удалось отправить ход в крестики-нолики';
|
||
|
||
@override
|
||
String get youWon => 'Вы победили';
|
||
|
||
@override
|
||
String get opponentWon => 'Победил соперник';
|
||
|
||
@override
|
||
String get gameDraw => 'Ничья';
|
||
|
||
@override
|
||
String get yourTurn => 'Ваш ход';
|
||
|
||
@override
|
||
String get opponentTurn => 'Ход соперника';
|
||
|
||
@override
|
||
String get pleaseEnterValidCoordinates => 'Введите корректные координаты';
|
||
|
||
@override
|
||
String get locationNotAvailable => 'Местоположение недоступно';
|
||
|
||
@override
|
||
String get customCaveMapPoint => 'Пользовательская точка карты пещеры';
|
||
|
||
@override
|
||
String get mapPoint => 'Точка карты';
|
||
|
||
@override
|
||
String get fetchingMissingImageFragments =>
|
||
'Получение недостающих фрагментов…';
|
||
|
||
@override
|
||
String get loadingImage => 'Загрузка…';
|
||
|
||
@override
|
||
String get receivingImage => 'Приём…';
|
||
|
||
@override
|
||
String get tapToLoad => 'Нажмите, чтобы загрузить';
|
||
|
||
@override
|
||
String get connectDevice => 'Подключить устройство';
|
||
|
||
@override
|
||
String get chooseTransportSubtitle =>
|
||
'Выберите транспорт: Bluetooth, WiFi или последовательный порт';
|
||
|
||
@override
|
||
String get ble => 'BLE';
|
||
|
||
@override
|
||
String get network => 'Сеть';
|
||
|
||
@override
|
||
String get serial => 'Последовательный порт';
|
||
|
||
@override
|
||
String get scan => 'Сканировать';
|
||
|
||
@override
|
||
String get pressScanToSearchForDevices =>
|
||
'Нажмите «Сканировать», чтобы найти устройства поблизости';
|
||
|
||
@override
|
||
String failedToConnectToDevice(String name) {
|
||
return 'Не удалось подключиться к $name';
|
||
}
|
||
|
||
@override
|
||
String get unknownDevice => 'Неизвестное устройство';
|
||
|
||
@override
|
||
String get showingCachedResultsTapRefresh =>
|
||
'Показаны кэшированные результаты. Нажмите «Обновить», чтобы пересканировать.';
|
||
|
||
@override
|
||
String scanningLocalNetworkOnPort(int port) {
|
||
return 'Сканирование локальной сети на наличие WiFi-устройств MeshCore на порту $port';
|
||
}
|
||
|
||
@override
|
||
String get cancelScanAndAddServer =>
|
||
'Отменить сканирование и добавить сервер';
|
||
|
||
@override
|
||
String get addServer => 'Добавить сервер';
|
||
|
||
@override
|
||
String scanningProgressIps(int scanned, String total) {
|
||
return 'Сканирование... $scanned/$total IP-адресов';
|
||
}
|
||
|
||
@override
|
||
String get cancelAndEnterManually => 'Отменить и ввести вручную';
|
||
|
||
@override
|
||
String get noRecentOrDiscoveredServers =>
|
||
'Пока нет недавних или обнаруженных серверов';
|
||
|
||
@override
|
||
String get recentlyUsed => 'Недавно использованные';
|
||
|
||
@override
|
||
String get connecting => 'Подключение...';
|
||
|
||
@override
|
||
String get discoveredOnThisNetwork => 'Обнаружены в этой сети';
|
||
|
||
@override
|
||
String serverNoLongerAvailable(String host, int port) {
|
||
return 'Сервер $host:$port больше недоступен. Выполните сканирование снова, чтобы найти активные серверы.';
|
||
}
|
||
|
||
@override
|
||
String failedToConnectToHost(String host, int port) {
|
||
return 'Не удалось подключиться к $host:$port';
|
||
}
|
||
|
||
@override
|
||
String get enterValidIpAddress => 'Введите корректный IP-адрес';
|
||
|
||
@override
|
||
String get enterValidTcpPort => 'Введите корректный TCP-порт';
|
||
|
||
@override
|
||
String get ipAddress => 'IP-адрес';
|
||
|
||
@override
|
||
String get tcpPort => 'TCP-порт';
|
||
|
||
@override
|
||
String get customServerPort => 'Пользовательский порт сервера';
|
||
|
||
@override
|
||
String get chat => 'Чат';
|
||
|
||
@override
|
||
String get restoringPreviousLink => 'Восстановление предыдущего подключения';
|
||
|
||
@override
|
||
String get noDeviceConnected => 'Нет подключённого устройства';
|
||
|
||
@override
|
||
String get sendAdvert => 'Отправить мой контакт';
|
||
|
||
@override
|
||
String get advertMode => 'Отправить мой контакт';
|
||
|
||
@override
|
||
String get advertModeSubtitle =>
|
||
'Выберите, как далеко должны распространиться ваши контактные данные.';
|
||
|
||
@override
|
||
String get floodAdvertSent => 'Контакт отправлен по всей mesh-сети';
|
||
|
||
@override
|
||
String get directAdvertSent => 'Контакт отправлен ближайшим устройствам';
|
||
}
|